diff --git a/Constants.lua b/Constants.lua index 9fb88fa..3cc8507 100644 --- a/Constants.lua +++ b/Constants.lua @@ -508,6 +508,13 @@ local importantAuras = { priority = 20, spellID = 31224, }, + -- Evasion + [GetSpellInfo(26669)] = { + track = AURA_TYPE_BUFF, + duration = 15, + priority = 10, + spellID = 26669, + }, -- Fear @@ -527,6 +534,13 @@ local importantAuras = { priority = 40, spellID = 27223, }, + --Banish + [GetSpellInfo(710)] = { + track = AURA_TYPE_DEBUFF, + duration = 10, + priority = 40, + spellID = 710, + }, -- Shadowfury [GetSpellInfo(30283)] = { track = AURA_TYPE_DEBUFF, diff --git a/Frame.lua b/Frame.lua index 93c52fa..3092ce9 100644 --- a/Frame.lua +++ b/Frame.lua @@ -32,6 +32,12 @@ Gladdy.BUTTON_DEFAULTS = { function Gladdy:CreateFrame() self.frame = CreateFrame("Frame", "GladdyFrame", UIParent) + + self.frame.background = CreateFrame("Frame", nil, self.frame, BackdropTemplateMixin and "BackdropTemplate") + self.frame.background:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = false, tileSize = 16}) + self.frame.background:SetFrameStrata("BACKGROUND") + self.frame.background:SetBackdropColor(self.db.backgroundColor.r, self.db.backgroundColor.g, self.db.backgroundColor.b, self.db.backgroundColor.a) + self.frame.background:SetAllPoints(self.frame) --self.frame.texture = self.frame:CreateTexture(nil, "OVERLAY") --self.frame.texture:SetAllPoints(self.frame) --self.frame.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp") @@ -104,7 +110,7 @@ function Gladdy:CreateFrame() self.anchor:Hide() end - self.frame:Hide() + self.frame:SetAlpha(0) end function Gladdy:UpdateFrame() @@ -186,6 +192,8 @@ function Gladdy:UpdateFrame() self.frame:SetScale(self.db.frameScale) self.frame:SetWidth(width) self.frame:SetHeight(height) + self.frame:ClearAllPoints() + self.frame.background:SetBackdropColor(self.db.backgroundColor.r, self.db.backgroundColor.g, self.db.backgroundColor.b, self.db.backgroundColor.a) --self.frame:SetBackdropColor(self.db.frameColor.r, self.db.frameColor.g, self.db.frameColor.b, self.db.frameColor.a) self.frame:ClearAllPoints() if (self.db.x == 0 and self.db.y == 0) then @@ -271,7 +279,7 @@ end function Gladdy:HideFrame() if (self.frame) then - self.frame:Hide() + self.frame:SetAlpha(0) self.frame.testing = nil end end @@ -297,7 +305,7 @@ function Gladdy:ToggleFrame(i) self.curBracket = i self:UpdateFrame() self:Test() - self.frame:Show() + self.frame:SetAlpha(1) end end diff --git a/Gladdy.lua b/Gladdy.lua index 135be14..3eb6045 100644 --- a/Gladdy.lua +++ b/Gladdy.lua @@ -25,7 +25,7 @@ local MAJOR, MINOR = "Gladdy", 4 local Gladdy = LibStub:NewLibrary(MAJOR, MINOR) local L Gladdy.version_major_num = 1 -Gladdy.version_minor_num = 0.16 +Gladdy.version_minor_num = 0.17 Gladdy.version_num = Gladdy.version_major_num + Gladdy.version_minor_num Gladdy.version_releaseType = RELEASE_TYPES.beta Gladdy.version = PREFIX .. Gladdy.version_num .. "-" .. Gladdy.version_releaseType @@ -205,7 +205,7 @@ function Gladdy:OnInitialize() L = self.L self.testData = { - ["arena1"] = { name = "Swift", raceLoc = L["Tauren"], classLoc = L["Warrior"], class = "WARRIOR", health = 9635, healthMax = 14207, power = 76, powerMax = 100, powerType = 1, testSpec = L["Arms"], race = "Tauren" }, + ["arena1"] = { name = "Swift", raceLoc = L["NightElf"], classLoc = L["Warrior"], class = "WARRIOR", health = 9635, healthMax = 14207, power = 76, powerMax = 100, powerType = 1, testSpec = L["Arms"], race = "NightElf" }, ["arena2"] = { name = "Vilden", raceLoc = L["Undead"], classLoc = L["Mage"], class = "MAGE", health = 10969, healthMax = 11023, power = 7833, powerMax = 10460, powerType = 0, testSpec = L["Frost"], race = "Scourge" }, ["arena3"] = { name = "Krymu", raceLoc = L["Human"], classLoc = L["Rogue"], class = "ROGUE", health = 1592, healthMax = 11740, power = 45, powerMax = 110, powerType = 3, testSpec = L["Subtlety"], race = "Human" }, ["arena4"] = { name = "Talmon", raceLoc = L["Human"], classLoc = L["Warlock"], class = "WARLOCK", health = 10221, healthMax = 14960, power = 9855, powerMax = 9855, powerType = 0, testSpec = L["Demonology"], race = "Human" }, @@ -229,7 +229,13 @@ function Gladdy:OnInitialize() end self:DeleteUnknownOptions(self.db, self.defaults.profile) if Gladdy.db.hideBlizzard == "always" then - SetCVar("showArenaEnemyFrames", 0) + if IsAddOnLoaded("Blizzard_ArenaUI") then + ArenaEnemyFrame1:SetAlpha(0) + ArenaEnemyFrame2:SetAlpha(0) + ArenaEnemyFrame3:SetAlpha(0) + ArenaEnemyFrame4:SetAlpha(0) + ArenaEnemyFrame5:SetAlpha(0) + end end end @@ -245,11 +251,15 @@ function Gladdy:OnEnable() self:RegisterEvent("UPDATE_BATTLEFIELD_STATUS") self:RegisterEvent("PLAYER_ENTERING_WORLD") - if (IsAddOnLoaded("Clique")) then - for i = 1, 5 do - self:CreateButton(i) - end + self:CreateFrame() + for i = 1, 5 do + self:CreateButton(i) + end + self.curBracket = 5 + self:UpdateFrame() + self:Reset() + if (IsAddOnLoaded("Clique")) then ClickCastFrames = ClickCastFrames or {} ClickCastFrames[self.buttons.arena1.secure] = true ClickCastFrames[self.buttons.arena2.secure] = true @@ -365,7 +375,13 @@ function Gladdy:Reset() self:ResetUnit(unit) end if Gladdy.db.hideBlizzard == "never" or Gladdy.db.hideBlizzard == "arena" then - SetCVar("showArenaEnemyFrames", 1) + if IsAddOnLoaded("Blizzard_ArenaUI") then + ArenaEnemyFrame1:SetAlpha(1) + ArenaEnemyFrame2:SetAlpha(1) + ArenaEnemyFrame3:SetAlpha(1) + ArenaEnemyFrame4:SetAlpha(1) + ArenaEnemyFrame5:SetAlpha(1) + end end end @@ -412,19 +428,18 @@ function Gladdy:JoinedArena() self.curBracket = 2 end - for i = 1, self.curBracket do - if (not self.buttons["arena" .. i]) then - self:CreateButton(i) - end - end - - self:SendMessage("JOINED_ARENA") - self:UpdateFrame() - self.frame:Show() + Gladdy:SendMessage("JOINED_ARENA") + self.frame:SetAlpha(1) for i=1, self.curBracket do self.buttons["arena" .. i]:SetAlpha(1) end if Gladdy.db.hideBlizzard == "arena" or Gladdy.db.hideBlizzard == "always" then - SetCVar("showArenaEnemyFrames", 0) + if IsAddOnLoaded("Blizzard_ArenaUI") then + ArenaEnemyFrame1:SetAlpha(0) + ArenaEnemyFrame2:SetAlpha(0) + ArenaEnemyFrame3:SetAlpha(0) + ArenaEnemyFrame4:SetAlpha(0) + ArenaEnemyFrame5:SetAlpha(0) + end end end diff --git a/Gladdy.toc b/Gladdy.toc index 79a150c..5a92435 100644 --- a/Gladdy.toc +++ b/Gladdy.toc @@ -1,6 +1,6 @@ ## Interface: 20501 ## Title: Gladdy - TBC -## Version: 1.16-Beta +## Version: 1.17-Beta ## Notes: The most powerful arena AddOn for WoW 2.5.1 ## Author: XiconQoo, DnB_Junkee, Knall ## X-Email: contact me on discord Knall#1751 diff --git a/Images/BasicProfiles/Klimp1.blp b/Images/BasicProfiles/Klimp1.blp index 67815f2..baac4b1 100644 Binary files a/Images/BasicProfiles/Klimp1.blp and b/Images/BasicProfiles/Klimp1.blp differ diff --git a/Images/BasicProfiles/Rukk1.blp b/Images/BasicProfiles/Rukk1.blp new file mode 100644 index 0000000..e43d18c Binary files /dev/null and b/Images/BasicProfiles/Rukk1.blp differ diff --git a/ImportStrings.lua b/ImportStrings.lua index 204c2a4..091a8af 100644 --- a/ImportStrings.lua +++ b/ImportStrings.lua @@ -1,7 +1,7 @@ local Gladdy = LibStub("Gladdy") function Gladdy:GetKlimpProfile() - return "4XzVB92CBBKZ)tu9S)Fx(sRK62mttIVA3P3ntg1qlrBXRYI(HI6j13lYN9dybwskjsBXeD9nw0KlWcGflWpGLCUC(TZVzz9SQ6Lf1VPADvnEJ85Fqo)M7MFLltPLbHtODgJWANF)pa)5Mhg9j1J9KM53SOQA9YQVS5VLj7UD3F)2z4FUC9tRYNFL1imAzM1QcgJnZHJudcv(2Mz5Jza(GaNF8V14FBAh))8JaNlAM)HFWdplFrz(63WQhnFi909jwFtZZRlMFZ720uuFF(IIpD5YLFCZ2p9tRZxU85p9UhZFOy7NOX(h1v72SSy5FC36NWvN3wUn)U1fVPSEbWJ76e6h6lWIlmdlYn1LB(ZIMJ4cjE)4g8UlNpB(npv08Zf5RBwb8(NlkFyfOFoGrBE62QMIhVEDEtbzoVC9xYFE7T51pu0a0EhBVVzv1xUCxD(BlI)lYtAsUUA78B(139t)miQpv9fWCaJ8xbZaoKvP582I)QzxnyLEF5MYhZxxUTbv)RQ20aQmi0Orn5S(TBqxbA26O2nJL70sxumV9Jx3tMidsuek)pOee67BLi8NQR(YBlRlw0uwTPvtz7wCrAlUk1G)R2Rd4)S41D2YjxjXfU53u0Uo1WmsALc)zHtbPFmgDrMI41f4ULtJDAHx4otcwM48WOG2EwyKZKDEyKuyptCYQZmNfgfuQZJ)KYegtIUWMCNiMDH91zNw7C6ZIGfKJkytJrwN)8S4PSzIZt4GG0mMr6cjB0ZImtEcmt4LNfPY61NPDWwPAm1dcd2Jxxaj3Fv2PTzzNh5s6ptkOmCEm5Avwymt104K0nE83lKU9CQWvHWRZsWX68SXjiDNNCms73DQb4rpSpcGzF82B)47JqaQlESkIHz(nxwdyH(6N)qEnmAGDiuPdrLbGW(xTGl1EAu)caf6Tf3NVBDdkHop5Zv0d7wDzvDzZZZ)GrGq(Yx8NZV5T)4SF7QRqXtf49HdsI0oajsL2AN2SifAky2eijyuJpldkyAyLxo1zXzNOGPLkLzusuDK0rGu6NMMOYyN4Hj545acXlYMMEaL8i0tKeRjmrnXQmVGImOUBv(XTVdlxUm)4AVEWvrJCCxLbmWkxwyItHsyntCnXjM6glVFCZ7WuON6(9qwyC)Kr08SjUcAzGHNofqv9MX9fhuSGnUzQtr37cBzgxQgWjrluVGPASDH(XvJHjrfutCrpaQ(0OqBCVGTAGOCkiC94E7d6y5YmVGRO64LJGjB8G1dhmriEHaPJO5MSjUdXPNAseqvCt0AP8k1KDU0HPQ9ALyszE0A)uNdRpmrVrLotn(AIDG8HG37eNdTwNnE03HdOiu(xWHCaXkON4sOXA0JpfdSp0zM22wLDQqgZetnlvWzMOAdfpnjTgIjov8pkVim(Cm06DtQdFD9e(Dp(4Unfix6vaeuajvaKq1vw9IYV32tgN72(llsTqLA)i4xLARyS9QXb)7LlBwDv(IMQOuCZ)Fr9wOkK)4X8)Dv9FSz3JX7UxxC)EfsOkLRRQblxztQbY3H9MDV(I3VFYdwau6ebsf8CLhat5Tq(cTpt5bd89)aGT6OLJRQQFC)fJ9Q)pwgk1b33N)xXgMVoF723TO6VNZEyrzVMQJLV99ATjpG)vpFc(ea61xAv0EhDfGDcHoJBV2NhlCDrjrbu2vNDbODb(lkXlRXRUgeQYnpqgOdS)yp(Fn7FpA(2v84zf070ic4U14PzCOpFEnS)(naTnOoZ2eS31rwCDr9IInnW8Gki5AS)9sZuNffMR8nBaoUO4ryCud8Pj)xlYx(m6xTfmBi1fBkEmEdEa)2wAXNMP4wJc8WmEkVgI6CtDX2D1CVc2sMCGSTDuC7kyiRG1VyuWgw8qN5z7VTAWJmHCxgEhxzVMlaMT7RZFSO7Wv6OS7EXfY((Eh6nSTN3oR)9UtYn8qFkAQoCzS9CxypN4kb4OEF1ID8C2g2lEcmrNxYFU70860rL(GaF0yXmfPi1hhmW41AzgapuzYKAJLpQWhg9j1J9KyWGl3SyfmdD6gUE3Zc1PmhAnIzMkwMoonqgdcaf0mesIpZJxa16a4XX7eaKq4n0aEB8cpcke(f7IZmenMlsPkdssJJp9laOxIxKj0Xbk1kziYGi)I1uG0jbunXBNr3Wk1XHXpNaHIZxAcXwcG)VinrzYOGPeEsses6cTHyeIAc)1Qio58HaXbTHga2ROzj0m4DKXbkDwzuhubpXkq4ONt)BShiiNuSq60KqPnIO1lKPImiwODuj8M4ufsZTv5Yy9u445MudJZqcJ16jPWMLfhRrYcmHEgUWgIpWfyEHhJaCHxW2qy5mEHgm7KkRCXrerJfNnPMKufnPQK52QtwvAQOAIqsdKvo2FQzjquijk6xQFpZIa488ne0fzgjX1azjrUt2dqUOlYYiDaGY5jI0SVPJm6kN2Z6IIUrMpsQnT8boZ0aD0fEIqQ6j4cJio5WtPzYXUGq23SwN5ilDsn7reSXj1M8uuAAYdwIcWfIwk80AbVIrpfS2rQ1obrTxY7nsgzfnqVGmcs6(Ep)dTLbQ5NCiezSrZNXU6g(cPlocTqs6ivFnXsh7NjjNzLrZSH2NavksoX8gEi2atGI3wHv4oJRBno9kMbK8f7gZmUqn82z8UhMoy08gwziQ(oYh0lzJca8jors2Tg2KqZeuJvC80MjW6XUkmFKqqYKbjUVRbdjUF0Vlq8jPSYN(RNrzhcuhEgJTbD)aKORhCjhHm74xAdodgNNaaF(88RcW(tHvA8oyXrRciSuZXjc)FhIYeKF81M4Q6YInlx)mA)48Dj4ryft9pXH(zTXdO43EcHIK3(gAmOSxNmRjtCCX5ydvkXE6jX8tu3lMnVlbfKvKYRqTThVqe4XKce1gac3hrd2qb0tEqooIPsLcmQsPvIDwl6LLI)ii3wTH39c2uoOLMhIoO9m1PSwyYf8IuAly)iTlGoemAM4CggorfChAdJpfjd8uI3jimTIjN(K2sqhRaEJyV)JcvMy)Susp9eTYYzgHq50osND)akAFcpGY3UhNNzdTlxdklz3HGIKbYOjRlOA8mLcvajR59QgEVQYf4n3ozGdpizdTkf6xNwibWbCCnjLjJA00mU9YZ6LwIA5XmQvgr1hsuq6IMnIoojTZs5AGeeCs4yeU2Q8UCrZU81Xc9yNrCq3LxZLdHlG9Gw2)1M6kyZMb8hbdRqiaHLH0nyWLEvuDeY6uOQbrK3hYEFKTMlsb56uH(vICCepzARzQHd93VZX26Qpm(cn9l)4v32j8qreiM5Tq5p)s5gSLcCGSEis72U3JbXbnOQVUcrPgn59FPOUmDAPHw5PhA9bkK4n7Q3wmG2MQR0rr4peL8AOASIxjfH84vX9fZXE)aXGLKs)2Q6YTxFDhdg6OB3RFhNWQxt8vORRWM(RM97bexjWSuDaaoekYOkWqIfkcccOaOSirSb3HXqKCYDbHzcq(6Wh4zSazWnW)3jjcaqamC2ym376fZfcGWJXbBnJpcGK0cOHs5Nzyiqe0cIaabbbJvbHvzEf44uMqgngaerKgdpuiGrK3wnh9245PxZSGdLcPp80deefiRsWvjikGoyI2fxgf0nlq2pRcafFxV4MkHMcQbGrPWrPGKkP1r2wJhcdJ2WuYiWHj(Gyup0QdJiAGOGCXlaRyunrtvsF5yUC(quA5fvYKa1hj8e)4a2aFJIqM3rdioChVMZj(K4RFxu8ICH5zk4FaYyGtV3rcemx0aGuaEAXkJRMcKqQ2Iqi5AWimnQuTDbvszOe0Iu1JosVPa2Am2kErSJViluAktrGGiJPhr(KXvGeGuB4nIidWFvk2QXGvToUayGJKqzCSdCgNEcexYrrLk8qOATyrDhaSYac0EhdQ2fyFCoDNxliRBMHkKkv9siAKHkkzqTMuk4mdPZkgDCqevrJlQjoj5XPmbBGunp5cQf0AnVGajKyZUqfVaYKNr(qzKmQaxvYXlLShCHOuLuE3i1bspaPts(dCrMCExVinBegdNWq6pn5qHEmBYyK6)faigMff2RwDWglzgaeRX8gTioDhhE)6vpVTCbKK7v6Cyd2QSz9cNUFN6URQPP6X3dbol3GD4PdZ(GjN66UsRS12s5EPJm7XLUUFT)lT(3ENmJTb(fGC3MPlb5E1eZKeTwuza45kc)BxLqQy)UsnBV)lJDk92yc0E1amO9Dz9)yxEDZqLazHDzyBNeyb)ywfiLQH6JMfEgal1Q0yuEtBF06Pl7dxIm8KD(RF(wqxAkF6RFoAJ70TwvwDawKHFbTBFtW7Jjto08FcLE2wR6(WlDqgalefmaLgHXetWlVcIMaiZZCcfKAWQWZ6W6iRZWpPESNK62(BFEt(JLlOPF2(aJW9W7PwN23oa5fI1oZ7i3dL4pNV((xgXvA5mDyrFVBJ6JJ8BMj9RM(hJDUF2(gNtbfjji3w(yr84OYBs4KFk1KBX(vmCcgkMPPQwWV9I97aYRSn44pudc2Ck02XfXVS(d7wV(L9UJIg1U(JG8E8Ncrm6s61FCVVSOTh1Z7UNbmUi)aW)SmGUMDW)3VZ)9pqHUZYQT1n79X90Ewc8DhqPVi9ToeoAnbz8)JBYdpt4He9NhAQoYW3VWHrx(6RhhLnUQClekCiQCDU5lhj9ZyUUNKBkp2FAxX2TfDhJ9Ehuz3j91pD1Qx54K5J)dzzxKRBRUepCW3nOJ37ZFOCXq1CMScGprSQZUVnOEEe9kpE1HF5uXCUjFYdRznf(yOMfKYjJoSDar22K3SB7DjtCpCwSD67n0A73L1n8HAEy2rIZ38)bP7l(6NVcIB81p)7RkBk6PNh2VGUinRMCcvkKt)QGtHtp0Aw37dT74nPqzwy1gkHXfIL71UjDKNup2tA65PEc7joSFaXiqxzLkStIyLtiSif)ooSS(nqu7hQQllIv4VDDrXt4f9EVvUVcachpMEicqj(7hKANiJYi1uVEBZUnNcnwOQ)OjEZYtMKGJMMv50lFXRrGdlabi4p3EkJgQjjc(F7I8gW190OrshX6sisg2u8MtHih(LTGeT4KgnuApo67lYRpLXJNsA0WwvDssJnyc8cXeijgsQU4jSOOnlkojQYiQwwN)q1MT3vxKdymobcnSrEx(PmAl2ry0Evxu8FkaiFNKlmukGbPQ8XNG7CslmTUJpVyD1MtYe4KrzR5GiM)nMv)ekJRTsMErs73r4Jt619MaDkSVB0hXPdF3lMawZddiVSxNE1U9E9nobSMhG5LQkd7uEh4V2ScY5DLYVhAq2osXC9srWPZekhwZje7dI5gs5nsVFgSxX8dFBX(2tP2Mb9DBqH9UX)uQXNTOSnBzZ85)3HutJwa" + return "4XzT8KTCBJRSFm3NJlqacqWhTtIsCDtC81YPMZu1uAcLeTfprl(qsDZ48q(2p9cajiPKIywErIIeDJEd9cqtnlA29ZMUS8QDLlZlF5U17kXBKn7MOztNtF(i9zj(z9SPvRYwU7lvfpUQ((In5L3LV(2DfBRHHC)hUfGz)dpuDf(XLRFAfJN))8YQIDB)7nz)7DL)929BO7UOyAXxZNDJuaxNvvFv2rPcbrfcIkeiv80UVKxcamz326WHlomr7q))6dazLxdtPkAiN8VMnXie6irIn2iKrrYOzp8cnmYNYRFBE266vUzC20xTRSO6wGDlZwuKT(L72TgW12wwUmB7J5VCv(IpFFzX2pdt6C)GzMCA9ZRZNn96T15LpKTi)VUC5YpST6VEZ6SLlF(VUEt2J5v)fp2)UC3(TlZx(3Zx)uOeUHFeOk8vfvzZxN)YIYfaMN3kuFSJe6I4dlsRz6CiwC8MNhRqejtKs1SRMnfKwPj4fQOuLMVWyIOlew3yKwrkDHo2sdoksj4bhhrJ1KyO7BmwAK2uRdurmFrQoHbnX6UqehZOa0A8eBT0DIuUHOSQeh0kRXnMyjEHwgZZOWMk4PoYDrQwX4nwXad3XYtDuedKnrq3XkySHKjDHmsLYZJus0Imf4jMOszyaSjy8MWprjbXctlcdrcsJMKksrQJHs0mTjKj8qLYuEMtLgNIqX4xbCnl)JmS0g4eM1KsBK0XSEQYPAuI4iEUIvSkrASSUagSLN04iRMP8uPJmItKUh50kWYggHkPGMIyDSYn40egCR2qqzCcnGVzjHrRjIWACADBCAktmgdtmsKtQDRcUEXUT3cRxk26SLPfyVElAbVenEZ2xMrlXk3)e7OOY)uazR8lQVjBtoUWMDibYOPBF6(D15BUDDwDo7j7Y1Fj75Q7ZkFmVMrorctxT7lxcZYRYPFI3)yUiLoxKlk(JIL1RMKTOEh5HA6d7wSV6CC(rEZyU82DvZME31V5T37ChIuYDGNKoC295)t9(sWrZ7l2wSjBDrvn6RGy2fzRZPjX7(Fu(KEZ6DvvnUn6ZrRaUFnkbAeuE)heD)UxpbzXY8TzVe8TvJpWfnqB8U4ALhVp7XIfhiUK4cd7a7cjkyA4A2BDxnARBtpL8MYDF5vfL5lQHGtEAYhzjWiArX5OAebbA(tVJ5xOWH0DEU6d3F)hEpzIvMVzx)ikOj7aNWqeipoNOJbFIGxeT0ghBbFFqqkLlifjXVr5z3MaeGRLo2LxUDli2zBfCcFhyx8Q8hY2VUgzqtsIa)oVDTYtLfafw)8SBIfOwpBXNbI(1x9XjtqgNdimkqIKkTECGOIta3vhdKiDdinZb5vCuZHwRgjVZr8gfisLbCTpkqa3YrjNdVhkHTNqCDyLcfIEuZIecgECzS6W6XOJlWIeduJu6aJAga2yKY3yyz1X58dojukiJHnGW2JJOsIgPTiyw1bI5Dij5WfiqUUN1kQaUMsMAuufLT1OMevSESSUmwQhlRyvJ1PfK)4XDAD41hs9y9Mgzn6r62IZ48yGihAmYzMocRxoX1rrurM0KJRso4AkPj1owqe64X6MljzKMWrQtew4W6DXyDXZP3pgvcvgWzqvbreKJLX1Yt4H4WRePe6hfiqvCNGtoK5RnzSkeLqEIWihHSWsNg1Safqn6GUqzoNqVFOzXigzQtqu6t4q9WH3avYiJxPujJn2axz)OarQsLhNx0dnws(byev6XLWh2nKwMmYf8CrYJybpxm9iwMGLypMHRgBCNuXyTePI7hherNWT4H8nq7wWieR6e74SpQXBrf(gSDcUI)6VNKhzJu7xJ71B2SFBEhyexKM6QZviBH0nZdkkDIwdveIQqiH8umPCUYWtuOkx75KYIV(Tp9)TpBzzwD23(0933Sbi8EMG4Vg)PkzG5xgVNNuP4l2xvVBdUNdZMI7C43RE5AhAJWDD93aETrdCTmk0EbetIL)OCShYvIKblEhf2pkrpiKZVe0Av9xO(RaTM4b(j)vG2iH(3cE1QbjL9RaTwP8NYq7iOvoSk2rH2l0EZx32KPdTFvgtFhXJc7h1(9NJOpMMZK87WGaQzCWoe9RaV2Obr5gfAVWVdNPno(BqTiP)UNmkuFmb8WeQ)vGwRoQFS1rH2lGidby(IutOnSoTFG(rH8Jh343IOiY(7qXPKPdsF5xbE5Je7NaVxez6yeJ6sBxd5FhlPTd3yJFfOns)loakmWWtwU5OAMUz3U6vh)mOApk5)SZba)syCpcjTMt5RvTop)Pq6DoEotLlYXdnd)rb(9nrkJiLtjSUCDv9(TNdm6ui0bat52LNniwdpnRYk3CoayWAJaa(C15mAjSiahD1IS668YZdgqLIWSSOcfBBR7PEpI4kHYcF5IZzkmrXym3PpKNvEuSFv44TSGfmb6n(2HGhMt4SXkI(GCCfrmDAzL5pbSCgEkqNduPmuqjcpUBB18Y8mWg9mam2jK3NDoJwJNrmkVkZZ)Aou21zzcRTQyeQInpb35SumnMJpVy9UT5NLUriL8YwQ2Toh5PeLmDpe0lubRVVnhqiiTFKoYToRS)bo71o9dYY2(A5fy9LnDEYTUJYK8jbZQRMp)PeIfo3Vi0j741Mh2R1f0kmhXxrOCDwfDk8)CfJw07i7)bejv)N9zLErs4rRg6JeCnuwmFFn5H8gkwC1t5RxJES3MTbMm(89NbUGxw8qrEj(eaGAWcykirYCNHBnpmukEaKmbpo)dJdzloOd9hrH6aO4sAqF7t)pQdJNw0SKpR4LiMIpfMIhdM0Nct6XGjZPWKzmyk5uykzmyYEkmzhdMspfMshdM4DN9yOc30QZgx1HEbChR)ueXuuX3(XBU)13HxTPa8RHBmmTU(pU8U7U(dbpqi1Kl)BV8Dx(QRVP5b8HQdp49x(Mx3Exgl3E31VE69n3vjvjPoS)Up8Y)3MhqB5gC)xD3hV(vTdN2)y4239H38XwCZngeC7PV9Y3FziLGDTeNjvGZUbn8syAwoFluFHOrFpD7IUoTuu0qpKyV(898q67OIMopIK7apCYZQPg3lC5PorzAmulM9DqtYPozp3mnSC6(JH6UTtpKKV3auYKtCQ6r6UkpFOj7SU9m0L(8SThuxYXj4WcF7t3davx803(efLKsmEq7z6JHH9m1R3MV5zIUcAQu2(4Gt3z0gqeMEF2)GXZ4MsY9doT9ED8JVdlB6WhRwi0XXYuJbYhes64HxeNI5eb(eA7ARwC1EpsQfgXRV5By7V5N3JVjWTErUJMSwwOtQou9DRoYcSGEBJM0IFGG7DY3PF719UDl(mN6qN0Qyci2ldW11UomdlwR4YTlwb0ElzJgkbcN22fRFRTrNfq(sFd)DpUqrlW5NBg254r(NQtP7GAV5((9bUib7Dc4BS1NMJh8GHGuMgROX7)owQJWlsfkAGyXkwcbe(OojbHlcRxyU7eUqegPOH5Eo3Rg485NqStmMt97PBIsJictksykreXxOIzeHTiXC6yGzmzsSwgdQyEayhrm33Nd4DIObgz0repiTjmQaIJFo)tQFcqmjDePrXeLkwqspBQKqaDA9etKettL1p30ztZ8PW4MBMnInXmXO1jmvOttPXgh5iyoydCH2spWyD4cDncxKiCYqqDsxOW2NLyzPHgbD4x0SfPykvYtQ0lUXMjBojv5PIpACeullLPU6IaXYmTwYFZDI1C68YsC3qWxKghXy1Ysse7S8aOl(I0uMh42LMiENTPHf6sJI(zIdvPjeGAVYdmL5Hz4lsyW4(fcUiwqtn8uEEmodWiGnAmLjuAGkN4Hy10uQ92jsqZtCOMHamGyfrcRjC6l(PGSMGwHT7nn6yEjvuseReG8v41ccNHPu6S3mKYjHx7aZIZIq4qGmj1zRhN6STJy2J7PichkJZalITILjs2Af(YHhELIBLoQuCgRAhKs3clSNcM7oSvA(LEoHxdhZAtkfj82PU1po4GrZ(syXOr400kdDBvKZEgwDWtGs55bgaE1ei34o(o1rOulUWYdADxDNWhJYHDNQX8Xvp7WNUcvjhVWGsPeZGitL1hf8jXGpbRk1GjTA1WcwUCt3wNtPKnmnaI9E1ZqU2flyedYJ15zaz6IynFyi0otoVl9rTtuyMftWnvA56NrS8mewhOlulHb3HvjAmSE8W4zTrZXgh(JpHq3gi(L(kUXBV6a7TWW6)X72p68PtzYNzaX(DveTik81kzc4vj2cr50rcHqjfNQA)G0ooMXqGanZ1QYBawKpiA(4VVdutKKfkzAbYI5uECZBgWhR4i5mfJpyzovmayh9mU9xv7lDnLnTxglrWQAH4(vWqwb0kTvjbe(p76bN593TsfF2WqeTo7OHRN2fnykOL690iKVjAKub2gVRylMiKZqoifN2eJdqanOEjOUMZW6kI88LlnXOTG6oowRfYuWQgnNtAPG(fsTQyz(vRl(6xZkblmQ1)dnw)aWBn7CME2HEZnM53Zg2yP(5NaH3TREUQawX4myCgpZzBnE3zch(B3T(5GHczUk8hwHwG2B8EOecYKcujfaIwemdMbJ)YYfzBpme0ey7dWnzSDaLjTsidzc63Cl93dQPKBdhu0emyQMUF7N3IlJ7b6hD3Mxs6wE6zOiZabq5o00SZe1ojT(RjVx4oiMv38gEaAXJxEH3u5qVUdDEH7od)Un2TNHlLWftHv)7YS)kFE9q8qouP0k9PyWHiXs5PiLUewHKZ5Bi4SGGmzjatCr2tn(CH855N4sp14Y6KF3SOW3g3ymwoGoMGrt(jCcsPm0jUK2CjIiI40sLq2loCbPqtqgB5SYGmcykk2n0ulxWGw5sHmoXn9khkW(kg)TooHFGGHarLp9thHkXJwGOpodJull)W4E0nO(vLarX5NcPx6y2io)kze(YHXecxcuIpR7yFQyrC(4kyemVqDfhDbifzSaIkprYzDrVnIoQ1PuDjQM4ZSmMRxbNzMktTUrq)Y4u6Iyx2ACjhj8GCi1WjT7EMmXWeemx8nGC4ySjsDvhbuixRG1vwusSlFXyPVwnR0puMRe(QbnmF7QcIEbcN7Ayo8gqg2S21K6QcGHp1vsHnIRcWxRH2vQJX9T1LPmGqMMIno73uxzfa1Y2jsPx(kBKxS4ul5Xc1BzCPoBSEToZ0jkFTwXCDr(YrCvnPSUuuJLoolL1VkPlNxRiILeCroUQQKXwofypn4sbwf70hGiZHpblPs9LAAtzwhmuzHl9UosmyeB2XDVjbSLzdG4Cfh4ZD3e7Qks7Scf8YkJRgfw)bw0EeL6Y8(FG8fPcdmgHnbFNKPaSQUohpTZorVu4Pr3eW8OPGZBIznMSu7PgHPn95ZXp8U66DBEFw5J0EiFWx8U(PBCv)DTcyXB3vcUJlc7VsFWem)N2KK5JI57uBbUXHHLcGZ45uocbWQrgkYjXEZ(8QQCkHsxgPHVYMnB6x4n9C4zedB5j6DZLL3SF96ZGZ68A33SJDHfaDUgyN8DQS5LbnCII6jypmR0u74JdOKjwd(EYOIfXAO03e6egPgE7ypP8ypPvuC425T9TiTZ2bFEVy9mxIVIXDlpRbpCU4VnB9dNHENX2LlQ3ZBhRJkPT3CmvKCG)sbAv4qcz5zv5hCLuSZjHP15s39xvXlGdKKpf8kA3KNMBfmT0KRdFqwGD23GVtjRdBwgMi9R9gw8FOJdwZGBS9r))pOjrr81Ximt3AOW0vvdfIVCFzpryuhVSMaZUGDNweCQ6T7HDZT6VB0oeCalNlKd99fmD)GNvVtCgESdyJoeC7JKRFqyKbBZEq0PDfv72EqdptlrS8iUIhSAPRdUtBb5yHENBqJXDyTS93YM)C2KxazqzTci75uC3FH8B4)7qw4F92dpXLJ4BDcKhBQjMYfXG)DwG4iM8ODKNuESN0XVZ97Uel3(6LH2ZDxq09Tkxd5VZMalkO4t8)BbTgpbrWx1F7kqr3b8Y10fkEl5WDTOi4nMhLV1qjXvZ9ko)Zm9(NQjCZmA(lqyQB7G6h0Hv(tPnI5BFAceG8BF6pwvuN7GT1LkP3dpYXvJ(aazFjH1w6f79x)wg8FcZzG4GmJ(b2gQoo97xKDBqU(M3D2ZOW80AvZH)Dj4DygOGdpA1teOV7ozgUrHnrlmCws8PVD25O0j6qFvWYa3VktO7xWuYVvR9cgrdM6R(oVno)uAd)2ScfI0W70enjbkO3OGL4WkCn(h(cujG1B74pjthHmRFtz9JttnlHUEBv4)GrUdhh9Uv0epTE2S)7kZXZ0d" end function Gladdy:GetClassicProfile() @@ -18,4 +18,8 @@ end function Gladdy:GetBlizzardProfile() return "4XzVC1TCBJRK(jACH)b4L2X2jU2eBVwo1KPQP0eAjglUrwYlj9MXZf5zFBGUb)N5io2jNlgRqc0OrJgD)1aF8SKV82LlU7PV8LYt8)NlwTF31PRxNV7(LxYxUOCt669FRm)(nv3M)qwXnzBVEF(Uk4vV5SlV9SBA35J3(4M0q3wLwwDsAXj7lwNv8M9B3x4hg8D3T8CJHPf2eLwQSgRWU8l)MwUCX9t(MIPEt1YfRHby)wql31m(9v7pT8CRuXsukJJP1mfJ57pdKC6Q80TdLa(CCcSO65TzlxCXUQSIVKUk7ppE96R2v(NVDlyPE(pV4H07Zk)tST)vX(N2ToB9FD32h962P5LP3Tn7n5fRazC3YfpU)BzfhVQ6P0T()zvr(UVMvnOz44F2o)txV8KLl()YkkZ3V7VEi9)zFXFT7PhcQ5JzvVllDB1gWA)Um)8D5LgyAT7XB3xL9W1BtRYW1LJ3(T0NlVnT4(SkqI3rlCl2S)Bh)ur6PzH)zqdBjtYaK)pzWWDKg03GaMCHfwDmWce8hzIwjRxydM0LN7ScLrWuALori066fXnGQV1R(xSRmRYpFrdW17lxU4KRU92R(G3A(75RR2CE6QkyC9Iew7Hj497lYZk9ks52SSh9)iRXW9L9fRY8(1(5wU)VxYLgwcZpURQk2ww90UdPp6etqxl2T(G7IZGdZM0IhoKoaghJVdFT8qATqK48TUCvAf4BEy9HtBBYl9MTDvhsNmmlp0PvhuR5kTV1FjlT4qAVGZdtJI97piTr7uoAHygDre6s2JWuoD3QSdQxjyVwxKE)(DL3vKLwT5q6OImYpLEiTwNyr7vrw2)KvvKEqUWANu57v(dpcp5GwyQDhFE1297oitGHh0TGr4897QGq7BZO9EV0OJROOU)XvqKhyx)LCBRibyuWD3N9MnzR(ADejVMg7ymSDWXxyfcP)TCMnX6)HKNi14pmgE4hmh1gHJLe(Hw5cnMZLmSXkEOTgRj8CJXfAPq44cSVmfkKeTf7R1r)GPuOmmqgMWi7CHNWLutKoPL6T0zO2OccwdbhrP4sy4yZPFKOLOCvsSZWtC4qZ5yNCww4joMQwnd)qWLj44iebDrKatkuPsW(asJHY1IVrka7cQlmtqfegDWSiGSOyFTAu3ycl2uiCenYkB4hsyYI2DUHSYkjADHPgnskfohLmfhLSI704q6qtp0yNJEfzOf(9mb1iUqAteyB4WlXr3hm1BrsCsu1z4yc5FKH2AitvIWqUosYiAWLyPrRrBMXyWXr412Qg))rYcYSALsjyGdO1Pcz5ui8MXFtXuVXNzSj9U)hH9Gy6yrBSxXTcVTy)3onViBvfawy5IBU4TV7wc0biJw4jq5(H0)Ms5hsTgcsaAAxHeZ)cGkkYEyFioWYfNcPpkV(AyE7Hp0h)cHaSER9VjTn7B)Ly46Jb8S2r6w9u5ekH))c4vyOWDAHgIpZGmGGhSOgVsxeZ4cc4yaofn)ByN6I0cia7BGGEv(5n1oTjkGgv4IhE4jmICTIWokjb1LJycV6CzihCyTKw3iRmUGaU3qZkRsREQ8Ui0TO93sd5NQxqutJsSbaA96hRlUWBZ(7QNkGW(NSn)F(N0I1F)Z3KMd)xFeACK6JvZ7M8(8YQtZ(s6tBdzTnwlRxsOhlYb)QQNxEPI5rhNU6RGR2zN8XZp3p5foRC6UW1J0fUqcanN1OGHbMxxGy4tpkJQyywPzokg9mvmmQ)uDr00LMoWH8WZAMGjuMSldhdbKRA65HC0PEif1SM6yU9zntqCbZAueqzPtBGhxXmj2PhLrN(bujZXcBsCZCiemTAMZDWRpz61XXTWw70UkJpiY5ULpKWFMZ9KzUgc(wZShkftnT744o9bivhWCVjYLAATAe3KaoNznlqquZQlWMkXm7ca1E6594X5uMFGPAK4CcHEUzFmjQFGNOyKWC(ssM1qGqtNX0aXpFaUiT31kNPwb7ZnthAy8bjuwWmCfX6HMLAjLYKPt6o6oQqnwZBIa(vZ0xuitetVMOho31w3mhcdBMyAKs78nV(cOMXsOaWant3eFfyZWB3iNl(Ne2STumXpi9XeHR(b(6JmnGYGNlmd8WgMtxQAk46tHZrLkgCvSCeViwx8PUq8BQytL4pW3Aru)C(WQxoFpE8Mn1U0uefu(s406Ot6(xsTFR2MwgQm7xYO1Ckv3IZrF9t(YDEXhqw(Ve9VvvKnhTWi3caopq1(7F(wWXOk)XV)5GkxxmzqxdhixL)FkTdsNLIxYc7iOmyOo8Q9p4RMC5cVVw)IX74hH(0bXY1Cw)DdVgY1XhSjBwI9iadcwYoETvDeUKzhepDwsFsLEacGxfX6K9JC(AiwJAqo7xdXYz6FkYvlhuzWRHyDcXlYrBcXkgwvYSeRpI)90FlW)2Y)vAm9tmolPpP)7ltPNALZy)z4qaqCgC4qVgY1Xhuk2Se7r0bxEus9zfwlA)139ce9ug4HNf3RHyDAEFmHZsShbzgAJ(iX02hwN0h41Se(05n(Pyk4UFglCsrYG6nEnKlEFvVa5Ee30Xj2Vw666i)ZylTB4Xx(AiwU(vobAvRRd6Y0hYAHyJVSgPE7BdaVpI2m6Pp0Dp5pMEyrO7T6Z)EWSX7GkstfUCOYCAEzwAz2y6ZrksJc8Jiimp3vUb0Hw3esu4(AUqt11zfR8x5)9zHkMiLOLLJngw3FYCwAkAvjAOvvtrf0fMaA52TbG1V7JHMa)6H8DWC1Yq(t87hFZnxCvRxWe6a)fU(43F8PxCz9lW73aEXho(TN18uukxFZfNT426NkfsBcj93F1B(VQFr4mlGNF6nF8ItBAE4ygGhFZvV9JnYgVhv4XlE3XF442AI)sFdE2fHlCQX597F(eWFUzj7hFLtFPa2p0qoHgH18SGZwD5T(75SV7xzR7ie8jUEFbutDEv8Pn01IUGpvCG6FxxBgJ)uIEx42lDdvKKD33Yz9CTKRekRorO90DJroJJeoPPi52hoqhne1B)zl04nEDRLdVDI0IGBS)yasbj)(Zo)wFSNwMZMlmTVTkCSfzRJeq7wpdgImlGiYHqKOXlFhGnhEG0GSqWg5qHoWgaTLiRqsKHg0FvcK9cjmjrBabpCr)irfch3SVFWEGqhSj4d0CzKBdO8IJxCajkBiJucrLGKyqa16H)LJ)qs8PWre4qlqjzSi1gKmjY(HWfjEs88P9pHi4HrJuNq4i(wakh((UC4a2XsIwsKyqHuKWLiqUxyT0KWQcdLlo2AbrYHejsDcySXPHYOqLrRTOwaaPcTvXjfg36d)qJS2G4ndpXGu1WYIKTa5NbyAjc14eMqlcNvxy04iVrqYwqxHRxYAz0QIdvnLosCeFB8xEzOleVq0IEe9Xzuw6bm8hjkokvhAj9shThGEH)ijs3KAM(ijFtdA0fgPLMlidJej2qx1XLpWzgBOb)HLyCt4O1HFOqMNaVfhjd5cYHjsTZCqKgUK8iC6WGQJEkcjo4onXYjnowGtw4V0kg(wWAJmsI4Qe3YP9grJSaBOLHgbo(CRL(dULrBTDjgeKXJC1v0p4r2xXX5iEoXOijMib)p0SPKr(fH)BRaDIPn8qSbQdcABfrFOWjdhgEbjau)c3t3j0rS7FCcT7H6h0AAdlX6id6dA5KrrAqkDXj3AytcossjzBrfYsSxkHKdxOQniH9Dv1blJCTbcjuNE7xcUdA8F7tzLLzLELRFkWpKEF(Qo4VILvAi8xHK((t3CiPPtRjs8uZgBcS(WGyjkUrza3yqZ04SXtTdRdcdkb)DWXPE2OHaF(a7m)wklMsRbeyl8D3nC601u(AEOPuIYabQp3tK21BF2RbXN7nUeAHHyA8eS6Jp2LHJVjMoUEE0LArdtb7hI(in(XNrBSeHWkFJFOhluJGAJNaXDpk6HwvBmKevyZ51NerlT)MaIPwy27O5nG7ofA1(7xUyBwk8ASrT61a4GD5Nwd4EQ9DVbeu3)q6F7TXLGp07Z35r0rw(waxA(8cAlHqRAxO129Eqm(o0600NICzTSlRYBrrUrkp7npv0REiEN6ZmDnUxbZ(i0QWT3KpaUvlc87vx)E22tKOTz4hUqRIKoWjxTv6aCqAV41(kPiZ5Ihtl(6bmK)neJXa1DR8FJbaaiTXhVasHalKx(02TtPjSEADRLGR38CzoufX)PQKbaZiI4826)D7RGQ8)ay19178BcB3P0OqKJUeNRSqwnisPdY(eakctftnK5tIaMHqMysiHJWoYeyUAToYixcAiNYcYqWfGfk0rlL0mXeHyebqBjCFdObTKtCKfGHGPi95URZ8J5gtuewbmhSI4HlhX7ja8aKSCe1HvoeSdKJf1if10ehIexljSzqQaC4LKii2nd46SrY86IIkIRJuubX4AtcM7oXH2pTiIEKOYme3hb(bO2OjlXBzbSIqQSfRTWgHZQIGBIergAboxI8owbO)rqtEtvujjAqtuu3RT0IkH)ZgbSrmu3pYHrmjcbj0CdTMtCrNBrO8wSYgsMr(y7WsTewdQqWyHnaGhHIJLqLDaAiccN4In4AqqXuIyrqorSP4SIflZYGZBeQRKXKuDxrQJlrYB7qSKeJ1bNssl5i66igEnvcHiIQtBOkfbjIkLIy0nGC3gvx0rrerOZe1wmCubqtObwAne6tJlUSJZARmwfJcR4icZNQhr6i0FQiR4tWfyPGGr6yC0uGLpq1RiuoevzuhiW2sfTGWzrQ6Zee8txcUWeP3o4QsuuN4Fp4cHoE1uHh80X5bODiGBdzkjQWtol10(3qy)nesErumjeK2y(dFc3MZAPltV)3FghHBr)hGNCmSHTo9)ZbZleA0a1nk8HRC1iH3mZuz1hwsN8PHZPMq5ngaJ)i8q84qOO(Ta1jIFunlJ5EZBG7fV7))92U2aN6aPBqcywDAVj(mcWzq9NMt7t1s6v12NBwSEMEWiT4OEKKkNGUE8JcRg1yl6EATRl(VFkTOAmw6hpvyBZsuNtXTZHIzfSGtcSLfkXaYJHW7hdwl6x4pCDVc06dfa1N3LU9lhayguknFLNTx7)xVE2fUCF8TJF0LVuFOhBDZbnMMB3FS)7A4I19Xf(JnnS6I2o06vg(bkGyEJ75gwckOnTSe4PZoakBnUukGvyB8WVLMoF8PDcySS(6vM40JRdxGRtww3cgpBx2dphAhU4nsGnnarZbfYlsGKLqoMMcLHuCcOKnaKRZjCS6cLPavnUA)KRaog5)a2paRkT4pMuFeN8BORcsmcQ795L73n6EEtJ306jIFpqdcI)0N3L(q(kS5N0P(8wPUqdyuFp3QchiH0Pbqas8BAMp8kC(d)ry4zLKdqLPTqpcFTqGI88YZDEOrkguqcKgYJfcWXRIkvFVZ1fT)QB6)To26JSpp4GE7vx3zvVDEOn9)2W9jhh5JQmEy(TlcRTs0j3qJgq2Vw(9Di53liSt869aVKvE52p1dk5f)Vq6HSV)5ZHc7((N)9n5vWdt3Tde1QShG8iip0qD6giDy4eAkjzMf2e2CPoFSeNdOrlSs4ROZxMw1ZGzlR8PckJyjMna6wztpUDd0Kn(Z3XNap6Z1yT28l9kgXqFFAepP(NiqrR)V6GFYHm2CyF)y9pQHqq0Z9xTchemGPfaJhc8bqRhSrmUt(iBp)2oHZB2e0oQn1Y(3zE7BnEzVZjPBWd0w2C9GnjvQxj6)D3n8(WcEJ9FCtgfW9nEmH9sMgVMX267bGTT(WgBpNJZp02BuqHqqjm(BLiuRfy7DXP7X7wTbgJOMVSp9BFbXb65iSSZPOUkpoY1(vHhg3XvTC5))Oi6pdb" +end + +function Gladdy:GetRukkProfile() + return "4XzTCf1CBJ7J)dZ98MrKuII6X4KM2mxBAU40z3DMDCxfBLyD12kNK81n7d7N9)GaGsuYYosBA7dnksKaGGGa)iiywiwC)I5RkNvuUkR8IInfL2xKU4gXI5pG))t4)xA))6fZxwuSzvX33n6o8W(hFSAM9)oFZZRP29)NvwLxS7RBt)Flk)6U9BX3MUVm9YmB7pgXd8iEaknPv1ZspQ0tTpOT9px89SsOd3N9x17lZwmFEXM8vn053(miMz1lUrQvlMxTofgPv5pTU((8TzL)2IRcJ1rkHqjKbAJoWS4XFjmbiBw9hYs3uVgOXvf7agDzrzE1T3cCoDzE6MlyTwRkOmD3tzxSoB53UdBXIhwmF3Z3xMTTajXV7efq6t3TRy)ULzBZ2vxzhG1L57(ww9DzPREX2XQNZwA)z2UST4l4g8LQSv2FDnkC2NwLvzvdPL1VaYqw1(YYSL1WCrf(vB3QA7X9RHMSgeDqJG6VvLxMxL(WMSlYlxUjZ2s3uWt(Q)GZchEcGfSdPcRGCkkCykJLs1IzlMlcuGUgEqjsur22ldc0A7dWh42inbj4drHMy6njXryVcfcBB1XyxeATjbjI0iKuldcv4NsIIP(gB4hccdjAOdcqgkmMqSTkBtSVXOIjrirz0CBcrchjd1evmjb4dAb)qsKIOBOIyn8gdXAHG6KjMg1MGWgXuIcUqLqQdPeLozcmOWMOsG(qJKasOIPVOKGEb)cO6qrqQJeKUmjK6BCejBbYysuKYeIZHGvp9P4eAqdJAbnw1g6n6OisXycts4bRtQSZn4SvOG4LmmwscHX4ASHyAID1h0ytIHgbHctenusKuteWCljfWcr7BcJcvgwFYkytKg5GMuEGCQrbgihnVz08KUqfqgvATgjlOOHFuJlS)18vWsNBaZl3I53TZA7UYsuRlRR3vNvwU)5ACbqL3xx78jCt62m7I655)DMLu4s9I6ST3UjToJCmE(MVN(s19PLpLvtRArpNZxx89ZBCmwzj7YChpEO1J2hYS(PaIhTy(Jfl3xngFIOdAAqDBr1I5Z(893)5pXe1YzW3eU8Cv5fGG(e4uldxzwTjl7z7dzTsYJfLlZUEzXo7VKB)5ncLoiHCuxxUPQE)UX0NOey(3ky7wn6UaoJr2SoTCRFhMDm5YA3aD4BvJH8WYaJT1vltRHj7X1hreokwLxzvBqqHr0jDqmoNSA5OATimY26hZsl7nOBBc4SQtVTk2IIrjnrMqdprmHUiXUK9mmKtHGwJQxjuVwvM(eek6HYSuyn3i6yiRK3NoMwhzJhy1xLzz)DwDz6OmHJmQqBVY3(m8MrnX0yo(YYnf7gLkqlqzdvcORILPBYW1SoWzZRFbEZC0DZJW6Y)48vR(8UQ)49BsxT6L)46TPpLv9huB)A1)3(0YSvF9HnpBPGLBKZNqyL)AWvXg0DXdSxgxyx0lW9FgWTa9Ex6faSJA77P(kJ0wVp8Ve45GJq)01fxlWph1FFzX3VmNbCSy(Dx)(pCFRhmphNS3rYHkc4X(RquwtpZ8ucpvWzwbBFvDXwlYUfZTakEnWG1mzfrqqTFc01ydZ8gi7zqOxKYNb249jUkigCG9gO(rfAWF9pbYAayB)4jRom5Nbzfbr)uOBKcaA9JNSgP8nzODeYkdnVjP9SiN5lr6ZI8TFvAii)BG6h1(9Tj0hBMth)ZWGqgzrR)JNUgaV(BHSNj4PUKgyInK2Iq5nq6JPGJv)u87ebrIEdK9miYGhLplr7BdhbBZ5nq8Jh34NIQqy(zmXPaOXVjv8X8bRFJrIod2eTVrSDU001q(NXsAJDlV)4jlGZ9hR0wZaVUndaJci1FkZsZN6Iqdrc6NvkVeBHzRRFACG9l3K4QFr7abIBH(Q0L1fOZKJU5xlf8s625CAVSV2YTpMxvFz2JP73GBfrhFW6KNlZbXR(fcMlaWF53aj(DZ(YvxzhWu(KMuxesvuFf)R0fvyCqF)cTDXU)CUln8aZU1K4ru0bUlFnPct)XK6IuPpaVYRYfHOpwKbh7(AyZjuxdpPGz4BsCrghyoUown88O44kmrWbtJy6QMehIoeH1RmYdddcp(iFqMGjWCkddHSV)8xBspuNC8UipKfXjtLfaQo9Owt51fmzStIly2ANetIIpi43RTOkea9nnMimQP61YaCzAmrkJMQ7uHrhnr)wucRNGPcLy7jy(s59EscLqNeF8PKbxuj1jMP2LGOWP6NloEIwWc1jIlm88EWu9XtNoWuMsWtryesLxib5eh405bnPUab3oHUsEOPO5W9O8ARCdvtn2gD(ftIlQa5jI8CKiOYt4pDy1vWeXbbHCfhFKmCSk9KJmOuXt1npDOrtWawQsKhFKenqhIKXtCvLsPoiNtVI2sfgDcf8WZ745BoPUqNS2eCzBpVTP0C1udIKemvtr8K(MwpeNWh3qXPWJoCc2u2dj9eErhyDETlF7NVSEpvWaUtn3VybO0U3E4FxVD7E6ii82BCscV34aztgECNKF7g4aabZxM)wp9bhfgt5z4vhf9lrJs8ykPJxqf7(D)roPD(u6FHQM8(76SF5C4oHfBYUwFmUUQSpzw1wLi4SkwpdJEeA3G9xE2oz3FE6Qc6KlhUVNHhehUJDVP)nPvv2J2z0SVTQtUNeC3ERFZtYKTJ7uOb0NZtRbLZd7RXtm(gCRuvpNTzJndf7s3c8HoS7fZ3wSk)X8Ss7xGouBt9amas5SqutnZs2biYv2d7EyAiBPbEK4wsOgGeNJn6F(Z)l1W0PLmROeESYsPWtrPWPqPOtrPOPqj9POKEkuk(uukEkuYCkkzMcLsofLsMcLO4MhJuw31JMwDwvXPNAULW4bx(HVCZ9V7o7tBZ3bgWaMiCL8VE(D3D9N9(qaGzW(HBp)JNF51308bk5qWh(05V)DTVLOYT3D97MFFZBvsfSrgI6F8Zx8F38bCBQW7V8UVC9LTnhHobV(Up)(V0sBQoEGxp)dN)PZ9LeBT7qPK03R3)ENg(U7zAHU3tCE3FRmGo47BHMLV7jYPypVU2sR51866Y9ytH(GZSGw6KBQbrBjpvUxW2GLY1RqM4tTfyMthEav9BdwfzNUjXVwduaU2tM5T2elZLc5iQquk4B3er3eAdRiHp(URU3liDhZIBSfyHlLYy5s9oSkiN1vo46siyiRUre4Sp4H7Y2CBr(UAjNK8vLdvINwB4EPn)H0sxfLz34WJLGRN2A9OTlTVdnzpfcp)soR)3(u6t5lhq9JNAaAIZfEtlQVM6CRdYh8yu6pdG6u9zDl5mlKIwpI36vXTwbCGkMBHdEajJ1V8mmHE76xQYbDaBMWMmpqtheqa)M)HInV41uqAdCyDJcSwzu4A)UCvUfNNxxIc84G(G2FE5Y0Dd3drtCo)oCtkbLe1EQaP)Ga)DlCKdgjZrlnUxidoGvZ3V7B7atT(D9l8RjRw2c2nGe6duaLf2IbUdJAzsDVZPHlFOOJVwqWRfwMF(ULRbJMw7fRf2bwPdD0q4MEYw5Q2X7TUTCfLQTYtNzZuzsevXOgjvcP45uapeBZ4l8t7r2mZMCwUoxtc5YZL)zOmclM1KafvxPkPalEuQKuXmGB7heLf7aMVAlbfkxzXs0ZXphd5Q9vf4yucvTRYGyssce0dQqIq2m7odthdrjDmvdSQafvMSyICN5spR9nCTbRJOcYvA4s1feo67Cr0YL)lGjGjTkKl4yQmPnjsQIETjzeheXHiRmoEJ5iIgNur2c8MggH6qsyIIIjPikHk53qblWe4c4HiQ8E1Cv(IbQGhIdyDimDIpOC1ITrQXwGBZh5MqrsQKyQ0PUThc2muRsSIscOTRgslJNgf2fU2WJK9QrCJomMFra9qsOGOQH0KwQZLSSoIEiHRR82IexX2MAsPl1QyESqfNUmjg7AKB6dmMPgQPhI5I1gpNd4HqQYVHVsCsZMGcyG0ymJKuluSfHjczAKZsrQiMBI4cKpI4fyKH)KNXOVcABS3kBzUJJnbV2WPKLudJdiLGGEFCm)dAjtumBq4QPCzCcBQhYpi0ylubcAmsNicrsUCXH)rQTqLR00PFpwsgX8cEW3a3bjVSIl(BmPsi7Lmbi5dpXTz852yFDcV6H7h0AEblxY5AYgmwWkfLMUnac2SgwKqCsPyDljqXCzUN4kDDzyJcbx3v3jw9)EiUomoJgjJp8h3211bT5sQpIzBa7dX205I30bj2QJa7lOpSpqqUTOeC4N)M3iHp6VRSfB9Qn41G5LfxbRZ1bs7j8eidnjA7n2jSr(X4x2mVKw7qz2hb1L5vzPvzdPuTxYLsclvNDbEHd8kxsenjmsmeYiRvXa7eYxN6MBSnLL8jHTE83phhN6HAfLpo1obKnHduDlqvNoTxk08MN7wIVnvvsl2CMeEG(Dc0Ns)lRgTc2MWhZ3XnhNR8UmeTOWrkWfym2QEdOnfwygO(m)3ob26xr7MVkB2M8)(VtlHbkwY0(ZWFggEoOnwqYTWE8zjpM90n82RBZ1Ptjmu9205INnczMYMwluD)jIUz2erInZHddIdq(2KggssGKcby3im5IJrCiyNRbumla5b2Xy2xCI2f5YHllMHtOzucnxmlLqZTrBipV2qcnbuixUjHCiiY1o1bWdobJqcHzyAzCxMjdfdfCDtsui30edbWlsXH8dJz2RysW33kaUqS7MPzCKYbxGfujFhW0juiHedP)IKoqj8LRsgOi8eayaEWY3BkPGVdtGGqqwJDOKcDXmfe(jf0cAS4UjuHaOskwSvv5eskoP7sZzLwEsLHve7WbeYx4lGUihtCr2WMR55C(2XjIjeIXeGzMMA(E4zie8YynjqaVOgarDjYfKWOzbjKW25UlyX8fOdWv6WwBKUMsJQah6DnnUjeuQGafdN3Dz2u0ThZqqu47qhyuYsPGaT5GggXitLoWcrAEdiafjHkuZgWjmoqqCjdfPd4xGSrJrCnssTfaiRzqnAJBANg1Xkh44qciRd9idZvzyqfHU7PxcnbRKm6etGGufeQuggmeaKaR4KbgdNkKNqebbm9cKmQgtcnXW3fpjyQsgEnxGVabz41Cx8alDACashHJtZQs(Q4XglnxerndPuZaeLoYKWiL(RfxfbdkegFuiG4nUxC8HU5jToXBYLWrbgrj6R2hnqD2U61vD9xEu4vNzADW(qrDDX2pbDdtSByJ)8(zcQjAGFYDwv()aaBQpfVI9CM3szV4WDUI2)7rvHNl0REBSdgaSXidfXtEVFFwvvgE1g5XZaX))9oxqrUNTxRjisdJ88anCR0FX(YEa5eDmc0EcLFgUmTIXbyfo9DBQ5Mw5toHttzVwO2rDdg(Ey0ID5kIN4vUCj1S7HdeNtIqyKyaxFKRY(QYB2VzZiSdwv(H0npoITa0GmBeT1FkFkM0Lf73TYzs3zkRD3mo8SDr86FlB7Fec9wXrYM9E1)Try33DpBdLhBVsJMmmDRmo6oXqE7HHKsH7bMdBYsbwE6v0IwtHwFudEqkTR)uE7kymtMUDir9gG)0(Q(PeKhGdq1ZKh691ZmzeBg(W7Oyh3m12)AjmZU6NVhK2F5GOlf5vf7g0tTULt(k(gQC5l7s3MVKe0zD391i0IDmw(x4TVZsJ(z193xC1VaOCJIT3(EaPwsIg)ZDrCxX8Gfb8PBidI8DZDFX52DhD9k)YwzaJ582BGQ3m5qhcKB)OwlV2TC1P8rqvAlabVv38QjV1lv1P17REWTO05xv37pok(N1sZTKFU9p)gZo0BpnxmhJP(p)5vGZZ)5p)1151zEUL7ESxOvrR6y9KpNkAzFNTxYk5(lR8pH1rq4UEcAx03FhOTOW6Bq5P5wM3ECtkH)8NFJCHC9M99prVf()rw5G5FlfCPfcNF7jnFSjbaDwfD45rGgkhEuyTEWGj)MC901Xo5BZUZFFT0yD723JRtFWaEAoKC3HTWI6I(Lf0KCj0bayJ9817QOsfchGnvyvJHA9If)N)p8ugma" end \ No newline at end of file diff --git a/Lang.lua b/Lang.lua index 30f1ca6..473b243 100644 --- a/Lang.lua +++ b/Lang.lua @@ -427,7 +427,7 @@ elseif GetLocale() == "deDE" then L["Show name text"] = "Namen zeigen" L["Show the units name"] = "Zeige den Namen des Gegners" L["Show ArenaX"] = "ArenaX zeigen" - L["Show Arena1-5 as name instead"] = "Zeigt Arena1-5 anstatt des Namens" + L["Show 1-5 as name instead"] = "Zeigt 1-5 anstatt des Namens" L["Show the actual health"] = "Zeige die momentane Gesundheit" L["Show the actual health on the health bar"] = "Zeigt die momentane Gesundheit" L["Show max health"] = "Zeige maximale Gesundheit" diff --git a/Modules/Announcements.lua b/Modules/Announcements.lua index eaa14cb..afeca6a 100644 --- a/Modules/Announcements.lua +++ b/Modules/Announcements.lua @@ -177,9 +177,9 @@ function Announcements:Send(msg, throttle, color) RaidNotice_AddMessage(RaidBossEmoteFrame, msg, color) elseif (dest == "fct" and IsAddOnLoaded("Blizzard_CombatText")) then CombatText_AddMessage(msg, nil, color.r, color.g, color.b, "crit", 1) - --[[elseif (dest == "msbt" and IsAddOnLoaded("MikScrollingBattleText")) then - MikSBT.DisplayMessage(msg, MikSBT.DISPLAYTYPE_NOTIFICATION, true, color.r * 255, color.g * 255, color.b * 255) - elseif (dest == "sct" and IsAddOnLoaded("sct")) then + elseif (dest == "msbt" and IsAddOnLoaded("MikScrollingBattleText")) then + MikSBT.Animations.DisplayMessage(msg, MikSBT.DISPLAYTYPE_NOTIFICATION, true, color.r * 255, color.g * 255, color.b * 255) + --[[elseif (dest == "sct" and IsAddOnLoaded("sct")) then SCT:DisplayText(msg, color, true, "event", 1) elseif (dest == "parrot" and IsAddOnLoaded("parrot")) then Parrot:ShowMessage(msg, "Notification", true, color.r, color.g, color.b)--]] @@ -211,6 +211,7 @@ function Announcements:GetOptions() ["party"] = L["Party"], ["rw"] = L["Raid Warning"], ["fct"] = L["Blizzard's Floating Combat Text"], + ["msbt"] = L["MikScrollingBattleText"], } return { diff --git a/Modules/Auras.lua b/Modules/Auras.lua index 1178cb5..50e65cc 100644 --- a/Modules/Auras.lua +++ b/Modules/Auras.lua @@ -106,7 +106,7 @@ function Auras:CreateFrame(unit) Auras:AURA_FADE(self.unit, self.track) else self.timeLeft = self.timeLeft - elapsed - self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) + Gladdy:FormatTimer(self.text, self.timeLeft, self.timeLeft < 10) end else self:SetAlpha(0.01) @@ -170,11 +170,11 @@ function Auras:CreateInterrupt(unit) self.active = false self.priority = nil self.spellSchool = nil - self.cooldown:SetCooldown(GetTime(), 0) + self.cooldown:Clear() self:SetAlpha(0.01) else self.timeLeft = self.timeLeft - elapsed - self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) + Gladdy:FormatTimer(self.text, self.timeLeft, self.timeLeft < 10) end else self:SetAlpha(0.01) @@ -282,12 +282,12 @@ function Auras:Test(unit) self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 27010, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) self:SPELL_INTERRUPT(unit,19244, select(1, GetSpellInfo(19244)), "physical", 25396, select(1, GetSpellInfo(25396)), 64) elseif (unit == "arena3") then - spellName, _, icon = GetSpellInfo(31224) + spellName, _, icon = GetSpellInfo(34709) self:AURA_FADE(unit, AURA_TYPE_BUFF) - self:AURA_GAIN(unit,AURA_TYPE_BUFF, 31224, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) + self:AURA_GAIN(unit,AURA_TYPE_BUFF, 34709, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) spellName, _, icon = GetSpellInfo(18425) - self:AURA_FADE(unit, AURA_TYPE_DEBUFF) - self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 18425, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) + --self:AURA_FADE(unit, AURA_TYPE_DEBUFF) + --self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 18425, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration) end end @@ -348,7 +348,7 @@ function Auras:AURA_FADE(unit, auraType) return end if auraFrame.active then - auraFrame.cooldown:SetCooldown(GetTime(), 0) + auraFrame.cooldown:Clear() end --auraFrame.cooldown:Hide() auraFrame.active = false diff --git a/Modules/BuffsDebuffs.lua b/Modules/BuffsDebuffs.lua index 76672f7..a1f7fa7 100644 --- a/Modules/BuffsDebuffs.lua +++ b/Modules/BuffsDebuffs.lua @@ -1,7 +1,7 @@ local GetSpellInfo = GetSpellInfo local CreateFrame = CreateFrame local GetTime = GetTime -local select, lower, ceil, tremove, tinsert, pairs, ipairs, tostring = select, string.lower, ceil, tremove, tinsert, pairs, ipairs, tostring +local select, lower, ceil, tremove, tinsert, pairs, ipairs, tostring, random = select, string.lower, ceil, tremove, tinsert, pairs, ipairs, tostring, math.random local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF local auraTypes = {AURA_TYPE_BUFF, AURA_TYPE_DEBUFF} @@ -134,27 +134,30 @@ end function BuffsDebuffs:Test(unit) if Gladdy.db.buffsEnabled then - if unit == "arena1" or unit == "arena3" then - BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_DEBUFF) - BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_BUFF) + local spellSchools = { "physical", "magic", "curse", "poison", "disease", "immune" } - BuffsDebuffs:AddOrRefreshAura(unit, 1943, AURA_TYPE_DEBUFF, 12, 12, 1, "physical", select(3, GetSpellInfo(1943)), 1) - BuffsDebuffs:AddOrRefreshAura(unit, 18647, AURA_TYPE_DEBUFF, 10, 10, 1, "immune", select(3, GetSpellInfo(18647)), 2) - BuffsDebuffs:AddOrRefreshAura(unit, 27218, AURA_TYPE_DEBUFF, 9, 9, 1, "curse", select(3, GetSpellInfo(27218)), 3) - BuffsDebuffs:AddOrRefreshAura(unit, 27216, AURA_TYPE_DEBUFF, 9, 9, 1, "magic", select(3, GetSpellInfo(27216)), 4) - BuffsDebuffs:AddOrRefreshAura(unit, 27189, AURA_TYPE_DEBUFF, 9, 9, 5, "poison", select(3, GetSpellInfo(27189)), 5) + BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_DEBUFF) + BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_BUFF) - BuffsDebuffs:AddOrRefreshAura(unit, 33076, AURA_TYPE_BUFF, 15, 15, 1, "magic", select(3, GetSpellInfo(33076)), 1) - BuffsDebuffs:AddOrRefreshAura(unit, 26980, AURA_TYPE_BUFF, 12, 12, 5, "magic", select(3, GetSpellInfo(26980)), 2) - else - BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_DEBUFF) - BuffsDebuffs:AURA_FADE(unit, AURA_TYPE_BUFF) - - BuffsDebuffs:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 12, 12, 1, "poison", select(3, GetSpellInfo(1943)), 1) - BuffsDebuffs:AddOrRefreshAura(unit, 1, AURA_TYPE_BUFF, 10, 10, 2, "magic", select(3, GetSpellInfo(1)), 2) - - BuffsDebuffs:AddOrRefreshAura(unit, 5, AURA_TYPE_DEBUFF, 12, 12, 3, "physical", select(3, GetSpellInfo(27009)), 1) - BuffsDebuffs:AddOrRefreshAura(unit, 5, AURA_TYPE_DEBUFF, 11, 11, 4, "disease", select(3, GetSpellInfo(11426)), 2) + local i = 1 + for spellID, enabled in pairs(Gladdy.db.trackedDebuffs) do + if i > 4 then + break + end + if enabled then + BuffsDebuffs:AddOrRefreshAura(unit, spellID, AURA_TYPE_DEBUFF, 15, 15, random(1,5), spellSchools[random(1,6)], select(3, GetSpellInfo(spellID)), i) + i = i + 1 + end + end + i = 1 + for spellID, enabled in pairs(Gladdy.db.trackedBuffs) do + if i > 4 then + break + end + if enabled then + BuffsDebuffs:AddOrRefreshAura(unit, spellID, AURA_TYPE_BUFF, 15, 15, random(1,5), spellSchools[random(1,6)], select(3, GetSpellInfo(spellID)), i) + i = i + 1 + end end end end @@ -469,28 +472,23 @@ local function iconTimer(auraFrame, elapsed) local timeLeftMilliSec = auraFrame.endtime - GetTime() local timeLeftSec = ceil(timeLeftMilliSec) auraFrame.timeLeft = timeLeftMilliSec - --auraFrame.cooldowncircle:SetCooldown(auraFrame.startTime, auraFrame.endtime) - if timeLeftSec >= 60 then - if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(0.7, 1, 0) end - auraFrame.cooldown:SetFormattedText("%dm", ceil(timeLeftSec / 60)) - elseif timeLeftSec < 60 and timeLeftSec >= 11 then - --if it's less than 60s - if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(0.7, 1, 0) end - auraFrame.cooldown:SetFormattedText("%d", timeLeftSec) - elseif timeLeftSec <= 10 and timeLeftSec >= 5 then - if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(1, 0.7, 0) end - auraFrame.cooldown:SetFormattedText("%d", timeLeftSec) - elseif timeLeftSec <= 4 and timeLeftSec >= 3 then - if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(1, 0, 0) end - auraFrame.cooldown:SetFormattedText("%d", timeLeftSec) - elseif timeLeftMilliSec <= 3 and timeLeftMilliSec > 0 then - if Gladdy.db.buffsDynamicColor then auraFrame.cooldown:SetTextColor(1, 0, 0) end - auraFrame.cooldown:SetFormattedText("%.1f", timeLeftMilliSec >= 0.0 and timeLeftMilliSec or 0.0) - elseif timeLeftMilliSec <= 0 and timeLeftMilliSec > -0.05 then -- 50ms ping max wait for SPELL_AURA_REMOVED event - auraFrame.cooldown:SetText("") - else -- fallback in case SPELL_AURA_REMOVED is not fired + if Gladdy.db.buffsDynamicColor then + if timeLeftSec >= 60 then + auraFrame.cooldown:SetTextColor(0.7, 1, 0) + elseif timeLeftSec < 60 and timeLeftSec >= 11 then + auraFrame.cooldown:SetTextColor(0.7, 1, 0) + elseif timeLeftSec <= 10 and timeLeftSec >= 5 then + auraFrame.cooldown:SetTextColor(1, 0.7, 0) + elseif timeLeftSec <= 4 and timeLeftSec >= 3 then + auraFrame.cooldown:SetTextColor(1, 0, 0) + elseif timeLeftMilliSec <= 3 and timeLeftMilliSec > 0 then + auraFrame.cooldown:SetTextColor(1, 0, 0) + end + end + if timeLeftMilliSec < 0 then auraFrame:Hide() end + Gladdy:FormatTimer(auraFrame.cooldown, timeLeftMilliSec, timeLeftMilliSec <= 3) else auraFrame.cooldown:SetText("") end diff --git a/Modules/Clicks.lua b/Modules/Clicks.lua index c729c9e..ae9b9a3 100644 --- a/Modules/Clicks.lua +++ b/Modules/Clicks.lua @@ -53,8 +53,8 @@ BINDING_NAME_GLADDYBUTTON3_BUTTON5 = L["Button5 Click Enemy 3"] BINDING_NAME_GLADDYBUTTON4_BUTTON5 = L["Button5 Click Enemy 4"] BINDING_NAME_GLADDYBUTTON5_BUTTON5 = L["Button5 Click Enemy 5"] -function Clicks:Initialise() - self:RegisterMessage("JOINED_ARENA") +function Clicks:Initialize() + -- end function Clicks:Reset() @@ -62,21 +62,14 @@ function Clicks:Reset() end function Clicks:ResetUnit(unit) - local button = Gladdy.buttons[unit] - if (not button) then - return - end - - for k, v in pairs(Gladdy.db.attributes) do - button.secure:SetAttribute(v.modifier .. "macrotext" .. v.button, "") - end + -- end -function Clicks:Test() - Clicks:JOINED_ARENA() +function Clicks:UpdateFrame(unit) + self:SetupAttributes(unit) end -function Clicks:JOINED_ARENA() +function Clicks:UpdateFrameOnce() for k, v in pairs(Gladdy.buttons) do local left = GetBindingKey(("GLADDYBUTTON%d_LEFT"):format(v.id)) local right = GetBindingKey(("GLADDYBUTTON%d_RIGHT"):format(v.id)) @@ -145,7 +138,7 @@ function Clicks:SetupAttribute(button, key, mod, action, spell) end local buttons = { ["1"] = L["Left button"], ["2"] = L["Right button"], ["3"] = L["Middle button"], ["4"] = L["Button 4"], ["5"] = L["Button 5"] } -local modifiers = { [""] = L["None"], ["ctrl-"] = L["CTRL"], ["shift-"] = L["SHIFT"], ["alt-"] = L["ALT"] } +local modifiers = { [""] = L["None"], ["*"] = L["All"], ["ctrl-"] = L["CTRL"], ["shift-"] = L["SHIFT"], ["alt-"] = L["ALT"] } local clickValues = { ["macro"] = MACRO, ["target"] = TARGET, ["focus"] = FOCUS, ["spell"] = L["Cast Spell"], ["disabled"] = ADDON_DISABLED } local function SetupAttributeOption(i) @@ -221,9 +214,4 @@ function Clicks:GetOptions() options[tostring(i)] = SetupAttributeOption(i) end return options -end - -function Clicks:UpdateFrame(unit) - self:SetupAttributes(unit) - self:JOINED_ARENA() end \ No newline at end of file diff --git a/Modules/Cooldowns.lua b/Modules/Cooldowns.lua index d31c361..aa6b984 100644 --- a/Modules/Cooldowns.lua +++ b/Modules/Cooldowns.lua @@ -295,19 +295,13 @@ function Cooldowns:CooldownStart(button, spellId, duration) self.timeLeft = self.timeLeft - elapsed local timeLeft = ceil(self.timeLeft) if timeLeft >= 540 then - self.cooldownFont:SetText(ceil(timeLeft / 60) .. "m") self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.cooldownFont), Gladdy.db.cooldownSize / 3.1 * Gladdy.db.cooldownFontScale, "OUTLINE") elseif timeLeft < 540 and timeLeft >= 60 then - -- more than 1 minute - self.cooldownFont:SetText(ceil(timeLeft / 60) .. "m") self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.cooldownFont), Gladdy.db.cooldownSize / 2.15 * Gladdy.db.cooldownFontScale, "OUTLINE") elseif timeLeft < 60 and timeLeft > 0 then - -- between 60s and 21s (green) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.cooldownFont), Gladdy.db.cooldownSize / 2.15 * Gladdy.db.cooldownFontScale, "OUTLINE") - self.cooldownFont:SetText(timeLeft) - else - self.cooldownFont:SetText("") end + Gladdy:FormatTimer(self.cooldownFont, self.timeLeft, self.timeLeft < 0) if (self.timeLeft <= 0) then Cooldowns:CooldownReady(button, spellId, frame) end diff --git a/Modules/Diminishings.lua b/Modules/Diminishings.lua index 66a772d..9c3b00b 100644 --- a/Modules/Diminishings.lua +++ b/Modules/Diminishings.lua @@ -93,11 +93,7 @@ function Diminishings:CreateFrame(unit) Diminishings:Positionate(unit) else self.timeLeft = self.timeLeft - elapsed - if self.timeLeft >=5 then - self.timeText:SetFormattedText("%d", self.timeLeft) - else - self.timeText:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) - end + Gladdy:FormatTimer(self.text, self.timeLeft, self.timeLeft < 5) end end end) diff --git a/Modules/ExportImport.lua b/Modules/ExportImport.lua index fe0d112..9d9110a 100644 --- a/Modules/ExportImport.lua +++ b/Modules/ExportImport.lua @@ -100,7 +100,7 @@ function ExportImport:CheckDeserializedOptions(tbl, refTbl, str) end for k,v in pairs(tbl) do if refTbl[k] == nil then - return false, str .. "." .. k .. " does not exist" + --return false, str .. "." .. k .. " does not exist" else if type(v) ~= type(refTbl[k]) then return false, str .. "." .. k .. " type error. Expected " .. type(refTbl[k]) .. " found " .. type(v) diff --git a/Modules/Healthbar.lua b/Modules/Healthbar.lua index c62f16a..28d4d57 100644 --- a/Modules/Healthbar.lua +++ b/Modules/Healthbar.lua @@ -132,7 +132,7 @@ function Healthbar:SetHealthText(healthBar, health, healthMax) local healthText local healthPercentage = floor(health * 100 / healthMax) - if health == 0 then + if health == 0 and UnitExists(healthBar.unit) and UnitIsDeadOrGhost(healthBar.unit) then self:UNIT_DEATH(healthBar.unit) return end @@ -234,7 +234,7 @@ function Healthbar:JOINED_ARENA() if Gladdy.db.healthNameToArenaId and Gladdy.db.healthName then for i=1,Gladdy.curBracket do local healthBar = self.frames["arena" .. i] - healthBar.nameText:SetText("Arena" .. i) + healthBar.nameText:SetText(i) end end end @@ -499,7 +499,7 @@ function Healthbar:GetOptions() healthNameToArenaId = option({ type = "toggle", name = L["Show ArenaX"], - desc = L["Show Arena1-5 as name instead"], + desc = L["Show 1-5 as name instead"], order = 3, width = "full", disabled = function() return not Gladdy.db.healthName end diff --git a/Modules/Racial.lua b/Modules/Racial.lua index 7172c88..cf988c6 100644 --- a/Modules/Racial.lua +++ b/Modules/Racial.lua @@ -45,33 +45,22 @@ local function iconTimer(self,elapsed) local timeLeft = ceil(self.timeLeft) if timeLeft >= 60 then - -- more than 1 minute self.cooldownFont:SetTextColor(1, 1, 0) - self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60))) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 0.15* self:GetWidth()) * Gladdy.db.racialFontScale, "OUTLINE") - elseif timeLeft < 60 and timeLeft >= 21 then - -- between 60s and 21s (green) - self.cooldownFont:SetTextColor(0.7, 1, 0) - self.cooldownFont:SetText(timeLeft) + elseif timeLeft < 60 and timeLeft >= 30 then + self.cooldownFont:SetTextColor(1, 1, 0) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE") - elseif timeLeft < 20.9 and timeLeft >= 11 then - -- between 20s and 11s (green) - self.cooldownFont:SetTextColor(0, 1, 0) - self.cooldownFont:SetText(timeLeft) - self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE") - elseif timeLeft <= 10 and timeLeft >= 5 then - -- between 10s and 5s (orange) + elseif timeLeft < 30 and timeLeft >= 11 then + self.cooldownFont:SetTextColor(1, 0.7, 0) + self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE") + elseif timeLeft < 10 and timeLeft >= 5 then self.cooldownFont:SetTextColor(1, 0.7, 0) - self.cooldownFont:SetFormattedText("%.1f", self.timeLeft) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE") elseif timeLeft < 5 and timeLeft > 0 then - -- between 5s and 1s (red) self.cooldownFont:SetTextColor(1, 0, 0) - self.cooldownFont:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.racialFont), (self:GetWidth()/2 - 1) * Gladdy.db.racialFontScale, "OUTLINE") - else - self.cooldownFont:SetText("") end + Gladdy:FormatTimer(self.cooldownFont, self.timeLeft, self.timeLeft < 10, true) end end diff --git a/Modules/ShadowsightTimer.lua b/Modules/ShadowsightTimer.lua index 8d95511..097d238 100644 --- a/Modules/ShadowsightTimer.lua +++ b/Modules/ShadowsightTimer.lua @@ -5,6 +5,7 @@ local Gladdy = LibStub("Gladdy") local L = Gladdy.L local ShadowsightTimer = Gladdy:NewModule("Shadowsight Timer", nil, { shadowsightTimerEnabled = true, + shadowsightTimerLocked = false, shadowsightTimerScale = 1, shadowsightTimerRelPoint1 = "CENTER", shadowsightTimerRelPoint2 = "CENTER", @@ -94,7 +95,8 @@ function ShadowsightTimer:CreateTimerFrame() self.timerFrame:Hide() end -function ShadowsightTimer:UpdateFrame() +function ShadowsightTimer:UpdateFrameOnce() + self.timerFrame:EnableMouse(not Gladdy.db.shadowsightTimerLocked) if Gladdy.db.shadowsightTimerEnabled then self.timerFrame:SetScale(Gladdy.db.shadowsightTimerScale) self.timerFrame:ClearAllPoints() @@ -109,7 +111,7 @@ function ShadowsightTimer:UpdateFrame() end function ShadowsightTimer:Start() - self.timerFrame.endTime = 92 + self.timerFrame.endTime = 91 self.timerFrame.timeSinceLastUpdate = 0 self.timerFrame:SetScript("OnUpdate", ShadowsightTimer.OnUpdate) end @@ -149,17 +151,24 @@ function ShadowsightTimer:GetOptions() order = 3, width = "full", }), + shadowsightTimerLocked = Gladdy:option({ + type = "toggle", + name = L["Locked"], + --desc = L["Turns countdown before the start of an arena match on/off."], + order = 4, + width = "full", + }), shadowsightAnnounce = Gladdy:option({ type = "toggle", name = L["Announce"], --desc = L["Turns countdown before the start of an arena match on/off."], - order = 4, + order = 5, width = "full", }), shadowsightTimerScale = Gladdy:option({ type = "range", name = L["Scale"], - order = 5, + order = 6, min = 0.1, max = 5, step = 0.1, diff --git a/Modules/TotemPlates.lua b/Modules/TotemPlates.lua index 90ad86a..189a28f 100644 --- a/Modules/TotemPlates.lua +++ b/Modules/TotemPlates.lua @@ -227,6 +227,7 @@ function TotemPlates:Initialize() self:RegisterEvent("NAME_PLATE_UNIT_ADDED") self:RegisterEvent("NAME_PLATE_UNIT_REMOVED") self:RegisterEvent("PLAYER_TARGET_CHANGED") + self:RegisterEvent("UNIT_NAME_UPDATE") self:SetScript("OnEvent", TotemPlates.OnEvent) if Gladdy.db.npTotems and Gladdy.db.npTotemsShowEnemy then --GetCVar("nameplateShowEnemyTotems") @@ -282,9 +283,31 @@ function TotemPlates:UpdateFrameOnce() nameplate.gladdyTotemFrame.totemName:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.npTremorFont), Gladdy.db.npTremorFontSize, "OUTLINE") nameplate.gladdyTotemFrame.totemName:SetText(Gladdy.db.npTotemColors["totem" .. totemDataEntry.id].customText or "") self:SetTotemAlpha(nameplate.gladdyTotemFrame, k) - self:ToggleAddon(nameplate) + + if not Gladdy.db.npTotems then + nameplate.gladdyTotemFrame:Hide() + self:ToggleAddon(nameplate, true) + else + nameplate.gladdyTotemFrame:Show() + self:ToggleAddon(nameplate) + end + local isEnemy = UnitIsEnemy("player", nameplate.gladdyTotemFrame.unitID) + if Gladdy.db.npTotems and Gladdy.db.npTotemsShowEnemy and isEnemy then + nameplate.gladdyTotemFrame:Show() + self:ToggleAddon(nameplate) + elseif Gladdy.db.npTotems and not Gladdy.db.npTotemsShowEnemy and isEnemy then + nameplate.gladdyTotemFrame:Hide() + self:ToggleAddon(nameplate, true) + end + if Gladdy.db.npTotems and Gladdy.db.npTotemsShowFriendly and not isEnemy then + nameplate.gladdyTotemFrame:Show() + self:ToggleAddon(nameplate) + elseif not Gladdy.db.npTotemsShowFriendly and not isEnemy then + nameplate.gladdyTotemFrame:Hide() + self:ToggleAddon(nameplate, true) + end end - for i,gladdyTotemFrame in ipairs(self.totemPlateCache) do + for _,gladdyTotemFrame in ipairs(self.totemPlateCache) do gladdyTotemFrame:SetWidth(Gladdy.db.npTotemPlatesSize * Gladdy.db.npTotemPlatesWidthFactor) gladdyTotemFrame:SetHeight(Gladdy.db.npTotemPlatesSize) gladdyTotemFrame.totemBorder:SetTexture(Gladdy.db.npTotemPlatesBorderStyle) @@ -337,27 +360,47 @@ end --------------------------------------------------- +function TotemPlates:GetAddonFrame(nameplate) + if self.addon == "Blizzard" then + if nameplate.UnitFrame then + return nameplate.UnitFrame + end + elseif self.addon == "Plater" or self.addon == "Tukui" or self.addon == "ElvUI" then + if nameplate.unitFrame then + return nameplate.unitFrame + end + elseif self.addon == "Kui_Nameplates" then + if nameplate.kui then + return nameplate.kui + end + elseif self.addon == "NeatPlates" then + if nameplate.extended or nameplate.carrier then + return nameplate.extended , nameplate.carrier + end + elseif self.addon == "TidyPlates_ThreatPlates" then + if nameplate.TPFrame then + return nameplate.TPFrame + end + end +end + function TotemPlates:PLAYER_TARGET_CHANGED() for k,nameplate in pairs(self.activeTotemNameplates) do TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, k) end end -function TotemPlates:ToggleAddon(nameplate) - if self.addon == "Blizzard" then - nameplate.UnitFrame:Hide() - elseif self.addon == "Plater" then - nameplate.unitFrame:Hide() - elseif self.addon == "Kui_Nameplates" then - nameplate.kui:Hide() - elseif self.addon == "NeatPlates" then - nameplate.extended:Hide() - nameplate.carrier:Hide() - elseif self.addon == "TidyPlates_ThreatPlates" then - nameplate.TPFrame:Hide() - elseif self.addon == "Tukui" or self.addon == "ElvUI" then - if nameplate.unitFrame then - nameplate.unitFrame:Hide() +function TotemPlates:ToggleAddon(nameplate, show) + local addonFrames = { self:GetAddonFrame(nameplate) } + if addonFrames and #addonFrames > 0 then + if show then + for i,v in ipairs(addonFrames) do + v:Show() + end + else + for i,v in ipairs(addonFrames) do + v:Hide() + end end end end @@ -368,18 +411,27 @@ function TotemPlates.OnUpdate(self) else self.selectionHighlight:SetAlpha(0) end - if (TotemPlates.addon == "Tukui" or TotemPlates.addon == "ElvUI") and self.parent and self.parent.unitFrame then + if (TotemPlates.addon == "Plater" or TotemPlates.addon == "Tukui" or TotemPlates.addon == "ElvUI") and self.parent and self.parent.unitFrame then self.parent.unitFrame:Hide() end end -function TotemPlates:NAME_PLATE_UNIT_ADDED(...) - local unitID = ... +function TotemPlates:OnUnitEvent(unitID) local isEnemy = UnitIsEnemy("player", unitID) + local nameplate = C_NamePlate.GetNamePlateForUnit(unitID) + if not nameplate then + return + end + if not Gladdy.db.npTotems then + self:ToggleAddon(nameplate, true) + return + end if not Gladdy.db.npTotemsShowEnemy and isEnemy then + self:ToggleAddon(nameplate, true) return end if not Gladdy.db.npTotemsShowFriendly and not isEnemy then + self:ToggleAddon(nameplate, true) return end local nameplateName = UnitName(unitID) @@ -387,7 +439,6 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...) totemName = string_gsub(totemName, "%s+$", "") --trim totemName = string_gsub(totemName, "%s+[I,V,X]+$", "") --trim rank totemName = string_lower(totemName) - local nameplate = C_NamePlate.GetNamePlateForUnit(unitID) local totemDataEntry = localizedTotemData["default"][totemName] or localizedTotemData["frFR"][totemName] or localizedTotemData["ruRU"][totemName] if totemDataEntry and Gladdy.db.npTotemColors["totem" .. totemDataEntry.id].enabled then-- modify this nameplates if #self.totemPlateCache > 0 then @@ -412,13 +463,24 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...) TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, unitID) self:ToggleAddon(nameplate) self.activeTotemNameplates[unitID] = nameplate + else + self:ToggleAddon(nameplate, true) end end +function TotemPlates:NAME_PLATE_UNIT_ADDED(...) + self:OnUnitEvent(...) +end + +function TotemPlates:UNIT_NAME_UPDATE(...) + self:OnUnitEvent(...) +end + function TotemPlates:NAME_PLATE_UNIT_REMOVED(...) local unitID = ... local nameplate = C_NamePlate.GetNamePlateForUnit(unitID) self.activeTotemNameplates[unitID] = nil + --self:ToggleAddon(nameplate, true) if nameplate.gladdyTotemFrame then nameplate.gladdyTotemFrame:Hide() nameplate.gladdyTotemFrame:SetParent(nil) diff --git a/Modules/Trinket.lua b/Modules/Trinket.lua index b0078a8..2b4bd2d 100644 --- a/Modules/Trinket.lua +++ b/Modules/Trinket.lua @@ -39,33 +39,22 @@ local function iconTimer(self, elapsed) local timeLeft = ceil(self.timeLeft) if timeLeft >= 60 then - -- more than 1 minute self.cooldownFont:SetTextColor(1, 1, 0) - self.cooldownFont:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60))) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 0.15*self:GetWidth()) * Gladdy.db.trinketFontScale, "OUTLINE") - elseif timeLeft < 60 and timeLeft >= 21 then - -- between 60s and 21s (green) - self.cooldownFont:SetTextColor(0.7, 1, 0) - self.cooldownFont:SetText(timeLeft) + elseif timeLeft < 60 and timeLeft >= 30 then + self.cooldownFont:SetTextColor(1, 1, 0) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE") - elseif timeLeft < 20.9 and timeLeft >= 11 then - -- between 20s and 11s (green) - self.cooldownFont:SetTextColor(0, 1, 0) - self.cooldownFont:SetText(timeLeft) + elseif timeLeft < 30 and timeLeft >= 11 then + self.cooldownFont:SetTextColor(1, 0.7, 0) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE") elseif timeLeft <= 10 and timeLeft >= 5 then - -- between 10s and 5s (orange) self.cooldownFont:SetTextColor(1, 0.7, 0) - self.cooldownFont:SetFormattedText("%.1f", self.timeLeft) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE") elseif timeLeft < 5 and timeLeft > 0 then - -- between 5s and 1s (red) self.cooldownFont:SetTextColor(1, 0, 0) - self.cooldownFont:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0) self.cooldownFont:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.trinketFont), (self:GetWidth()/2 - 1) * Gladdy.db.trinketFontScale, "OUTLINE") - else - self.cooldownFont:SetText("") end + Gladdy:FormatTimer(self.cooldownFont, self.timeLeft, self.timeLeft < 10, true) end end diff --git a/Modules/XiconProfiles.lua b/Modules/XiconProfiles.lua index 0d79261..9fb9c1b 100644 --- a/Modules/XiconProfiles.lua +++ b/Modules/XiconProfiles.lua @@ -54,6 +54,16 @@ function XiconProfiles:ApplyBlizz() Gladdy:ToggleFrame(3) end +function XiconProfiles:ApplyRukk() + local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetRukkProfile()) + if deserialized then + Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db) + end + Gladdy:Reset() + Gladdy:HideFrame() + Gladdy:ToggleFrame(3) +end + function XiconProfiles:GetOptions() return { headerProfileBlizzard = { @@ -151,6 +161,24 @@ function XiconProfiles:GetOptions() width = "full", order = 11, }, - + headerProfileRukk = { + type = "header", + name = "Rukk1's " .. L["Profile"], + order = 12, + }, + rukkProfile = { + type = "execute", + func = function() + Gladdy.dbi:ResetProfile(Gladdy.dbi:GetCurrentProfile()) + XiconProfiles:ApplyRukk() + end, + name = " ", + desc = "Rukk1's " .. L["Profile"], + image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Rukk1.blp", + imageWidth = 350, + imageHeight = 175, + width = "full", + order = 13, + }, } end \ No newline at end of file diff --git a/Options.lua b/Options.lua index b0e4ade..8fd249c 100644 --- a/Options.lua +++ b/Options.lua @@ -1,4 +1,6 @@ -local type, pairs, tinsert, tsort, tostring, str_match, tonumber = type, pairs, table.insert, table.sort, tostring, string.match, tonumber +local type, pairs, tinsert, tsort = type, pairs, table.insert, table.sort +local tostring, str_match, tonumber, string_format = tostring, string.match, tonumber, string.format +local ceil, floor = ceil, floor local InterfaceOptionsFrame_OpenToFrame = InterfaceOptionsFrame_OpenToFrame local GetSpellInfo = GetSpellInfo @@ -6,10 +8,38 @@ local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE local CLASS_ICON_TCOORDS = CLASS_ICON_TCOORDS local AURA_TYPE_DEBUFF, AURA_TYPE_BUFF = AURA_TYPE_DEBUFF, AURA_TYPE_BUFF + local Gladdy = LibStub("Gladdy") local LibClassAuras = LibStub("LibClassAuras-1.0") local L = Gladdy.L +Gladdy.TIMER_FORMAT = { tenths = "tenths", seconds = "seconds", + values = { + ["tenths"] = "xx:xx Miliseconds", + ["seconds"] = "xx Seconds" + }} + +function Gladdy:FormatTimer(fontString, timeLeft, milibreakpoint, showSeconds) + if timeLeft < 0 then + fontString:SetText("") + return + end + local time = timeLeft >= 0.0 and timeLeft or 0.0 + if Gladdy.db.timerFormat == Gladdy.TIMER_FORMAT.tenths and milibreakpoint then + fontString:SetFormattedText("%.1f", time) + else + if time >= 60 then + if showSeconds then + fontString:SetText(floor(timeLeft / 60) .. ":" .. string_format("%02.f", floor(timeLeft - floor(timeLeft / 60) * 60))) + else + fontString:SetText(ceil(ceil(time / 60)) .. "m") + end + else + fontString:SetFormattedText("%d", ceil(time)) + end + end +end + Gladdy.defaults = { profile = { locked = false, @@ -23,6 +53,8 @@ Gladdy.defaults = { barWidth = 180, bottomMargin = 2, statusbarBorderOffset = 6, + timerFormat = Gladdy.TIMER_FORMAT.tenths, + backgroundColor = {r = 0, g = 0, b = 0, a = 0}, }, } @@ -194,12 +226,6 @@ function Gladdy:SetupOptions() desc = L["Toggle if frame can be moved"], order = 1, }, - growUp = { - type = "toggle", - name = L["Grow frame upwards"], - desc = L["If enabled the frame will grow upwards instead of downwards"], - order = 2, - }, growDirection = { type = "select", name = L["Grow Direction"], @@ -273,6 +299,15 @@ function Gladdy:SetupOptions() max = 200, step = 1, }, + backgroundColor = { + type = "color", + name = L["Background color"], + desc = L["Background Color of the frame"], + order = 8, + hasAlpha = true, + get = getColorOpt, + set = setColorOpt, + }, } }, cooldownGeneral = { @@ -343,6 +378,12 @@ function Gladdy:SetupOptions() Gladdy:UpdateFrame() end }, + timerFormat = Gladdy:option({ + type = "select", + name = L["Timer Format"], + order = 11, + values = Gladdy.TIMER_FORMAT.values + }) }, }, fontGeneral = { diff --git a/README.md b/README.md index 3b7b48c..c107f63 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Gladdy - TBC ### The most powerful arena addon for WoW TBC 2.5.1 -## [v1.16-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.16-Beta/Gladdy_TBC-Classic_v1.16-Beta.zip) +## [v1.17-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.17-Beta/Gladdy_TBC-Classic_v1.17-Beta.zip) ###### Please consider donating if you like my work @@ -62,6 +62,22 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca ### Changes +### v1.17-Beta +- option TimerFormat added (seconds or seconds + milliseconds) (General > Cooldown General > Timer Format) +- hide blizzard arena frames without cvars +- fix Gladdy bugging out on arena join when in combat +- fix some TotemPlates issues +- fix Feign Death causing to reset DR and Aura tracking +- ArenaX option in Healthbar module now only shows the number +- add background for all frames (General > Frame General > Background Color) +- add evasion and banish to Aura +- add MSBT to Announcement module +- Shadowsight timer can be locked now +- add "All" modifier to Clicks module +- updated testmode for BuffsDebuffs (show only from enabled set) +- updated Klimp's profile +- added a new Profile in XiconProfiles -> Rukk1 + ### v1.16-Beta - unit gray in stealth when rangecheck module disabled