Behavior of DoTs and Haste in Warlords of Draenor

Among the various bits of mechanical info that’s been revealed about Warlords is the fact DoTs and HoTs will no longer have “haste breakpoints” and will no longer “snapshot” your stats at cast time. Celestalon has mentioned this a few times on twitter and frequently responded to questions about it. Since a lot of people seem to have questions on how the math of this breakpoint-less system will work, I want to to explain some of the behavior that will result from this. First, a brief history of this whole problem.

Current System: Haste Breakpoints and Rounding

Before Cataclysm, haste generally did not affect the rate of DoT ticks. There were a few exceptions, such as the Glyph of Rapid Rejuvenation that caused the tick rate of Rejuvenation to be affected by haste. But this did so by shortening the total duration of the HoT and keeping the number of ticks constant, so it didn’t have to address the big question of DoTs and haste: what do to with the fractional ticks that appear when you do this?

When Cataclysm introduced a general mechanic whereby DoT ticks would be accelerated by haste, it handled this problem by changing the duration of the DoT, rounding it to the nearest integer number of ticks.

To work an example: say a DoT has a 12-second duration and a tick period of 3 seconds. Unhasted, when you cast the DoT, a 12-second debuff appears on the target, and the 4th tick will occur exactly as the debuff expires. If you add 25% haste, the tick period will decrease to 2.4 seconds (3/1.25). Since 5 ticks at 2.4 seconds is exactly 12, you will still get a 12-second debuff when you cast the DoT, and now it will be the 5th tick that occurs as the debuff expires. But what if you only had 20% haste? Now the tick period is 2.5 seconds (3/1.2). Since there is no system in place for handling partial ticks, the game can either give you:

  • A 4-tick DoT that lasts 10 seconds, or
  • A 5-tick DoT that lasts 12.5 seconds.

In fact, you get the latter. The game rounds to the closest whole number of ticks, and since in this example, the 5-tick option is closer to the default duration of 12, that’s what you get.

Finally, if you had 12.5% haste, the tick rate would be 2.667. So a 4-tick DoT would be 10.67 seconds, and a 5-tick DoT would be 13.33 seconds. These are equidistant from 12, and this is the oft-discussed “breakpoint.” At any higher amount of haste, you get 5 ticks, and at any lower amount, you get 4.

DoThaste1

A few important results of this:

  • The damage done with a single cast jumps up at the breakpoint, as you probably already understand. But hopefully this clarified why the breakpoint has to exist in the current system.
  • The DoT duration went all over the place: it started at 12, then went down under 11, then up over 13, then back to 12. In fact, it follows a sawtooth pattern, as shown in the graph below.
  • The tick period decreases steadily and smoothly. This does mean that if you continuously maintain a DoT, the DPS it does increases smoothly. However, the frequency with which you have to spend a GCD refreshing the DoT depends on its duration, and that behaves erratically, as discussed.
DoThaste2

A related issue is what happens when you refresh a DoT while it’s ticking. Pre-Catalysm, you would start a fully new DoT and lose the remaining portion of the previous. Starting in Cataclysm, you get the next tick of the old DoT, and then the full duration of the new DoT. So the window to refresh a DoT with zero loss of uptime is the final tick period of each DoT. Warlocks, due to Pandemic, have a much longer window–half the length of a DoT.

Finally, since the computation of a DoT’s duration must be made at the time of cast or refresh, it has to snapshot your haste at that time. There’s no way to update the tick period on the fly when the duration is precomputed to be a whole number of ticks and there’s no system for handling a partial tick.

The Warlords System: Smooth Scaling with Haste

So the two mains goals for a revision in Warlords were:

  • Eliminate haste breakpoints, because, especially with the removal of reforging, they cause a lot of gearing confusion, and
  • Eliminate DoT snapshotting, which was seen as introducing too much of a skill gap in some classes, and also imposing a UI requirement.

The one new piece of tech that makes both of these possible is, as you may have guessed, partial DoT ticks. What exactly is a “partial DoT tick”?

When a DoT expires, it will do a partial tick of damage based on how much time had elapsed since the previous full tick.

So if a DoT had been ticking every 2 seconds, and it ticks with 3 seconds remaining in the duration, it will give a full tick with 1 second remaining. Then, when the debuff expires, the DoT will see that 1 second (half of a tick period) has elapsed since the previous full tick, and will give a tick of half the usual strength.

And that’s actually all. Partial ticks are simply a way of reconciling the fact that the DoT itself doesn’t necessarily end at the exact moment a tick occurs. Once there’s a way for the DoT duration to end whenever it ends, rather than ensuring it happens on a tick, there’s complete flexibility to vary DoT tick timing as needed to accomplish the goals above. To focus on one important point, even though the partial tick only happens if the DoT falls off, this does still affect you if you continuously refresh a DoT, because the initial duration of the DoT no longer changes with your haste. The example below should make this clear.

