Compare commits
	
		
			24 Commits
		
	
	
		
			ci-disable
			...
			v1.17-Beta
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					90b146e433 | ||
| 
						 | 
					61f79adda2 | ||
| 
						 | 
					9b8c6a1426 | ||
| 
						 | 
					d44ac29f43 | ||
| 
						 | 
					751e84c61d | ||
| 
						 | 
					f92b3a4964 | ||
| 
						 | 
					c2fec39202 | ||
| 
						 | 
					9f1bda3e80 | ||
| 
						 | 
					fdeea258be | ||
| 
						 | 
					960a98d244 | ||
| 
						 | 
					82ec1460f8 | ||
| 
						 | 
					23b9e2dfae | ||
| 
						 | 
					755a3e52b5 | ||
| 
						 | 
					5767bc7ae3 | ||
| 
						 | 
					b1070d070a | ||
| 
						 | 
					5f4ab71a5a | ||
| 
						 | 
					c43228f0b9 | ||
| 
						 | 
					b54ed1cda1 | ||
| 
						 | 
					19d0460501 | ||
| 
						 | 
					cb6e519afe | ||
| 
						 | 
					d9f0c1491a | ||
| 
						 | 
					17a983fad6 | ||
| 
						 | 
					4e0ea70bfa | ||
| 
						 | 
					964a4b4f88 | 
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								Frame.lua
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										51
									
								
								Gladdy.lua
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Images/BasicProfiles/Rukk1.blp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Images/BasicProfiles/Rukk1.blp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								Lang.lua
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
							
								
								
									
										55
									
								
								Options.lua
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								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 = {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								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)
 | 
			
		||||
 | 
			
		||||
###### <a target="_blank" rel="noopener noreferrer" href="https://www.paypal.me/xiconqoo/10"><img src="https://raw.githubusercontent.com/XiconQoo/Gladdy/readme-media/Paypal-Donate.png" height="30" style="margin-top:-30px;position:relative;top:20px;"></a> 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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user