Two corrections to the damage model's leg branch, both read straight off the
binary's own control flow (part_012.c:6900-6945, the _DAT_0049c99c/9a0
compares), closing a delta the notes had carried as staged:
THE KILL GATE WAS WRONG. Our reconstruction felled the mech whenever a
leg zone reached 1.0. The binary only does that when the mech is ALREADY
LIMPING (mode 3/4): a first leg hit -- even one that takes the zone
straight to 1.0 -- produces a LIMP, and the fall needs a second blow to
land while the gait is already gimped. Two-stage leg death, exactly the
BattleTech flavour, and measurably more forgiving than what we shipped.
THE ALARM WAS RIGHT. The limp/kill signal writes AlarmIndicator::SetLevel
at mech+0x2c -- the statusAlarm, exactly as our MECHDMG had it (levels 3/4
limp, 9 down). Confirmed rather than changed.
AND THE MISSING LINK STAGED: nothing promoted statusAlarm 3/4 into the
movement mode the gait keys on. The binary's own damage code READS mode 3/4
to decide "already limping", so the promotion demonstrably exists -- its
writer is the master performance (mech4 @004a9b5c, the function Ghidra never
decompiled). Until that lands, Simulate promotes status 3/4 -> simulation
state 3/4 (guarded so a death mode is never overwritten), marked STAGED with
the evidence.
The chain is now END TO END: enemy fire -> cylinder table -> leg zone
crosses 0.5 -> statusAlarm 3/4 -> movement mode -> the limp advancers
replace the normal gait -> the drag leg shows on the wire -> the demand
clamp caps the throttle. Live regression: the normal mission's speed
sequence is bit-identical a third time (7.31972, 26.6726, ...); the
promotion block is inert until real leg damage arrives.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>