Author: yellowfive

BfA Tank Diminishing Returns

Diminishing returns shows up in many places in Battle for Azeroth: damage reduction from Armor, Stagger and blocking attacks, and chance to dodge, parry or block attacks are the most prominent. Calling it an “often misunderstood” topic isn’t quite right… most people get it. People tend to argue about it a lot more than they actually misunderstand it, because there are a lot of valid ways to look at it… it’s like the Necker cube of WoW.

We are going to talk specifically about Armor, but the same logic applies to block amount, dodge chance, etc. — they all use a fundamentally similar formula.

Armor Formula

Armor reduces physical damage taken by a percentage. The formula that the game uses is the following:

Reduction = Armor / (Armor + K)

K is a constant that depends on who is doing the damage. Check out our tank formulas article for the full details. We will use level 120 characters getting hit by other level 120 units with a K value of 6300 in this article.

For example, say I’m a level 120 Warrior with 5000 Armor getting hit by another level 120 enemy (this is what your character sheet shows in the tooltip):

Reduction = 5000 / (5000 + 6300) = 0.4425 = 44.25%

As another example, say this same Warrior only has 2500 Armor:

Reduction = 2500 / (2500 + 6300) = 0.2841 = 28.41%

Reduction Percent Diminishes

So looking at our two examples, doubling my Armor from 2500 to 5000 does not double my reduction: adding 2500 more Armor only added 15.84% reduction, not another 28.41%. This is why people say that Armor has diminishing returns: the percent damage reduction gained per point of Armor goes steadily down as you get more Armor.

Let’s stop right there for a minute and reiterate this statement as an Important Sentence:

The percent damage reduction gained per additional point of Armor diminishes as you get more Armor.

This is a fact! It’s easy to see it by inspecting your character sheet with different Armor values in-game. It is mathematically, semantically, objectively, truthfully true! So then… why do people say that Armor doesn’t actually diminish?

Time to Live

So cool, Armor makes hits against me smaller. I know intuitively that will make me live longer, and that is ultimately what I care about. But how much longer can I survive if I add a specific amount of Armor?

For easy math, we will use the following example: you have 100,000 health, and an enemy is attacking you for 10,000 damage per hit, every 2 second. You are not getting healed and have no Armor. How long will you live? Most people can do this in their heads: 20 seconds. Here’s a formula though:

T = H * F / D
  • T = Time to Live
  • H = Health (100,000 in this example)
  • F = Frequency with which you are getting hit (2, or every 2 seconds in this example)
  • D = Damage taken per hit (10,000 in this example)

Using the formula for this example instead of our super-smart brains:

T = 100,000 * 2 / 10,000 = 20 seconds

Time to Live Does Not Diminish

Now let’s bring Armor back into the picture. All that Armor does is reduce damage taken per hit, or D in our formula here. Let’s calculate what D would be with 2500 Armor and 5000 Armor:

Final D = D * (1 - R)
  • Final D = Final damage taken after being reduced by Armor
  • D = Raw damage taken (10,000 in all our examples)
  • R = Percent reduction from Armor, using the formula in the previous Armor Formula section

With 2500 Armor:

R = 2500 / (2500 + 6300) = 0.2841
Final D = 10,000 * (1 - 0.2841) = 7159

With 5000 Armor:

R = 5000 / (5000 + 6300) = 0.4425
Final D = 10,000 * (1 - 0.4425) = 5575

And now let’s calculate our Time to Live with 2500 and 5000 Armor, and align them all nice:

0    Armor: T = 100,000 * 2 / 10,000 = 20.00 seconds
2500 Armor: T = 100,000 * 2 / 7159   = 27.94 seconds
5000 Armor: T = 100,000 * 2 / 5575   = 35.87 seconds

So let’s see… when I had 0 Armor and added 2500 Armor, I lived for an extra 7.94 seconds. When I had 2500 Armor and added another 2500 Armor, I lived for… and extra 7.94 seconds! OMG they are the same! You could do this with any amount of Armor and raw damage, you will get the same result, which we will summarize in another Important Sentence:

Your Time to Live gained per point of Armor does not diminish as you get more Armor.

This is a fact! It is mathematically, semantically, objectively, truthfully true! You can say it to your friends and they have to believe you. Another way to say this same thing is that your Time to Live has a linear relationship with Armor. When people say that, they are expressing the same concept as our Important Sentence.

So… are there diminishing returns or not?

OK Yellowfive… nice math tricks. But which is it really. Does it diminish or not? Or in other words, should I be thinking about Armor as a diminishing percent reduction to damage taken, or a linear increase in time to live? Which is more useful or better?

There’s really no right answer here — it all depends on what you are doing.  But this is what I would recommend to people: even though the percent damage reduction diminishes as you get more Armor, from a practical standpoint, you want to think of the true value of Armor as linear. It doesn’t matter if you are a fresh max-level character or a totally geared-up raider, each point of Armor that you add is just as valuable as the last — your time to live against a constant damage source will increase by the same amount.

There are of course other nuances to the game that can make it a bit more complicated than that, but generally speaking you don’t want to actively avoid Armor or any other “diminishing” stat like Parry as you get more of it. Don’t let the fact that your in-game character sheet barely moves as you get more and more geared up fool you, you are in fact getting just as much value per point as you were before.

Important Note

