The math behind the tooltips. Understand this and you build top-tier without trial and error.
The hidden mechanic that changes everything. Each character has a unique scaler stat that multiplies its damage 1x to 9x. This is the dial to max.
| Character | Formula | Max at cap |
|---|---|---|
| guitar | 1 + min(armor x 1.2, 4) | 5x (armor cap 5) |
| violin | 1 + critChance x 2 | 9x (critChance cap 4) |
| flute | 1 + speed x 2 | 5x (speed cap 2) |
| piano | 1 + (maxHpBonus%) x 2 | uncapped (HP scales) |
| drum | 1 + missingHp% x 2 | 3x (at 0% HP) |
| microphone | 1 + range x 2 | 9x (range cap 4) |
| tambourine | 1 + luck x 2 | 5x (luck cap 2) |
| trumpet | 1 + lifeSteal x 2 | 4x (lifeSteal stat cap 1.5) |
The trick: scalers stack with damage. The scaler does not replace the damage stat. It multiplies on top. If you raise damage to cap (x4) and your scaler to cap (x5 to x9), final multiplier reaches x20 to x36 before the soft cap.
What happens on each shot, in order.
critChance has no upper clamp. Stat cap 4 means every shot crits. Combined with critDamage cap 5 (x6 mult), violin or tambourine builds can generate astronomical damage before the soft cap. Intentional, the glass cannon identity.
Each hit goes through this pipeline in order (player-damage-apply.ts).
Realistic stack. Multiplicative DR layers 14 to 21 are instrument-specific. A single character only stacks its own plus DR stat plus crowdSurf. Worst case: 0.5 x 0.85 x 0.5 (instrument) = 0.21, around 79% effective DR plus flat armor 15. No build reaches sustained immortality.
From src/lib/game/game/rules/stat-weights/stat-caps.ts
| Stat | Cap | Notes |
|---|---|---|
| damage | 3 (300%) | Additive in formula (1 + dmg*3) |
| fireRate | 2 | Multiplicative cooldown |
| range | 4 | Mic damage scaler |
| critChance | 4 (400%) | No upper clamp in damage.ts, >=1.0 means guaranteed crit |
| critDamage | 5 (x6 mult) | Multiplies baseDmg on crit |
| evasion | 0.5 hard | Sums with relic bonuses, final cap 0.95 |
| armor (stat) | 5 | Total armor (with relics) cap 15 |
| multiHit | 0.5 hard | 50% chance double-shot proc |
| damageReduction | 0.5 hard | Multiplicative |
| cooldownReduction | 0.5 hard | Dash, abilities |
| lifeSteal (stat) | 1.5 | Operational heal cap 0.30 |
| healingBoost | 0.75 | Post-heal multiplier |
| maxHp | no explicit cap | Piano scaler compounding |
| luck | 2 | Tambourine scaler |
| speed | 2 | Flute scaler |
| projectileCount | 5 | Bullets per shot |
| heal-per-frame | 0.04 x maxHp | Lifesteal only (piano pulse capped at 30% per pulse) |