Category

Side

Sort

No entries match the current filters.

About this page

Generated 2026-10-16. These are client-side definitions pulled from the game's data files; server-side behaviour (balance adjustments, live tuning, drop weighting, and similar) is not present in this data.

Entry counts

  • Ships: 565
  • Weapons: 514
  • Abilities: 14
  • Turrets: 40
  • Bosses: 22
  • Ship upgrades: 4
  • Buffs: 20
  • Artifacts: 52
  • Relics: 27
  • Pods: 1
  • Reference: 4
  • Total entries: 1263

Stat formulas

Stat math (damage, DPS, resistances, and similar) referenced by this dataset is implemented in modules/game/weapons/instance.py and modules/game/weapons/damage_types.py; consult those files to audit any number shown above.

  • Weapon upgrade accumulators: Percent stats (damage, reload rate, range, speed, acceleration, aim arc, rotation speed, spread) each start at 100 and add the purchased level's inc_* field; additive stats (radius, projectile count, multi offset, targets, charge-up) sum directly. (modules/game/weapons/instance.py:178-275)
  • Fire rate (inverse relationship): fire_rate_ms = base_fire_rate_ms * 100 / max(1, reload_accumulator); a higher reload accumulator means a SMALLER interval, i.e. faster fire. (modules/game/weapons/instance.py:255-257)
  • TTL scales with the range accumulator: ttl *= range_accumulator / 100 (not its own accumulator). (modules/game/weapons/instance.py:258-259)
  • DONT_SCALE skip: If damage_type == 8 (Special), base_damage is never multiplied by the damage accumulator - that type is immune to upgrade/level scaling. (modules/game/weapons/instance.py:251-252; modules/game/weapons/damage_types.py)
  • Enemy weapon_level scaling: For enemy weapons only, after all upgrade math: base_damage *= 1 + 0.1 * (weapon_level - 1), applied when weapon_level > 1. (modules/game/weapons/instance.py:343-344)
  • Shots per second: shots_per_second = 1000 / fire_rate_ms (fire_rate is stored in milliseconds). (modules/game/weapons/beam_charge.py:37)
  • Weapon DPS: For projectile/blaster/smartGun weapons only: dps = base_damage * max(1, multi_count) * max(1, num_hits) * (1000 / fire_rate_ms). Not computed for beam/petSpawner/teleport/cloak weapons, or for weapons whose base_damage is itself a DoT-tick payload rather than hit damage. (tools/wiki/data.py (per the generator brief))
  • Damage-type component split: Each of the 10 damage_type indices maps to a fixed 5-way split across [Kinetic, Energy, Corrosive, Health, Special]; base_damage is multiplied by each component's share. Type 6 (Health) heals rather than damaging and is never resisted; type 8 (Special) is unresisted and DONT_SCALE. (modules/game/weapons/damage_types.py)
  • Charge-up DPS caveat: When has_charge_up is true, the weapon DPS figure above is labelled 'DPS (uncharged)' because it is still base_damage at max fire rate with no charge applied; max_charge_duration is the window the weapon can charge for, and charging raises damage (and for some weapons range) as it builds, so the uncharged number is a floor, not a sustained rate. charge_up_bonus_dmg is cited when non-zero; the per-charge damage curve itself is not present in the client data. (tools/wiki/data.py - presentation decision over has_charge_up / max_charge_duration / charge_up_bonus_dmg, not transcribed game maths)