Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
VuhDo VuhDo
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 303
    • Issues 303
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 4
    • Merge requests 4
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • VuhDo
  • VuhDoVuhDo
  • Wiki
  • VuhDo Custom Flag Bouquet Validators

Last edited by Ivaria Mar 26, 2026
Page history
This is an old version of this page. You can view the most recent version or browse the history.

VuhDo Custom Flag Bouquet Validators

VuhDo Custom Flag Bouquet Validators

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
    • Example 1
  • Checking for an Aura (Midnight)
    • Example 2
    • Example 3
  • Deprecated: Debuff Icon and HoT Icon APIs
  • Secret Values (Midnight)
  • 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 following 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 an Aura (Midnight)

As of VuhDo for Midnight, aura presence for custom flags is resolved through VuhDo's aura cache (VUHDO_UNIT_AURA_CACHE). Only auras that VuhDo is already configured to track (for example via bouquets, aura groups, or panel aura displays) are present in this cache. If a spell is not tracked, these APIs will not find it even if the unit has the aura in game.

VUHDO_hasUnitAura(unit, spell, filter)

Returns true if the unit has a cached aura matching spell (spell name string or spell ID number). Optional third argument filter:

  • "HARMFUL" — only harmful (debuff) auras
  • "HELPFUL" — only helpful (buff) auras
  • omitted or nil — any cached aura matching the spell

Spell IDs may be passed as numbers or as numeric strings (e.g. "12345").

return VUHDO_hasUnitAura(VUHDO_unitInfo["unit"], "Penetrating Cold", "HARMFUL") or false;
return VUHDO_hasUnitAura(VUHDO_unitInfo["unit"], 123456, "HELPFUL") or false;

VUHDO_getUnitAura(unit, spell, filter)

Returns the cached aura entry table for the first matching aura, or nil if none. The same spell and filter rules as VUHDO_hasUnitAura apply. This is the same table VuhDo uses internally; treat it as read-only (do not assign into it from custom flags).

Typical keys (values may be Midnight secret values; see below):

Key Description
auraInstanceID Aura instance ID
icon Texture file id or path
name Aura name
spellId Spell ID
applications Stack count
duration Total duration
expirationTime Expiration time (compare with GetTime() for remaining time, only if present)
sourceUnit Source unit token
isHarmful Debuff
isHelpful Buff
dispelName Dispel type / school info where applicable

Example 2

Returns true only if the unit is marked with raid icon 'Green Triangle' (index 4) and has a cached harmful aura named 'Penetrating Cold':

return VUHDO_unitInfo["raidIcon"] == 4 and VUHDO_hasUnitAura(VUHDO_unitInfo["unit"], "Penetrating Cold", "HARMFUL") or false;

Example 3

Returns true only if the unit has a cached helpful aura for 'Atonement' on the player:

return VUHDO_hasUnitAura(VUHDO_unitInfo["unit"], "Atonement", "HELPFUL") or false;

Use VUHDO_getUnitAura when you need stacks or timing. Use issecretvalue() before comparing or doing arithmetic on numeric fields:

local tAura = VUHDO_getUnitAura(VUHDO_unitInfo["unit"], "Renew", "HELPFUL");
local tStacks = tAura and tAura["applications"];
return tStacks and not issecretvalue(tStacks) and tStacks >= 3 or false;

Deprecated: Debuff Icon and HoT Icon APIs

Older documentation referred to:

  • VUHDO_hasUnitDebuff(unit, spell) — tied to the legacy Debuff Icon system
  • VUHDO_hasUnitHot(unit, spellName[, sourceType]) — tied to the legacy HoT Icon system

These functions still exist for backward compatibility but are implemented as thin wrappers around the Midnight aura cache:

  • VUHDO_hasUnitDebuff is equivalent to VUHDO_hasUnitAura(unit, spell, "HARMFUL")
  • VUHDO_hasUnitHot is equivalent to VUHDO_hasUnitAura(unit, spellName, "HELPFUL") (the old sourceType argument is ignored)

New custom flags should prefer VUHDO_hasUnitAura / VUHDO_getUnitAura directly.

Secret Values (Midnight)

Some aura-related values may be secret in Midnight. Custom flag code must use issecretvalue() (and avoid native comparisons or arithmetic on secret values) when reading fields from the table returned by VUHDO_getUnitAura.

More Examples

More example bouquets using custom flags of various kinds can be found via Ivaria's profile on wago.io. Note that older examples may need updating to use the Midnight aura APIs above.

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
Clone repository
  • VuhDo Classic FAQ
  • VuhDo Custom Flag Bouquet Validators
  • Home