#118 alarm dig complete: the TechStatus bit model -- MarkGeneratorOut bridge removed
The gauge-alarm "condition" is a STATUS-FLAG BIT INDEX edge-scanned by MechTech (bit 0/1 structure, 2 leak, 3 heat, 4 AmmoBurning, 5 Jammed, 6 !HasVoltage). Conditions 4/5 -> the engEject flash = the AMMO purge/unjam invite (flashing the very key whose streamed function is EjectAmmo) -- never pilot eject; cond 6 -> the bus-switch invite; the PANIC lamp is the sole pilot-eject indicator. The destruction->stateAlarm(4) bridge is REMOVED as unfounded: alarms never read stateAlarm; state 4 is the THERMAL BREAKER state produced by GeneratorSimulation itself (byte-matched vs FUN_004b1f7c). And the binary's crit distributor (@0049c9a8, read raw) touches nothing electrical -- a generator destroyed in place keeps stale Ready voltage until any transition recomputes output via (1 - damage) x rated. The port now matches that subtlety exactly (verified: single-gen force-kill -> no bus invite, no arm, silent unarmed keypad -- all authentic). KB: the full bit table + invite semantics + electrical subtlety recorded in decomp-reference. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
609dde8051
commit
a728fa6de9
@@ -287,13 +287,14 @@ 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);
|
||||
}
|
||||
// (A MarkGeneratorOut call lived here 2026-08-03 for a few hours --
|
||||
// REMOVED same night when the alarm dig completed: the gauge-alarm
|
||||
// conditions are STATUS-FLAG BITS scanned by MechTech, not stateAlarm
|
||||
// levels. Generator death raises bit 6 (!HasVoltage) AUTHENTICALLY ->
|
||||
// the gotoEngineering + engBusMode invite; conditions 4/5 (engEject)
|
||||
// are the WEAPON's AmmoBurning/Jammed bits -- the ammo-purge invite,
|
||||
// never a pilot-eject one. stateAlarm 4's real producer remains
|
||||
// unfound (export holes) and nothing observable needs it.)
|
||||
}
|
||||
|
||||
// issue #22 (PORT): the fresh-mech respawn repair -- the exact inverse of the
|
||||
|
||||
@@ -468,15 +468,17 @@ class Generator;
|
||||
int
|
||||
GeneratorStateOf() { return stateAlarm.GetLevel(); } // source+0x210
|
||||
|
||||
// DESTRUCTION -> the OUT display state (stateAlarm 4). [T3 inferred
|
||||
// link, 2026-08-03]: both endpoints are byte-verified -- the eject
|
||||
// evaluator treats stateAlarm==4 as generator-dead (@0049fa1c) and the
|
||||
// authored alarm streams flash the gotoEngineering + engEject invite on
|
||||
// conditions 4/5 -- but the binary's destroyed->SetLevel(4) call site
|
||||
// sits in unexported code (no FUN_0041bbd8(+0x1fc,4) in the flat
|
||||
// export). Called from MechSubsystem::ForceCriticalFailure via the
|
||||
// BTGeneratorMarkOut bridge; replace with the exact site when the
|
||||
// MechSubsystem::TakeDamage / OnAlarmChanged cluster is reconstructed.
|
||||
// UNUSED -- and now PROVEN unnecessary (2026-08-04 dig): stateAlarm 4
|
||||
// (GeneratorOut) is the THERMAL BREAKER state, produced by
|
||||
// GeneratorSimulation itself (heatAlarm==FailureHeat -> SetLevel 4,
|
||||
// byte-matched vs FUN_004b1f7c) -- never by destruction. The gauge
|
||||
// alarms scan STATUS-FLAG BITS via MechTech (bit 6 = !HasVoltage);
|
||||
// a generator destroyed IN PLACE keeps its stale Ready voltage in
|
||||
// the BINARY TOO (the crit distributor @0049c9a8 touches nothing
|
||||
// electrical) until any transition recomputes output through the
|
||||
// (1 - damage) formula. A short-lived ForceCriticalFailure bridge
|
||||
// to this method was removed as unfounded; keep the method only as
|
||||
// documentation of the state's meaning.
|
||||
void
|
||||
MarkGeneratorOut() { stateAlarm.SetLevel(GeneratorOut); }
|
||||
Scalar
|
||||
|
||||
Reference in New Issue
Block a user