Mitigation and Survivability in Diablo III

In my last post, I mentioned that I might go more in-depth on some Diablo III theorycraft topics. Here’s the first. I’ll review the math surrounding mitigation in Diablo III and discuss what I think is the most helpful way of keeping track of it for everyday purposes. I also made a simple tool for doing any of the computations discussed here for any stat values; it’s linked below but I’ll also put it here so it’s easy to find: D3-mitigation.

The Mitigation Formula

Armor in D3 reduces all incoming damage by a constant factor M:

M=frac{A}{A+CL}

Where A is your armor stat, L is your attacker’s level, and C is a constant equal to 50 in this game.

Every hit is then further reduced by the appropriate resist (physical or one of the 5 magical schools). The mitigation from resist follows the same formula as mitigation from armor, except that C is equal to 5 instead of 50 (which, as we’ll get into later, roughly makes a point of resist 10 times as effective as a point of armor).

Effective HP and the Armor and Resist Factors

A common way of thinking about the combined effect of HP and damage mitigation is concept of “effective HP”: how much raw damage (damage before mitigation applies, a number you never see onscreen) can I take before dying? The biggest advantage of the EHP concept is that it condenses all of your survivability into one index. The biggest disadvantage is that if you take it completely straight, it tends to undervalue mitigation, because mitigation has the added effect of increasing the utility of all healing done to you, while a bigger HP pool does not.

Even though following EHP fully is not a complete solution, I’m going to borrow heavily from one important concept: thinking of mitigation as scaling up the value of your HP and healing by some constant factor, rather than looking at the mitigation percentage. The reason is that the formula determining the mitigation percentage is hard to grok. A lot of players try to figure out the “diminishing returns” of armor and never really get anywhere. And even for those of us who understand it, it’s an unwieldy enough calculation that we don’t want to go through it mentally every time we look at a new piece of gear.

The way I think of armor is in terms of the “armor factor”: the ratio by which my armor mitigation amplifies the effectiveness of both my HP and any healing. If my mitigation is 50%, then my HP pool and any healing are worth twice what they look on paper–my armor factor is 2. If my mitigation is 66.6%, my armor factor is 3. In general:

F_A = frac{1}{1-M}

We’ll get more into why this is a useful way of thinking about things throughout the post. First is an important mathematical result.

Scaling

Above I’ve given the mitigation formula and the definition of the armor factor. The first thing we want to do is find the armor factor as a function of A. Combining the equations and eliminating M (see Appendix A) leads to a result that has long been familiar to anyone who has done any WoW theorycraft:

F_A = 1+frac{A}{CL}

The key here is that it increases linearly with A (each time A increases by an amount equal to CL, your armor factor increases by 1). Viewed this way, the marginal value of armor doesn’t “diminish” as it gets higher.

The mitigation from armor and resist on a given hit multiply together. So we can say that effective HP grows with both the armor factor and the resist factor:

H_E = H F_A F_R

where

F_A = 1+frac{A}{C_A L}
F_R = 1+frac{R}{C_R L}

Against level 60 enemies,

F_A = 1+frac{A}{3000}
F_R = 1+frac{R}{300}

This should help you visualize how your armor factor and resist factor expand your HP pool for survival purposes.  Each factor increases linearly with the corresponding stat (armor or resist). For armor, the magic number to keep in mind is 3000–every 3000 additional armor increases your armor factor by 1. 3000 armor doubles your HP pool, 6000 triples it, 9000 quadruples it, etc. For resists, use the same intuition, but with 300, 600, 900, etc. (Against level 63 mobs in Act3-4 Inferno, the magic numbers will be 3150 and 315).

Overall I find that thinking in terms of the armor and resist factors is a much more intuitive way of keeping track of my mitigation. An armor factor of 2 means that my HP and healing goes twice as far. And because each factor scales linearly with its corresponding stat, the effect of armor/resist increases is much easier to ballpark in my head than re-applying the mitigation formula constantly. When I see 300 armor (at level 60), I think “increases my armor factor by 0.1” Comparisons between armor, resist, and Vitality on gear become much quicker (more on this below).

