Skip to content

The Bloodlust Irrelevance Theorem and other results

1. The source of the myth and the grain of truth in it

A general rule for damage-increasing trinkets, effects, procs and cooldowns is that they should be used together and at the same time as haste effects to get an effect which is greater than the sum of its parts. The proof is straightforward: suppose that one DPS does D DPS when not using any effect. Suppose that he has a haste trinket (which increases DPS by some fraction H of current DPS) and a damage-increasing cooldown (which increases DPS by some fraction C of current DPS), and both of them have a duration T (suppose a 0-sec GCD for the sake of simplicity). The separate benefit of both of them is DT(H + C) , while the joint effect is DT((1 + H)(1 + C) - 1) = D T ( H + C + H C ) . We can clearly see that the joint strategy outperforms the alternative usage by DTHC .

2. The Bloodlust Irrelevance Theorem

With the same logic it seems optimal to cast Bloodlust when damage-increasing mechanics (Kill, Shot, SW:D, some talents…) go into effect (the ‘Execute range’). However, as savvy people know, that’s wrong. This result is somewhat counterintuitive at first but we can easily prove it: let H be the boss health, D the raid DPS without BL and Executes, B the fraction of current DPS which Bloodlust adds, R the ‘Execute range’, X the fractional increase in DPS added by Execute-ish effects and T the duration of BL/Heroism. Also, let’s add reasonable constraints, such as DT(1+ B)(1 + X) < RH (that is, you can’t kill the boss before BL ends if you pop it once Execute-type effects go into effect) and its symmetric DT(1+ B) < (1 - R)H .

The final DPS of the raid equals  the health of the boss, divided by the kill time. Therefore, we can focus on kill time alone (less time equals more DPS). If we cast BL out of the Execute range, the kill time equals:

K_1 = T + \displaystyle \frac{(1 - R)H - DT(1 + B)}{D} + \frac{RH}{D(1 + X)}

which we can simplify as:

K_1 = T + \displaystyle \frac{(1 - R)H}{D} - T(1+B) + \frac{RH}{D(1 + X)}

while if we cast BL in the Execute range, our kill time is:

K_2 = \displaystyle \frac{(1 - R)H}{D} + T + \frac{RH - (1 + X)(1 + B)DT}{ D(1-X)}

We can simplify this as:

K_2 = \displaystyle \frac{(1 - R)H}{D} + T + \frac{RH}{ D(1-X)} - (1 + B)T

It’s clear that both expressions are the same. The kill time is the same. Why?

The difference between Execute and similar mechanics and other effects is that the former do not have a time limit but a _damage_ limit, while Volcanic Potions and Arcane Power do. Hence, if you use the latter at the same time as BL, you get more buffed casts and therefore more benefit from the Potion, while if you use BL in Molten Fury range you get exactly the same number of Fireballs, you just get them faster. So, under this simple model, it doesn’t matter if you cast BL on sub-35%, sub-30% or sub-20% targets

3. The Bloodlust Relevance Theorem

From a more realistic perspective, it can be even detrimental to cast Bloodlust in the Execute range because some sub-X% spells, such as Kill Shot, have a fixed cooldown and thus do not scale with haste (therefore, they add a fixed amount of DPS, let’s call them W). Under such conditions, BL shortens the sub-X% phase and thus reduces the benefit you’d get from these spells. Let’s prove it. If we cast BL out of the Execute range, the kill time equals:

K_1 = T + \displaystyle \frac{(1 - R)H - DT(1 + B)}{D} + \frac{RH}{D + W}

which we can simplify as:

K_1 = T + \displaystyle \frac{(1 - R)H}{D} - T(1+B) + \frac{RH}{D + W}

while if we cast BL in the Execute range, our kill time is:

K_2 = \displaystyle \frac{(1 - R)H}{D} + T + \frac{RH - ((1 + B)D + W)T}{ D + W}

We can simplify this as:

K_2 = \displaystyle \frac{(1 - R)H}{D} + T + \frac{RH}{D + W} - T - \frac{BDT}{D+W}

Substracting K_1 - K_2 we get:

K_1 - K_2 = - BT + \displaystyle \frac{BDT}{D+W} = \left (\frac{D}{D+W} - 1 \right) BT = \frac{-W}{D+W} BT

which is a negative quantity since W, D, B and T are all positive numbers. Therefore, that means that K_1 - K_2 < 0 or that K_1 < K_2 : that is, the kill time is smaller if you cast BL before sub-X% range as we reasoned earlier. Therefore, from a pure Patchwerk DPS perspective it’s optimal to cast BL _before_ getting to the sub-X% range: probably at the beginning of the fight to get more benefit from early procs and cooldowns.

Of course, in practice what determines the BL moment is the presence of hard enrage or soft enrage phases, phases with improved damage, ‘burn phases’, hard-to-heal phases or standstill phases (most casters* perform better when immobile). But it’s still important to dispel the myth of “BL at Execute range”, because it could mean the difference between victory and defeat on “DPS race” bosses where there is some choice regarding BL.

* That is, all casters save for pre-4.2 Cata moonkins on Maloriak Dark Phase, Halfus Whelps and some other AoE situations.


The Nature’s Grace multiplier

Nature's Grace

Nature's Grace

1. Introduction

Moonkins like haste. One of the reasons why we do is the fact that a percent of haste in gear is worth more than a percent of effective haste because of Nature’s Grace. The goal of this post is to get an estimate of how big is this “Nature’s Grace haste multiplier” and what factors influence it. Among other topics, deriving a simple formula for it is relevant for theoretical analyses of the Balance Druid Tier12 4pc set bonus.

2. Description of the talent

The ingame Rank 3 Nature’s Grace description is this:

You gain 15% spell haste after you cast Moonfire, Regrowth, or Insect Swarm, lasting 15 sec. This effect has a 1 minute cooldown. When you gain Lunar or Solar Eclipse, the cooldown of Nature’s Grace is instantly reset

For most single-target situations, the Eclipse-to-Eclipse period is less than half of that 1-minute cooldown, so the relevant cooldown of Nature’s Grace for Balance Druids equals the period between one Eclipse and the opposite Eclipse.

3. Analysis

Suppose you get more haste on gear. That will lead to faster casts and faster switching between Eclipses. But that means more Nature’s Grace uptime, which leads to a even faster cast speed. There’s a feedback which amplifies the effect of haste. Let’s figure it out.

List of variables:

– Average haste: H
– Haste on gear (not haste _rating_) plus haste from raid buffs (multiplicatively stacked): h
– Nature’s Grace uptime: NG
– Zero-haste Eclipse-to-Eclipse time: T_0
– Eclipse-to-Eclipse time: T

Haste while NG is active equals:

h_{NG} = (1 + h) (1 + 0.15) - 1 = 0.15 + 1.15h

Average haste is the sum of haste without NG multiplied by the NG downtime and haste with Ng multiplied by the NG uptime:

H = (1 - NG)h + NG (0.15 + 1.15h)

H = h + 0.15(1+h) NG (1)

Eclipse-to-Eclipse period equals the zero-haste E2E period, divided by one  plus average haste:

T = \displaystyle \frac{T_0}{1 + H} (2)

Nature’s Grace average uptime equals 15 seconds divided by the Eclipse-to-Eclipse period.

NG = \displaystyle \frac{15}{T} (3)

Substituting (2) in (3) and (3) in (1), we get:

H = h + 0.15 (1 + h) \displaystyle \frac{15}{T_0} (1 + H)

Solving for H:

H = \displaystyle \frac{0.15 \cdot 15}{T_0 - 0.15 \cdot 15 (1 + h)} + \displaystyle \frac{T_0 + 0.15 \cdot 15}{T_0 - 0.15 \cdot 15 (1 + h)}h (4)

Therefore, our marginal multiplier is

m(h) = \displaystyle \frac{dH}{dh} =  \left ( \displaystyle \frac{T_0}{T_0 - 2.25(1 + h)} \right ) ^2

Defining the parameter H_0 = \displaystyle \frac{2.25}{T_0 - 2.25} , we can rewrite (4) as:

H(h) = H_0 + \displaystyle \int_0^h m(\lambda) d \lambda

