Macros |
---|
General guides |
Macros Beginners Guide |
Useful macros by class |
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.
- @unitId
- Replace with any valid unitId (@player, @target, @focus, @mouseover, etc.)
- @cursor
- Immediately targets the ground under the cursor.
- @none
- 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.
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 |
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 ChannelInfo() | 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 |
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[]
- Patch 10.0.7 (2023-03-21): "advflyable" conditional added.
- Patch 10.0.2 (2022-11-15): "known" conditional added.[1]
- Patch 10.0.0 (2022-10-25): "talent" conditional removed.
- Patch 7.3.0 (2017-08-29): "pvpcombat" conditional added.
- Patch 7.1.0 (2016-10-25): @cursor added.[2]
- Patch 6.0.2 (2014-10-14): "talent" conditional added.
- Patch 2.3.0 (2007-11-13): Several conditions and shorthand alternatives added.[3]
- Patch 2.0.1 (2006-12-05): Added.[4]
References[]
- ^ Blizzard Entertainment 2022-11-15. Dragonflight Pre-Expansion Phase 2 Update Notes.
- ^ Blizzard Entertainment 2017-11-24. Patch Notes: World of Warcraft 7.1: Return to Karazhan.
- ^ Iriel and slouken 2007-08-08. Re: Upcoming 2.3 Changes - Concise List.
- ^ slouken 2006-11-06. Re: 2.0 Changes - Concise List (New). Archived from the original