e8fd612 - Add more auras and dot tracking functions
authorAleksi Blinnikka <aleksi.blinnikka@iki.fi>
Wed, 30 Jun 2021 16:29:58 +0000
committerAleksi Blinnikka <aleksi.blinnikka@iki.fi>
Wed, 30 Jun 2021 16:29:58 +0000
OmaTMW/TellMeWhen.lua
kehys/auras.lua
kehys/incoming.lua

index 1b92b72..113a707 100644 (file)
@@ -266,7 +266,7 @@ local chars = {
 local settings = {
     {
         unit = "player",
 local settings = {
     {
         unit = "player",
-        auras = {"Innervate", "Gift of the Titans"},
+        auras = {"Innervate", "Gift of the Titans", "Power Infusion"},
         auraFilter = "HELPFUL",
         x = 570,
         y = 440,
         auraFilter = "HELPFUL",
         x = 570,
         y = 440,
@@ -292,7 +292,8 @@ local settings = {
             "Crackling Lightning", "Storm's Wail", "Death's Door", "Deathly Withering",
             "Chilling Touch", "Volatile Charge", "Liquid Gold", "Drained Soul", "Evoke Anguish",
             "Ancient Curse", "Corrosion", "Debilitating Spit", "Tasty Morsel", "Encroaching Shadows",
             "Crackling Lightning", "Storm's Wail", "Death's Door", "Deathly Withering",
             "Chilling Touch", "Volatile Charge", "Liquid Gold", "Drained Soul", "Evoke Anguish",
             "Ancient Curse", "Corrosion", "Debilitating Spit", "Tasty Morsel", "Encroaching Shadows",
-            "Corrupted Existence", "Madness Bomb"
+            "Corrupted Existence", "Madness Bomb", "Crimson Chorus", "Essence Sap", "Bloodlight",
+            "Arcane Vulnerability"
         },
         auraFilter = "HARMFUL",
         x = 660,
         },
         auraFilter = "HARMFUL",
         x = 660,
@@ -303,7 +304,7 @@ local settings = {
     {
         unit = "player",
         auras = {
     {
         unit = "player",
         auras = {
-            "Adaptive Membrane"
+            "Adaptive Membrane", "Gluttonous Miasma"
         },
         auraFilter = "HARMFUL",
         x = 660,
         },
         auraFilter = "HARMFUL",
         x = 660,
@@ -417,6 +418,7 @@ local function createTMW(name, config, parent)
     frame.icon:SetPoint("BOTTOMRIGHT", frame.base, "BOTTOMRIGHT", -1, 1);
     frame.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93);
     frame.stack = frame:CreateFontString(nil, "OVERLAY", "NumberFontNormalLarge");
     frame.icon:SetPoint("BOTTOMRIGHT", frame.base, "BOTTOMRIGHT", -1, 1);
     frame.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93);
     frame.stack = frame:CreateFontString(nil, "OVERLAY", "NumberFontNormalLarge");
+    frame.stack:SetFont(STANDARD_TEXT_FONT, 26, "OUTLINE");
     frame.stack:SetPoint("TOPLEFT");
     frame.stack:Hide();
     frame.cd = CreateFrame("Cooldown", name.."CD", frame, "CooldownFrameTemplate");
     frame.stack:SetPoint("TOPLEFT");
     frame.stack:Hide();
     frame.cd = CreateFrame("Cooldown", name.."CD", frame, "CooldownFrameTemplate");
index 2291aa1..de01fa9 100644 (file)
@@ -24,6 +24,7 @@ local watchedAuras = {
     [53563] = {1, "buff2"}, -- Beacon of Light
     [156910] = {1, "buff2"}, -- Beacon of Faith
     [200025] = {1, "buff2"}, -- Beacon of Virtue
     [53563] = {1, "buff2"}, -- Beacon of Light
     [156910] = {1, "buff2"}, -- Beacon of Faith
     [200025] = {1, "buff2"}, -- Beacon of Virtue
+    [974] = {1, "buff2"}, -- Earth Shield
     -- Tank defensives
     [6940] = {1, "tankcd"}, -- Blessing of Sacrifice
     [33206] = {1, "tankcd"}, -- Pain Suppression
     -- Tank defensives
     [6940] = {1, "tankcd"}, -- Blessing of Sacrifice
     [33206] = {1, "tankcd"}, -- Pain Suppression
@@ -88,6 +89,39 @@ local watchedAuras = {
     [316065] = {1, "alert"}, -- Corrupted Existence (Ra-den)
     [313364] = {1, "heal"}, -- Mental Decay (Carapace of N'zoth)
     [307044] = {4, "stacks"}, -- Nightmare Antibody (Carapace of N'zoth)
     [316065] = {1, "alert"}, -- Corrupted Existence (Ra-den)
     [313364] = {1, "heal"}, -- Mental Decay (Carapace of N'zoth)
     [307044] = {4, "stacks"}, -- Nightmare Antibody (Carapace of N'zoth)
+    -- SL M+
+    [323347] = {1, "stacks"}, -- Clinging Darkness (Necrotic Wake)
+    [338357] = {2, "stacks"}, -- Tenderize (Necrotic Wake)
+    [321038] = {1, "stacks"}, -- Wrack Soul (Sanguine Depths)
+    [331415] = {1, "stacks"}, -- Wicked Gash (Sanguine Depths)
+    [328737] = {1, "stacks"}, -- Fragment of Radiance (Sanguine Depths)
+    [326632] = {5, "stacks"}, -- Stony Veins (Halls of Atonement)
+    [344993] = {5, "stacks"}, -- Jagged Swipe (Halls of Atonement)
+    [323692] = {1, "stacks"}, -- Arcane Vulnerability (De Other Side)
+    [317661] = {1, "stacks"}, -- Insidious Venom (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)
+    -- Castle Nathria
+    [346301] = {1, "stacks"}, -- Bloodlight (Shriekwing)
+    [328897] = {7, "alert"}, -- Exsanguinated (Shriekwing)
+    [335304] = {1, "heal"}, -- Sinseeker (Huntsman Altimor)
+    [334971] = {2, "stacks"}, -- Jagged Claws (Huntsman Altimor)
+    [325382] = {3, "stacks"}, -- Warped Desires (Lady Inerva Darkvein)
+    [332664] = {1, "heal"}, -- Anima Add (Lady Inerva Darkvein)
+    [340477] = {1, "heal"}, -- Anima Add (Lady Inerva Darkvein)
+    [339527] = {1, "heal"}, -- Anima Add (Lady Inerva Darkvein)
+    [342321] = {1, "heal"}, -- Anima Add (Lady Inerva Darkvein)
+    [342322] = {1, "heal"}, -- Anima Add (Lady Inerva Darkvein)
+    [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)
+    [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)
 };
 local playerGuid = nil;
 
 };
 local playerGuid = nil;
 
@@ -95,10 +129,13 @@ local auraEvents = {};
 auraEvents.SPELL_AURA_APPLIED = function(frame, id, source, _, _, atype, amount)
     if (amount == nil and watchedAuras[id][1] == 1) or (amount ~= nil and amount >= watchedAuras[id][1]) then
         amount = amount or 1;
 auraEvents.SPELL_AURA_APPLIED = function(frame, id, source, _, _, atype, amount)
     if (amount == nil and watchedAuras[id][1] == 1) or (amount ~= nil and amount >= watchedAuras[id][1]) then
         amount = amount or 1;
-        if atype == "BUFF" and source == playerGuid then
+        if atype == "BUFF" and (source == playerGuid or watchedAuras[id][2] == "tankcd") then
             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];
+            end
         end
     end
 end
         end
     end
 end
@@ -106,7 +143,7 @@ auraEvents.SPELL_AURA_APPLIED_DOSE = auraEvents.SPELL_AURA_APPLIED;
 auraEvents.SPELL_AURA_REFRESH = auraEvents.SPELL_AURA_APPLIED;
 auraEvents.SPELL_AURA_REMOVED = function(frame, id, source, _, _, atype, amount)
     if amount == nil or amount == 0 then
 auraEvents.SPELL_AURA_REFRESH = auraEvents.SPELL_AURA_APPLIED;
 auraEvents.SPELL_AURA_REMOVED = function(frame, id, source, _, _, atype, amount)
     if amount == nil or amount == 0 then
-        if atype == "BUFF" and source == playerGuid then
+        if atype == "BUFF" and (source == playerGuid or watchedAuras[id][2] == "tankcd") then
             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;
@@ -118,6 +155,18 @@ auraEvents.SPELL_AURA_BROKEN = function(frame, id, source)
     return auraEvents.SPELL_AURA_REMOVED(frame, id, source, nil, nil, nil, 0);
 end
 auraEvents.SPELL_AURA_BROKEN_SPELL = auraEvents.SPELL_AURA_BROKEN;
     return auraEvents.SPELL_AURA_REMOVED(frame, id, source, nil, nil, nil, 0);
 end
 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;
+            end
+        elseif frame.stacks[id] ~= nil then
+            frame.stacks[id] = nil;
+        end
+    end
+end
 
 local counter = 0;
 local function clog(ts, event, _, source, _, _, _, dest, _, _, _, spellid, ...)
 
 local counter = 0;
 local function clog(ts, event, _, source, _, _, _, dest, _, _, _, spellid, ...)
index 0e3f150..2e880d9 100644 (file)
@@ -7,6 +7,8 @@ local _, addon = ...;
 local guids = addon.FrameGuids;
 local abilities = {
     [260741] = true, -- Jagged Nettles (Waycrest Manor)
 local guids = addon.FrameGuids;
 local abilities = {
     [260741] = true, -- Jagged Nettles (Waycrest Manor)
+    [342675] = true, -- Bone Spear (Theater of Pain)
+    [320788] = true, -- Frozen Binds (Necrotic Wake)
 };
 
 local frame = CreateFrame("Frame", "kehysIncoming");
 };
 
 local frame = CreateFrame("Frame", "kehysIncoming");
@@ -27,12 +29,10 @@ local function event(_, event, target, cast, id)
                 else
                     f.incoming[id] = 1;
                 end
                 else
                     f.incoming[id] = 1;
                 end
-            elseif event == "UNIT_SPELLCAST_STOP" or event == "UNIT_SPELLCAST_CHANNEL_START" then
-                if f.incoming[id] then
-                    f.incoming[id] = f.incoming[id] - 1;
-                    if f.incoming[id] == 0 then
-                        f.incoming[id] = nil;
-                    end
+            elseif f.incoming[id] then
+                f.incoming[id] = f.incoming[id] - 1;
+                if f.incoming[id] == 0 then
+                    f.incoming[id] = nil;
                 end
             end
         end
                 end
             end
         end
@@ -44,7 +44,11 @@ local function setup()
     frame:SetScript("OnEvent", event);
     frame:RegisterEvent("UNIT_SPELLCAST_START");
     frame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
     frame:SetScript("OnEvent", event);
     frame:RegisterEvent("UNIT_SPELLCAST_START");
     frame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
+    frame:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP");
     frame:RegisterEvent("UNIT_SPELLCAST_STOP");
     frame:RegisterEvent("UNIT_SPELLCAST_STOP");
+    frame:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED");
+    frame:RegisterEvent("UNIT_SPELLCAST_FAILED");
+    frame:RegisterEvent("UNIT_SPELLCAST_FAILED_QUIET");
     frame:RegisterEvent("PLAYER_REGEN_ENABLED");
 end
 
     frame:RegisterEvent("PLAYER_REGEN_ENABLED");
 end