Healing

Now it’s time to pause a bit to talk about the practical effect of mitigation. It has one major benefit aside from increasing your ability to absorb a large amount damage at once: it amplifies all healing. This matters increasingly as you obtain more regen and life leech and have to rely on other similar things to last through longer encounters. The important point here is that the outcome changes based on whether the healing effects are constant value or %-based. If you’re a Demon Hunter using Preparation to heal 60% of your HP each encounter, that will benefit equally from a larger HP pool or from more mitigation. But if you’re a Monk healing yourself, that heal is for a constant value, and will be markedly more valuable with higher mitigation (an interesting point here is the Monk heal and many other heals don’t scale with weapon damage like most D3 skills do–their effectiveness only scales with mitigation).

Everyone has a flat heal of at least 12,500 every encounter from their potion, and since common forms of self-healing from gear (+HP/sec, % leech, HP on hit, shield blocking) don’t scale with your health pool, increased mitigation improves your survivability by more than it appears from HP alone. If you ever desire to estimate this more exactly, then instead of using your plain HP pool for H in any computations, use your HP pool + an estimate of how much you can heal over the course of an encounter. For now we’ll continue to remind ourselves that healing matters by leaving in a fudge factor Q representing your healing intake for an encounter:

H_E = (H+Q) F_A F_R

Choosing Stats

At level 60, 1 Vitality gives 35 HP, 1 Str gives 1 armor, and 1 Int gives 0.1 to all resists (and in addition, straight +resist all is often found on gear).

Starting again with the basic EHP formula:

H_E = (H+Q) F_A F_R

After some basic calculus (see Appendix B):

1 HP gives F_A F_R  extra EHP

1 Vit gives 35 F_A F_R  extra EHP

1 armor or 1 Str gives frac{(H+Q) F_R}{3000} extra EHP

1 resist all gives frac{(H+Q) F_A}{300} extra EHP

1 Int gives frac{(H+Q) F_A}{3000} extra EHP

To convert armor and resist into Vit equivalents:

1 armor is worth frac{H+Q}{105000 F_A} Vit.

1 resist is worth frac{H+Q}{10500 F_R} Vit.

As always, adjust accordingly for mob levels other than 60.

Example and spreadsheet

Applying a real-world example, let’s say I have 30,000 HP, 3000 armor (as discussed above, 50% mitigation against a level 60), and 300 resist all (same). So the armor and resist factors are both 2, my effective HP is 120,000, and all heals expand my effective HP for 4 times their value.

Plugging into the above, 1 Vit gives 140 EHP, 1 armor/Str gives 20 (ignoring Q), 1 resist all gives 200 (again ignoring Q), and 1 Int gives 20.

Here’s a quick and dirty spreadsheet for doing the same computation for any values. I included dodge from Dexterity, which I didn’t discuss in the post. It doesn’t get into Block, which would necessitate analyzing average hit size against you: D3-mitigation

Conclusions

So comparing 1-for-1, resist all is by far the strongest survivability stat. In reality, you can’t find as much resist all on one item as you can find Vitality. But because large amounts of self-healing amplify the value of 1 resist all to a few times the value of 1 Vit, resist all winds up being very strong. Armor, comparatively, is often left behind.

