SuperMacro is an absolutely essential addon for anyone interested in using macros effectively. It allows you to make many more macros with effectively no character limit, you can write Lua functions directly, greatly increasing the power of your macros and it adds many useful functions that can make your macros more powerful and easier to read.
For many more useful addons, check out my Vanilla World of Warcraft Addon Guide or World of Warcraft: Classic Addon Guide.
World of Warcraft: Classic Compatibility
SuperMacro is not compatible with World of Warcraft: Classic and there isn't a replacement. Addons no longer have the functionality available that made this possible in Vanilla.
There is a macro addon called GSE Classic that you may be interested in, but it doesn't have the functionality of SuperMacro.
You can download it from this GitHub:
Click on "Clone or download," then "Download ZIP."
Extract the downloaded file. In the SuperMacro-master folder is the SuperMacro folder. Drag that SuperMacro folder into the Interface/AddOns folder in your World of Warcraft game folder.
How to Use
Once installed, you can bring up the SuperMacro window by typing "/macro" in the chat box, or pressing Esc to click on the new SuperMacro button.
You will notice immediately that you have more macro slots available. There are 18 normal macros shared between characters, 18 normal macros for each character, and 30 super macros that are also shared between characters. The normal macros still have a 256 character limit, while the super macros have a 7000 character limit.
You can also write Lua functions in the Extended Lua section. Lua is the scripting language used for creating AddOns, so you can use this feature to create incredibly complex macro functions. This is a very powerful and underutilized feature.
|Regular Macros||Super Macros|
Click on the "SM Options" button to bring up the SuperMacro Options window.
Most of these options configure how the macros will appear on the action bar in the default Blizzard UI. If you are using an action bar replacement addon like Bongos, those settings may have no effect.
|Hide names on action bars||Enabling this will hide the name of the macro on the icon in your action bars.|
|Show tooltip about spell or item||When enabled, the tooltip for the macro will display the spell information of the first casted spell in the macro.|
|Show tooltip about macro's script||When enabled, the tooltip for the macro will display the macro text.|
|Show minimap button||When enabled, adds a button on the minimap to bring up the SuperMacro UI.|
|Auto-replace action icons||This will change the icon based on the last spell that the macro cast. Auto-check cooldown for actions must be enabled as well.|
|Auto-check cooldown for actions||This will change the cooldown icon based on the last spell that the macro cast. Must be enabled for Auto-replace action icons to work properly.|
|Show menu button||When enabled, displays the SuperMacro button in the Esc menu.|
|Output color of SM_print() and /print||Changes the output color of the print commands.|
SuperMacro also adds many useful functions that you can use in your macros. Most, but not all, of the functions can be used in either a function syntax or a slash command. When available, both are listed in the following tables. Similarly, most have several spelling variations but are otherwise the same function.
|cast( spell ) |
|Alias for CastSpellByName.||cast( "Frostbolt" )|
|Channel( spell) |
SM_Channel( spell )
|Casts a channeling spell that won't be canceled if you activate the macro again.|
|stopcast()||Alias for SpellStopCasting.|
|caststop( list ) |
|Casts the spells in the list sequentially, each immediately followed by stopcast(). Only works properly for spells that don't cause global cooldown.||/run caststop("Arcane Power", "Presence of Mind", "Frostbolt")|
|/shift form |
|Shift into form for Druid, Rogue or Warrior. form can be bear, aquatic, cat, travel, moonkin, stealth, battle, defend or berzerk||/shift bear|
|DoOrder( list ) |
|Uses the first available spell or item in the list.||DoOrder("healing potion", "lesser healing potion", "healing touch")|
|FindBuff( name, unit) |
buffed( name, unit )
|Returns true if the unit has the buff. "target" is the default unit. name is the name of a buff, or even a partial name. Not case sensitive.||if not buffed( "mark of the wild" ) then cast("mark of the wild") end|
|CancelBuff( name ) |
unbuff( name )
|Cancels a buff on the player. name is the name of the buff, or even a partial name.||/unbuff Demon Skin |
To remove all buffs: /unbuff .
|Print( msg ) |
SM_print( msg )
Printd( msg )
echo( msg )
|Prints a message to the chat window only visible to you.|
|PrintColor(r, g, b, msg )||Prints a message to the chat window in the color you provide. r,g and b are in the range 0-1.|
|Pass( msg ) |
|Prints a message if the current action succeeded.|
|Fail( msg ) |
|Prints a message if the current action failed.|
|SM_IN( seconds, command ) |
/in seconds command
|Executes command after the amount of seconds has passed. If seconds is followed by '+', the command will repeat every number of seconds. Cannot cast spells or use items. Useful for reminders.||Reminder to buff party members every 5 minutes: /in 300+ /print Buff Party Members|
|RunLine( text )||Runs the single line text as a macro or chat message. Can run multiples lines separated by commas.||RunLine("/p Healing", "/cast Heal")|
|RunBody( text )||Runs the text as a macro. Multiple lines separated by '\n'.|
|RunMacro( name ) |
Macro( name )
|Runs the normal macro with the given name.||RunMacro( "Melee" )|
|RunSuperMacro( name ) |
|Runs the super macro with the given name.|
Action Bar Buttons
|SetActionMacro( actionid, macro_name )||Set an action bar item to the macro by name.|
|SetActionSuperMacro( actionid, macro_name )||Set an action bar item to the super macro by name.|
|lastActionUsed||The actionid of the last action bar item used.|
You can use these to swap macros on your action bars. These two macros will swap places every time you run one.
Macro named 'FindHerbs':
/cast Find Herbs /script SetActionMacro( lastActionUsed, 'FindMinerals' )
Macro named 'FindMinerals':
/cast Find Minerals /script SetActionMacro( lastActionUsed, 'FindHerbs' )
|send( msg )||Alias for SendChatMessage.||send( "Hello", PARTY )|
|SayRandom( list ) |
|Picks a random message from the comma separated list, or nothing at all.||SayRandom( "Hi", "Hello" ) will either send "Hi", "Hello" or no message at all.|
|pickup( bag, slot )||Pickup the item in the bag, slot position. Call once to pickup the item, call a second time to place the item.|
|pickup( inventory_slot )||Pickup the item from your equipped inventory.|
|pickup( name )||Pickup the item containing name.||pickup( "hearthstone" )|
|CraftItem( skill, item, count ) |
/craft skill item count
/smcraft skill item count
|skill is the name of the profession. item is the name of the craftable item. count is how many to craft.||CraftItem( "First Aid", "Linen Bandage", 1)|
|FindItem( name )||Finds the item in your bags and returns the bag, slot, texture and number of items.||local bag,slot,texture,count = FindItem("Linen Bandage");|
|/equip item |
|Equip or use the item.|
|/equipoff item |
|Equip item into the off-hand slot.|
|/unequip item |
|Unequips the item if there is space in your bags.|
|use( bag, slot ) |
/use bag slot
/smuse bag slot
|Use the item in the bag, slot position.|
|use( inventory_slot ) |
|Use the item from your equipped inventory.|
|use( name ) |
|Use an item by name.|
|UseItemByName( name )||Use or equip the item by name.|
|RegisterEventMacro( macro, isSuper, events )||Register to trigger a macro when one of the events fires. macro is the name of the macro. isSuper is 1 if the macro is a super macro, 0 otherwise. events is a comma-separated list of events. See this page for all the available events.||RegisterEventMacro( "SayHello", 0, "PLAYER_LOGIN" )|
|UnregisterEventMacro( macro, isSuper, events )||Unregister the macro from the events.|
|ViewEventMacros()||Prints the registered event macros to the chat window.|