diff --git a/context/gauges-hud.md b/context/gauges-hud.md index 558ce9d..137549b 100644 --- a/context/gauges-hud.md +++ b/context/gauges-hud.md @@ -99,7 +99,13 @@ range caret binds to the live target range (`BTSetHudTargetRange`, fed by mech4' `tools/disas2.py` — the full annotated read: the task-37 commit + btl4vid.cpp comments) [T1], and every instrument is now live [T2]:** - **Right ladder** = range 0–1200 m: a BAR from ladder-top to the caret + the yellow caret - translate (`-scaleY·frac`); pegs at 1200 with no target. + translate (`-scaleY·frac`); pegs at 1200 with no target; the DISPLAYED range slides at + **500 m/s** toward the true pick range (HudSimulation :5652 [T1]). **The weapon pips sit on + this same ladder at each weapon's authored max-range mark** — caret below a pip = that weapon + reaches the target. BLH authored data (live dump): 3× ER-M laser red @**500 m** (two stacked + at one column; PipExtendedRange=1), 2× missile amber (0.6,0.4,0) @**800 m**, 2× PPC blue + @**900 m** — so the 7 pips read as 3 weapon-SYSTEM groups. (The engineering-panel "RANGE 500M" + labels are panel text; the authoritative reach is the streamed WeaponRange.) - **Bottom 21-tick tape = the TORSO-TWIST indicator** (NOT a heading tape): deflection line + carets at `∓(span/2)·(RotationOfTorsoHorizontal / HorizontalTorsoLimit)` (HUD attrs 4/5/6). Fixed-torso BLH: centred (authentic static). diff --git a/game/reconstructed/btl4vid.cpp b/game/reconstructed/btl4vid.cpp index 7453414..6413431 100644 --- a/game/reconstructed/btl4vid.cpp +++ b/game/reconstructed/btl4vid.cpp @@ -1545,6 +1545,11 @@ BTReticleRenderable *BTBuildReticle(Entity *mech) RGBColor pc = wp->PipColor(); float r = (float)pc.Red, g = (float)pc.Green, b = (float)pc.Blue; if (r < 0.0f || g < 0.0f || b < 0.0f) { r = 0.78f; g = 0.08f; b = 0.02f; } + DEBUG_STREAM << "[hud] pip: classID=" << (int)ws->GetClassID() + << " pos=" << wp->PipPosition() + << " range=" << wp->WeaponRange() + << " ext=" << wp->PipExtendedRange() + << " rgb=(" << r << "," << g << "," << b << ")\n" << std::flush; gBTReticle->AddWeapon( wp->WeaponRange(), wp->PipPosition(), diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index 2734e82..783dc55 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -538,7 +538,8 @@ extern BTDriveInput gBTDrive; static const Scalar kDriveMaxSpeed = 30.0f; // full-throttle forward speed static const Scalar kDriveTurnRate = 1.2f; // full-deflection yaw rate // (kWeaponRange removed: the damage gate now reads the AUTHENTIC per-weapon -// targetWithinRange -- effectiveRange @0x328 = (1-damage) x authored 500 m.) +// targetWithinRange -- effectiveRange @0x328 = (1-damage) x the authored +// WeaponRange: BLH lasers 500 / missiles 800 / PPCs 900 m.) // Single local-player drive state (bring-up). static Scalar gDriveHeading = 0.0f; // yaw about world up (Y) @@ -2528,7 +2529,8 @@ void // THE AUTHENTIC RANGE GATE (FireWeapon @004bace8 :7758 [T1]): damage // applies when dist <= the weapon's EFFECTIVE range = (1 - host-zone - // damage) x its AUTHORED WeaponRange (BLH lasers/PPCs: 500 m) -- the + // damage) x its AUTHORED WeaponRange (BLH: lasers 500, missiles 800, + // PPCs 900 m -- the [hud] pip dump) -- the // per-weapon targetWithinRange flag UpdateTargeting computes each // frame. Any live weapon within reach lands the aggregate shot. // (Replaces the old kWeaponRange=100 bring-up constant, which