diff --git a/docs/GAUGE_COMPOSITE.md b/docs/GAUGE_COMPOSITE.md index 8317ae6..04207e2 100644 --- a/docs/GAUGE_COMPOSITE.md +++ b/docs/GAUGE_COMPOSITE.md @@ -565,9 +565,16 @@ a prose-only vtable slot AVs on first call). (`*(local+0x284)` then `*(tgt+0x190)`) that AV'd on our layout — caught silently by the SEH GuardedExecute, aborting Execute BEFORE the KILLS/DEATHS draw. Replaced with BTPilotIsSelected (accessors).** And the 10s console flush now only zeros currentScore when a console host exists (solo keeps the running score). - **Verified: SCORE climbs +5.83/hit → 164; on the kill the Comm roster shows KILLS=1.** Follow-ups: DEATHS=1 - is a pre-existing spawn/respawn-handshake artifact (not the producers); RANK=-1 is CalcRanking's non-scoring - mark (Plasma serial surface, invisible on dev); MP VehicleDead + tonnage/role registry remain. Env: BT_SCORE_LOG. + **Verified: SCORE climbs +5.83/hit → 164; on the kill the Comm roster shows KILLS=1 / DEATHS=0, log + killCount=1 deaths=0 score=164 rank=0.** Env: BT_SCORE_LOG. + - ✅ **DEATHS + RANK fixed** (commit a9210e0). RANK=-1: `Player::DefaultFlags` creates every player + NonScoring (CalcRanking ranks only `IsScoringPlayer()`); call `SetScoringPlayerFlag()` in the DropZoneReply + mech branch → RANK=0. DEATHS runaway: `@004c012c` (our VehicleDead MESSAGE_ENTRY) is actually the drop-zone + **respawn-retry** helper — the engine's RequestDropZone (PLAYER.cpp:400) posts a 2s-delayed + VehicleDead(deathCount=-2) timer, and our handler ++deathCount + **re-posted it unconditionally** → an + infinite loop (the drop-zone handshake never completes in bring-up). Fix: if the player already has a + vehicle (drop zone acquired), the retry is moot → return without counting/re-posting → DEATHS=0, loop gone. + MP real-death DEATHS (destroyed vehicle via @004c05c4) remains deferred. - **duckState** writer (button-4 crouch lamp; only ctor-zeroed today). ### Phase 4 — DEEP/DEFERRED