Blood, Toil, Tears, and Threat

A few days ago, my friend Llarold asked me if I had done any calculation about the new threat bonus on taunts in 5.4. In the past, I had worked out a rough formula for how long it took to lose aggro after taunting in the past (roughly the duration of the encounter divided by five). So we were both curious how the threat buff affects that estimate.

The first thing to do was to verify how the threat buff works. It claims to “increase threat that you generate against the target by 200% for 3 seconds,” but doesn’t make it clear whether that’s multiplicative or additive with the +400% threat modifier granted by Righteous Fury. In other words, if we normally get $\text{damage}\times 5$ threat, will the buff give us $\text{damage}\times 7$ or $\text{damage}\times 15$?

So, I hopped on PTR to test. Below are the test results from two consecutive Holy Wrath casts, which do a fixed amount of damage. The first is before taunting and the second immediately after taunting:

Damage

Threat

Threat_Diff

Threat_Diff/Dmg

35k

174k

174k

5.0

35k

698k

524k

15.0

There’s no ambiguity in that data, we get $\text{damage}\times 15$ during the buff.

Next, we want a mathematical model. To model threat on taunts, we make a few simple assumptions. First, we assume that threat generation is continuous and uniform so that we can easily integrate. In reality it’s discrete and uneven, but if we averaged over all possible swing timer offsets it would be roughly continuous, and it makes the math easier.

We’ll also ignore base threat output and assume all output comes from Vengeance AP. Again, this makes the math simpler, and doesn’t really break much since both tanks are presumably generating roughly the same amount of threat in the absence of Vengeance anyway, so it would mostly cancel out.

We’ll let $T_1(t)$ describe the threat of tank #1 as a function of time, and $T_2(t)$ will describe the threat of tank #2. At time $t=0$, tank #2 taunts off of tank #1. At that instant, both tanks have $T_0$ threat, and we’ll let $G_1=G$ represent the rate at which tank #1 is generating threat. Tank #2 generates threat at a rage $G_2$, which we’ll define shortly.

Under those general circumstances, the threat as a function of time for each tank can be represented as follows:

This has all the makings of a basic kinematics problem. Normally you’d be concerned with velocity and acceleration; here we’re concerned with constant threat generation rates (velocity) and time-dependent threat generation rates (acceleration). Though as we’ll see shortly, the form of the acceleration is very different here than it is in kinematics.

There are two ways we can go about solving this problem. The first is to ignore acceleration entirely. What that means is that after taunting, tank #2 gains no more Vengeance from the boss. This models the “worst-case” scenario, where you taunt and the boss decides to turn and cast something, or tank #1 gets a number of lucky crits at exactly the wrong time.

The other way is to try and model the Vengeance ramp-up you get after taunting, which massively complicates the problem. However, the results are sort of interesting, so we’ll tackle that problem as well. First, though, let’s do the easy version, starting with the “before” case (i.e. 5.3 mechanics) and then the “after” case (5.4 mechanics).

Without Acceleration – Before

In the “no acceleration” case, the equations are very easy. When tank #2 taunts, he gets 50% of tank #1’s Vengeance, and thus is generating threat at a rate $G_2 = G/2$. So our “equations of motion” for this threat system are:

Let’s make another simplifying assumption, namely that the initial threat at the time of taunting ($T_0$) is linearly dependent on how long the fight has been going on. In other words, tank #1 started generating threat at rate $G$ from the very beginning of the pull, which is the same as assuming there was no ramp-up time on their Vengeance. This is actually an over-estimate, which means our $T_0$ value will be a little higher than it would be in reality; thus our time $t$ will be a slight over-estimate as well. But given that assumption, $ T_0 \approx G \tau$, and we get the final expression for $t$:

$\displaystyle \large t \geq \frac{\tau}{ 4.5} $

Now let’s see what happens after the 5.4 buff.

Without Acceleration – After

In 5.4, you will generate +200% threat for the first three seconds after you taunt. Thus, our threat generation rate $G_2$ changes to a piecewise function:

We can actually stop there, because this inequality literally cannot be satisfied. $G$, $t$, and $T_0$ must be positive values, so we have an inequality that requires a negative number be greater than a positive number. Thus, even without the fixate effect, you can’t lose aggro after a taunt in this continuous model.

What if $t>3$? Then we split our integral up into two parts as follows:

In other words, the +200% threat buff adds $7\frac{1}{3}$ seconds to the $\tau/4.5$ seconds we normally have before tank #1 pulls aggro back. I’ve illustrated that graphically below by plotting tank threat vs. time for a situation where $\tau=20$. In the “before” model, tank #2 loses threat at a little under 5 seconds (green line). In the “after” model, the tank doesn’t lose aggro until almost 12 seconds have passed (red line).

