Dev Beta 1.3

* Ajout d'un déblocage des mutations, dans une scène 3D trouvable dans les runs, ainsi qu'un dialogue d'annonce de ces scènes
* Augmentation des charges par map à 10 et augmentation des objectifs de points de plantes en conséquence
* Modification du loot des graines : les plantes donnent désormais un nombre fixe de graine et les graines issues de veine de Talion n'obtiennent pas automatiquement de mutations
* Les portes ne seront désormais plus sur de la pierre
* Amélioration du tutoriel pour inclure une section d'explication des mutations
* Ajout du modificateur de région Magnétique qui divise l'objectif et les recharges par 2
*
This commit is contained in:
2026-05-09 16:40:22 +02:00
parent e2b07e2b6a
commit c8e0e9ecce
81 changed files with 2838 additions and 1139 deletions

View File

@@ -15,6 +15,8 @@ const DECONTAMINATION_NOISE_FREQUENCY := 0.008
const CHUNK_RANDOM_PADDING := 1
signal generated
@export var region_data : RegionData
@export var chunk_coord : Vector2i
@@ -95,6 +97,7 @@ func generate():
add_child.call_deferred(ground_layer)
add_child.call_deferred(decontamination_layer)
generated.emit()
is_generated = true
func calculate_all_tiles() -> Array[Vector2i]:

View File

@@ -0,0 +1,25 @@
extends RegionModifier
class_name CaveModifier
func get_modifier_name() -> String:
return tr("CRISTAL_CAVE")
func get_description() -> String:
return tr("CRISTAL_CAVE_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/cristal.svg")
func get_card_section_color() -> Color:
return Color("25c147")
func region_ready(region : Region) -> void:
var new_cave_door = generate_door(
tr("CRISTAL_CAVE"),
tr("CRISTAL_CAVE_DOOR_DESC_TEXT")
)
new_cave_door.to_scene = CaveScene.new(new_cave_door.door_id)
new_cave_door.available = region.data.completed_doors.find(new_cave_door.door_id) == -1
region.add_entity(new_cave_door)
region.random_move_object(new_cave_door,Region.DOORS_RANDOM_MOVEMENT)

View File

@@ -0,0 +1 @@
uid://d3g06x6sagcc5

View File

@@ -13,8 +13,8 @@ func get_icon() -> Texture:
func get_card_section_color() -> Color:
return Color("8b2dffff")
func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
return plant_seed_random_loose + 1
# func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
# return plant_seed_random_loose + 1
func modify_plant_seed_number(plant_seed_number : int) -> int:
return plant_seed_number - 1

View File

@@ -0,0 +1,17 @@
extends RegionModifier
class_name MagneticModifier
func get_modifier_name() -> String:
return tr("MAGNETIC")
func get_description() -> String:
return tr("MAGNETIC_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/magnet.svg")
func modify_objective(objective : int) -> int:
return roundi(float(objective) / 2)
func modify_charge(charge : int) -> int:
return roundi(float(charge) / 2)

View File

@@ -0,0 +1 @@
uid://3mu4qmgpyg6s

View File

@@ -12,9 +12,15 @@ func get_description() -> String:
func get_icon() -> Texture:
return preload("res://common/icons/help-hexagon.svg")
func modify_seed_rarity_pool(_seed_rarity_pool : Array[int]) -> Array[int]:
return [-1]
func modify_charge(charge : int) -> int:
return charge+10
func modify_mutation_probability(_plant_mutation_probability) -> float:
return 1.
func get_card_section_color() -> Color:
return Color("25c147")

View File

@@ -39,23 +39,19 @@ func generate():
generate_windy()
func generate_calm() -> void:
print("generate_calm")
cloud_value = rng.randf_range(0.1,0.4)
wind_force = rng.randf_range(0.,0.2)
func generate_rainy() -> void:
print("generate_rainy")
rain_value = rng.randf_range(0.3,1.)
cloud_value = rng.randf_range(0.5,0.9)
ambiance_name = "ExteriorRaining"
wind_force = rng.randf_range(0.,0.5)
func generate_foggy() -> void:
print("generate_foggy")
fog_value = rng.randf_range(0.5,1.)
ambiance_name = "ExteriorFoggy"
func generate_windy() -> void:
print("generate_windy")
cloud_value = rng.randf_range(0.2,0.5)
wind_force = rng.randf_range(0.8,1.)

View File

@@ -169,7 +169,7 @@ func random_move_object(
rng.randf_range(-random_movement,random_movement)
) + offset
dig_hole(object.position, 5)
dig_hole(object.global_position, 100)
func is_chunk_generated(coord : Vector2i):
return generated_chunks.find_custom(
@@ -247,7 +247,7 @@ func is_coords_decontaminated(tiles_coords : Array[Vector2i]):
func dig_rocks(tiles_coords : Array[Vector2i], save_tiles_diff := true, loot := true):
if save_tiles_diff :
data.rock_tiles_data.update_tiles_diff(tiles_coords, TilesDiffData.TileDiff.ABSENT)
for coord in tiles_coords:
var chunk : Chunk = get_chunk_for_coord(coord)
if chunk:
@@ -259,17 +259,11 @@ func dig_rocks(tiles_coords : Array[Vector2i], save_tiles_diff := true, loot :=
chunk.rock_layer.remove_rocks([local_coord])
func dig_hole(game_pos: Vector2, size : int):
var hole_tiles : Array[Vector2i] = []
var tile_position := Vector2i(
roundi(game_pos.x/float(Region.TILE_SIZE)),
roundi(game_pos.y/float(Region.TILE_SIZE))
var hole_tiles : Array[Vector2i] = Math.get_tiles_in_circle(
game_pos,
size
)
for x in range(-size, size):
for y in range(-size, size):
var coord = Vector2i(x,y)
if coord.distance_to(Vector2.ZERO) < size:
hole_tiles.append(coord + tile_position)
dig_rocks(hole_tiles,false,false)
dig_rocks(hole_tiles,true,false)
func loot_talion(coord : Vector2i):
var new_seed = Seed.generate_random(data.seed_rarity_pool.pick_random())

View File

@@ -11,8 +11,6 @@ signal pass_day_started(region_data : RegionData)
signal pass_day_proceeded(region_data : RegionData)
signal pass_day_ended(region_data : RegionData)
const DEFAULT_START_CHARGE := 10
const DEFAULT_OBJECTIVE := 10
const MAX_RANDOM_SPAWN_DISTANCE = 3000
const START_ROCK_HOLE_RADIUS = 5
const PLAYER_ROCK_HOLE_RADIUS = 5

View File

@@ -6,10 +6,11 @@ const DEFAULT_DECONTAMINATION_THRESHOLD = 0.4
const DEFAULT_CRISTAL_THRESHOLD = 0.1
const DEFAULT_CHARGE = 8
const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
const DEFAULT_SEED_RARITY_POOL: Array[int] = [0,0,0,0,0,0,0,1,1,1]
const DEFAULT_SEED_RARITY_POOL: Array[int] = [-1,-1,-1,-1,0,0,0,0,1,1]
@export var region_name : String
@export var objective : int
@export var charge : int
@export var region_seed : int
@export var modifiers : Array[RegionModifier]
@@ -45,15 +46,13 @@ func is_objective_disabled() -> bool:
var d = false
for m in modifiers:
print(m.modifier_name)
print(m.disable_objective())
if m.disable_objective():
d = true
return d
func get_charge() -> int:
var c = DEFAULT_CHARGE
var c = charge
for m in modifiers:
c = m.modify_charge(c)