There’s really not a lot to complain about in our 5.x rotation, but every now and then while I’m playing or writing simulations, I’ll notice a new oddity. This isn’t that surprising – we had a pretty significant overhaul in 5.0, and while the developers did an impressive job of ironing out most of the kinks, stuff inevitably falls through the cracks when you have a system as complex as WoW.
This time, it’s another instance of haste-induced weirdness courtesy of Sanctity of Battle. This isn’t the first time that haste scaling has introduced curiosities into our rotation – you may remember back in beta, when Sanctity of Battle was accidentally leading to situations where adding more haste decreased your DPS because of cooldown clashes. Luckily, that particular bug was fixed before Mists of Pandaria was released.
This time the weirdness is quite a bit more subtle, and involves one of our level 75 talents: Holy Avenger. Unlike most of our rotational abilities, Shield of the Righteous isn’t affected by Sanctity of Battle. This leads to a weird situation where if you have a lot of haste (for example, Heroism/Bloodlust) and pop Holy Avenger, you can inadvertently “munch” holy power (for lack of a better term, also because “lusty munching” is an awesome name for a blog post).
To illustrate this, let’s say for the moment that you have 5% haste from gear, the 5% spell haste raid buff, Seal of Insight‘s 10% spell haste, and 30% haste from Heroism. With that much haste your melee GCD is just under 1.1 seconds and your spell GCD is capped at 1 second. However, your SotR cooldown is still stuck at 1.5 seconds. You can probably already guess where this is headed: you end up casting holy power generators faster than you can actually consume holy power with SotR.
For example, let’s say you get lucky with Grand Crusader procs and end up casting a sequence of CS-J-AS-CS-AS-. That’s five holy power generators in a row, being cast at times t=0, 1.1, 2.2, 3.3, and 4.4 seconds. However, even if you cast your first SotR instantly after CS at t=0, you can’t keep up with that rate of HPG. Your SotR casts happen at t=0, 1.5, 3.0, and 4.5 seconds. Note that there are two holy power generators occurring between the SotR casts at t=3.0 and at t=4.5 (at t=3.3 and t=4.4), which means one of them ended up wasted. If we’re lucky we started the entire sequence at 0 holy power, and really only ended up wasting one holy power instead of three. But if it happens more than once during the duration of Holy Avenger, the second one is guaranteed to waste three holy power.
In this idealized case, you need to get lucky with Grand Crusader to set up that situation. However, that’s only how it works on paper. In practice this issue shows up far more commonly because of latency and reaction time. I can’t say for sure if SotR can be queued early like other spells – for example, CS can be queued within the latency tolerance window even if it’s still on coldown, provided the remaining cooldown is less than your latency tolerance of course – but while raiding it certainly didn’t feel like it could be, as I was consistently seeing munching issues with single Grand Crusader procs such as CS-J-AS-CS-, which shouldn’t cause the problem according to the ideal scenario.
On the other hand, I’m also certain that I don’t queue up my first SotR instantly after that first Crusader Strike either. My own reaction time is such that I’m sure there’s at least 50-100 ms of delay between hitting CS and hitting SotR, and that might be a low estimate if I’m trying to do other things as well (moving, taunting a boss, etc.). And if there’s any delay being accumulated (from similar sources) between SotR casts, that’s going to push subsequent ones back and cause the same clashing issue. This is perhaps more easily seen in graphical form:
The first block diagram shows the ideal case, where your SotR is cast nearly instantly after CS (in this case I’ve delayed it very slightly, less than 30 milliseconds). There’s only one holy power generator occurring during each SotR cooldown period, so nothing gets munched. Note, however, that if that second Crusader Strike ends up proccing Grand Crusader, we have the 5-HPG scenario described above and the extra Grand Crusader proc gets munched.
The second block diagram shows a more realistic scenario, where SotR is delayed by a little more than a third of a second (350 milliseconds to be precise) to account for latency and reaction time. And as you can see, because of the extra delay the second Crusader Strike is just edging ahead of the third SotR cast, leading to the Crusader Strike being munched. If there’s any more than 300 milliseconds of delay accumulated during those first two SotR casts, either from pre-casting delay or delay between the casts themselves, you’ll run into this situation.
Note that I haven’t shown the Avenger’s Shield cooldown as being reduced to 1 second in this diagram, because it doesn’t end up affecting the results. At first I mistakenly thought this was a factor in producing this munching scenario, but while making the diagram I realized that all it does is introduce a 0.1-second gap between the end of the AS GCD and the beginning of the CS GCD, as CS doesn’t become available any sooner, even with spell queuing.
I tend to work a little like a metronome, in nice even GCD increments (though Mel has me beat hands-down there: he’s the only person I know who considers a stopwatch an essential element of a raiding UI). For off-GCD abilities like SotR, Heroic Strike, and what have you, I tend to default to casting on half-integer steps, or halfway between GCDs. That’s obviously a problem in this situation though, since I’d be immediately putting a ~500 millisecond delay on my first SotR cast, guaranteeing that I’ll end up munching my third HP generator.
When Heroism is cast that metronome speeds up, but the rhythm is still nice and steady. But this gets a little screwy because speeding up my rhythm for the rotation completely de-synchs it from the SotR cast intervals. And my poor, feeble brain just can’t handle that for some reason; trying to keep both of those timers running in my head just doesn’t work, and inevitably good ol’ brainy just gives up on the SotR one. I account for it rather inelegantly: continuously spamming my SotR keybind (which itself incurs a few hundred ms of delay – think about how many times you can realistically press and release a button per second, it’s probably only 4-5 at most). And I’m afraid the problem is only going to get worse as we accumulate more haste on our gear in future tiers, because eventually we’ll have enough melee haste that the de-synching will occur (for me, at least) outside of Heroism.
Luckily, there are two pretty straightforward solutions the developers could employ to eliminate this particular case of weirdness. The first is to simply add SotR to Sanctity of Battle. That way, the cooldown would scale exactly the same way as CS/J/etc., and players like me could go back to using one internal metronome. The other solution is potentially even simpler: they could reduce the cooldown on SotR to one second instead of 1.5 seconds.
Those may seem like pretty significant buffs at first glance, but in fact, they really aren’t. SotR is primarily limited by holy power rather than its cooldown, and the duration of the mitigation buff is additive anyway, so reducing the cooldown wouldn’t change how we use the ability in normal circumstances. And I doubt it’s a concern in PvP to be able to get two SotRs off in 1 second instead of 1.5 seconds (do people even PvP as prot anymore?).
At best we’d get an additional ~3-6 seconds of SotR uptime per encounter, provided we use Holy Avenger during Heroism and get lucky with Grand Crusader procs. That’s 1%-2% more SotR uptime for a 5-minute encounter, and less if we aren’t lucky. And it comes during the period when healers are at their maximum effectiveness too, further reducing the benefit. I don’t think it constitutes an unbalancing increase in survivability, to be sure. It would primarily be a quality-of-life boost to eliminate that weirdness and make the rotation feel less awkward in this one niche situation.
Note that everything I’ve said about SotR here could be equally applicable to Word of Glory, though I haven’t mentioned it until now. Chain-casting WoG will run into exactly the same munching problem, so it probably warrants a similar solution. I don’t think it’s any more unbalancing for WoG to be a 1-second cooldown for Prot or Ret, though I admit I don’t know how it would affect Holy (in fact, I don’t even know if they like to spec for Holy Avenger).