One other point to discuss before examples is how refreshing will work. When the “final tick” of a DoT will usually be a partial tick of any length, the system of requiring a refresh in the final tick period doesn’t work as well anymore. What Blizzard has suggested is that they will give everyone a mechanic like Pandemic, although at some percentage lower than 50% (possibly 30%). So your window to refresh a DoT without any loss of uptime will be 30% of the duration, regardless of the tick interval.

Screen Shot 2014-03-29 at 4.19.15 PM

Examples

Basic example: with our 12-second DoT with a 3-second tick period from above. At 0 haste or 25% haste, the behavior will be the same as above (putting aside changing haste or clipping), since you already had a whole number of ticks. But at 20% haste (2.5 second tick time), the new system will become clear. When you cast the DoT, a 12-second debuff will appear on the target, ticking every 2.5 seconds, as opposed to the 12.5-second debuff you’d get in the current system. The 4th tick will happen after 10 seconds, and there will be 2 seconds remaining. If you do not refresh, then after those two seconds, the DoT will expire, doing a partial tick that is 80% as strong as a regular tick (2/2.5 = 0.8).

Example with added ticks: Now you’re under the effect of Bloodlust and some other procs, and are up to 60% haste. The number of ticks you’d expect for one cast, from a default of 4 ticks, is 4*1.6 = 6.4 ticks. So you will get 6 full ticks, exactly as under the current system, but now there will be a new partial tick at 40% strength as the DoT expires. Under the new system, haste does still add full DoT ticks, but it doesn’t add them all at once at certain points. More haste will add increasing fractions of the next tick, until it’s created a whole new tick, and then start adding fractions of the subsequent tick.

Example with refresh: Back to the initial example with 20% haste, say you refresh anytime in the last 3.6 seconds of the initial DoT (30% of the 12-second duration). Then the DoT will be extended by 12 seconds, so it will be set to expire 24 seconds after the initial cast. The 4th tick will happen at 10 seconds after initial cast as before. But now no partial tick will happen at 12s (since the DoT is not expiring), and the 5th tick will happen right on schedule at 12.5s. Ticks will continue to happen at 15, 17.5, 20, and 22.5. Then when the DoT expires at 24s, 1.5s after the previous full tick, you will get a tick worth 60% of full value.

Note what has happened in total: you’ve cast the DoT 2 times and spent 2 GCDs. The DoT was on the target for 24.0 seconds (twice the default duration). You got 9.6 ticks’ worth of damage. This is exactly right, as you cast a DoT with a default 4 ticks, twice, with 20% haste. 4*2*1.2 = 9.6.

Example with changing haste: Same example as the previous, but after 15 seconds, your haste decreases from 20% to 11.1%, increasing your tick interval from 2.5 to 2.7 seconds. So after the tick at 15 seconds, ticks will occur at 17.7, 20.4, and 23.1. When the HoT expires at the 24-second mark, it will have been 0.9s since the last full tick, so the partial tick upon expiration will be 1/3 of full strength (0.9/2.7).

Example with continuous refresh: Now, in a 300-second fight, you cast the DoT at the start, and always refresh in the Pandemic window after that. Because every cast of the DoT adds 12 seconds of duration, after you cast 25 times, it will expire exactly as the fight ends.  With 20% haste, it will tick every 2.5 seconds that entire time, giving a total of 120 ticks by the end of the fight. This is exactly what you would expect: without haste, the 3-second DoT would have ticked 100 times in the fight, so with 20% haste, it ticked 120 times.

If you point out that that’s the same thing that would happen in the current system, 120 ticks over the course of the encounter in that example, you’d be right. However, in the current system, each application of the DoT adds 12.5 seconds of duration, so you’d only have cast it 24 times to cover a 300-second fight. That oddity will no longer be present in Warlords.

Conclusion

In an ideal world with no tech limitations, one could imagine DoTs that do damage perfectly continuously. Then, there would be no issue of a DoT ending between “ticks,” and the damage could smoothly increase with any stat as desired. The best summary of the Warlords system is that it mirrors this result, but it buckets the damage into ticks. If you think of each tick as including the damage that occurred since the previous one, that explains the partial tick perfectly. When the DoT expires between ticks, the leftover amount of damage that the DoT should do is gathered together and put into one final tick. In the end, the total amount of damage done always corresponds to the amount of time the DoT was active, and the “ticks” are simply a way of delivering the damage in periodic clumps.

The end result is that the system is coherent from all angles. A DoT cast always adds a fixed amount of duration, and a DoT always does an amount of damage corresponding to the time it was active. Haste will smoothly increase the amount of damage a DoT does while active. If you focus on these things rather than on the partial tick, the system is easiest to understand. The partial tick is simply a mechanism to make sure that the final bit of damage is done correctly, and in general you shouldn’t worry about it. The most prominent change from the current system is that the duration of a DoT doesn’t change with haste.