Tank threat vs. time for tank #1 (blue), tank #2 before 5.4 (green), and tank #2 after 5.4 (red). The +200% threat buff adds over 7 seconds to the time tank #2 has to establish aggro.

This has two important consequences. First, it guarantees that for any nontrivial $\tau$ you’ll have at least 8 seconds of aggro, which means your taunt cooldown will be back up before you’re at risk of losing threat. Second, it makes the “no acceleration” model incredibly unlikely, because within 10 second of taunting the boss should be hitting you and generating more Vengeance.

Really, that’s enough of a calculation to satisfy ourselves that the new threat buff will really eliminate threat problems. If you have 10+ seconds without acceleration, then clearly you’ll have even longer if we do include a Vengeance ramp-up. However, it was an interesting calculation, so I’ll share it with you below.

A word of warning though: it involves come calculus.

With Acceleration – Before

First, we need to decide on how to model the “acceleration” term that describes Vengeance ramp-up. It seemed to me that a fairly standard decay model would apply here, so I chose to use the form:

In other words, it acts like an exponential decay in reverse. It starts at $r(0)=0$ and rises fairly quickly, eventually reaching $r(20)=0.9$ after $t=20$ seconds have passed, asymptotically approaching $r(\infty)=1$. The choice of 20 and $\ln ( 0.1)$ as our rise-time are somewhat arbitrary, but should model how Vengeance actually builds up fairly well. Remember that this is only going to affect the acceleration term, which is 50% of tank #2’s overall threat generation, so after 20 seconds have passed they will be at $0.95G$.

There’s one more variable I want to introduce into this expression. We may want to know what happens if the boss delays its attacks by a few seconds – for example, if it’s casting something when you taunt. So I want to introduce an offset into that ramp-up function, which is accomplished by replacing $t$ with $(t-a)$, where $a$ is the time at which the boss resumes melee attacks.

As you can see, we’ve split up the integrals, and the second one is only evaluated for $t>a$ since the threat ramp is inactive before that point. The first integration is easy, so we can trivially perform that:

The second one is trickier, but not that bad. Part of the reason I’ve used the form $e^{\ln (0.1) t/ 20}$ rather than $0.1^{t/20}$ is that every first-year calculus student knows how to integrate $e^x dx$. So we could use a technique commonly called “u-substitution” to show that (proof left as an exercise for the reader)

The form of this equation makes it difficult to solve for $t$ in the inequality, so rather than trying to do that we’ll use graphs to interpret how this works. But first we’ll consider the “after” case and put them all on the same plot for easier comparison.

With Acceleration – After

This version is a bit ugly. Because we’ve left $a$ as an arbitrary turn-on time, we don’t know whether that happens before or after the threat buff expires at $t=3$. So we have to take that into account in our expression for $G_2$. Here is the complete version of $G_2$ for all four possible situations:

Ew. This also makes the limits of integration particularly ugly, as you’ll frequently run into a limit that would have to be described like “the smaller of $x$ or $y$,” or $\text{min}(x,y)$ (and in other places, the corresponding $\text{max}(x,y)$). However, there is a particular combination of these constraints that simplifies the limits a lot. We’ll define that combination $b$ as follows:

$b = \text{max}(\text{min}(t,3),a)$

In plain words, “compare $t$ to $3$ and take whichever is smaller, then compare that to $a$ and take whichever is larger.” With that definition, the representation of $T_2(t)$ looks like this:

Still quite a mouthful. The first and second terms are the continuous threat contribution from our “no acceleration” model. I’ve put slightly more specific upper limits on the integrals just to make it clear how the behavior below $t=3$ occurs; if $t < 3$, then the first integral is $\int_0^t$ but the second integral is $\int_3^3$, which goes to zero identically. And if $t>3$, the first integral is just $\int_0^3$ and the second is $\int_3^t$. We already know that $t<3$ isn’t going to be interesting because we can’t lose threat even in the “no acceleration” model, but it matters a bit if you want the plots to look correct. For example, when we perform the first integration, rather than $\frac{3G}{2}t$ we would express it $\frac{3G}{2}\text{min}(t,3)$ in MATLAB.

The last two terms describe threat generation from our Vengeance ramp function. The first one, with limits $\int_a^b$ describes threat due to that ramp function between the turn-on time of the ramp ($a$) and the turn-off time of the threat buff ($t=3$). Our definition of $b$ automatically collapses this function in certain cases: if $a>3$ or $t<a$, the upper limit becomes $a$ and the integral $\int_a^a$ is identically zero.

