Author’s note: I have quit playing WoW before patch 3.0.5. Warcraft-related content is no longer being updated, and information in this post may not reflect the live game any more.
OK, so there appears to still be quite a lot of confusion on what the changes in patch 2.3 in regards to /stopcasting actually mean.
First, let me stress this again, patch 2.3 doesn’t remove the /stopcasting command, it introduces a mechanism which removes the need to use /stopcasting to chain spells faster than what the normal latency between your client and the wow server allows for.
What it really fixes is the risk of canceling a spell if you hit /stopcasting too soon, which is a risk on long cast times, as the latency Quartz displays is an estimate based on the time it took between the moment you hit a spell command in your client and the server sent back an acknowledgment that it had begun casting.
But as the saying goes, a picture is worth a thousand words, so let’s illustrate all this. Figure 1 to the right shows what happens today:
- The player hits a spell button, the global cooldown (GCD) triggers on the client
- The command hits the server, the spell starts casting “for real”, and an acknowledgment is sent back to the client
- The client receives the acknowledgment and now starts its own cast including animation. Quartz and similar addons have measured the gap between 1. and now, and display that at the end of your casting bar
- If you use /stopcasting here, the client will believe you have interrupted your current cast and send a new one to the server
- Due to the latency, however, the /stopcasting reaches the server after your spell is fully cast, and a new spellcast is immediately started. You will, in practice, have gained up to half of the red bar.
Now the weakness, in particular on long casts, is that latency can change very rapidly. If you have a long roundtrip from 1. to 3. when you start casting Pyroblast, for instance, 5 seconds later the latency may suddenly be a lot better, and you risk sending a /stopcasting too soon, canceling your current spellcast.
The change in 2.3 fixes that by removing the need to use /stopcasting to achieve such an effect. Right before we illustrate the new behaviour, let me stress this again: patch 2.3 doesn’t prevent you from continuing with the same /stopcasting methods as today, it simply gives you an alternative removing the risk of canceling if you make a timing mistake.
On Figure 2 you see the new behaviour as described by Slouken on the US UI & Macros forum:
- As before, you hit your spell button and the global cooldown begins immediately.
- The cast command reaches the server which acknowledges it is starting to cast. Further, the acknowledgment also tells the client that triggering the GCD was justified.
- The acknowledgment hits the client, the casting animation starts on the player end, the GCD finishes, Quartz estimates the duration of the round-trip and colours the end of the bar in red like before.
- You send a new /cast command without /stopcasting. The GCD gets triggered and the spell starts its trip to the server
- If the previous cast is finished, the new one starts and the acknowledgment gets sent back. If however you are too soon, the signal will be sent back that the spell failed and the GCD will be reset on the client
- If all went well, you’d get the acknowledgment back and your spell animation would start in your client.
Again, the key difference here is that the client will send the new /cast command to the server early even if it believes that its current spell isn’t yet done with, but it will trigger the GCD immediately as well.
Now some people have interpreted the announced changes as an incentive to buttons-mashing, like Girl Meets WoW (note to self: need to read more on her blog, looks like there’s plenty of interesting stuff here). But reading into Slouken’s explanations on the intended behaviour, what really happens if you mash is depicted on figure 3:
- You start your first cast as usual
- The cast starts on the server, the acknowledgment comes back to the client
- The acknowledgment is received by the client and the client begins its casting
- You hit the next spell too soon, the global cooldown triggers, preventing you from mashing or doing any other spell action tied to the GCD
- The server receives your command, sees that it’s too early, sends back a denial
- The denial is received by the client, the GCD is interrupted and you get an error message. You can cast again, triggering the GCD
- The new spellcast reaches the server, which sees it has not action going, and you’re back to step 2.
The key thing here is, during the GCD, the client will no longer accept any casting commands from your side until a) the GCD has run its full course or b) it has recieved a notification from the server that it wasn’t actually legit and stops the GCD. Basically, button-mashing, which is possible nowadays, will actually carry a higher penalty than today on spells with cast times longer than 1.5s
Therefore, don’t mash in 2.3
EDIT: In the meantime, the mechanism has been adjusted by Blizzard. At the time of this belated edit (May 2008), there is no mash penalty anymore.