BT410 notes 5.3.136: the ammo cook-off, decoded -- the mech has never been able to suffer an ammo explosion

Asking what an AmmoBin does with the gun heat alarm that 5.3.132 brought
to life turned up an entire mechanic that has never run here, dead for
two independent reasons: the watch link was unbound so the mirrored
alarm never left NormalHeat, and our AmmoBin has no Performance at all
where the binary installs one.

The trigger: when the gun a bin feeds goes into HEAT FAILURE, the bin
latches a randomised countdown.  Heat clearing cancels it; expiry
destroys the bin and detonates it.  The damage is authored per round and
scaled by rounds remaining, so a full bin guts the mech and a nearly
empty one barely coughs.  The blast is then SHARED -- divided by the
number of targets, not applied whole to each -- and every victim is
announced with the authentic string "ammo explosion damaging <name>",
which is what confirmed the whole reading.

One identity is deliberately left unpinned: what the collector iterates
and what its 0x4e filter selects.  It is not a classID, and the
per-victim reads look more like damage zones than subsystems.  Guessing
would produce a plausible mechanic that damages the wrong things --
precisely the failure this project keeps catching -- so the collector
gets read first and the whole thing lands in one piece.

Worth noting the shape: two dead systems in series were hiding a third.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-08-12 23:00:26 -05:00
co-authored by Claude Fable 5
parent 505dae450b
commit f760d16558
+45
View File
@@ -660,3 +660,48 @@ Still worth exercising now that the mirror is live: what an AmmoBin does
with its gun's heat alarm (a cook-off or a feed lockout would be the
obvious candidates, and the binary is the place to check before assuming
either).
## 5.3.136 -- THE AMMO COOK-OFF, decoded (the payoff of binding the watchers)
Asking what an AmmoBin does with its now-live gun heat alarm turned up a
whole mechanic that has never run in our tree, for TWO independent
reasons: the watch link was unbound (5.3.132) so the mirrored alarm never
left NormalHeat, AND our `AmmoBin` has no Performance at all -- the
binary installs one (ctor @004bd5c4 stores the triple @0x512654 ->
`@004bd394`, gated master+dynamic as usual).
**The trigger** (@004bd394): when the bin's mirrored heat alarm (+0x140)
reads 2 = FailureHeat -- i.e. THE GUN IT FEEDS is cooking -- and the bin
is not already spent (+0x1a8 != 2) and no countdown is pending, it latches
one: `cookoffAt = now + <randomised delay>` (time from @00414b60, the
delay through the ftol helper @004dcd94). If the heat clears the
countdown is CANCELLED; if it expires the bin destroys itself
(state alarm -> 1, dirty mark) and detonates.
**The detonation** (@004bd300 -> @004ac274), and the damage is authored
per round: `damage = roundsRemaining * perRoundDamage (+0x1f4)`, so a full
bin guts the mech and a nearly empty one barely coughs. @004ac274 then:
* drives the bin's own state alarm 2 then 1 with an update mark each,
* pins its PRIVATE damage zone to 1.0 (destroyed),
* collects a target set by walking @004acfa9(mech, -1) and keeping
entries whose `+4` field equals **0x4e**,
* **divides the damage by the number of targets** -- the blast is
SHARED, not applied whole to each,
* dispatches a 100-byte TakeDamage (id 0x12) at each, printing the
authentic `"ammo explosion damaging <name>"` for every victim,
* finally zeroes the ammo count and sets the bin's 6-level state alarm
(+0x194, ctor `FUN_0041b9ec(+0x194, 6)`) to 2.
**THE ONE THING TO PIN BEFORE LANDING**: what @004acfa9 iterates and what
`+4 == 0x4e` selects. 0x4e is not a classID (those are 0xBBx), and the
per-victim reads -- a name via `*(+0x15c) + 8` and an index at `+0x13c` --
look more like DAMAGE ZONES than subsystems. Getting this wrong would
produce a plausible mechanic that damages the wrong things, which is
exactly the failure mode this project keeps catching, so it is decoded no
further here. Read @004acfa9 and @004ad03a/@004ad0a4 (the collector and
its list) first, then land the whole thing in one piece.
Note the shape of the find: two dead systems in series hid a third. The
watcher binding did not just fix an alarm -- it exposed that the mech has
never been able to suffer an ammo explosion.