Skip to content

Demo fake-modular — Mag / Sight / Scope / Zoom (data only)

Authority: FS-GUN-012 · Range meters FS-GUN-011 · sockets FS-GUN-006 · Demo one-weapon Frame kits docs/22-demo.md · Field Specs demo-mod-field-specs.md · Shiv Specs demo-mod-shiv-specs.md.
Rule: Demo Mod session overrides feel only. No mesh Refit. Full-game sockets stay Year-1+. UI: OV36 = kits on this character only → OV37 edit → OK updates OmniVisor ammo (demo_mod_mock.html, OV38).


  • Hotkey O → W_TFA_DemoMod. Gate / strip for external.
  • CURRENT + INPUT (and dropdowns for enums). OK commits session; Esc/Cancel discards.
  • Derived readouts: hip FalloffStart/End_m, ZoomMult, ADS FalloffStart/End_m (kinetics only).
  • Never edit: Fire Mode · Cadence · AA Mag/Stick/Rot/Strafe · damage / hit auth.

MagFamily Typical Receivers Session feel
Box Auto, Pulse, Scout, SMG, Machine Gun, Heavy, Gatling Mag size / reload bias
Tube Shotgun Capacity / reload
Drum Shotgun / MG specialty High Mag, slower reload
Cylinder Hand Cannon Chamber count / reload
Cell Fusion, Linear Fusion, Trace Charge / beam sustain
Quiver Bow, Crossbow Draw-adjacent capacity

Allowlist (Demo):

Receiver Legal MagFamily
Auto, Pulse, Scout, SMG, Machine Gun, Heavy Gun, Gatling (any) Box, Drum
Shotgun Tube, Drum, Box
Hand Cannon Cylinder
Sidearm Box
Fusion, Linear Fusion, Trace Cell
Bow, Crossbow Quiver
Grenade Launcher Box (breech feed soft)
Rocket Box (tube feed soft)
Sniper Box

Mod rows: MagFamily · MagSize · ReloadSpeed.

MagSize is Frame-kit-owned (Frame-band Demo): each ranged kit is Receiver × Frame (auto_adaptive, hc_aggressive, …). MagSize / reserve follow FS-GUN-009 Mag band (explicit Demo integers — not TBD-IMR-FLOAT). MagFamily change snaps MagSize to that kit’s family default; edits clamp to kit×family min/max. Legacy ids (auto, hc, …) alias the primary Frame kit. Authority: mock GUN_FRAME_ROWS / MAG_SIZE_TABLE in tfa_gdd_html/figures/demo_mod_mock_data.js.

Primary Frame defaults (sample):

Kit id Frame MagSize Reserve MagFamily
auto_adaptive Adaptive 40 280 Box
auto_rapid Rapid-Fire 52 364 Box
pulse_rapid Rapid-Fire 36 216 Box
scout_precision Precision 13 91 Box
hc_adaptive Adaptive 11 88 Cylinder
hc_aggressive Aggressive 8 64 Cylinder
sidearm_adaptive Adaptive 15 105 Box
smg_adaptive Adaptive 37 252 Box
sg_aggressive Aggressive 5 15 Tube
sg_rapid Rapid-Fire 7 21 Tube
heavy_adaptive Adaptive 55 165 Box
gl_adaptive Adaptive 1 9 Box

Full Frame list (40 ranged kits) lives in the mock KIT_CATALOG.ranged / RANGED_KIT_IDS.

HUD: After OK, OmniVisor AMMO in-mag count = MagSize; clip family label = MagFamily; reserve = kit reserve. Active character seat drives the readout (OV38). Mesh never changes.


OpticKind Meaning ZoomAdd default band
Sight Iron / reflex / holo / RDS / bow sight +0.0 … +0.3
ScopeShort Short tube / mid prism / ACOG-ish +0.4 … +0.9
ScopeLong Long tube / sniper glass +1.0 … +5.0
Receiver / key BaseZoom (×) Allowed OpticKind OpticMin–Max (×) Notes
Hand Cannon 1.5 Sight 1.5–1.8 No scopes
Sidearm 1.2 Sight 1.2–1.5 No scopes
Auto 1.5 Sight, ScopeShort 1.5–2.4 No ScopeLong
Rifle × Gatling 1.5 Sight, ScopeShort 1.5–2.4 Same Sight pack as Auto
Bow 1.5 Sight 1.5–1.8 No tube scope
Crossbow 1.7 Sight, ScopeShort 1.7–2.6 Has sights
Pulse 1.7 Sight, ScopeShort 1.7–2.6
Scout 2.0 Sight, ScopeShort 2.0–2.9 No sniper tube
SMG 1.25 Sight, ScopeShort 1.25–2.0 Has sights
Shotgun 1.2 Sight 1.2–1.5 Zoom does not re-author pellet fan
Sniper 4.0 ScopeShort, ScopeLong 4.0–9.0 No Sight
Fusion 1.5 Sight, ScopeShort 1.5–2.4 Has sights
Linear Fusion 2.0 Sight, ScopeShort 2.0–2.9
Trace 1.5 Sight, ScopeShort 1.5–2.4
Machine Gun 1.5 Sight, ScopeShort 1.5–2.4 Has sights
Machine Gun × Gatling 1.5 Sight, ScopeShort 1.5–2.4 Same Sight pack as Machine Gun
Heavy Gun — None — Counterweight replaces Optic
Heavy Gun × Gatling — None — Counterweight replaces Optic
Grenade Launcher 1.4 Sight only 1.4–1.7 Arc / Velocity — no ZoomMult falloff
Rocket 2.0 Sight, ScopeShort 2.0–2.8 Velocity-primary (soft)

