MP combat step 1 (target any peer) DONE; step 2 (cross-pod damage) localised (task #46)
STEP 1 -- target any peer mech: DONE + verified. A live-mech registry (BTRegisterMech/BTDeregisterMech from the Mech ctor/dtor) collects every mech -- player, dummy, and peer replicants. The boresight world-pick walks BTGetTargetCandidates (all mechs != shooter, closest ray hit) and the whole fire/damage block retargets from the solo gEnemyMech to the picked hotTarget; missile/projectile validation generalised via BTIsRegisteredMech. Verified one-box: instance A enumerates B's mech as a live ReplicantInstance (20 zones, ownerID=3). Solo un-regressed (pick->damage->kill clean, 28 hits + DESTROYED). STEP 2 -- cross-pod damage: dispatch + engine reroute are CORRECT and invoked with a valid owner, but the dispatched message doesn't reach the master. Entity::Dispatch (ENTITY.cpp:244) reroutes a replicant's msg via application->SendMessage(ownerID,...); BT_MP_FORCE_DMG proves A dispatches at B's replicant with ownerID=3, yet B takes 0 STEP-6 damage. Corrects the KB's [T3] "Dispatch already reroutes": the reroute FIRES; the break is downstream in the transport/delivery of a dispatched entity-message (update records flow fine -- net-rx works). Next MP task = that wire delivery. Diagnostics BT_MP_LOG / BT_MP_FORCE_DMG retained. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
48191d6fdf
commit
a9c3e96f20
@@ -729,6 +729,13 @@ Mech::Mech(
|
||||
*(Scalar *)((char *)this + 0x384) = 0.0f;
|
||||
*(int *)((char *)this + 0x38c) = -1; // targeted sub-zone
|
||||
|
||||
// LIVE-MECH REGISTRY (task #46, MP targeting): every Mech -- player, the
|
||||
// solo dummy, AND every peer replicant -- registers here so the boresight
|
||||
// world-pick can test ALL of them, not just the solo gEnemyMech. The dtor
|
||||
// deregisters (rare -- wrecks stay; replicants drop when a peer leaves).
|
||||
extern void BTRegisterMech(Entity *m);
|
||||
BTRegisterMech((Entity *)this);
|
||||
|
||||
//
|
||||
// Install the Mech vtable and construct the embedded member objects.
|
||||
//
|
||||
@@ -1479,6 +1486,9 @@ Mech::~Mech()
|
||||
{
|
||||
Check(this);
|
||||
|
||||
extern void BTDeregisterMech(Entity *m); // task #46 live-mech registry
|
||||
BTDeregisterMech((Entity *)this);
|
||||
|
||||
vtable = &PTR_FUN_0050cfa8;
|
||||
|
||||
// Teardown-health probe (env-gated): collisionLists@0x2e4 must be LIVE at ~Mech
|
||||
|
||||
Reference in New Issue
Block a user