Burning Crusade Macro Guide

#0 - Nov. 15, 2006, 7 p.m.
Blizzard Post
In TBC a new macro system is being introduced to wow with new restrictions and also possibilities.

First of all:
In TBC macros won't be able to target Units or cast spells using the scripting interface when initiating. This means that a macro like the one below:
/script if (UnitMana("player")>54) then CastSpellByName("Heroic Strike"); end

won't work anymore. CastSpellByName won't be able to be called in combat, and TargetUnit, TargetByName or other similar functions won't be accessable at all both in and out of combat.
Several other functions has also been disabled when the character is in combat. I don't remember all of them on top of my head, but here are some of them, namely pet macros:
PetAttack()
PetFollow()
PetPassiveMode()
PetAggresiveMode()
SpellStopCasting()
Switching action bars in combat won't be programatically possible without user interaction. Workarounds for

These are getting replaced with slash commands that you can use, aka. the slash commands bellow will work in TBC. Here is a list though i can't promise its all of them:
/cast Spellname
/cast Spellname(Rank X)
/petfollow [option]
/petattack [option] <optinal target>
/equip Itemname <-- Equips an item
/equipslot X itemname <-- Equips an item in slot X (usefull for equipping a weapon in offhand etc.). See a list of slots here: http://tinyurl.com/vnm39
/target
/swapactionbar 1 2 <--- Swaps between action bar 1 and 2
/cancelaura [option] name <--- Will cancel a buff on you, example: /cancelaura Swift White Mechanostrider
/castrandom spell1, spell2, spell3 <--- Randomly casts one of the follow spells. Ranks are useable eg. spell(Rank x)
/userandom <--- Same as above, but with consumeable items
/cleartarget <-- Clears current target
/stopmacro [option] <--- Stops the macro from completing running if a special requirement is met. See below for an explenation of [option]
/castsequence spell1, spell2, spell3 <--- Casts spell in a sequense aka. first it casts spell1, then spell2 etc.
/petautoattackon <spell> or /petautoattackoff <spell>
/targetenemy -- only called once per macro
/targetfriend -- only called once per macro
/targetparty
/targetraid

If /targetenemy, /targetfriend, /targetparty or /targetraid comes without anything else they will use the closest person (aka. the TargetNearest function). You can also use /targetraid 1 to target next raid member or /target 0 to target the previous raid member (works with all of the above). Works with [options], aka. /targetenemy [modifier:shift] 1; 0

Now, only being able to use /cast, /petattack etc. is very limited, to Slouken has in Cooperation with the WoW US players Cogwheel and Tem created an option system for the macro system. To absically explain, you specify some options that depending on conditions return true or flase. If an option returns false, then that part of the macro will skip that part and go to next option set.
/cast [option1,option2] Spell

The above macro will in TBC cast Greater heal if the above options both return true. The "," between option1 and option2 signifies "AND", which means that if both conditions (option 1 and 2) return true, then the spell will fire.

Example:
/cast [harm] Smite; [help] Greater Heal

Will cast Smite if the target is hostile. If the target is not hostile it will jump to the next part of the macro and try to cast Greater Heal if the target is friendly.

Another example:
/cast [modifier:shift] Vampiric Embrace; Shadow Word: Pain

This will cast Vampiric Embrace if the shift key is held down when clicking the macro. Else it will cast Shadow Word: Pain.

You can use a Slash ("/") to specify an "OR" command, aka. if any of the options return true then the macro will fire instead of "," ("AND").

