Two most asked questions: Base Spells and Macro locks

I thought I’d summarise the top two questions I’m getting asked pretty much multiple times each day. Why does my spell change to X and why does my macro lock?

The spell changing to X no matter how many times I enter it.

GSE saves the BASE SPELL for an ability. This started in BFA or Legion (I cant remember which) where Talents and Procs would change an ability (very temporarily for procs, more permanently for talents) into an updated version. The simplest of these examples ins Paladin’s Avenging Wrath and the talent Crusade. If you put ‘/cast Avenging Wrath’ into a macro and had the talent for Crusade it would cast Crusade. If however, you had ‘/cast Crusade’ and no longer had the talent, your macro would never cast Avenging Wrath.

While this worked - underneath the covers I had a list, and was checking it twice to determine which spells replaced which. As it was manual it missed some and in a few cases had the wrong combination. In working through Shadowlands changes I found Blizzards function to get the base spell from any ability. What we didn’t know then but know now is that Spec changes change a base spell into a spec specific variant. For Priests, Flash Heal becomes Shadow Mend when you swap to shadow. There is a similar relationship between Eviserate and Dispatch, Shear and Demon’s Bite. /cast Flash Heal if you are I. Shadow form will cast Shadow Mend. (You can test this by being shadow and entering /cast Flash Heal into your chat box.) Do not panic but use your brain and look at the logs. (I had someone post a castsequence as proof that this didn’t work. Their castsequence was locking 3 spells earlier. We will talk about this in the next part.)

What this also means is that we can write a macro to work across specs now. Whether you would want to do that or not is another matter.

There are some circumstances where you actually need a specific version of a spell. Shadow Priests can cast Void Bolt (and it needs to specifically be void bolt not the base spell) when channeling a certain ability. To do this prefix the line with $$ eg $$/cast Void Bolt or $$/castsequence spell1, Void Bolt , spell3, etc

I have seen people saying the work around is /use. /use is for items /cast is for spells. This becomes more important when /use is matched up with itemid’s and equipment slots not spellid’s.

Before you really freak out you can do some simple tests. Take a spell you are trying to add to your macro and do the following: (You will need to turn off stuff like ElvUI for this to work)

/run print(GetSpellInfo(“Shadow Mend”))

This will return a bunch of stuff but the last number is the spell id. For the sake of the excercise I’m going to use 1234

/run print(FindBaseSpellByID(1234))

This will return a different spell id if it is an update to a base spell. If it returns nothing then this is the base spell - for examples sake I’m going to use 9876

/run print(GetSpellInfo(9876))
This will then return Flash Heal.

/cast Flash Heal will cast instead Shadow Mend if I am shadow spec’d.

Note these numbers aren’t the right ones as it’s 5am where I am and I’m on a phone. You can do this with any spell but to go from a name to an if in the first step you need to know the spell. If you are in disc and go getspellinfo(shadowmend) it won’t work as you don’t know shadow mend.

Why does my macro lock
There are two types of locks- a GCD lock and castsequence locks.

If you are using /castsequence lines in your macro there are a number of gotchas you MUST become familiar with. The first is it’s broken and inconsistent. You may respond but it’s always worked for me. Just wait till it starts acting weird and remember this post. Blizzard are aware of the problems however are not inclined to fix them as in the scenarios they have designed castsequence for it works fine.

You need to know every spell in a castsequence. If you don’t the castsequence will get stuck. A castsequence won’t progress unless the current attempted cast succeeds. If the spell you are attempting is on cooldown or doesn’t have the resource or the gcd is in effect it won’t succeed and will loop back to the same point. There are generators for things like holy power or combo points etc. if your castsequence is trying to do a finisher and you don’t have the points it will sit there and keep trying until you do have the points.

You can use not knowing a spell to your advantage. /castsequence spell1, null is a common way of casting a spell once. The key to this is that null is not a spell. Except it is an item and is an abbreviation of a spell. Sometimes Blizzard goes oh you are trying to cast null you must mean Nullification Barrier oh you can’t cast that yet. Wait it’s a GCD ability so I will lock the rest of your macro.

GCD locks happen when you try to cast two or more abilities at the same time. The rules are pretty simple first in first served. You need to think of each line in the sequence part of your macro like the hamburger patty. There are buns above and below it and other layers around it. The lines in key press make up the layers above the patty while the lines in KeyRelease form the layers under the patty. When you press a key that entire stack is sent to WoW. The first GCD ability that meats the modifiers and conditions is the only one processed irrespective of if it’s on cooldown or not or able to be cast or not. Even putting GCD spells from other classes can lock the stack.

To join the dots remember that null that’s sometimes turning into nullification barrier? It’s on the GCD so even though it’s not in your class the rest of your macro can lock.

4 Likes

hello thanks for the post, in practice macros should all be run only with /cast spell without using castsequence as this is random and not always used well. as you said by legion in fact it seems that addon goes randomly often. i hope you can fix this thing. i also often notice for example premacro put a spell and not start with that but start directly from sequence, instead should use 1 time premacro at the start. i hope you fix it all.

Translated with www.DeepL.com/Translator (free version)

Hey @gamers - there isn’t something to fix. This is all expected behaviour. Slow your macro down and you will solve the addon going random. Also your premacro still uses keypress and if there is something in that it will prevent your premacro line from firing. I use pause lines in the premacro to make sure extra lines are not skipped.