Five-pack: Barrel · Mag · Counterweight · Brace · Grip.

Field Meaning
CounterweightBias Tip settle / forward-mass (session dial in Demo Mod)
Kickback / Stability May bias; never AA / Zoom / cadence

Hard reject: any OpticKind on Heavy / Heavy Gatling. Hard reject: Counterweight on Rifle or MG Gatling.

  • Fire Mode SingleShot; projectile is arc / Velocity-primary (not kinetic bullet falloff).
  • OpticKind Sight only — acquisition / reticle help.
  • Do not apply ADS_FalloffStart_m = HipStart_m × ZoomMult. Treat ZoomMult = 1.0 for falloff; soft RangeStat + Velocity own engage distance.
  • Demo Mod: show read-only “Arc / Velocity” note; ZoomAdd hidden or N/A.

ScopeShort vs ScopeLong ZoomAdd presets (where scopes allowed)

Section titled “ScopeShort vs ScopeLong ZoomAdd presets (where scopes allowed)”
Preset OpticKind ZoomAdd Typical use
Reflex / iron Sight 0.0 HC, Sidearm, Shotgun, GL default
Holo / RDS Sight 0.2 Auto / Pulse / MG / Fusion close
Mid prism / short tube ScopeShort 0.6 Auto / Scout / Rifle Gatling mid
ACOG-ish ScopeShort 0.9 Pulse / Scout top short
Combat scope ScopeLong 1.5 Sniper short-long
Marksman long ScopeLong 3.0 Sniper mid-long
Anti-materiel glass ScopeLong 5.0 Sniper max

EffectiveStat = clamp(RangeStat + BarrelRangeDelta, 0, 100)
HipStart_m, HipEnd_m = ReceiverCurve(EffectiveStat) // FS-GUN-011
ZoomMult = clamp(BaseZoom + ZoomAdd, OpticMin, OpticMax)
ADS_FalloffStart_m = HipStart_m × ZoomMult
ADS_FalloffEnd_m = HipEnd_m × ZoomMult

Exceptions: GL = no ZoomMult falloff. Heavy / Heavy Gatling = no Optic (Counterweight). Year-1 Zoom does not rewrite AA.

TrueFPP ADS — weapon FOV + optic aim (FS-GUN-013)

Section titled “TrueFPP ADS — weapon FOV + optic aim (FS-GUN-013)”

Sight / ScopeShort / ScopeLong drive TrueFPP weapon ADS: gameplay camera FOV from ZoomMult + gun raise / optic presentation (TrueFPP weapon ADS feel). OmniVisor is chrome around ADS — not the zoom authority. HUD-only digital zoom without weapon / optic aim is retired.

OpticKind Local ADS presentation
Sight Mild FOV; iron / reflex / holo / RDS on the gun
ScopeShort Mid FOV; look-through short tube / prism / ACOG-style
ScopeLong Heavy FOV; look-through long-tube / sniper glass (optic socket / overlay allowed)

Watching another player ADS: remotes see that pawn’s TPP ADS / cheek-weld pose. They do not share the local ADS FOV or look-through optic view.


Demo Mod field order (append) — on OV37 after weapon select

Section titled “Demo Mod field order (append) — on OV37 after weapon select”

After OV36 Enter weapon:

  1. Range: RangeStat · BarrelRangeDelta · Hip Start/End_m (read-only)
  2. Fake Mag: MagFamily · MagSize · ReloadSpeed
  3. Fake Optic or Counterweight (Heavy): OpticKind · ZoomAdd · ZoomMult · ADS meters — or CounterweightBias
  4. GL: Sight + arc/Velocity read-only

Footer: Back · OK · Cancel. Mesh never changes.


  • Auto Adaptive RangeStat 50 → hip Start ≈ 19.2 m; ScopeShort +0.6 → ZoomMult 2.1 → ADS ≈ 40.3 m.
  • Rifle Gatling uses Auto Sight pack. MG Gatling uses MG Sight pack.
  • Heavy Gun: no Sight; CounterweightBias only.
  • GL Sight: hip meters for soft RangeStat only; ADS falloff multiplier = 1.0.