Tuesday, 12 May 2015

Crusaders: Some math on Shield Bash and block chance

Since 2.2 launched, I've seen a lot of conflicting answers about how block chance is factored into the damage that Shield Bash does, mainly whether it's just the base block chance on the shield or if it includes buffs and such. Since I have a pretty convenient way to test stuff like that, I decided to find the answer for myself and I might as well share it somewhere.

The test setup:

An axe that deals 2-3 damage, and a legacy ring that adds 28min and 27max damage, meaning my weapon will deal 30-30 damage, giving the same exact damage numbers each time.


The ones we care about are 7705 Strength, 37% Fire Damage, 14% Shield Bash Damage, 18% Block Chance, and 268% Crit Damage (I focused on crits since the numbers are big and stand out more). But we don't actually have 7705 Strength exactly because I left Finery enabled. My actual Strength is 6973, which is then increased by 10.5% from having 7 gems socketed into my gear, bringing it to 7705.165. Rather than the Strength shown on the character screen, the real amount with the decimal is used in damage calculations, so we need to know it.

First of all, let's just check out Punish damage to demonstrate how this works. When you use an ability to deal damage in Diablo 3, the game will roll a random number between the minimum and maximum damage numbers on your weapon, then multiply that by a whole bunch of stuff (except DoTs and a few other abilities are calculated differently). In this case, my weapon damage is always 30, so we skip the random part. Punish deals 335% weapon damage, so we multiply the weapon damage by 3.35. After that, we have our base stat multiplier from having 7705.165 Strength, so we multiply that number by 78.05165. I'm using the fire rune, so we also multiply it by the 37% Fire Damage increase. And I'm only looking at crits, so we have the Crit Damage increase as well.

So if we multiply [30 * 3.35 * 78.05165 * 1.37 * 3.68], we get 39,547.2725, which should be how much damage a Punish crit does. And if we go smack a zombie in-game: 

Now that we all know how the game calculates damage, let's look at Shield Bash. The tooltip states it deals 700% plus 300% of block chance as weapon damage. I'm not sure how exactly it's calculated, but for now let's assume it's as straightforward as it sounds: [7.00 + (0.18 * 3)], or 754% weapon damage, with the 0.18 being from having 18% block chance. I'm also using Roland's 4-Piece bonus, which adds 500% Shield Bash damage, and Drakon's Lesson bracers, which add 155% Shield Bash damage. Neither of those show up in the stats sheet, so let's just assume they're unique multipliers. And of course, I'm using the fire rune, so we also include the Fire Damage bonus as well as the bonus to Shield Bash damage.

Our expected Shield Bash damage should now be [30 * 7.54 * 78.05165 * 1.37 * 1.14 * 3.68 * 6 * 2.55 = 1,552,527.6980]. Testing it out: 

That worked well enough, so let's see what happens if we add some block chance. First, the Hold Your Ground passive, which gives 15% block chance, bringing me up to a 33% chance to block. Shield Bash should now deal 799% weapon damage.30 * 7.99 * 78.05165 * 1.37 * 1.14 * 3.68 * 6 * 2.55 = 1,645,185.1866


Now let's first cast Punish at something before Shield Bashing, which will give us the Hardened Senses buff, which adds 15% more block chance, bringing me to 48% block chance, meaning Shield Bash will do 844% weapon damage.30 * 8.44 * 78.05165 * 1.37 * 1.14 * 3.68 * 6 * 2.55 = 1,737,842.6752


Next let's put on a Justice Lantern, which adds another 16% block chance, bringing me up to 64% block chance and 892% weapon damage from Shield Bash.30 * 8.92 * 78.05165 * 1.37 * 1.14 * 3.68 * 6 * 2.55 = 1,836,677.3297


And finally, I did one last test using a different shield:

The Stormshield has a 33% block chance on it, 15% more than my Piro Marella, bringing me to 79% chance to block and 937% Shield Bash weapon damage. I also gained 15 Strength and lost 14% Shield Bash damage from making the switch, so the equation changes just a bit.30 * 9.37 * 78.2174 * 1.37 * 3.68 * 6 * 2.55 = 1,695,992.9314