A few other notes:

  • Single-element resists don’t have markedly higher values than corresponding +resist all items at the same level. So a spread of items covering individual resists is far less efficient than having +resist all in each slot. On a related note though, the ability to stack a single resist with resist all on the same item is why the Monk skill One With Everything is extremely strong–probably the best survivability talent in the game by far.
  • Armor from Str, Dodge from Dex, and resists from Int are all far weaker than HP from Vit and straight +resist all. Basically, secondary stats for your class (whichever of Str/Dex/Int are not your main stat) are not worth actively pursuing for their defensive value. What you generally want as the baseline for solid rares are your main stat (for DPS), Vit, and resist all.
  • Though I didn’t go into dodge in detail today, two things on it. First: 100 Dex gets you 10% dodge, 500 Dex gets you 20%, 1000 Dex gets you 30%, and every 1000 Dex beyond that is another 10%. The throwaway Dex on one item can get a non-Dex class up to 100, which isn’t bad. Second: dodge bonuses from all other sources multiply, rather than adding (i.e. two 10% dodge bonuses leave you with an 90%*90% = 81% chance to be hit, not 80%). So you can’t get increasing marginal effectiveness out of avoidance by stacking it higher.
  • %-based boosts to armor and resists, such as the Barbarian’s Tough as Nails, or the Wizard’s Energy Armor and Prismatic Armor, scale extremely well once your corresponding stat gets high. If my armor factor (as described above) is only 1.5, increasing your armor by 65% makes it 1.825, a 21.7% increase to your EHP and healing effectiveness. But if it’s 2, Energy Armor makes it 2.65, a 32.5% increase. If I have 3000 armor and 300 resist against a level 60, for 25% overall damage taken (armor factor and resist factor are both 2), Prismatic Armor reduces that to 15.7% damage taken, a rather dramatic increase in survivability.

Appendix A

M = frac{A}{A+CL}
1-M = frac{CL}{A+CL}
F_A = frac{1}{1-M}
F_A = frac{A+CL}{CL}
F_A = 1+frac{A}{CL}

Appendix B

H_E = (H+Q) F_A F_R
frac{partial H_E}{partial H} = F_A F_R
frac{partial H_E}{partial V} =frac{partial H_E}{partial H} frac{dH}{dV}= F_A F_Rcdot 35
frac{partial H_E}{partial A} =frac{partial H_E}{partial F_A} frac{d F_A}{d A} = (H+Q) F_R cdot frac{1}{3000}
frac{partial H_E}{partial R} =frac{partial H_E}{partial F_R} frac{d F_R}{d R} = (H+Q) F_A cdot frac{1}{300}
frac{partial H_E}{partial I} =frac{partial H_E}{partial R} frac{dR}{dI} = (H+Q) F_A cdot frac{1}{300}cdot frac{1}{10}

Armor Dyes in Diablo III

This post has nothing to do with theorycrafting. It will instead cover Armor Dyes found in Diablo III, including what difficulty level they are first available in, item costs, vendors, and related achievements.

General Info

  • There are 20 dyes available, not counting two reusable dyes from the Collector’s Edition. Dyes are purely cosmetic items and will recolor a player’s armor.
  • Each level of difficulty unlocks several new dyes. Dyes available from easier tiers are still available for their cheap prices in later tiers.
  • Each in-game dye can be used only once. It can dye one of the following armor slots: helm, shoulders, chest, gloves, pants, boots. Belts, bracers, weapons, amulets, and rings cannot be dyed.
  • Dyes can be traded between party members, sold on the AH, stacked up to 20, and put in a stash. They are initially found on vendors (see section below).
  • There are no level requirements to using dyes: a dye only available in Inferno can be put into a stash and used on a fresh level 1 character.
  • The following list of dyes shows the earliest difficulty level the dyes can be found at. The dyes then have a chance at showing up in all later levels.
  • Some details on distinctive armor cannot be completely dyed. An example of this are chest panels on Demon Hunter-only shirts. Other dyed armor may only show a faint tint on an item’s metal detail.

Dye List (First Appearance)

Normal (360g)

  • Aquatic Dye: Light Blue. Sailors from Lut Gholein distill the waters of the Twin Seas and apply the bright blue mixture to their sails in order to blend in and avoid detection by pirates.
  • All-Soaps Miraculous Dye Remover: Returns item to default color. The miraculous, mystical tonic that removes stains, cures rotfoot and tastes great! It’s got what plants crave! Warning: Do Not Drink.
  • Spring Dye: Light Green. Bright green garb is traditionally worn during the Hearth Festival in Bramwell to celebrate the first thaw of springtime.
  • Tanner’s Dye:  Brown. (appears to first show up in Act II) Leatherworkers use a variety of oils to seal their skins with a rich, natural brown pigment.
  • Vanishing Dye: Turns armor invisible. Causes materials to vanish before your very eyes! Be sure not to apply this to your undergarments.
  • Winter Dye: Light Grey. Jars of crushed Veilwood petals are buried in the snow throughout the winter to create this soft white hue.

