8b1be3a - More auras and stagger tracking
authorAleksi Blinnikka <aleksi.blinnikka@iki.fi>
Wed, 30 Jun 2021 16:34:36 +0000
committerAleksi Blinnikka <aleksi.blinnikka@iki.fi>
Wed, 30 Jun 2021 16:34:36 +0000
OmaTMW/TellMeWhen.lua
kehys/auras.lua
kehys/events.lua
kehys/frame.lua
kehys/updater.lua

index 113a707..6037c86 100644 (file)
@@ -93,9 +93,8 @@ local chars = {
         ["Vildan"] = {
             {
                 unit = "target",
         ["Vildan"] = {
             {
                 unit = "target",
-                spec = 3, -- Retribution
-                auras = {"Judgment"},
-                auraFilter = "PLAYER HARMFUL",
+                auras = {"Bursting With Pride"},
+                auraFilter = "HELPFUL",
                 x = 570, -- placed over Innervate frame
                 y = 440,
                 width = 80,
                 x = 570, -- placed over Innervate frame
                 y = 440,
                 width = 80,
@@ -120,6 +119,15 @@ local chars = {
                 width = 80,
                 height = 80,
             },
                 width = 80,
                 height = 80,
             },
+            {
+                unit = "player",
+                auras = {"Seraphim", "Righteous Verdict"},
+                auraFilter = "PLAYER HELPFUL",
+                x = 570,
+                y = 480,
+                width = 40,
+                height = 40,
+            },
             {
                 unit = "player",
                 auras = {"Divine Shield"},
             {
                 unit = "player",
                 auras = {"Divine Shield"},
@@ -293,7 +301,7 @@ local settings = {
             "Chilling Touch", "Volatile Charge", "Liquid Gold", "Drained Soul", "Evoke Anguish",
             "Ancient Curse", "Corrosion", "Debilitating Spit", "Tasty Morsel", "Encroaching Shadows",
             "Corrupted Existence", "Madness Bomb", "Crimson Chorus", "Essence Sap", "Bloodlight",
             "Chilling Touch", "Volatile Charge", "Liquid Gold", "Drained Soul", "Evoke Anguish",
             "Ancient Curse", "Corrosion", "Debilitating Spit", "Tasty Morsel", "Encroaching Shadows",
             "Corrupted Existence", "Madness Bomb", "Crimson Chorus", "Essence Sap", "Bloodlight",
-            "Arcane Vulnerability"
+            "Arcane Vulnerability", "Wicked Laceration", "Withering Touch"
         },
         auraFilter = "HARMFUL",
         x = 660,
         },
         auraFilter = "HARMFUL",
         x = 660,
index de01fa9..f777e22 100644 (file)
@@ -32,6 +32,9 @@ local watchedAuras = {
     [102342] = {1, "tankcd"}, -- Ironbark
     [116849] = {1, "tankcd"}, -- Life Cocoon
     [196555] = {1, "tankcd"}, -- Netherwalk
     [102342] = {1, "tankcd"}, -- Ironbark
     [116849] = {1, "tankcd"}, -- Life Cocoon
     [196555] = {1, "tankcd"}, -- Netherwalk
+    --[124275] = {1, "stagger"}, -- Light Stagger (Monk)
+    --[124274] = {1, "stagger"}, -- Moderate Stagger (Monk)
+    [124273] = {1, "stagger"}, -- Heavy Stagger (Monk)
     -- M+
     [209858] = {1, "stacks"}, -- Necrotic Wound (M+)
     [240559] = {1, "stacks"}, -- Grievous Wound (M+)
     -- M+
     [209858] = {1, "stacks"}, -- Necrotic Wound (M+)
     [240559] = {1, "stacks"}, -- Grievous Wound (M+)
@@ -102,6 +105,8 @@ local watchedAuras = {
     [327814] = {1, "heal"}, -- Wicked Gash (Gauntlet) (Sanguine Depths)
     [323687] = {1, "heal"}, -- Arcane Lightning (De Other Side)
     [324154] = {1, "heal"}, -- Dark Stride (Spires of Ascension)
     [327814] = {1, "heal"}, -- Wicked Gash (Gauntlet) (Sanguine Depths)
     [323687] = {1, "heal"}, -- Arcane Lightning (De Other Side)
     [324154] = {1, "heal"}, -- Dark Stride (Spires of Ascension)
+    [335305] = {1, "heal"}, -- Barbed Shackles (Sanguine Depths)
+    [336279] = {1, "heal"}, -- Explosive Anger (Sanguine Depths)
     -- Castle Nathria
     [346301] = {1, "stacks"}, -- Bloodlight (Shriekwing)
     [328897] = {7, "alert"}, -- Exsanguinated (Shriekwing)
     -- Castle Nathria
     [346301] = {1, "stacks"}, -- Bloodlight (Shriekwing)
     [328897] = {7, "alert"}, -- Exsanguinated (Shriekwing)
@@ -116,12 +121,13 @@ local watchedAuras = {
     [324982] = {1, "heal"}, -- Shared Suffering (Lady Inerva Darkvein)
     [324983] = {1, "heal"}, -- Shared Suffering (Lady Inerva Darkvein)
     [340860] = {1, "heal", 14}, -- Withering Touch (Artificer Xy'mox)
     [324982] = {1, "heal"}, -- Shared Suffering (Lady Inerva Darkvein)
     [324983] = {1, "heal"}, -- Shared Suffering (Lady Inerva Darkvein)
     [340860] = {1, "heal", 14}, -- Withering Touch (Artificer Xy'mox)
+    [326302] = {1, "alert"}, -- Stasis Trap (Artificer Xy'mox)
     [334771] = {1, "heal"}, -- Heart Hemorrhage (Stone Legion Generals)
     [326699] = {1, "stacks"}, -- Burden of Sin (Sire Denathrius)
     [329298] = {1, "alert"}, -- Gluttonous Miasma (Hungering Destroyer)
     [334755] = {14, "heal"}, -- Essence Sap (Hungering Destroyer)
     [343320] = {1, "alert"}, -- Curse of Caramain (Trash)
     [334771] = {1, "heal"}, -- Heart Hemorrhage (Stone Legion Generals)
     [326699] = {1, "stacks"}, -- Burden of Sin (Sire Denathrius)
     [329298] = {1, "alert"}, -- Gluttonous Miasma (Hungering Destroyer)
     [334755] = {14, "heal"}, -- Essence Sap (Hungering Destroyer)
     [343320] = {1, "alert"}, -- Curse of Caramain (Trash)
-    [333913] = {2, "stacks"}, -- Wicked Laceration (Stone Legion Generals)
+    [333913] = {1, "stacks"}, -- Wicked Laceration (Stone Legion Generals)
 };
 local playerGuid = nil;
 
 };
 local playerGuid = nil;
 
@@ -133,8 +139,8 @@ auraEvents.SPELL_AURA_APPLIED = function(frame, id, source, _, _, atype, amount)
             frame[watchedAuras[id][2]][id] = amount;
         elseif atype == "DEBUFF" then
             frame[watchedAuras[id][2]][id] = amount;
             frame[watchedAuras[id][2]][id] = amount;
         elseif atype == "DEBUFF" then
             frame[watchedAuras[id][2]][id] = amount;
-            if watchedAuras[id][3] ~= nil then
-                frame.stacks[id] = watchedAuras[id][3];
+            if watchedAuras[id][3] ~= nil and frame.hits[id] == nil then
+                frame.hits[id] = watchedAuras[id][3];
             end
         end
     end
             end
         end
     end
@@ -147,6 +153,9 @@ auraEvents.SPELL_AURA_REMOVED = function(frame, id, source, _, _, atype, amount)
             frame[watchedAuras[id][2]][id] = nil;
         elseif atype == "DEBUFF" then
             frame[watchedAuras[id][2]][id] = nil;
             frame[watchedAuras[id][2]][id] = nil;
         elseif atype == "DEBUFF" then
             frame[watchedAuras[id][2]][id] = nil;
+            if watchedAuras[id][3] ~= nil then
+                frame.hits[id] = nil;
+            end
         end
     end
 end
         end
     end
 end
@@ -157,16 +166,18 @@ end
 auraEvents.SPELL_AURA_BROKEN_SPELL = auraEvents.SPELL_AURA_BROKEN;
 auraEvents.SPELL_PERIODIC_DAMAGE = function(frame, id, source)
     if watchedAuras[id][3] ~= nil then
 auraEvents.SPELL_AURA_BROKEN_SPELL = auraEvents.SPELL_AURA_BROKEN;
 auraEvents.SPELL_PERIODIC_DAMAGE = function(frame, id, source)
     if watchedAuras[id][3] ~= nil then
-        if frame.stacks[id] ~= nil and frame.stacks[id] > 0 then
-            frame.stacks[id] = frame.stacks[id] - 1;
-            if frame.stacks[id] == 0 then
-                frame.stacks[id] = nil;
+        if frame.hits[id] ~= nil and frame.hits[id] > 0 then
+            frame.hits[id] = frame.hits[id] - 1;
+            if frame.hits[id] == 0 then
+                frame.hits[id] = nil;
             end
             end
-        elseif frame.stacks[id] ~= nil then
-            frame.stacks[id] = nil;
+        elseif frame.hits[id] ~= nil then
+            frame.hits[id] = nil;
         end
     end
 end
         end
     end
 end
+auraEvents.SPELL_PERIODIC_ABSORBED = auraEvents.SPELL_PERIODIC_DAMAGE;
+auraEvents.SPELL_PERIODIC_MISSED = auraEvents.SPELL_PERIODIC_DAMAGE;
 
 local counter = 0;
 local function clog(ts, event, _, source, _, _, _, dest, _, _, _, spellid, ...)
 
 local counter = 0;
 local function clog(ts, event, _, source, _, _, _, dest, _, _, _, spellid, ...)
index 7d46c61..ae201dd 100644 (file)
@@ -77,11 +77,7 @@ local function updateName(frame, unit)
 
     local _, class = UnitClass(unit);
     local color = RAID_CLASS_COLORS[class];
 
     local _, class = UnitClass(unit);
     local color = RAID_CLASS_COLORS[class];
-    if class == "DEATHKNIGHT" then
-        frame.isdk = true;
-    else
-        frame.isdk = nil;
-    end
+    frame.classname = class;
 
     if color then
         if not frame.raid then
 
     if color then
         if not frame.raid then
@@ -207,6 +203,7 @@ local eventFuncs = {
             frame.heal = {};
             frame.buff1 = {};
             frame.buff2 = {};
             frame.heal = {};
             frame.buff1 = {};
             frame.buff2 = {};
+            frame.stagger = {};
             addon.SetAuras(frame.unit, frame.guid);
         end
     end,
             addon.SetAuras(frame.unit, frame.guid);
         end
     end,
index f740c77..44bc149 100644 (file)
@@ -54,11 +54,13 @@ function addon.NewRaidFrame(parent, width, height, unit, attributes,
     f.heal = {}; -- high healing auras
     f.tankcd = {}; -- tank CD auras
     f.stacks = {}; -- stacking aura tracking
     f.heal = {}; -- high healing auras
     f.tankcd = {}; -- tank CD auras
     f.stacks = {}; -- stacking aura tracking
+    f.hits = {}; -- hits aura tracking
+    f.stagger = {}; -- Monk Stagger tracking
     f.buff1 = {}; -- custom buff indicator 1
     f.buff2 = {}; -- custom buff indicator 2
     f.incoming = {}; -- incoming ability indicator
     f.rolename = nil; -- TANK, HEALER, DAMAGER, NONE
     f.buff1 = {}; -- custom buff indicator 1
     f.buff2 = {}; -- custom buff indicator 2
     f.incoming = {}; -- incoming ability indicator
     f.rolename = nil; -- TANK, HEALER, DAMAGER, NONE
-    f.isdk = nil; -- DK death strike tracker for DK tanks
+    f.classname = nil; -- DK Death Strike and Monk Stagger tracker
     f.raid = true;
     f.rounds = 0;
     -- set up periodic updates
     f.raid = true;
     f.rounds = 0;
     -- set up periodic updates
index 94977d4..42aedf0 100644 (file)
@@ -230,6 +230,7 @@ function addon.FrameUpdate(frame)
                 frame.heal = {};
                 frame.buff1 = {};
                 frame.buff2 = {};
                 frame.heal = {};
                 frame.buff1 = {};
                 frame.buff2 = {};
+                frame.stagger = {};
                 addon.SetAuras(frame.unit, frame.guid);
                 frame.rounds = 0;
             end
                 addon.SetAuras(frame.unit, frame.guid);
                 frame.rounds = 0;
             end
@@ -246,6 +247,10 @@ function addon.FrameUpdate(frame)
                 local _, amount = next(frame.stacks);
                 frame.stack:SetText(amount);
                 if not frame.stack:IsShown() then frame.stack:Show() end
                 local _, amount = next(frame.stacks);
                 frame.stack:SetText(amount);
                 if not frame.stack:IsShown() then frame.stack:Show() end
+            elseif next(frame.hits) then
+                local _, amount = next(frame.hits);
+                frame.stack:SetText(amount);
+                if not frame.stack:IsShown() then frame.stack:Show() end
             elseif frame.stack:IsShown() then
                 frame.stack:Hide();
             end
             elseif frame.stack:IsShown() then
                 frame.stack:Hide();
             end
@@ -267,13 +272,21 @@ function addon.FrameUpdate(frame)
             elseif frame.glow:IsShown() then
                 frame.glow:Hide();
             end
             elseif frame.glow:IsShown() then
                 frame.glow:Hide();
             end
-            -- DK death strike tracking
-            if frame.isdk and frame.rolename == "TANK" then
-                local power = UnitPower(unit);
-                if power < 45 then
-                    frame.bottomwarn:Show();
-                elseif frame.bottomwarn:IsShown() then
-                    frame.bottomwarn:Hide();
+            -- DK Death Strike and Monk Stagger tracking
+            if frame.rolename == "TANK" then
+                if frame.classname == "DEATHKNIGHT" then
+                    local power = UnitPower(unit);
+                    if power < 45 then
+                        if not frame.bottomwarn:IsShown() then frame.bottomwarn:Show() end
+                    elseif frame.bottomwarn:IsShown() then
+                        frame.bottomwarn:Hide();
+                    end
+                elseif frame.classname == "MONK" then
+                    if next(frame.stagger) then -- Heavy Stagger
+                        if not frame.bottomwarn:IsShown() then frame.bottomwarn:Show() end
+                    elseif frame.bottomwarn:IsShown() then
+                        frame.bottomwarn:Hide();
+                    end
                 end
             elseif frame.bottomwarn:IsShown() then
                 frame.bottomwarn:Hide();
                 end
             elseif frame.bottomwarn:IsShown() then
                 frame.bottomwarn:Hide();