Files
BT411/game/reconstructed
..
#175 FIXED: missiles detonate on the static world again -- the flight sweep's missing half. The push simulator's world test marched only the VISUAL heightfield (BTGroundRayHit), so every round tunneled through geometry that blocks the walk but is not heightfield -- the arena1-garage class, and the field case (LRM duel through a grass mound, user-observed on the #83 bench). The binary's FUN_0042291c swept the real collision world every tick. Fix: the flight step now also rays the STATIC COLLISION SOLID TREE (WorldStructurePick -> Mover::FindStaticSolidHitBy -- the same static-world tail of the engine collider, already proven by the weapon-pick work), earliest hit wins vs the heightfield march; a struck solid's OWNING entity takes the direct zone=-1 dispatch exactly as the binary missile contact does (@004be078 -- trucks/props are missile-killable); salvo-lead world bursts keep the detonation + cluster splash (near-miss splash vs cover, authentic). BT_WORLDHIT=0 restores heightfield-only (A/B lever). Receipt upgraded: [projectile] WORLD burst (terrain|struct[, owner-dispatched]) + dmg/lead. Verified on the exact reported scenario (grass standoff duel, mound in the line): 185/160 WORLD-burst receipts per node -- ALL struct-class (confirming the mound is solid-tree geometry the old test was blind to), direct mech IMPACTs healthy at 20/18 when the line cleared, user-witnessed: rounds burst on the mound instead of passing through, lofted rounds still arc over (the authored seeker loft). Companion bench hook from the same session: BT_DESIGNATE=enemy (no HUD ring -- designation slots only).
2026-08-13 22:44:26 -05:00
#83 FIXED: the incoming-missile alarm sounds again -- the July F7 driver was wired into DEAD CODE. Root cause: the alarm feed (cc2b109) lived in Missile::MoveAndCollide, but the world-entity Missile is a BLOCKED TRANSCRIPTION (2007 Entity-base mismatch) that never flies; live flight is the BTPushProjectile simulator in mech4.cpp -- so IncomingLock/DistanceToMissile stayed 0/FLT_MAX in every field build (solo AND MP) while the doc header said F7 fixed. Fix: the feed moves to the push simulator's per-frame update -- salvo LEAD only (the port's cluster = the binary's ONE Missile per trigger, @004bf5b4 ctor-registration into target+0x418 read by the target tick @004a9b5c: lock=1, dist=|missile-mech| entity positions); mirror leads on peer nodes report identically (mislanch resolves the live target by replicated ID), which is what puts the alarm in the VICTIM's cockpit -- inbound missiles are always mirrors there. Bridge hardened: BTIsRegisteredMech class check (the binary's 0x50bdb4 check) + the port's latched-death predicate 2||9 (@0049fb54). New: [incoming] receipt (BT_INCOMING_LOG, edges + 1Hz held) and BT_DESIGNATE=enemy (bench designator: production designation slots stamped with the nearest live mech on no-mech frames only -- standoff locks the boresight pick can't hold). Transcription block kept in missile.cpp with an INERT banner so the trap can't re-bite. Bench (2-node standoff LRM duel, 700-800u): 54/55 lock edges per node, dist closing 792->87 over ~2.2s, beeper STARTs with LIVE authored tempo (10 far -> 435 close, the 100..800->600..10 map) -- on replicant mirrors, i.e. the MP case. Era witness: Oracle identified [1:74] IncomingAlarm01 n58 on the soundboard same day ('sped up in the pods').
2026-08-13 22:25:38 -05:00
#83 FIXED: the incoming-missile alarm sounds again -- the July F7 driver was wired into DEAD CODE. Root cause: the alarm feed (cc2b109) lived in Missile::MoveAndCollide, but the world-entity Missile is a BLOCKED TRANSCRIPTION (2007 Entity-base mismatch) that never flies; live flight is the BTPushProjectile simulator in mech4.cpp -- so IncomingLock/DistanceToMissile stayed 0/FLT_MAX in every field build (solo AND MP) while the doc header said F7 fixed. Fix: the feed moves to the push simulator's per-frame update -- salvo LEAD only (the port's cluster = the binary's ONE Missile per trigger, @004bf5b4 ctor-registration into target+0x418 read by the target tick @004a9b5c: lock=1, dist=|missile-mech| entity positions); mirror leads on peer nodes report identically (mislanch resolves the live target by replicated ID), which is what puts the alarm in the VICTIM's cockpit -- inbound missiles are always mirrors there. Bridge hardened: BTIsRegisteredMech class check (the binary's 0x50bdb4 check) + the port's latched-death predicate 2||9 (@0049fb54). New: [incoming] receipt (BT_INCOMING_LOG, edges + 1Hz held) and BT_DESIGNATE=enemy (bench designator: production designation slots stamped with the nearest live mech on no-mech frames only -- standoff locks the boresight pick can't hold). Transcription block kept in missile.cpp with an INERT banner so the trap can't re-bite. Bench (2-node standoff LRM duel, 700-800u): 54/55 lock edges per node, dist closing 792->87 over ~2.2s, beeper STARTs with LIVE authored tempo (10 far -> 435 close, the 100..800->600..10 map) -- on replicant mirrors, i.e. the MP case. Era witness: Oracle identified [1:74] IncomingAlarm01 n58 on the soundboard same day ('sped up in the pods').
2026-08-13 22:25:38 -05:00