View Full Version : Damage Block Order/Priority and EHP
Schizofriend
10-16-2009, 09:38 PM
I'm currently trying to write a guide about Damage Reduction and EHP for a website I am on staff at and I need a little help regarding how block effects it. I have a lot figured out about it already but would like to know if there is a mathamatical equation to see how blocking affects your EHP.
What I have right now about Blocking is the Damage Reduction Calculation Order goes:
1. Evasion
2. Static Damage Buffer Sources (ie, Arcane Hide and Barrier Idol)
3. Damage Block/"Deflection" (ie, the static damage reduction from Iron Shield, Iron Buckler and Helm of the Black Legion)
4. Armor Type (Combat Type)
5. Armor Value (Damage reduction from armor)
6. Other Stuff (passive hero abilities like Armordillo, Electric Shield, Dissipation, Focus Buffer)
Because Damage Block is calculated before Armor Value, the chance to block becomes less effective as Armor Value increases. The resulting affect to the damage done can be calculated as:
Effective Block = DmgBlock*(1-.06*Armor/(1+.06*Armor))
In this way a Hero with Helm of the Black Legion and 10 armor would only block 25 damage 70% of the time.
Maybe there is no way of converting that into EHP, I certainly can't think of one, but since there are several people here who seem to know much more than I do when it comes to these things, I thought I would ask.
ElementUser
10-16-2009, 09:48 PM
You can always ask Malle, he wrote the EHP guide on the DotA-Allstars forum.
The general equation for EHP is:
EHP = Max HP + (0.06*Armor*Max HP)
Neber
10-16-2009, 10:30 PM
There isn't a constant EHP in regards to Damage Block, as EHP would go up or down depending on the damage range of the attacker/s. Using the Formulas from the above posts you could calculate it using averages.
EffectiveBlock = DmgBlock*(1-.06*Armor/(1+.06*Armor))
The NoAttacks formula works out how many attacks is needed to kill a player. The AvgDamageTaken is exactly as it says, the average damage taken from all sources per hit. You would round up the NoAttacks as well.
NoAttacks = (MaxHP + (0.06*Armor*MaxHP)) / (AvgDamageTaken - EffectiveBlock)
The last formula Totals the MaxHP, Armoured HP and Amount Blocked(On Average) to get the EHP.
EHP = MaxHP + (0.06*Armor*MaxHP) + EffectiveBlock * NoAttacks
Schizofriend
10-16-2009, 10:32 PM
Cool. Maybe I'll be able to use that to make some sort of graph or chart to show how block affects your EHP less as you get more armor, and enemies get higher damage.
Effective Armor = (Damage Block/0.06) / (Incoming Damage - Damage Block)
HotBL = 28 average block
Single Shield = 12 average block
Neber
10-17-2009, 02:50 AM
Effective Armor = (Damage Block/0.06) / (Incoming Damage - Damage Block)
HotBL = 28 average block
Single Shield = 12 average block
I don't get your formula?
Malle1
10-17-2009, 04:41 AM
U - unreduced damage
At - armor type damage factor
B - actual blocked damage (as in 0 if there is no block, or Bd if there is)
Av - armor value damage factor
D - damage actually dealt
Bc - chance to block
Bd - damage blocked if Bc triggers
Db - damage dealt when a block triggers
Dn - damage dealt when no block triggers
Da - average damage dealt
Bf - block damage factor
Testing indicates that the game in general does the following calculation (assuming B ≤ U*At):
D = (U*At - B)*Av = U*At*Av - B*Av
Using a single source of blocking this can be put as two equations (or, in general, as n+1 equations for n different possible amounts of blocking)
With Bc probability:
Db = U*At*Av - Bd*Av
With 1-Bc probability:
Dn = U*At*Av
Averaging this we have:
Da = Bc*(U*At*Av - Bd*Av) + (1 - Bc)*U*At*Av = U*At*Av - Bc*Bd*Av
We manipulate this:
Da = U*At*Av - Bc*Bd*Av = U*At*Av - Bc*Bd*At*Av/At = At*Av*(U - Bc*Bd/At)
We then compare the average damage dealt with block to the average damage dealt without block to see the damage taken factor from the block:
Bf = Da / Dn = (At*Av*(U - Bc*Bd/At)) / (U*At*Av) = (U - Bc*Bd/At) / U = 1 - (Bc*Bd)/(U*At)
We do the same calculations but assuming B > U*At:
P: Bc : Db = 0
P: 1-Bc : Dn = U*At*Av
Da = Bc*(0) + (1 - Bc)*U*At*Av = (1 - Bc)*U*At*Av
Bf = Da / Dn = (1 - Bc)*U*At*Av / U*At*Av = (1 - Bc)
The true general formula for EHP would be
EHP = HP / DamageFactor
So, with Blocking, Armor and Evasion we have:
EHP = HP / ( (1 - (0.06*a)/(1+0.06*a)) * (1-Ev) * (1 - (Bc*Bd)/(U*At)) ) = HP * (1 + 0.06*a) / ( (1 - Ev) * (1 - (Bc*Bd)/(U*At)) )
where the armor a ≥ 0, the evasion probability Ev is such that 0 ≤ Ev < 1 and the block value B, unreduced damage U and armor type damage factor At are such that B ≤ U*At. (I think this should be the most common scenario in hero versus hero fights)
EDIT:
Since the armor factor is on the form (1 - (0.06*a)/(1+0.06*a) and the block factor is on the form (1 - (Bc*Bd)/(U*At)) or (1-Bc) we can relate it to armor:
1 - (0.06*a) / (1 + 0.06*a) = 1 - (Bc*Bd)/(U*At)
⇔
(0.06*a) / (1 + 0.06*a) = (Bc*Bd) / (U*At)
⇔ {solve for a}
(0.06*a)(U*At) = (Bc*Bd)(1 + 0.06*a)
⇔
0.06*a*U*At = Bc*Bd + 0.06*a*Bc*Bd
⇔
0.06*a*U*At - 0.06*a*Bc*Bd = Bc*Bd
⇔
a * 0.06 * (U*At - Bc*Bd) = Bc*Bd
⇔
a = Bc*Bd / (0.06 * (U*At - Bc*Bd))
1 - (0.06*a) / (1 + 0.06*a) = 1 - Bc
⇔
(0.06*a) / (1 + 0.06*a) = Bc
⇔ {solve for a}
0.06*a = Bc*(1 + 0.06*a)
⇔
0.06*a = Bc + 0.06*Bc*a
⇔
0.06*a - 0.06*Bc*a = Bc
⇔
a*0.06*(1 - Bc) = Bc
⇔
a = Bc / (0.06*(1 - Bc))
This produces the following graphs for current existing values:
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-raw-1.49.1.png
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-costweighted-1.49.1.png
Schizofriend
10-17-2009, 05:32 AM
Wow. More than I was even hoping for.
If only it wasn't 2am here. I'll have to really look at all of that tomorrow. Nice Graphs too, that's pretty much what I wanted to make myself, just couldn't figure out how to relate the block to armor.
Neber
10-17-2009, 05:42 AM
Ah too many variables to remember, i had to go up, down constantly to work out the formulas. I was mainly curious about the Blocking values, as your formula is basically the same as mine, just added in (1-Evasion) to fix it up to account for that. However i was wondering with the Blocked Damage, since mine has the same problem. Does your formula account for the times when Average Damage Taken <= Average Block Value, however the player will take damage when the block doesn't occur, but using averages, the formula would be calculating as if no damage is done.
Also With averages, if the Hi-range of the Incoming damage is greater than block value, and the average incoming damage <= Block value, then again the same problem occurs where averages removes damage that should have happened, but doesn't.
Hopefully you can answer those questions, if your formula takes that into account because i gave it a little thought, but my brain is on sleep mode now.
Malle1
10-17-2009, 06:42 AM
I was a bit unclear, perhaps. Those is calculations for a single incoming damage value, not a damage range. Depending on which of the two EHP functions I listed (see below for easier to read version), it either applies when the damage is not less than what can be blocked or when it is.
Also, the graphs I posted are the equivalent of the armor increase at 0 armor. It should be possible to make it a function of armor as well, but I am not going to do that right now.
Here is an easier to read form of the EHP function:
http://hon.mikaelsunde.se/mechanics-damageblock-ehpfunction.png
Relevant variables are:
a - armor
Ev - evasion probability
Bc - chance to block
Bd - damage blocked when it triggers
U - incoming unreduced damage
At - armor type damage factor
The lower one is when the damage block blocks all damage when it triggers.
Neber
10-17-2009, 06:53 AM
Okay that's much much easier to read, can just glance at it now and it makes sense.
You wouldn't be able to add the possibility for damage range would you, i'd be interested in the maths for it.
Malle1
10-17-2009, 07:12 AM
I think I could, but I don't think it would be pretty and I can't do it right now.
Essentially you would have to divide the damage range so that you have two separate parts: one which falls in the range B < U*At and one range with B ≥ U*At, sum over all U and divide by the spread of the damage range.
If the whole damage range fulfills B ≥ U*At, then the EHP would be as given by the lower part in the image above.
If the whole range falls into B < U*At and U is large and/or the damage spread is low, then we can approximate U to the average of the incoming damage, but it will be just that: an approximation.
EDIT: Just a quick update so I don't forget it when I have time for this: damage uses real values, not integers, so you'd need to integrate.
Malle1
10-21-2009, 06:00 PM
image files because I don't feel like typing this out in text right now >_> Warning for large sized images.
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-proof.png
The following graphs are all with hero versus hero in mind.
Easier to read with logarithmic y-axis:
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-armordependant-raw-logarithmic-1.49.1.png
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-armordependant-costweighted-logarithmic-1.49.1.png
And linear y-axis
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-armordependant-raw-1.49.1.png
http://hon.mikaelsunde.se/mechanics-damageblock-armorequivalent-armordependant-costweighted-1.49.1.png
Schizofriend
10-22-2009, 03:15 AM
Wow, I really appreciate the incredibly detailed responses Malle. You basically did all the math I was trying to figure out for me. I had a stack of papers with scribbled fail formulas on them until you cleared this up for me. Got me past what I was stuck on and then way past that.
Here are two more graphs showing the differences between vs hero and vs creep (melee and neutrals). No label on the y-axis because i can't get it vertically. Also my program doesn't do the gridlines as good.
http://i34.tinypic.com/20rjmfo.png
http://i33.tinypic.com/23if18p.png
Trysaeder
10-22-2009, 07:45 AM
Moved to Guides and Lists for future reference.
Meowmeister
11-07-2009, 05:12 PM
what does all this mean in plain english summary? I dont understand the graphs.
Basically are you trying to say that as you gain more armor the hotbl blocks less damage? because that doesnt seem to be true.
Comma
11-08-2009, 11:19 PM
"Blocking Damage becomes less valuable as your opponent's physical damage increases"
Meowmeister
11-09-2009, 04:16 AM
Ok, but what is the deal comparing hotbl to armor and stuff?
And I wouldnt say its less valuable, i mean it will shave off 40 damage off the top when it blocks, of course if your hit does like 300 physical it does 300-40 but thats to be expected its still going to do its job by blocking 40.
archon_
11-09-2009, 05:51 AM
The point of comparing hotbl to armor and stuff, is to compare the damage reduction values between block and armor, letting you get the EHP (effective hp).
With this we can see what is more effective to purchase, armor or block value.
Graphs show that, at a certain point, block becomes less valuable then a given amount of armor.
Also, out of the graphs, I'd say that HotBL is a viable purchase against heavy physical damage teams. It is more effective then 10 armor (Platemail) before ~130 damage from heroes, in addition it gives 300 hp and 8hp/sec regen. Proves that HotBL is not a "noob" purchase at all, if you need the HP and Regen aswell.
After reading this, I will consider simply purchasing a Iron Buckler on Armadon.
Damage
01-14-2010, 01:55 PM
Nice breakdown Malle. The cost weighted armor increase equivalent could use a Platemail + 20 armor to compare how raw armor stacks up against armor+damage block.
budrick
02-03-2010, 04:38 PM
Hello,
Reading your graphs about block+armor was a great surprise for me!
The colors were too close to each other, but did i get it right that:
"Damage block is more effective the more armor you have".
This sounds counter-intuitive to me :S
Edit (I have done some tinkering):
Let's assume:
* A 100 damage attack (unreduced)
* A damage reduction of 0.3 from armor
* A block value of 40
In an unarmored case,
damage dealt after a block is:
100 - 40 = 60
damage dealt without a block is:
100
So effective damage blocked is 40 as expected.
Now let's look at the armored case,
damage dealt after a block is:
(100 - 40) * 0.7 = 42
damage dealt without a block is:
100 * 0.7 = 70
So effective damage blocked is 28.
This is less than the unarmored block of 40.
So, i would expect the value of damage block to be less with increasing armor. Thus i am confused with the graphs.
In the graphs, effective armor increase due to blocking increases with player armor, which seems to be contrary to the results above.
But, i guess this might be due to diminishing returns on armor. But then again, i had read somewhere that from a EHP point of view, armor does not have diminishing returns.
So my final question is:
"Does damage block (e.g. helm of the black legion) scale favorably with more armor on the player?"
Further edit:
In the first scenario, helm reduced 40 out of 100 incoming damage. That is 0.4 damage reduction on top of zero reduction.
In the second scenario, helm reduced 28 out of 70 incoming damage. That is still a 0.4 damage reduction on top of 0.3 (multiplicatively).
No, no let's not go that way.
In the second scenario, helm reduced 28 out of 100 incoming damage, that is 0.28 damage reduction on top of 0.3 (additively). At this point i need the armor <=> damage reduction formula to calculate effective armor contributed by helm. But i have a feeling that armor value required to increase damage reduction from 0.3 to 0.58 is at least equal to armor value required to increase damage reduction from zero to 0.4.
(will be back with the formula and a further edit)
ok i have found the damage reduction formula:
dr = 0.06a / (1+0.06a)
plugging in 0.3, 0.4 and 0.58 as dr into the formula i get the following:
7.14 armor for 0.3 damage reduction
11.11 armor for 0.4 damage reduction
23.02 armor for 0.58 damage reduction
so this means that, buying helm at zero armor was equal to buying 11.11 points of armor (assuming it always blocks)
and buying helm at 7.14 armor was equal to buying 15.88 points of armor (assuming it always blocks).
Wow! I have answered my own question and discovered a surprising fact: Value of damage block increases with increasing armor. This can be intrepreted in various ways, i guess..
Well, i guess i have not contributed anything new, i have just proven what Malle had already calculated. I hope following a concrete example may help some people understand the information in this thread.
Malle1
02-03-2010, 05:58 PM
Wow! I have answered my own question and discovered a surprising fact: Value of damage block increases with increasing armor. This can be intrepreted in various ways, i guess..I think the important part to remember is that it is the value of damage block measured in armor increase that increases as your armor increases. It is not so strange when you consider that both attributes can be seen as factors on incoming damage and since you need more and more armor to halve the factor from armor (that is, so that your damage reduction from armor increases so much that the armor reduction after the increase only lets half of the previous damage through), a separate factor from damage block will prove to be worth more and more as you gain more armor.
Corrosive
02-05-2010, 10:03 PM
(redacted until I'm awake enough to refine this post =o)
i thought a major differnce between hon and dota was that in HON armor reduction came before shield block. while in dota shield block came before armor?
or am i wrong?
ElementUser
02-09-2010, 07:49 PM
i thought a major differnce between hon and dota was that in HON armor reduction came before shield block. while in dota shield block came before armor?
or am i wrong?
Damage block comes before armor in both games.
ElementUser
03-10-2010, 04:54 PM
Hm, I think a slight update for Helm of the Black Legion on ranged heroes (20 damage block instead of 40) would be nice :)
Indra777
07-26-2010, 10:50 PM
I have a question, where does Barbed armor fit in the priority list?
ElementUser
07-26-2010, 11:26 PM
Last one
The`Darkness
01-27-2013, 03:41 PM
I know this is an old thread, but since it is still open I'd like to ask a pertinent question for some clarification.
This thread is saying that: As you gain more and more armor, shields (such as HoBL and iron buckler) do even more and more toward increasing your survivability. Is this correct?
Ultimately, in mid or lategame, if I already have 12 armor, over 1200 hp and enemies people do over 140 dmg, is it better to just have really high armor? Or is it better to do the combination of armor with HoBL?
---For instance, would it be better for me to spend 2800 for two platemails (total +20 armor), or spend 2775 gold on HoBL+Ringmail? I know that HoBL adds 300 hp as well as hp regen, so perhaps provide two responses: One response which acknowledges these two additional HoBL benefits (300hp and hp regen), and one response which disregards it (and thus only looks at the block affect). In the first scenario, my total armor would be 32. In the second scenario, my armor would be 17, although with HoBL also shielding some incoming damage.
Which combo is superior? Is there a point at which one combo becomes more superior than the other? I thank you for the time that you are spending to help me understand this.