There is a somewhat common misunderstanding that arises when talking about Time to Live. Some people look at the above and say the following:

  • With 0 Armor I lived for 20 seconds.
  • With 2500 Armor I lived for 7.94 extra seconds, and 7.94 / 20 = 39.7% longer than when I had 0 Armor
  • With 5000 Armor I lived for 7.94 seconds longer than when I had 2500 Armor, and 7.94 / 27.94 = 28.42% longer than when I had 2500 Armor

Then they say that Armor still diminishes because going from 2500 to 5000 Armor gave me a smaller percent increase in Time to Live than going from 0 to 2500. It isn’t really a “mistake” to look at it like this… but you have to realize that you aren’t actually talking about “Time to Live” anymore. You’re talking about “Percent Increase to my Current Time to Live.” You are not talking about absolute Time to Live.

An easy way to understand the difference is to look at the “units” of the quantity being measured. The unit for Time to Live is seconds. Seconds corresponds to a real, physical quantity in the world: time. In contrast, “Percent Increase to my Current Time to Live” has no units. It does not correspond to an intuitive physical quantity. It is a purely relative quantity that is relative to your current amount of Armor. Only from this relative perspective does it seem to “diminish”. When you transform it to a physical quantity (number of extra actual seconds that I will live) it becomes linear.

So you can see how easy it is for people to argue in circles about this. Both perspectives are “correct”, you simply need to agree on which perspective to use when having a conversation. Our preference is to use the perspective of the real number of seconds that a point of Armor will increase your Time to Live. It is more concrete and intuitive, and from that perspective, Armor does not diminish.


This section is a footnote for the math nerds of the universe. The ultimate goal is to prove that Time to Live is a linear function of your Armor. In other words, we should be able to come up with a formula of the form Ax + B for Time to Live, where x is how much Armor we have, and A and B are constants. Let’s do that!

Recall our Time to Live formula:

T = H * F / Dreduced

And our formula for the value of Dreduced after Armor reduces a raw hit D:

Dreduced = D * (1 - R)

And then our formula for R, the reduction from Armor (we will use “x” for Armor in this proof):

R = x / (x+ K)

So let’s substitute that all into our Time to Live formula to get T as a function of x:

T = H * F / (D * (1 - (x / (x + K))))

Now let’s algebra the shit out of this to see if we can get something that looks like T = Ax + B. Note that H, F, D, and K are all constants in this formula.

T = HF / (D - Dx / (x + K))   distribute D
T(D - Dx / (x + K)) = HF      multiply by rhs denominator
DT - DTx / (x + K) = HF       distribute T
DT(x + K) - DTx = HF(x + K)   multiply by (x + K)
DTx + DKT - DTx = HFx + HFK   distribute DT and HF
DKT = HFx + HFK               combine like terms
T = HFx / DK + HFK / DK       divide by DK
T = (HF / DK)x + HF / D       cancel K and regroup
T = Ax + B
  where A = HF / DK
        B = HF / D

And there we have it — Time to Live can be written as a linear function of Armor. Just to ensure that we didn’t mess up our algebra, let’s redo the Time to Live examples using the new formula:

A = HF / DK = 100,000 * 2 / (10,000 * 6300) = 0.0031746
B = HF / D = 20
0 Armor:    T = 0.0031746 * 0    + 20 = 20.00 seconds 
2500 Armor: T = 0.0031746 * 2500 + 20 = 27.94 seconds 
5000 Armor: T = 0.0031746 * 5000 + 20 = 35.87 seconds

And there we have it, we didn’t mess up our algebra, we get the exact same results as expected.


Diminishing Returns & Other BfA Tank Formulas

In Battle for Azeroth, how does diminishing returns affect Armor, Block Amount, Stagger, Dodge, Parry, and Block Chance?

Some things haven’t changed and you’ll be familiar with them. Other things are a little different with Battle for Azeroth. We’ve figured out everything you need to know through data mining and a dizzying amount of in-game testing. Continue reading

Simulator Client Roadmap

Over the next several weeks we will be releasing updates to the simulation client to support a lot of cool upcoming features. We will do this in stages so that we have an opportunity to test out each stage and work out any issues that people might encounter.

General Features

These new general features are available as of this post, a few that have been there and a few you may not have noticed:

  1. The client auto-updates now. Once you download it and start it, you can theoretically let it run forever.
  2. There is a new “Clear Queue” option in the menu on the client program. Use this to cancel all running and pending simulations. Useful if you accidentally started a long-running simulation with the wrong settings, for example.
  3. As of 2/6, the client uses a different mode that can more fully utilize most CPUs, but uses a bit more memory. Should be faster for most people.

Continue reading

Stat Weights vs Machine Learning

We’re big into ranking gear at Ask Mr. Robot. We probably like it more than WoW itself. OK… almost more than WoW. We like WoW more because it lets us have fun ranking gear.

We released an update today with a beta version of a new way to rank stats on gear that we call Machine Learning. It replaces stat weights. Stat weights are dead to us. OK not really, I was being a bit dramatic. You can still use them on the site like you always did, and they will still work like they always have, forever. But machine learning is way better and way cooler. Read on to learn why!

NOTE: To use the new method during the beta, you must run your own custom gearing strategy simulation, then check “Use Machine Learning” on the report that it generates, and then press “Save and Use”. You will know that it is in effect because you will see a “stat goal” next to each section on the gear optimizer (Gear Explorer, Best in Bags, etc.). If you encounter any bugs or issues, let us know immediately! It is a beta! Continue reading

© 2018 Mr. Robot's Blog

Use the tools on AskMrRobot.comUp ↑