%Life taken
Damage reduction through resists and armor are a must in lategame D3, especially so as a Barb (which I am). Without a good 700 all resist, and 7k armor or more, you’re in for a rude awakening if you’re meleeing Inferno enemies. But this is common knowledge – most people know that in the later difficulties, you definitely need a good solid DR. But how does %Life factor in?
Well, let’s say that instead of minimizing the amount of damage you take, we want to minimize the amount of damage you take, expressed as a percentage of your health. This changes the equation from:
(damage done)*(1-%damage reduction) = (%damage taken)
Where the “damage reduction” portion of the equation is where we put our emphasis, into:
((Damage done)/(Life))*(1-%damage reduction) = (% life taken)
Now, we can focus on both life and DR.
The motivation for %Life taken is twofold:
1. I’m a barbarian, and most of the healing done to me is a percentage of my life total. Therefore, increasing my life doesn’t diminish life I get from revenge healing and other (non-LoH/regen) sources of healing. For classes with more or less no healing options, this also applies as you’re effectively just using your effective health, and when that runs out, that’s that.
2. To try to determine some kind of stat weights for defensive stats – even somewhat inaccurate ones - so that when looking at a piece which has tradeoffs on it, we know whether that is an upgrade or not.
Note: This is the metric I use because it seems intuitive given the setup of Diablo III’s calculations. There’s probably an EH formula out there somewhere which does more or less the same thing, but this is how I think of it.
Scaling in Theory
But, as is important to know in determining what gear to take and how much of each stat to take, how do they scale in the above equation comparatively?
This is actually a very easy calculation. Notice that since the equation for %damage reduction for x all resist is, y armor, and z Life% is:
((Damage done)/(((100+z)/100)*Life)) * (1 – x/(300+x)) * (1 – y/(3000+y) = ((Damage done)/(Life)) * (100/(100+z))* (300/(300+x)) * (3000/(3000+y))
In other words, they all affect the %life taken calculation in the same manner, but at different rates. Roughly, z = 3x = 30y.
This means that if you see a piece with 16% life, and you see another piece with 48 all resist, and you currently have 0 Life% and 0 resist, they’re going to affect the %life taken calculation (i.e. the % of your life you taken from an enemy’s hit) in roughly the same way.
Scaling in Practice
The above is not a very compelling argument for taking +life % gear unless we do a little more work. The reason is that the + life% totals seem to be lower on gear than resist totals by more than our scaling rates would indicate should be the case. It’s not uncommon on a level 62 or 63 piece with all resist to have 60 or 70 all resist – but I personally have not yet seen a piece with 20% life on it (I play hardcore, though, so the AH is much less populated than SC, YMMV).
However, what we can note is that at certain (lower than a person would think) levels of all resist, life% becomes a very attractive stat. The reason for this is that each defensive stat (armor, resist, life) is affected by diminishing returns, so that when you are at 600 resist, another 50 resist might not have as much of an impact on the %life taken calculation as 10% life would. But of course, that’s a qualitative statement, and why say something qualitatively when we can just prove it with math, and moreover, show you how to assess the impact these stats have mathematically?
Stat Evaluation
By taking partial derivatives, we can see that by increasing each stat we get the following returns (note that these values are negative, indicating a lower damage taken when increasing each stat):
X: -(100/(100+z))*(3000/(3000+y))*(300/(300+x) * (1/(300+x))
Y: -(100/(100+z))*(3000/(3000+y))*(300/(300+x) * (1/(3000+y))
Z: -(100/(100+z))*(3000/(3000+y))*(300/(300+x) * (1/(100+z))
I’ve set it up this way specifically to make a point. Only the last multiplier is different, and therefore, the value of the last multiplier is what we’ll be considering. These formulas can be useful in assessing gear tradeoffs.
Example: Here’s an example that also serves as an illustration of what I said earlier – that once diminishing returns are taken into account % life looks better). Let’s say we have a choice between 50 all resist and 10% health, and we currently have 300 all resist and only 15 +life %. Which one’s better? According to the analysis in the previous section, if we were to have 0 all resist and 0 +life%, 50 all resist would be almost twice as good as 10% life (since 10% life is equivalent to 30 all resist when both are at 0). However, with just 300 all resist, and a 15% helmet gem, we can see that the last factor of our partial derivatives above are going to be (when multiplied by the amount of increase to give us an estimated effectiveness):
10% life: 10 * (1/(100+15)) = .087
50 all resist: 50 * (1/(300+300)) = .083
Now, this is an estimated change (and you’d have to recalculate a much longer equation to know the exact change) but it gives us a quick idea – it looks like they’re close, but 10% life is just better.
The reason I love this method of doing things is that it’s really easy to figure in your head. Is 10/115 bigger than 50/600? No? Then I’ll take the life.
Effects on Vitality
You can theoretically use this for vitality as well – assuming Diablo III gives you an accurate number of life you’ll be gaining (I’ve never noticed it being wrong before). The big difference is that essentially you’ll be considering the number you gain as a percentage of your life total (after %life) and then applying that as if it were a %life gain from 0%life. For example, if you have 56k health, and you’re considering 50 all resist while at 300 all resist or gaining 5600 health, you’d use the same partial derivative factors above to assess:
5600 health (10% life) from Vitality: 10 * (1/(100+0)) = .1
50 all resist: 50 *(1/(300+300)) = .083
Looks like, again, the life is better.
Life on Hit/Regen
This is one of the factors not included in this statistic. If you have a ton of regen or LoH, you may consider another method, as survivability from these stats doesn’t synergize with +Life % the same way damage reduction stats do.
Ranged/Melee Reduction
These are in a weird spot because they only reduce a portion of your damage taken and that portion isn't readily quantifiable, but if it's melee damage you're worried (and therefore are comfortable ignoring non-melee damage in your calculations) about % reduced melee can be applied similarly to the way %life gained by vit is applied - after all, it is just another multiplier applied to the %life taken equation. For example, if you are looking at a SoE with 17% melee reduction, the partial derivative factor would be:
17% melee reduction: 17 * (1/(100+0)) = .17
Based on a calculation below, you can see this is equivalent to 187 resist all at 800 resist all (you can see why people use these things!)
Conclusions
I see a lot of people running around on the forums talking about how they have 900 all resist, 8k armor but only 45k life. Using the above equations, this seems strange. At 800 all resist, the value from your partial derivative is:
100 resist @ 800: 100 * (1/(300+800)) = .091
At this point, you can see that even a 10% gain in health (4500 health or about 100 vit with 30-ish Life%) is actually better for you than the last 100 resist it takes to get to 900 all resist (see how easy these formulas are to use?). I think vitality/% life is worth more than the value people like these imply, and I’ve got the metric to prove it.