The second term describes threat generation due to the ramp after the threat buff turns off. Again, our definition of $b$ ensures that if $t<3$, the lower limit is $t$ such that $\int_t^t$ goes to zero. If $t<a$, both upper and lower limits are $a$ and the integral also goes to zero.

Again, we can perform these integrations pretty easily, so we’ll do so. The result is a complicated piecewise function thanks to all of the conditionals, but with liberal use of the $\text{min}()$ and $\text{max}()$ functions it can be condensed into a single expression:

Again, it may be hard to get much intuition from the expression, but we can plot the results to see how this works for various values of $a$:

Tank threat vs. time for a variety of situations. Tank #1 is shown as a solid black line T1. Tank #2’s threat before 5.4 is shown with dashed lines for various values of a (0, 1, and 2). Tank #2’s threat after 5.4 is shown with solid lines for a=0, 1, 2, and 5.

First, let’s consider the “before” curves, which are shown in dashed lines. For $a=0$, which is the case where the ramp starts immediately upon taunting, we still lose threat somewhere around $t=7$. However, each second of delay we add to the ramp function lowers that crossover point by about a second. If the boss doesn’t start meleeing tank #2 again until $t=2$, they lose threat five seconds after taunting.

And keep in mind that this is still the idealized, continuous case. In reality, any time the threat curves for tanks #1 and #2 come close to one another, tank #2 is in danger of losing aggro thanks to a lucky (or unlucky, depending on your point of view) crit by tank #1.

The after curves are much more forgiving. Just as before, tank #2 has great threat generation for the first three seconds. And even with a five-second delay on the threat ramp function, they still manage to maintain aggro indefinitely. That huge, discontinuous threat boost at the beginning gives them the wiggle room tank #2 needs to deal with unlucky boss behavior. The curves start to get close after 14-16 seconds, but by that point tank #1’s Vengeance should be ready to decay as well.

So in short, even when threat ramp-up is included, threat can be a problem in the “before” model, but will rarely be an issue in the “after” model.

Summary

The entire point of this post wasn’t really to “prove” anything. Pretty much every tank knew that threat was dicey after a taunt early in an encounter, the only question was how they dealt with that problem. Some players use a Righteous Fury /cancelaura macro to make their co-tank’s lives easier (protip: Righteous Fury is on the GCD, but does not incur one, so you can cast RF and then immediately cast something else, making the cost of doing this very small). Other tanks, especially ones taunting off of classes that can’t turn off their 500% threat multiplier buff, just shrug their shoulders and play through it, taunting back as soon as it’s available.

Instead, the goal of this post was twofold. First, I wanted to illustrate mathematically why the problem exists in the first place. Second, I wanted to determine whether the 5.4 threat buff fixes that problem, and if so how much wiggle room it gives you.

The short version is that it adds about 7 seconds to the expected “time to threat loss,” which should make it much easier to maintain aggro after a taunt within the first 30-40 seconds of the encounter. Note that this is also applicable to any new mob – it’s not really encounter time that matters, it’s time spent building threat on the current target by both tanks.

Of course, the model is fairly limited. We’re only looking at continuous threat generation, when in practice everything is discrete. It’s still going to be possible to lose aggro after a taunt, but it should be rare. It will almost require that you stop pressing buttons, or that the tank you’re taunting off of suddenly crits with several big abilities in a row while you only connect with weak attacks.

It will still be good practice to try and time your taunts such that you can follow them with Judgment, Avenger’s Shield, or Holy Wrath to make sure you have a heavy-hitter landing in that 3-second window. But whereas before 5.4 that would only reduce your chance of having aggro ripped away, after 5.4 it should more or less guarantee it.

17 Responses to Blood, Toil, Tears, and Threat

It’s good to see concrete evidence that the taunt buff is gonna help with the tank swap issue.

I’m sincerely hoping they cancel the new changes on ptr, but what do you think about the SoI nerf and the Grand Crusader change? Based off the model you did that incorporated SoI, I’m thinking that the glyphless self healing of SoI would outweigh the raid healing of Battle Healer?

The GC change made me think back to the discussions you had several months back…. it’ll be interesting to see if the 30% chance is enough to make dodge/parry comparable to haste from a damage smoothing paradigm. Either way, it looks like Blizzard is aiming to keep traditional tank secondary stats…. so I guess that I’ll kiss goodbye to my dreams of dodge/parry going away permanently.

The SoI nerf clearly wasn’t targeted at us, mana isn’t even a consideration for prot. We’ll have to do some testing to see if we run OOM without SoI income; if so, hopefully they’ll compensate us somewhere.

The “new” version of Grand Crusader is what they tried during 5.3 PTR. It’s obviously better for avoidance, but makes off-tanking sort of bland. I think that’s why they settled on the 12%/12% version for 5.3. We’ll see how this shakes out, I guess. Other than making off-tanking more boring, I don’t think it’s a major problem.

