Diablo 2

An Informational Site | Monday 1/5/2009

Magic Damage Reduction Modification vs. Frame-Based Attacks
Diablo II Expansion, patch 1.09d
Compiled by Tommi Gustafsson

Basics

Resistance and absorption both effectively reduce damage. The game first checks resistance, which is applied straight to the damage (e.g. 25% resistance lowers damage by 25%). After it, percentage-based absorption (absorb%) reduces damage and adds the same amount of life. There are also other types of reduction, such as direct absorb (e.g. +20 Lightning Absorb) and (magic) damage reduced by X, but they are not considered in this analysis.

Resistance

The basic rule for resistances is that one point of resistance reduces damage taken by 1% relative to the original damage when you have 0% absorb. That is, if you take 100 points of damage and you have 75% resistance, the damage is reduced by 75 points. In the view of damage reduction, the effect of resistances is linear, which means that, for example, 100% is twice as effective as 50%.

Effective Life Factor

However, people are not typically interested in damage reduced but damage taken, which is calculated as 100% - resistance (shown in Table 3). By comparing the amounts of damage taken, one could say that 75% resistance is twice as effective as 50%, because the former reduces your damage to one-fourth while the latter only to one-half. This is illustrated by what I call effective life factor, which tells how much damage you can sustain compared to a character with zero resistance. For example, with 100% resistance you are naturally immune to damage, and with 95% resistance you are 20 times (!) more sturdy than a zero-resistance character. For a quick reference, check the lookup table of effective life factor, which includes the effects of both resistance and absorb.

Absorb%

As a rule of thumb, one point of absorption equals two points of resistance when you have zero resistance. In fact, absorption becomes the better the lower resistance you have. At -100% resistance, one point of absorption equals four points of resistance. For example, if you have -100% resistance and you wear Raven Frost (a unique ring with 20% absorb), it is the same as getting 80% more resistance. The effect of absorption with regard to resistance is shown in Table 1. The listed values indicate the amount of damage (in percents of the original damage) each point of absorption reduces damage. For instance, 2.00 means that each point of absorb would reduce damage by 2% of the original damage. Only 50% or more absorb guarantees immunity with any resistance.

I also calculated the effect of one point of resistance with regard to absorption. This is shown in Table 2 (units are percents of the original damage). For example, 25% absorption reduces the effect of resistances effectively to half. This is not necessarily a bad thing but just interaction dynamics; increasing resistance is not as important as with 0% absorb.

Effective Resistance

Effective resistance is the amount of resistance (with 0% absorption) that has the same effect as resistance and absorption combined. You may check the lookup table of effective resistance, or you may calculate effective resistance in one of the following ways:

Way 1. Effective Resistance = Resistance + Absorb Effect Factor * Absorb%

Way 2. Effective Resistance = 2 * Absorb% + Resistance Effect Factor * Resistance

The absorption effect factor is listed in Table 1 and resistance effect factor in Table 2.

Example

If you have 35% resistance and 20% absorption, your effective resistance is 61%. That is, they have the same effect as 61% resistance and 0% absorption. This result can be seen in the effective resistance lookup table. It may be also calculated by first taking the resistance (35%) and then looking at Table 1. The approptiate absorption effect factor is 1.30, and thus the effective resistance is 35% + 1.30 * 20% = 61%. Furthermore, you can check your effective life factor in the effective life factor lookup table. It is 2.56. It may be also calculated by 1 / (100% - 61%).

Tables

Table 1. The amount of damage reduced by one point of absorb% (relative to the original damage) with different amounts of resistance. Units are percents of the original damage.

Resistance

Absorb effect

-100

4.00

-95

3.90

-90

3.80

-85

3.70

-80

3.60

-75

3.50

-70

3.40

-65

3.30

-60

3.20

-55

3.10

-50

3.00

-45

2.90

-40

2.80

-35

2.70

-30

2.60

-25

2.50

-20

2.40

-15

2.30

-10

2.20

-5

2.10

0

2.00

5

1.90

10

1.80

15

1.70

20

1.60

25

1.50

30

1.40

35

1.30

40

1.20

45

1.10

50

1.00

55

0.90

60

0.80

65

0.70

70

0.60

75

0.50

80

0.40

85

0.30

90

0.20

95

0.10

100

0.00

     

Table 2. The amount of damage reduced by one point of resistance (relative to the original damage) with different amounts of absorb%. Units are percents of the original damage.

