M6: Macro commands

M6 macros may use some extended functionality: they may take advantage of extended macro conditionals, use metacommands to mute errors like "Out of range" or "Ability is not ready yet", or to indicate which part of the macro should be used to determine which icon/cooldown to show, and recursively call M6 macros as well as /macro-created macros.

Extended conditionals

You may use extended macro conditionals in combination with any macro command that accepts secure options (some examples: /cast, /use, /equip), as well as metacommands like #showtooltip and others introduced here.

For example, you might try:

/cast [zone:Isle of Thunder] Kirin Tor Beacon; Hearthstone
/cast [talent:75.1] Disorienting Roar; [talent: 75.2] Ursol's Vortex; Mighty Bash
/cast [spec:Arcane] Arcane Blast; Frostbolt
/cast [form:cat] Prowl; Cat Form

Muting error notifications

The #mute metacommand suppresses error notifications (like "Invalid target" or "Ability is not ready yet") and sounds until the end of the macro, or until an #unmute, whichever occurs first.

The #mutenext metacommand suppresses error notifications and sounds caused by the next command only.

For example, you might use when attempting to use cooldowns opportunistically:

#mute
/use 13
/use 14
/cast Presence of Mind
#unmute
/cast Pyroblast
#mutenext
/use 13
/cast Pyroblast

Controlling automatic form cancellation

The #nounshift metacommand temporarily configures the client to not automatically drop Druid forms in order to cast spells. It accepts extended secure options. If its argument evalutes to next, the auto-unshift behavior is suspended for the following slash command; if it evalutes to any other value, the auto-unshift behavior is suspended while the macro is running; if none of the conditional clauses apply, no change is made.

Due to a Blizzard restriction, on Modern WoW, this command only works while out of combat.

You might use this in a macro like the following, where the conditional prevents the player from exiting out of Cat Form if the Predatory Swiftness buff allowing an instant in-form Regrowth cast isn't active:

#nounshift [form:cat]
/cast [@player] Regrowth

Customizing feedback

You can use the #skip metacommand to indicate that the next command should not be used to provide feedback (icon, cooldown information) for the macro.

You can use the #important metacommand to indicate that the next command should be used to provide feedback for the macro with higher priority than it would ordinarily be.

For example, the following two macros provide a similar effect: despite /cast Presence of Mind appearing first, feedback for the macro will be based on /cast Pyroblast:

#skip
/cast Presence of Mind
/cast Pyroblast
/cast Presence of Mind
#important
/cast Pyroblast

The #show and #showtooltip metacommands treated as a virtual /use command at the start of the macro, preceded by an #important metacommand. When used without arguments, #show and #showtooltip have no effect.

In the background, each type of action you may perform has an assigned numeric priority, which determines what command in a macro will be used to provide feedback for the macro. Innate priorities are in the 0-100 range, with player abilities at 100, items at 90, and actions like equipping items or setting raid/world markers at lower priorities. By default, #skip reduces innate priority by ∞ (preventing the command from ever being used for feedback), while #important raises innate priority by 1000; you may customize both of these effects by providing a numerical argument to either metacommand.

The innate priorities allow the following macro to display feedback for Pyroblast rather than the trinket:

/cast 13
/cast Pyroblast

You can use the #icon metacommand to override the action-based icon assignment using macro conditionals, specifying an icon using either its filename (for icons in the Interface/Icons directory), a full texture path, or a fileID; or an atlas entry using its name. For example, the following macro cycles through various cake icons depending on modifier state while using the Fireball spell for other feedback:

#icon [nomod] inv_misc_celebrationcake_01; [mod:alt] 237358; interface/icons/inv_misc_food_147_cake
/cast Fireball

#iconb and #iconc metacommands accept the same arguments as #icon. These commands only change the feedback icon if there was no other source of icon feedback for the macro. If an icon is applied via #iconc, the macro will provide feedback that its action is not currently usable, which typically results in a dimmed icon being displayed.

You can use the #count metacommand to override the action-based count feedback using macro conditionals, specifying an item name (or ID) to display the bag count of.

You can use the #label metacommand to provide a short text label to display as part of the action feedback. This is typically used to display macro names. You may use secure command options and extended conditionals to specify the arguments to this metacommand.

Using secure options with non-secure commands

You can use the #parse metacommand to cause the next line's slash command arguments to be parsed as secure options, even if the next command does not natively do this. If none of the option clauses apply, the following command is not executed.

For example, you could use secure conditionals in combination with /say to only send a message if a conditional is true:

#parse
/say [@target,exists] I have a target!

Additional commands

The following additional commands are available; you may use macro options syntax, including the extended conditional, to specify their arguments.

/runmacro

You can use the /runmacro command to trigger a named M6 macro, or a macro created through the /macro interface by name.

For example, you might branch conditionally:

/runmacro [mod] MacroOne; MacroTwo

/qsequence

/qsequence can be used to run through a comma-separated list of spells/items, each execution triggering the next entry on the list. Unlike /castsequence, it does not support reset=, and always advances to the next entry on the list, regardless of whether the current spell/item was successfully used.

For example, the following macro would advance through its alternatives even if some are on cooldown:

/qsequence Hearthstone, Astrall Recall, Scroll of Recall

/setflag

/setflag sets or clears a flag conditional.

/cycleflag

/cycleflag advances the value of a flag conditional.