Breath of Windragosa

First of all, I apologize for the long gap between posts. The school boss has a tight enrage timer, so I need to stay on top of the damage check so to speak. Speaking of damage check (*cough* nailed the segue *cough*), many DKs have been using Breath of Sindragosa to get incredible damage, and some of the top logs have blood DKs doing more damage than most dps classes on cleave fights. In this post we’ll go over how this is possible, and why behind the very impressive powerful dragon’s breath holding Blood DK at the top of the meters is actually hiding a very meek tank damage wise.


Defile vs Breath of Sindragosa

So let’s start with finding what it takes for Breath of Sindragosa (BoS from here on out) to match defile for various conditions.
defile’s damage is calculated as:  \sum_{k=0}^9.33AP\times1.025^k
and BoS’s damage is calculated as: (AP+\frac{AP}{n}\times(n-1))\times t
where n is the number of targets including the primary target and t is the time BoS is up (which is equal to the total number of ticks, since you get 1 tick per second). Before we just mash these two together and solve the equation for t, we have to set up a few things. First, your number of defile casts and BoS casts will depend on the fight length. Generally speaking if the boss lasts 3.5 minutes, you will get 2 casts of BoS (one at the opener seconds and one when you hit your second pot). If the boss lasts 4.5 minutes you will get 3 off, one at 0 seconds, 120 seconds, and then when you hit your second pot. (obviously mechanics may adjust these numbers, but let’s keep it patchwerk for now). So our equation should look something like this:

n \times \sum_{k=0}^9.33AP\times1.025^k\times \text{number of Defile casts} =

t \times (AP+\frac{AP}{n}\times(n-1)-\frac{.85AP}{2})\times\text{number of Breath casts}

I’d love to give really cool graphs and give really intricate data with multivariable analysis, but I don’t have the software for it so we’ll have to resort to the old fashioned method… SPREADSHEETS!!!

Here is a rough breakdown of the number of ticks needed for BoS to outdo defile per use of BoS:

And keep in mind that these are the required ticks to at least break even. To get above and beyond the damage of defile you’ll need to go above and beyond these tick counts, up to and including near 100% uptime.


So with the spreadsheet from before we now know how many ticks it takes to match Defile’s damage given different scenarios. These numbers are very attainable, but due to how our multistrikes work in relation to BoS it creates a problem.

for any given ability, to be “viable” you need to have both potency AND some level of consistency. Take two imaginary abilities:

ability A – Deals 100 damage, 1 minute cooldown

ability B – Has a 50% chance to deal 1000 damage. 5 minute cooldown.

Statistically speaking these will both do 100 damage per minute, but the first ability is DEMONSTRABLY better. If every other pull you are getting 0 damage out of that spell, it’s not a good spell, even if “on average” it provides the same results. Obviously no spells like this exist, but the point stands that reliably has value that is tangible, even if it can’t always be measured. So how does this apply to BoS?

Without any multistrikes at all (as if you were out of melee range) breath falls in about 13 seconds assuming no AMS soaking (a bit longer if you’re a blood elf), and given the spreadsheet above in order to even be considered taking as a talent you need to get at least 20 ticks out of your breaths on average, which means a HUGE amount of BoS’s uptime is multistrike dependant. In order to be viable, the cost per second of breath has to be such that you can have the time needed for multistrike to do its thing. The problem arises when you figure out that the cost has to be pretty low (as it is now with 15/second) to allow for this to happen reliably. Any higher cost and you are unable to to reliably get the damage you need to match, let alone beat defile.

Why does it need a low cost? Why can’t you just compensate with higher multistrike rating?

It’s not JUST about multistrike rating, it’s also about multistrike opportunities. You can have all the ms chance in the world, but you’re still limited by how many chances you actually have to multistrike, and nerfing the cost of breath actually double dips with punishment. You have to generate more RP and you lose it faster, meaning less time for auto attacks. In other words you need more multistrikes with fewer multistrike opportunities. At the end of the day, a slight increase of the cost would require MASSIVE compensation in multistrike rating to recieve the same result.

