weapons physics audit (7-agent, all classes): docs/WEAPONS_FIELD_GUIDE.txt (tester-facing per-weapon review doc for the playtest group) + docs/WEAPONS_DRIFT_AUDIT.md (engineering drift table with addresses/tiers). Headline corrections the audit itself produced: (1) GAUSS RETRACTION -- the fielded GAUSS record is classID 0xBCD ProjectileWeapon (BTL4.RES @0xf16e6 raw bytes), full AC hitscan WITH damage; GaussRifle 0xBCE + shell 0xBD1 are dead code BOTH sides (zero shipped records; content census 78x0xBC8/16x0xBCD/30x0xBD0/14x0xBD4); the 'port Gauss damage is an invention' claim retracted in KB + ticket. (2) effectiveRange K byte-confirmed 1.0f @004b9c98. (3) PPC EnergyDamage victim-side GAUGE SCRAMBLE rider identified (@004a0230 -> gauge renderer) -- unimplemented in port, and it is exactly what Cyd's held ppc-sync-distortion branch implements: that branch is an AUTHENTIC-feature candidate, not an invention. (4) AC tracer TOF constants recovered (2.0f @0x4bc678, 1/9.8 x87 EXTENDED @0x4bc67c) -- port's 1.0 stand-ins closable. (5) missiles verified FAITHFUL end-to-end (382-impact corpus matches the salvo roll). Era questions consolidated in the guide; #21 overcharge-brick rescue documented as the one deliberate energy deviation
This commit is contained in:
@@ -210,7 +210,9 @@ DEVIATION, not arcade behavior; "a locked AC could not miss a mover" IS the arca
|
||||
(#168's "stale-point auto-hit" kill removed an authentic design while fixing its stale-point
|
||||
detail). Missiles: genuinely flying + seeker-led (the machine leads for the player), 4.0u
|
||||
proximity fuze, swept contact, salvo randomization — the #168 flight direction stands THERE.
|
||||
Gauss: NO damage in the shipped binary (charge dump only; port damage is an invention).
|
||||
Gauss CORRECTED (2026-08-13 audit): the FIELDED Gauss record is CLASS 0xBCD (ProjectileWeapon)
|
||||
— full AC hitscan WITH damage; port agrees. GaussRifle 0xBCE = dead code both sides (zero
|
||||
shipped records). The earlier no-damage claim was class-level truth mis-applied to the field.
|
||||
#112 (AFC multi-zone shotgun) is the port's per-round scatter vs the binary's one batched
|
||||
message. Full chain + evidence: [[decomp-reference]] §5 (corrected); port fix pending the
|
||||
#171 group decision (Oracle's HOLD).
|
||||
|
||||
@@ -264,8 +264,12 @@ From the weapon `.SUB` records + the charge-curve `.data` constants (PE-parsed a
|
||||
Out of range = batch silently discarded (tracer still renders). The visible AC round is the
|
||||
0xBCD renderer TRACER (tracerModel+0x41C, TOF @004bc06c) — cosmetic. MissileLauncher
|
||||
@004bcc60 (no fire-time damage, no range read) is the genuinely-flying family.
|
||||
**Gauss @004bdca4 deals NO damage in the shipped binary** (charge dump only — projectile
|
||||
launch designed, never implemented; port damage is an invention pending the #171 decision).
|
||||
**GAUSS CORRECTED (weapons audit 2026-08-13): the FIELDED Gauss is a 0xBCD ProjectileWeapon
|
||||
record** (BTL4.RES @0xf16e6, bytes cd0b verified raw — 20 pts Ballistic, 900 range, 8s cycle,
|
||||
16 rounds, yellow pip) — it runs the FULL AC hitscan chain WITH damage; port and binary agree.
|
||||
The GaussRifle class 0xBCE (@004bdca4 charge-dump-only FireWeapon) + shell 0xBD1 are real code
|
||||
with ZERO shipped content records — dead on both sides. (The earlier "port Gauss damage is an
|
||||
invention" claim was wrong at the fielded level and is retracted.)
|
||||
**Every FireWeapon (all classes) requires a LOCKED target**: both sims gate the trigger on
|
||||
*(mech+0x388) != 0 — no lock, no fire [T1].
|
||||
- **Plain Projectile (shell) class 0xBD1 is DEAD CODE in the shipped binary**: 0xbd1 appears
|
||||
|
||||
@@ -0,0 +1,384 @@
|
||||
# Weapons Drift Audit — binary vs port, per weapon lane (2026-08-13)
|
||||
|
||||
**What this is:** the AI-facing ledger of the per-weapon-class physics audit
|
||||
(the #171 batch + this session's raw-byte verifications). The tester-facing
|
||||
twin is `docs/WEAPONS_FIELD_GUIDE.txt` — keep the two in sync; the field
|
||||
guide translates every address below into behavior and carries the era
|
||||
questions to the group.
|
||||
|
||||
**Evidence tiers:** T1 = decomp/raw-byte verified · T2 = runtime receipts ·
|
||||
T3 = port approximation · T4 = guess. Addresses are `@ADDR` in the rebuilt
|
||||
2026-08-06 export (`reference/decomp/all/part_*.c`).
|
||||
|
||||
**HOLD notice:** corrections in the "Corrections owed" section are HELD for
|
||||
the #171 group decision per Oracle's HOLD — do not sweep them into the KB or
|
||||
the queued ticket comment until the group signs off.
|
||||
|
||||
---
|
||||
|
||||
## Verdict summary
|
||||
|
||||
| # | Lane | Verdict |
|
||||
|---|------|---------|
|
||||
| 1 | Lasers (Emitter 0xBC8, 6 marks) | FAITHFUL |
|
||||
| 2 | PPC/ERPPC fire chain (0xBD4) | FAITHFUL |
|
||||
| 3 | PPC rider (a) victim display scramble | KNOWN-DIVERGENCE [T3] (unimplemented; visual OPEN) |
|
||||
| 4 | PPC rider (b) victim generator short | FAITHFUL (tag-label scope OPEN) |
|
||||
| 5 | Seek-voltage gears + #21 overcharge brick | KNOWN-DIVERGENCE (deliberate rescue) |
|
||||
| 6 | Autocannons AFC25/50/100 (0xBCD) | FIXED-THIS-BUILD (#171; T2 field receipts pending) |
|
||||
| 7 | AC cosmetic tracer visual | KNOWN-DIVERGENCE [T3] (cosmetic; constants recovered — close) |
|
||||
| 8 | GAUSS (fielded, 0xBCD record) | FAITHFUL (correction sweep owed, HELD) |
|
||||
| 9 | GaussRifle class 0xBCE (+ shell 0xBD1) | FAITHFUL (dead code both sides) |
|
||||
| 10 | MissileLauncher core (0xBD0, all racks) | FAITHFUL |
|
||||
| 11 | Missile presentation (salvo visuals/gains) | KNOWN-DIVERGENCE [T3] (presentation-only) |
|
||||
| 12 | Missile bystander sweep | KNOWN-DIVERGENCE [T3] (largest remaining gap) |
|
||||
| 13 | Missile splash (@0042fad0) | FAITHFUL under stock content (gate wiring [T3] on custom eggs) |
|
||||
| 14 | LRM flight + loft | FAITHFUL |
|
||||
| 15 | Streak racks (strk model) | FAITHFUL |
|
||||
| 16 | NRK5 / nrk-fed racks | FAITHFUL (KB model-table wording sweep owed) |
|
||||
| 17 | Shared reload/ammo/eject chain | FAITHFUL |
|
||||
| 18 | Jam roll | KNOWN-DIVERGENCE [T3] (extra gate — remove) |
|
||||
| 19 | Incoming-missile warning | OPEN (consumer unlocated; era testimony wanted) |
|
||||
|
||||
---
|
||||
|
||||
## Per-lane entries
|
||||
|
||||
### 1. Lasers — Emitter 0xBC8 (SLaser/ERSLaser/MLaser/ERMLaser/LLaser/ERLLaser)
|
||||
One C++ class, data-differentiated; **no pulse variants exist** in shipped
|
||||
content.
|
||||
- **Binary [T1]:** trigger-time hitscan beam @004bace8: charge-gear state
|
||||
machine (4 states, no jam/ammo), lock required (`*(mech+0x388)!=0`),
|
||||
viewFireEnable look-direction arming, `dist<=effectiveRange` gate AT FIRE.
|
||||
K byte-confirmed **1.0f @004b9c98** → effRange = (1.0 − zoneDamage) ×
|
||||
WeaponRange. Damage = authored × (charge/seekV)². ONE aimed single-panel
|
||||
message. Out-of-range: beam draws, damage silently discarded. 0.2s
|
||||
target-tracking afterglow. Hard heat-FAILURE stop (no gradual
|
||||
degradation). Heat/gear-toggle vet-expert only.
|
||||
- **Port [T2]:** `emitter.cpp` live-verified same machine end-to-end; 60Hz
|
||||
sub-stepped Loading tick (±1% snap-window robustness, port mechanism);
|
||||
beam from real `ermlaser.bgf` tube via `BTPushBeamKind` ([T3] dpl layer
|
||||
unported, #164 stuck-beam guards).
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 2. PPC / ERPPC — 0xBD4 fire chain
|
||||
- **Binary [T1]:** one-line tail-call into `Emitter::FireWeapon`
|
||||
(@004bb878); vtable/ctor/CSS otherwise identical — everything distinctive
|
||||
is authored data (EnergyDamage(4), 12/16 pts, 900/950 range, 5.0s
|
||||
recharge, blue pip).
|
||||
- **Port [T2]:** same tail-call structure; full charge = authored 12/16
|
||||
verified live; blue beam under its own renderer case.
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 3. PPC EnergyDamage rider (a): victim display scramble
|
||||
- **Binary [T1 call, T4 visual]:** @004a0230 (~0x4a03f3): damageType==4 →
|
||||
no-arg virtual on app-global +0x4c — identified via the port's own app
|
||||
decode as THE GAUGE RENDERER (`DAT_004efc94+0x4c` = GetGaugeRenderer,
|
||||
`btl4mppr.cpp:249`, cf. `btl4galm.cpp:404`) — a cockpit gauge/MFD scramble
|
||||
per Energy hit. Exact visual/duration unread (which vtable slot +0x4c does
|
||||
visually: OPEN).
|
||||
- **Port:** NOT implemented — grep of the port `TakeDamageMessageHandler`
|
||||
body finds no damageType==4 gauge call. Candidate for the #156/
|
||||
weapon-state polish list.
|
||||
- **Verdict:** KNOWN-DIVERGENCE [T3] (unimplemented rider; visual detail
|
||||
OPEN — era testimony wanted BEFORE building; question shipped in the
|
||||
field guide).
|
||||
|
||||
### 4. PPC EnergyDamage rider (b): victim generator short
|
||||
- **Binary [T1]:** @0049c690: damageType==4 + critical subsystems in struck
|
||||
zone → one random critical rolls `ForceShortRecovery` @004b11bc
|
||||
(brownout, charge stall, cockpit electronics dip). Tag 0x50f4bc
|
||||
Generator-vs-PoweredSubsystem label conflict still open.
|
||||
- **Port [T2]:** implemented — `mechdmg.cpp:471-477` (damageType==4 &&
|
||||
criticalSubsystemCount>0 → ForceShortRecovery).
|
||||
- **Verdict:** FAITHFUL (tag-label scope OPEN). NOTE: the two riders'
|
||||
port status differs — never lump them in vet-facing docs.
|
||||
|
||||
### 5. Seek-voltage gears + #21 overcharge brick (all energy weapons)
|
||||
- **Binary [T1]:** `ToggleSeekVoltage` @004ba478 (vet/expert only): wrap
|
||||
from gear 4→1 skips `ResetFiringState` → charge above snap window →
|
||||
`ComputeOutputVoltage` overcharge reads ZERO → weapon PERMANENTLY
|
||||
BRICKED. The arcade shipped this latent brick.
|
||||
- **Port [T3 deliberate, documented]:** overcharge counts as Loaded (issue
|
||||
#21, 38 benched rescues) — the port's ONE deliberate energy-lane
|
||||
divergence; lives in the deviations appendix.
|
||||
- **Verdict:** KNOWN-DIVERGENCE (deliberate rescue of a shipped latent
|
||||
brick).
|
||||
|
||||
### 6. Autocannons — AFC25/50/100 (ProjectileWeapon 0xBCD)
|
||||
- **Binary [T1]:** trigger-time hitscan @004bc104: lock required, batched
|
||||
per TracerInterval (all authored 1), fire-time `dist<=live
|
||||
effectiveRange` gate, ONE single-panel Ballistic message to the locked
|
||||
target, out-of-range batch silently discarded (round consumed, tracer
|
||||
flies), gyro recoil kick dmg/16 dir (0, 0.6, −1.5) (constants
|
||||
3.0f/0.0625 byte-confirmed), jam p=0.41·T/Tfail clamped [0.05,1.0]
|
||||
vet/expert-only, EJECT tap=one round / hold 3.0s=dump bay, shell 0xBD1
|
||||
dead code.
|
||||
- **Port [T2 bench]:** `projweap.cpp` at bbb3b4e implements the hitscan
|
||||
line-by-line (13-round batch + DET dmg=0 receipts); closes #112
|
||||
single-panel and the #168 mis-fix. Field verify armed for Friday (local
|
||||
rig can't form avatar locks).
|
||||
- **Verdict:** FIXED-THIS-BUILD (#171 batch; T2 field receipts pending
|
||||
Friday). The field guide carries the #27 "rounds can genuinely miss"
|
||||
RETRACTION.
|
||||
|
||||
### 7. AC cosmetic tracer visual
|
||||
- **Binary [T1 weapon-side, T4 renderer-side]:** `launchVelocity.z =
|
||||
−effRange/sqrt(2.0·(1/9.8)·muzzleHeight)` — both constants BYTE-CONFIRMED
|
||||
this audit: @0x4bc678 = 2.0f (float32); @0x4bc67c = 1/9.8 stored as an
|
||||
**80-bit x87 EXTENDED** (bytes `8a 6c 37 99 43 c6 fa d0 fb 3f` — does NOT
|
||||
decode as float32, likely why it stayed "unresolved") → ~1s to cross full
|
||||
range for a ~5u muzzle. Drawn by the unported 'Tracer' dpl renderable;
|
||||
renderer feed unrecovered.
|
||||
- **Port [T3]:** `projweap.cpp` still ships 1.0f stand-ins for both
|
||||
constants (marked 'unresolved' — now false) and drops the muzzleHeight
|
||||
term: tracer speed = effRange/1.0. Numerically close for ~5u muzzles by
|
||||
accident.
|
||||
- **Verdict:** KNOWN-DIVERGENCE [T3] (cosmetic-only; constants recovered —
|
||||
CLOSE IT next build; stale 'unresolved' comments must go in the same
|
||||
change).
|
||||
|
||||
### 8. GAUSS — the fielded weapon (lok2 'GAUSS' record)
|
||||
- **Binary [T1 raw bytes]:** BTL4.RES @0xf16e6: classID **0xBCD
|
||||
ProjectileWeapon** (bytes `cd 0b` / `d0 01` size 0x1D0, verified this
|
||||
session) — the pod's Gauss ran the FULL AC hitscan chain WITH damage:
|
||||
20 pts Ballistic single-panel out to 900, 8s cycle, 16 rounds
|
||||
(AmmoBinGAUSS 0xBCB), near-cold (1e6 heat), yellow pip, 1.25 gyro kick.
|
||||
Class histogram across all 18 streams: 78×0xBC8 / 16×0xBCD / 30×0xBD0 /
|
||||
14×0xBD4, **ZERO 0xBCE**.
|
||||
- **Port [T1]:** factory dispatches 0xBCD →
|
||||
`CreateProjectileWeaponSubsystem` (`mech.cpp:1939-1942`) — the port's
|
||||
fielded GAUSS ALSO deals AC-hitscan damage. The "port damage is an
|
||||
invention" framing (commit 80037a7, queued #171 comment, projweap
|
||||
banner) is WRONG at the fielded level — port and binary agree.
|
||||
- **Verdict:** FAITHFUL (mechanics match). Correction sweep owed — HELD
|
||||
(see below). Era question reframed and shipped in the field guide
|
||||
(headline). Chassis attribution (lok2 vs the weapsub scan's nearest-name
|
||||
'blh') rides the flagged heuristic — the field guide asks the vets which
|
||||
mech carried it rather than asserting.
|
||||
|
||||
### 9. GaussRifle class 0xBCE (+ shell 0xBD1)
|
||||
- **Binary [T1]:** real code, dead content: `FireWeapon` @004bdca4 = one
|
||||
store (charge=0), no damage/beam/heat; zero shipped records instantiate
|
||||
it. Shell 0xBD1 `Make` @004be384 has zero callers; flight body
|
||||
unreachable.
|
||||
- **Port [T1]:** same classes exist (GAUSS.CPP shipped source), same
|
||||
factory case, never constructed by shipped content; equally dead.
|
||||
- **Verdict:** FAITHFUL (dead code both sides). The CLASS-level "@004bdca4
|
||||
is a no-op" claim stands even after the fielded-Gauss correction.
|
||||
|
||||
### 10. Missile family core — MissileLauncher 0xBD0 (SRM/LRM/Streak/NRK)
|
||||
One class, data-differentiated.
|
||||
- **Binary [T1]:** genuinely flying, the ONE ungated family: lock-to-fire
|
||||
via the shared Loaded case (no dumb-fire trigger path, no Streak-special
|
||||
code), one entity per salvo, per-missile dmg = authored/count, seeker
|
||||
homes on the fire-time picked panel point with constant-bearing lead,
|
||||
4.0u fuze + swept contact (bystanders hittable), lock-drop on target
|
||||
death (@0049fb54 movementMode 2||9), WeaponRange is fire-control display
|
||||
only — reach is physics (burn + 10.0s coast, y<−1.0 kill plane, expiry
|
||||
fizzles), impact cluster roll `min(Random(n)+n/4, n)` then zone −1
|
||||
lottery with per-burst re-roll on the victim.
|
||||
- **Port [T2]:** full chain live-verified (382-impact night-9 corpus
|
||||
matches the roll exactly; Streak 277 u/s; fuze/lock-drop benched);
|
||||
direct Dispatch instead of the SubsystemMessageManager (deliberate,
|
||||
preserves burstCount, #95).
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 11. Missile presentation (salvo visuals + steering gains)
|
||||
- **Binary [T1]:** ONE Missile entity per salvo (single spawn call
|
||||
@004bcc60 — the pod drew one flying round + one explosion); body-turn
|
||||
slerp at authored MaxThrusterRotationRate; velocity slaved to nose while
|
||||
burning.
|
||||
- **Port [T3]:** N-round visual ripple (lead round carries damage; N−1
|
||||
damage-0 tracers), ±2.5° deterministic tube spread, steering gains
|
||||
4.0/8.0 port-tuned (the old 'MissileTurnGain=4.0' attribution was the
|
||||
proximity fuze), muzzle safety clamp.
|
||||
- **Verdict:** KNOWN-DIVERGENCE [T3] (presentation-only; damage economy
|
||||
identical).
|
||||
|
||||
### 12. Missile bystander sweep
|
||||
- **Binary [T1]:** FUN_0042291c swept real world geometry including movers
|
||||
each tick — a third mech in the flight path could be struck by someone
|
||||
else's missile.
|
||||
- **Port [T3]:** pool rounds contact only the locked target + terrain; a
|
||||
mech between shooter and target is flown through (splash alone can touch
|
||||
bystanders).
|
||||
- **Verdict:** KNOWN-DIVERGENCE [T3] — largest remaining missile-physics
|
||||
gap. Field-guide watch item for Friday ("hit by missiles aimed at
|
||||
someone else" beyond splash range).
|
||||
|
||||
### 13. Missile splash — Explosion::SplashDamage @0042fad0
|
||||
- **Binary [T1]:** gated on the FIRING player's advancedDamage (+0x264;
|
||||
every stock egg stamps 1 → splash WAS live on the pods), radius 30
|
||||
authored on all missiles, baseBurst = FULL rack count (post-roll restore
|
||||
@part_013.c:18283-18284, read + confirmed this session), falloff bursts
|
||||
= round(base/dist^1.25) floored 1 (1.25 = shipped double; divide
|
||||
grounded in T0 EXPLODE.cpp), excludes the explosion + direct victim;
|
||||
shooter self-exclusion **unprovable from the export**.
|
||||
- **Port [T2 mechanics / T3 gate]:** same math, full-count baseBurst (now
|
||||
[T1]-pinned correct), excludes shooter + direct victim; enable =
|
||||
SplashRadius>0 instead of the advancedDamage gate — coincides under all
|
||||
shipped eggs, diverges only on custom eggs.
|
||||
- **Verdict:** FAITHFUL under stock content (gate wiring KNOWN-DIVERGENCE
|
||||
[T3] on custom eggs — site option; shooter self-splash OPEN — era
|
||||
question shipped).
|
||||
|
||||
### 14. LRM family flight (lrm model) + loft
|
||||
- **Binary [T1]:** lrm rid=319: turn 60°/s, burn 10s @ 300 u/s², climb 50,
|
||||
splash 30 — climb>threshold triggers the seeker loft (aim.y +=
|
||||
0.1×min(range−200, 300), up to +30u): the signature climb-then-plunge
|
||||
arc; soft 30 u/s eject, some mounts +5 up-tilted.
|
||||
- **Port [T2]:** #84 fixed the thrust resolution (pre-fix 10× slow WAS the
|
||||
'missiles are slow' field report); loft constants exact
|
||||
(@004bec18/24/28).
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 15. Streak racks (strk model — 'SRM6' bins on at least one chassis)
|
||||
- **Binary [T1]:** strk rid=323: turn 360°/s (3× SRM — 6× the lrm), burn
|
||||
3s @ 300, climb 0 — the round that out-turns evasion. NO Streak class or
|
||||
special lock code exists; the ammo model alone is the identity.
|
||||
- **Port [T2]:** same records resolved; 277 u/s impact speed verified
|
||||
live.
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 16. NRK5 'Narc' + every nrk-fed rack
|
||||
Several 'LRM5/10/15' bins author nrk ammo.
|
||||
- **Binary [T1]:** no beacon mechanism exists anywhere in the binary
|
||||
(single launcher class, no beacon input on the seeker). nrk rid=327
|
||||
byte-dumped this session: turn 360°/s, burn 10s @ 300, **CLIMB 50**,
|
||||
splash 30 — the shipped NRK5 is a light LRM-profile rack WITH
|
||||
Streak-grade tracking AND the loft (missileB's 'no loft' corrected;
|
||||
dataA right). Field-visible agility difference between visually
|
||||
identical 'LRM' racks is authentic.
|
||||
- **Port [T2]:** same data-driven resolution; nothing Narc-special to
|
||||
port.
|
||||
- **Verdict:** FAITHFUL (KB model-table wording needs the nrk climb/turn
|
||||
correction — sweep owed).
|
||||
|
||||
### 17. Shared reload/ammo/eject chain (0xBCD + 0xBD0)
|
||||
- **Binary [T1]:** recoil countdown only while generator route powered,
|
||||
heat-scaled (hot generator reloads slower), MinVolt% 0.3 freeze; EJECT
|
||||
(@004bb9b8, read this session): TAP = one round out + weaponAlarm→3
|
||||
Loading UNCONDITIONALLY if rounds remain — the in-mission UNJAM (clears
|
||||
Jammed(5)); HOLD 3.0s = DumpAmmo whole bay → NoAmmo(7) roach motel (only
|
||||
re-arm/respawn Reset clears); novice locked out of eject.
|
||||
- **Port [T2]:** same machine (`projweap.cpp:751-968`); tap-unjam
|
||||
semantics match (the #166 advice rides on it).
|
||||
- **Verdict:** FAITHFUL.
|
||||
|
||||
### 18. Jam roll (ballistic + missile racks)
|
||||
- **Binary [T1]:** @004bbfcc: rolled after each shot whenever simLive AND
|
||||
the weapon's own heatAlarm != 0; p = 0.41·T/Tfail (0.41 byte-confirmed)
|
||||
clamped [0.05, 1.0]. Practically vet/expert-only (std/novice heat model
|
||||
off → never heat-alarms).
|
||||
- **Port [T3 marked bring-up gate]:** rolls only at heatAlarm >=
|
||||
DegradationHeat (`projweap.cpp:692`) — added when temps were static;
|
||||
now that the heat economy is live it masks authentic warm-weapon jams.
|
||||
Binary rolls at ANY nonzero heat alarm.
|
||||
- **Verdict:** KNOWN-DIVERGENCE [T3] (minor; REMOVE the extra gate next
|
||||
build — announced in the field guide).
|
||||
|
||||
### 19. Incoming-missile warning
|
||||
- **Binary [T1 registration, T4 consumer]:** Missile ctor registers with a
|
||||
MECH target via a virtual on target+0x418; the consumer (threat lamp?
|
||||
beeper tempo?) is unlocated in the decomp.
|
||||
- **Port [T3]:** structurally dead: the authored beeper/tempo attributes
|
||||
latch (`mech4.cpp:8536`) but the only producer lives in the dormant
|
||||
Missile TU — the pool never reports; the beeper never fires (#83).
|
||||
- **Verdict:** OPEN (needs the consumer decomp + era testimony — question
|
||||
shipped in the field guide).
|
||||
|
||||
---
|
||||
|
||||
## Contradictions resolved this audit (evidence log)
|
||||
|
||||
1. **GAUSS (the headline):** BTL4.RES @0xf16e6 GAUSS record = classID
|
||||
0xBCD (bytes `cd 0b`, size 0x1D0); class histogram 78×0xBC8 / 16×0xBCD
|
||||
/ 30×0xBD0 / 14×0xBD4, zero 0xBCE; port factory 0xBCD →
|
||||
CreateProjectileWeaponSubsystem (`mech.cpp:1939-1942`). The fielded
|
||||
Gauss is FAITHFUL on both sides; the earlier "port damage is an
|
||||
invention" audit examined the content-dead 0xBCE class. CLASS-level
|
||||
claim (@004bdca4 no-op) stands.
|
||||
2. **K constant:** `_DAT_004b9c98` dumped: CODE file+0xb9a98 = `0000803f`
|
||||
= 1.0f. [T4] closed → [T1]; undamaged effRange = exactly authored
|
||||
WeaponRange; port's 1.0 (`mechweap.cpp:558`) correct.
|
||||
3. **AC launch-speed constants:** @0x4bc678 = 2.0f (float32); @0x4bc67c =
|
||||
0.10204081 = 1/9.8 as a 10-byte x87 EXTENDED (`8a6c379943c6fad0fb3f`) —
|
||||
not float32-decodable, hence the stale "unresolved". projweap.cpp 1.0f
|
||||
stand-ins + dropped muzzleHeight term now closable.
|
||||
4. **Jam recovery:** @004bb9b8 (part_013.c:15709-15723): eject RELEASE
|
||||
path calls FeedAmmo and unconditionally SetLevel(weaponAlarm, 3
|
||||
Loading) when rounds remain — a tap clears Jammed(5). missileB's "jam
|
||||
permanent until re-arm" refuted; in-sortie unjam = YES (novice locked
|
||||
out).
|
||||
5. **nrk flight model:** BTL4.RES type-15 rid=327: turn 360°/s, burn 10s,
|
||||
accel 300, climb 50, splash 30. dataA right; missileB's "no loft"
|
||||
corrected. KB sweep owed (combat-damage.md "LRM … the only climber").
|
||||
6. **SRM6 count-4 variant:** the record authors MissileCount=4, Damage=20
|
||||
→ 5.0/missile (dataA's 3.33 assumed count 6). ALL per-chassis
|
||||
attributions ride the nearest-name heuristic — re-verify against the
|
||||
egg/VehicleTable before any chassis-specific claim ships to the vets
|
||||
(the field guide deliberately names no chassis in Appendix A).
|
||||
7. **Splash baseBurst:** part_013.c:18271-18290: cluster roll stored to
|
||||
+0x338 for direct dispatch, then IF splash enabled the ORIGINAL full
|
||||
count is RESTORED (+0x338 = uVar3 at :18284) before SplashDamage — the
|
||||
port's full-missileCount baseBurst exactly faithful.
|
||||
8. **PPC display-scramble callee:** DAT_004efc94+0x4c = the GAUGE RENDERER
|
||||
(`btl4mppr.cpp:249`, `btl4galm.cpp:404`) — the Energy-hit rider is a
|
||||
gauge/MFD-side scramble virtual. Still open: what slot +0x4c does
|
||||
visually. Port does not implement the call; the generator-short rider
|
||||
IS ported — statuses differ.
|
||||
9. **SRM2 flight profile — UNRESOLVED:** dataA says the ava1 SRM2 bin
|
||||
feeds 'strk'; missileB groups SRM2 under 'srm'. The weapsub scan
|
||||
printed weapons only (no bin ammoModelFile column). Needs the bins
|
||||
pass before any SRM2 homing claim ships (field guide explicitly
|
||||
declines to state it).
|
||||
10. **@004bb9b8 relabel:** it is the EJECT handler, not fire-consume;
|
||||
FeedAmmo @004bd4f4 is the consume. Carry into any KB address table
|
||||
that copied the old tasking label.
|
||||
|
||||
---
|
||||
|
||||
## Corrections owed — HELD for the #171 group decision (Oracle HOLD)
|
||||
|
||||
- Commit 80037a7's "Gauss deals NO damage in the shipped binary / port
|
||||
damage is an invention" framing.
|
||||
- `scratchpad/night16/queued_171_comment.md` — Gauss section + the queued
|
||||
era question (the reframed question now lives in the field guide). The
|
||||
#112/#168 sections are correct as written.
|
||||
- `context/decomp-reference.md` §SS5 and `context/combat-damage.md` Gauss
|
||||
claims.
|
||||
- Any `projweap.cpp` / gauge banner repeating the no-damage framing.
|
||||
|
||||
## Stale banners confirmed present (sweep with the next projweap change)
|
||||
|
||||
- `projweap.cpp:990` still reads "the #168 flight-contact model" above the
|
||||
implemented hitscan body — same failure genus as the stale banner that
|
||||
caused #168 (gotcha: verify banners when the body changes).
|
||||
- The "unresolved" comments on `_DAT_004bc678`/`67c` are now false
|
||||
(constants byte-confirmed, see entry 7).
|
||||
|
||||
## Actionable closures queued (next build)
|
||||
|
||||
1. AC tracer launch speed: land 2.0f + 1/9.8 + the muzzleHeight term in
|
||||
`projweap.cpp`; delete the stale comments and the :990 banner. Cosmetic;
|
||||
era question 14 (round pace) tunes the final feel.
|
||||
2. Jam roll: remove the `heatAlarm >= DegradationHeat` gate
|
||||
(`projweap.cpp:692`) — binary rolls at any nonzero heat alarm.
|
||||
Announced to the vets in the field guide §9.
|
||||
3. PPC gauge-scramble rider: BLOCKED on era testimony (field guide §3) —
|
||||
build the visual only after the group answers.
|
||||
4. Missile bystander sweep: design exists; field guide §6 arms the Friday
|
||||
watch item.
|
||||
|
||||
## Era questions shipped to the vets
|
||||
|
||||
The 14 questions live in `docs/WEAPONS_FIELD_GUIDE.txt`, distributed into
|
||||
the per-section "WE NEED YOUR MEMORY" blocks: Gauss killed + carrier
|
||||
chassis (headline, §5); PPC hit visuals + generator short (§3); splash
|
||||
proximity + shooter self-splash (§7); ballistic recoil, AFC25 eaten
|
||||
trigger, out-of-range round fate, round pace (§4); vet-only jams +
|
||||
tap-eject unjam, NoAmmo latch with ammo remaining (§9); gear-wrap brick
|
||||
(§2); incoming-missile warning (§10); generator switching mid-charge,
|
||||
out-of-range beam (§1); rack-name quirks, homing agility + Narc-did-
|
||||
nothing (§8).
|
||||
@@ -0,0 +1,448 @@
|
||||
=============================================================================
|
||||
BT411 -- WEAPONS FIELD GUIDE: EVERY WEAPON, AS THE ORIGINAL BUILT IT
|
||||
Updated 2026-08-13 -- reconstruction review edition, for the whole group.
|
||||
=============================================================================
|
||||
WHAT THIS IS: we have now read the original machine's firing code for
|
||||
every weapon family and compared it, behavior by behavior, against what
|
||||
our port does. This document is the result. For each family you get:
|
||||
what the shipped machine really did, what our port does today, what
|
||||
changes in the next build, and -- where the code alone cannot settle
|
||||
it -- what we need from your memory.
|
||||
|
||||
HOW TO REVIEW: you flew the real pods; we only read their code. Read
|
||||
each section and mark anything that CONTRADICTS your memory of the
|
||||
machine -- and anything that confirms it. Silence is not confirmation:
|
||||
if a section simply matches what you remember, a one-word "matches" is
|
||||
genuinely useful data.
|
||||
|
||||
HOW TO REPLY: in the Discord weapons thread, one reply per section,
|
||||
starting with the section name in caps (e.g. "GAUSS:"). Then
|
||||
MATCHES / CONTRADICTS / CAN'T RECALL, then whatever detail you have.
|
||||
Which floor, which revision, which mech you flew -- machine-room
|
||||
details turn weak memories into strong evidence.
|
||||
|
||||
ONE RETRACTION UP FRONT: the last issues handout (#27) told you
|
||||
ballistic rounds could now "genuinely MISS a moving target". The
|
||||
deeper dig behind this document proved that framing wrong: the
|
||||
original decides a cannon hit AT THE TRIGGER, and the round you watch
|
||||
fly is a tracer drawn for show. We were wrong; details in the
|
||||
AUTOCANNONS section. Your review of that section is part of the
|
||||
group's sign-off on the correction.
|
||||
=============================================================================
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
1. LASERS -- SMALL / MEDIUM / LARGE, STANDARD AND ER
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- A charge-and-release energy weapon. No ammo, no jam. Six marks, one
|
||||
mechanism -- only the numbers differ (Appendix A). No pulse lasers
|
||||
exist anywhere in the shipped content.
|
||||
- Firing needs three things at the trigger: a LOCKED target, your
|
||||
view actually on the target (the weapon only arms while you are
|
||||
looking where it points), and the target inside effective range.
|
||||
- The beam is instant. The hit is decided the moment you fire -- no
|
||||
travel time, no leading. What you see is the discharge drawing
|
||||
itself, plus a 0.2-second afterglow that tracks the target.
|
||||
- Damage scales with the SQUARE of the charge: a full-charge shot
|
||||
does the listed number; a half-charge release does a quarter.
|
||||
- Out of range: the trigger works and the beam draws, but the damage
|
||||
is silently thrown away. No hit, no denied tone we can find.
|
||||
- Effective range shrinks in proportion to damage on the body zone
|
||||
carrying the weapon: a half-wrecked arm fires at half reach. An
|
||||
undamaged weapon reaches exactly its listed range -- confirmed
|
||||
down to the byte this week.
|
||||
- Overheat is a hard stop: a heat-failed laser quits outright. There
|
||||
is no gradual weakening on the way down.
|
||||
- Each hit lands on ONE panel of the target.
|
||||
|
||||
OUR PORT TODAY
|
||||
Same machine, verified live end to end. The beam is drawn from the
|
||||
real laser-tube art. Charge timing is smoothed for modern frame
|
||||
rates -- a robustness measure, not a behavior change. (The #164
|
||||
stuck-beam guards are already in.)
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
Nothing mechanical.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Firing past range: do you remember shots that visibly fired at a
|
||||
distant target and just did nothing? That is what the machine did.
|
||||
- Generator switching mid-charge: did switching or re-routing
|
||||
generators while a laser was charging COST you the in-flight
|
||||
charge (with an electrical alarm)? A yes pins down a control path
|
||||
we have not been able to identify from the code alone.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
2. THE CHARGE GEAR (ALL ENERGY WEAPONS) -- AND THE BRICK THE ARCADE SHIPPED
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
Veteran/expert pilots could cycle an energy weapon's charge gear
|
||||
(four settings). The machine shipped with a latent flaw: cycling
|
||||
PAST the top gear wrapped to the bottom without resetting the firing
|
||||
state. The stored charge now sat above the new gear's release
|
||||
window, the output read zero, and the weapon went permanently dark
|
||||
-- charged, lit, and unable to fire until re-arm. The arcade
|
||||
shipped this.
|
||||
|
||||
OUR PORT TODAY
|
||||
We deliberately rescue it: an overcharged weapon counts as loaded
|
||||
and fires (#21; 38 rescues proven on the bench). This is the port's
|
||||
ONE deliberate deviation in the energy lane, and it stays on the
|
||||
deviations list so nobody mistakes it for the original.
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
Nothing -- unless the group votes for the authentic brick.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Did cycling a laser's gear past the top setting ever leave the
|
||||
weapon DARK -- charged but refusing to fire until re-arm? If pods
|
||||
genuinely ate weapons this way, some of you will remember it.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
3. PPC AND ER PPC
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- The firing machine is literally the laser's -- the same code, the
|
||||
same rules (lock, look, range gate, square-law charge). Everything
|
||||
distinctive is the numbers: hardest energy hit (12; ER 16),
|
||||
longest energy reach (900 / 950), a slow 5-second recharge, and
|
||||
the only BLUE pip.
|
||||
- What makes a PPC special is what it does to the VICTIM. Energy
|
||||
hits -- and only energy hits -- carry two riders:
|
||||
(a) DISPLAY SCRAMBLE: every energy hit pokes the victim's cockpit
|
||||
display system once -- some kind of gauge/MFD disturbance per
|
||||
hit. What it looked like and how long it lasted is NOT
|
||||
recoverable from the code.
|
||||
(b) GENERATOR SHORT: if the struck zone holds critical equipment,
|
||||
one random critical component takes a forced short --
|
||||
generator brownout, charge stall, cockpit electronics dip.
|
||||
|
||||
OUR PORT TODAY
|
||||
The firing machine and the generator short are in and verified. The
|
||||
display scramble is NOT implemented -- right now your screens shrug
|
||||
off a PPC hit, and that is a known gap on the polish list.
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
Not yet. We will not invent the visual: the scramble gets built
|
||||
AFTER your testimony, not before.
|
||||
|
||||
WE NEED YOUR MEMORY (this one really matters)
|
||||
- Taking a PPC hit, from inside the pod: what happened on your
|
||||
screens? Static or interference? A flash? Gauges and MFDs going
|
||||
briefly to garbage? How long did it last?
|
||||
- Separately: after taking PPC hits, do you remember the generator
|
||||
browning out or your weapons losing charge (the short rider)?
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
4. AUTOCANNONS -- AFC25 / AFC50 / AFC100
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- The cannons are point-and-hit, not fly-and-hit. At the trigger,
|
||||
with a lock, the machine checks the range; in range, the damage
|
||||
lands THEN -- one solid ballistic hit on ONE panel of the locked
|
||||
target. The shell you watch fly is a TRACER, drawn for show after
|
||||
the decision is already made.
|
||||
- No leading. The lock does the aiming, and a dodging target does
|
||||
not shake a round already fired.
|
||||
- Out of range: the round is consumed, the tracer flies anyway, and
|
||||
the damage is silently discarded. No hit, no warning.
|
||||
- Recoil: every shot with real punch (damage over 3) kicks your own
|
||||
pod up and back through the gyro, in proportion to the shot --
|
||||
the AFC100 kicks about 3.5 times as hard as the AFC25.
|
||||
- Jams roll after each shot only while the weapon itself is running
|
||||
a heat alarm -- in practice veteran/expert only, since the lower
|
||||
sim levels never heat-alarm a weapon. Chance grows with weapon
|
||||
temperature.
|
||||
- One panel per pull. The old "shotgun across zones" spread in our
|
||||
port (#112) was our bug, never the machine's.
|
||||
|
||||
OUR PORT TODAY
|
||||
Until now our cannons flew a real shell that could miss --
|
||||
reasonable, and wrong. The trigger-time machine is now implemented
|
||||
against the original's code line by line and bench-verified: full
|
||||
batches land as one hit, out-of-range rounds are consumed and
|
||||
discarded. What it needs now is a real night of fire.
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
- The trigger-time cannon goes live in the build you test next.
|
||||
This is the big #171 correction -- please hammer the cannons.
|
||||
- The tracer's flight speed: the original derives it from the gun's
|
||||
range and muzzle height (roughly one second to cross full range).
|
||||
Our stand-in speed was close by accident; the recovered authentic
|
||||
numbers go in.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- When YOU fired cannons, did the pod's view visibly kick up and
|
||||
back (distinct from being hit)? Was the AFC100's kick noticeably
|
||||
harder than the AFC25's?
|
||||
- The AFC25 specifically: did it occasionally eat a trigger pull
|
||||
silently -- a click, no shot, on an apparently ready gun? (Its
|
||||
ammo feed timer exactly equals its firing cycle -- the only gun
|
||||
where the two can race.)
|
||||
- Firing beyond range: did the visible round fly on forever, or
|
||||
vanish? (The code consumes the round and discards the damage; the
|
||||
tracer's visual fate is the one part we cannot recover.)
|
||||
- Round pace: roughly how fast did cannon rounds visibly fly?
|
||||
About a second to cross full range, or very different?
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
5. GAUSS ** THE HEADLINE QUESTION **
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR (as best we can prove it)
|
||||
- The Gauss the pods actually fielded is built ON THE CANNON
|
||||
MACHINE. The shipped content authors it as an autocannon-class
|
||||
weapon: about 20 points of solid shot out to 900 (tied with the
|
||||
AFC25 for longest ballistic reach), a slow 8-second cycle, only
|
||||
16 rounds, runs nearly cold, and the only YELLOW ballistic pip.
|
||||
It hit, and it hurt.
|
||||
- The code ALSO contains a second, "true" Gauss-rifle mechanism
|
||||
that charges up and does NOTHING when fired -- no damage, no
|
||||
heat, nothing. No shipped content anywhere uses it. Dead code.
|
||||
- Full honesty: for a while our audit believed the pods fielded the
|
||||
do-nothing Gauss and that our port's Gauss damage was an
|
||||
invention. Reading the raw content bytes settled it the other
|
||||
way -- the fielded Gauss is the cannon-class one.
|
||||
|
||||
OUR PORT TODAY
|
||||
Same content, same machine: our Gauss already deals cannon-class
|
||||
damage. Port and original agree. Nothing changes.
|
||||
|
||||
WE NEED YOUR MEMORY (the headline)
|
||||
- Confirm the Gauss KILLED: heavy single hits at extreme range, a
|
||||
slow cycle, a small magazine, a gun that never warmed up, and a
|
||||
yellow pip on the display. We expect YES.
|
||||
- Which mech do you remember carrying it? (We believe the Loki;
|
||||
your memory checks our content map.)
|
||||
- If instead you remember a Gauss that charged up and did NOTHING
|
||||
when fired -- say so loudly. That would be evidence that some
|
||||
floor revision shipped content for the dead mechanism, content
|
||||
we do not have.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
6. MISSILES -- HOW EVERY RACK REALLY FIRES
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- Missiles are the one family that genuinely FLIES. Everything else
|
||||
in the game decides its hit at the trigger; a missile earns its
|
||||
hit in the air.
|
||||
- Lock required, same as every weapon. There is no dumb-fire path
|
||||
anywhere in the machine -- the trigger will not take without a
|
||||
lock. (No special Streak lock code exists either; all racks fire
|
||||
through the same gate.)
|
||||
- ONE flying round was drawn per salvo, plus one explosion -- the
|
||||
pod drew a single missile even for a 15-tube volley. The damage
|
||||
bookkeeping rides that one round.
|
||||
- The seeker LEADS: it flies a constant-bearing intercept toward
|
||||
the exact spot on the target picked at the moment of fire, and
|
||||
detonates on a close-proximity fuze with a swept contact check.
|
||||
- If the target dies mid-flight, the lock drops and the round goes
|
||||
stupid.
|
||||
- A rack's listed "range" is fire-control display only. Real reach
|
||||
is physics: motor burn, then up to 10 seconds of coasting. Rounds
|
||||
that hit the floor die; rounds that time out fizzle.
|
||||
- On impact, the cluster roll: out of an n-missile salvo, between
|
||||
roughly a quarter and all of them count as hits, scattered across
|
||||
the victim's zones with a fresh scatter every burst.
|
||||
|
||||
OUR PORT TODAY
|
||||
The whole chain is live-verified: a 382-impact night corpus matches
|
||||
the original's cluster roll exactly, the fuze and lock-drop are
|
||||
benched, and Streak impact speed measures at the authentic value.
|
||||
Presentation deliberately differs: we draw the full ripple of N
|
||||
rounds (the lead round carries the damage, the rest are tracers)
|
||||
with a small tube spread. The damage economy is identical.
|
||||
|
||||
CHANGING IN THE NEXT BUILD -- AND WHAT TO WATCH
|
||||
The bystander gap. The original's rounds swept everything in the
|
||||
flight path every tick -- a third mech between shooter and target
|
||||
could eat someone else's missile. Our rounds currently contact only
|
||||
the locked target and the terrain: a mech in between gets flown
|
||||
through, and only splash can touch it. This is the largest
|
||||
remaining missile-physics gap; the fix is designed but not landed.
|
||||
WATCH FRIDAY: if you take missile hits aimed at someone else --
|
||||
beyond splash distance -- report it with the shooter's name.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
7. MISSILE SPLASH
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
Splash was LIVE on the pods -- every stock mission enables it. An
|
||||
impact splashes a radius of about 30 around the hit point; strength
|
||||
scales from the FULL rack size and falls off steeply with distance;
|
||||
the mech that took the direct hit is excluded from its own splash.
|
||||
One thing the code cannot prove either way: whether the SHOOTER was
|
||||
protected from splashing themselves at point-blank.
|
||||
|
||||
OUR PORT TODAY
|
||||
Same math, verified -- including the full-rack-size splash strength,
|
||||
pinned to the original's code this week. We exclude both the direct
|
||||
victim and the shooter. The on/off wiring differs slightly from the
|
||||
original in a way that only matters for custom missions -- a site
|
||||
option question for later, not a Friday one.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Do you remember splash hurting mechs standing NEAR an impact?
|
||||
- Critically: could you hurt YOURSELF firing missiles point-blank
|
||||
into a wall or an adjacent mech? Our port says no; the original's
|
||||
code will not tell us. Your memory is the tiebreaker.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
8. HOMING AGILITY, THE LRM ARC, AND THE NARC
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- Three flight profiles exist in the shipped content:
|
||||
LRM round: sluggish 60 deg/sec turn, 10-second burn, and the
|
||||
LOFT -- at long range the seeker aims high and
|
||||
the round flies the signature climb-then-plunge
|
||||
arc.
|
||||
Streak round: 360 deg/sec turn -- six times the LRM -- short
|
||||
3-second burn, no loft. The round that out-turns
|
||||
evasion.
|
||||
Narc round: the surprise -- Streak-grade 360 deg/sec tracking
|
||||
PLUS the loft PLUS the long 10-second burn. A
|
||||
light rack that flies like a hawk.
|
||||
- There is NO beacon mechanism anywhere in the machine. The Narc
|
||||
never tagged anyone for anything; it is a light, hard-tracking
|
||||
rack and nothing more.
|
||||
- Several racks LABELED "LRM" actually feed Narc-profile rounds,
|
||||
and at least one "SRM6" feeds Streak rounds. Two visually
|
||||
identical racks homing very differently -- one sluggish, one
|
||||
snapping onto target -- is authentic, not a bug.
|
||||
- Rack names lie in other ways too, all authentic authored data:
|
||||
an "SRM6" that fires 4 tubes, an "SRM4" that fires 2, LRM10s that
|
||||
hit nearly twice as hard on one chassis as another.
|
||||
|
||||
OUR PORT TODAY
|
||||
Same data-driven resolution -- the racks read the same content, so
|
||||
all of the above carries over for free. One detail we are NOT
|
||||
stating yet: which profile the 2-tube SRM racks fly -- our two
|
||||
content reads disagree and the pass that settles it has not run.
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
Nothing mechanical.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Do you remember visually identical LRM racks homing very
|
||||
differently on different mechs? And can you confirm the Narc did
|
||||
nothing special -- no tag, no beacon, just a fast light rack?
|
||||
- Do you remember SRM racks that fired FEWER missiles than their
|
||||
name -- a 4-tube "SRM6", a 2-tube "SRM4"? Or LRM10s/LRM15s that
|
||||
hit noticeably harder on one chassis than another?
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
9. AMMO, EJECT, AND JAMS (CANNONS AND RACKS)
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
- The reload countdown runs only while the weapon's generator route
|
||||
is powered, and a HOT generator reloads slower. Below minimum
|
||||
voltage the countdown freezes entirely.
|
||||
- The EJECT control (novice pilots are locked out of it):
|
||||
TAP = eject one round, and the weapon resets to loading if
|
||||
rounds remain. This is the in-mission UNJAM.
|
||||
HOLD (3 seconds) = dump the entire bay. The weapon is out of
|
||||
ammo for good until re-arm or respawn.
|
||||
- Jams roll after each shot while the weapon itself runs a heat
|
||||
alarm; the chance grows with weapon temperature. Standard and
|
||||
novice sims never heat-alarm a weapon -- so in practice only
|
||||
veteran/expert pilots ever jammed.
|
||||
|
||||
OUR PORT TODAY
|
||||
Same machine, tap-unjam included -- it is the mechanism behind
|
||||
#166's "tap EJECT" advice. One divergence: our jam roll currently
|
||||
waits for a higher weapon temperature than the original -- a
|
||||
leftover safety from before the heat economy went live.
|
||||
|
||||
CHANGING IN THE NEXT BUILD
|
||||
The leftover jam gate comes out. Warm cannons and racks on
|
||||
veteran/expert may jam a touch more often. That is the authentic
|
||||
rate.
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Did weapons only ever jam for veteran/expert pilots? And could
|
||||
you CLEAR a jam mid-sortie by tapping EJECT to cycle one round
|
||||
out?
|
||||
- Did a rack or cannon ever go permanently dark WITH ammo remaining
|
||||
after sustained fire? At what firing intensity? (Field case from
|
||||
our own nights: an SRM6 latched out with 19 rounds left. Whether
|
||||
that could happen at authentic intensity is an open question.)
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
10. INCOMING-MISSILE WARNING
|
||||
-----------------------------------------------------------------------------
|
||||
THE ORIGINAL'S BEHAVIOR
|
||||
Every missile launched at a mech announces itself to its target --
|
||||
the machinery for a warning is there. What CONSUMED that
|
||||
announcement (a warning tone? a beeper tempo change? a threat lamp?)
|
||||
we have not located in the original's code.
|
||||
|
||||
OUR PORT TODAY
|
||||
The beeper plumbing exists but nothing feeds it -- the warning is
|
||||
structurally dead (#83 on the known-gaps list).
|
||||
|
||||
WE NEED YOUR MEMORY
|
||||
- Did the pod audibly warn you of inbound missiles? A tone, a tempo
|
||||
change, a lamp -- anything. If it did not, #83 closes for free.
|
||||
If it did, describe it and we build exactly that.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
APPENDIX A -- THE AUTHORED NUMBERS (straight from the shipped content)
|
||||
-----------------------------------------------------------------------------
|
||||
Range is in the same units your fire-control shows. Cycle in seconds.
|
||||
|
||||
ENERGY (damage = full-charge shot; scales with the square of charge)
|
||||
WEAPON DMG RANGE CYCLE HEAT/SHOT
|
||||
SLaser 1.5 150 1 0.75
|
||||
ERSLaser 2 225 1 1.5
|
||||
MLaser 2.5 350 2 2
|
||||
ERMLaser 3.5 500 2 3.5
|
||||
LLaser 5 600 4 6
|
||||
ERLLaser 6 750 4 8.5
|
||||
PPC 12 900 5 11
|
||||
ERPPC 16 950 5 16
|
||||
Reach shrinks with damage to the carrying zone: listed x (1 - zone
|
||||
damage). An undamaged weapon reaches exactly the listed range.
|
||||
|
||||
BALLISTIC (one panel, decided at the trigger; recoil kick = dmg/16)
|
||||
WEAPON DMG RANGE CYCLE NOTES
|
||||
AFC25 7 900 2 feed timer = cycle (see sec. 4)
|
||||
AFC50 13 750 4
|
||||
AFC100 25 400 8 hardest hit, shortest reach
|
||||
GAUSS 20 900 8 16 rounds, yellow pip, near cold
|
||||
Cannons and racks run effectively cold next to the energy bank.
|
||||
|
||||
MISSILE RACKS (DMG = whole-salvo total; per-round in parentheses)
|
||||
RACK TUBES DMG CYCLE
|
||||
SRM2 2 10 (5.0) 2
|
||||
SRM4 4 35 (8.75) 3
|
||||
SRM4 4 20 (5.0) 3
|
||||
SRM4 2 10 (5.0) 2
|
||||
SRM6 6 50 (8.3) 5
|
||||
SRM6 6 35 (5.8) 5
|
||||
SRM6 4 20 (5.0) 3
|
||||
LRM5 5 10 (2.0) 2.5
|
||||
NRK5 5 10 (2.0) 2.5
|
||||
LRM10 10 35 (3.5) 4
|
||||
LRM10 10 20 (2.0) 4
|
||||
LRM15 15 50 (3.3) 6
|
||||
LRM15 15 35 (2.3) 6
|
||||
LRM20 20 65 (3.25) 9
|
||||
Same rack name, different numbers = different chassis fits, all
|
||||
authentic. We are re-verifying the per-chassis map before naming
|
||||
which mech carries which variant. SRM racks display range 800;
|
||||
LRM/NRK racks display 6000 -- display only; real reach is flight
|
||||
time. Cluster roll on impact: of n launched, between about n/4 and
|
||||
n count as hits.
|
||||
|
||||
FLIGHT PROFILES (authored on the round, not the rack)
|
||||
LRM round: turn 60 deg/s burn 10 s loft YES
|
||||
Streak round: turn 360 deg/s burn 3 s loft no
|
||||
Narc round: turn 360 deg/s burn 10 s loft YES
|
||||
All rounds splash radius 30 on impact. After burnout a round coasts
|
||||
up to 10 seconds before fizzling.
|
||||
|
||||
=============================================================================
|
||||
HOW TO REPLY (again, because it matters): Discord weapons thread, one
|
||||
reply per section, section name first, then MATCHES / CONTRADICTS /
|
||||
CAN'T RECALL and your detail. "Matches" alone is real data. The GAUSS
|
||||
and PPC-HIT questions are the two we cannot answer without you.
|
||||
=============================================================================
|
||||
Reference in New Issue
Block a user