Open Questions (Global Cooldown, Button Spamming, Castsequences,...)


(using GS-E btw)

there is something that is some open questions to me since ages - and i fail to understand it.

  1. Are Macro Lines skiped while i am on GCD?

Let’s say i have a sequentiel macro like

/cast Heart Strike
/cast Death Strike
/cast Marrowrend

and lets assume i have a GCD of 1 sec and the spells themself have no CD and my Button Spam rate is 0.5 seconds

0.0 Heart Strike
0.5 GCD (no Death Strike)
1.0 Marrowrend
1.5 GCD (no Heart Strike)
2.0 Death Strike
2.5 GCD (no Marrowrend)
3.0 Heart Strike // or back to top

In short words, real cast sequence would be (number in[] are skiped)

Is that true?

What would happen in that case if i use a priority List?
would it be:


resulting in Marrowrend never been casted?

  1. does a castsequence stop when it hits an ability that is on CD?

assuming i use this sequnce

/castsequence Blood Boil, Marrowrend

would it ever cast marrowrend when Blood Boil is not available?

  1. Pre / Post Macro

are they casted every buttonclick or only if the Macro sequence is done?

assuming this:

PreMacro = [[
/cast [combat] Vampiric Blood
	"/cast Heart Strike",
	"/cast Death Strike",
    PostMacro = [[
/TargetEnemy [noharm][dead]
/cast Anti-Magic Shell

Would that cast
Vampiric Blod
Heart Strike
Death Strike
Anti-Magic Shell


Vampiric Blood
Heart Strike
Anti-Magic Shell
Vampiric Blood
Death Strike
Anti-Magic Shell

That is all so far - i guess more questions may follow :slight_smile:

Thanks for taking your time!!

1 - Yes GS-E will skip to the next ability if it is unable to be cast as you are spamming buttons. This can occur because of GCD, spell cooldown, Not enough resources (mana, fury, energy, combo points, holy power, runes etc)

2 - Castsequence lines will cycle but ONLY proceed to the next entry when the previous has occured. In your example it will cast Bloodboil once, and then Morrowrend. only after successfully casting morrowrend will it go back to blood boil.

3- It depends on their availability.Assuming everything is available and only one of those actions are on the GCD then what will happen is

Key 1
Vampiric Blood - on button down
Heart Strike
TargetEnemy [noharm][dead] - on button release
Anti-Magic Shell

key 2
Vampiric Blood - on button down
Death Strike
TargetEnemy [noharm][dead] - on button release
Anti-Magic Shell

Thanks for your anwers!

1 - so assuming my GCD is 1 second - and all my spell cast times etc would be 1 second as well - the best way to spam keys would be on a 1 second rate - right?

Some time ago i had the idea to use a castsequence that would have a filler spell with no GCD (like one that does not even exist) and spam key with a .1 rate - something like “wait .1”
My theory would be something like this:

Spell 1: instant GCD: 1 Sec
Spell 2: cast Time 1.5 sec [GCD: 1 sec]
Spell 3: Filler

Sequence: 13333333321

would always quranteed cast Spell 1 followed by Spell 2 followed by spell 1

Sorry that i may not be able to explain it right - basically i just want to get around the ‘problem’ that spells may be skipped as i hit a GCD or Spell CD. I know there would be issues with Haste and just - but lets say to build the perfect rotation (and with lot’s of work) - would that idea work or make any sense at all?

2 - so using

/cast Blood Boil
/cast Marrowrend

would be the only way to guarantee that marrowrend is casted even if Blood Boil is on CD

3 - OH - so premacro is simply ‘on button push’ That is WAY easier to understand :slight_smile:
Thanks a lot!

I’m glad you asked this. I too am trying to understand how best to set up the delay on my button press. I feel like I am watching macros skip abilities that should be used most likely because my delay speed is too fast.

Anyone have insight on how to set up delay to minimize missed abilities?

Thank you in advance for any help!

Depends on if you’re using mouse/hardware keys or if you’re using something like an AHK script for key mashing/delays.

Personally i am using AHK setup that introduces Random delays/sleep between 0.5ms and 0.120ms

It looks like:

if getkeystate(“ScrollLock”,”T”)
if getkeystate(“numpad3″,”P”)=0
Send {0}

Send {numpad3}

RandSleep(x,y) { ;creates a variable with an X and Y
Random, rand, %x%, %y% ;Uses the Random function to generate x and y
Sleep %rand% ;makes the %rand% value the sleep time

For item 1 -

I try to structure my sequences so the generators are up top and the spenders are at the bottom. That way it will skip a spender if its not available but always hit a generator and skipping becomes a feature rather than a problem.