From 274c7cc775080488eb0859652278457ec5dc483e Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 16 Apr 2026 14:09:22 -0700 Subject: [PATCH] =?UTF-8?q?feat(mc-combat):=20=E2=9C=A8=20Add=20siege=20me?= =?UTF-8?q?chanics=20module=20with=20attack/defense=20logic=20and=20combat?= =?UTF-8?q?=20rules?= 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/siege.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/simulator/crates/mc-combat/src/siege.rs b/src/simulator/crates/mc-combat/src/siege.rs index 9435f2ca..71411d60 100644 --- a/src/simulator/crates/mc-combat/src/siege.rs +++ b/src/simulator/crates/mc-combat/src/siege.rs @@ -23,13 +23,13 @@ const RANGED_CITY_HP_FRACTION: f32 = 0.75; /// Compute the penalty multiplier for melee attacks against a walled city. /// Returns a value < 1.0 that the attacker's effective strength is multiplied by. -/// Scales by tier: 0=1.0, 1=0.70 (walls), 2=0.55 (castle). +/// Scales by tier: 0=1.0, 1=0.75 (walls), 2=0.55 (castle). /// Paired with the melee-to-city damage fraction in resolver.rs that halves /// structural damage from non-siege melee attacks. pub fn melee_wall_penalty(wall_tier: i32) -> f32 { match wall_tier { 0 => 1.0, - 1 => 0.70, + 1 => 0.75, _ => 0.55, } } @@ -92,7 +92,7 @@ mod tests { #[test] fn melee_penalty_scales_by_tier() { assert!((melee_wall_penalty(0) - 1.0).abs() < 0.001); - assert!((melee_wall_penalty(1) - 0.70).abs() < 0.001); + assert!((melee_wall_penalty(1) - 0.75).abs() < 0.001); assert!((melee_wall_penalty(2) - 0.55).abs() < 0.001); assert!((melee_wall_penalty(3) - 0.55).abs() < 0.001); }