Contents: 1. Damage Types | 2. Damage Modification | 3. Application Order | 4. Damage Formulas | Acknowledgements
There are six different damage types in Diablo II: Fire, Cold, Lightning, Poison, Magic, and Physical. Each of these has its own resistance, although only four of them are shown on the character screen.
- Fire damage: Firewall (Sorceress) and Fire Arrow (Amazon)
- Cold Damage: Frozen Orb (Sorceress) and Freezing Arrow (Amazon)
- Lightning Damage: Nova (Sorceress) and Lightning Fury (Amazon)
- Poison Damage: Poison Nova (Necromancer)
- Magic Damage: Bone Spirit and Bone Spear (Necromancer) as well as the bonus damage of Berserk (Barbarian)
- Physical Damage: Normal attack and most other non-elemental attacks
There are seven types of damage modification in the game:
- Resistances
- Percentage absorb
- Direct absorb
- Damage reduced by X and Magic damage reduced by X
- Sorceress's Energy Shield
- Necromancer's Bone Armor and Druid's Cyclone Armor
- Unit type modification
| Damage Reduction Ability | Abbreviation | Damage Types Affected | Difficulty
Penalty (Nightmare/Hell) |
Lower Limit | Upper Limit | An Example Item With This Ability |
|---|---|---|---|---|---|---|
| Resist +X%, 4 different types | Resistance | Fire/Cold/Lightning/Poison |
|
|
|
Most items in the game |
| All Resistances +X |
Resistance |
Fire, Cold, Lightning, and Poison | As above | As above | As above |
Tearhaunch (unique greaves) |
| Magic Resistance +X% 5) |
Resistance |
Magic |
- |
-100% |
75%1) / 100%3) |
Safety crafted shield 6) |
| Damage Reduced By X% (physical resistance) |
|
Physical |
|
|
|
Shaftstop (unique mesh armor) |
| Damage Reduced By X |
|
Physical |
|
|
|
Duskdeep (unique full helm) |
| Magic Damage Reduced By X |
|
Fire, Cold, Lightning, and Magic |
|
|
|
Greyform (unique quilted armor) |
| Absorb X%, 3 different types |
|
Fire/Cold/Lightning |
|
|
|
Raven Frost (unique ring) |
| +X Absorb, 3 different types |
|
Fire/Cold/Lightning |
|
|
|
Blackhorn's Face (unique death mask) |
| Energy Shield (Sorceress) |
|
Physical, Fire, Cold, Lightning, and Magic |
|
|
|
- |
| Bone Armor (Necromancer) |
|
Physical |
|
|
|
- |
| Cyclone Armor (Druid) |
|
Fire, Cold, and Lightning |
|
|
|
- |
| Unit Type Modification |
|
All damage types |
|
|
|
- |
| + Poison Length Reduced by X% 4) |
|
Poison 4) |
|
|
|
Death's Hand (set gloves) |
Difficulty penalty applies only to players and hirelings. It does not affect monsters, golems, and minions.
Resistances are reduced by certain skills as well as the difficulty penalty. The final resistance is calculated as follows:
- Sum up resistances from all sources
- Apply all reduction effects, except Cold Mastery --> subtract their effects from the result
- Apply cold mastery --> multiply the result by 1 - Cold Mastery % / 100 and round down (only with cold resistance)
- Apply difficulty penalty --> subract the penalty from the result
- Apply lower and upper limits
For example, with cold resistance, you have to take all these effects into account. Its formula is as follows:
Total Cold Resistance = [(Sum of Cold Resistances - Sum of Cold Resistance Reduction Effects) * (1 - Cold Mastery % / 100)] - Difficulty Penalty
In this formula, difficulty penalty is 40 for nightmare difficulty and 100 for hell difficulty. The values of reduction effects are entered as positive values into the sum. [] indicates rounding down. Then, to deterimine the final cold resistance, you apply the lower and upper limits to the total cold resistance.
The effect of MDR is reduced against certain continuous attacks. Learn more about it here.
The damage is yet modified by the type of attacker and defender (XvX factor). The different factors are listed in the table below. For example, 1/4 means that damage is reduced to one-fourth normal.
| Defender | |||||||
|---|---|---|---|---|---|---|---|
| Player | Hireling | Golem | Minion1) | Special Boss2) | Monster | ||
| Attacker | Player |
|
|
|
|
|
|
| Hireling |
|
|
|
|
|
| |
|
|
|
|
|
|
|
| |
| Act 1-4 Boss |
|
|
|
|
|
| |
| Baal |
|
|
|
|
|
| |
| Monster |
|
|
|
|
|
| |
- Absorb gives only so much life as it de facto reduces.
- The life from absorb is added to one's current life amount, but the sum cannot exceed one's maximum life. Hence, it is possible to take damage even with great amounts of absorb. In fact, if the final damage done exceeds one's maximum life, absorb does not prevent death.
- Rivo's tests show that unit type modification XvX applies to both damage and life gained from absorb.
- The life amount gained from absorb is modified by XvX penalty, albeit Absorb comes before XvX in the application order.
Scroll of resistance, which one receives from Malya in Act V after rescuing Anya, adds 10% to fire, cold, lightning and poison resistances.
There is a well-defined order in which the damage modification effects are applied to the damage:In each of these phases, damage cannot be reduced below zero. The result is what I call Damage Dealt. Life gain, mana loss and damage dealt get applied in the following order:
- DR and MDR
- Resistances
- Absorb%, also add life
- Absorb, also add life
- BA and CA
- XvX (modifies also life gain)
- ES (modifies also life gain)
- Reduce mana equal to two times of the damage absorbed by Energy Shield
- Add life gained from absorb
- Reduce life equal to Damage Dealt
Damage Goes To Mana is applied after Energy Shield.
The source damage for Thorns, Iron Maiden, and Spirit of the Barbs is calculated from the damage after the armor skills but before the XvX modification.
Defense and blocking are calculated in a to-hit step, which occurs before damage modification mechanics. The exact order of the game mechanics is the following:
- Check Defense (see to-hit calculations)
- Check Blocking (applied at 1/3 if the defender is running)
- Determine damage done by the attacker, if the attack hits
- Apply damage modification mechanics
Assuming that damage is not reduced to zero in any step, we get the following equations for damage dealt, life gained and mana lost:Damage Dealt = ((Damage - DR) * (1 - Resistance / 100) * (1 - Absorb% / 100) - Absorb - ArmorSkill) * XvX * (1 - ES / 100)Resistance, Absorb% and ES are given as integer values in these equations, such as 50.
Life Gained = ((Damage - DR) * (1 - Resistance / 100) * Absorb% + Absorb) * XvX * (1 - ES / 100)
Mana Lost = 2 * ((Damage - DR) * (1 - Resistance / 100) * (1 - Absorb% / 100) - Absorb - ArmorSkill) * XvX * ES / 100
If we further assume that life can be fully added to the character's life amount (it doesn't exceed the maximum), we can calculate the final damage as follows. (It is the damage actually inflicted to the character counting both damage dealt and life gained from absorb.)Final Damage = Damage Dealt - Life GainedBy expanding the terms, we get:Final Damage = ((Damage - DR) * (1 - Resistance / 100) * (1 - 2 * Absorb% / 100) - 2 * Absorb - ArmorSkill) * XvX * (1 - ES / 100)Negative final damage means that you gain life.Terms in the equations
- Damage = Original damage dealt by the attacker
- DR = Damage reduced by X (vs. physical damage) or Magic damage reduced by X (vs. fire, cold, lightning and magic damage)
- Resistance = Resistance (the appropriate one vs. damage type) or Damage Reduced by X% (vs. physical damage)
- Absorb% = Percentage absorb (the appropriate one vs. damage type)
- Absorb = Direct absorb (the appropriate one vs. damage type)
- ArmorSkill = Necromancer's Bone Armor (vs. physical damage) or Druid's Cyclone Armor (vs. fire, cold and lightning damage)
- XvX = Unit Type Modification, see the table above.
- ES = Sorceress's Energy Shield (vs. all damage types except poison)
Assa2 for confirming that magic resistance is not affected by difficulty penalty and that the scroll of resistance does not affect magic resistance.
Jarulf for the application order of the reduction effects and for information about unit type modifications.
Occhidiangela for confirming that magic resistance is not affected by difficulty penalty and that the scroll of resistance does not affect magic resistance.
Rivo/Karon for testing that the unit type modification (XvX) and Energy Shield are applied also to the life gained from absorb, and for confirming that life gain from absorb does not affect Mana Lost.
Ruvanal for testing that MDR applies to fire, cold, lightning and magic damage but not poison damage.
Steve Estes for suggesting to add the application point of Damage Goes To Mana and how defense and blocking relate to damage modification effects.
Valkemen for initially pointing out that magic resistance is not affected by difficulty penalty.