From 6e530cb139cb5b6486f6c2e03bb8b17e41e2dd18 Mon Sep 17 00:00:00 2001 From: Natalie Date: Thu, 16 Apr 2026 13:30:45 -0700 Subject: [PATCH] =?UTF-8?q?fix(ai):=20=F0=9F=90=9B=20update=20capital=20wa?= =?UTF-8?q?lls=20priority=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- .../engine/src/modules/ai/simple_heuristic_ai.gd | 14 ++++++++++++++ src/simulator/crates/mc-ecology/src/engine.rs | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/game/engine/src/modules/ai/simple_heuristic_ai.gd b/src/game/engine/src/modules/ai/simple_heuristic_ai.gd index c1785102..b5e4262f 100644 --- a/src/game/engine/src/modules/ai/simple_heuristic_ai.gd +++ b/src/game/engine/src/modules/ai/simple_heuristic_ai.gd @@ -553,6 +553,20 @@ static func _decide_production( if not rush_unit.is_empty(): return _prod_unit(city_index, rush_unit) + # Capital walls interject: non-threatened 1-city capital, >20 turns old, + # with at least 2 defenders gets walls slotted in before early_mil_floor + # and founders. Walls were previously starved by mil-floor then founder + # priorities, deferring walls indefinitely even when gold was plentiful. + var capital_age: int = GameState.turn_number - int(city.turn_founded) + var capital_needs_walls: bool = ( + not threatened and city_count == 1 and city_index == 0 + and military_count >= 2 and capital_age > 20 + and not city.has_building("walls") + and city.can_build("walls", player) + ) + if capital_needs_walls: + return _prod_building(city_index, "walls") + # Priority 0: Early military floor — maintain 4 warriors during the # first 80 turns before committing to walls/happiness/founder. Early # combat attrition (p0 harasses) was dropping mil to 1-2 by T75; this diff --git a/src/simulator/crates/mc-ecology/src/engine.rs b/src/simulator/crates/mc-ecology/src/engine.rs index addab338..68e6cecc 100644 --- a/src/simulator/crates/mc-ecology/src/engine.rs +++ b/src/simulator/crates/mc-ecology/src/engine.rs @@ -1,4 +1,4 @@ -use std::collections::{BTreeMap, HashMap, HashSet}; +use std::collections::{BTreeMap, BTreeSet, HashMap}; use mc_core::algorithms::hex; use mc_core::grid::GridState;