We have moved to Warcraft Wiki. Click here for information and the new URL.



This page lists macro conditionals, keywords used with macro commands, the RestrictedEnvironment and the SecureStateDriver API to allow limited logic for player convenience without trivializing the game.

Refer to secure command options for syntax and making a macro for a tutorial.

Temporary targeting[]

/cast [@focus] Counterspell

The following keywords temporarily assign a target that the macro command will act on. This only applies to a single action; it does not change the player's selected target.

Replace with any valid unitId (@player, @target, @focus, @mouseover, etc.)
Immediately targets the ground under the cursor.
Interupts auto self-cast and requires a targeting cursor.

target= is also an alias for @. However, despite the name, this still only affects a single macro command without changing the player's target.

Boolean conditions[]

/cast [dead] Resurrection; Heal

All other conditionals evaluate as either true to execute the macro command, or false to skip it. The no prefix reverses this (ie, nodead means alive).

The following tables categorize each boolean condition by whether it evaluates the state of any target, only the player, or the user interface.

Evaluated against the temporary target (default: @target)
Macro Conditional Similar API Description
exists UnitExists() The unit exists
help, harm UnitCanAssist() and UnitCanAttack() The unit exists and can be targeted by helpful/harmful spells
dead UnitIsDeadOrGhost() The unit exists and is dead
party, raid UnitInParty() and UnitInRaid() The unit exists and is in your party/raid (party excludes self)
unithasvehicleui UnitInVehicle() The unit exists and is in a vehicle

Evaluated against the player only (always @player)
Macro Conditional Similar API Description
advflyable IsAdvancedFlyableArea() Player is located in an area that supports advanced flying (ie, Dragonriding)
canexitvehicle CanExitVehicle() In a vehicle and able to exit
channeling, channeling:spellName UnitChannelInfo("player") and WoW Icon updateChannelInfo() Channeling any spell, or a certain spell
combat InCombatLockdown or UnitAffectingCombat("player") In combat
equipped:type, worn:type IsEquippedItemType(type) Refer to itemType for possible types (ie, weapon) and subtypes (ie, sword)
flyable IsFlyableArea() Unreliable in Wintergrasp
flying IsFlying() Mounted or flight form, and in the air
form:n, stance:n GetShapeshiftForm() Refer to GetShapeshiftForm for possible values
group, group:party, group:raid IsInGroup() and IsInRaid() Self-explanatory
indoors, outdoors IsIndoors() and IsOutdoors() Self-explanatory
known:name, known:spellID GetSpellInfo(name) or IsPlayerSpell(spellID) Also works with #showtooltip
mounted IsMounted() Self-explanatory
pet:name, pet:family UnitCreatureFamily("pet") Using a hunter pet by name or family
petbattle C_PetBattles.IsInBattle() In a pet battle
pvpcombat PvP talents are usable
resting IsResting() In a rested zone
spec:n, spec:n1/n2 GetSpecialization() Activated the n'th (or any of n1, n2) spec
stealth IsStealthed() Self-explanatory
swimming IsSubmerged() Self-explanatory

Evaluated against the user interface (action bars, keyboard, mouse)
Macro Conditional Similar API Description
actionbar:n, bar:n, or bar:n1/n2/... GetActionBarPage() The n'th (or any of n1, n2, ...) action bar page appears
bonusbar, bonusbar:n HasBonusActionBar() The bonus action bar is visible; see
button:n, btn:n1/n2/..., btn:<virtual click> OnClick The mouse button used as left (1), right (2), middle (3), extra (4, 5, ...) or virtual
cursor GetCursorInfo() Dragging an action button (item, spell, macro, etc.)
extrabar HasExtraActionBar() An extra action bar/button is visible
modifier, mod, mod:key, mod:action IsModifierKeyDown() or IsModifiedClick(action) Accepts shift, ctrl, alt, lshift, rshift, ..., and any action title
overridebar HasOverrideActionBar() The override bar is replacing the main action bar
possessbar IsPossessBarVisible() The possess bar is visible
shapeshift HasTempShapeshiftActionBar() The temporary shapeshift action bar is replacing the main action bar
vehicleui HasVehicleActionBar() The vehicle UI is active

Patch changes[]