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

Extended conditionals generally use the same syntax as the built-in [mod] conditional:

  1. 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.
  2. 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.
  3. 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
As well as the following tokens to query for specific locations:
  • outland
  • northrend
  • pandaria
  • draenor
  • broken isles
  • argus
  • ashran
  • kul tiras
  • zandalar
  • island
  • nazjatar
  • shadowlands
  • torghast
  • dragon isles
  • zaralek
  • emerald dream
  • khaz algar
As well as the following tokens to query for overworld areas of particular expansions:
  • 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,nohorde] despite being transformed into a troll.
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:
ProfessionConditionalShortcut
Alchemyalchemyalch
Blacksmithingblacksmithingbs
Enchantingenchantingench
Engineeringengineeringengi
Gnomish Engineeringnomeng
Goblin Engineeringgobeng
Inscriptioninscriptionscri
Jewelcraftingjewelcraftingjc
Leatherworkingleatherworkinglw
Tailoringtailoringtail
Herbalismherbalismherb
Skinningskinningskin
Miningminingmine
Archaeologyarchaeologyarch
Cookingcookingcook
Fishingfishingfish
First Aid (Classic)firstaidfaid
For example: [tail] is sastisfied if the player has at least one skill point in Tailoring, and [nomeng:40] is satisfied if the player has at least 40 skill points in Engineering, and has the Gnomish Engineering specialization.

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/nightfae/necrolord/fae/necro (or coven:)
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
For example: [form:bear/cat] is satisfied when the player character is in Bear Form or Cat Form.
stance:...
The stance conditional is extended to support the following tokens as an alternative to indices:
  • battle
  • defensive
  • berserker
  • gladiator
For example: [stance:battle] is satisfied when the player character is in Battle Stance.
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
Note that cmd and meta are equivalent and only usable on the macOS client.
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.