Use all abilities per keystroke

Sequences["Prot1"] = {	
StepFunction = [[
        limit = limit or 1
        if step == limit then
            limit = limit % #macros + 1
            step = 1
            step = step % #macros + 1
PreMacro = [[
/targetenemy [dead][noharm]	
/cast [mod:alt,talent:4/3]Bloodbath

/cast [mod:alt,talent:4/3]Dragon Roar

/cast [mod:alt,talent:4/2]Shockwave
	'/cast Shield Slam',	
	'/castsequence reset=combat Revenge',
	'/castsequence reset=combat Shield Slam',	
	'/castsequence reset=combat Devastate',
PostMacro = [[
/script UIErrorsFrame:Clear()

This is my basic prot/glad warrior spam button that i never stop spamming. Now everytime i hit the button it does the 1 12 123 sequence managed by the StepFunction. Working as intended.

Now I’m VERY new to GS and StepFunctions. I get the idea of how this works from reading another post. However I don’t understand the symbology associated with the functions that actually make them work. In other words I dont understand how limit % #macros + 1 or step actually work or what they mean or do. Step I kind of do. It means move down one line and execute correct?

Now I’m wondering what other kinds of Step Functions there are:

  • Are there any that will run a /castsequence, per keystroke, (If it can be ran <action usable>) until it can’t progress anymore or finishes before stepping down?
  • Is there one that hits EVERY /cast from top to bottom with ONE keystroke instead of stepping down one line per keystroke? So with my Prot1 macro above. First Keystroke Spams all 3. Shield Slam is used because its off CD. Second keystroke spams all. Since Shield Slam is on CD Revenge gets used, and so on.
  • Is there a way for the /castsequences within GS to share cooldowns? For example if I have 2 /castsequence macros on separate buttons in WoW that start off with Expel Harm (Monk ability 15 sec. CD) and I hit one of the /castsequences they will BOTH advance to the next step. GS doesn’t seem to work this way for me.

–What is happening is GS actiivates the first macro, then it checks to see if there is another after. If there is, it adds a step (+1) then starts at the first and moves to the second. It then checks again to see if there is another macro. If so, it adds a step then returns to 1 and then 2, 3 and then resets again.

–GS has no way to do this. If you have a castsequence first, then 2 spells, it will cast the first spell of the castsequence, then move to the next macro then the next. Upon reaching the end of the first pass, it will cast the second spell in the castsequence, then the other two macros.

–AFAIK, the only way to spam multiple off GCD spells at once is to put them in the PostMacro, although it will try to cast them all every button press. Another thing I have played around with is this:

'/cast spell
/cast spell
/cast spell',

This puts three spells into one button press, but I can’t get it to work consistently.

–There is no way for GS to do this currently.

I hope some of this helps, as I like some of your ideas you have posted and we need a fresh perspective in this forum. Cheers!


This is what I mean:

'macro1'     1     run 1 and check next line for macro, if exist, add 1 step and reset sequence
'macro2'     12    run 1 and 2, check next line for macro, if exists, add 1 step and reset sequence
'macro3'     123   run 1, 2, and 3, check next line for macro, if exists, add 1 step and reset sequence
'macro4'     1234  run 1, 2, 3, and 4, check next line, etc.

It will run this way until there isn’t another line detected, then it resets completely and starts from scratch.
The sequence above will be ran in this order: 1121231234,1121231234 over and over. Highest priority spells need to be on line 1 and lowest on line 4 (or last line if you have more than 4). Looking at the above you can see in the sequence of 4 macros, 1 gets ran 4 times, 2 gets ran 3 times, 3 gets ran 2 times and 4 gets ran 1 time per cycle. If you use a keyboard/mouse or AutoHotKey (or similar) and you have your button press interval at 1/4 second between presses, this sequence of 4 will run completely through every 2 and 1/2 seconds. I hope this helps!