MACRO cast

Casts the first spell for which the options are true. /cast optionset spellname; optionset spellname; ... /cast item /cast BagId slot /cast InvSlot

Aliases

 * cast
 * spell
 * use

Arguments

 * optionset : List of options below, separated by commas, enclosed in [ ]
 * spellname : Name of the spell to cast
 * item : The name of the item to be used.
 * BagId : The bag the item is in (0 is backpack, etc...)
 * slot : The slot number, starting at 1.
 * InvSlot : The slot on your character in which to use an item.

Optionset
You may use "no" in front of any of these to invert the logic result. All of the options below except target are actually conditions that the script will check before casting the spell. If any of the conditions in a set are false, the script will move on to the next option set, or the next semicolon if there are no more; if all of the conditions in a set are true, the script will ignore any more option sets and cast spellname. Once it successfully casts a spellname, the rest of that line is ignored (see Examples at bottom).

Because target= is a command (not a condition), you can use multiple option sets to automatically cast the spell on the appropriate target (see Examples at bottom).


 * actionbar &hArr; bar : If you are using this particular actionbar. You must specify actionbar:# (#=action bar number).
 * button &hArr; btn : If you clicked a particular button to cast the spell (button:#, where #=1-5, LeftButton, MiddleButton, RightButton, Button4, or Button5).
 * channeling : If you are channeling a spell. You may optionally specify a specific spell using spell:spellname.
 * combat : If you are in combat.
 * dead : If the target is dead.
 * equipped &hArr; worn : If you are currently equipping a specific item, item of a particular class or subclass, or have an item in a particular slot. (ex. equipped:item, see below for details).
 * exists : If the target exists (case insensitive).
 * flyable : If you are in an area where flying is allowed.
 * flying : If you are flying.
 * group : If you are in a group. You may optionally specify group:party or group:raid.
 * harm : If target is hostile.
 * help : If target is friendly.
 * indoors : If your are indoors (anywhere you cannot mount is considered indoors).
 * modifier &hArr; mod : If the click is modified with shift, ctrl, or alt. You may optionally specify which one by using modifier:key (key=shift, ctrl, or alt).
 * mounted : If you are mounted.
 * outdoors : You are outdoors (anywhere you can mount is considered outdoors).
 * party : If the target is in your party.
 * pet : If your pet exists. You may optionally specify a type of pet (pet:type, where type=cat,boar,ravager,etc...)
 * raid : If the target is in your raid.
 * stance &hArr; form : If you are in a particular stance. May also use stance:# to specify a particular stance (#=stance number).
 * stealth : If you are stealthed.
 * swimming : If you are swimming.
 * target=UnitId &hArr; @UnitId: Casts on a specific target without changing your current target (see table below).
 * unithasvehicleui : If the target of the macro has a vehicle UI.
 * vehicleui : If the player has a vehicle UI.

Spellname
As of Patch 2.3.2 cast command toggles toggleable abilities on and off. Prefixing the name with an exclamation mark prevents this.

Examples of toggleable abilities are Stealth and Shoot.

Item Types for equipped

 * Slots:Two-Hand,Bag,Shirt,Chest,Back,Feet,Finger,Hands,Head,Held In Off-hand,Legs,Neck,Ranged,Chest,Off Hand,Shoulder,Tabard,Thrown,Trinket,Waist,One-Hand,Main Hand,Off Hand,Wrist
 * Item Types:Armor,Container,Projectile,Quiver,Weapon
 * Item Sub-Types: Cloth,Idols,Leather,Librams,Mail,Miscellaneous,Shields,Totems,Plate,Bag,Enchanting Bag,Engineering Bag,Herb Bag,Soul Bag,Arrow,Bullet,Ammo Pouch,Quiver,Bows,Crossbows,Daggers,Guns,Fishing Pole,Fist Weapons,Miscellaneous,One-Handed Axes,One-Handed Maces,One-Handed Swords,Polearms,Staves,Thrown,Two-Handed Axes,Two-Handed Maces,Two-Handed Swords,Wands

Unit Types for target
All occurrences of # correlate to a numerical position in the group. You may combine them together, as well. (ex. pettarget)
 * target
 * player
 * pet
 * none - forces no target, even if auto-self casting is enabled.
 * focus
 * party#
 * partypet#
 * raid#
 * raidpet#
 * mouseover
 * npc - this means the target is an NPC. Note: "npc" is only valid if you are currently interacting with the NPC (e.g. the quest, flight path, merchant, gossip, or bank frame is open).


 * See also: UnitId

Examples
/cast [target=pet,dead] Revive Pet; [nopet] Call Pet; Mend Pet
 * This will revive the pet if it is out and dead, call the pet if it is not out, or mend the pet if it is out and alive

/cast [target=self, btn:2][target=focus, help, nodead, exists][target=self] Flash Heal
 * This will cast Flash Heal on target; but it will cast it on yourself if your target is hostile, or dead, or you have no target, or if you right-click the button.
 * Let's analyze:

...[target=self, btn:2]...
 * The script sets the target of the spell to yourself, and checks to see if you right-clicked. If you did, it skips the next two option sets and casts Flash Heal, keeping the target it set (you).  If you didn't r-click, it checks the next option set:

...[target=focus, help, nodead, exists]...
 * It sets the target of the spell to whatever your current target (focus) is. If the target is friendly (help) AND it's alive (nodead) AND you actually have something selected (exists), then it skips the next option set and casts Flash Heal, again keeping the target it set (focus).  Otherwise, if any of those conditions are not true, it checks the next option set:

...[target=self]
 * Since there are no conditions in this set, it just casts Flash Heal, again keeping the target it just set (you).