Custom flags are bouquet validators which accept a user defined anonymous function that returns a boolean value. This allows for any custom condition to be used as part of the evaluation of a bouquet's chain of validators. These custom flag validators can be any valid Lua snippet which returns true
or false
.
Table of Contents
- Table of Contents
- Accessing Unit Information
- Checking for a Debuff Icon
- Checking for a HoT Icon
- More Examples
- Unit Information Table Schema
Accessing Unit Information
The VUHDO_unitInfo
table provides the relevant cached information on the subject unit to the anonymous function.
The simple example below returns true if the unit is named 'Ivaria':
return ("Ivaria" == VUHDO_unitInfo["name"])
Full details on the unit information available in the VUHDO_unitInfo
table can be found below.
Example 1
The follow is a more complicated example which returns true only if the player's spell 'Prayer of Mending' is off cooldown and the unit is below 90% health:
return ((VUHDO_getSpellCooldown("Prayer of Mending") == 0) and ((VUHDO_unitInfo["health"] / VUHDO_unitInfo["healthmax"]) < 0.9)) and true or false;
Checking for a Debuff Icon
As of VuhDo v3.168, there is a new API that must be used to determine whether a unit has an active Debuff Icon:
VUHDO_hasUnitDebuff(<unit ID>, <spell name|spell ID>)
Example 2
Another example which returns true only if the unit is currently marked with a raid icon of 'Green Triangle' and also has a custom debuff active called 'Penetrating Cold':
return VUHDO_unitInfo["raidIcon"] == 4 and VUHDO_hasUnitDebuff(VUHDO_unitInfo["unit"], "Penetrating Cold") or false;
Checking for a HoT Icon
As of VuhDo v3.173, there is a new API that must be used to determine whether a unit has an active HoT Icon:
VUHDO_hasUnitHot(<unit ID>, <spell name|spell ID>[, VUHDO_UNIT_HOT_TYPE_<MINE|OTHERS|BOTH|OTHERSHOTS>])
The third optional argument to VUHDO_hasUnitHot
specifies the unit type who must be the source of the HoT aura:
-
VUHDO_UNIT_HOT_TYPE_MINE
- HoTs cast by the player. -
VUHDO_UNIT_HOT_TYPE_OTHERS
- HoTs cast by other players. -
VUHDO_UNIT_HOT_TYPE_BOTH
- HoTs cast by either the player or other players. -
VUHDO_UNIT_HOT_TYPE_OTHERSHOT
- HoTs tracked via the special built-inOther player's HoTs
bouquet.
When omitted, the third argument defaults to VUHDO_UNIT_HOT_TYPE_MINE
.
Example 3
One more example which returns true only if the unit has an active HoT Icon tracking 'Atonement' cast by the player:
return VUHDO_hasUnitHot(VUHDO_unitInfo["unit"], "Atonement");
More Examples
More example bouquets using custom flags of various kinds can be found via Ivaria's profile on wago.io. Note that not all of these have been updated to use the new Debuff and HoT Icon APIs.
Unit Information Table Schema
Unit information (VUHDO_unitInfo
table):
key | type / value | value description |
---|---|---|
afk | boolean | true if unit is AFK |
aggro | boolean | true if unit has aggro |
charmed | boolean | true if unit is charmed |
class | string | the unit's class name |
classId | number | the unit's class ID |
20 | warrior | |
21 | rogue | |
22 | hunter | |
23 | paladin | |
24 | mage | |
25 | warlock | |
26 | shaman | |
27 | druid | |
28 | priest | |
29 | death knight | |
30 | monk | |
31 | demon hunter | |
32 | evoker | |
className | string | the unit's class name prettified |
connected | boolean | true if unit is connected |
dead | boolean | true if unit is dead |
debuff | number | the unit's last active debuff type |
0 | no active debuff | |
1 | poison | |
2 | disease | |
3 | magic | |
4 | curse | |
6 | custom debuff | |
7 | missing Buff Watch aura | |
8 | bleed | |
debuffName | string | the most recent debuff on the unit |
fullName | string | the full name of the unit |
group | number | the group the unit is in |
health | number | the unit's current health |
healthmax | number | the unit's maximum health |
isAltPower | boolean | true if unit has an alt power active |
isPet | boolean | true if unit is a pet |
isVehicle | boolean | true if unit is in a vehicle |
name | string | the name of the unit |
ownerUnit | string | unit's owner if pet or vehicle |
petUnit | string | the unit's pet unit ID |
power | number | the unit's current power |
powermax | number | the unit's maximum power |
powertype | number | the type of power (see: https://warcraft.wiki.gg/wiki/Enum.PowerType) |
0 | mana | |
1 | rage | |
2 | focus | |
3 | energy | |
4 | happiness | |
5 | runes | |
raidIcon | number | the raid icon if unit is marked |
1 | yellow 4-point Star | |
2 | orange circle | |
3 | purple diamond | |
4 | green triangle | |
5 | white crescent moon | |
6 | blue square | |
7 | red "X" cross | |
8 | white skull | |
range | boolean | true if unit is in range |
role | number | the unit's combat role |
60 | melee tank | |
61 | melee damage | |
62 | ranged damage | |
63 | ranged heal | |
targetUnit | string | the unit's target |
threat | number | the unit's threat status |
0 | not tanking, lower threat than tank | |
1 | not tanking, higher threat than tank | |
2 | insecurely tanking, another unit has higher threat | |
3 | securely tanking, highest threat | |
threatPerc | number | the unit's threat percentage |
unit | string | the unit ID |
visible | boolean | true if the unit is visible |