Tuesday 15 September 2015

Archon Wizard Toughness Stacking

I've written before about how to maximize a formula of the form (1 + ax) (1 + by). There is a fixed difference between x and y that should be maintained. For example, if you could choose to put points into either "life gain A" which increased your life by 2% per point or "life gain B" which gave only 1% per point - but stacked multiplicatively with A - then if you had 100 points you'd want 75 in A and 25 in B. But if you had 1000 points you'd want 525 in A and 475 in B. With 1,000,000 points you'd want 500,025 in A and 499,975 in B. You want to keep them at a fixed difference of 50 points. In general, the difference is (a - b) / ab, or to put it another way, x = k/2 + (a - b) / 2ab where k is the number of points to spend.

What's a little weirder is that if option A gave a billion percent and option B gave one percent, the ideal difference between them would be only 100. You can try it yourself and see, though. Calculate (1 + 10,000,000 * x) * (1 + .01 * y) for x = 300 and y = 200. Then for 301 and 199, and 299 and 201 respectively. It goes down, not up, when you move a point from the 1% option to the billion percent option.

If you have an equation that goes (1 + ax) (1 + by) (1 + cz) then the formula becomes a lot more complex really fast, but the essential idea that this is a fixed level you want to get them all to before increasing them all equally is still there. That is, x - y should be constant and x - z should be constant. The magnitude of a, b and c only modify what the constant is. The nice this is that there is any easy way to solve for the ideal difference, and that is to simply imagine z was constant, figure out the difference between x and y, then imagine y was constant and figure out the difference between x and z.

This is the formula for Diablo 3 toughness, with four variables. You have vitality, percent life increase, armor and resistance. Each one follows the (1 + ax) formula. For armor, a = 1/3500. For resist all, a = 1/350. For percent life a = 1/100 and for vitality a = 20/79. Based on this, if you could assign points any way you chose, you'd put 1748 points into vitality, 1700 into percent life, 1575 into resist all, and then distribute the rest of your points evenly.

You don't get to just spend points, though. You certainly don't get to have 1700% increased life increase. Instead, you get to choose items with random stat values. Even if we set the randomness aside, we still have itemization values. A point of one thing is not the same as a point of another thing. On your chest piece, for example, you have have up to 595 bonus armor, 15% increased life, 100 resist all, and 750 vitality. And the value of some of these varies from item to item, but the value of others don't. Every item have have 100 resist all except weapons and off-hand items. Some items can have 15% increased life, and the amulet can have 18%. Some items have up to 595 armor others have only up to 397. For the most part those items that can have only 397 armor can also have only 500 vitality, but the pants slot has only up to 500 vitality and can still have 595 armor.

Let's take things easy and ignore all the different itemization. We'll look at the chest piece. We know how to choose if you have the choice between 1 point of each stat, but what about points in sizes they really come in? If we know that one item worth of armor gives 595 armor, one item worth of resist gives 100, one item of life give 15% and one item of vitality gives 750, then we can readjust our parameters.

Now, instead of use 1/3500 as the armor coefficient, we can use 0.17, which is 1/3500 times 595. Resist All 0.2857. Life percentage is 0.15 per item and vitality is 185.87 per item. Those numbers little misleading if we are talking in items, though, since you can't shed the 147 vitality you got from leveling up and you'll have 5598 armor for just wearing items. Instead we'll use 4.97 for a vitality item and count the 147 base vitality as base life, and we'll have 0.065 for armor since you actually need to get 9098 additional armor to double your toughness, not just 3500. If you are a wizard then you probably have at least 900 base resists, making the number to double your life with resists 1250 instead of 350, so that resist number should be 0.08. Now we have the following: You want 7.5 vitality items, 5.9 resist all items, 4.3 percent life items and then you begin taking them in equal numbers.

What if you are an archon wizard, though? If you have energy armor on then you typically have 100% or more bonus armor and nearly the same bonus resists. Suppose I add 110% more armor and 100% more resists, then what happens?

The effect might be a little counter intuitive. If you double the value of armor, you double the base armor as well. The amount of armor you need to double your life is the amount of armor you have plus 3500. If the value of armor is going to be doubled then instead it becomes the amount of armor you have plus 1750. That's because the armor you have is doubled just the same as the armor you are going to get. So the coefficient for armor - the 'a' in the (1 + ax) where x is the number of items with bonus armor - only goes from 0.065 to 0.082. And the coefficient for resists increases from 0.08 to only 0.093. That does make a big difference in the item count, though. You'll want 6.1 vitality items, 2.8 percent life items, 0.7 resist items and then add all items equally.

Let's see if that can be translated into practical terms. Vitality can be found on every item, percent life bonus on only 8, armor and resist all on 10. Since percent life is the scarcest of the modifiers and the second best, it seems that focusing on percent life should be the goal for toughness. It's also worth noting that you can get a full 15% increased life on rings which roll lower bonuses for most stats.

Of course the life component of toughness is not as good as the damage reduction component of toughness because damage reduction also increases recovery. There's lots more math to do.

No comments:

Post a Comment