I think the Battle Healer nerf was warranted, it’s incredibly strong. To be fair, the new version is *also* incredibly strong as a raid heal, but carries a huge survivability cost. I don’t see tanks working on challenging content making that trade, but it might be a fun toy glyph for LFR or outgeared flex/normal modes. On the bright side, I guess we have a new open glyph slot?

Looking at it myself, it looks like normal rotation up to about 20% haste won’t have an issue, as long as we are careful about the use of hand spells, rebuke and other utility spells.

Above that it looks like we drop certain talents, like Holy Prism and Hand of Purity, because we can’t afford the extra mana drain, in favor of having mana for using CS/HR/J consistently.

At about 43% haste it looks like we only have enough mana to spend on CS/HR, Judgement and GC procs of AS. All other GCDs are either dead zones in the rotation or non-mana abilities because mana use otherwise becomes resource negative.

Haste higher than that is not worth it because you burn mana too quickly even only using mana on HP generation, and nothing else.

That’s still quite a bit of haste, but I’m sure that would mean we would take a huge DPS hit because the higher the haste, the less Holy Wrath, Consecration, Hammer of Wrath(execute phase), Non-GC Avengers Shields and Holy Prisms(if talented) we can use, because we don’t have the mana for it.

Seems like we will either stay at sub-20% haste, or go higher but then have *burn phases* where we blow our mana pool for higher dps, then go through a mana positive rotation were we have very moderate dps but restore our mana pool.

Quote” It will still be good practice to try and time your taunts such that you can follow them with Judgment, Avenger’s Shield, or Holy Wrath to make sure you have a heavy-hitter landing in that 3-second window. But whereas before 5.4 that would only reduce your chance of having aggro ripped away, after 5.4 it should more or less guarantee it.”

I’ve done this for sometime when pulling from afar, so this will just make it that much easier to hold onto stuff that either recently spawned or during a tank swap.

I think this is a good change, harkening back to the days when (Hand of)Reckoning actually did initial damage on cast as well as taunted the target…of course without the damage.

Quoting CM-Lore – “The Seal of Insight change is not intended as a Protection nerf, or to make haste less attractive. In fact, the change is being made because of a Holy concern. Although Seal of Insight does benefit from haste, the stat’s real value for Protection comes from Sanctity of Battle. Regardless, we will be making adjustments to make sure Protection doesn’t start having mana issues. Current thinking is to increase the mana gain from Guarded by the Light to 10%.”

Simply out of curiosity, how does the threat buffs work with dots? Are the threat “decided” on refresh, much as damage is, or does it act like a temporary “debuff” on the target? Basically, would it be worth refreshing things such as Frost Fever and Blood Plague during the taunt window?

We’ll have to see the implementation. I suspect it will only work for effects that occur during that 3-second period though. DoTs snapshot several things (inconsistently, as Jack noted), but I don’t think threat is one of them.

But what actually might work is use taunt the first few seconds to increase the amount threat you produce in before the first tank swap. The other tank would need to do more threat to reach the 110% treshold, as the total amount auf threat would be higher.
So a max threat pull would probably be taunt on pull for safety and then after 8 secs again and maybe even a third time at 16 secs (depending on the boss).

Ooh, recognized by name and called “friend.” Why, that’s never happened before!

The thing I really like about this upcoming change, aside from effectively nullifying an obvious issue, is that it intrinsically promotes best practices in taunt swapping as a tank. Experience has taught us that the way to execute a taunt swap is to taunt and unload maximum threat into the boss for the first few seconds of the swap, but novices have never had proper execution so clearly incentivized and prioritized until this point.

I disagree, novices no longer need to prioritize hard hitting abilities after a taunt as they’re now doing 3x as much threat you’d have to have quite a large skill/gear gap for Novice Tank to be doing less than a third of the Threat of ProTank.

I’m more concerned that it’ll encourage Novice tanks to just Taunt on CD, rather than learn to use their abilities to hold aggro.

I’ve noticed some novices (and noobs) have already been taunting on CD. Ran into a few of them in Dragon Soul LFR, though when I immediately outdid them in threat when the taunt wore off they cried BS. We’ll see what happens on this taunt revision, but I think the truly novice will still find themselves lacking.

Oh there have always been tanks who do that, its just that with the taunt change, its actually going to viable way to hold aggro, as before it just obnoxious behaviour to the tank that’s playing properly.

The main problem I see with it is when a bad tank does that and hogs the boss when it’d be better for the raid as a whole if someone else was tanking. Thankfully the taunts themselves help with that issue, but it’s going to be interesting to see how some people handle it.