Fix pour l'alpha 1.3.1

* Correction du bug de collision des chunks (talion qui ne se détruit pas, zone fertile infertile, c'est fini !)
* Equilibrage de la difficulté pour le mode infini
* Correction de la mutation éphémère (ne donne maitenant des graines qu'à la maturation)
This commit is contained in:
2026-03-29 19:02:33 +02:00
parent a395311952
commit 84a2eafe57
6 changed files with 105 additions and 64 deletions

View File

@@ -21,8 +21,10 @@ func get_mutation_description() -> String:
func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int: func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int:
return lifetime + get_lifetime_change() return lifetime + get_lifetime_change()
func mutate_seed_number(_plant_data: PlantData, seed_number: int): func mutate_seed_number(plant_data: PlantData, seed_number: int):
return seed_number + level + 1 if plant_data.get_state() == PlantData.State.MATURE:
return seed_number + level + 1
return seed_number
func get_seed_increase() -> int: func get_seed_increase() -> int:
return floori((level + 1.0) / 2) return floori((level + 1.0) / 2)

View File

@@ -58,7 +58,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path=".export/win/Seeding The Wasteland.exe" export_path=".export/steam/content_builder/content/win/Seeding The Wasteland.exe"
patches=PackedStringArray() patches=PackedStringArray()
patch_delta_encoding=false patch_delta_encoding=false
patch_delta_compression_level_zstd=19 patch_delta_compression_level_zstd=19

View File

@@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true
config/name="Seeding The Wasteland" config/name="Seeding The Wasteland"
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot." config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
config/version="alpha-1.3" config/version="alpha-1.3.1"
run/main_scene="uid://c5bruelvqbm1k" run/main_scene="uid://c5bruelvqbm1k"
config/features=PackedStringArray("4.6", "Forward Plus") config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="uid://df0y0s666ui4h" config/icon="uid://df0y0s666ui4h"

View File

@@ -1,3 +1,4 @@
@tool
extends Node2D extends Node2D
class_name Chunk class_name Chunk
@@ -13,7 +14,7 @@ const ROCK_NOISE_FREQUENCY := 0.005
const CRISTAL_NOISE_FREQUENCY := 0.008 const CRISTAL_NOISE_FREQUENCY := 0.008
const DECONTAMINATION_NOISE_FREQUENCY := 0.008 const DECONTAMINATION_NOISE_FREQUENCY := 0.008
const CHUNK_RANDOM_PADDING := 2 const CHUNK_RANDOM_PADDING := 1
@export var region_data : RegionData @export var region_data : RegionData
@export var chunk_coord : Vector2i @export var chunk_coord : Vector2i
@@ -36,18 +37,18 @@ var generation_semaphore : Semaphore
var all_tiles : Array[Vector2i] var all_tiles : Array[Vector2i]
var all_global_tiles : Array[Vector2i] var all_global_tiles : Array[Vector2i]
# @export_tool_button("Update", "Callable") var update_action = func(): @export_tool_button("Update", "Callable") var update_action = func():
# generation_semaphore.post() generation_semaphore.post()
# for c in get_children(): for c in get_children():
# c.queue_free() c.queue_free()
# setup_position() setup_position()
# # queue_redraw() # queue_redraw()
# generate() generate()
# @export_tool_button("Clear", "Callable") var clear_action = func(): @export_tool_button("Clear", "Callable") var clear_action = func():
# for c in get_children(): for c in get_children():
# c.queue_free() c.queue_free()
func _init( func _init(
_chunk_coord : Vector2i = Vector2i.ZERO, _chunk_coord : Vector2i = Vector2i.ZERO,
@@ -100,45 +101,51 @@ func generate():
func calculate_all_tiles() -> Array[Vector2i]: func calculate_all_tiles() -> Array[Vector2i]:
var coords : Array[Vector2i] = [] var coords : Array[Vector2i] = []
for x in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING): for x in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2):
for y in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING): for y in range(-Region.CHUNK_TILE_SIZE, Region.CHUNK_TILE_SIZE * 2):
var coord := Vector2i(x,y) var coord := Vector2i(x,y)
if is_tile_in_chunk(coord): if is_tile_in_chunk(coord):
coords.append(coord) coords.append(coord)
return coords return coords
func is_tile_in_chunk(coord : Vector2i) -> bool: func is_tile_in_chunk(coord : Vector2i) -> bool:
var check_select = (chunk_coord.x + chunk_coord.y%2)%2 == 0 var tile_value = get_tile_value_from_noise(coord, random_padding_noise)
var x := coord.x
var y := coord.y
if not ( if (
x in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) coord.x > Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING - 1
and y in range(-CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) or coord.x < -CHUNK_RANDOM_PADDING
or coord.y > Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING - 1
or coord.y < - CHUNK_RANDOM_PADDING
): ):
return false return false
else:
var possible_chunk_x : Array[int] = [0]
var possible_chunk_y : Array[int] = [0]
if coord.x >= Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING:
possible_chunk_x.append(1)
if coord.y >= Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING:
possible_chunk_y.append(1)
if coord.x < CHUNK_RANDOM_PADDING:
possible_chunk_x.append(-1)
if coord.y < CHUNK_RANDOM_PADDING:
possible_chunk_y.append(-1)
var possible_chunk : Array[String] = []
for dir_x in possible_chunk_x:
for dir_y in possible_chunk_y:
possible_chunk.append(
"%d:%d" % [dir_x + chunk_coord.x, dir_y + chunk_coord.y]
)
possible_chunk.sort()
if not ( var choosen_chunk = possible_chunk[
(x < 0 or x >= Region.CHUNK_TILE_SIZE) floori(tile_value * len(possible_chunk))
and (y < 0 or y >= Region.CHUNK_TILE_SIZE) ]
):
if ( return (
x in range(-CHUNK_RANDOM_PADDING, CHUNK_RANDOM_PADDING) choosen_chunk == "%d:%d" % [chunk_coord.x, chunk_coord.y]
or x in range(Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING) )
or y in range(-CHUNK_RANDOM_PADDING, CHUNK_RANDOM_PADDING)
or y in range(Region.CHUNK_TILE_SIZE - CHUNK_RANDOM_PADDING, Region.CHUNK_TILE_SIZE + CHUNK_RANDOM_PADDING)
):
var tile_value = get_tile_value_from_noise(Vector2i(x,y), random_padding_noise)
if check_select:
if tile_value >= 0.5:
return true
else :
if tile_value < 0.5:
return true
else:
return true
return false
# Debug # Debug

