From a35adafcdf83d0bf01f1ba34f05d668394c2589e Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 16 Apr 2026 14:15:02 -0700 Subject: [PATCH] =?UTF-8?q?feat(combat):=20=E2=9C=A8=20Update=20combat=20r?= =?UTF-8?q?esolver=20to=20handle=20new=20mechanics=20and=20edge=20cases=20?= =?UTF-8?q?in=20hit=20detection=20and=20damage=20calculation?= 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 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/simulator/crates/mc-combat/src/resolver.rs b/src/simulator/crates/mc-combat/src/resolver.rs index 123d99db..b5cf541e 100644 --- a/src/simulator/crates/mc-combat/src/resolver.rs +++ b/src/simulator/crates/mc-combat/src/resolver.rs @@ -406,11 +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.50 is the empirical sweet spot from batch 2 (12 PASS): - // lower values (0.40–0.33) stalled all seeds at max_turns and - // regressed checklist results. Seed 1's sub-T100 fall is an - // AI production-priority issue, not siege math. - let melee_city_fraction: f32 = 0.50; + // Option B dial-back: 0.50→0.55 after 0.70→0.75 wall tweak alone + // still produced 0/3 victories at 300 turns. Re-enables captures + // without reverting the full siege dampening (previously 1.00). + let melee_city_fraction: f32 = 0.55; let city_dmg = (damage_to_defender as f32 * melee_city_fraction).round() as i32; (city_dmg, (city_hp - city_dmg).max(0)) }