Nightmare (1020g)

  • Autumn Dye: Orange. The monks from the Order of Yir crush the first orange leaves of autumn into tea, and apply it to their robes during the Ceremony of the Harvest Moon.
  • Cardinal Dye: Red. Once reserved only for nobility, this rich red pigment is now donned by both the influential and the courageous.
  • Desert Dye: Beige. Sandy brown pigment is carried by the merchant caravans of the Dry Steppes to reflect the sun and hide dust.
  • Ranger’s Dye: Olive. Hunters and bandits alike use the bark of the Gorsenna plant to blend in with the rustic green shadows of the forest.
  • Royal Dye: Purple. For many years the color purple was forbidden to all citizens of Kingsport outside of the Royal Family.

Hell (2160g)

  • Elegant Dye: Magenta. The bright magenta colors of the Hezna flower are always a favorite amongst the fashionable elite of Caldeum.
  • Lovely Dye: Pink. Named for the beauty of Queen Asylla, who once had a thousand gowns created in this beautiful pink color as a gift from King Leoric.
  • Mariner’s Dye: Dark Blue. Officers of vessels navigating the Skovos Isles wear deep blue garments to indicate seniority.
  • Summer Dye: Yellow. This bright yellow dye is extracted from spices shipped from Kurast at great expense.

Inferno (5040g)

  • Abyssal Dye: Dark Grey. The inky blackness seems to grow even darker when exposed to the sun, as though it were drinking in the very light that touches it.
  • Forester’s Dye: Green. The Wardens of Duncraig wear coats of rich green velvet while patrolling the woods for poachers and wolves.
  • Golden Dye: Gold. Flecks of gold are melted into boiling oil to create a rare pigment used strictly by nobility.
  • Infernal Dye: Bright Red. The bottle is warm to the touch, seeming to flicker with bright red liquid fire.
  • Purity Dye: White. This mysterious mixture seems to make any material it is applied to impossible to soil, swirling and coalescing like a perfect white cloud.

Collector’s Edition

  • Unlike other dyes, these have an infinite use and cannot be traded.
  • Bottled Cloud: Ice. The gentle wind of the heavens cools the air, infusing the area with a soft glow.
  • Bottled Smoke: Dark Silver. An eerie howl emanates from within as creeping shadows spill forth.

Dye comparison chart from DiabloWiki.net:

Vendors

  • Select vendor types have a miscellaneous dye tab–Collectors and Merchants. Other types of vendors will have a tab selling trinkets and amulets instead.
  • Vendors will generally sell between 4-8 dyes. There will be a larger pool of randomly-generated dyes as you level up (6 in Normal, 11 in Nightmare, 15 in Hell, 20 in Inferno). All-Soap’s is the only guaranteed dye that will show up every time.
  • The dye selection will reset by changing characters, changing quest chapters, and logging on/off the same character. Using a waypoint or checking back after an extended AFK will not change the dye selection.
  • Each act has a vendor in town that will sell dyes, as well as vendors from randomly-generated dungeons and events.

Act I
Arghus the CollectorNew Tristram
Wandering TinkerTinker’s HovelFields of Misery
Rodger the Alchemist

Act II
Javad the MerchantRotting Cellar by Dahlgur Oasis. Sells all items for half price–really profitable on Inferno!
Tilnan the Collector: Caldeum Bazaar
Zaven the AlchemistDahlgur Oasis.

Squirt the PeddlerSundered Canyon and Caldeum Bazaar

Act III
Vidar the CollectorBastion’s Keep Stronghold
Halmin the AlchemistThe FoundryMachines of War

Act IV
Vidar the CollectorBastion’s Keep Stronghold

Achievements

Diablo 3 Gear Basics

