Periodic damage and healing have been a part of World of Warcraft since launch. They are most commonly referred to as a DoT (damage over time) and a HoT (heal over time).
The mechanics of these effects evolved over the years and now we have multiple mechanics being used in the game depending on the spell or effect. This post explains all the different mechanics and defines the terminology that is used in our theorycraft wiki, which defines how effects work in the AMR simulator.
Anatomy of a periodic effect
- Duration – How long the effect lasts on your target
- Interval – How often the effect “Ticks” on your target. Each time it ticks, it does damage or healing.
- Refresh – The term we use when we talk about casting the effect on your target again before the effect wears off. Presumably the goal is to keep the effect on the target longer or forever.
- Uptime – The percentage of a fight / encounter / mob’s lifespan that a periodic effect is present
Sounds simple! You cast your spell, the effect is applied to your target for X seconds, it ticks once every Y seconds for some amount Z.
But the idea of refresh starts to complicate things and creates a lot of questions.
- If a 15 second duration DoT is cast on a target, what happens if we try to refresh the DoT 5 seconds later?
- If you have 30% haste, does the DoT duration get decreased by 30% or the interval get decreased by 30%?
- What happens with the leftover time at the end of the DoT?
DoTs would be very easy to understand if you never had to refresh them – most of the complexity comes from refreshing because not all DoTs / HoTs are coded the same.
Calculating damage and healing
Every time an effect ticks, the damage/healing is calculated based on your current stats and the next tick is scheduled… except when it works differently.
Some effects have their damage and healing for the entire duration of the effect calculated at the time it is applied. Feral Druids have special abilities that allow their DoTs to Snapshot damage at the time they are applied. This used to be a big part of WoW back in the day, before it was removed across the board. Feral Druids (and Rogues with Nightstalker) are the exception. There are still some other periodic effects that calculate damage/healing at the time of application as well – those are discussed in the Append (Ignite) Type Effects section below.
Refresh types: Restart, Legacy, and 30% Pandemic
There are three different ways a DoT / HoT can refresh when you reapply it. It can Restart, use the “Legacy” rule, or use the 30% rule (also referred to as Pandemic).
Let’s start with some examples to illustrate how refreshing works (and then jump into the definitions). The examples below use the following scenario:
- A DoT that has a 15 second Duration and a 3 second Interval
- The player has zero Haste (to keep things simple)
Example 1: Refresh the DoT between the 4th and 5th ticks at time 00:13.00
Restart Legacy 30% Rule 00:00.00 CAST 00:00.00 CAST 00:00.00 CAST 00:03.00 TICK 00:03.00 TICK 00:03.00 TICK 00:06.00 TICK 00:06.00 TICK 00:06.00 TICK 00:09.00 TICK 00:09.00 TICK 00:09.00 TICK 00:12.00 TICK 00:12.00 TICK 00:12.00 TICK 00:13.00 CAST 00:13.00 CAST 00:13.00 CAST 00:16.00 TICK 00:15.00 TICK 00:15.00 TICK 00:19.00 TICK 00:18.00 TICK 00:18.00 TICK 00:22.00 TICK 00:21.00 TICK 00:21.00 TICK 00:25.00 TICK 00:24.00 TICK 00:24.00 TICK 00:28.00 TICK 00:27.00 TICK 00:27.00 TICK 00:30.00 TICK 00:30.00 TICK
Example 2: Refresh the DoT between the 3rd and 4th ticks at time 00:10.00
Restart Legacy 30% Rule 00:00.00 CAST 00:00.00 CAST 00:00.00 CAST 00:03.00 TICK 00:03.00 TICK 00:03.00 TICK 00:06.00 TICK 00:06.00 TICK 00:06.00 TICK 00:09.00 TICK 00:09.00 TICK 00:09.00 TICK 00:10.00 CAST 00:10.00 CAST 00:10.00 CAST 00:13.00 TICK 00:12.00 TICK 00:12.00 TICK 00:16.00 TICK 00:15.00 TICK 00:15.00 TICK 00:19.00 TICK 00:18.00 TICK 00:18.00 TICK 00:22.00 TICK 00:21.00 TICK 00:21.00 TICK 00:25.00 TICK 00:24.00 TICK 00:24.00 TICK 00:27.00 TICK 00:27.00 TICK 00:29.50 PARTIAL TICK
Restart refresh type means that the effect does not actually refresh. Casting it on a target that already has the effect will remove the old instance of the effect and replace it with a new one.
Legacy refresh is how periodic effects worked in vanilla and onward for quite some time, which is why we call it Legacy. When you cast on a target that already has the effect, the next scheduled tick will occur as scheduled. The duration of the new instance of the effect is appended after that next scheduled tick. This is why you used to always have to refresh between the second to last and last tick of a DoT or Hot for optimal play, as shown in example 1. Example 2 shows refreshing sooner, which is sub-optimal because you will effectively “clip” ticks of the periodic effect. In this case one tick is clipped from the initial cast. For a DoT with 5 ticks, you are losing 20% of the potential damage of that first cast. If you refresh like that every time on a DoT you keep up 100% of the time, you will effectively reduce the power of that spell by 20%!
30% Rule refresh is how most actively cast periodic effects work now. You may also see this called Pandemic. This is because warlocks were given a passive spell called Pandemic which allowed them to refresh DoTs in this way. The mechanic was eventually extended to the whole game. When a periodic effect is cast on a target that already has the effect, the lesser of: the remaining duration of the effect or 30% of the base duration of the effect is retained and added to the base duration of the effect. That is the new duration of the effect on the target. The currently scheduled tick will still occur as scheduled.
Example 1 shows: there are 2 seconds left on the DoT at time 00:13.00. The DoT would have expired at 00:15.00. The new duration of the DoT is the time remaining + the base duration, or 2 + 15. It will now expire 17 seconds later, at time 00:30.00. The tick scheduled to occur at time 00:15.00 still occurs at that time.
Example 2 shows: there are 5 seconds left on the DoT at time 00:10.00. The DoT would have expired at 00:15.00. 5 seconds is greater than 30% of the base duration of the DoT. The new duration of the DoT is 30% of the base duration + the base duration, or 4.5 + 15. It will now expire 19.5 seconds later, at time 00:29.50. The tick scheduled to occur at time 00:12.00 still occurs at that time.
The 30% rule can introduce partial ticks, as we see in Example 2. The damage of a partial tick is proportional to how much of a full tick it is. In Example 2, the partial tick occurs 2.5 seconds after the previous tick. The interval for this DoT is 3 seconds, so it will do 2.5/3.0 (83.33%) of a full tick of damage.
Optimal play with the 30% rule is much more forgiving than with the Legacy refresh rule. You can refresh a periodic effect anytime in the last 30% of the duration without losing anything. This gives much more flexibility to rotations and was a large quality of life improvement when it was introduced into the game.
Extend refresh simply extends the DoT by the new duration. I did not include a specific example in the table above because there is only one periodic effect I know of in BfA that uses this, and only under specific circumstances. (Nothing Personal rogue azerite trait can be extended when used in conjunction with Vision of Perfection major essence.) I currently don’t see anything using this for Shadowlands, but if there is, I’ll cover it more in-depth.
How Haste affects DoT / HoTs
In vanilla WoW, there was no Haste on gear. There were a couple of special effects and talents that increased attack speed, such as Flurry. There was nothing that would affect periodic effects. As Haste was introduced into the game and allowed to apply to periodic effects… things got complicated. Haste impacts periodic effects in a number of ways. In general, Blizzard tries to make any given effect scale with haste in only one way, to make scaling more predictable. Of course that isn’t a hard and fast rule.
We will once again look at our example of a 15 second duration DoT with a 3 second interval. Now we will also give the player 25% static haste.
Hasted Interval (Ticks) is the most common haste scaling for active spells. The interval is calculated as Base Interval / (1 + Haste). In this example: 3 / (1 + 0.25), or 2.4 seconds. The updated tick schedule for this spell would be:
00:00.00 CAST 00:02.40 TICK 00:04.80 TICK 00:07.20 TICK 00:09.60 TICK 00:12.00 TICK 00:14.40 TICK 00:15.00 PARTIAL TICK
Note that the damage of the partial tick at the end is calculated relative to the base interval including haste. So in this case the damage is 0.6 / 2.4 = 25% of a full tick’s damage. The base DoT has 5 ticks. The hasted DoT has 6.25 ticks. This is exactly a 25% increase in total ticks.
What if your Haste is not constant? If you have, say, zero Haste but then gain a temporary 25% haste buff lasting 20 seconds at time 00:10.00?
00:00.00 CAST 00:03.00 TICK 00:06.00 TICK 00:09.00 TICK 00:10.00 GAIN 25% HASTE 00:12.00 TICK 00:14.40 TICK 00:15.00 PARTIAL TICK
The currently scheduled tick of a periodic effect is never rescheduled. As soon as our example DoT ticked at time 00:09.00, the next tick was scheduled for 00:12.00 because we had zero haste at the time it was scheduled. At time 00:12.00 we have 25% haste and the next tick is scheduled for 2.4 seconds later.
Hasted Duration is another way to scale periodic effects with Haste. Not very many effects use this method. This effectively Snapshots your haste at the time you cast/apply the effect. You will sometimes see the term snapshot or snapshotting when talking about periodic effects. In this case, it means that full duration and tick schedule of the DoT is determined at the time it is applied. No change in Haste will affect that schedule. Here is the schedule for our example spell with 25% Haste:
00:00.00 CAST 00:02.40 TICK 00:04.80 TICK 00:07.20 TICK 00:09.60 TICK 00:12.00 TICK
Regardless of how much Haste you have, you will always get exactly 5 ticks. Some spells you may know that work like this are Mind Flay, Drain Life, and Drain Soul.
Hasted Cooldown is yet another way to allow a periodic effect to scale with Haste. This is only used on effects that are not meant to be maintained with 100% uptime. Haste is allowed to affect the actual cooldown of the spell, letting you cast it more often.
Hasted RPPM applies to periodic effects triggered by special effects, like a trinket’s effect. RPPM is short for Real Proc Per Minute and is the system by which many randomly triggered effects occur in WoW. It is random, but with some logic to prevent long unlucky streaks or extremely lucky streaks. Sometimes, Blizzard elects to make an effect’s proc rate scale with Haste instead of the effect itself. Haste will give you more procs instead of each proc ticking more.
Append (Ignite) Type Effects
Ignite is an effect that has been in the game since vanilla WoW. Originally it was a talent for mages. It is still the mastery effect for fire mages. There are multiple periodic effects in the game that use the same mechanic now. In the simulator wiki we say these are effects that append their damage or healing to the value of the current periodic effect on the target.
For example, we can use Ignite, which has a 9 second duration and a 1 second interval. It uses a legacy type refresh. Lets say it does a total of 900 damage. Ignite is not affected by haste. One application of Ignite would do 100 damage each second for 9 seconds. What happens if another 900 damage Ignite is applied 3.5 seconds after the first?
Time Damage Event 00:00.00 APPLIED 00:01.00 100 TICK 00:02.00 100 TICK 00:03.00 100 TICK 00:03.50 REFRESH, 900 Damage Appended 00:04.00 150 TICK 00:05.00 150 TICK 00:06.00 150 TICK 00:07.00 150 TICK 00:08.00 150 TICK 00:09.00 150 TICK 00:10.00 150 TICK 00:11.00 150 TICK 00:12.00 150 TICK 00:13.00 150 TICK
The legacy refresh keeps our next scheduled tick at 4 seconds and then adds 9 ticks after that. The total number of ticks in the new DoT is 10. 300 of the 900 damage has already been done at time 3.5, leaving 600 damage remaining. The refresh adds 900 damage to the remaining total of 600, for 1500 damage spread out among the 10 ticks. 1500 / 10 = 150 damage per tick.
Implicit in this type of effect is that the damage/healing snapshots when it is applied. Most periodic effects calculate the damage/healing each time the effect ticks, based on your current stats. These ignite style effects calculate the damage of all the ticks when they are applied or refreshed, usually because they are based on the damage of some other effect which already scales with multipliers.
As with Ignite, this type of periodic effect is almost always a proc from some other spell. Ignite does a percentage of the total damage of many spells fire mages cast. It doesn’t make sense for this type of effect to have hasted ticks or duration, since haste scaling is already baked into it. More haste lets you cast spells faster, and this is essentially a multiplier on the damage of your other spells, which already scale with haste. That being said – Devouring Plague was added back in for Shadow Priests in Shadowlands. It uses this type of effect and also has hasted ticks.
Sometimes when a periodic effect is refreshed, it also stacks. If the effect does, say, 100 damage per tick – after being refreshed once it will now do 200 damage per tick. These usually use a legacy refresh, but there are one or two that use a 30% rule refresh.
Unstable Affliction (Changed in Shadowlands)
No longer implemented in the game like this, but I’ll leave this here to explain how it worked during BfA: This is a unique periodic effect in the game that sort of falls under stacking effects. Instead of the DoT itself stacking and getting bigger ticks, you can stack multiple copies of the DoT on the target, up to 5. Because of this, it also doesn’t really refresh, it applies a totally new DoT in parallel with the other instances on the target. I believe Blizzard chose this implementation mainly for PvP purposes. Unstable Affliction does damage to targets and silences them if it is dispelled. The parallel instances implementation makes it harder to dispel all the stacks if the warlock does manage to get multiple up on the target.
Some periodic effects will tick immediately when they are applied. This tick does not interact in any way with the refresh mechanics of the effect. Refreshing one of these effects will maintain the tick schedule per the refresh rules, but add the immediate tick at the time of the refresh. Many spells have this type of behavior, but the immediate tick is actually a separate spell effect (and spell id) in the game.
As outlined above, partial ticks can occur because of haste and the 30% refresh rule. There are some periodic effects that will not do a partial tick. If the effect expires in between ticks, nothing happens at the time of expiration. For example, channeled periodic effects like Mind Flay will not do a partial tick at the time you cancel a channel if you choose not to continue channeling to the end of the effect.
Ok, that’s it. Easy right? I have kept this post focused on explaining how the mechanics of periodic effects work. In other posts, I may discuss periodic effects further and explore some of Blizzard’s choices in implementing periodic effects (rant about things that aren’t consistent or don’t make sense).
Appendix: How Many Different Ways…
How many different ways does Blizzard combine these mechanics in WoW (with examples)?
- Hasted Ticks, 30% Refresh, Partial Tick (Corruption, Shadow Word: Pain)
- 30% Refresh, Partial Tick (Frost Fever, Virulent Plague)
- Legacy Refresh (Trail of Ruin, some item procs)
- Hasted Ticks, Legacy Refresh (Serpent Sting, Marksmanship)
- Legacy Refresh, Tick Immediately (Trailing Embers)
- Hasted Duration (Phantom Singularity)
- Hasted Duration, 30% Refresh, Partial Tick (Mind Flay, Drain Life)
- Legacy Refresh, Append (Ignite)
- Hasted Ticks, Legacy Refresh, Stacking (Dagger in the Back)
- Hasted Ticks, 30% Refresh, Partial Tick, Stacks (Holy Fire)
- Unstable Affliction (Unique parallel applications)
- Hasted Ticks, Legacy Refresh, Partial Tick, Append (Feral Frenzy)
I’ve probably missed some quirky effect – and I didn’t list out an explicit combo for effects that have hasted cooldowns or not. You should really check out my rant about DoTs if you are interested in this type of stuff… I think it is nuts for the implementation of periodic effects to be so all over the place like this. Most people never knew it was this complicated and it surely isn’t making balance perfect.