Here is the full list of option commands:
[help] - Returns True if the target is friendly
[harm] - Returns true if target is hostile
[combat] or [nocombat] - Returns true if you are in combat (or aren't in combat if you use the 'no' prefix before combat). If used with /petattack or /petfollow ir will return true if your pet is in combat or not.
[modifier:alt|shift|ctrl] or [nomodifier:alt|shift|control] - Returns true if the designated modifier key is down. Example:

[modifier:shift,modifier:alt] <-- Returns true if BOTH the shift and alt buttons are down when the macro is executed
[modifier:shift/alt] <-- Returns true if either of the two modifier buttons are pressed down when the macro is clicked
[nomodifier:shift/alt] <-- Returns true if neither shift nor alt is pressed down

[exist] or [noexist] <-- Returns true if the designated target exists or don't exist.
[dead] or [nodead] <-- Returns true if the designated target is dead or alive.
[target=x] - Sets the target of the macro. Example:

[target=name,exists] - Returns true if the designated target exists AND it will also force the spell to be cast on that player/unit. /cast [target=targettarget,exists,help] Greater Heal will cast Greater Heal on your targets target is that unit exists and is able to recieve a Greater Heal from you.
[target=none] will request manual targeting for the spell so you have to click a player or unit to cast it on him/her
[target=party2] will make the spell hit party member 2
[target=targettarget] will make the spell hit your targets target. Adding an exist option to this one is recommended.

[stance:x] or [nostance:x] - Returns true if you are or aren't in the appropriate stance. X is a numbers. Example:

/cast [stance:1,nocombat] Charge; Battle Stance will cast charge if you are out of combat and in Battle Stance, else it will shift to battle stance. Stances are numbered in the order you have them. For warriors this will (assuming they got all stances) be 1 = battle stance, 2 = defensive stance, 3 = berserker stance, for druids 1 = bear form, 2 = aquatic form, 3 = cat form etc. It is worth noting that stance:x DOES NOT APPLY TO PALADIN AURAS OR HUNTER ASPECTS as they aren't considered shapeshifts. Should work for rogues stealth (in addition to the stealth command below) and priests in Shadowform.
You also don't have to specify an x stance if you are a class that can leave their stance (aka. a druid in caster form or a priest out of shadow form can use [nostance] to return true).

[stealth] - Returns true if you are stealthed. Should work for both rogues and druids.
[equipped:itemtype] - Returns true if the currenct item subtype is equipped or not. Example: [item:daggers] would both return true if you have a dagger equipped. Also works for Shields and all other items. http://www.wowwiki.com/ItemType for a full list of itemtypes.
[swimming][flying][mounted] [indoors] [outdoors] - Should be given
[pet] or [nopet] - Returns true if your pet is active
[pet:name/type] - Returns true if your pet name or type matches, like [pet:snowfrenzy] or [pet:wolf/bear/succubus]
[button:x] - Returns true if a specified button was used to execute the macro:
[button:1] or [button:LeftButton] = You used the assigned keybinding or a left mouse click to activate the macro
2 or RightButton
3 or MiddleButton
4 or Button4
5 or Button5
/cast [button:1] Flash Heal; [button:2] Greater Heal will cast Flash heal if you used the assigned keyboard button or left mouse button to click the macro, and will cast Greater Heal if you rightclicked the macro.

[channeling] or [channeling:spell] - Returns true if you are channeling a random spell or a specific spell. [nochanneling] or [nochanneling:spell] also works. Usefull when you don't want a macro to break something when you are channeling, say Mind Flay or so.
[party] or [raid] - Target is a member of your party/raid ([raid] ALSO applies if you are in a standard party)
[group] or [group:party] or [group:raid] - You are a member of a group or a specific type of group.

Focus:
Focus is a new feature allowing you to save a target. Example:
/focus target
...will save your currect target as your focus. This means that you at any time can use /target focus to target the unit you designated with /focus target.

Focus supports option parameters. Example macro:
/cast [target=focus,exists] Polymorph (/castrandom [target=focus,exists] Polymorph, Polymorph: Pig, Polymorph: Turtle <--- If you want a random Polymorph)

This works like your "personal" raid icon which makes it easy to keep track of sheeps etc.

Hover Targeting:
A feature that i posted my concerns about on the US forums has been saved (but only because Slouken is so freaking awesome). We are talking Hover Targeting, or the ability to dynamically cast spells on different players without having to target them, but by just hovering your mouse cursor over a protected unit frame (in this case a party/raid/target/targettarget unitframe). Example:
/cast [target=mouseover,exist] Healing Touch; Healing Touch
...will cast Healing Touch on the person which unitframe is being hovered over by your mouse, regardsless of your current target. This works with modifier keys and can do different stuff if you are not hovering over a unitframe. Ill give a more advanced macro:
/cast [target=mouseover,exist,nomodifier:shift/ctrl/alt] Swiftmend; [target=mouseover,exist,modifier:shift] Healing Touch; [target=mouseover,exist,modifier:ctrl] Rejuvenation; [target=mouseover,exist,modifier:alt] Regrowth; [modifier:ctrl] Cat Form; [modifier:shift] Dire Bear Form; [noswimming] Travel Form; [swimming] Aquatic Form
...would cast Swiftmend/Rejuvenation/Regrowth/Healing Touch if your mouse is hovering over a UnitFrame depending on which modifier keys you have pressed down. If your mouse, however, is NOT over a Unit Frame (but some other random place on the screen) it will shapeshift depending on the options you specified. In other words, you will technically have put all your standard healing spells a
#483 - July 27, 2007, 9:22 a.m.
Blizzard Post
This was linked in the UI Sticky compilation:
http://forums.wow-europe.com/thread.html?topicId=304192506&sid=1#0

Although it might be time to start this anew. If anyone starts a new thread for this, please use the report this post function (quote this text) and I'll update it. - Aeus