From 7d34d111e492d1077e3e2ea5183d9b416e547bab Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 16 Apr 2026 12:38:29 -0700 Subject: [PATCH] =?UTF-8?q?feat(mc-combat):=20=E2=9C=A8=20Update=20melee?= =?UTF-8?q?=20city=20damage=20fraction=20calculation=20to=20balance=20earl?= =?UTF-8?q?y-game=20strategy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/simulator/crates/mc-combat/src/resolver.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/simulator/crates/mc-combat/src/resolver.rs b/src/simulator/crates/mc-combat/src/resolver.rs index f9f8384d..10c61c81 100644 --- a/src/simulator/crates/mc-combat/src/resolver.rs +++ b/src/simulator/crates/mc-combat/src/resolver.rs @@ -406,9 +406,10 @@ impl CombatResolver { // Melee vs city: only a fraction of unit damage translates to // city structural HP. Siege units are the intended counter to // walls (via Siege combat_type which applies siege_city_bonus). - // 0.40 slows warrior-rush stacks (prior T99/T106 fast wins) but - // still allows sustained siege to resolve games. - let melee_city_fraction: f32 = 0.40; + // 0.33 required because seed 1's p1 doesn't build walls before + // p0 can amass a 6–8 warrior rush stack; at 0.40 the capital + // fell T76 despite garrison maintenance being fixed in AI. + let melee_city_fraction: f32 = 0.33; let city_dmg = (damage_to_defender as f32 * melee_city_fraction).round() as i32; (city_dmg, (city_hp - city_dmg).max(0)) }