#189 re-described from Lynx's full account + sweep the stale AutoConnect entry. The ticket was filed from a one-line tracker row and had the symptom WRONG: 'an overheated generator refuses to cool down at all' is not what happens -- Lynx confirms flushing coolant brings generator temp down normally. The real bug is recovery: an overheated generator drops its weapon off the bus, the generator cools fine, and a weapon left on AUTO never re-attaches; only a forced reassignment revives it. Repro recorded (Nova, both PPCs seeked to 4, coolant loops boosted, fire repeatedly, ~8 min to force the overheat), plus his observation that it appeared in VETERAN while EXPERT behaved as expected (would make it experience-gated, cross-ref #177). Three hypotheses on the ticket: his two (generators not resetting / auto-assignment not recovering) and ours -- the generator sim has NO Ready-case recompute, so a cooled generator can hold stale OUT state until some transition forces a recalculation, which is exactly why a manual reassignment revives it; that is also the standing suspect on #154's never-root-caused half. Benchable via #62's BT_POWER_DETACH_TEST hook and its [power] AutoConnect RE-ATTACHED receipt: present after a plain detach but absent after an overheat separates the two causes in one run. Also sweeps a stale KB claim found en route -- open-questions still said AutoConnect was deliberately NOT fixed, when #62 landed HasVoltage and restored both call shapes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-08-15 08:31:28 -05:00
co-authored by Claude Opus 5
parent e1ffc4a991
commit 37e1a0cd52
+8 -2
View File
@@ -318,8 +318,14 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR
(the databinding trap). DORMANT in-game (the review context no longer survives the viewpoint
swap -- the #48 teardown fix) but LIVE the moment the mission-review screen actually runs at
round end. Bridge all three through btplayer.cpp accessors before enabling the review screen.
- **`PoweredSubsystem` AutoConnect is DEAD, and vtable slot +0x40 is misattributed --
FILED AS GITEA #62 (root cause of the #21 field report)
- **✅ FIXED (#62) — `PoweredSubsystem` AutoConnect WAS dead, and vtable slot +0x40 was
misattributed.** (Entry kept for the reasoning; the "deliberately NOT fixed" line below is
STALE — `HasVoltage(Subsystem *source = 0)` now exists and both call shapes are restored,
powersub.cpp:399/414, with a `BT_POWER_DETACH_TEST=1` hook and a `[power] AutoConnect
RE-ATTACHED` receipt. ⚠ 2026-08-15: Lynx reports an AUTO weapon still not recovering after a
GENERATOR OVERHEAT specifically — tracked in #189; the suspect there is the generator's own
stale state, not AutoConnect.)
ORIGINAL ENTRY: FILED AS GITEA #62 (root cause of the #21 field report)
(2026-07-25, found while auditing #47's GetStatusFlags change) [T1 decomp].** The binary
(@004b0bd0 tail) calls slot +0x40 with TWO shapes: `(this, 0)` in the outer gate (require
`== 0`) and `(this, candidateGenerator)` inside the roster walk (require `!= 0`). That is a