which tells us that average haste equals a constant term, H_0 (that is the haste we would get from NG even if we had no buffs and no haste on gear: let’s call this “constant haste”) and a term which depends on marginal haste in a non-linear manner (let’s call it “variable haste”). Since, for relevant values of h , m(h) behaves almost linearly (as shown in Figure 1), we can approximate it with a first-order Taylor series expansion around zero (a technique also known as linearization in science and engineering):

\tilde{m}(h) = m_0 + m_1 h

where m_0 = \displaystyle \frac{T_0^2}{(T_0 - 2.25)^2} and m_1 = \displaystyle \frac{4.5 T_0^2}{(T_0 - 2.25)^3}. We can therefore integrate \tilde{m}(h) to get an approximated \tilde{H}(h) :

\tilde{H}(h) = H_0 + m_0 h + \displaystyle \frac{m_1}{2} h^2

Which is a good enough approximation for our purposes, as shown in Figure 2. Alternatively, we could obtain the same expression from a second-order Taylor series expansion of H(h) around zero.

What is T_0 ? The base cast time of Starfire is 2.7 seconds, (3.2 s less 0.5 s because of Rank 3 Starlight Wrath). With 2 refreshes of both DoTs, we can suppose a Lunar-to-Solar with 9 Starfires, 2 Starsurges and 4 GCDs for the DoTs, or 9*2.7 + 2*2 + 4*1.5 = 34.3 s

With these numbers, m varies between 1.18 and 1.20 for the amounts of haste found raiding moonkins: that is, Nature’s Grace increases the marginal value of haste in gear by around 19%. H_0 is 0.07, which means that we get 7% average haste from Nature’s Grace alone.

Another useful magnitude is the average multiplier: that is, for a given amount of haste, what number \bar{m} do we need to multiply by haste to get total variable haste (as opposed to the marginal multiplier, which only affects marginal amounts of haste)

\bar{m}(h) \cdot h = \displaystyle \int_0^h m(\lambda) d \lambda

\bar{m}(h) \cdot h \approx \displaystyle \int_0^h \tilde{m}(\lambda) d \lambda = m_1 h + \displaystyle \frac{m_2}{2} h^2

\bar{m}(h) \approx m_1 + \displaystyle \frac{m_2}{2} h

4. Applications

With this framework we can quantify one of the effects of our 4t12 bonus: shorter Eclipse-to-Eclipse switching (other benefits are a greater % of our nukes buffed by Total Eclipse and less clipping on Eclipsed DoTs). In this example, that’s less Starfires (2.7 sec less). When changing T_0 from 34.3 to 31.6, H_0 increases from 7% to 7.7%, and \bar{m} increases by about 0.016 (with 25% – 30% raid-buffed haste, that’s between 0.4% and 0.5% more haste). The net change is about 1.2% average haste, which affects mainly our nukes (since, in an optimal rotation, MF/SunF are always buffed by Nature’s Grace, unlikeIS). Since SF and Wrath account for ~50% of our damage, that’s about a 0.6% DPS increase.

5. Limitations of this approach

The main problem with this analysis is that average haste is not effective haste. Thus, while we can assume that they are quite similar when thinking about our haste on nukes (because that’s what we are casting most of the time), they are not when thinking about haste on DoTs, because we cast them in a way that ensures that most IS don’t get buffed by NG but almost all Moonfires and Sunfires do, and an improved Nature’s Grace uptime isn’t going to change that.

A less important factor is that we have not taken Euphoria into account: there’s a chance that some nukes generate double Eclipse energy. That reduces the Eclipse-to-Eclipse period and thus improves the value of the NG multiplier a bit. On the other hand, Solar to Lunar is slower than Lunar to Solar and thus it should err on the opposite direction with a similar magnitude. Anyway, these two considerations have very limited consequences.

6. Figures

m(h) for values of buffed haste between 0% and 50%

m(h) for values of buffed haste between 0% and 50%

H(h) and approximated H(h)

H(h) and approximated H(h)

7. Changelog

– 24/08/2011: analysis redone for multiplicatively-stacking haste, since there are relevant differences between the results of both analysis.
– 10/08/2011: initial version