Now that I understand D3 theorycraft a bit better, I’m going to try to boil down a few useful things that players might want to know to have a sense of how things work. This is a basic summary that should get most people going on picking sensible gear; anyone who wants more detailed info or formulas can ask me or look them up in various places.

Really short version

  • Use the weapon with the highest listed DPS (big number in the tooltip).
  • Value other items for offensive power simply by seeing how they affect the “damage” listing in your character sheet.
  • For survivability, stack Vitality as much as you can, but armor and resists are still valuable.

Offense

1. Basic DPS Scaling

Diablo 3 tries to tie the damage of literally everything you do to one number. The goal was clearly to eliminate the complicated spreadsheeting of WoW in favor of a simple setup where any stat improvement would improve all of your skills exactly equally.

This number is the one labeled “Damage” on your character sheet. It shows the DPS you do with autoattacks (putting aside that you never autoattack in D3), taking into account weapon damage, speed, and crit chance. The logic goes like this–if a skill does a fixed percentage of weapon damage per hit, has the same attack speed as your autoattack, and the same crit chance and crit bonus as well, then its DPS will scale in parallel to this “Damage” value. If every skill in the game is designed this way, then you only need to look at one number to determine DPS upgrades, regardless if your skill setup.

So if you read no further, your takeaway is that simply equipping whatever maximizes that number will get you pretty far (also, when you mouseover any item, the tooltip will show whether your Damage will go up or down if you equip it). Below are some further details that should be helpful.

2. Weapon DPS

Your all-purpose Damage stat, roughly speaking, increases like the product of two numbers:
1) the listed DPS in your weapon tooltip,
2) your main stat (Int for Wiz/WD, Dex for Monk/DH, Str for Barb). Primary stats other than your class’s main stat do nothing for your DPS.

If this gives you the impression that your weapon slot is as important than all the other slots put together, you’re right. Finding a weapon whose “DPS” number is twice what your your current one has will give the same DPS as upgrading every other item to double their stats (note the difference from WoW, where spellpower/attackpower simply added to weapon or spell damage).

So the result here in practical terms is pretty simple to apply: you should be choosing weapons almost exclusively by their listed DPS. The “almost” refers to the following:

  • If the weapon has a socket, you can put in a Ruby for more DPS. When a Ruby is socketed, the tooltip will update to reflect that in-game, but not on the AH.
  • If a weapon has a huge amount of your main stat, it might outweigh a small reduction in weapon DPS. You can check the tooltip or equip it to see.
  • If the weapon has very useful other stats (high Vit or life leech), you might take a small DPS loss to get them. Be careful though–don’t equip a low-DPS weapon just to get good bonuses. No matter what, use a weapon with close to the maximum DPS of all weapons you have access to.
  • Some builds potentially will prefer slow weapons (see more below).

3. +Damage Bonuses

A few slots (rings, amulets, and offhands) can give bonuses that effectively give increased weapon DPS by adding to your weapon’s base damage (weapons can have these bonuses themselves too, but you can generally ignore them since it will be included in the tooltip). For similar reasons as above, these tend to be quite good. In particular, they are extremely good at low levels when your weapon’s own DPS is not very high yet. At low level, always use +damage rings (+2-4 damage is easy to find right away, including on vendors) and weapons socketed with a Ruby as soon as they become available. At higher levels it’s not quite as disproportionate on rings, but offhand bonuses seem to scale strongly. Leading to the next topic:

4. 2H, DW, MH/OH, MH/Shield?

Compared to WoW, D3 is designed so that every class has a somewhat free choice of weapon setup. Any class can viably use a two-hander, use a DW or MH/OH setup, or use a shield. A few things to know:

Roughly speaking, dual-wielding will effectively cause your weapon DPS to be the average DPS of your two weapons, increased by the 15% dual wield bonus. So unless you have two similarly strong weapons, you should not dual wield. This is especially true for Demon Hunters, who can use their best MH or 2H weapon and also use a quiver for 10+% bonus. similarly, Wizards and Witch Doctors can get a large +damage modifer from class-specific offhand frills.

