From 3013cf86c5adca195152ae8fa5fe50d7dea5666d Mon Sep 17 00:00:00 2001 From: Joe DiPrima Date: Fri, 14 Aug 2026 00:01:39 -0500 Subject: [PATCH] #111 FIXED: the peer-visible warp sphere is RETIRED -- observers see the un-wreck model swap, exactly what the pods showed. The blue bubble on another player's dying/respawning mech was never binary behavior: the authentic effect is the POV-ONLY translocation (POVTranslocateRenderable, the dying pilot's own eye-centred collapse/reveal -- btl4vid.cpp's own banner says 'the authentic effect is POV only', twice), and the world-anchored peer sphere was a deliberate July-10 port extension (160b78e) that the field read as a wrong effect ('should just be the big boom from other POV' -- Lynx, night 9, confirmed in follow-up). The death-side collapse was already local-gated (GetMissionPlayer, verified back through build 693), so retiring the extension removes the LAST peer-visible warp; the corpse-vs-dropzone replication-order question the field receipts could not settle becomes moot. Un-wreck edge keeps everything else: pfx cleanup (#129), model rebuild, the ungated [respawn] receipt (text updated: 'un-wrecked', no '+ warp'). BTStartWarpEffect kept caller-less as slot-guard documentation. Night-16 field receipts audited on the way in: all 24+ un-wreck edges are clean mode 9->1, no death-state jitter. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD --- game/reconstructed/btl4vid.cpp | 5 +++++ game/reconstructed/mechdmg.cpp | 16 +++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/game/reconstructed/btl4vid.cpp b/game/reconstructed/btl4vid.cpp index a57283c..42bf211 100644 --- a/game/reconstructed/btl4vid.cpp +++ b/game/reconstructed/btl4vid.cpp @@ -3786,6 +3786,11 @@ void BTStartWarpExpandPOV() // World-anchored warp (a PORT EXTENSION -- the authentic effect is POV only): an // OBSERVER seeing a peer respawn over THERE. No world mask (the observer is alive); // expand-reveal at the peer's world point. +// *** RETIRED (#111, 2026-08-14): no caller. The field read the peer-visible +// bubble as a wrong effect on the dying/respawning mech ("should just be the +// big boom from other POV"); the authentic effect is the POV-only translocation, +// and observers now see the un-wreck model swap itself (mechdmg.cpp). Kept as +// documentation of the one-warp-slot guard. *** // void BTStartWarpEffect(float x, float y, float z) { diff --git a/game/reconstructed/mechdmg.cpp b/game/reconstructed/mechdmg.cpp index 803e0f0..34b3e71 100644 --- a/game/reconstructed/mechdmg.cpp +++ b/game/reconstructed/mechdmg.cpp @@ -1387,7 +1387,6 @@ void && owner->GetInstance() == Entity::ReplicantInstance) { extern void BTRebuildMechModel(Entity *entity); - extern void BTStartWarpEffect(float x, float y, float z); // #129 (fresh spawns smoking, peers' screens only): the wreck plume // is re-armed LOCALLY on every node (entity-attached, 10s windows), // and only the master's Mech::Reset ran the @004d0c14 effect @@ -1397,13 +1396,20 @@ void extern void BTStopEntityPfx(void *entity_v); BTStopEntityPfx((void *)owner); BTRebuildMechModel((Entity *)owner); - BTStartWarpEffect((float)owner->localOrigin.linearPosition.x, - (float)owner->localOrigin.linearPosition.y, - (float)owner->localOrigin.linearPosition.z); + // (#111) the peer-visible warp sphere that used to fire here is + // RETIRED. It was a deliberate port extension (160b78e, "observer + // sees peer un-wreck") -- but the authentic effect is POV-ONLY + // (POVTranslocateRenderable, the dying pilot's own translocation; + // btl4vid.cpp's banner says so twice), and the field read the blue + // bubble on another mech as a wrong effect ("should just be the + // big boom from other POV" -- Lynx, night 9, confirmed). The + // observer sees exactly what the pods showed: the un-wreck model + // swap itself. This also retires the one-slot contention skip + // (a peer landing mid-POV-warp no longer competes for the slot). // #108 forensics: UNGATED -- one line per peer respawn; a field // night's ghost triage needs these without asking players for envs. DEBUG_STREAM << "[respawn] replicant " << owner->GetEntityID() - << " un-wrecked + warp (mode " + << " un-wrecked (mode " << oldMode << "->" << mode << ") at (" << owner->localOrigin.linearPosition.x << "," << owner->localOrigin.linearPosition.z << ")\n" << std::flush;