#118: the FLASHING eject invite fires -- generator OUT state + pilot keypad

The last hop lands: a destroyed Generator now reaches its OUT display state
(stateAlarm 4 -- enum renamed from the placeholder "GeneratorRecovered";
[T3 inferred link, both endpoints byte-verified: the eject evaluator's
state==4 dead clause @0049fa1c and the authored alarm streams' conditions
4/5 -> gotoEngineering 0x80 + engEject 0x85]). Wired from the one crit
chokepoint (MechSubsystem::ForceCriticalFailure -> BTGeneratorMarkOut
bridge). Verified live: gen kill -> the quad-select columns FLASH
(RIO 0x37 fast-flash) -- the pod's guided "punch out now" trail.

Plus the authentic panel eject input: CONTROLS.MAP binds the desktop
NUMPAD to the pilot keypad (keypad pilot 0-9) -- while armed, any pilot-
keypad key fires the eject (the binary's only armed binding); un-armed
they feed program entry.

The full 1995 eject experience is now live: alarm -> flashing invite trail
-> lit Panic button -> press (Panic / numpad / Backspace) -> punch-out ->
death without honor -> respawn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Joe DiPrima
2026-08-03 20:11:05 -05:00
co-authored by Claude Fable 5
parent 417008a6d4
commit aa54655980
4 changed files with 55 additions and 4 deletions
+7
View File
@@ -287,6 +287,13 @@ void MechSubsystem::ForceCriticalFailure()
{
((DamageZone *)damageZone)->SetDamageZoneState(1); // zone+0x10
}
// Generator: also reach the OUT display state (stateAlarm 4) so the
// authored gotoEngineering + engEject FLASH invite fires (alarm stream
// conditions 4/5). [T3 inferred link -- see Generator::MarkGeneratorOut.]
{
extern void BTGeneratorMarkOut(::Subsystem *sub); // powersub.cpp
BTGeneratorMarkOut(this);
}
}
// issue #22 (PORT): the fresh-mech respawn repair -- the exact inverse of the