Combat formulas
Game mechanics guide
Fights are simulated hit by hit: every swing, dodge, block and crit is rolled. This guide follows a single hit in the order the game handles it, with the formulas the closed-beta client uses.
A hit, step by step
Every basic attack and skill hit goes through the same steps, in this order:
- 1 Automatic missThe target is untouchable, or a melee attacker swings at a flying target.
- 2
- 3 Fury chargeA hero that is hit gains one.
- 4
- 5
- 6
- 7 Block rollSeparately for the physical and the elemental part.
- 8 AbsorptionOn the whole hit. A hit that connects deals at least 1.
- 9
Percentages are the ones the game shows (it stores them in basis points, 100 = 1%). Dodge, Block and Elemental Block are ratings, and Health, Regen and Absorption are the scaled values from the hero sheet.
Critical hits
Crit Chance can go above 100%: every full 100% is a guaranteed crit "layer", and what is left over is the chance of one more.
Crits apply to the physical and elemental parts of a hit, but not to damage over time, thorns or heals. Monsters never crit.
Example: Crit Chance 150%
Crit Chance 150% and Crit Damage +50% give M = 2.5. Every hit crits at least once (×2.5), and half of them crit twice (1 + 2 × 1.5 = ×4). On average that is ×3.25.
Level difference
Heroes never gain from out-levelling a monster; they only lose when they are below it, and the monster then hits harder. Stage and act bosses punish the gap far more:
| Monster above hero | Hero deals | Hero takes | Boss factor | Hero's dodge chance kept |
|---|---|---|---|---|
| 1 level | ×0.87 | ×1.15 | ×1.15 | 90% |
| 2 levels | ×0.756 | ×1.32 | ×1.32 | 80% |
| 3 levels | ×0.658 | ×1.52 | ×1.52 | 70% |
| 4 levels | ×0.572 | ×1.75 | ×60.83 | 60% |
| 5 levels | ×0.497 | ×2.01 | ×2,433 | 50% |
| 6 levels | ×0.311 | ×3.22 | ×97,336 | 40% |
| 7 levels | ×0.194 | ×5.15 | ×3.89M | 30% |
| 8 levels | ×0.121 | ×8.24 | ×155.74M | 20% |
| 10 levels | ×0.047 | ×21.09 | ×249.18B | 0% |
The boss factor takes over whenever a stage or act boss is on either side of the hit; the dodge column is the same against bosses. Both factors also apply to damage-over-time ticks and thorns. Hero against hero (the arena) is always even.
Examples: boss levels
Act bosses fight ⅔ of a level above their stage, so even a party at the stage's level deals ×0.911 and takes ×1.098. A stage boss fights at most ⅓ of a level above or below its stage.
A hero 4 levels below a boss takes ×60.83 its damage and deals ×0.016; against a regular monster 4 levels up it would take ×1.75.
Damage reduction
Armor and resistances cut each part of a hit, dodge avoids it, block halves a part and Absorption trims what is left.
Armor and penetration
Defense cuts the physical part of a hit. It is measured against the attacker's level, so the same Defense stops less against stronger monsters:
| Armor | Classes | Weight | Ceiling |
|---|---|---|---|
| Heavy | Warrior, Barbarian, Paladin | 1 | 90% |
| Medium | Archer, Assassin, Engineer, Monk | 0.8 | 72% |
| Light | Mage, Healer, Witch | 0.6 | 54% |
The armor class sets how close Defense can get to the 90% ceiling, which it never reaches. Monsters have no Penetration, so the last term only matters in the arena.
Physical reduction of a heavy-armor hero; multiply by 0.8 for medium armor and 0.6 for light:
| Monster level | Defense 200 | Defense 400 | Defense 1,000 | Defense 3,000 |
|---|---|---|---|---|
| Level 10 | 54.2% | 67.7% | 79.5% | 86.2% |
| Level 30 | 37.8% | 53.3% | 70.5% | 82.4% |
| Level 60 | 26% | 40.4% | 60.3% | 77.3% |
| Level 100 | 18.4% | 30.5% | 50.6% | 71.4% |
Monster armor rises with the stage's power and is capped at 75%. A hero's Penetration removes that share of it, and Penetration debuffs on a monster (armor break) add to the Penetration of every hero hitting it.
Examples: Defense 400, and 20% Penetration
Defense 400 against a level-30 monster: 0.9 × 400 ÷ (400 + 60 + 216) = 53.3% for a heavy class, 42.6% for medium, 32% for light.
A monster that cuts 58.8% of physical damage cuts 47% against a hero with 20% Penetration.
Resistances
Each resistance cuts its element's part of a hit, weighed by the armor class like Defense and lowered on the harder maps. Below zero, it makes that element hit harder:
Max Resistance comes from the passive tree. Monsters use weight 1, cannot go below 0 and are capped at 75%: a monster listed with 100% resistance to its own element counts as 75%.
Examples, and resistance above 75%
A Mage (light, weight 0.6) with 75% fire resistance takes 1 − 0.75 × 0.6 = 55% of fire damage on the Veil. On the Abyss its resistance drops to 15% and it takes 1 − 0.15 × 0.6 = 91%. A heavy hero with 30% lightning resistance sits at −30% on the Abyss and takes 130% of lightning damage.
As we read the code, the map penalty comes off before the cap is checked, so resistance above 75% is not wasted on the Breach and the Abyss, even if the stat screen calls it waste. The act boss also counts the resistance with the penalty.
Dodge, evasion and blind
Heroes avoid hits with Dodge, measured against the attacker's level and the level gap:
| Rating | vs level 10 | vs level 30 | vs level 60 | vs level 100 |
|---|---|---|---|---|
| 250 | 18.5% | 9.8% | 5.7% | 3.7% |
| 500 | 31.3% | 17.9% | 10.9% | 7.1% |
| 1,000 | 47.6% | 30.3% | 19.6% | 13.3% |
| 2,300 | 67.6% | 50% | 35.9% | 26.1% |
| 5,000 | 82% | 68.5% | 54.9% | 43.5% |
The same table gives the Block chance for a Block rating, without the level factor. Monsters have no Dodge and heroes have no Evasion.
Monsters avoid hits with Evasion, and only basic attacks: skill hits never miss.
| Monster | Agility | Misses vs Accuracy factor 1 | vs factor 1.5 |
|---|---|---|---|
| Agile | ×2 | 18.2% | 12.9% |
| Normal | ×1 | 10% | 6.9% |
| Heavy, and every boss | ×0.4 | 4.3% | 2.9% |
For a hero with exactly the base Accuracy of the monster's level (see base Accuracy); more Accuracy lowers it.
Blind on a monster helps the heroes it attacks, even heroes with no Dodge:
Bosses are immune to Blind. The Assassin's Smoke applies it.
Examples: Dodge 500, Blind 25%
Dodge 500 against a level-30 monster: 500 ÷ (500 + 5 × 460) = 17.9%. If that monster is 3 levels above the hero, 70% of it is left: 12.5%.
Blind 25% makes 20% of the monster's attacks miss a hero with 0 Dodge.
Block
Block covers the physical part of a hit and Elemental Block the elemental part, each rolled only if the hit has that part, with no level-gap factor:
Block 500 against a level-30 monster blocks the physical part 17.9% of the time. Monsters never block. Monsters in elemental biomes deal almost all their damage as their element, so against them Elemental Block matters far more than Block.
Absorption
Absorption comes last, after block, and works on the whole hit. It takes a bigger share of small hits than of big ones:
Absorption equal to five times the hit halves it. Monsters have no Absorption.
Example: Absorption 500
Absorption 500 halves a 100-damage hit (100 × 500 ÷ 1,000 = 50) but takes only 9.1% off a 1,000-damage hit (1,000 × 5,000 ÷ 5,500 = 909).
Bonuses and debuffs
Fury, Shock, Curse and Expose
These four share one "more damage" bonus, soft-capped above +300%. On a hero they raise the hero's own hits and damage-over-time ticks, but not thorns; as skill debuffs on a monster they raise everyone's damage to it:
| Total bonus | +300% | +400% | +600% | +1,000% | +2,000% |
|---|---|---|---|---|---|
| Effective bonus | +300% | +386% | +508% | +661% | +869% |
Every debuff counts in full, except that the Paladin's Condemn applies Expose that adds nothing and the Witch's Curse counts at half. Monsters have none of the four.
Fury charges. Every hit that lands on a hero gives it 1 charge, up to 10; dodged hits and the hero's own attacks give none. 4 seconds after the last hit the charges start to fade, one every 2 seconds.
The factor runs from 0 to 2: double at 10 charges with almost no Health left. Blocked hits still give a charge.
Example: the Barbarian
The Barbarian starts with Fury +6%. At 10 charges and half Health the factor is 1 × 1.5 = 1.5, so it adds +9%.
Weaken, Chill and crowd control
Weaken, Chill and Blind are defensive stats: on a hero they act on whoever attacks that hero, and as skill debuffs on the monster that carries them.
| Effect | What it does | Bosses |
|---|---|---|
| Weaken | The weakened fighter's damage ÷ (1 + Weaken) | Not immune |
| Chill | The chilled fighter's attack interval and cast time × (1 + Chill). A slow, not a freeze. | Immune |
| Blind | Helps the heroes it attacks avoid its hits (see Blind) | Immune |
| Stuns, freezes, roots, holds, grabs | Come from specific skills and push the target's next action back by their duration | Immune |
Weaken 25% cuts the monster's damage to 80%; Chill 50% makes it swing every 1.5 s instead of every second. The Witch's Jinx applies Weaken as a debuff.
Damage over time and healing
Damage over time
A hero's Bleed, Decay, Burn and Poison stats add up into one flat damage per second, dealt once a second to the hero's current target. The element does not matter:
No armor, resistance, crit, dodge or block applies, and Lifesteal heals from it.
Damage-over-time skills work like this:
- 1 Basic hitThe skill first lands the hero's basic hit.
- 2 TicksAt once and every second after that, so a 5-second effect ticks 5 times. Ticks ignore armor and resistances too.
- 3 RecastsCasting the same skill again refreshes it; the same effect from different heroes stacks.
The Healer's Sacred Flame grows on hurt targets: each tick × (0.25 + 1.5 × the target's missing Health share).
Thorns
Thorns are dealt once a second to the hero's current target, like a damage-over-time stat. Growing Thorns make them grow faster than linearly:
The level factor and Weaken apply; the amplifier bonus does not; nothing mitigates them. Lifesteal heals from them.
Examples: Growing Thorns 100% and 50%
Thorns 1,000 with Growing Thorns 100% deal 1,000 × (1 + 1 × 1) = 2,000 per second. Thorns 500 with Growing Thorns 50% deal 500 × (1 + 0.5 × 0.5) = 625. Without Growing Thorns, Thorns deal their own value.
Healing and regen
Healing Done and Healing Received change heal skills, but not Regen or Lifesteal:
| Source | How it heals |
|---|---|
| Regen | Once a second every living fighter heals its Regen (the hero-sheet value). There is no cap, and negative Regen deals damage. |
| Lifesteal | A share of the damage dealt: hits, damage-over-time ticks and thorns. |
| Heal skills | Every injured party member (or only the caster), lowest Health first, each for the full amount. |
| Heal over time | Ticks once a second, only while the member is hurt. |
| Shields | Add Absorption while they last. |
| Health buffs | Raise maximum and current Health by the same amount. |
In the arena all healing is halved.
Example: a boosted heal
A 1,000-Health heal from a hero with Healing Done 20% on a hero with Healing Received 10% restores 1,000 × 1.2 × 1.1 = 1,320.
Stats, speed and cooldowns
How stats are finalized
A hero's sheet is built in a fixed order, so the passive tree's percentage bonuses multiply everything added before them:
- 1 Gear Every affix and enchant on equipped items (each +1 of enhancement adds 5% to them) and socketed gems. Offhand "amplify" enchants then raise all item stats by a percentage.
- 2 Class growth × level Most classes grow Attack, Defense and Health; the Mage grows Elemental Damage and the Witch Chaos Damage instead of Attack. Each class page lists its growth.
- 3Class base stats
- 4Base AccuracyFormula below.
- 5 Passive tree Flat values, item "multiply" enchants, damage conversions, % increases, then "more" multipliers. Every stat is then rounded down.
- 6 Enhancement tiersThe tier effects of enhanced (+1 to +10) gear (see the Workbench).
- 7 Final scalingHealth ×10, Regen ×1.5, Absorption ×5. Combat uses these scaled values.
The Healer also gains Regen equal to 15% of its Attack, just before the final scaling. Elemental Damage is added to whichever of the hero's elements is already highest (ties go fire, ice, lightning, chaos in that order; a hero with no elemental damage gets it as fire).
With an infused weapon, Penetration also counts as Elemental Penetration, and in combat part of the hero's Attack becomes the weapon's element: it keeps the Attack bonuses and gains the element's % and "more" bonuses from the passive tree. Damage skills that scale with Attack split their bonus the same way.
Base Accuracy (step 4) depends on the level and the class:
Example: base Accuracy at level 30
A level-30 Warrior has (100 + 360) × 1.5 = 690 base Accuracy; a level-30 Mage has 460.
Attacks and casts
Every fighter swings a basic attack at a steady rhythm. Haste speeds it up in a straight line, with no cap:
Monsters have no Haste, so they swing once per second.
When a slotted skill is ready, the hero casts it instead of the next basic attack:
- 1 Pick Skills are tried in turn, starting after the last one used. Heals wait until someone is hurt. Other skills hold back when only one enemy is left and the party's basic attacks would finish it within about two seconds.
- 2 Cast The action lasts as long as the longer of the attack interval and the cast time. The cooldown starts when the cast starts.
- 3 Hit Every cast also lands the hero's basic hit. Damage skills add their own bonus on top of it, and buffs, heals and debuffs still hit the current target with it. Skill hits cannot be evaded.
Example: Haste 25%, Cast Speed 60%
Haste 25% gives 1.25 attacks per second, one every 0.8 s. Cast Speed 60% cuts the cast to 0.5 s.
Cooldown reduction
The Cooldown stat has diminishing returns: the real reduction creeps toward 80% but never reaches it.
| Cooldown stat | 10% | 20% | 30% | 50% | 80% | 100% | 200% | 400% |
|---|---|---|---|---|---|---|---|---|
| Real reduction | 9.4% | 17.7% | 25% | 37.2% | 50.6% | 57.1% | 73.4% | 79.5% |
No skill comes back faster than every 1.5 seconds, and buffs, shields and health buffs never come back faster than they last, so they cannot overlap.
Example: an 8-second skill
An 8-second skill comes back every 5.03 s with Cooldown 50%, and every 2.13 s with Cooldown 200%. A 3-second skill with Cooldown 200% hits the 1.5 s floor.
How monsters fight
Monsters swing once per second and have no crit, dodge, block, absorption, regen, lifesteal or amplifiers. Their stats per stage are on the maps and bestiary pages.
Early hordes hit softer
Below stage level 17 each normal monster's damage (not its Health) is scaled down, so a whole horde hits about as hard as a few monsters would:
| Stage level | 1–3 | 5 | 8 | 10 | 13 | 15 | 17 and up |
|---|---|---|---|---|---|---|---|
| Monster damage | ×0.027 | ×0.166 | ×0.375 | ×0.514 | ×0.722 | ×0.861 | ×1 |
The damage listed per stage does not include this.
Who gets hit
Guardians (the Warrior, Barbarian and Paladin) hold the front line:
| Attacker | Targets |
|---|---|
| Normal monsters, while any guardian is alive | Only guardians. A guardian that hits a monster pulls it at once. When another hero damages a normal monster there is a 10% chance the monster switches to that hero, until a guardian takes it back or that hero falls. |
| Normal monsters, with no guardian | Spread evenly over the party. |
| Bosses, stage and act | Always the first living guardian in party order. They ignore aggro. |
Melee monsters cannot target flying heroes. Bosses are immune to stuns and other crowd control, Chill and Blind, and have low evasion.
When a hero falls
| A hero falls | The buffs, shields and auras it gave the party end with it. It stays down until the stage boss is beaten, the party is wiped or the stage changes. |
| The party is wiped | The stage restarts, or the party drops one stage back if the "drop down on death" option is on. |
| Wiped at an act boss | The party goes back to stage 9. |
Worked example
A level-30 heavy-armor hero fights a normal stage-10 monster in Floating Isles on the Veil:
The hero
- Level
- 30, heavy armor
- Attack
- 500
- Crit Chance
- 10%
- Crit Damage
- +50%
- Defense
- 400
- Resistances
- 30%
- Accuracy (base)
- 690
- Dodge
- 800
- Block
- 500
- Absorption
- 500
The monster
- Level
- 30
- Biome
- Lightning
- Agility
- Agile
- Physical damage cut
- 58.8%
- Raw hit
- 1 physical + 180 lightning
Hero hits monster
| Step | Working | Result |
|---|---|---|
| Crit and armor, on average | 500 × (1 + 0.1 × 1.5) × (1 − 0.588) | 236.8 per landed basic attack |
| Evasion of the agile monster | 511.5 ÷ (511.5 + 5 × 690) | 12.9% of basic attacks miss |
Skill hits always land.
Monster hits hero
| Step | Working | Result |
|---|---|---|
| Physical reduction | 0.9 × 400 ÷ (400 + 60 + 216) | 53.3% |
| Lightning after resistance | 180 × (1 − 0.30) | 126.0 |
| Block, physical part only | 17.9% chance to halve the physical part | 126.4 on average |
| Absorption 500 | 126.4 × 632 ÷ (500 + 632) | 70.6 |
| Dodge 800 | 800 ÷ (800 + 2,300) = 25.8% of swings miss | 52.4 per swing, on average |
What we could not confirm
Read from the code, not yet checked in the live game:
- Hit-by-hit fights. The shipped settings turn on the hit-by-hit engine. If the launch build switches it off, stage progress falls back to an averaged model that uses the same formulas in expectation.
- Class weight on resistances. Light classes keep only 60% of their resistance, medium classes 80%. The armor tooltip does not mention it.
- Damage over time and thorns ignore all mitigation. This should be tested against high-armor bosses.
- Cooldown counts twice for instant damage skills. It shortens their cooldown and also raises their damage per cast. That is what the code does; whether it is intended is unknown.
- About 40 skills have scripted extras (multi-hits, chains, marks, turrets) that this guide does not cover.
- Which monster is agile. The game picks agility from an older three-monster list per act, which may not match the monster on screen.
- Arena, Rift colossi and clan beast hunts reuse the engine with their own rules, not covered here.
- Display caps. The stat screen marks resistance above 75% (85% with Max Resistance) and Penetration above 100% as waste. Haste, Crit Chance, Dodge and Block have no cap in combat.
Source: closed-beta game client 0.7.2. Data from the closed beta, so values may change at launch.