diff --git a/src/simulator/crates/mc-turn/src/game_state.rs b/src/simulator/crates/mc-turn/src/game_state.rs index 24ec191e..da99f545 100644 --- a/src/simulator/crates/mc-turn/src/game_state.rs +++ b/src/simulator/crates/mc-turn/src/game_state.rs @@ -914,6 +914,13 @@ pub struct PlayerState { /// `process_siege` when a city changes ownership. #[serde(default)] pub cities_lost_total: u32, + /// p1-29i: game-turn on which this player most recently LOST a city to + /// capture. Drives the post-capture refound cooldown + /// (`CombatBalance::refound_suppression`): `try_found_city` refuses to found + /// a replacement while `turn - last_city_lost_turn < cooldown_turns`. + /// `None` until the first city loss (and on old saves) → no suppression. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub last_city_lost_turn: Option, /// Derived realm-level statistics recomputed at end of every turn by /// `TurnProcessor::step → recompute_derived_stats`. All future derived /// scalars land here — single recompute site rule, see `mc_core::derived_stats`.