Let’s say you have 50 RP, and have just put yourself in a xBxDxD rune configuration and have 5 stacks of BT, meaning you’ll have 40 rp from runes (without using glyphed Chains of Ice) to use in the next ~7 seconds.

With just the rp listed here, breath will fall in 6 seconds, so we need to extend our breath by at least 2 seconds to reliably hold onto breath (to account for the GCD to actually use the runes we’ll get in 7 seconds), and to do this we need 2 multistrikes in 6 seconds, or in 3 auto attacks (t = 0, ~2.9, ~5.8). 3 auto attacks gives us 6 chances for multistrikes. How much multistrike do we need to reliably get 2 multistrikes over 6 auto attacks? (Let’s define “reliably” as at least a 75% chance to get both multistrikes.)

This can be calculated by solving for ms% in the following:

(chance for 2 ms)+(chance for 3 ms)+(chance for 4 ms)+(chance for 5 ms)+(chance for 6 ms) = .75

but there is an easier way. Instead of calculating the chance for 2, 3, 4, 5, or 6, just calculate the chance of NOT having 0 or 1 (remember, they all have to add up to 1).

Which would be:

1-(chance to get 0 + chance to get 1) = .75

1-(\left(\begin{array}{c}6\\ 0\end{array}\right)\times x^0\times(1-x)^6+\left(\begin{array}{c}6\\ 1\end{array}\right)\times x^1\times (1-x)^5) = .75

x = ~39% multistrike chance

If you’re not familiar with statistics, \left(\begin{array}{c}A\\ B\end{array}\right) is choose notation. It basically means the number of times that you have A total “rolls”, and B of them are what you want. So if you flipped 3 coins, there are three possibilities where you only get exactly 1 heads [heads-tails-tails], [tails-heads-tails],[tails-tails-heads]. Choose notation is defined by \left(\begin{array}{c}A\\ B\end{array}\right) = \frac{A!}{B!\times (A-B)!}, which in this case would be \frac{3!}{1!(3-1)!} = 3, which is what we expected since we counted ahead of time. Anyway, back to Azeroth.

