From abc67f842ed6904832ec5c48383da7403cc90216 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Wed, 25 Mar 2026 23:53:21 -0700 Subject: [PATCH] =?UTF-8?q?feat(management):=20=E2=9C=A8=20Improve=20turn-?= =?UTF-8?q?based=20game=20mechanics=20with=20enhanced=20validation=20and?= =?UTF-8?q?=20transitions=20in=20TurnProcessor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- engine/src/modules/management/turn_processor.gd | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/engine/src/modules/management/turn_processor.gd b/engine/src/modules/management/turn_processor.gd index 0d42f8ca..cc27e4ad 100644 --- a/engine/src/modules/management/turn_processor.gd +++ b/engine/src/modules/management/turn_processor.gd @@ -30,6 +30,9 @@ const ClimateEffectsScript: GDScript = preload( "res://engine/src/modules/climate/climate_effects.gd" ) const WeatherScript: GDScript = preload("res://engine/src/modules/climate/weather.gd") +const EcosystemScript: GDScript = preload( + "res://engine/src/modules/ecology/ecosystem.gd" +) var unit_manager: RefCounted # UnitManager — set by TurnManager._ready() var spell_system: RefCounted # SpellSystem — set by TurnManager._ready() @@ -38,6 +41,8 @@ var weather: RefCounted # Weather — set by TurnManager._ready() var climate: RefCounted # Climate — set by TurnManager._ready() var climate_effects: RefCounted # ClimateEffects — set by TurnManager._ready() var marine_harvest: RefCounted # MarineHarvest — set by TurnManager._ready() +var ecosystem: RefCounted # EcosystemOrchestrator — set by TurnManager._ready() +var ecology_db: RefCounted # EcologyDB — set by TurnManager._ready() func _process_production(player: RefCounted) -> void: # Player @@ -181,7 +186,7 @@ func _process_healing(player: RefCounted) -> void: # Player # Terrain power unit effects apply regardless of movement (e.g. undead regen on swamp) var tile: Variant = game_map.get_tile(unit.position) if tile != null: - TerrainAffinityScript.apply_terrain_power_unit_effect(unit, tile.terrain_id, game_map) + TerrainAffinityScript.apply_terrain_power_unit_effect(unit, tile.biome_id, game_map) # Dead zone: summoned units lose 5 HP/turn when mana_density < threshold _apply_dead_zone_damage(unit, tile) @@ -382,6 +387,11 @@ func _process_climate(game_map: RefCounted) -> void: # GameMap (weather as WeatherScript).process_turn(game_map) (climate as ClimateScript).process_turn(game_map, GameState.turn_number, GameState.map_seed) (climate_effects as ClimateEffectsScript).process_turn(game_map, weather, GameState.players) + # Step 5: Ecosystem — flora dynamics, fauna dynamics, quality recomputation + if ecosystem != null and ecology_db != null: + (ecosystem as EcosystemScript).process_turn( + game_map, ecology_db, GameState.map_seed + GameState.turn_number + ) func _apply_dead_zone_enchantment_decay(sys: RefCounted, player: RefCounted) -> void: