Closed rockon8729 closed 12 years ago
block % requires a real simulation with mobs hitting you x times for x amount of damage, there's an open ticket #13 Time to Live which will supply this and yes I hope to add it soon since I'm very interested in it myself too!
Ok I'm trying to attack this from a statistical standpoint without the need for simulations but I've run into a wall and I'm posting on here to see if anyone has any insight. So basically every time a monster swings we have a chance to block the attack and if the block is successful then the damage is reduced by a certain amount depending on the shield. For example lets say:
Monster Damage = 20 Effective Life = 100 Shield Block Chance = 18% Shield Block Dmg Reduction = 5-10.
So the probability of taking all of the damage is 82% and we have 3% chance to block 5, 3% to block 6,.... 3% to block 10. So the chance that we don't block the monster once before it kills us is (.82)^5 ~ 37% (82% chance to not block and it will take five hits in a row). This would amount to 0 additional effective health from using the shield.
The chance that we block for 10 every swing before we are dead is (.03)^10 ~ 5.9E-14 % (3% chance to only take 10 damage 10 times in a row). This would amount to 100 additional effective health from using the shield.
Those are the minimum and maximum values, the problem I'm having is figuring out the distribution between them. If I can figure out the distribution I can figure out the expect amount of effective health you would get from using the shield (over its armor which is already calculated).
hmm, those formulas are nice to start with, interesting to see what the chance is that you die without blocking anything :D
if you'd just want to get the avarage amount you block then ((5 + 10) / 2) * 0.18 = 1.35
But the problem with block is that depending on how much damage you take it's better/worse. Here are thee examples with the same stats but a different mob hitting you, the harder the mob hits the worse the shield becomes in increasing EHP
10k hp 50% DR 50% block chance 1000 block value
mob hits for 2k each DR makes it 1k dmg taken each hit
no shield 10 hits till death - 20k ehp
shield 50% of hits blocked do 0 dmg, 50% of hits do 1k dmg 10000 / ((0 + 1000) / 2) = 20 hits till death - 40k ehp
mob hits for 4k each DR makes it 2k dmg taken each hit
no shield 5 hits till death - 20k ehp
shield 50% of hits blocked do 1k dmg, 50% of hits do 2k dmg 10000 / ((1000 + 2000) / 2) = 6.666 hits till death - 26640 ehp
mob hits for 8k each DR makes it 4k dmg taken each hit
no shield 2.5 hits till death - 20k ehp
shield 50% of hits blocked do 3k dmg, 50% of hits do 4k dmg 10000 / ((3000 + 4000) / 2) = 2.857 hits till death - 22857 ehp
Entropy42 from diablofans PM'd me this snippet, looks good and I'll try to implement this!
// apply all modifiers
var block_perc = 25 / 100; //total block expressed as a fraction
var block_amt = 4200; //average block value of Sacred shield
var expected_hit = 50000; // average expected hit encountered by character
var modifier = .5; //your normal modifier variable, set to .5 as an example
// final damage modifier, including block
var modifier_b = (expected_hit * modifier * (1 - block_perc) + block_perc * (expected_hit * modifier - min(expected_hit * modifier, block_amt))) / expected_hit;
//or
var reduced_hit = expected_hit * modifier; // average expected hit after damage reduction
var modifier_b = (reduced_hit * (1 - block_perc) + block_perc * (reduced_hit - min(reduced_hit, block_amt))) / expected_hit;
var ehp = this.get('life') / modifier_b;
var ehp_dodge = ehp / dodgemodifier_b;
var reduced_hit = expected_hit * modifier_melee; // average expected hit after damage reduction
var modifier_melee_b = (reduced_hit * (1 - block_perc) + block_perc * (reduced_hit - min(reduced_hit, block_amt))) / expected_hit;
var ehp_melee = this.get('life') / modifier_melee;
var ehp_dodge_melee = ehp_melee / dodgemodifier;
var ehp_ranged = this.get('life') / modifier_ranged;
var ehp_dodge_ranged = this.get('life') / modifier_ranged / dodgemodifier;
var ehp_magic = this.get('life') / modifier_magic;
var ehp_dodge_magic = this.get('life') / modifier_magic / dodgemodifier;
var ehp_elite = this.get('life') / modifier_elite;
var ehp_dodge_elite = this.get('life') / modifier_elite / dodgemodifier;
branch created for it (block)
a WD with 278VIT, 3150armor (rest 0) comes down to my above example (10k hp, 50% dmg reduction) to test with and values are a perfect match! \o/
you can see it on http://d3ehp-beta.rubensayshi.com/ the EHP (left col) is normal EHP, the EHP with dodge (right col) is EHP with block (without dodge) - to test so I dont need to work on UI yet I abused the dodge column a bit :P
Thanks for all the great work with the calculator, its a really helpful tool. I have a quick question about block, i was hoping someone could help.
I have 2 shields at the moment and I can't decide on what to use. I have a 28% block chance shield with 1000 armor and 2700-3700 block value (shield 1), and a 10% block chance shield with 1450 armor and 3700 - 4700 block value (shield 2).
Now, I just can't go past looking at the "+18% to block", even though the block amount and the armor is higher on the other shield. Would the calculations look like this?
Shield 1.
block chance x average block value = average damage reduction
therefore:
0.28 x 3200 = 896 average damage blocked
0.10 x 3700 = 370 average damage blocked
Or am i totally off the track? =P
That's about right yea, except the average of 3700 and 4700 is 4200, but that still leaves a big difference The 450 armor is a lot though! That's like 2% damage reduction (a whole lot of EHP)!
I think in theory the 10% block shield would be better because of the armor, but I'd got for the 28% block chance shield because 10% block is so unreliable.
Wow man, thanks very much for the email response, really appreciated.
Funny thing was that I was actually refreshing your page to see if a response was up when your email came through.....spooky!
Haha, have a great day, might see you in game.
2 questions:
Do you play monk, and how are you finding Act 3.
My gear is terrible but I am currently farming siegebreaker.
Hey,
I'm curently working on shield stuff for the calculator btw ;) There's a beta version on http://d3ehp-beta.rubensayshi.com with block working, not sure if you ment your lower armor shield had 18% or 28% block chance, 18% is would be slightly worse (because of the armor on the other one being really good), 28% it would be slightly better :-)
I played a monk till lvl40 on hardcode (didn't die yet, but stopped playing it for now) and 2 of my friends play a monk in softcore. I play barb myself, act3 is doable but some mobs are just hard (pestilence, the birds that keep running away), I'm losing interest in playing my barb so I think I'll start playing a wizzie for some pewpew fun :D:D
released
Thank you very much! Adding the block to your calculator has made it 100% better, as the question of dual wield vs sword and board is a tricky one without the numbers to back them up.
I took your advice about the block chance being too unreliable and upgraded to a sacred shield with 16% block, and it made a huge difference. I wanted to keep the other stats the way they were, as I had 8% crit and 7% reduction vs elites, which were things I wanted to test for my build and the block chance is much better, even with just an extra 6%. I'm wearing the helm of command so I'm still rocking out 26% block chance.
Thanks so much.
Are you working on adding Block % into the calc?