From 001ca16af99d16a29b08e4a8eaf642a8ef63b424 Mon Sep 17 00:00:00 2001 From: arcattack Date: Sat, 11 Jul 2026 12:11:21 -0500 Subject: [PATCH] KB: crit-propagation landing recorded (task #2) Co-Authored-By: Claude Fable 5 --- context/combat-damage.md | 9 +++++++++ context/decomp-reference.md | 1 + 2 files changed, 10 insertions(+) diff --git a/context/combat-damage.md b/context/combat-damage.md index dd2a98f..6ac5efc 100644 --- a/context/combat-damage.md +++ b/context/combat-damage.md @@ -291,6 +291,15 @@ Full decomp map of the death path. Two tiers: accessors ride the engine StateIndicator, which is why the death state (9) now REPLICATES -- it travels in every update record's header (+0xC) and the observer's replicant runs its own wreck sink off it (see [[multiplayer]] "Mech-level update records"). [T1] +- **✅ Critical-subsystem propagation LIVE (task #2, 2026-07-11) [T2]:** a zone driven to 1.0 + cascades its streamed crit allotments into the carried subsystems' OWN private DamageZones + (SendSubsystemDamage @0049c9a8, rewritten to the recovered body); a subsystem at 1.0 fails + (statusAlarm Destroyed + zone valve), a VITAL one (`vitalSubsystem@0xE4`, ex "videoObjectFlag") + kills the mech via graphicAlarm 9. The plugs bind in the zone ctor + (`SlotOf.Add(subsystemArray[streamedIndex])` @0049d0e1 — Ghidra had dropped the + call's arguments, hiding the binding for the whole effort); `CriticalHit` uses the real + `ApplyDamageAndMeasure` @4ac07c. Diag: `BT_CRIT_PROBE=`. Detail: [[open-questions]] + (the resolved entry) + mechdmg.cpp/mechsub.cpp. - **`MechDeathHandler`** (ctor `FUN_0042a984` + Performance `FUN_0042aa2c`, cached mech+0x850 / `mech[0x214]`) — the **per-subsystem destroyed-skin + explosion engine**. Each tick walks the damage subsystems (mech+0x120[mech+0x11c]); as a subsystem's damage crosses a descriptor-table threshold (`FUN_0042a5f4` diff --git a/context/decomp-reference.md b/context/decomp-reference.md index d2ad0ed..a97bbd7 100644 --- a/context/decomp-reference.md +++ b/context/decomp-reference.md @@ -175,6 +175,7 @@ default-ON (`'0'` disables). | `BT_WARP_SELFTEST` / `BT_WARP_SELFSHOT=` | DIAG (off by default): force a held warp in a solo game / dump backbuffer frames to disk (visual-verification harness) | | `BT_GYRO_LOG` | gyro bring-up log (gyro.cpp) | | `BT_GYRO_TRACE` | per-frame hit-bounce integrator trace | +| `BT_CRIT_PROBE=` | hammer one own-mech zone every 4s (crit-propagation diag, task #2; mech4.cpp) | | `BT_REPL_LOG` | replicant/MP replication log (mech4.cpp) | | `BT_GOTO="enemy"\|"x z"` / `BT_GOTO_LOG` | self-driving beeline (to the enemy or a map coordinate) + its log | | `BT_MP_LOG` / `BT_MP_NET` / `BT_MP_FORCE_DMG` | MP diagnostics / forced cross-pod damage |