diff --git a/src/simulator/crates/mc-combat/src/resolver.rs b/src/simulator/crates/mc-combat/src/resolver.rs index addc0e3d..aea8ac4c 100644 --- a/src/simulator/crates/mc-combat/src/resolver.rs +++ b/src/simulator/crates/mc-combat/src/resolver.rs @@ -403,12 +403,12 @@ impl CombatResolver { let city_dmg = (damage_to_defender as f32 * siege_mult).round() as i32; (city_dmg, (city_hp - city_dmg).max(0)) } else { - // Melee vs city: only a fraction of unit damage translates to - // city structural HP. Siege units are the intended counter to + // Melee vs city: only a small 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). - // Halves the effectiveness of warrior-rush captures that were - // breaking T99/T106 wins in prior batches. - let melee_city_fraction: f32 = 0.50; + // 0.30 stops warrior-rush stacks of 6-7 units from 1-shotting + // capitals at T90 — the prior T99/T106 failure mode. + let melee_city_fraction: f32 = 0.30; let city_dmg = (damage_to_defender as f32 * melee_city_fraction).round() as i32; (city_dmg, (city_hp - city_dmg).max(0)) }