Damage calculation
From the click to the number on your screen: every step of the math the server does, in the order it happens.
Updated on August 10, 2026Every hit in the game, yours or the monster's, goes through a single function on the server: `CalculateDamageAsync`, in `src/GameLogic/AttackableExtensions.cs`. It always runs in the same order, and understanding that order explains almost everything that looks odd in combat: why the damage is sometimes laughable, why the target's defense matters less with a skill than without one, and why a critical hit is not simply double.
The client calculates nothing. It draws the number the server sent. If the weapon tooltip says one thing and the number on screen says another, the screen is the one that is right.
The full sequence
- 11. Did it hit?
Before any math, a roll decides whether the hit lands. If the target's defense rate is greater than or equal to your attack rate, the chance to hit is fixed at 3%.
- 22. Quality rolls
Three independent dice: critical, excellent and ignore defense. Each one has its own chance coming from your stats.
- 33. Target's defense
The defense is read (PvP or PvM) and multiplied by the defense reducer. If the hit ignored defense, only the impenetrable part is left.
- 44. Base damage
The character's minimum and maximum damage, plus the damage of the skill used. This is where the weapon, the stats and the trees come in.
- 55. Roll and subtraction
Rolls between minimum and maximum (or uses the maximum, if it was critical or excellent) and subtracts the defense.
- 66. General modifiers
Flat bonuses, target reducers, the minimum floor by level and the damage increase multipliers on both sides.
- 77. Skill multiplier
Only exists when you use a skill. It is the last big multiplier in the math.
- 88. Block, parry and shield
The defender can zero the hit out (full block or parry) and, with damage left over, 90% of it goes to the SD before touching health.
Step 1: the hit test
The server compares your attack rate with the target's defense rate. The chance to hit is `1 - (target defense / your attack)`. When the target's defense rate is equal to or greater than yours, the chance drops to a fixed 3%.
chance = 3% if defense_rate >= attack_rate chance = 1 - (defense_rate / attack_rate) otherwise
Against monsters it uses `Attack Rate (PvM)` and `Defense Rate (PvM)`; against players, the PvP versions. Those are four different stats, and that is why a character who hits everything against monsters can miss a lot in PvP.
Step 2: critical, excellent and ignore defense
These are three independent rolls, made at the same instant. A hit can be excellent and ignore defense at the same time. When excellent and critical both come up, excellent wins, because it already bakes the critical bonus into physical damage.
| Roll | Chance stat | What it changes in the damage |
|---|---|---|
| Critical | Critical Damage Chance | uses the maximum damage instead of rolling, and adds the Critical Damage Bonus |
| Excellent | Excellent Damage Chance | maximum damage with a 1.2 multiplier and adds the Excellent Damage Bonus |
| Ignore defense | Defense Ignore Chance | the target's defense becomes only its impenetrable share |
| Double damage | Double Damage Chance | doubles the finished damage, right at the end of the math |
The impenetrable share of defense comes from the master skill node `Add Impenetrable Defense`. It is the only defense that survives a hit that ignores defense, and it is the reason that node exists.
Step 4: where the base damage comes from
The base damage has two parts that add up: the character damage (stats and weapon) and the skill damage. The skill's damage type decides which pair of stats gets read.
| Damage type | Stats used | Type multiplier |
|---|---|---|
| Physical | Minimum/Maximum Physical Base Damage | none at this step |
| Wizardry | Minimum/Maximum Wizardry Base Damage | Wizardry Attack Damage Increase |
| Curse | Minimum/Maximum Curse Base Damage | Curse Attack Damage Increase |
| Fenrir | Fenrir Base Damage | none |
A skill's damage is not just the number written on it. The server starts from the skill damage and adds the value of every tree node that strengthens that chain, both from the master skill tree and from the Enhance Skill Tree. The skill maximum is always the minimum plus half of it.
skill_dmg_min = skill damage + master tree nodes + enhance tree nodes skill_dmg_max = skill_dmg_min + (skill_dmg_min / 2)
Step 5: the roll and the defense
Here physical and magical behave differently, and the difference matters.
- Excellent: `(maximum × 1.2) + excellent bonus + critical bonus`.
- Critical: `maximum + critical bonus`.
- Normal: a roll between minimum and maximum.
- Two equipped weapons double the number at this point (the skill damage had already been halved earlier, precisely for that reason).
- Only after that is the defense subtracted.
- A two handed weapon adds its extra percentage after the defense.
- The defense is subtracted first.
- Excellent: the result already without defense is multiplied by 1.2 and gets the excellent bonus.
- Critical: the result without defense gets the critical bonus.
- Normal: a roll between minimum and maximum, and then the defense comes off.
- There is no dual wielding and no two handed weapon bonus here.
Step 6: the general modifiers, in order
| # | What happens | Comes from | Effect |
|---|---|---|---|
| 1 | Adds the Greater Damage bonus | Elf buff | flat value added |
| 2 | Berserker (Wizardry and Curse only) | Summoner buff | multiplier on the damage |
| 3 | Weakness (physical only) | Summoner debuff | cuts a percentage of the damage |
| 4 | Master tree weapon passives (physical only) | weapon mastery nodes | flat value added |
| 5 | Overrate (against monsters only) | target's defense rate higher than yours | damage drops to 30% |
| 6 | Reduction from the target's armor | Armor Damage Decrease | cuts a percentage |
| 7 | Minimum floor | your total level divided by 10 | at least 1 damage |
| 8 | Attacker's damage increase | Attack Damage Increase | general multiplier |
| 9 | Target's received damage reduction | Damage Receive Decrement | general multiplier |
The floor by level is the reason you never see a zero on an armored target: even if the defense swallows everything, the hit delivers at least `total level / 10`, with an absolute minimum of 1.
The overrate only applies against monsters. If their defense rate is higher than your attack rate, the whole damage drops to 30%. In PvP that rule does not exist.
Step 7: the skill multiplier
If you used a skill, the damage built up so far gets the `Skill Multiplier`. Skills with their own multiplier (coming from tree nodes) replace the general value. Without a skill, an equipped Dinorant gives 1.3 times the damage on a normal attack.
After that, in this order, come the defender's Soul Barrier (cuts up to 90% of the hit and charges them mana per hit), the final flat bonuses, the PvP bonuses, the combo and the double damage roll.
| Situation | Effect on the damage |
|---|---|
| Classic duel (target with no SD) | damage multiplied by 0.6, meaning 40% less |
| PvP inside Chaos Castle | damage divided by 2 |
| Classic PvP inside Chaos Castle | divided by 2 again, on top of the previous one |
| Blade Knight combo completed | adds the Combo Bonus from the Combo Strengthener node |
| Double damage rolled | doubles the final damage |
Step 8: block, parry and the shield
The last two things happen on the defender's side, and they do not have to do anything for it.
- Full block (chance coming from the shield) or parry (chance coming from a melee weapon, and only against physical damage) zero the hit out completely.
- Partial block takes ten times the shield's defense off the remaining damage.
- What is left is split between SD and health: 90% to the SD and 10% to health, if the defender has SD.
The 90% split can change: the attacker lowers it with `Shield Decrease Rate Increase` and the defender raises it with `Shield Rate Increase`, always within 0% to 100%. And there is a chance to pierce the shield entirely, which throws the whole hit into health even with a full SD.