BT410 5.3.116: the spectator camera direats -- BTCameraDirector reconstructed from a disassembly gap, and the donor's inverted pick caught
The two Performance bodies fell in a Ghidra gap (@004c11b3..@004c1408), so BeABTDirector came straight off ndisasm of the shipped CODE section. The verdict corrects the BT411 donor twice more: FUN_0049fb54 is not 'IsLiveMech' -- it is the mech DEATH-TRANSITION test (simulation state 2 or 9; its other callers strip update-record motion bits and halt motion integration while it holds, and our own MovementMode ledger already said so) -- and the donor's pick loop breaks on a DYING vehicle where the binary's jz breaks on a LIVE one. The true 1995 behavior: the camera lingers on its mech while the 30s timer runs, cuts away THE MOMENT the followed mech starts dying, picks the first of four ranked players with a live vehicle, and refreshes the lock during mission end. The 'BT-specific 0x15/0x34 track message' the port invented an engine substitute for IS the engine's CameraShip::DirectionMessage -- ID 0x15 == Entity::NextMessageID, 0x34 bytes, byte-for-byte; the RP engine's own BeADirector source (DIRECTOR.CPP survives) is the literal structural template BT overrode (rank-0-only, 10s, no offset -> four ranks, 30s, (0,5,0) eye). Mech::InDeathTransition lands in mech.cpp per the census (@0049fb54, 32 bytes). The ctor's replicant gate uses the binary's own flag test -- entity-side simulationFlags arrive live via the MakeMessage, unlike the subsystem masters still waiting on the stream builders. Stubs: 11 across 9 files (the 8 authoring CSS fns + the L4NET trio). Pod-role soak clean; the director's live test rides the operator's camera-egg / mission-review session. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -796,6 +796,20 @@ Mech::~Mech()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// InDeathTransition -- binary @0049fb54 (32 bytes): simulation state 2 or 9.
|
||||
//#############################################################################
|
||||
//
|
||||
Logical
|
||||
Mech::InDeathTransition(Entity *vehicle)
|
||||
{
|
||||
Check(vehicle);
|
||||
return
|
||||
vehicle->GetSimulationState() == 2 ||
|
||||
vehicle->GetSimulationState() == 9;
|
||||
}
|
||||
|
||||
//
|
||||
//#############################################################################
|
||||
// TakeDamageMessageHandler -- the Mech override of the Entity damage entry
|
||||
|
||||
Reference in New Issue
Block a user