Horizontal Modifiers

What it is

Horizontal modifiers are run-wide stacks that buff every weapon at once, separate from a weapon’s own level. Each rank of a horizontal multiplies a per-weapon scaling rate carried by every weapon spec. Damage modifiers split by damage tag (Bullet, Energy, Fire, Bomb) plus a universal All DMG track; More Projectiles is a legacy stack that no longer appears on level-up cards and is granted only by the Echo Generator artifact. Fire Rate has no dedicated horizontal — every damage-modifier rank also speeds up fire rate via each weapon’s ratePerH. Area is no longer a horizontal at all; area scaling is now per-weapon-level only.

The horizontal stats

Damage horizontals

Five separate damage tracks. The sum used by every weapon is primary_tag_count + secondary_tag_count + damage_all, where secondary applies only to legendaries with two damage tags.

Modifier idPer-rank effectMax rankRarity
damage_bullet+25% bullet weapon damage20common
damage_energy+25% energy weapon damage20common
damage_fire+25% fire weapon damage20common
damage_bomb+25% bomb weapon damage20common
damage_all+10% all weapon damage20common

Each weapon spec carries a per-weapon dmgPerH rate. Final damage multiplier from horizontals is 1 + dmgPerH * H, where H is the matching summed count.

dmgPerHUsed by
0.04barrier, coilgun, cannon, burst, disc, line, missile, magnetar, lightning, fire-trail, revolver, mortar, shotgun, sweep, railgun, rifle, all current legendaries except phoenix aura
0.05fire-ring, defy, flame, phoenix-aura legendary

A flat +1 damage per damage-rank is also added on top of the multiplier, applied after multiplicative scaling.

Fire Rate (via Damage horizontals)

There is no standalone fire-rate horizontal. The same summed H that feeds damage also multiplies fire rate by 1 + ratePerH * H per weapon.

ratePerHUsed by
0.08fire-ring, defy, sweep
0.10every other weapon (current set)

Fire Rate horizontal does NOT reduce warmup time.

More Projectiles

Legacy stat tracked under the more_projectiles upgrade counter. No longer offered as a level-up reward; gained only when the Echo Generator artifact triggers, which adds 1 stack per crystal pickup roll. Each weapon has its own per-rank step table — see the next section.

Area (no horizontal)

The bigger_area horizontal was removed in v3.26. Area now scales per weapon level only. Each weapon spec declares an areaMode that names which physical dimension scales with weapon level. The eleven area modes:

areaModeMeaning
blastStandard explosion blast radius
blast_strongLarger-than-standard blast radius
chain_radiusLightning chain jump distance
beam_splashBeam endpoint splash radius
beam_widthBeam line thickness
bonus_explosionTriggers an explosion on hit
cone_widthFlame / breath cone half-angle
blade_sizeOrbiting blade hitbox radius
splashBullet-impact splash radius
line_spreadTesla-line lateral spread
arc_thicknessShield-arc width

More Projectiles step ladder

Each weapon has its own step table. The function getExtraProjectiles(weaponId, H) reads H = upgradeCounts['more_projectiles'] (clamped 0–20) and returns the per-weapon bonus. Weapons not listed below ignore More Projectiles.

WeaponH0H1H2H3H4H5H6H7H8H9H10H11H12H13H14H15H16H17H18H19H20
rifle011122223333344444555
coilgun001112222333334444455
shotgun011122223333344444555
railgun000011111222223333344
missile011122223333344444555
lightning011122223333344444555
revolver011122223333344444555
cannon011222333444555666777
mortar011122223333344444555
disc000011111222223333344
flame (embers)0345688910101212131414161617181920
sweep000001111111112222233
line000000000111111111222
magnetar000000000111111111222
fire-ring (blades)000001111111112222233
burst000000000111111111222
barrierreads more_projectiles directly in its custom fire path
fire-traildrops a single zone per fire; ignores more_projectiles

For weapons whose primary count is a SteppedStat (chainCount, burstPattern, bladeCount, emberCount, maxActive, shellCount, projectileCount-as-stepped), the per-H bonus is added on top of the level-based base count.

Stacking rules

Damage and Fire Rate horizontals stack additively inside the multiplier: 1 + def.dmgPerH * H and 1 + def.ratePerH * H, so each rank delivers a flat percentage of the base stat. The +1 flat damage per damage-rank is added after the multiplier, not inside it.

The H counter that drives both damage and fire rate is primary_damage_tag_count + secondary_damage_tag_count + damage_all_count. A legendary with two damage tags doubles up on both modifiers — picking damage_bullet and damage_energy both add to a Bullet+Energy legendary’s H.

Per-weapon level scaling stacks on top of horizontals multiplicatively: the level damage multiplier (1.0 at L1 → 7.5 at L20, piecewise-linear through six anchors) and the per-level base + scaling * (level - 1) formula resolve first; horizontal multipliers, early-level nerfs, and Star Power are applied on top of that base.

The early-level nerf reduces damage at low weapon levels (×0.7 at L1, ×0.8 at L2, ×0.9 at L3, ×1.0 at L4+). Fire rate uses a separate nerf that tapers from ×0.7 at L1 to ×1.0 at L10. Both apply after the horizontal multiplier.

More Projectiles stacks additively with the weapon’s base projectile count — baseCount + getExtraProjectiles(weaponId, H). The bonus is the same regardless of weapon level.