OPie: Extended macro conditionals
OPie allows you to use macro conditionals to further customize which bindings should open rings and which slices should be displayed at any given time. In addition to the normal list of macro conditionals, you can use several OPie-specific extensions as described on this page. You can also use these extensions within macros on placed onto OPie rings.
- The spec conditional is extended to support specialization names (like Balance or Marksmanship), or specialization IDs (102 for Balance), in addition to specialization indices (1 for Balance).
For example: [spec:feral] is true when the player character is a Feral Druid.
- me:character name/class name
- Evaluates to true if your character's name is equal to the specified value, or if your character's class is equal to the specified value (either in localized or internal english form).
For example: [me:Ygramul/Gmork] is true when the player character is named Ygramul or Gmork; [me:druid/deathknight] is true when the player character is a druid or a death knight.
- Evaluates to true when you're in a specific zone (or subzone).
For example: [zone:Valley of the Four Winds] is true when the player is in the Valley of the Four Winds (but not in The Lazy Turnip, which is apparently in a separate zone).
- known:spell id
- Evaluates to true when the player or their pet has learned the specified spell.
For example: [known:109248] is true when the player has learned Binding Shot.
- The form conditional is extended to support form names for druid forms in addition to form indices; moon may also be used in place of moonkin.
For example: [form:cat/bear] is true when the player is in Bear Form or Cat Form.
- instance:world/garrison/scenario/dungeon/lfr/raid/worldpvp/battleground/ratedbg/arena/outland/northrend/pandaria/draenor/broken isles/ashran/bfa/kul tiras/zandalar/island/shadowlands/torghast (or in:)
- Evalutes to true based on which type of instance you're currently in.
For example: [in:arena] is true when you're in an arena, [in:world] is true when you're out in the world.
- Evaluates to true when the player 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 true 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 true when the player has no zone-specific garrison ability in the current zone.
- level:minimum level
- Evalutes to true 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 true when the player is level 50 or above; and false if the player is level 49 or below.
- horde / alliance
- Evalute to true when the player character is part of the corresponding faction group.
- Evalutes to true when the player character is of a particular race, specified using the non-localized race string (e.g. nightelf or orc).
- Profession conditionals: prof:min skill
- Evaluates to true when the player character has the specified profession or profession specialization
(if minimum skill is specified, 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 Archaeology archaeology arch Cooking cooking cook Fishing fishing fish
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.
- 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 true the pet in a Hunter's first stable slot is currently active.
- havepet:stable slot
- Evaluates to true if there is a pet in the specified stable slot.
The conditionals use the same syntax as [mod]: you can prefix the conditional name with no to negate the result (e.g. [nospec:arcane] evaluates to true whenever [spec:arcane] would evaluate to false), and specify a list of alternatives separated by forward slashes (e.g. [spec:fire/frost,me:mage] evaluates to true for Fire or Frost mages). Conditional arguments are case-insensitive, making [spec:fire], [spec:Fire], and [spec:fIRe] equivalent.
In addition to the standard units, extended conditionals may refer to the following units:
- 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.
You can freely combine these units with the target and pet suffixes (e.g. using tank1target to refer to the target of the group's tank).
The following non-secure conditionals are primarily useful out of combat:
- Evaluates to true while the player character is moving.
- ready:spell name/item name/spell id/item id
- Evaluates to true if the cooldown remaining on any of the argument spells/items is below the current global cooldown.
For example: [ready:Hearthstone] is true when the player's Hearthstone is not on cooldown.
- have:item name/item id
- Evaluates to true if the player has at least one of the argument items in their inventory/bags.
For example: [have:Healthstone] is true while the player has a Healthstone.
- selfbuff:name, selfdebuff:name
- Evalutes to true if the player is affected by the specified buff/debuff.
- buff:name, debuff:name
- Evalutes to true if the conditional target is affected by the specified buff/debuff.
- ownbuff:name, owndebuff:name
- Evalutes to true if the conditional target is affected by the specified buff/debuff cast by the player.
- Evalutes to true if the player 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.
- Evaluates to true if the conditional target has at least one debuff the player can dispel.
While in combat, clauses containing non-secure conditionals not prefixed with a + always evaluate to false, while non-secure conditionals prefixed with a + are considered to be satisfied. For example:
- /cast [moving] Roll; [nomoving] Red Shado-Pan Riding Tiger; Tiger Palm will always attempt to cast Tiger Palm while in combat.
- /cast [+moving] Roll; Red Shado-Pan Riding Tiger will always attempt to cast Roll while in combat.