BLESSED WIKI

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|)

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

These values are extracted from the game source on every sync — they cannot go stale.