So we only need a 39% mutistrike chance to reliably make breath last at least until the next set of runes given the initial condition of 50 rp and 5 stacks of BT. (keep in mind this is with our definition of “reliable” as a 75% chance to be successful. You can obviously get the same results with less multistrike, but you run more risk. This risk can be partially mitigated by using ERW and PL optimally to help extend BoS to the required length (which was mandatory in early t17 with ~1000 multistrike, however it was still very rng dependent with that low of a multistrike rating), but those are both cooldowns and you can’t always rely on them. Looking at reliability and assuming use of either would be ignoring a common worst case scenario, which is the only type of scenario that matters when it comes to maintaining uptime.

Now on to why you can’t just bump up the cost. Let’s adjust the cost by only 1 single point of RP and do the same math again:

We still need to cover 8 total seconds, but now our RP only lasts 5.625 seconds, meaning at least one of the multistrikes HAS to occur before this point in order for us to get our 5th and 6th chances at multistrikes from the 3rd melee swing. You also need to generate more than just 2 multistrikes to last the remaining 3 seconds (2.375 seconds rounded up, because you can’t have partial multistrikes), so you now need 3 multistrikes. So a slight adjustment of only 1 rp per second in cost added deadline on the first multistrike, in addition to increasing the total number of multistrikes needed. Let’s find what ms% it takes to get the same level of reliably as before:

The chances of getting 3 multistrike off of 6 chances is very similar to what we had before:

(chance for 3 ms)+(chance for 4 ms)+(chance for 5 ms)+(chance for 6 ms) = .75

Or written more simply:

1-((chance for 0 ms)+(chance for 1 ms)+(chance for 2 ms)) = .75

Remember that the chance for all of the numbers of multistrikes needs to equal 1, because 100% of attacks will have A number of multistrikes, even if that number is 0.

If this were it, we would only need about 44% multistrike to get teh same reliability, an ms% requirement increase of only 5% multistrike chance, however the whole thing needs to be multiplied by the chance to have at least one multistrike within the first 2 melee swings, so we get the final equation of:

(1-\left(\begin{array}{c}4\\ 0\end{array}\right)\times x^0\times (1-x)^4)\times (1-(\left(\begin{array}{c}6\\ 0\end{array}\right)\times x^0 \times (1-x)^6+\left(\begin{array}{c}6\\ 1\end{array}\right)\times x^1\times (1-x)^5+\left(\begin{array}{c}6\\ 2\end{array}\right)\times x^2\times (1-x)^4)) = .75

x = ~56.9% multistrike chance, which is not currently attainable outside of trinket procs.

So we can accept that it’s not “reliable” in any attainable static multistrike, but what are the chances with with the highest attainable static multistrike?

While I only have about 1800 multistrike, but there are a few DKs with close to 2300 multistrike (spoiler alert, they’re the ones doing 40k+ on Gruul). So how likely are you to bridge this 8 second gap with the best MS currently attainable?

\left(\begin{array}{c}5\\ 3\end{array}\right)\times.498^3\times(1-.498)^2+\left(\begin{array}{c}5\\ 4\end{array}\right)\times.498^5\times(1-.498)^1+\left(\begin{array}{c}5\\ 5\end{array}\right)\times.498^5\times(1-.498)^0

~41.8\% chance of successfully bridging the gap.

What used to take about 1580 multistrike to have a 75% reliability, now isn’t even likely at 2300 multistrike. This is with just a ONE  (you can’t capitalize digits for emphasis so I spelled it out. fight me m8.) RP per second cost increase (from 15 to 16).

So the cost is as high as it can be while still being viable in its current form, but that still doesn’t show how you get 100% breath

Just because 15 rp/second is the max cost breath can have without being nearly impossible to maintain for more than a short burst (which would make it non-viable without revamping the damage SIGNIFICANTLY, but that topic is covered later), doesn’t mean it’s “expensive”. We saw that at 15 rp/sec, if you had a fresh xBxDxD configuration, 5 stacks of BT, and at least 1580 multistrike, you could make it to your next rune set with about 75% reliability, which you are going to have to do at least once to span the time required to reach the minimum tick count for matching defile. Remember that 2300 ms rating I mentioned? Well if you manage to get that much multistrike (there’s nothing significant about that number, it’s just currently the highest multistrike the top parsing DKs are achieving), what are the chances that you will cover that gap with 15 rp/sec?

1-(\left(\begin{array}{c}6\\ 0\end{array}\right)\times.4985^0\times(1-x)^6+\left(\begin{array}{c}6\\ 1\end{array}\right)\times.4985^1\times(1-x)^5) = 88.92\%

This is much more reliable, and we are almost at the point where unless you have very bad rng, you could maintain breath indefinitely, there just needs to be a bit more rp gen from somewhere….and that’s where glyphed chains of ice comes in.


I know, it’s weird. The devs are very much against this current design, but it’s currently optimal to help extend breath to 100% with the use of glyphed Chains of Ice. Now I know what you’re thinking, surely you lose more damage than you gain, but think of it this way: At best a cast of Chains will rescue an otherwise doomed breath from a bad rng streak, and allow for a very large number of ticks to occur down the road. At worst, you lose breath soon anyway, but you get at least one extra trick, which is equal to 100% of your AP, so you can think of Chains having a damage of 100% AP, even if delayed by a bit. Compare this to Death Strike, which does 270% weapon damage per 2 runes.

Death Strike (per rune) = (((\text{weapon damage}+\frac{3.3\times AP}{3.5})\times 2.7)\times(1-.3209)\times .5

Chains of Ice = AP

AP/(((\text{weapon damage}+\frac{3.3\times AP}{3.5})\times 2.7)\times(1-.3209)\times .5 simplifies to AP/(0.9168\times \text{wpndmg}+0.8644\times AP). So given about 9k AP (this will fluctuate with procs, but not by so much that it makes this calculation meaningless) and a weapon of ilvl 700 (which gives an averaged weapon damage of 2074.5), this puts a Chains of Ice “cast” at about 93% of Death Strike’s damage per rune, which is insane……except it’s really not. Death Strike is very strong, and it’s far and away our highest damage ability per execute (not counting breath, which isn’t really a fair comparison). Despite this, Breath of Sindragosa is around 40% of our damage when we can maintain it 100% of the time, which is INSANELY high relative to our actual rotational abilities.

What does this show? It shows that our other abilities are very underpowered. Breath of Sindragosa isn’t SUPPOSED to be up full time. The fact that we are making it do so should mean that we are WAAAAY far ahead on damage…but we’re not ahead by as much as you’d expect (though we are very much ahead), and that’s simply because the brokenness of Breath is hiding how little everything else we have hits for. Death Coil hits for clown shoes, Blood “Boil” single target is more like a simmer. Just for a fun “what if game”, let’s take the highest tank parse on Gruul, Paragon’s Vereesa and his Blood DK kill on March 25th, with a very impressive dps of 43.9k. The highest non-DK parse is Alestørm the monk, with an equally impressive (relative to class) 38.5k. Without changing anything else, let’s put all of Vereesa’s RP spending into Death Coil instead of Breath, using the same crit% and ms% that Breath got.

He had a total of 273 total ticks of Breath, with 243 normal ticks, 93 multistrike hits (not counted in total), 30 crits, and 35 multistrike crits (also not counted in total). His average hit amount was 16,714, which gives us an average AP of 16,714 (in reality, a lot more than AP goes into this. Blood presence, versatility, all boost this beyond AP, but because everything that affects Breath also affects Death Coil and Defile, for the sake of simplicity we can treat them all as “AP”) and had a total damage from breath equal to 5.21 million.

He also had 6 total Death and Decay casts, which would turn into Defile casts were he not using Breath. His D&D had 66 total hits, with 54 normal hits, 12 crits, 74 multistrike hits, and 8 multistrike crits.

Death Coil is worth 85% AP per cast, and with 273 ticks of breath you would have replaced 273/2 = 136.5 casts of death coil.

121.5 of these were normal hits, which each would hit for an average of 14,206.9 damage.

15 of these were critical hits, which would average 28,413.8 damage

There were 46.5 multistrike hits, averaging 4262.07 damage

And finally there were 17.5 multistrike crits, averaging 8524.14 damage

For a grand total damage of: 1.726m + 0.4262m + 0.3964m + 0.1491m = 2.6977m

Now for Defile instead of D&D, which will lessen the blow a bit.

Defile is worth 33% AP per tick, growing in strength by 2.5% each tick. The formula for this (as we found in the beginning of this post) is \sum_{k=0}^9.33AP\times1.025^k which can be simplified to .33*AP*11.2034, so a normal average tick (assuming all ticks hit, which they did in this case) would be worth a tenth of that value with our given AP, which would be 6179.37 per normal tick.

54 normal hits would result in 333,685.98 damage

12 crits would result in 148304.88 damage

74 multistrikes would be 137,182 damage

8 multistrike crits would be 29,660.98 damage

for a total of: 0.334m + 0.148m + 0.137m + 0.03m = 0.649 million.

So to recap:

total gains are 0.649m + 2.6977m = 3.3467m

total losses are 5.21 + 0.1589m = 5.3689m

net gain: -2.02m damage, which would result in a total damage done to 10.207m, down from 12.23m, and a dps of 36,718 down from 43,992. A 16.5% nerf.

Putting this into context


Now, being underneath the top monk parse is not in and of itself an issue, and if your complaint so far is that we aren’t the top tank anymore then you’re missing the point entirely. Let’s apply this 16.5% nerf to all blood DK parses and compare to the other tanks (using 95th percentile to keep things at decent skill level while still allowing for parses that aren’t DRIPPING with good rng or that don’t have 2300 multistrike).

As of writing this (Evening of March 27th) the breakdown looks like this (remember this is for Gruul, so purely single target):

Blood DK is at the top with an average of 32,610.9

Brewmaster monk is next with 30,858.1

Guardian Droood is next with 29983.9

Protection Warrior comes next with 29,181.5

and finally Protection Paladin with 28,339.0

This makes the mean for tank damage 30,194.68 damage, with Blood DK being ahead of the mean by 8%, monk and druid being about right on the money, prot warrior being behind the curve by about 3%, and paladin being dead last by about 6.2%.

Apply the 16.5% hit of being forced into Defile to the average Blood DK parse, and you now have Blood DK doing 27,230 damage on average, which is over 1k below the previous bottom. The new mean for tank damage would be 29118.5, putting monk ahead by roughly 6%, Bear ahead by about 3%, Warrior right on the money, paladin behind by about 2.5%, and Blood DK at the very bottom at 6.5% behind the tank mean.


We do almost no damage outside of breath, and while Breath is broken it’s the only thing keeping us from being the bottom of the pack by a steep margin. Also, Paladins could use some love too apparently.


(I found the original image at I simply added the wow stuff)

So what CAN be done about Breath?

Obviously despite us relying on Breath’s damage it is still broken, and being ahead of the tank mean damage by 8% is not ok (unless you’re a brewmaster monk during t15, then it’s hunky dory and it won’t change until a blanket 15% nerf part way into t16 progression. i’m not jaded at all….)

For one, the damage needs to be changed. Notice how I didn’t say nerfed, but changed, because there are 2 ways this could be done. The first way is to leave cost as is and nerf the damage. This is the most “direct” way of adjusting the situation. If you take Breath to be roughly 40% of our single target damage (which is pretty much is assuming breath has very high uptime), then changing BoS’s AP coefficient from 100% AP to about the same as Death Coil’s at 85% AP would put us more in line with the other tanks single target (this would be roughly a 6% damage nerf overall).

This still leaves blood weaving in fairly heavy amount of Chains of Ice though, which is something that does not fit within the developers design goals for the spec, which leads me to the second damage change they could make: A SIGNIFICANT buff, accompanied by an increased cost.

Instead of breath being something you maintain, it’s a cooldown that would be used for burst damage for about 10-20 seconds. You’d still pool rp, and rng would still play a role, but it would not continue to be an entire playstyle by itself like it is today. This change would best be accompanied by an adjustment of the cooldown as well, as 2 minutes is pretty long for a damage cooldown, and lowering the cooldown would make the new burst breath more consistent as they could drop the burst component by increasing the frequency of the ability. This would require a large buff to the damage however, as 100% ap per second is very small if you’re only talking 10-20 ticks. Remember that we currently need 26 ticks to even MATCH defile in the BEST POSSIBLE SITUATION for Breath, and in some cases you need 40+ ticks to match defile on single target.

The final (and by FAR the worst) option is to increase the cost, leave the damage as is, and make the talent non-viable, while buffing Death Coil significantly. This would absolutely destroy this talent’s viability for blood, and it would be extremely harmful from a player engagement point of view. BoS is an extremely engaging playstyle, it just needs tuning – not annihilation.

9 thoughts on “Breath of Windragosa

      • There is no rng, but it’s not potent enough to make up for the loss of multistrike.

        Let’s say rent is due at $100 dollars (it’s a cheap place). You could either gamble and have a 70% chance of getting $100, or for sure getting $50 dollars. The second option has no rng, but it’s just not strong enough to do the job.


    • a lot. I don’t really have time to do an in depth calculation, but let’s say you needed a 4.5 second rune cooldown to reliably get BoS up with a haste build. This would take ~8.3k haste. and that’s still relying on the base multistrike we have combined with the high auto attack speed, as even a 4.5 second rune time would not provide the 15 rp/sec we need to sustain BoS by itself. to do a PURE rune based BoS uptime (which isn’t practical even if it was possible, as you can allow for SOME rng), would take 25k haste after accounting for blood tap.


  1. Hi, I was wondering why (in your conversion of Verestrasz’s log to a Defile log) you assume that every tick of BoS is converted into Death Coil damage, considering that Death Coil fills GCDs and leads to increased RP capping.


    • There would be some lost damage in the form rp capping. In my analysis i assume perfect play, which is a bit generous, but keep in mind that if we were to use defile there would also be a shift into crit instead of ms, so there wouldnt be as much and with incredibly high levels of play (which the dk in question can do) the loss would be little if any. It is an approximation, but still better than a simulation.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s