diff --git a/game/reconstructed/btl4vid.cpp b/game/reconstructed/btl4vid.cpp index 9bc48e0..d7a384c 100644 --- a/game/reconstructed/btl4vid.cpp +++ b/game/reconstructed/btl4vid.cpp @@ -1902,7 +1902,12 @@ BTReticleRenderable *BTBuildReticle(Entity *mech) 2, 3, (int *)wp->SimulationStatePtr(), // attr 1: damage state (1 = destroyed) 1, - 1 /* Front group (RearFiring==0 on every BLH weapon) */); + // (task #68) the AUTHENTIC pip group: the binary registration reads + // the weapon's RearFiring attr and passes group 1 (front) / 2 (rear) + // (part_014.c:5429-5434) -- the reticle draws the group matching + // the current look view (mech reticleElementMask low bits). The + // old hardcoded 1 rode the disproven "no BLH weapon is rear" belief. + wp->GetRearFiring() ? 2 : 1); } DEBUG_STREAM << "[hud] reticle built: " << gBTReticle->WeaponCount() << " weapon pip(s) registered\n" << std::flush; diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index 9c25618..1681f2e 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -6225,6 +6225,17 @@ void BTCommitLookState(void *mech_v, int look_state) (look_state == 3) ? rf : 0); } } + + // (task #68) the HUD pip GROUP mask (binary mech+0x390, weapon update + // part_013.c:5588-5595): forward view shows the FRONT pip group (|=1,&~2), + // look-back shows the REAR group (|=2,&~1); side/down views leave it. + // mech4's HUD tick publishes the low bits as gBTHudGroupMask each frame. + if (look_state == 0) + m->targetReticle.reticleElementMask = (Reticle::ReticleElements) + (((int)m->targetReticle.reticleElementMask | 1) & ~2); + else if (look_state == 3) + m->targetReticle.reticleElementMask = (Reticle::ReticleElements) + (((int)m->targetReticle.reticleElementMask | 2) & ~1); if (getenv("BT_KEY_LOG")) DEBUG_STREAM << "[look] state=" << look_state << " rearFiring=" << m->rearFiring