Why is castsequence so popular in GSE macros?

I’m watching a video from someone who just released a Feral Druid GSE macro. He says feral druids are difficult to macro so he had to use castsequence.

I’ve noticed that it is quite popular here to use castsequence in GSE macros. The GSE author has made it clear castsequence works differently in GSE than in a regular macro. A small amount of testing will make that obvious.

So why is castsequence so popular in GSE macros?

Castsequences do two things:
-Ensure that each ability in a sequence gets used in order
-Limits the entire castsequence line if any ability in it cannot be used

Castsequences do not:
-Ensure each ability in a sequence is used in order without being cut in by other abilities (think of shuffling a deck of cards, where each stack is a sequence and you fan them together)
-Ensure that, even though abilities will be sent to WoW in order, that game will use them in order (sending a command to WoW that’s on cooldown or cannot be used gets skipped if by itself, but will lock a sequence)

The primary use of a castsequence is to ensure that important abilities have the necessary resources acquired before it. A castsequence like “/castsequence (ability builder), (ability spender)” will serve to make sure that you will not use the builder without using the spender soon after. It does not guarantee it will be immediately after, just after in general.

This can be dangerous if not macroed properly, though, because of the secondary use of castsequences I’ll detail below.

The secondary use of a castsequence is to give an ability that would otherwise not be limited a limit. For example, if you have an ability that has no cooldown and you want to use it often, but not spam it unto eternity, you could sequence it with an ability with an appropriate cooldown to limit the whole line. “/castsequence (ability with cooldown or resource need), (ability without cooldown or resource need)” reads: Use ability with CD or resource need. Did it work? Yes? Use ability without CD or resource need. If the first ability is on cooldown or you do not have the resources to use it, when the macro attempts it the entire castsequence line will lock up and wait until that condition is true again.

So, for example, Power Word: Shield has no cooldown for a Discipline Priest. You want to use it to give the Atonement buff to your healing targets. But, any macro you make with PW:S in it will spam it and never move on because it has nothing to keep it from doing so. No cooldown and no resource need other than mana. But, if you put it into a sequence with Divine Star, you now are effectively making PW:S share the cooldown with Divine Star. Shield will cast, then Divine Star will cast. Later, when Shield is cast again it’ll do so, but Divine Star will be on cooldown. The entire sequence will not finish or restart until Divine Star finishes its cooldown and is used again. Or combat ends. Therefore Shield is now on a cooldown for the remaining length of Divine Star.

If you write a cast sequence and find your macro locking up when you don’t want it to, then that means you are not giving your macro something to do in the event your sequences are locked down from cooldowns or lack of resources.

Thank you for explaining. I thought I read where Timothy said it doesn’t work that way in GSE. But I just found this: castsequence where he explains it does work that way.

This makes it a lot more useful in GSE than I previously thought.

This is a common misinterpretation of something Tim said about multiple castsequences

When you have one, like his example you linked shows, it behaves exactly as expected. It will go 1, 2, 3 all the way to the end and then reset. However, if it gets stuck on any one of those for any reason, the entire line waits until you can somehow continue, like due to a cooldown coming up or generating enough resources.

However, imagine you have two of the exact same sequences in the same macro. We’ll use the one from Tim’s example.

/castsequence Judgement(1), Templar's Verdict(2)
/castsequence Judgement(3), Templar's Verdict(4)

Logically, GSE should go 1, 2, 3, 4, but that’s not what actually happens. What really happens depends on if the macro is set to Priority or Sequential.

If on Priority it will do 1, and then 1 again, and then 1 again. You would have to hit it faster than your GCD if you want it to attempt to beyond 1. But since 1 is in a sequence with 2 it’s now locked because 2 can’t continue due to not having enough resources. So it will actually go 1 (generates 2 HP), 3 (because it can’t do 2, generates 2), 2(spends 3), 1 (because both spells have been used, generates 2), 2 (spends 3, now at 0), and repeat.

Sequential will do the same thing but will try to remember where you left off. 1, 2, 3, 4. Using the above castsequence it will go 1, 2(fail), 3, 4 (which also counts as 2), 1, 2, 3, 4 (fail because of not enough HP), 1, and so on.

Both are examples of why you also want to spam at least slightly faster than your GCD.

That’s about it for Castsequences 101. If you want to string in sequences that are completely different from each other, or are different but contain one or two spells in common with each other, that gets much more complicated. That’s why I likened it to having a deck of cards in two piles and you’re shuffling them together in a bridge, where each stack is a castsequence and they shuffle in with each other and loop back depending on common spells.

I found the info I was referring to. It says: GSE allows you create a sequence of macros to be executed at the push of a button. Like a /castsequence macro, it cycles through a series of commands when the button is pushed. However, unlike castsequence, it uses macro text for the commands instead of spells, and it advances every time the button is pushed instead of stopping when it can't cast something. This means if a spell is on cooldown and you push the button it will continue to the next item in the list with each press until it reaches the end and starts over.

I read through your first post again and I guess you addressed this when you say sending a command to WoW that’s on cooldown or cannot be used gets skipped if by itself, but will lock a sequence I think Timothy should amend what I quoted above because it gives the impression that all spells on cooldown are skipped.