From fc4b26568853dcae71dcf4a2db14603727d16cae Mon Sep 17 00:00:00 2001 From: NoM0Re Date: Tue, 11 Feb 2025 20:50:42 +0100 Subject: [PATCH] from retail --- WeakAuras/GenericTrigger.lua | 7 +++++++ WeakAuras/Prototypes.lua | 24 ++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/WeakAuras/GenericTrigger.lua b/WeakAuras/GenericTrigger.lua index 42427bb..89f468c 100644 --- a/WeakAuras/GenericTrigger.lua +++ b/WeakAuras/GenericTrigger.lua @@ -3220,6 +3220,13 @@ function Private.ExecEnv.CheckTotemName(totemName, triggerTotemName, triggerTote return true end +function Private.ExecEnv.CheckTotemIcon(totemIcon, triggerTotemIcon, operator) + if not triggerTotemIcon then + return true + end + return (totemIcon == triggerTotemIcon) == (operator == "==") +end + -- Queueable Spells local queueableSpells local classQueueableSpells = { diff --git a/WeakAuras/Prototypes.lua b/WeakAuras/Prototypes.lua index fad73ab..678d7d3 100644 --- a/WeakAuras/Prototypes.lua +++ b/WeakAuras/Prototypes.lua @@ -4854,6 +4854,8 @@ Private.event_prototypes = { local triggerTotemName = %q local triggerTotemPattern = %q local triggerTotemPatternOperator = %q + local triggerTotemIcon = %s + local triggerTotemIconOperator = %q local clone = %s local inverse = %s local remainingCheck = %s @@ -4870,6 +4872,10 @@ Private.event_prototypes = { active = false; end + if not Private.ExecEnv.CheckTotemIcon(icon, triggerTotemIcon, triggerTotemIconOperator) then + active = false + end + if (inverse) then active = not active; if (triggerTotemName) then @@ -4900,7 +4906,9 @@ Private.event_prototypes = { for i = 1, 4 do local _, totemName, startTime, duration, icon = GetTotemInfo(i); if ((startTime and startTime ~= 0) and - Private.ExecEnv.CheckTotemName(totemName, triggerTotemName, triggerTotemPattern, triggerTotemPatternOperator) + if ((startTime and startTime ~= 0) + and Private.ExecEnv.CheckTotemName(totemName, triggerTotemName, triggerTotemPattern, triggerTotemPatternOperator) + and Private.ExecEnv.CheckTotemIcon(icon, triggerTotemIcon, triggerTotemIconOperator) ) then found = true; end @@ -4920,7 +4928,9 @@ Private.event_prototypes = { local _, totemName, startTime, duration, icon = GetTotemInfo(i); active = (startTime and startTime ~= 0); - if not Private.ExecEnv.CheckTotemName(totemName, triggerTotemName, triggerTotemPattern, triggerTotemPatternOperator) then + if not Private.ExecEnv.CheckTotemName(totemName, triggerTotemName, triggerTotemPattern, triggerTotemPatternOperator) + or not Private.ExecEnv.CheckTotemIcon(icon, triggerTotemIcon, triggerTotemIconOperator) + then active = false; end if (active and remainingCheck) then @@ -4958,6 +4968,8 @@ Private.event_prototypes = { trigger.use_totemName and totemName or "", trigger.use_totemNamePattern and trigger.totemNamePattern or "", trigger.use_totemNamePattern and trigger.totemNamePattern_operator or "", + trigger.use_icon and trigger.icon or "nil", + trigger.use_icon and trigger.icon_operator or "", trigger.use_clones and "true" or "false", trigger.use_inverse and "true" or "false", trigger.use_remaining and tonumber(trigger.remaining or 0) or "nil", @@ -4984,6 +4996,14 @@ Private.event_prototypes = { display = L["Totem Name Pattern Match"], type = "longstring", }, + { + name = "icon", + display = L["Totem Icon"], + type = "number", + conditionType = "number", + operator_types = "only_equal", + store = true, + }, { name = "clones", display = L["Clone per Match"],