Combat: THE AUTHENTIC DAMAGE ECONOMY -- authored per-weapon amounts through the real fire chain (task #8)
Three root causes, all fixed: 1. kDamageScale was 1.0 -- _DAT_004bafbc is an x87 float80 = 1e-7, cancelling the ctor's x1e7: damagePortion = authored DamageAmount x (charge/seekV)^2 (closed form at fire time; madcat AC=25/LRM=50/ERLL=6, bhk1 PPC=12/SRM=35). The observed "0.25" was the degenerate EC=1 fallback, never authored data. 2. CheckFireEdge NaN latch: TriggerState carries ControlsButton INTS; the release value (-65) is a negative NaN. The binary's x87 unordered compare read it as "released"; IEEE-correct float compares latched the edge detector shut after the first release -- the reason the emitter discharge chain NEVER fired in-game. Fixed with bit-pattern sign compares. 3. The weapon-side submission LIVE: Emitter::FireWeapon fills damageData (amount + damageForce=target-muzzle [the gyro directional-bounce feed] + impact) -> MechWeapon::SendDamageMessage (@004b9728 real body) -> messmgr consolidation with per-weapon records + explosion bundling. The mech4 bring-up damage block + flat kShotDamage retired to diag hooks. Bonus: LODReuseHysteresis 0.82 -> 0.33 (double misread). Zone model verified byte-exact (no change). Solo end-to-end: 5-record volleys (2 PPC + 3 ERML with authored amounts), per-weapon zone granularity, explosions, kill. Heat stays bring-up scale pending the heat-calibration audit [T3]. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
77190c93e5
commit
fd055281a8
@@ -131,8 +131,9 @@ authentic path scoped.
|
||||
the binary's; full binary attr-table dump in the task #5 scan) + an input feed. Keyboard now
|
||||
pushes press/release edges into the buttonGroups (SPACE→Trigger, '2'→ThumbLow, '3'/CTRL→
|
||||
ThumbHigh; BT_AUTOFIRE pulses the Trigger); the gBT*Trigger bypasses + pulse hack are retired.
|
||||
VERIFIED 2-node: full kill through the authentic chain (12 hits vs ~36 pre-groups = the
|
||||
4-weapon trigger volley + crit cascade). **Remaining (the config-mode session):** handlers
|
||||
VERIFIED 2-node at the BINDING level (⚠ honest correction, task #8: those kills still flowed
|
||||
through the retired mech4 bring-up block -- the emitter DISCHARGE chain was latched shut by
|
||||
the NaN edge bug below until 2026-07-11; the full weapon-fire chain is now verified solo). **Remaining (the config-mode session):** handlers
|
||||
id 9/10 (@4b9550/@4b95b8 — corrected: they were mislabeled as Myomers fns), the L4 mapper
|
||||
Enter/ExitConfiguration completion (StartMappableButtonsConfigure + mode 0x8000), the
|
||||
ConfigMapGauge unguard — the pod's in-cockpit REGROUPING UI (pilot heat-management choice);
|
||||
@@ -144,6 +145,26 @@ authentic path scoped.
|
||||
into the LIVE JointedMover (must be reconciled with the gait cutover first).
|
||||
- **SeekVoltageGraph** — 4 Seek* attrs unpublished (a cluster-child, not config-called; non-blocking).
|
||||
|
||||
- **✅ DAMAGE ECONOMY — AUTHENTIC (task #8, 2026-07-11) [T1/T2].** The whole economy closes:
|
||||
`_DAT_004bafbc` is an x87 float80 = **1e-7** (the port's kDamageScale=1.0 was the mystery) --
|
||||
it cancels the ctor's ×1e7 energy bookkeeping, so **damagePortion = authored DamageAmount ×
|
||||
(charge/seekV[rec])²** (port: the closed form at fire time; the bring-up charge cycle keeps
|
||||
the degenerate EC=1 electrical model). Authored values (BTL4.RES type-0x11, +0x19C; scanner
|
||||
scratchpad/scan_weapsub.py): madcat AC=25/LRM15 salvo=50/ERLL=6/ERSL=2; bhk1 PPC=12/SRM6=35/
|
||||
ERML=3.5. Zone model already byte-exact (Δlevel = amount/armorPoints, legs ×0.5; armor dump
|
||||
in the task #8 synthesis) → the pod's 4-8-hit heavy-weapon pacing. The weapon-side
|
||||
SendDamageMessage (@004b9728) is LIVE from Emitter::FireWeapon (damageData filled incl.
|
||||
**damageForce = target−muzzle → the gyro's directional hit-bounce feed**); the mech4
|
||||
bring-up damage block + flat kShotDamage are retired to diag hooks. **ROOT-CAUSE find: the
|
||||
CheckFireEdge NaN latch** -- TriggerState carries ControlsButton INTS (release −65 = a
|
||||
negative NaN); the binary's x87 unordered-compare treated it as "released" but an
|
||||
IEEE-correct float compare latched the detector shut after the first release (why the
|
||||
emitters never discharged in-game until now); fixed with bit-pattern sign compares
|
||||
(@004b9608). Residues [T3]: heat stays on the bring-up scale (authentic = heatCost×1e7
|
||||
energy units, the missile path already feeds it -- the HEAT-CALIBRATION audit);
|
||||
LODReuseHysteresis corrected 0.82→0.33 (a double); the MP beam-kill live-verify awaits a
|
||||
clear-sightline spawn (mechanism identical to solo; force-dmg cross-pod cycles verified).
|
||||
|
||||
## Locomotion / combat polish (non-gating)
|
||||
- Authentic per-mech TURN-RATE constant (currently a bring-up constant rate).
|
||||
- Body-callback gimp handlers (states 16-19, targets 0x70b2/0x7161 undecoded → fall back to stand);
|
||||
|
||||
Reference in New Issue
Block a user