Absorb%

Resistance effect

0

1.00

5

0.90

10

0.80

15

0.70

20

0.60

25

0.50

30

0.40

35

0.30

40

0.20

45

0.10

50

0.00

     

Table 3. Damage taken % with resistance known and absorb 0% (i.e. effective resistance).

Resistance

Damage taken %

-100

200 %

-95

195 %

-90

190 %

-85

185 %

-80

180 %

-75

175 %

-70

170 %

-65

165 %

-60

160 %

-55

155 %

-50

150 %

-45

145 %

-40

140 %

-35

135 %

-30

130 %

-25

125 %

-20

120 %

-15

115 %

-10

110 %

-5

105 %

0

100 %

5

95 %

10

90 %

15

85 %

20

80 %

25

75 %

30

70 %

35

65 %

40

60 %

45

55 %

50

50 %

55

45 %

60

40 %

65

35 %

70

30 %

75

25 %

80

20 %

85

15 %

90

10 %

95

5 %

100

0 %

Mathematics - How were these figures calculated?

According to the game mechanics, damage dealt and life gained are calculated as follows.

(1) Damage Dealt = Damage * (100 % - Resistance) * (100 % - Absorb%)
(2) Life Gained = Damage * (100 % - Resistance) * Absorb%

In these equations, it is assumed that the character has only resistance and absorb%, not other types of reduction. Further assuming that the life from absorb can be fully added to the character's life amount (it does not exceed maximum), damage taken can be calculated as Damage Dealt - Life Gained:

(3) Damage Taken = Damage Dealt - Life Gained = Damage * (100 % - Resistance) * (100 % - 2 * Absorb%)

Because we are interested only in the relative amount of the damage taken with regard to Damage. Therefore, we divide Equation (3) by Damage and use a %-sign to denote that Damage Taken % is relative to the original damage.

(4) Damage Taken % = (100 % - Resistance) * (100 % - 2 * Absorb%)

It is straighforward to conclude that the amount of damage done (the original damage) is split into damage taken and damage reduced.

(5)Damage = Damage Taken + Damage Reduced

(5a) Damage Taken = Damage - Damage Reduced
(5b)Damage Reduced = Damage - Damage Taken

Dividing the above equations by Damage, we get the relative amounts (denoted by a %-sign):

(6)Damage Taken % + Damage Reduced % = 100%

(6a)Damage Taken % = 100% - Damage Reduced %
(6b)Damage Reduced % = 100% - Damage Taken %

From Equations (6b) and (4), it follows that:

(7)Damage Reduced % = 100 % - (100 % - Resistance) * (100 % - 2 * Absorb%)

Equation (7) is also the same as effective resistance. This is natural but not obvious. Think about how resistances work. They reduce damage by percentage, which is the same as Damage Reduced %.

(8) Effective Resistance = Damage Reduced % = 100 % - (100 % - Resistance) * (100 % - 2 * Absorb%) = 2 * Absorb% + Resistance - 2 * Resistance * Absorb%

Note that this is a third way to calculate effective resistance. The formula is a bit more complicated than the two presented in the effective resistance section, but you do not need to check any tables to get a result.

To get the effect of one point of absorb, we simply take a partial derivate of Equation (7)/(8) with regard to the absorb variable (that's just what derivate does!). Similarly, we take a partial derivate with regard to the resistance variable to get its effect.

(9)Absorb Effect Factor = d(Effective Resistance) / d(Absorb%) = 2 - 2 * Resistance

(10)Resistance Effect Factor = d(Effective Resistance) / d(Resistance) = 1 - 2 * Absorb%

By reordering the terms in Equation (8) and substituting Equations (9) and (10), we arrive at the following equations:

(11a) Effective Resistance = (2 - 2 * Resistance) * Absorb% + Resistance = Resistance + Absorb Effect * Absorb%
(11b) Effective Resistance = (1 - 2 * Absorb%) * Resistance + 2 * Absorb% = 2 * Absorb% + Resistance Effect * Resistance

Equation (11a) is Way 1 of calculating the effective resistance and Equation (11b) is Way 2.

Effective life factor tells how much damage a character can sustain compared to a one with zero resistance. It is calculated as an inverse of Damage Taken %, which is calculated in Equation (4).

(12)Effective Life Factor = 1 / Damage Taken % = 1 / ( (100 % - Resistance) * (100 % - 2 * Absorb%) )