KB: the wall-grind knockdown storm IS the surviving #82 skating -- A/B-isolated

Four-config matrix (mp_gimpAB.sh, [animind] replicant-state verdict):
grass straight/circle = clean replicant limp (198 gimp entries; 17 car
crunches during it -- crushable path broadcasts nothing, cars exonerated);
arena1 straight = one wall strike, replicant recovers into the limp;
arena1 circle = wall GRIND -- the bmp stagger clip's ~6.5 u/s root motion
re-strikes the wall (6.5^2 > iv2 threshold 40), each rebind re-broadcasts
the type-5 knockdown (26x in the user's run), and every peer's replicant
lives in knockdown/recovery churn: gliding + trn leg-lifts = "skating".
Turning while gimped is innocent; single strikes are benign.

Authentic fix filed in open-questions: reconstruct the consumer of the
stagger's action-request flags (FUN_004a4c54 bits 1/0x20 -- the drive
suppressor while the bmp clip plays); the rebind guard at mech4.cpp:6861
is already marked bring-up-pending exactly that.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-07-30 15:41:56 -05:00
co-authored by Claude Fable 5
parent 4e89baeff3
commit 19fe1e5fa2
2 changed files with 26 additions and 0 deletions
+17
View File
@@ -212,6 +212,23 @@ knockdown must stagger BOTH channels (`SetBodyAnimation(0x20)` + `SetLegAnimatio
stops the knockdown re-firing on sustained/glancing contact. `localVelocity` is zeroed while crashed
(spec-faithful) so a knocked mech can't keep advancing. [T2]
**⚠ The WALL-GRIND KNOCKDOWN STORM = the surviving "#82 peers see skating" (2026-07-30) [T2].**
Each stagger bind also broadcasts `ForceUpdate(0x20)` — the **type-5 KNOCKDOWN record** — and the
replicant handler (`mech.cpp` case 5) plays the bmp clip AND zeroes `projectedVelocity`. The bmp
clip carries ~6.5 u/s of root motion pressing back into the wall (6.5² ≈ 42 > the iv²>40 threshold),
so **against a wall the stagger self-retriggers**: a gimped mech grinding a wall re-broadcast 26
knockdowns in one bench run, and every peer's replicant lived in knockdown/recovery churn — never
re-entering the gimp cycle. On the observer that reads as gliding + trn leg-lifting = "skating."
4-config A/B (`scratchpad/night6/mp_gimpAB.sh`, `[animind]` inst=1 verdict): grass straight/circle
**198 gimp-state entries, clean limp** (17 car crunches during it — crushable icons are the
`0.00123f` sentinel path: gyro kick only, NO broadcast, exonerated); arena1 straight = 1 strike,
replicant recovered to gimp (196); arena1 circle (wall grind) = **0 gimp entries, skating**. So:
turning innocent, cars innocent, single strikes recover — the STORM is the whole bug, and it is
field-relevant (legged players hug walls). **The authentic fix is the un-reconstructed consumer of
the stagger's action-request flags** (`FUN_004a4c54(this,1)` + `(this,0x20)` — the drive suppressor
during the stagger; the port's rebind guard at mech4.cpp:6861 is marked bring-up pending exactly
this). Tracked in [[open-questions]]; replication detail in [[multiplayer]].
## Controls (`BT_REAL_CONTROLS`, default-on)
`MechControlsMapper` (mechmppr.cpp @004afbe0; btl4mppr.cpp mappers) interprets input → `speedDemand`
/ `turnDemand`. ⚠ **WndProc NEVER receives WM_KEYUP** (the engine's per-frame reader `GetMessage`s