View File

@@ -14,14 +14,20 @@ const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
@export var modifiers : Array[RegionModifier] @export var modifiers : Array[RegionModifier]
static func get_objective_by_level(l : int) -> int: static func get_objective_by_level(l : int) -> int:
match l: if GameInfo and GameInfo.game_data.game_mode == GameData.GameMode.STORY:
0: return 5 match l:
1: return 8 0: return 5
2: return 10 1: return 8
3: return 15 2: return 10
4: return 20 3: return 15
5: return 30 4: return 20
_: return get_objective_by_level(l-1) + (l-3) * 5 5: return 30
_: return get_objective_by_level(l-1) + (l-3) * 5
else :
match l:
0: return 8
1: return 15
_: return get_objective_by_level(l-1) + l * 5
func _init( func _init(
_level = 0, _level = 0,

View File

@@ -23,12 +23,6 @@ rock_tiles_data = SubResource("Resource_ame7t")
decontamination_tiles_data = SubResource("Resource_0rtv3") decontamination_tiles_data = SubResource("Resource_0rtv3")
metadata/_custom_type_script = "uid://cx30nvq8b34lj" metadata/_custom_type_script = "uid://cx30nvq8b34lj"
[sub_resource type="FastNoiseLite" id="FastNoiseLite_ct7cr"]
frequency = 0.0071
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0rtv3"]
noise = SubResource("FastNoiseLite_ct7cr")
[node name="TestChunk" type="Node2D" unique_id=990498648] [node name="TestChunk" type="Node2D" unique_id=990498648]
[node name="Chunk" type="Node2D" parent="." unique_id=709095052] [node name="Chunk" type="Node2D" parent="." unique_id=709095052]
@@ -37,25 +31,57 @@ region_data = SubResource("Resource_tiw8g")
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk2" type="Node2D" parent="." unique_id=509661921] [node name="Chunk2" type="Node2D" parent="." unique_id=509661921]
position = Vector2(1280, 0) position = Vector2(640, 0)
script = ExtResource("1_mhr83") script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g") region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(1, 0) chunk_coord = Vector2i(1, 0)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk3" type="Node2D" parent="." unique_id=1505202284] [node name="Chunk3" type="Node2D" parent="." unique_id=1505202284]
position = Vector2(0, 1280) position = Vector2(1280, 0)
script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(2, 0)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk4" type="Node2D" parent="." unique_id=774217732]
position = Vector2(0, 640)
script = ExtResource("1_mhr83") script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g") region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(0, 1) chunk_coord = Vector2i(0, 1)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk4" type="Node2D" parent="." unique_id=774217732] [node name="Chunk5" type="Node2D" parent="." unique_id=653124103]
position = Vector2(1280, 1280) position = Vector2(640, 640)
script = ExtResource("1_mhr83") script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g") region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(1, 1) chunk_coord = Vector2i(1, 1)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4" metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1962434767] [node name="Chunk6" type="Node2D" parent="." unique_id=1783819673]
texture = SubResource("NoiseTexture2D_0rtv3") position = Vector2(1280, 640)
script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(2, 1)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk7" type="Node2D" parent="." unique_id=701583017]
position = Vector2(0, 1280)
script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(0, 2)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk8" type="Node2D" parent="." unique_id=1149469796]
position = Vector2(640, 1280)
script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(1, 2)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"
[node name="Chunk9" type="Node2D" parent="." unique_id=882201367]
position = Vector2(1280, 1280)
script = ExtResource("1_mhr83")
region_data = SubResource("Resource_tiw8g")
chunk_coord = Vector2i(2, 2)
metadata/_custom_type_script = "uid://d2ixbaa2uqlv4"