diff --git a/LegionWA/.gitignore b/LegionWA/.gitignore new file mode 100644 index 0000000..b4fa2c9 --- /dev/null +++ b/LegionWA/.gitignore @@ -0,0 +1 @@ +.vscode diff --git a/LegionWA/AutoQuest/Event.lua b/LegionWA/AutoQuest/Event.lua new file mode 100644 index 0000000..b599f2c --- /dev/null +++ b/LegionWA/AutoQuest/Event.lua @@ -0,0 +1,42 @@ +-- QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW +function(e) + if e == "QUEST_POI_UPDATE" then + CloseGossip() + elseif e == "QUEST_DETAIL" then + AcceptQuest() + elseif e == "QUEST_COMPLETE" then + if GetNumQuestChoices() <= 1 then + GetQuestReward(1) + end + elseif e == "GOSSIP_SHOW" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + local options = GetNumGossipOptions() + if completedQuests > 0 and options == 0 then + for i = 1, completedQuests do + SelectGossipActiveQuest(i) + end + end + if quests > 0 and options == 0 then + SelectGossipAvailableQuest(1) + end + if options == 1 and quests + completedQuests == 0 then + SelectGossipOption(1) + end + elseif e == "QUEST_GREETING" then + local quests = GetNumGossipAvailableQuests() + local completedQuests = GetNumGossipActiveQuests() + if completedQuests > 0 then + for i = 1, completedQuests do + SelectActiveQuest(1) + end + end + if quests > 0 then + SelectAvailableQuest(1) + end + elseif e == "QUEST_PROGRESS" then + if IsQuestCompletable(i) then + CompleteQuest() + end + end +end \ No newline at end of file diff --git a/LegionWA/AutoQuest/Export b/LegionWA/AutoQuest/Export new file mode 100644 index 0000000..9067ce3 --- /dev/null +++ b/LegionWA/AutoQuest/Export @@ -0,0 +1 @@ +difPIaGiIQhHuuvxIquPrjLoLu5vuLGzHsDlIs2LOyyiv5yefltuINriktdPixdPOY2Ocv6BifIXHuqohvjY6qkQY7Ocvmpcrv3dLSpQsuhePQwivj1dPczIuLYffv2ivj5JsvnsKIYjjuRerVePqAMeWnPkH2POk)KazOeOoQuLLkQkpvsMkbDvcHTIuO(krPCwQqvVfPanxQq5Uifu7LQ6VivgmCyjwSOupgftwsDzkBwk(mv0OPconPwnsb8Arv1Sf52uPDJQFtYWPkoovPA5i55imDHRtKTti9DIs14je58iLwpHOI3lkPUVOKSF1(Y4l0VY1VQ2VQ2xOFvyIuiJxP4rLwKJ5NxwONFvHj0IAcP0oDAuErvT5NNSKHE(vHjsHm54LStwTF2(vbL2PtJYxOFvqRhZVIrIiuU(vmseHYLUGwpMFLjQXd)kgjIq5sNd6AZVk0UwTFfJdgt(9RmrnE4xXirekx)kzjRrprKRsiDcwqIPtec2B0xyUrprKRsiDElNq6lwGrprKRsiDosqErblqoH5g9erUkH01pF5YjuCE9h9erUkH0j48jO(5lxv1OVGQQely6QOzcs2MSrIZeAfV16MCmgdDZWgSynK3te5QesNGfKy6eHG9g9fMt(iCW4togJXymgokPiS(kccTN2UjhJXWseMUzydwSgY7jICvcPZB5esFXciFeoy8jhJXymgd6ZWyEIEsgr02n5ymgwIW0ndBWI1qEprKRsiDosqErblqoH5Kpchm(KJXymgJHUz03I8KC7jzeHJCqPzmI2UHipRHmJWbJp5ymgJXymgJrFl6jzer(mzVqv3kt3KJXymgJHXRNCmgdlry6MHnyXAiVVGQQely6QOzcs2Kpchm(KJXymgJrsXusdVlzebXG1OVf5j52xrqO9qFrl6uj7K1tYicI2UjhJXymgJKIPKgmkxpjlS6Esgrqmyn6BrEsU9veeAp0Nj0IA9KmIGOTBYXymgJXiPykPHYtOvCIbRrFlYtYTVIGq7rqEcTIt02n5ymgJXyOBgmkxpjlS6Esgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgnkQHEWAid7bJY1tYcRUNKreeJA1KJXymgJXymgJXyuzjJj6Rii0EOptOf16jzerRUBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nk86HYtOvCIblwd6nchm(KJXymgJXymgvwYyI(kccTh6lArNkzNSEsgr0kt3KJXymgJHXRNCmgJXym0ndLNqR4edwSgYmk86H3LmIGy4fgmkxpjlS6EsgrqmyXAqVr4GXNCmgJXymgJXOYsgt0xrqO9iipHwXBLPBYXymgJXW41togJHLimDZWgSynK3te5Qesx)8LlNqX51x(iCW4togJXymgjftjn8UKreedwJ(wKNKBFfbH2d9fTOtLStwpjJiiA7MCmgJXymskMsAWOC9KSWQ7jzebXG1OVf5j52xrqO9qFMqlQ1tYicI2UjhJXymgdDZGr56jzHv3tYicIHxEqVr4GXNCmgJXymgJXOrrn0dwdzypyuUEswy19KmIGyuRMCmgJXymgJXymgJklzmb9zcTOwpjJiALPBYXymgJXymgdJxp5ymgJXyy86jhJXymgdDZW7sgrqm8Yd6nchm(KJXymgJXymgvwYyc6lArNkzNSEsgr0kt3KJXymgJHXRNCmgdlry6MHnyXAiVNiYvjKobNpb1pF5QQKpchm(KJXymgJHUziMONKreos56jzrj7K1Q7gHdgFYXymgJXymgdhPC9KSW6jzerB3KJXymgJHXRNCmgdJxpPXR9RmrnEq4x1te5QesNGfKy6eHG9g9fMB0te5QesN3YjK(Ify0te5QesNJeKxuWcKtyUrprKRsiD9ZxUCcfNx)rprKRsiDcoFcQF(Yvvn6lOQkXcMUkAMGKn)kchuYUG4(veoOKDbXPptOf18d)QWePqgbR08WVkFI7tZe6xLuLAFH(vAUtkLKhFH(vUsPq7l0p8d)QOKmE4l0VYvkfAFH(HF4xvRBA0msPGwFH(vUsPq7l0p8d)kQcJ5l0VYvkfAFH(HF4x1uycTI7l0VYvkfAFH(HF4x5ruprjz8WxOFLRuk0(c9d)WVkkjJhzXxOFLRuk0(c9d)WVIsLmFH(vUsPq7l0p8d)WVkmrkKXrkEu0CxJh(vcsecRe7TC(vAEyu8sIgBueAf3pprMFvTMGgqIZeArn)Qsk5xvycTIt4l0VIikuHVq)QAfDUgbrXP5NTF4xP56WxOFvTIogjIq5671(vmseHY1VkPykPrTLTKZbRrtjrytMumL0qZO4Ett4jvO1BsuLqR4dwdr2KtMumL0OrIZeAfF40cXH5kGMN)wgfpkAUrXEqKur3KJXyqzHefFqyjJjAPryp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU9Kk8qh02YO4rrZnk2dIKk6MCmgdklKO4dclzmrBwyp6BHJu8OO5gL4WCfZBuTmkEu0CJI9GiPIUUjnE9KjftjnAK4mHwXhoTqCyU5vCTwgfpkAUrXEqKur3KJXyqzHefFqyjJjALH9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxH06XAzu8OO5gf7brsfDtogJbLfsu8bHLmMO1XL9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiom3kPSdA9yTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0sJWE03cXH5kM3OADAH4WCfqZZFlJIhfn3OypisQORRBsJxpzsXusJgjotOv8HtlehMRaMOwQLrXJIMBuShejv0n5ymguwirXhewYyIwAI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxACjjzTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kJmSh9TqCyUI5nQwNwiomxb0883YO4rrZnk2dIKk666M041tMumL0OrIZeAfF40cXH52tQK0bTTmkEu0CJI9GiPIUjhJXGYcjk(GWsgt0kYyp6BH4WCfZBuToTqCyUcO55VLrXJIMBuShejv011nPXRNmPykPrJeNj0k(WPfIdZnN3L0EeqXucTI3YO4rrZnk2dIKk6MCmgdklKO4dclzmrRxI9OVfIdZvmVr160cXH5kGMN)wgfpkAUrXEqKurxx3KgVEYKIPKgnsCMqR4dNwiomxXmkElJIhfn3OypisQOBYXymOSqIIpiSKXeTYqp2J(wiomxX8gvRtlehMRaAE(Bzu8OO5gf7brsfDDDtA86jtkMsA0iXzcTIpCAHxR51cP1J1YO4rrZnk2dIKk6MCmgdklKO4dclzmrRm0e7rFlehMRyEJQ1PfIdZvanp)TmkEu0CJI9GiPIUUUjnE9Kto5KjftjnCsvO1R0PWOgSgz9KJXyy8s2jREWAeusg7jhJXOrNcJAWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJHUz0syPMmgVKDYQ7gHdgFYXymgJXymgJIevHoJlAMAlBjNcOC2kVpvH2rJofgLJZGrXJIMBudwd5JmzgmkEu0CJAKjZqo7brsfdwd5Jmzgejv0n5ymgJXymgJrsXusdDyU9KkjDq7G1WPfIdZTNujPdABzu8OO5gf7brsfDtogJXymgJXyOBgT6WC7jvs6G2rHxp0H52tQK0bTdwSg0RBeoy8jhJXymgJXymgJXOirvOZ4IMP2YwYPakNTY7tvOD0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjtkMsA40kuELofg1G1iRNCmgdJxYoz1dwJGsYyp5ymg6KOjHoqzeoOs1dwdAiAo6XEYXymiSuYRv2G1OPKim2togJrJofg1G1OrIZeAfVLWsnShmkEu0CJI9GiPIUjhJXymgdDZOLWsnzmEj7Kv3nchm(KJXymgJXymgfjQcDgx0m1w2sofq5SvEFRqnA0PWOCCgmkEu0CJAWAiFKjZGrXJIMBuJmzgYzpisQyWAiFKjZGiPIUjhJXymgJXymskMsAOdZvatulnynCAH4WCfWe1sTmkEu0CJI9GiPIUjhJXymgJXymskMsAOdZ1R18AH06XgSgoTWR18AH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMRqA9ydwdNwiomxH06XAzu8OO5gf7brsfDtogJXymgJXyKumL0qhMBoVlP9iGIzWA40cXH5MZ7sApcOykHwXBzu8OO5gf7brsfDtogJXymgJXyOBgT6WCfsRhBu41dDyU58UK2JakMrHxp5ymgJXymgJrRomxH06XgSynKtFkxfL8jhJXymgJXymuudDyUcP1JnyXAix2SIhfx(KJXymgJXymgkQHom3CExs7rafZGfRHCX5rJf64fCo68kX51px(Kp5ymgJXymgJHIAOdZnN3L0EeqXmyXAixCE0yHoEbNJoH5tCE0O5ekFYXymgJXymgdf1qhMBoVlP9iGIzWI1qU48OXcD8cohDosabrFAu5togJXymgJXyOOg6WCZ5DjThbumdwSgYfNhnwOJxW5OlVCoIgvE3KJXymgJXymgfE9qhMRaMOwAu41dDyUETMxlKwp2OWRh6WCfWe1sdr(bHLAYOtIMe6aLr4Gkvpk86rRomxVwZRfsRhBWI1qMHIAqyPMmewk51kRRBeoy8jhJXymgJXymgJXWdLMhToTqCyU5vCTwgfpkAUrXEqKurx3KJXymgJXymgJXy4HsZJwNwiomxbmrTulJIhfn3OypisQORBYXymgJXymgJXymksuf6mUOzQTSLCkGYzR8(wHA0OtHrn8uiiK3n5ymgJXymgJXymguwirXhbLKn5ymgJXymgJHXRNCmgJXymmE9KJXyy86jZQjNmPykPrJeNj0k(OwvzPulJIhfn3OypisQOBYXymskMsAOdZvmJIpynCAH4WCfZO4TmkEu0CJI9GiPIUjhJXiPykPHom38kU2G1WPfIdZnVIR1YO4rrZnk2dIKk6MCmgJKIPKg6WC7jv4HoODWA40cXH52tQWdDqBlJIhfn3OypisQOBYXymskMsAOdZTNujPdAhSgoTqCyU9KkjDqBlJIhfn3OypisQOBYjhJXOirvOZ4IMP2YwYPakNTY9gvr21CNdnJIpAuud5Jmzg6WCZR4AJmzgYhYUoCy4DPssh0oKpYKzOdZTNujPdA7MCmgJKIPKg8IRjB6WbhPskQbRHCAq5JmzgfjQcDgx0mExQK0bTosLuue0G6WC7jvs6G2Hxyidn8itMHom38kU2itMHCAyhtMSqtuYNCmgJKIPKg8IRjB6WHEsfEOdAhSg8IRjB6WbhPskQrMmd5drs(itMHom3EsfEOdANCYXymksuf6mUOzQTSLCkGYzRC6tqODY1CNdEX1KpYKzWlUMSPdh6jv4HoOTBYXymksuf6mUOzkPerucJGgKMFrIQqNXfntjLiIsyedVWqgA4bRrwp5ymgJXyq4Gs2hSgbLKXEYXymgJXGXHc3PvpynckjJ9KJXymgJHMxBI0G1OVfc1UwBh7jhJXymgdkJqrfdwJGsYyp5KJXymgJHMrXhSg6WCfZO4SNCmgJXym4fxBWAWlUMSPdh6jv4HoOL9KJXymgJrXvjXJbRHom3EsfEOdAzp5KJXymgJHhkLtkJGqiTESbRH8q7A1Yzp5ymgJXyyIKhnvj0kUqTRnyn6BHqTR12n8cdnJI7nnHNuHwVjrvcTIZEYXymgJXOwIQeAfFWAOzuCVPj8Kk06njQsOvC2togJXymgfPqrZ012G1iOKm2togJrwn5KJXyiccZrkEu0CJsCyUTmkEu0CJI9GiPIUjnE9KtozrIQqNXfntJofgvLrjQMXgSgz9KJXy0OtHrrmynY6jhJXymgdNufA9kDkmk2togJXymgoTcLxPtHrXEYXymYk2togJbrsfecvcOuXG1iRZk2togJbLeFWA0iXzcTI3syPg2dgfpkAUrXEqKur3KJXymgJrrIQqNXfntTLTKtbuoBL7v6uyuAUZHom3HMpyu8OO5g1G1q(itMbJIhfn3OgzYmKZEqKuXG1q(itMbrsfJmzgYZKjJ8UjhJXymgdDZOLRIHtlehMRaAE(Bzu8OO5gf7brsfDDJWbJp5ymgJXymgJrrIQqNXfntTLTKtbuoBLxLuXWC9e0kVBYXymgJXymgdklKO4togJXymggVEYXymgJXOrrnYp7rJofg1qZhEkAkIwcl1KPrNcJIOBuRMCmgJXymgJXq3mAB0PWOO51OtHr1YO4rrZnk2dIKk66gHdgFYXymgJXymgJXymQvvwk1YO4rrZnk2dIKk6MCmgJXymgJXymgdklKO4togJXymgJXyy86jhJXymgdJxp5ymggVEYSAYjlsuf6mUOzQTSLCkGY5G1OrIZeAfVvLnnq3KJXyOBgT1w2so7gHdgFYXymgJXWdLMhT9TqO21A76MCmgJXym8MjQqLkrqN3KC90QYMgOBYXymgJXWdLMhTDtogJHXRN041tozrIQqNXfnJ3LkjDqRJujffXG1iRNCmgd5oMmzHMyAA8s1EPAVuTC2dzjRHGvkQjhJXqUJjtwOjMMMMMMMMg5ShYswdhPCDv8jhJXqUJjtwOjMMgzSMg6rp5ShYswdrWzuUUk(KJXyi3XKjl0ettd9Ohnc9QRLZEilznYxHYMCmgd5oMmzHMyAAkImrgnNzYzpKLSg58OzMCmgd5oMmzHMyAAAAOHOh9ONC2dzjRHaMtJxxOODYXymK7yYKfAIPPXCCzyOHONC2dzjRb9PcDtHjMCmgd5oMmzHMyAAOh9yyAAKZEilznOzMMkPuUtMv(HF4xrzo1kUqA9y(vAgf3VIl5kKs70Prr4NNm(vmkvQwj7CHMif54LStwTF2(vHjsHmELIh(v5ejpugbHSxO1VkmrkKXVsKl3Vsx7xrFPq1tYic)knxh0refQWQ9Ztg)kgLkvRKDUF2(HFfHFvwYqZLrMS4xjQFEYqtzrg)W3hadddd \ No newline at end of file diff --git a/LegionWA/BagBoEGlow/Event.lua b/LegionWA/BagBoEGlow/Event.lua new file mode 100644 index 0000000..365f687 --- /dev/null +++ b/LegionWA/BagBoEGlow/Event.lua @@ -0,0 +1,4 @@ +-- BAG_UPDATE +function(e) + aura_env.update() +end \ No newline at end of file diff --git a/LegionWA/BagBoEGlow/Init.lua b/LegionWA/BagBoEGlow/Init.lua new file mode 100644 index 0000000..15fa855 --- /dev/null +++ b/LegionWA/BagBoEGlow/Init.lua @@ -0,0 +1,23 @@ +local function getItemLink(container, slot) return select(7, GetContainerItemInfo(container, slot)) or "" end +local function getBindType(container, slot) return select(14, GetItemInfo(getItemLink(container, slot))) or 0 end +local function isBoe(container, slot) return getBindType(container, slot) == 1 end + +local showGlow = function(container, slot) + ActionButton_ShowOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end +local hideGlow = function(container, slot) + ActionButton_HideOverlayGlow(_G["ElvUI_ContainerFrameBag" .. container .. "Slot" .. slot]) +end + +aura_env.update = function() + for container = 0, 4 do + for slot = 1, GetContainerNumSlots(container) do + print(C_Item.IsBound(ItemLocation:CreateFromBagAndSlot(container, slot))) + if isBoe(container, slot) then + showGlow(container, slot) + else + hideGlow(container, slot) + end + end + end +end diff --git a/LegionWA/BagBoEGlow/README b/LegionWA/BagBoEGlow/README new file mode 100644 index 0000000..2bf5842 --- /dev/null +++ b/LegionWA/BagBoEGlow/README @@ -0,0 +1,18 @@ +Haven't found a way of determining whether an item is soulbound or not without tooltip scanning which I don't want to do + +local cTip = CreateFrame("GameTooltip","PrivTooltip",nil,"GameTooltipTemplate") +local function IsSoulbound(bag, slot) + cTip:SetOwner(UIParent, "ANCHOR_NONE") + cTip:SetBagItem(bag, slot) + cTip:Show() + for i = 1,cTip:NumLines() do + if(_G[name.."TooltipTextLeft"..i]:GetText()==ITEM_SOULBOUND) then + cTip:Hide() + return true + end + end + cTip:Hide() + return false +end + +Some guy says this is good \ No newline at end of file diff --git a/LegionWA/CDs/Color.lua b/LegionWA/CDs/Color.lua new file mode 100644 index 0000000..e9f9a16 --- /dev/null +++ b/LegionWA/CDs/Color.lua @@ -0,0 +1,20 @@ +function(progress, r1, g1, b1, a1, r2, g2, b2, a2) + -- if aura_env.state.IsActive then + -- ActionButton_ShowOverlayGlow(aura_env.region.icon) + -- else + -- ActionButton_HideOverlayGlow(aura_env.region.icon) + -- end + + if aura_env.statee.IsActive then + aura_env.region.icon:SetDesaturated(false) + return r1, g1, b1, a1 + end + + if aura_env.IsOnCooldown then + aura_env.region.icon:SetDesaturated(true) + return r1, g1, b1, a1 + end + + aura_env.region.icon:SetDesaturated(false) + return r2, g2, b2, 0.6 +end \ No newline at end of file diff --git a/LegionWA/CDs/Event.lua b/LegionWA/CDs/Event.lua new file mode 100644 index 0000000..5fc898d --- /dev/null +++ b/LegionWA/CDs/Event.lua @@ -0,0 +1,4 @@ +function(allstates) + aura_env.HandleEvent(allstates) + return true +end \ No newline at end of file diff --git a/LegionWA/CDs/Init.lua b/LegionWA/CDs/Init.lua new file mode 100644 index 0000000..a2e2f37 --- /dev/null +++ b/LegionWA/CDs/Init.lua @@ -0,0 +1,94 @@ +local CooldownType = { + New = function(self) + local o = {} + setmetatable(o, self) + self.__index = self + return o + end, +} + +local NullType = CooldownType:New() +NullType.GetActiveInfo = function(self) return false, 0, 0 end +local TotemType = CooldownType:New() +TotemType.GetActiveInfo = function(self) + for i = 1, 4 do + local present, name, start, duration = GetTotemInfo(i) + if present and name == self.name then return true, start, duration end + end + return false, 0, 0 +end + +local Cooldown = { + New = function(self, type, spellid, keybind) + local o = { + ["type"] = type, + ["spellid"] = spellid, + ["name"] = GetSpellInfo(spellid), + ["icon"] = GetSpellTexture(spellid), + ["keybind"] = keybind, + } + setmetatable(o, self) + self.__index = self + return o + end, + + GetCooldownInfo = function(self) + local start, duration = GetSpellCooldown(self.spellid) + return start > 0 and duration > aura_env.gcdThreshold, start, duration + end, + + GetActiveInfo = function(self) return self.type:GetActiveInfo() end, +} + +aura_env.cooldowns = { + [5394] = Cooldown:New(TotemType, 5394, "C"), -- Healing Stream Totem + [2484] = Cooldown:New(TotemType, 2484, "SY"), -- Earthbind Totem + [8143] = Cooldown:New(TotemType, 8143, "S5"), -- Tremor Totem + [8177] = Cooldown:New(TotemType, 8177, "5"), -- Grounding Totem + [108273] = Cooldown:New(TotemType, 108273, "S4"), -- Windwalk Totem + [108270] = Cooldown:New(TotemType, 108270, "SF"), -- Stone Bulwark Totem +} +aura_env.gcdThreshold = 1.5 + +aura_env.Update = function(allstates, cd) + local state = allstates[cd.spellid] or {} + + state.IsOnCooldown = cd:GetCooldownInfo() + state.IsActive = cd:GetActiveInfo() + state.Keybind = cd.keybind + + if state.IsOnCooldown and not state.IsActive then + local _, start, duration = cd:GetCooldownInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + elseif state.IsOnCooldown and state.IsActive then + local _, start, duration = cd:GetActiveInfo() + state.progressType = "timed" + state.duration = duration + state.expirationTime = start + duration + end + + state.changed = true + state.show = true + state.name = cd.name + state.icon = cd.icon + state.spellid = cd.spellid + allstates[cd.spellid] = state +end + +aura_env.UpdateAll = function(allstates) + for _, v in pairs(aura_env.cooldowns) do + aura_env.Update(allstates, v) + end +end + +aura_env.HandleEvent = function(allstates) + -- TODO: Handle events better + -- On cooldown begin -> trigger update on relevant spell + -- On totem die -> same + -- On buff remove + -- On debuff remove + -- On... Whatever else might happen + aura_env.UpdateAll(allstates) +end diff --git a/LegionWA/CooldownAlert/Event.lua b/LegionWA/CooldownAlert/Event.lua new file mode 100644 index 0000000..2ff9c4d --- /dev/null +++ b/LegionWA/CooldownAlert/Event.lua @@ -0,0 +1,5 @@ +-- ACTIONBAR_UPDATE_COOLDOWN +function(allstates, e) + aura_env.processEvent(allstates) + return true +end \ No newline at end of file diff --git a/LegionWA/CooldownAlert/Export b/LegionWA/CooldownAlert/Export new file mode 100644 index 0000000..3647397 --- /dev/null +++ b/LegionWA/CooldownAlert/Export @@ -0,0 +1 @@ +dWunqaGiksXNukknksWPiHEffjYSOsDlsXUKcdJq1XeOLrI8mLsMgfX1irTnLs9nbW4ukY5uvyEuKKUNu0(OijoOaAHckEOsHjQu1ffuAJQkYhjuAKcqNuvPvssVKIe1mPOKBsrsTtcPFkOAOuu0sje9uHMkvCvksvBLIu6RuKkRLIe6TekUlHWEL8xvjdgDyIwSsr1JPWKj4Yk2mvYNvfJwv1Pf1QvkkEnfvZMs3MuA3I8BLmCP0YPQNlvtxLRtQ2UG8DLkJxvrDEvPwpfj49uu4(uuQ9dxblNkklN6QyVIk1q5gbvstqL188HjBVTrWpQO2kkurHYPIp(1UkgWWf5xtXWf1jqZQIc5(MrpzC5qtfLwBfLgxo044ZppJ3uVeMsunbfVI9wPXuIkEf7J1LzUYPRIMvy)Ktf)N8Z)vF6dXfpab)WKpu(JaeGT2(JTlxAmz7kAxsHYPIN0oPtPYPIA1TxUCQRUkEs7KUYPIA1TxUCQRUk6x2PCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI50JFP3wovuRU9YLtD1vX2qTN0oPRCQOwD7LlN6QRIUKgxELkNkQv3E5YPU6QOEFEzyL9ET51vrzkRvEtfMk6NN8k58UDQOW7KuB24XV0BR485wzsyeQWuXZNFEgF5uX()Ax4Pk2)x7cpfOXLdn1vXSqf3yTScRDPaTJ)eRFP3wXC6gFsAnTJVNxPs0TQ4USW9xFYeLfFRTfpyacGjBsztcAIjLlnMOCft6AD85NNX3lrdwXCkFV6N0FJqjAW6QOr5uIgSCQ4nF(c(Pv6IztHPenakvrPXLdno(8ZZ4n1lHPevtqXRO04YRuVCQyoLVYPIcRxg69BPTctfn073sBfL6E5RjfQX5LgMpcX2XA7GnbndOccccQK4kfGGUb1Obuvx4z0oPdQGGGGkTTYbyl3GA0aUXk1hdV8YReubbbbvs8pusCLCdQrdyyFpGlxGoV9qfeeeuPGBTTYk5guJgWaktcGlxG3)aAM(1ng3YdvqqqWTc(Xwk7guJgWadnPNXVz7GX)8yfGkiiiOYBTT4I7guJgW4FEScGlxG3)akY8Z)nl9oubbbbdkUjM4guJgWaktcGlxGFYpJWslubbbbdQSYbnrz3GA0agO3qMgqNL3pPdQGGGGBs5TCdQrdyaLA1oEWLlqv9(LngOccccU9hMiUBqnAadOmjaUCbgLg(SRSXavqqqWTcUjLf3nOgnGb6fM0bUFCnjHXdvqqqWnT92k)HBqnAafRU0lKLjWLlWatg5jDGMY50thQGGGGkjUjIhCtUb1Obmm2P3ZPhWLlWy7yT7KEHC6bQMnuTldPfmBSs7Z9wR89EDV8YReytqXBycuTldPf8XqyVUxE5vcSjyWgkdvOk19YxtkuJDlV57LNeSjOzy2q11YdAUBWE7yTFfaZjWwz23vqQ7LVMuOgNxAy(ieBhRTRiOWcQGGGGsDV81Kc1y3YB(E5jftVDS2VcIaSjOzavqqqqqqqq)ifEd2e886JBOcccccccc(l7B8l9pthSjOlPTpUHkiiiOzdvqqqWSlqXoxSDS2n(L(NPRqVDS2VckcE)tcQGGGGGGGGsDV81Kc1y3YB(E5jftVDS2VcIOXVSVXV0)mDWMGNxFGkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjyFSJXPqq3GIDUy7yTB8l9ptxHE7yTFfuurOccccojbOojbOcvPUx(AsHA06xgtVh2qt6aBc6spzC5vsbP12p5nDfHkiiiORLh0C3G92XA)kaMtGTYSVRGu3lFnPqnoV0W8ri2owBxrqHfubbbbbbbb1ObmGYKGDa7TJ12b3LVFqJFP)z6qfeeeeeee0UmKwWCxKJu4nubbbbbbbbZUavqQ7LVMuOg7wEZ3lpPy6TJ1(vqen(L9n(L(NPRi49pjOccccccccccccAxgslOXV0)mDWMG9XogNcbDdk25ITJ1UXV0)mDf6TJ1(vqrfHkiiiiiiiiiiiy2fOcg)s)Z0bnvaL6E5RjfQXUL389YtkME7yTFferdJFP)z6kcE)tcQGGGGGGGGGGGGGGGG5UihPWBWMGNxFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOcccccccccccco2(avqqqqqqqqqqqqqqqWCxKJu4nytqxsBFGkiiiiiiiiiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiAy8l9pthSjOXV0)mDOccccccccccccojbOcccccccco2(avqqqqqqqqqqqWCxKJu4nytW(yhJtbLCdk25ITJ1UXAzfw7sk0BhR9RGIkcAQc(yiSx3lV8kbvqqqqqqqWjjavOcvqqqqqqqWSlqfsRduQ7LVMuOg7wEZ3lpPy6TJ1(vqen8Ju4nOmjaM7ICKcVve8(NeubbbbbbbbbbbbTldPfmBSsGnb7JDmof2YnOyNl2ow73KRLc92XA)kOOIqfeeeeeeeeeeeuAT9tEtxm92XA)kicWMGMbubbbbbbbbbbbbbbbb7)RDGnbpV(4gQGGGGGGGGGGGGGGGGg)Y0Zia2e886JBOccccccccccccccccMtcZNbBck25CYAhfu0nubbbbbbbbbbbbbbbb9tF5pWMGNxFCdvOccccccccccccccccMnwjWMGzJvYnuHkiiiiiiiiiiiiiiiyRF94NE35D7a2e00CzTJGPXnubbbbbbbbbbbbbbbbNp3M9YlVsozTdytqXoNtw7OGIGMsGzJvAFU3ALV3R7LxELCdvqqqqqqqqqqqqqqqqbDV8YReytWSXkTp3BTY3719YlVsUHkiiiiiiiiiiiiiiiOu)wbmlmGnbpV(4gQGGGGGGGGGGGGMnubbbbbbbbNKauHkiiiiiiiOu3lFnPqn2T8MVxEsX0BhR9RGiA4hPWBWMG5UihPWBOccccojbOojH6QRI385lyytYn3oc1MxrzkRvE5vQCQORCk3)lNkEVBNk26N(CvS1p95QOlPWuxDv885NNXxov8E3ov0qVFlTvCcnPRxXa3W5B4IgMaf5ltVzUpqNW(AJWd3S2hUPt0kAO3VL2kQrdyGB48nCrdtGI8LP3m3hOtyFTr4HBw7d30jkuDPNmU8kPG0A7N8MUBWrrOcccck19YxtkuJw)Yy69WgAsNcsRTFYB6kcvqqqq)C6(e451hOojHk2)x7cpvX()Ax4PanUCOPIg)JH5vCcnPRIg69BP919UDQy)K3O3kiVPUk(p5N)RenOsBQI2LuOCQ4jTt6uQCQOwD7LlN6QRIN0oPRCQOwD7LlN6QRIczxUYg627D5urT62lxo1vxf9sJPCQOwD7LlN6QRI(LDkNkQv3E5YPU6QyBO2tAN0vovuRU9YLtD1vXC6XV0BlNkQv3E5YPU6QOlPXLxPYPIA1TxUCQRU6QyoDJpjTM2X3ZRuj6wvui33m6jJlhAQO0AR4JDTRctf9ZtELCE3ovmBSsvmPR1XNFEgFVenyf3LfU)s0GkTPkMfQ4gRLvyTlfOD8xfnw2LVCkrnPev8gkxxD1vXqLObnrPG1vf \ No newline at end of file diff --git a/LegionWA/CooldownAlert/Init.lua b/LegionWA/CooldownAlert/Init.lua new file mode 100644 index 0000000..23948ae --- /dev/null +++ b/LegionWA/CooldownAlert/Init.lua @@ -0,0 +1,72 @@ +aura_env.trackedSpells = { + 20271, -- Judgement + 26573, -- Consecration + 209202, -- Eye of Tyr + 213652, -- Hand of the Protector + 31935, -- Avenger's Shield + 53600, -- Shield of the Righteous + 1044, -- Hand of Freedom + 155145, -- Arcane Torrent + 853, -- Hammer of Justice + 6940, -- Hand of Sacrifice + 31850, -- Ardent Defender + 86659, -- Guardian of Ancient Kings + 204018, -- Blessing of Spellwarding + -- + 108416, -- Dark Pact + 196447, -- Channel Demonfire + 104773, -- Unending Resolve + 196586, -- Dimensional Rift +} +local iconDisplayDuration = 0.4 +local gcdDuration = 1.5 + +aura_env.cache = {} +for k, spellId in pairs(aura_env.trackedSpells) do + aura_env.cache[spellId] = { + ready = true, + hasCharges = false, + } + if GetSpellCharges(spellId) then + aura_env.cache[spellId].hasCharges = true + aura_env.cache[spellId].charges = select(1, GetSpellCharges(spellId)) + end +end + +aura_env.processEvent = function(allstates) + for k, spellId in pairs(aura_env.trackedSpells) do + -- Handle spells with charges + local isReady + if aura_env.cache[spellId].hasCharges then + local charges = select(1, GetSpellCharges(spellId)) + if charges > aura_env.cache[spellId].charges then + isReady = true + aura_env.cache[spellId].charges = charges + else + isReady = false + aura_env.cache[spellId].charges = charges + end + else + isReady = select(2, GetSpellCooldown(spellId)) < gcdDuration + end + + if not aura_env.cache[spellId].ready and isReady then + local icon = select(3, GetSpellInfo(spellId)) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = icon, + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + end + + aura_env.cache[spellId].ready = isReady + end +end diff --git a/LegionWA/DebuffAlert/Event.lua b/LegionWA/DebuffAlert/Event.lua new file mode 100644 index 0000000..73b21fb --- /dev/null +++ b/LegionWA/DebuffAlert/Event.lua @@ -0,0 +1,28 @@ +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local iconDisplayDuration = 0.5 + + local se = select(2, ...) + if (se ~= "SPELL_AURA_APPLIED") then return end + local target = select(9, ...) + if (target ~= UnitName("player")) then return end + local auraType = select(15, ...) + if (auraType ~= "DEBUFF") then return end + local spellId = select(12, ...) + print(select(3, GetSpellInfo(spellId))) + allstates[spellId] = { + show = true, + changed = true, + index = GetTime(), + resort = true, + + icon = select(3, GetSpellInfo(spellId)), + name = select(13, ...), + + progressType = "timed", + expirationTime = GetTime() + iconDisplayDuration, + duration = iconDisplayDuration, + autoHide = true, + } + return true +end \ No newline at end of file diff --git a/LegionWA/DruidEnergyBar/Export b/LegionWA/DruidEnergyBar/Export new file mode 100644 index 0000000..4f596a5 --- /dev/null +++ b/LegionWA/DruidEnergyBar/Export @@ -0,0 +1 @@ +dSeIxaGivq1LuevnkkLYPOuIvPiQmlKQu3sfyxivXVubfdtv6yc1YKcptkzAuLUgLITrvfFtvOghsvDofHwNIaUNIGoOQilKs1dvvAIQI6IsrBuf5JivjgPQq6KQQALQGmtfrUPkQ2jf)ePYqvfCuvHyPQO8uutvsxLQQ2kLs6RkIYyveiNfPkP1QiqnxvqP9c)vfAWk0HjzXkQhtjtgjxw0MrkFwiJMQ40KA1ukvVwk1SLQBRGDl43igUeTCLEovMoX1vPTRi9DvvgVQIZtvz9uvP9lHrmQGvOcbSdCd6Xg6jUXbX2Cq0e96h)yfprWdGPatHkyF0rJMlfyoiM(VGvwIEAwxDuuUNtOsyEbNFkvbQKc2bVzKMeQ(ktWrl5wcwhKCdQUTMRttcW0cSl70EGOdcy70vR0D(KAEQcwtbUzi3iF2vBn)ifJ0ll5wcwwDuuUOc25H8JUayNhYp6cpzj6PjeWH7qD1rr56GjgCNOOqfSoeTKBjQGhUDrJkeiGfvpdcQGhUDrJkeiGT6kNdvWoDiQNGF(m)))meWLtlfvpdcQGhUDrJkeiGVU8Ovx5CGL9MGxLvIk4HBx0OcbcyknnAARBx8Hk4HBx0OcbcyAklrtcOcE42fnQqGaEj9evWd3UOrfceWIQNbPbQGhUDrJkeiqGa2cvyIrfSRuTTNmnL4bM4xWorz12XA)MWe3aStuwTDN6QihydjKGNjlvUFjDYIkmXW8ctdyEHPfmVW4fMyiGxIOKSMFeWg6mnbpRSAhTKBG6lPtwuHjgMxyAaZlmTG5fgVW8sp2abmnsqo1vroW05FDs)nnbRTiHJwKozrfMyyIHPbmXW0cMyy8ctmeWZQ9lPtwuHjgMyyAatmmTG5fgVWedbmv6uYDvsIzWLljAtN7HnT0onjaZlyAKGaU5NYnDUFkFGDLQTnD0O5sHEfMxWDIIcvW6q0sULOcE42fnQqGawu9miOcE42fnQqGa2QRCoub70HOEc(5Z8))ZqaxoTuu9miOcE42fnQqGa2vMwOc2Pdr9eMgqatPPrtBD7IpubpC7IgviqaVKEIk4HBx0Ocbc4vzLOcE42fnQqGa(6YJUY0c2blQEgKgOcE42fnQqGaMMYs0KaQGhUDrJkeiGVU8Ovx5CWoeWIEi3VKozrfMyyIHPbmXW0cMyy8ctmeWxx(eLTFDssLuNRdyg8MrAsO6Rmbl5hbStuwTDygSKFK7MGB2N6))Irdzhal5h5ejiGpTA)wm(ixf1QevXyTc2vQ2218JC3e8)GKlnLvEy)QCIoezxThw))FWxLt0Hi7Q9aUuTTb7kvBBmdw0d5EIeeWNwTFlgFKRIAvIQySwbR6LEuWedEMSu5(p4sbMyWs(r(s6KfvyIHjgMgWedtlyIHXlmXqaptwQCTRSAtTKsWn7t9)FXO9Uk0gmL2z73GLONMGv9oyLLONM1vhfL75eQeMdIFbtPDLDLVA(rMustap5dGNjlvU0rJMlfyEbRdA5OtuRKuWedwhKCdQUTMRttcW0c8SYQn1sk)hoTKGGzWYQJIYfvWIVYeStuY1b(gYPzqaRUcb81LhvZoYoFoHkHDW50miGFG8lxWxxE8g0cSdUK8lxXxzctlWxxESK8lxXxzc7qal5hbZGd3H6QJIY1btmyNOTA7757QenjGzWQGLhYEAvdz1xzcMBoPMFRNo7PZBcw0d5YA)MWe3aSOhYfZGf9qUN6QihydjKG9K6ipco51M3w(51gBA1yI28Atd6dAh49XGDLQTT9EgOoNqLGF65NbFD5tu2(1jjvsDU6dMbtJeew73eMwnaRPa3mKBKp7QTMFeWQRqGDWUs12(mIOenjaZl4zYsLlSdwfS8q2tRAipTQHe8KLQ2pDxLBc0mKBKp7QfSRuTT)s6KfvyIHjgMgWedtlyIHXlmXqaptwQC)hoTKGa7GL8JCQRICGnKqcwBrchDAQe8z)PxE0kyxPABthnAUuMGG5fS2IeWmyxPAB)OPoYJatRxWs(ryTFtyIBaEMSu5YA)MW4fStuwTDFjDYIkmXWedtdyIHPfmXW4fMyiGP0UYUYxn)iNPJ8iGN8LGNjlvUnPIsWXfJpO)KDWUs12(r1uuzaSPPT28mWZkR2ulP8lPtwuHjgMyyAatmmTGjggVW8cbmTvnKSSkrbJnG)PPep40JTzItK(nSXRxVtSXeTPLFaTd8sFWUs12(mIOenjCoHkb)K)v6a7YoThi6Ga(BttT5zG1HP56smd2vQ22pNoLC3eZGjRodIs0Ka4hLUZ(pbtNP(0Ka7xczaMxWorz12DIeeWNwTFlgFKRIAvIQySwHatdubptwQC)s6KfvyIH5fMgW8ctlyEHXlmXqaRTibmdMgjiN6Qihy68VoP)MMGNv7xsNSOctdyIHaUCjrB6CpSPL2PjbyEb3jkkubRdrl5wIk4HBx0Ocbcyr1ZGGk4HBx0OcbcyRUY5qfSthI6j4NpZ))pdbSO6zqAGk4HBx0OcbcyxzAHkyNoe1tyAabmLMgnT1Tl(qf8WTlAuHab8s6jQGhUDrJkeiGxLvIk4HBx0Ocbc4Rlp6ktlyhmnLLOjbubpC7IgviqaxoTuu9miOcE42fnQqGa(6YJwDLZb7qaVzKMeQ(ktWQ7QMvlyNOSA7Wmyj)i3nb3Sp1))fJgYoaEMSu5(p4sbMyWuANTFdwIEAcwf8bwzj6PzD1rr5EoHkH5G4xW6GKBq1T1CDAsaMwGL8JGzWEsDKhbg)8cw0d5IzWZkR2ulP8lPtwuHXlmVqaptwQCHDWZKLk3Murj44IXh0FYo4zYsLRDLvBQLucUzFQ))lgT3vH2GLvhfLlQGfFLjyNOKRd8nKtZGawDfc4RlpQMDKD(Ccvc7GVU8OZd53xItGDWxxE8g0cSdUK8lxXxzctlWopKF0fa78q(rx4jlrpnbFD5XsYVCfFLjSdoNMbb8dKF5cbSIIslAsq1pkRokkxhQqatBvdjlRsuW4f8pnL4bMw28cEMSu5YA)MW4fSMcCZqUr(SRwWH7qD1rr56GjgSoOLJorTssbtm4zYsLlD0O5sbMxiW0cvWZKLk3VKozrfMyyEHPbmVW0cMxy8ctmeWAlsaZGPrcYPUkYbMo)Rt6VPj4z1(L0jlQWeJtETPrCd)8s)3gTE8eF8eBbAhyJFGPbo94gEJFPF8JTPf9JJBrF)aAhytlyAbtmeWLljAtN7HnT0onjaZl4orrHkyDiAj3subpC7IgviqalQEgeubpC7IgviqaB1vohQGD6qupb)8z())ziGlNwkQEgeubpC7Igviqa7ktlub70HOEctdiGP00OPTUDXhQGhUDrJkeiGxsprf8WTlAuHab8QSsubpC7IgviqaFD5rxzAb7GfvpdsdubpC7IgviqattzjAsavWd3UOrfceWxxE0QRCoyhc4nJ0Kq1xzcwDx1SAb7eLvBhMbl5h5Uj4M9P()Vy0q2bWQEPhfmV0JFaptwQC)hCPatmykTZ2VblrpnbR6DWklrpnRRokk3Zjujmhe)cwhKCdQUTMRttcW0cSS6OOCrfS4Rmb7eLCDGVHCAgeWQRqaFD5r1SJSZNtOsyh81LhDEi)(sCcSd(6YJ3GwGDWLKF5k(kty8c25H8JUayNhYp6cpzj6Pj4Rlpws(LR4RmHDW50miGFG8lxiGL8JGzWQGLhYEAvd5PvnKGNSu1(P7QCtGMHCJ8zxTGNvwTPws5xsNSOcJxyEHaw0d5IzW)0uIhyA5Tb4zYsLBtQOeCCX4d6pzh8mzPY1UYQn1skb3Sp1))fJ27QqBWAkWFjdZe7Qf8SYQD0sUbQVKozrfgVW8cbmTvnKSSkrbJxWQGLhYEAvdz1xzcMBoPMFRNo7PZBcEMSu5YA)MW4fSNuh5rGXMgGd3H6QJIY1btmyDqlhDIALKcMyWZKLkx6OrZLcmVqGXlQG9rhnAUuG5G4wGNjlvUFjDYIkmXW8ctdyEHPfmVW4fMyiGNvwTJwYnq9L0jlQW4fMxiGPrcYPUkYbMo)Rt6VPj4z1(L0jlQWeJt0N(TETH(p2MxV(Xl9FB9cAhytlyAGt2mXwEJTXl9FBf3OL3hhdAhyJnW0cMyiGlxs0Mo3dBAPDAsaMxWDIIcvW6q0sULOcE42fnQqGa(6YJHCAUWoyr1ZGGk4HBx0OcbcyRUY5qfSthI6j4NpZ))pdb81LhT6kNd2b7ktlub70HOEctdiGP00OPTUDXhQGhUDrJkeiGxsprf8WTlAuHab8QSsubpC7IgviqaFD5rxzAb7GPPSenjGk4HBx0Ocbc4YPLIQNbbvWd3UOrfceWIQNbPbQGhUDrJkeiqaVzKMeQ(ktWQ7QMvlyNOSA7Wmyj)i3nb3Sp1))fJgYoaw1l9OG5LE8d4zYsL7)GlfyIbptwQCTRSAtTKsWn7t9)FXO9Uk0gmL2z73GLONMGv9oyLLONM1vhfL75eQeMdIFbRdsUbv3wZ1PjbyAbwYpcMbptwQCBsfLGJlgFq)j7G9K6ipcmn8d4zLvBQLu(L0jlQW4fMxiGvblpK90QgYQVYem3Csn)wpD2tN3eS2IeWmyvWYdzpTQH80QgsWtwQA)0DvUjqZqUr(SRwWIEixmdwtbUzi3iFpK7tZ6Uw8zxTGPTQHKLvjky8c(NMs8atlVnalRokkxubFD5r1SJSZNtOsyh81LhDEi)(sCcSdUK8lxXxzcJxWxxESK8lxXxzc7GTUoHmC0JMkbBDDczaS4RmbBDDczaS11jKHJIVYeCondc4CAgeWpq(LlyRRtidpFxLOjbW0Ublrtc2MTuCOIXIXIXIXoXs1lgZqUr(kgNWIr)dA5bYVCTTdVSR8L7HBlfhQySySySyStSu9IXq(rQE205H0PyrTsX4ewmoOep0dToHS2wgYnYxX4HPy07RTumo5kg9(wCOIXIXIXIXoXs1lgd5hP6ztNhsNQzGQyCclghuIh6Xk1DBld5g5Ry8Wum691wkgNCfJEFlouXyXyXyX4MYDdfJzi3iFfJhumgYps1ZMopKoflQvO3fJH8Ju9SPZdPt1mqvmEqXyi)ivpB68q6uSOwHExmgxCOmqb266eYayA3GLOjbBlP3fJIAJsXwkouXyXyXyXOMwXOTjQnkLIXjCclgp8YUYxUhUTumkEYqXHkglglglglglglglg3uUBOyu2BwCOIXIXIXIXmqvCOmqboNMbXb2FZ)6XhOBYAE2XtN18r8VPPc25H8JUayNhYp6cpzj6Pj4BiNMbbS6keWxxE8g0cSdb8mzPYL1(nHXl4WDOU6OOCDWedEMSu5shnAUuG5fceWtHj2BJyiaa \ No newline at end of file diff --git a/LegionWA/HealerRaidDanger/color.lua b/LegionWA/HealerRaidDanger/color.lua new file mode 100644 index 0000000..c39c6bf --- /dev/null +++ b/LegionWA/HealerRaidDanger/color.lua @@ -0,0 +1,5 @@ +-- DevTools_Dump(aura_env.region) +-- aura_env.region:SetParent(aura_env.state.frame) +aura_env.region:ClearAllPoints() +aura_env.region:SetPoint("TOPLEFT", aura_env.statee.frame.AuraWatch, "TOPLEFT", 0, 0) +aura_env.region:Show() diff --git a/LegionWA/HealerRaidDanger/init.lua b/LegionWA/HealerRaidDanger/init.lua new file mode 100644 index 0000000..e7ae308 --- /dev/null +++ b/LegionWA/HealerRaidDanger/init.lua @@ -0,0 +1,27 @@ +local raidFrames = ElvUF_Raid +local group1, group2, group3, group4, group5, group6 = raidFrames:GetChildren() +local groups = { group1, group2, group3, group4, group5, group6 } +aura_env.players = {} +for _, group in ipairs(groups) do + local playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 = group:GetChildren() + local playerFrames = { playerFrame1, playerFrame2, playerFrame3, playerFrame4, playerFrame5 } + + for _, player in ipairs(playerFrames) do + if player.Name:IsVisible() then aura_env.players[#aura_env.players + 1] = player end + end +end + +local specs = { + -- We can't get unit spec.......... + -- Best we can do is class + -- That fucking sucks +} + +aura_env.Player = { + new = function(self, player) + setmetatable({}, self) + self.frame = nil + self.danger = 0 + return self + end, +} diff --git a/LegionWA/HealerRaidDanger/tsu.lua b/LegionWA/HealerRaidDanger/tsu.lua new file mode 100644 index 0000000..0bf8dda --- /dev/null +++ b/LegionWA/HealerRaidDanger/tsu.lua @@ -0,0 +1,22 @@ +-- TSU +function(allstates, e) + if aura_env.players == nil then + aura_env.players = {} + end + + for _,player in ipairs(aura_env.players) do + allstates[player.Name:GetText()] = { + show = true, + changed = true, + name = 0.13, + frame = player, + icon = player.RaidIcon, + progressType = "static", + value = 1, + total = 1, + autoHide = true, + resort = true, + } + end + return true +end \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Event.lua b/LegionWA/NearbyPlayers/Event.lua new file mode 100644 index 0000000..36dcc6d --- /dev/null +++ b/LegionWA/NearbyPlayers/Event.lua @@ -0,0 +1,7 @@ +-- COMBAT_LOG_EVENT_UNFILTERED +function(allstates, e, ...) + local caster = select(6, ...) + local target = select(10, ...) + + aura_env.processEvent(allstates, caster, target) +end \ No newline at end of file diff --git a/LegionWA/NearbyPlayers/Init.lua b/LegionWA/NearbyPlayers/Init.lua new file mode 100644 index 0000000..0c65dd5 --- /dev/null +++ b/LegionWA/NearbyPlayers/Init.lua @@ -0,0 +1,83 @@ +if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end +if not WeakAurasSaved.Cyka.Cache then WeakAurasSaved.Cyka.Cache = {} end +if not WeakAurasSaved.Cyka.Cache.PlayerInfo then WeakAurasSaved.Cyka.Cache.PlayerInfo = {} end + +local allianceRaces = { + "Draenai", + "Dwarf", + "Gnome", + "Human", + "Night Elf", + "Worgen", +} + +PlayerController = { + nearbyPlayers = {}, + addPlayer = function(self, name) self.nearbyPlayers[name] = Player:New(name) end, + getPlayers = function(self) end, + process = function(guid) + if self.nearbyPlayers[guid] == nil then + self.addPlayer(guid) + else + end + end, +} + +Player = { + guid = nil, + lastSighted = nil, + info = nil, + update = function(self) self.lastSighted = GetTime() end, + getFormatted = function(self) + -- Color by class + -- Format time + return info.name .. " " .. self.lastSighted + end, +} +PlayerInfo = { + class = nil, + race = nil, + name = nil, + isHostile = nil, +} + +function Player:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + o.guid = guid or "" + o.lastSighted = GetTime() + o.info = PlayerInfo:New(guid) + + return o +end +function PlayerInfo:New(guid) + o = {} + setmetatable(o, self) + self.__index = self + + local info + if WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] then + info = WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] + else + info = GetPlayerInfoByGUID(guid) + WeakAurasSaved.Cyka.Cache.PlayerInfo[guid] = { + class = info.class, + race = info.race, + name = info.name, + isHostile = allianceRaces[race] ~= nil, + } + end + o.class = info.class or "" + o.race = info.race or "" + o.name = info.name or "" + o.isHostile = info.isHostile or true + + return o +end + +aura_env.processEvent = function(caster, target) + PlayerController:process(caster) + PlayerController:process(target) +end diff --git a/LegionWA/SoTR Counter/Event.lua b/LegionWA/SoTR Counter/Event.lua new file mode 100644 index 0000000..82928e4 --- /dev/null +++ b/LegionWA/SoTR Counter/Event.lua @@ -0,0 +1,8 @@ +-- SPELL_UPDATE_CHARGES +function(e) + local charges = aura_env.getCharges() + if (charges ~= aura_env.currentCharges) then + aura_env.currentCharges = charges + return true + end +end \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Export b/LegionWA/SoTR Counter/Export new file mode 100644 index 0000000..89160e3 --- /dev/null +++ b/LegionWA/SoTR Counter/Export @@ -0,0 +1 @@ +diuwfaqjvsQrPeoLs0RuiXSak1TOGDbOgMkXXiPLrWZuPMgqUMsABa8ncvJJICoOQUhG4GuuTqvs5HqPjQsQUOc1grcFeQIrcu1jbkzLuOxQscZKIYnvjr7Kq(jqLHIeTuGINs1uv0vbK2QkjzVs)fjnyqhwPEmetMexwyZk4Zi1OPuNMOvRqQMnKUnLSBe)wKHdflNupxfth11f12HkFhQsJxH48ekRxHKMVcPSFvDv7SUvDL6kDwpLzujjQpbpyH9kahqNMbwIgxxrEg9mbHL4I6Bu06kYdg0TyZyeU(vJuhjF4K1mgHRpKjiSmrwS8n(Wh(WhQdoRjpCN1BQbbhW0bJ1ERPJZILVXGOuFJWsCXulPPd9vMuIkYG6L6i5dNSMXimqXOS5OEGliC9ncltKtN1Lej3zDLevK8Htw9A1rYhozvFN1BQbbhW0bJ1ERPJZdbYdhYeewMilw(gF4dF4d1bN1KhEc0aHxOc2pepb7ycuuS2BnDCwSEd4YLLlFJbrPC56schAYg9Qc9rMiv0D9tGoqzss46yhlAogm1zTKMo0DwNfdtuhjF4KvDLSEZYeP(fGVRJKpCYQUbdp0PCSzMrfOuEDZNJPIf8Mdg8m2FJdzccltKfXY34dF4dFiAczJ(qe7TMoopeipCN1BQbbhW0bJ1ERPJZILVXh(Wh(q5WdxGyV10X5H)ObKhUZ6n1GGdyKSwhegR9wthNLpKTdYB8Hp8Hp8Hp8HpCN1BQbbhWizToimw7TMoopeipeXERPJZB8Hp8Hp8Hp8HpuhCwtEiRZXB8Hp8HpmikVXGOuhjF4Kfvwmmr9axq46h7eEbhP(XoHxWrmhHL4I6bUGWN6oLJnZmQaLYRB(CmvSG3CWGNXEDK8HtwuTLkrDwAfkLRJrNO1X5qPoqKhzIurxQpKiCDSjIsqoHYdVwcv5Hlgb7Cuww3oK02CPWKjaaab4ca8faa62eOlDWaO16OPTsN15nAqyHoRBLrzzNLlxN3ObH7SUvgLLDwUCDf5WGejJYI1zDRmkl7SC566ns0zDRmkl7SC566eA0zDRmkl7SC56yWHH3ObH7SUvgLLDwUCDjHwNYy6SUvgLLDwUC9HncltKoRBLrzzNLlxU(qIWUCuJksW0L66GwMitXWe15yeUUuPUBlduLhMgEiBhpemsABos5ZdXMYeo01XRuHTlfIlasC8nbc0ft34VkU4a6GbqaQJKqt6oRi1sbavtQGuvfwVfwVbii0bdR3vKqPaGQjvqQQcR3cR3aee6GH17k6Uuaq1KkivvH1BH1BaccDWW6DfbQuScAvqae(IlCVcWKQGPoyy9UCDs2AQL00H(urQ13eP1MLjsN1hKe5XUZ6SyyI6y0Xj46y0Xj46dBLOC5Y1p1faEfyvbdQRgOXheaaiQ4xhxfPcsqTCl \ No newline at end of file diff --git a/LegionWA/SoTR Counter/Init.lua b/LegionWA/SoTR Counter/Init.lua new file mode 100644 index 0000000..a2501a6 --- /dev/null +++ b/LegionWA/SoTR Counter/Init.lua @@ -0,0 +1,3 @@ +aura_env.getCharges = function() return select(1, GetSpellCharges(53600)) end + +aura_env.currentCharges = 0 diff --git a/LegionWA/SoTR Counter/Text.lua b/LegionWA/SoTR Counter/Text.lua new file mode 100644 index 0000000..ef31c66 --- /dev/null +++ b/LegionWA/SoTR Counter/Text.lua @@ -0,0 +1,3 @@ +function() + return aura_env.getCharges() +end \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Export b/LegionWA/SoTR Texture/Export new file mode 100644 index 0000000..dc42912 --- /dev/null +++ b/LegionWA/SoTR Texture/Export @@ -0,0 +1 @@ +diuSiaGirLUevLyuQqoLkOzjfLBjv1UubgMk6yuQLjvEgQyAk4AsPTPs6BiyCsHZrv19qO6GiKfsvP8qvkmrujLlkQWgvjojQK0krLAMQq5MOsStf6NuvmurfTuPipvyQiDvvkARQq1xrLunxek7L8xvknyuoSIwSuu9yrzYi6YkTzk5ZuLrdWPv1QPQu9AQkPzlXTrv7MIFlYWb0YPYZbA6qxxsBxQY3fvz8IQ68QuTEujX(bTSfvbOIUdApWURVDBFp)dxVMz7xbVcsfKIQWTEFYqVdCv45svGk28bonKlPAUI3GRZmlhFDGFYOrokMz43BPU3ZBDCjrUA8ub4wSYz6nOcFZhk1hUCSCCHQ4jvea(TqczjlidbSqwtVhaCtvqfMkp19EERduJ2kU7JLf4IAKt7PIsAskQcCwwd2jQc(AbFrfkubolRbfvbFTGVOcfQWLkROk4Rf8fvOqfKVL1Nvl4DrvWxl4lQqHkCZSvuf81c(IkuOI345svGIQGVwWxuHcvaShqCwwdkQc(AbFrfkuH1md)Kruf81c(IkuOIk4EBwzccQMluOImr1OTOkiFqGL5D6MpQWxYuKvbXepDZhvyvnz4NmhDiKBidYGmiZTy1zGS(GBzZWJSj0mi7MMhjQ6MhLlWY8(6YTzq2S6M3UMEhy9gsIQU5r5ga(TqczjlidbSqwtVhaCtvWCp8WdHSdoaYY1xYfY9AivmZWV3sDVN364sIC1yF7tfzvqmXt38XBcKCIRIT3AqfZm8tgqrv8Mhfvbz62SkiM4LVPiRcIjEfZQBE7A6DG1BijQ6MqgXHmRQjd)K5OJDXm53dHCdzqgKbzwjhK9qgXHm7MbzdNqgzcYnKbzqgKbzqgKbzLu2SazMj)czehYUP5rIQU5r5cSmVVUCBgK9hc5gYGmidYGmidYGS3cYoYm5xiJ4ehYo2fZKFpeYqaRbYnKbzqgKbzqgKbzqgKbzqMBXQZazpKBidYGmidYGmidYwdjKBidYGmiBnKqUxdPqHkEdUoZSC81b(jJg5OaDVN36evbiGuE(yuaciLNpgIYWV3QWm5xqr1OTIaWVfsilzbziGfYA69aGBQckuOcGUKNBbbZPBZEWpz04PcRKbvKJ8b6wqW8M3vayFpaOU4)8KGT)UocTd2(T5Cvw9hAOOKMKIQaNL1GDIQGVwWxuHcvGZYAqrvWxl4lQqHkiFlRpRwW7IQGVwWxuHcv4MzROk4Rf8fvOqfUuzfvbFTGVOcfQaypG4SSguuf81c(IkuOI345svGIQGVwWxuHcvynZWpzevbFTGVOcfkuHvYGXZvwnYPtHB9(KHEh4Qa38rfGBXkNP3GkUrogP5OjfpPIWhAtCTMuK3tIa0Lbc2deoB0om0124COHS6pCvb5d67vtg(9wfZsrHPYtDVN36a1OTI384TG40HlPgTfQXorvyLCRNlvnK3ivsor1OTU04QDJRTCgohA5CDGqdz1VLJg5Olni063)qxJZHR2NngiiR(Tx14GgppOvOIzg(9wQ798whxsKRg7BFQ4n46mZYXxh4NmAKJc09EERtufGas55JrbiGuE(yikd)ERcZKFbfvJ2kca)wiHSKfKHawiRP3daUPkOqHk6ToWpz0yNca77ba1L2Ho7gTdNT(B9F2E2kR(ddkkPjPOkWzznyNOk4Rf8fvOqf4SSguuf81c(IkuOcY3Y6ZQf8UOk4Rf8fvOqfUz2kQc(AbFrfkuHlvwrvWxl4lQqHka2diolRbfvbFTGVOcfQ4nEUufOOk4Rf8fvOqfwZm8tgrvWxl4lQqHcvKLkjNOcvyLCRNlvnK0nFS6wfCvdUoRz2smIijtgqIX13PVsu1nbjwot5ToIQUjixwYFsmIQUjiXiQ6M2nu4wVpzO3bUka6sEUfee38XQBvyQ8u375ToqnARiVNebOXHZtfKpOVxnz43BvmlffnFM5REUu1qEJuj5evJ26YqBND31ZgNDCi4NG)oz1VLJg70LH2o7URNno74qWpb)DYQFlhnYrxgA7S7UE24SJdb)e83jR(TC04GUqO7SLWvB7oBce8tWUtw9BBfQ4jve(qBsrMlb8276cHbcT(j0YPH9aN2ZUbz1VLJqHk6Pr7HoBHsa \ No newline at end of file diff --git a/LegionWA/SoTR Texture/Init.lua b/LegionWA/SoTR Texture/Init.lua new file mode 100644 index 0000000..85f0704 --- /dev/null +++ b/LegionWA/SoTR Texture/Init.lua @@ -0,0 +1,6 @@ +aura_env.findAura = function(LFname) + for i = 1, 40 do + local name = UnitAura("player", i) + if name == LFname then return i end + end +end diff --git a/LegionWA/SoTR Texture/Text.lua b/LegionWA/SoTR Texture/Text.lua new file mode 100644 index 0000000..256a89f --- /dev/null +++ b/LegionWA/SoTR Texture/Text.lua @@ -0,0 +1,3 @@ +function() + return -select(17, UnitAura("player", aura_env.findAura("Shield of the Righteous"))) .. "%" +end \ No newline at end of file