From 6303dcd071331127331bbeb0688adc4474588ca0 Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 16 Apr 2026 12:55:36 -0700 Subject: [PATCH] =?UTF-8?q?feat(simulator):=20=E2=9C=A8=20Adjust=20melee?= =?UTF-8?q?=20vs=20city=20damage=20fractions=20for=20improved=20combat=20b?= =?UTF-8?q?alance?= 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 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/simulator/crates/mc-combat/src/resolver.rs b/src/simulator/crates/mc-combat/src/resolver.rs index 6ff88ec7..6e12d9d6 100644 --- a/src/simulator/crates/mc-combat/src/resolver.rs +++ b/src/simulator/crates/mc-combat/src/resolver.rs @@ -406,10 +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.37 is the narrow sweet spot — 0.40 let seed 1 fall T76, - // 0.33 stalled all 3 seeds at max_turns. 0.37 should stretch - // seed 1 while keeping seed 2 decidable. - let melee_city_fraction: f32 = 0.37; + // 0.39 is the narrow sweet spot — 0.40 let seed 1 fall T76, + // 0.37 stalled all 3 seeds at max_turns. 0.39 should stretch + // seed 1 toward T150+ while keeping games decidable. + let melee_city_fraction: f32 = 0.39; let city_dmg = (damage_to_defender as f32 * melee_city_fraction).round() as i32; (city_dmg, (city_hp - city_dmg).max(0)) }