Conditionals and Modifiers

Hey Community,

This is my first time dabbling in GSE. I’m starting with a Fury Warrior.
I’m trying to accomplish a macro that can be left on while walking near a hostile monster while both mounted and flying to avoid accidental dismounts due to the nature of autoattacking with abilities mid stride. I am using the negative conditionals of [mounted] and [flying] looking something like this.

/cast [combat,nochanneling,harm,nomounted,noflying] Recklessness

I was still able to cast PBAoE (Dragon Roar) with these conditions. How would I go about navigating this?

A second issue I’ve encountered is a modifier. I am trying a few different ways to cast a spell if its off cooldown, else cast second spell looking like this.

/castsequence [mod:alt,nomounted,noflying] Rallying Cry, Fleshcraft; [mod:alt,nomounted,noflying] Fleshcraft

After this method failing, I tried to separate the actions into two lines:
/cast [mod:alt,nomounted,noflying] Rallying Cry
/cast [mod:alt,nomounted,noflying] Fleshcraft

I recieved the same outcome with this method. Rallying Cry would fire and Fleshcraft wouldn’t.

I was able to accomplish this with /castsequence but after the first use of Rallying Cry, Fleshcraft never shoots off because Rallying Crys’ cooldown is longer, making this under tuned for environments like raiding. Is there any way to tell if an ability is on or off cooldown? Another way I imagined this working is adding another modifier. I would much prefer these to be coupled onto one modifier though.

Lastly, I am curious about GSEs ability to track buffs. I see you can recognize stances like Stealth and have the ability to not recast it endlessly. Is it possible to cast something that is not stance related like Battle Shout? Lasting an entire hour, or untimely end with death, this isn’t a grand priority but more of a curiosity to improve quality of life.

Any help or insight would be greatly appreciated.

GSE CANT track buffs or cool-downs in any way. This isn’t an alternative macro engine - it’s an alternative UI to unlock more advanced features from with the existing macro engine. All the commands and mods and bits are all defined by WoW’s macro engine so if you can do it in any way in a normal macro you can do it here.

Each box in GSE is equal to one click of the macro. You can only perform one GCD action in a box and that action is blind. It can’t tell combo points, your targets health, the existence or absence of any buffs or your mana or the like.

GSE just creates a stack of WoW commands and when you click that macro sends the current stack to WoW to execute and then assembles the next stack waiting for the next click to send to WoW.

1 Like

Even if you did something like ?

(GetSpellCooldown("Fists of Fury") == 0) and 1 or 1337
/run local result = (GetSpellCooldown("Fists of Fury") == 0) and 1 or 1337; MyVariable = result

Somehow set the GetSpellCooldown to a variable and then read it in an GSE IF Block?

You’re not getting it. There are fundamental limits that WoW places on what a mod or macro that casts spells can do in combat.

GSE uses an IF block OUTSIDE combat. It can use this for things like Am Inof this Race? am I targetting a particular boss? Am I in this covenant? Do I have a heart of Azeroth equipped? Things that are not going to change once combat starts. Once combat starts your macro is set in stone and cannot be changed. There is no IF block after that. There are no loop blocks either. It is all Compiled and evaluated outside combat. If you hit Compile Template you will see the result of your IF block.

Why can’t you use an If in combat - very simply: GSE can’t use the WoW API at that point to evaluate anything. Under WoW’s rules GSE can cast spells but once it looks at anything like you are suggesting it becomes as useless for casting spells as WeakAuras. All it can do once it looks at that stuff is write things on to the screen so you can see and manually choose to do something. Once it looks in combat at a cool-down, a combo point, someone’s health etc WoW will no longer let GSE run a macro.