Death gate: a destroyed mech takes no pilot input (ghost-drive fix)

User report from 2-window play: after dying, the pilot could still steer the
wreck around invisibly.  Zero throttle/turn/fire and the forced harnesses at
the gBTDrive source when IsMechDestroyed() -- deliberately INPUT-only, so the
gait/animation machinery keeps running and the death collapse plays out.

Also recorded in the KB: the killer's screen shows the wreck SWAP but not the
death SINK (needs the Mech-level death/knockdown update records, disasm
preserved from task #51), and the respawn-cycle scouting (type-12 intro
scripts are binary ref-records; adrop; DropZone + Mech::Reset machinery) for
the recovery-whirlwind reconstruction (task #52).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
arcattack
2026-07-09 19:18:11 -05:00
co-authored by Claude Fable 5
parent 29035028fd
commit e430e474cb
2 changed files with 29 additions and 3 deletions
+13 -3
View File
@@ -178,9 +178,19 @@ transition, HUD all landed since P6): console egg → mesh → RunningMission on
it to the owning master (the KB claims Dispatch reroutes; not yet exercised with our STEP-6
handler). The master takes real zone damage + runs its own death transition (task #42 placed the
death dispatch victim-side — MP-correct by construction).
3. **Victim visuals on the shooter's screen**: the wreck swap gates on zone/graphic state the
REPLICANT copy may never see (zone damage may not replicate — only pose updates confirmed).
Check DamageZone/subsystem state in the update stream; else replicate the death as an event.
3. **Victim visuals on the shooter's screen** — PARTIALLY resolved (user-observed 2026-07-09): the
wreck SWAP does appear on the killer's screen, but the death SINK/burial does not (the collapse+
burial runs only in the owning pod's death transition). Fix path: transcribe the recovered
Mech-level WriteUpdateRecord death/knockdown record types (5/6 — disasm preserved, task #51).
3b. **Respawn cycle** (task #52): a dead player currently stays dead (and pre-gate could ghost-drive
the wreck — fixed: the drive input zeroes on IsMechDestroyed, input-only so the collapse still
plays). The authentic respawn (user recollection: a BLUE WHIRLWIND recovers the dead mech, then a
re-drop) — scouting: no whirlwind strings in the exe; BTL4.RES type-12 `*int.scp` = per-mech INTRO
(arrival/drop) scripts but they are BINARY ref-records {ver, off, size, refCount, refIds} pointing
at other resources (not text like the type-13 explosion scripts); `adrop` (id 1994) sits in the
MAP type (14). The machinery: death detection (BTPlayer) → recovery/drop effect → AssignDropZone →
Mech::Reset (@0049fb74, the respawn placement — its full subsystem-reset sweep is still a
bring-up TODO) → roster ResetToInitialState.
4.**Cross-pod beam visuals — DONE (task #51, 2026-07-09).** The keepalive theory needed one
correction: `FUN_0041c350` = (a) queue the LOCAL deferred beam-effect callback (@0x4bac0c) on the
app+0x34 manager (our per-weapon render walk plays that role) AND (b) set the subsystem DIRTY bit —