Other than that, the only question is whether to use a shield. Just bear in mind that since any class is capable of using a one-handed weapon without severely hampering damage output, you always have the option. The section below on defensive stats might help clarify exactly what it gets you.

5. Weapon Speed

Revisiting the discussion in part one above, one caveat is that there’s one feature of your autoattack that doesn’t translate perfectly to all skills: the attack speed.

For a completely spammable skills, such as most classes’ signature or resource generator skills, the basic assumption of the D3 system holds (which makes sense, as these are essentially the autoattacks of D3). If I want to know how much DPS can I do with Magic Missile, I can rely completely on the Damage indicator on my character sheet.

But for a variety of skills, increasing cast speed doesn’t actually improve your DPS proportionally, for a variety of reasons: they have a cooldown, or are primarily resource-limited (Disintegrate, Meteor), or repeated casts don’t stack (Hydra, Blizzard). Whenever this is the case, a weapon that would produce slow, large hits is better than an equal-DPS weapon that produces fast, small hits.

I’ve not yet seen (or conducted) a detailed exploration of how Blizzard has attempted to correct for this. On the beta, it appeared that some cooldown-based skills actually got a multiplier for having a fast weapon, so that the final result was as desired: their damage would be equal for equal-DPS weapons, regardless of speed. So far though, I haven’t seen a list of what skills behave this way, or whether it would include skills that are not cooldown-based but would favor slow weapons for other reasons. If you’re using skills like that a lot, consider sticking with slow weapons until we know more.

Aside: note that weapon speed is notated in the opposite manner from WoW: here, a higher number means a faster weapon.

Defense

Continuing in the spirit of uniformity, armor in Diablo 3 is a flat percentage reduction against all incoming damage, physical and magical (don’t be confused by the similar terminology from WoW). After being reduced by armor, any incoming hit is further reduced by the appropriate resistance (either physical, or one of the 5 magical elements). Similarly, dodge change gives you a flat % chance to avoid nearly any incoming damage. In addition, Barbarians and Monks both take a constant 30% less damage than everyone else.

If you were familiar with how armor works in WoW, it is the same in Diablo 3: the mitigation percentage appears to give diminishing returns as you get more armor, but it’s designed so that your effective HP (the total pre-mitigation damage needed to kill you) increases consistently with each point of added armor. What’s new is that resistances now work the same way. So you can generally ignore the diminishing returns concept and think of these stats as continuously increasing your survivability by a constant amount.

There’s no great way to summarize the comparison between HP, armor, and resists, since it varies by situation. A few assorted facts:

  • 1 Str gives 1 armor, and 1 Int gives 0.1 to all resists. However, armor is scaled so that you need 10 armor for the same mitigation as 1 resist, so these wind up being similar effects.
  • 1 Vit (10 HP at low levels, more at high levels) increases your effective HP by far more than 1 Armor/Str or 1 Int. If you make heavy use of self-healing or blocking, you may derive some benefit from having a smaller HP pool and higher mitigation, but the difference is stark enough that you’re likely to be more survivable simply by favoring HP (while still taking armor/resist upgrades where you can).
  • Dex gives dodge by an odd diminishing formula that’s roughly designed to mimic the total damage reduction from similar amounts of armor/resist. The first 100 Dex does give you 10% dodge, so if you’re below that, one Dex item is basically some free avoidance.
  • The “protection” comparison in item tooltips includes armor and dodge, but not resists.
  • Blocking is a straightforward chance to reduce damage by a flat amount, applying after all other mitigation. You just read the block amount right off your shield.

Conclusion

This post didn’t get into the myriad situational bonuses available on Diablo gear (everything from runspeed to gold pickup range to magic find). There’s definitely no all-purpose comparison for these kinds of things, and I’m sure pages will be perpetually written on gearing options for every class and setup. The point was to give the picture of how basic damage and survivability are affected by all the various stats, so you can be informed when picking gear.

Hopefully this gets you going for everyday use. I may follow up at some point with more detailed analysis of specific things, and also my general comments on the game which I have to do at some point. For now though, feel free to ask on clarification for anything here.