What this is

Authoring rule for legendary weapon stat blocks. A legendary is produced by merging two level-20 non-legendary weapons; it then scales L1→L20 via the normal level-up pool. Because legendaries must read as obviously rarer and more powerful than their base-weapon parents, every spatial VFX parameter in the legendary’s spec is multiplied versus its base-weapon counterpart. The renderer then re-shrinks the visible bullet at L1 (and grows it back toward L20) so launch-time legendaries don’t visually dwarf the rest of the screen.

The rule has two halves: a flat ×5 on spatial spec values, and a ×2 on postFxSec. Particle/shell/chain counts only get modest bumps and only on slow-firing weapons.

What scales by 5x

All spatial parameters in the legendary spec are authored at 5× the equivalent base-weapon value. Pulse and glow values are also ×5.

ParameterMultiplier vs baseNotes
acquireRangeBoth base and scaling fields
travelRangeMultMultiplier on projectile travel range
projectileSizeAuthored size of projectiles
blastRadiusAoE / explosion radius
beamWidthBeam thickness (sniper-family legendaries)
chainRadiusChain-lightning jump radius
scatterRadiusSub-shell scatter distribution
coneWidthCone / arc spread width
PulseshipPulseStrength
Glow / sonarsonarPulseScale

What scales by 2x

Only postFxSec gets the ×2 bump. The screen flash is intentionally capped to half the scale of spatial params to avoid nausea from oversized full-screen post-FX on every shot.

ParameterMultiplier vs baseReason for cap
postFxSecScreen flash capped to avoid nausea

Particle counts, shell counts, and chain counts are kept low on high-fire-rate legendaries (e.g. Trailblazer at 18/s, Wave Gun at 8/s, 4-Way Burst at 5/s). Only slow-firing legendaries (e.g. Carpet Bomber at 0.4/s, Plasma Mortar at 1.4/s, Hellrain at 1.6/s) get modest ×2 count bumps where they help the cast read.

Renderer side adjustments

The renderer in draw.ts recognises any bullet whose weaponId starts with lgd_ and applies two compensating shrinks so the authored 5× spatial values don’t visually overwhelm the screen at launch level.

Renderer passValueNotes
Legendary visual size at L10.15×Of the authored visual sz
Legendary visual size at L200.50×Linear interpolation L1→L20
Per-level step0.35 / 19 ≈ 0.01842× per level0.15 + (lvl−1) × 0.35 / 19
Legendary alpha scale0.55×Global opacity multiplier on legendary branches
Damage zone / collision radiusunchangedStill read from bullet radius for hit testing

The alpha scale exists because much of the “crazy VFX” feedback at launch was additive layers piling up on top of each other — half-strength alpha on legendary draw branches softens the stack without hurting readability. Universal glow halos around legendary bullets are disabled (the legendary-specific draw branches handle their own glow per archetype).