OPie: Extended macro conditionals
OPie allows you to use macro conditionals to further customize ring bindings and slice visibility. In addition to the macro conditionals supported directly by the World of Warcraft client, you can use the extensions described on this page. You may also use these extensions within macros in OPie rings.
Table of Contents
- A note on syntax
- Secure conditionals
- Extensions to default conditionals
- Additional units
- Non-combat conditionals
A note on syntax
Extended conditionals generally use the same syntax as the built-in [mod] conditional:
- You can prefix any conditional name with no to
negate the result. However, negations of non-combat
conditionals behave differently while in combat.
For example, [noform:cat] is satisfied whenever [form:cat] is not satisfied. - If a conditional accepts arguments, you can specify a list of alternatives
separated by forward slashes.
For example, [form:bear/cat] is satisfied for druids in Bear or Cat Form. - Conditional arguments are case-insensitive.
For example, [form:BEAR] and [form:bear] are equivalent.
Secure conditionals
- me:character name/class name
- Satisfied if your character's name is equal to the specified value, or if the specified value is one of the following tokens and corresponds to your character's class:
- mage
- priest
- warlock
- demonhunter
- druid
- monk
- rogue
- evoker
- hunter
- shaman
- deathknight
- paladin
- warrior
For example: [me:Ygramul/Gmork] is satisfied when the player character is named Ygramul or Gmork; [me:druid/deathknight] is satisfied when the player character is a druid or a death knight. - game:...
- Satisfied when the argument accurately describes the game mode you're playing. You may use the following tokens:
- modern
- remix
- era
- hc
- sod
- cata
For example: [game:remix] is satisfied while participating in a timerunning event; [game:era] is satisfied on Classic Era, and [game:hc] is satisfied while playing on permanent-death classic era realms. - zone:name
- Satisfied while in a specific zone (or subzone). Note that the value of this conditional changes only while out of combat.
For example: [zone:Valley of the Four Winds] is satisfied while in the Valley of the Four Winds (but not in The Lazy Turnip, which is apparently in a separate zone).
- instance:... (or in:)
- Satisfied when the argument accurately describes where your character currently is. You may use the following tokens to query for specific instance types:
- world
- garrison
- scenario
- delve
- dungeon
- lfr
- raid
- worldpvp
- battleground
- ratedbg
- arena
- outland
- northrend
- pandaria
- draenor
- broken isles
- argus
- ashran
- kul tiras
- zandalar
- island
- nazjatar
- shadowlands
- torghast
- dragon isles
- zaralek
- emerald dream
- khaz algar
- bfa
- df
- tww
For example: [in:arena] is satisfied when in an arena instance, [in:world] is satisfied when out in the world. - outpost:garrison/
arena/ yard/ sanctum/ arsenal/ brewery/ run/ corral/ tankworks - Satisfied when the player character is in a zone where they have access to a garrison outpost special ability. The optional argument can be used to query for specific abilities; lumber yard and smuggling run may be used in place of yard and run respectively.
For example: [outpost:garrison] is satisfied when the player has the Call to Arms ability, i.e. has established their garrison and is in the Shadowmoon Valley or Frostfire Ridge; [nooutpost] is satisfied when the player has no zone-specific garrison ability in the current zone.
- level:minimum level
- Satisfied when the level of the player character is at least the specified value. Note that slash-separated alternatives cannot be used with this conditional; you must provide a single number.
For example: [level:50] is satisfied when the player character is level 50 or above; and not satisfied when the player character is level 49 or below.
- horde / alliance
- Satisfied when the player character is part of the corresponding faction group.
- mercenary / merc
- Satisfied when the player character is acting as a mercenary on behalf of the other faction. For example, a worgen character during the Lady Jaina Proudmoore encounter in the Battle of Dazar'alor raid would satisfy [alliance,
merc, despite being transformed into a troll.nohorde] - race:human/
... - Satisfied when the player character is of a particular race, specified using the following tokens:
- human
- dwarf
- nightelf
- gnome
- draenei
- worgen
- lightforged
- voidelf
- darkirondwarf
- kultiran
- mechagnome
- pandaren
- dracthyr
- orc
- troll
- undead
- tauren
- bloodelf
- goblin
- highmountain
- nightborne
- maghar
- zandalari
- vulpera
- Profession conditionals: prof:min skill
- Satisfied when the player character has the specified profession or profession specialization
(if minimum skill is specified in Classic WoW, only if the they have at least that number of skill points in that profession).
The following profession names are supported:
Profession Conditional Shortcut Alchemy alchemy alch Blacksmithing blacksmithing bs Enchanting enchanting ench Engineering engineering engi Gnomish Engineering nomeng Goblin Engineering gobeng Inscription inscription scri Jewelcrafting jewelcrafting jc Leatherworking leatherworking lw Tailoring tailoring tail Herbalism herbalism herb Skinning skinning skin Mining mining mine Archaeology archaeology arch Cooking cooking cook Fishing fishing fish First Aid (Classic) firstaid faid Additionally, the following conditionals check that the player has at least one skill point in an expansion-introduced trade skill: [cook3], [tail3], [tail6], [fish5], [lw6], [lw7], [eng2], [eng3], [eng4], [eng5], [eng6], [eng7], [eng8], [eng9]. For these, 2 corresponds to Burning Crusade, 3 to Wrath of the Lich King, etc. Note that these do not allow checking how many skill points are in that profession category, so [cook3:75] is not valid.
- havepet:stable slot
- Satisfied if there is a pet in the specified stable slot.
- covenant:kyrian/
venthyr/ (or coven:)nightfae/ necrolord/ fae/ necro - Satisfied when the player character is a member of the specified covenant.
- flag:name/
name=value - Satisfied when the named flag is set (to a specific value, if specified). You can control flag states using the /setflag, /cycleflag, and /randflag commands in macros executed through OPie.
- worldhover
- Satisfied when the mouse pointer is hovering over the 3D world rather than a mouse-accepting UI element. While in combat, the conditional only updates in response to mouse movement between the 3D world and a UI element (i.e. not to spontaneous appearance or disappearance of UI elements).
For example, [@mouseover,exists,noworldhover] is satisfied when the mouse cursor is over a unit frame, while [@mouseover,exists,worldhover] is satisfied while the mouse cursor is hovering over a targetable entity in the 3D world. - imbuedmh (in Ælling 4 or later)
- Satisfied when your main-hand weapon has a temporary enchantment (poisons, weapon oils, etc).
- imbuedoh (in Ælling 4 or later)
- Satisfied when your off-hand weapon has a temporary enchantment (poisons, weapon oils, etc).
- visual
- Only satisfied while providing action feedback for a macro.
For example, /cast [visual] Moonfire; Rejuvenation will always display the icon, cooldown, and target feedback for Moonfire, but will always cast Rejuvenation.
Extensions to default conditionals
- form:...
- The form conditional is extended to support the following tokens as an alternative to indices:
- cat
- bear
- travel
- aquatic
- flight
- moonkin
- moon
- stag
- treant
- stance:...
- The stance conditional is extended to support the following tokens as an alternative to indices:
- battle
- defensive
- berserker
- gladiator
- modifier:... (or mod:)
- Extended to support distinguishing left/right modifier keys, and standardized binding modifier exhaustion.
The conditional is satisfied when modifier keys corresponding to all tokens listed in any of its slash-separated alternative arguments are held down. If no arguments are provided, the conditional is satisfied when any modifier key is held down.
If a macro is triggered by a binding (i.e. not by a direct mouse click on a button), modifier keys that are a part of that binding will not be considered held down while evaluating this conditional.
The following tokens are supported:- alt
- lalt
- ralt
- ctrl
- lctrl
- ralt
- shift
- lshift
- rshift
- meta
- lmeta
- rmeta
- cmd
- lcmd
- rcmd
For example, [mod:altshift/lctrl] is satisfied while holding both ALT and SHIFT, or if holding the left Control key. - pet:stable slot
- Extended to support querying by stable slots, based on the name/race of the pets within them.
For example: [pet:1] is satisfied while the pet in a Hunter's first stable slot is active.
Additional units
In addition to the standard units, you may use the units listed in this section, also combined with the target and pet suffixes. For example, tank1target refers to the target of the group's (other) tank.
- tank1, tank2, ...
- Other players in your group who have selected the Tank role.
- healer1, healer2, ...
- Other players in your group who have selected the Healer role.
- mtank1, mtank2, ...
- Other players in your raid who have been assigned the Main Tank role by the raid leader/assistant.
- assist1, assist2, ...
- Other players in your raid who have been assigned the Main Assist role by the raid leader/assistant.
Non-combat conditionals
The conditionals listed in this section are primarily useful out of combat. While in combat, non-combat conditionals and their negations are considered satisfied if and only if the conditional is prefixed with +, regardless of its out-of-combat behavior. For example,
- /cast [+moving] Roll; Red Shado-Pan Riding Tiger will always attempt to cast Roll while in combat;
- /cast [moving] Roll; [nomoving] Red Shado-Pan Riding Tiger; Tiger Palm will always attempt to cast Tiger Palm while in combat.
- moving
- Satisfied while the player character is moving.
- falling
- Satisfied while the player character is falling.
- ready:spell name/item name/spell id/item id
- Satisfied when the cooldown remaining on any of the argument spells/items is at most the current global cooldown.
For example: [ready:Hearthstone] is satisfied when the player's Hearthstone is not on cooldown.
- have:item name/item id
- Satisfied while the player character has at least one of the argument items in their inventory/bags.
For example: [have:Healthstone] is satisfied while the player has a Healthstone.
- selfbuff:name, selfdebuff:name
- Satisfied while the player character is affected by the specified buff/debuff.
- buff:name, debuff:name
- Satisfied while the conditional target is affected by the specified buff/debuff.
- ownbuff:name, owndebuff:name
- Satisfied while the conditional target is affected by the specified buff/debuff cast by the player.
- imbuedrw (in Ælling 4 or later, Classic only)
- Satisfied when your ranged/thrown weapon has a temporary enchantment (poisons, weapon oils, etc).
- combo:X
- Satisfied while the player character has at least X combo points. For Paladins, Monks, Shadow Priests, Destruction and Affliction Warlocks, this conditional checks the relevant alternate power (e.g. chi) instead of combo points.
- cleanse
- Satisfied while the conditional target has at least one debuff the player can dispel.