Spread
What it is
The angular spread fan is a multi-projectile arrangement that distributes shots evenly across a cone centered on the aim direction. The cone’s total angular width is the weapon’s spread value (in degrees); the centerline of the cone is the resolved aim angle at fire time. Spread is angular — every shot has a different heading. This is distinct from positional spread (parallel shots offset sideways from spawn) and from multi-target acquisition (shots that peel off toward different enemies).
The math
A weapon with N shots and a non-zero spread value lays the shots out as follows. The cone’s total width is the spread value; half-angle on either side of the aim direction is half the spread value. Each shot’s heading is the aim angle plus a per-shot offset.
| Quantity | Formula |
|---|---|
| Total cone width | spread (degrees, converted to radians for math) |
| Half-angle either side of aim | spread / 2 |
Normalized shot index t for shot i of count | (i / (count − 1)) − 0.5 |
| Shot heading | aim angle + t × spread (radians) |
| Range of t across volley | −0.5 (leftmost shot) to +0.5 (rightmost shot) |
| Angular gap between adjacent shots | spread / (count − 1) |
The first shot (i = 0) sits at t = −0.5, the last shot (i = count − 1) sits at t = +0.5, and the rest are evenly spaced between. When the count is 1, t collapses to 0 and the single shot fires straight on aim. When the count is odd, the middle shot sits exactly on aim.
Random spread variant
When the randomSpread flag is set, each shot picks an independent uniform random angle inside the cone instead of locking to an even position. The heading becomes the aim angle plus (rand − 0.5) × spread, where rand is a fresh uniform 0–1 per shot. The cone is filled chaotically rather than as a clean fan.
Spread scaling with count
A second flag, scaleSpreadWithCount, widens the cone linearly with the actual shot count so that the per-shot angular gap stays constant as more shots are added. Without the flag, adding shots packs them tighter inside a fixed cone (denser fan); with the flag, the cone grows and adjacent shots stay the same angular distance apart (wider fan).
| Quantity | Formula |
|---|---|
| Base count | the weapon’s base shot count at the current level |
| Effective count | base count + bonus shots from More Projectiles stack |
| Effective spread (flag off) | spread (fixed regardless of count) |
| Effective spread (flag on) | spread × effective count / base count |
The flag is set on the shotgun and on the flame stream’s cone (which uses the same scaling principle on its coneWidth rather than spreadDeg).
Which weapons use it
The table below lists every base-tag weapon and legendary that defines a non-zero spreadDeg on its spec. Weapons not listed use other arrangements (multi-target acquisition, perpendicular layout, orbit, chain, or beam) and either ignore spread entirely or set it to zero.
| Weapon | Spread (degrees) | Random fill | Scales with count | Notes |
|---|---|---|---|---|
| Shotgun | 18 | no | yes | Even fan that widens as shot count grows. Base 5 pellets at L1, 13 at L20; with the More Projectiles stack the cone widens proportionally. |
| Revolver | 55 | no | no | Wide even fan applied to the burst of seekers fired toward the closest enemy. Cone width fixed regardless of round count. |
| Defy (flame stream) | uses coneWidth = 32° | yes | yes | Persistent cone shape rather than discrete projectiles, but the same scaling rule applies — the flag widens the cone with extra projectiles. |
| Trailblazer (bullet+fire legendary) | 28 | yes | no | High-rate-of-fire revolver-style rounds filling the cone with random headings; cone width fixed. |
| Mega Bullet (bullet+bullet legendary) | 0 | — | — | Spread field present but zero; single-line FAMAS bursts. |
| Wave Gun (bullet+energy legendary) | 0 | — | — | Spread field present but zero; single-line curved plasma arcs. |
All other weapons either omit the spreadDeg field or set it to 0; their multi-projectile arrangements come from a different primitive.
EXTRACT-CANDIDATEs
EXTRACT-CANDIDATE: weapons/shotgun.md— Per-weapon page should walk through one concrete shot-count → effective-cone-width calculation using the scaling rule.EXTRACT-CANDIDATE: weapons/revolver.md— Per-weapon page should note that the 55° cone is fixed and pairs with the burst-fire seeker mechanic rather than per-shot multi-target.EXTRACT-CANDIDATE: weapons/defy.md— Per-weapon page should explain that the flame cone is a persistent shape sharing the scaling rule under a different field name (coneWidth) instead ofspreadDeg.EXTRACT-CANDIDATE: weapons/trailblazer.md— Legendary page should highlight the random-fill 28° cone as the visual identity of the weapon.EXTRACT-CANDIDATE: concepts/multi-target-acquisition.md— Sibling concept page forspreadDeg = 0weapons whose extras peel off toward different enemies; should cross-link this page as its angular counterpart.