Mechanics
How the game actually computes things. All formulas below are taken directly from the game code.
Damage
Every hit starts from the weapon's tier stats and the wielder's stats:
damage = (BaseDamage + Σ ownerStat × scaling% ÷ 100) × perkMultiplier + flat Damage stat
The scaling terms are the per-weapon modifiers shown on each weapon page as
(+90% Ranged Damage) and similar — the weapon gains that percentage of the
wielder's stat as extra base damage. A weapon with +90% Ranged Damage held by a player
with 20 Ranged Damage gains 20 × 90 ÷ 100 = 18 damage before multipliers.
Critical hits
Crit chance is the weapon's own chance plus the wielder's Critical Chance stat, capped at 100. Each attack rolls once; on a crit the fully modified damage is multiplied by:
critMultiplier = max(1, weapon CritDamage + owner CritDamage)
The clamp means a crit can never deal less than a normal hit.
Attack speed & cooldown
A weapon's Cooldown stat is the base seconds between attacks. The wielder's Attack Speed stat shortens (or lengthens) it:
effective cooldown = baseCooldown ÷ (1 + AttackSpeed ÷ 100)
+100 Attack Speed halves the cooldown. Negative Attack Speed is floored at -90, so a weapon can never fire slower than 10× its base cooldown.
Range
The wielder's Range stat modifies the weapon's range as a percentage:
effective = weaponRange × (1 + Range ÷ 100), converted to world units internally.
At −100 or below, range collapses to 1% of base.
Armor & damage taken
Armor gives diminishing, self-limiting damage reduction:
reduction = Armor ÷ (15 + |Armor|)
- Armor 5 → 25% less damage taken
- Armor 15 → 50% less
- Armor 45 → 75% less (never reaches 100%)
- Negative armor increases damage taken: −15 → +50% more
After armor, a separate Damage Taken (vulnerability) multiplier applies:
× (1 + DamageTaken ÷ 100) — used by debuffs like Plague. It is floored at
-90, so no combination makes you fully immune.
Dodge
Each incoming hit is negated entirely with probability Dodge ÷ 100.
Dodge is capped at 75 — enemies always keep at least a
25% chance to hit you.
Knockback
Knockback dealt = weapon knockback + owner Knockback ÷ 10. Enemies resist it with
their Knockback Resistance multiplier.
Life steal
Weapon life steal and the wielder's Life Steal stat add together (capped at 100); the attacker heals for that percentage of damage actually dealt.
Move speed
The Speed stat is a percentage over the universal base move speed of 7:
moveSpeed = 7 × (1 + Speed ÷ 100). Floored at -90
(nobody freezes solid).
Ability cooldowns & aura
Special abilities follow the attack-speed shape: cooldown ÷ (1 + AbilityCooldown ÷ 100),
with the divisor floored so stacked penalties cap at 10× slower. An ability is
ready when its cooldown is up and the owner has enough Aura to pay its cost. Abilities
start a run on full cooldown — for enemies like the Egg, the hatch delay is its ability
cooldown.
Pierce, bounce & explosions
A piercing or bouncing projectile re-aims at the nearest enemy after each hit and keeps going until its pierce/bounce count runs out. Explosive hits deal area damage in the weapon's explosion range, multiplied by its explosion damage multiplier.
Dev note: the per-hit pierce/bounce damage falloff values that exist in the data tables are not currently applied at runtime — every pierce/bounce hit deals full damage.
Enemy scaling per wave
Enemies grow every wave after they first appear:
HP = baseHP + HP/wave × (wave − firstWave + 1)
Damage = baseDamage + Dmg/wave × (wave − firstWave + 1)
Each enemy page has a projection table computed with exactly this formula. On top of it, lobby difficulty multiplies the result (see below).
Difficulty scaling
Two counters scale the whole run: Permanent Difficulty (+1 for every planet cleared,
never resets) and Temporary Difficulty (rises during a planet, resets when it's cleared).
Enemy HP, damage, speed and wave time are each multiplied by
scale_PD ^ PD × scale_TD ^ TD with per-stat tuning values.
Spawn weighting
Which enemies spawn in a wave is a weighted lottery. Each eligible enemy (wave ≥ its first wave) gets a spawn value from its bulk (HP, speed, damage), knockback resistance, and how much it has grown since appearing — with an exponential decay so early-game enemies stop dominating late waves. Values are normalized into percentages across the planet's roster.
Stat caps
- Dodge — capped at 75
- Critical Chance — capped at 100
- Life Steal — capped at 100
- Attack Speed / Ability Cooldown — floored at -90 (max 10× slower)
- Speed — floored at -90
- Damage Taken — floored at -90 (max 90% reduction from vulnerability effects)
These values are extracted from the game source on every sync — they cannot go stale.