Auto-target fire model: firing needs a target, NOT a manual lock/pinpoint (task #40)
Colleague: you fire without a lock, at "nothing." Double-checked the binary: - The weapon fire path is DOUBLY gated on mech+0x388 != 0: EmitterSimulation (FUN_004baa88:7689) only calls FireWeapon with a target, and FireWeapon (FUN_004bace8:7727) wraps its whole body -- including beamFlag(+0x46c)=1 -- in the same check. So no target => no beam, literally (cannot fire into truly empty space). [T1] - BUT a capstone scan of the entire CODE section finds 11 READS of +0x388 and ZERO direct stores: the target is written INDIRECTLY (a message/selector), i.e. AUTO-acquired -- there is no manual lock to fire. The spinning-ring LOCK (HudSimulation 5619-5634) is a separate, stricter state. So the colleague is right that no lock is needed; my port was wrong to gate firing on a pinpoint boresight-on-hull pick. Fix: mech+0x388 = the enemy whenever it is ALIVE (auto-target); firing needs only that. A pinpoint hull hit upgrades the shot to aimed-zone damage + the lock ring; off-hull with the enemy present, the beam converges on centre mass (body hits). Third correction from over-reading the RP-shared Reticle struct (after sticky-lock and mouse-cursor). Verified: BT_AIM="0.5 0.2" (off-hull) -> fires + lands damage (was 0 before); BT_AIM="0 0" (centred) -> HOT-aimed zone hits. KB swept; checkctx CLEAN. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
a8a56c57c9
commit
60ed54e008
@@ -55,9 +55,12 @@ authentic path scoped.
|
||||
pick-ray chain is LIVE (see [[combat-damage]] Targeting for the full port map): the crosshair =
|
||||
**torso boresight** (NO free-aim mouse — the pod stick twisted the torso; you steer to aim) →
|
||||
pick ray → per-frame lock (boresight ON the mech = locked; off = none) → aimed zone damage +
|
||||
designator hotbox; `BT_FIRE_ARC` is opt-in-only now. Residue: (a) the binary's own per-frame
|
||||
reticle→mech copy is still in an un-exported gap (our writer follows RETICLE.h + the
|
||||
HudSimulation pose derivation [T3 dynamics]); (b) our cockpit view is body-mounted, so on a
|
||||
designator hotbox; `BT_FIRE_ARC` is opt-in-only now. Firing needs a target but NOT a manual
|
||||
lock/pinpoint — the target is AUTO-acquired (task #40, binary-verified: FireWeapon doubly-gated
|
||||
on mech+0x388, but 0x388 has 11 reads / 0 direct stores across CODE → set indirectly). Residue:
|
||||
(a) the binary's own per-frame reticle→mech copy + the AUTO-TARGET SELECTOR are still in an
|
||||
un-exported gap (a message/selector; our port auto-targets the single living enemy — for MP,
|
||||
reconstruct the real multi-target selection: nearest/most-aligned/cycle); (b) our cockpit view is body-mounted, so on a
|
||||
TWIST-CAPABLE mech the crosshair should deflect with the torso twist (`BTTwistToReticleX` is
|
||||
wired for it) AND the torso should visibly lead the legs — verify on a twist mech when one is
|
||||
in play (the BLH is fixed-torso, boresight always centred); (c) pre-burial, the pick still
|
||||
|
||||
Reference in New Issue
Block a user