Compare commits
	
		
			27 Commits
		
	
	
		
			v1.07-Beta
			...
			classic-pr
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					c5f2ee1eff | ||
| 
						 | 
					4eda8cea8f | ||
| 
						 | 
					fb953530b6 | ||
| 
						 | 
					9d26713dc1 | ||
| 
						 | 
					db1e3da6fc | ||
| 
						 | 
					4721324a2a | ||
| 
						 | 
					51e484eadd | ||
| 
						 | 
					46f379c1e4 | ||
| 
						 | 
					5e42a9b51f | ||
| 
						 | 
					df58544f6e | ||
| 
						 | 
					43518055f0 | ||
| 
						 | 
					9ef174e290 | ||
| 
						 | 
					a60119caa2 | ||
| 
						 | 
					1546e3db6e | ||
| 
						 | 
					82a9a014e4 | ||
| 
						 | 
					a9a1a77dd3 | ||
| 
						 | 
					084fad0074 | ||
| 
						 | 
					2b9e219839 | ||
| 
						 | 
					ba8ea87863 | ||
| 
						 | 
					f498a0dde1 | ||
| 
						 | 
					673dc72b3b | ||
| 
						 | 
					6da33b6c68 | ||
| 
						 | 
					0c6cae0b04 | ||
| 
						 | 
					ded321e772 | ||
| 
						 | 
					7015bb989e | ||
| 
						 | 
					eaeccf5595 | ||
| 
						 | 
					c7d07c62ee | 
@@ -177,7 +177,7 @@ function EventListener:ARENA_OPPONENT_UPDATE(unit, updateReason)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local exceptionNames = {
 | 
			
		||||
local exceptionNames = { -- TODO MOVE ME TO CLASSBUFFS LIB
 | 
			
		||||
    [31117] = GetSpellInfo(30405) .. " Silence", -- Unstable Affliction Silence
 | 
			
		||||
    [43523] = GetSpellInfo(30405) .. " Silence",
 | 
			
		||||
    [24131] = select(1, GetSpellInfo(19386)) .. " Dot", -- Wyvern Sting Dot
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										117
									
								
								Frame.lua
									
									
									
									
									
								
							
							
						
						
									
										117
									
								
								Frame.lua
									
									
									
									
									
								
							@@ -30,6 +30,9 @@ Gladdy.BUTTON_DEFAULTS = {
 | 
			
		||||
 | 
			
		||||
function Gladdy:CreateFrame()
 | 
			
		||||
    self.frame = CreateFrame("Frame", "GladdyFrame", UIParent)
 | 
			
		||||
    --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")
 | 
			
		||||
 | 
			
		||||
    self.frame:SetClampedToScreen(true)
 | 
			
		||||
    self.frame:EnableMouse(false)
 | 
			
		||||
@@ -109,48 +112,69 @@ function Gladdy:UpdateFrame()
 | 
			
		||||
    end
 | 
			
		||||
    local teamSize = self.curBracket or 0
 | 
			
		||||
 | 
			
		||||
    local iconSize = self.db.healthBarHeight
 | 
			
		||||
    local margin = 0
 | 
			
		||||
    local width = self.db.barWidth + self.db.padding * 2 + 5
 | 
			
		||||
    local height = self.db.healthBarHeight * teamSize + margin * (teamSize - 1) + self.db.padding * 2 + 5
 | 
			
		||||
    local extraBarWidth = 0
 | 
			
		||||
    local extraBarHeight = 0
 | 
			
		||||
    local highlightBorderSize = (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2)
 | 
			
		||||
    local leftSize = 0
 | 
			
		||||
    local rightSize = 0
 | 
			
		||||
    --Trinket + Racial
 | 
			
		||||
    if self.db.trinketEnabled and self.db.trinketPos == "LEFT" then
 | 
			
		||||
        leftSize = leftSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding
 | 
			
		||||
        if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "LEFT" then
 | 
			
		||||
            leftSize = leftSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    if self.db.trinketEnabled and self.db.trinketPos == "RIGHT" then
 | 
			
		||||
        rightSize = rightSize + self.db.trinketSize * self.db.trinketWidthFactor + self.db.padding
 | 
			
		||||
        if self.db.racialEnabled and self.db.racialAnchor == "trinket" and self.db.racialPos == "RIGHT" then
 | 
			
		||||
            rightSize = rightSize + self.db.racialSize * self.db.racialWidthFactor + self.db.padding
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    --ClassIcon
 | 
			
		||||
    if self.db.classIconPos == "LEFT" then
 | 
			
		||||
        leftSize = leftSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding
 | 
			
		||||
    else
 | 
			
		||||
        rightSize = rightSize + self.db.classIconSize * self.db.classIconWidthFactor + self.db.padding
 | 
			
		||||
    end
 | 
			
		||||
    --Highlight
 | 
			
		||||
    if not self.db.highlightInset then
 | 
			
		||||
        leftSize = leftSize + self.db.highlightBorderSize
 | 
			
		||||
        rightSize = rightSize + self.db.highlightBorderSize
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    -- Powerbar
 | 
			
		||||
    iconSize = iconSize + self.db.powerBarHeight
 | 
			
		||||
    margin = margin + self.db.powerBarHeight
 | 
			
		||||
    height = height + self.db.powerBarHeight * teamSize
 | 
			
		||||
    extraBarHeight = extraBarHeight + self.db.powerBarHeight
 | 
			
		||||
    local margin = self.db.powerBarHeight + 1
 | 
			
		||||
    local width = self.db.barWidth + leftSize + rightSize
 | 
			
		||||
    local height = (self.db.healthBarHeight + self.db.powerBarHeight + 1) * teamSize
 | 
			
		||||
            + (self.db.highlightInset and 0 or self.db.highlightBorderSize * 2 * teamSize)
 | 
			
		||||
            + self.db.bottomMargin * (teamSize - 1)
 | 
			
		||||
 | 
			
		||||
    -- Cooldown
 | 
			
		||||
    margin = margin + 1 + self.db.highlightBorderSize * 2 + 1 -- + 1 space between health and power bar
 | 
			
		||||
    height = height + self.db.highlightBorderSize * teamSize
 | 
			
		||||
    -- Highlight
 | 
			
		||||
    margin = margin + highlightBorderSize
 | 
			
		||||
 | 
			
		||||
    if (self.db.cooldownYPos == "TOP" or self.db.cooldownYPos == "BOTTOM") and self.db.cooldown then
 | 
			
		||||
        margin = margin + self.db.cooldownSize
 | 
			
		||||
        height = height + self.db.cooldownSize * teamSize
 | 
			
		||||
        height = height + self.db.cooldownSize * (teamSize - 1)
 | 
			
		||||
    end
 | 
			
		||||
    if (self.db.buffsCooldownPos == "TOP" or self.db.buffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then
 | 
			
		||||
        margin = margin + self.db.buffsIconSize
 | 
			
		||||
        height = height + self.db.buffsIconSize * teamSize
 | 
			
		||||
        height = height + self.db.buffsIconSize * (teamSize - 1)
 | 
			
		||||
    end
 | 
			
		||||
    if (self.db.buffsBuffsCooldownPos == "TOP" or self.db.buffsBuffsCooldownPos == "BOTTOM") and self.db.buffsEnabled then
 | 
			
		||||
        margin = margin + self.db.buffsBuffsIconSize
 | 
			
		||||
        height = height + self.db.buffsBuffsIconSize * teamSize
 | 
			
		||||
        height = height + self.db.buffsBuffsIconSize * (teamSize - 1)
 | 
			
		||||
    end
 | 
			
		||||
    if self.db.buffsCooldownPos == "TOP" and self.db.cooldownYPos == "TOP" and self.db.cooldown and self.db.buffsEnabled then
 | 
			
		||||
        margin = margin + 1
 | 
			
		||||
        height = height + (teamSize - 1)
 | 
			
		||||
    end
 | 
			
		||||
    if self.db.buffsCooldownPos == "BOTTOM" and self.db.cooldownYPos == "BOTTOM" and self.db.cooldown and self.db.buffsEnabled then
 | 
			
		||||
        margin = margin + 1
 | 
			
		||||
        height = height + (teamSize - 1)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    -- Classicon
 | 
			
		||||
    width = width + iconSize
 | 
			
		||||
    extraBarWidth = extraBarWidth + iconSize
 | 
			
		||||
 | 
			
		||||
    -- Trinket
 | 
			
		||||
    width = width + iconSize
 | 
			
		||||
    -- GrowDirection
 | 
			
		||||
    if (self.db.growDirection == "LEFT" or self.db.growDirection == "RIGHT") then
 | 
			
		||||
        width = self.db.barWidth * teamSize + (leftSize + rightSize) * teamSize + self.db.bottomMargin * (teamSize - 1)
 | 
			
		||||
        height = self.db.healthBarHeight + self.db.powerBarHeight + 1
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    self.frame:SetScale(self.db.frameScale)
 | 
			
		||||
    self.frame:SetWidth(width)
 | 
			
		||||
@@ -161,53 +185,71 @@ function Gladdy:UpdateFrame()
 | 
			
		||||
        self.frame:SetPoint("CENTER")
 | 
			
		||||
    else
 | 
			
		||||
        local scale = self.frame:GetEffectiveScale()
 | 
			
		||||
        if (self.db.growUp) then
 | 
			
		||||
        if (self.db.growDirection == "TOP") then
 | 
			
		||||
            self.frame:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale)
 | 
			
		||||
        else
 | 
			
		||||
            self.frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", self.db.x / scale, self.db.y / scale)
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    --Anchor
 | 
			
		||||
    self.anchor:SetWidth(width)
 | 
			
		||||
    self.anchor:ClearAllPoints()
 | 
			
		||||
    if (self.db.growUp) then
 | 
			
		||||
    if (self.db.growDirection == "TOP") then
 | 
			
		||||
        self.anchor:SetPoint("TOPLEFT", self.frame, "BOTTOMLEFT")
 | 
			
		||||
    else
 | 
			
		||||
    elseif self.growDirection == "BOTTOM" or self.growDirection == "RIGHT" then
 | 
			
		||||
        self.anchor:SetPoint("BOTTOMLEFT", self.frame, "TOPLEFT")
 | 
			
		||||
    else
 | 
			
		||||
        self.anchor:SetPoint("BOTTOMRIGHT", self.frame, "TOPRIGHT")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if (self.db.locked) then
 | 
			
		||||
        self.anchor:Hide()
 | 
			
		||||
        self.anchor:Hide()
 | 
			
		||||
    else
 | 
			
		||||
        self.anchor:Show()
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    for i = 1, teamSize do
 | 
			
		||||
        local button = self.buttons["arena" .. i]
 | 
			
		||||
        button:SetWidth(self.db.barWidth + extraBarWidth)
 | 
			
		||||
        button:SetWidth(self.db.barWidth)
 | 
			
		||||
        button:SetHeight(self.db.healthBarHeight)
 | 
			
		||||
        button.secure:SetWidth(self.db.barWidth)
 | 
			
		||||
        button.secure:SetHeight(self.db.healthBarHeight + extraBarHeight)
 | 
			
		||||
        button.secure:SetHeight(self.db.healthBarHeight + self.db.powerBarHeight + 1)
 | 
			
		||||
 | 
			
		||||
        button:ClearAllPoints()
 | 
			
		||||
        button.secure:ClearAllPoints()
 | 
			
		||||
        if (self.db.growUp) then
 | 
			
		||||
        if (self.db.growDirection == "TOP") then
 | 
			
		||||
            if (i == 1) then
 | 
			
		||||
                button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", self.db.padding + 2, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
                button:SetPoint("BOTTOMLEFT", self.frame, "BOTTOMLEFT", leftSize, self.db.powerBarHeight + 1)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT")
 | 
			
		||||
            else
 | 
			
		||||
                button:SetPoint("BOTTOMLEFT", self.buttons["arena" .. (i - 1)], "TOPLEFT", 0, margin + self.db.bottomMargin)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.powerBar, "TOPLEFT")
 | 
			
		||||
            end
 | 
			
		||||
        else
 | 
			
		||||
        elseif (self.db.growDirection == "BOTTOM") then
 | 
			
		||||
            if (i == 1) then
 | 
			
		||||
                button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", self.db.padding + 2, 0)
 | 
			
		||||
                button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            else
 | 
			
		||||
                button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "BOTTOMLEFT", 0, -margin - self.db.bottomMargin)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            end
 | 
			
		||||
        elseif (self.db.growDirection == "LEFT") then
 | 
			
		||||
            if (i == 1) then
 | 
			
		||||
                button:SetPoint("TOPRIGHT", self.frame, "TOPRIGHT", -rightSize, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            else
 | 
			
		||||
                button:SetPoint("TOPRIGHT", self.buttons["arena" .. (i - 1)], "TOPLEFT", -rightSize - leftSize - self.db.bottomMargin, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            end
 | 
			
		||||
        elseif (self.db.growDirection == "RIGHT") then
 | 
			
		||||
            if (i == 1) then
 | 
			
		||||
                button:SetPoint("TOPLEFT", self.frame, "TOPLEFT", leftSize, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            else
 | 
			
		||||
                button:SetPoint("TOPLEFT", self.buttons["arena" .. (i - 1)], "TOPRIGHT", leftSize + rightSize + self.db.bottomMargin, 0)
 | 
			
		||||
                button.secure:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT")
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -258,7 +300,10 @@ function Gladdy:CreateButton(i)
 | 
			
		||||
 | 
			
		||||
    local button = CreateFrame("Frame", "GladdyButtonFrame" .. i, self.frame)
 | 
			
		||||
    button:EnableMouse(false)
 | 
			
		||||
    button:SetAlpha(0)
 | 
			
		||||
    --button:SetAlpha(0)
 | 
			
		||||
    --button.texture = button:CreateTexture(nil, "OVERLAY")
 | 
			
		||||
    --button.texture:SetAllPoints(button)
 | 
			
		||||
    --button.texture:SetTexture("Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp")
 | 
			
		||||
 | 
			
		||||
    local secure = CreateFrame("Button", "GladdyButton" .. i, button, "SecureActionButtonTemplate")
 | 
			
		||||
    secure:RegisterForClicks("AnyUp")
 | 
			
		||||
 
 | 
			
		||||
@@ -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.07
 | 
			
		||||
Gladdy.version_minor_num = 0.12
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
## Interface: 20501
 | 
			
		||||
## Title: Gladdy - TBC
 | 
			
		||||
## Version: 1.07-Beta
 | 
			
		||||
## Version: 1.12-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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Images/BasicProfiles/Blizz1.blp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Images/BasicProfiles/Blizz1.blp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										593
									
								
								Lang.lua
									
									
									
									
									
								
							
							
						
						
									
										593
									
								
								Lang.lua
									
									
									
									
									
								
							@@ -1,33 +1,34 @@
 | 
			
		||||
local setmetatable = setmetatable
 | 
			
		||||
local C_CreatureInfo = C_CreatureInfo
 | 
			
		||||
 | 
			
		||||
local GetLocale = GetLocale
 | 
			
		||||
 | 
			
		||||
local L = {}
 | 
			
		||||
 | 
			
		||||
-- Classes
 | 
			
		||||
L["Druid"] = C_CreatureInfo.GetClassInfo(11).className
 | 
			
		||||
L["Hunter"] = C_CreatureInfo.GetClassInfo(3).className
 | 
			
		||||
L["Mage"] = C_CreatureInfo.GetClassInfo(8).className
 | 
			
		||||
L["Paladin"] = C_CreatureInfo.GetClassInfo(2).className
 | 
			
		||||
L["Priest"] = C_CreatureInfo.GetClassInfo(5).className
 | 
			
		||||
L["Rogue"] = C_CreatureInfo.GetClassInfo(4).className
 | 
			
		||||
L["Shaman"] = C_CreatureInfo.GetClassInfo(7).className
 | 
			
		||||
L["Warlock"] = C_CreatureInfo.GetClassInfo(9).className
 | 
			
		||||
L["Warrior"] = C_CreatureInfo.GetClassInfo(1).className
 | 
			
		||||
 | 
			
		||||
-- Races
 | 
			
		||||
L["Human"] = C_CreatureInfo.GetRaceInfo(1).raceName
 | 
			
		||||
L["Orc"] = C_CreatureInfo.GetRaceInfo(2).raceName
 | 
			
		||||
L["Dwarf"] = C_CreatureInfo.GetRaceInfo(3).raceName
 | 
			
		||||
L["Night Elf"] = C_CreatureInfo.GetRaceInfo(4).raceName
 | 
			
		||||
L["Undead"] = C_CreatureInfo.GetRaceInfo(5).raceName
 | 
			
		||||
L["Tauren"] = C_CreatureInfo.GetRaceInfo(6).raceName
 | 
			
		||||
L["Gnome"] = C_CreatureInfo.GetRaceInfo(7).raceName
 | 
			
		||||
L["Troll"] = C_CreatureInfo.GetRaceInfo(8).raceName
 | 
			
		||||
L["Blood Elf"] = C_CreatureInfo.GetRaceInfo(10).raceName
 | 
			
		||||
L["Draenei"] = C_CreatureInfo.GetRaceInfo(11).raceName
 | 
			
		||||
 | 
			
		||||
if (GetLocale() == "ruRU") then
 | 
			
		||||
    -- Races
 | 
			
		||||
    L["Human"] = "Человек"
 | 
			
		||||
    L["Dwarf"] = "Дворф"
 | 
			
		||||
    L["Night Elf"] = "Ночной эльф"
 | 
			
		||||
    L["Gnome"] = "Гном"
 | 
			
		||||
    L["Draenei"] = "Дреней"
 | 
			
		||||
    L["Orc"] = "Орк"
 | 
			
		||||
    L["Undead"] = "Нежить"
 | 
			
		||||
    L["Tauren"] = "Таурен"
 | 
			
		||||
    L["Troll"] = "Тролль"
 | 
			
		||||
    L["Blood Elf"] = "Эльф крови"
 | 
			
		||||
 | 
			
		||||
    -- Classes
 | 
			
		||||
    L["Druid"] = "Друид"
 | 
			
		||||
    L["Hunter"] = "Охотник"
 | 
			
		||||
    L["Mage"] = "Маг"
 | 
			
		||||
    L["Paladin"] = "Паладин"
 | 
			
		||||
    L["Priest"] = "Жрец"
 | 
			
		||||
    L["Rogue"] = "Разбойник"
 | 
			
		||||
    L["Shaman"] = "Шаман"
 | 
			
		||||
    L["Warlock"] = "Чернокнижник"
 | 
			
		||||
    L["Warrior"] = "Воин"
 | 
			
		||||
 | 
			
		||||
    -- Specs
 | 
			
		||||
    L["Balance"] = "Баланс"
 | 
			
		||||
    L["Feral"] = "Сила зверя"
 | 
			
		||||
@@ -157,40 +158,7 @@ if (GetLocale() == "ruRU") then
 | 
			
		||||
    L["Color of the cast bar"] = "Цвет полосы применений"
 | 
			
		||||
    L["Background color"] = "Цвет фона полосы"
 | 
			
		||||
    L["Color of the cast bar background"] = "Цвет фона полосы применений"
 | 
			
		||||
    L["Icon position"] "Расположение значка трансляции"
 | 
			
		||||
 | 
			
		||||
    -- Clicks.lua
 | 
			
		||||
    L["Action #%d"] = "Действие #%d"
 | 
			
		||||
    L["Left Click Enemy 1"] = "Левый клик по цели 1"
 | 
			
		||||
    L["Left Click Enemy 2"] = "Левый клик по цели 2"
 | 
			
		||||
    L["Left Click Enemy 3"] = "Левый клик по цели 3"
 | 
			
		||||
    L["Left Click Enemy 4"] = "Левый клик по цели 4"
 | 
			
		||||
    L["Left Click Enemy 5"] = "Левый клик по цели 5"
 | 
			
		||||
    L["Right Click Enemy 1"] = "Правый клик по цели 1"
 | 
			
		||||
    L["Right Click Enemy 2"] = "Правый клик по цели 2"
 | 
			
		||||
    L["Right Click Enemy 3"] = "Правый клик по цели 3"
 | 
			
		||||
    L["Right Click Enemy 4"] = "Правый клик по цели 4"
 | 
			
		||||
    L["Right Click Enemy 5"] = "Правый клик по цели 5"
 | 
			
		||||
    L["Left button"] = "Левая кнопка"
 | 
			
		||||
    L["Right button"] = "Правая кнопка"
 | 
			
		||||
    L["Middle button"] = "Средняя кнопка"
 | 
			
		||||
    L["Button 4"] = "Кнопка 4"
 | 
			
		||||
    L["Button 5"] = "Кнопка 5"
 | 
			
		||||
    L["None"] = "Не назначено"
 | 
			
		||||
    L["CTRL"] = "CTRL"
 | 
			
		||||
    L["SHIFT"] = "SHIFT"
 | 
			
		||||
    L["ALT"] = "ALT"
 | 
			
		||||
    L["Cast Spell"] = "Применить заклинание"
 | 
			
		||||
    L["Name"] = "Название"
 | 
			
		||||
    L["Select the name of the click option"] = "Выбрать название опции клика"
 | 
			
		||||
    L["Button"] = "Кнопка"
 | 
			
		||||
    L["Select which mouse button to use"] = "Выбрать кнопку мыши для использования"
 | 
			
		||||
    L["Modifier"] = "Модификатор"
 | 
			
		||||
    L["Select which modifier to use"] = "Выбрать модификатор для использования"
 | 
			
		||||
    L["Action"] = "Действите"
 | 
			
		||||
    L["Select what action this mouse button does"] = "Выбрать действие, производимое данной кнопкой мыши"
 | 
			
		||||
    L["Spell name / Macro text"] = "Название заклинания / Текст макроса"
 | 
			
		||||
    L["Use *name* as unit's name. Like a '/rofl *name*'"] = "Используйте *name* в качестве имени игрока. Например, '/rofl *name*'"
 | 
			
		||||
    L["Icon position"] = "Расположение значка трансляции"
 | 
			
		||||
 | 
			
		||||
    -- Diminishings.lua
 | 
			
		||||
    L["DR Cooldown position"] = "Позиция ДР таймеров"
 | 
			
		||||
@@ -237,31 +205,146 @@ if (GetLocale() == "ruRU") then
 | 
			
		||||
    -- Trinket.lua
 | 
			
		||||
    L["No cooldown count (OmniCC)"] = "Не показывать кулдаун (OmniCC)"
 | 
			
		||||
    L["Disable cooldown timers by addons (reload UI to take effect)"] = "Отключить таймер кулдаунов для аддонов (необходима перезагрузка интерфейса)"
 | 
			
		||||
elseif (GetLocale() == "deDE") then
 | 
			
		||||
    -- Races
 | 
			
		||||
    L["Human"] = "Mensch"
 | 
			
		||||
    L["Dwarf"] = "Zwerg"
 | 
			
		||||
    L["Night Elf"] = "Nachtelf"
 | 
			
		||||
    L["Gnome"] = "Gnom"
 | 
			
		||||
    L["Draenei"] = "Draenei"
 | 
			
		||||
    L["Orc"] = "Ork"
 | 
			
		||||
    L["Undead"] = "Untoter"
 | 
			
		||||
    L["Tauren"] = "Taure"
 | 
			
		||||
    L["Troll"] = "Тroll"
 | 
			
		||||
    L["Blood Elf"] = "Blutelf"
 | 
			
		||||
elseif GetLocale() == "deDE" then
 | 
			
		||||
    -- Announcements.lua
 | 
			
		||||
    L["Announcements"] = "Meldungen"
 | 
			
		||||
    L["RESURRECTING: %s (%s)"] = "Wiederbeleben: %s (%s) "
 | 
			
		||||
    L["SPEC DETECTED: %s - %s (%s)"] = "Talenspezalisierung entdeckt: %s - %s (%s)"
 | 
			
		||||
    L["LOW HEALTH: %s (%s)"] = "Niedriges Leben: %s (%s)"
 | 
			
		||||
    L["TRINKET USED: %s (%s)"] = "Insiginie benutzt: %s (%s)"
 | 
			
		||||
    L["TRINKET READY: %s (%s)"] = "Insignie bereit: %s (%s)"
 | 
			
		||||
    L["DRINKING: %s (%s)"] = "Trinken: %s (%s)"
 | 
			
		||||
    L["Self"] = "Selbst"
 | 
			
		||||
    L["Party"] = "Gruppe"
 | 
			
		||||
    L["Raid Warning"] = "Schlachtzugwarnung"
 | 
			
		||||
    L["Blizzard's Floating Combat Text"] = "Blizzard Kampftext"
 | 
			
		||||
    L["Trinket used"] = "Insignie benutzt"
 | 
			
		||||
    L["Announce when an enemy's trinket is used"] = "Warnt, wenn ein Gegner seine Insignie benutzt"
 | 
			
		||||
    L["Trinket ready"] = "Insignie bereit"
 | 
			
		||||
    L["Announce when an enemy's trinket is ready again"] = "Warnt wenn die Insignie eines Gegner wieder bereit ist"
 | 
			
		||||
    L["Drinking"] = "Trinken"
 | 
			
		||||
    L["Announces when enemies sit down to drink"] = "Warnt wenn Gegner sich zum Trinken hinsetzen"
 | 
			
		||||
    L["Resurrection"] = "Wiederbelebung"
 | 
			
		||||
    L["Announces when an enemy tries to resurrect a teammate"] = "Warnt wenn Gegner versuchen Teammitglieder wiederzubeleben"
 | 
			
		||||
    L["New enemies"] = "Neue Gegner"
 | 
			
		||||
    L["Announces when new enemies are discovered"] = "Gibt an, wenn neue Gegner entdeckt wurden"
 | 
			
		||||
    L["Spec Detection"] = "Talent Entdeckung"
 | 
			
		||||
    L["Announces when the spec of an enemy was detected"] = "Gibt an, wenn Talente eines Gegners entdeckt wurden"
 | 
			
		||||
    L["Low health"] = "Wenig Leben"
 | 
			
		||||
    L["Announces when an enemy drops below a certain health threshold"] = "Warnt, wenn das Leben eines Gegners unter einen bestimmten Prozentwert fällt"
 | 
			
		||||
    L["Low health threshold"] = "Prozentwert: Wenig Leben"
 | 
			
		||||
    L["Choose how low an enemy must be before low health is announced"] = "Bestimme wie wenig Leben ein Gegner haben muss, damit vor wenig Leben gewarnt wird"
 | 
			
		||||
    L["Destination"] = "Ziel"
 | 
			
		||||
    L["Choose how your announcements are displayed"] = "Bestimme wo Warnungen dargestellt werden"
 | 
			
		||||
 | 
			
		||||
    -- Classes
 | 
			
		||||
    L["Druid"] = "Druide"
 | 
			
		||||
    L["Hunter"] = "Jäger"
 | 
			
		||||
    L["Mage"] = "Magier"
 | 
			
		||||
    L["Paladin"] = "Paladin"
 | 
			
		||||
    L["Priest"] = "Priester"
 | 
			
		||||
    L["Rogue"] = "Schurke"
 | 
			
		||||
    L["Shaman"] = "Schamane"
 | 
			
		||||
    L["Warlock"] = "Hexenmeister"
 | 
			
		||||
    L["Warrior"] = "Krieger"
 | 
			
		||||
    -- ArenaCountDown.lua
 | 
			
		||||
    L["Arena Countdown"] = "Arena Countdown"
 | 
			
		||||
    L["Turns countdown before the start of an arena match on/off."] = ""
 | 
			
		||||
    L["Size"] = "Größe"
 | 
			
		||||
 | 
			
		||||
    -- Specs
 | 
			
		||||
    -- Auras.lua
 | 
			
		||||
    L["Auras"] = "Auren"
 | 
			
		||||
    L["Frame"] = "Frame"
 | 
			
		||||
    L["Cooldown"] = "Abklingzeit"
 | 
			
		||||
    L["No Cooldown Circle"] = "Verstecke Abklingzeitzirkel"
 | 
			
		||||
    L["Cooldown circle alpha"] = "Abklingzeitzirkel Alpha"
 | 
			
		||||
    L["Font"] = "Schrift"
 | 
			
		||||
    L["Font of the cooldown"] = "Schrift der Abklingzeit"
 | 
			
		||||
    L["Font scale"] = "Schriftskalierung"
 | 
			
		||||
    L["Scale of the text"] = "Skalierungfaktor des Texts"
 | 
			
		||||
    L["Font color"] = "Schriftfarbe"
 | 
			
		||||
    L["Color of the text"] = "Farbe des Texts"
 | 
			
		||||
    L["Border"] = "Rahmen"
 | 
			
		||||
    L["Border style"] = "Rahmen Stil"
 | 
			
		||||
    L["Buff color"] = "Buff Farbe"
 | 
			
		||||
    L["Debuff color"] = "Debuff Farbe"
 | 
			
		||||
    L["Check All"] = "Alle auswählen"
 | 
			
		||||
    L["Uncheck All"] = "Alle abwählen"
 | 
			
		||||
    L["Enabled"] = "Eingeschaltet"
 | 
			
		||||
    L["Priority"] = "Priorität"
 | 
			
		||||
 | 
			
		||||
    -- BuffsDebuffs.lua
 | 
			
		||||
    L["Buffs and Debuffs"] = "Buffs und Debuffs"
 | 
			
		||||
    L["Enabled Buffs and Debuffs module"] = "Buffs und Debuffs Modul einschalten"
 | 
			
		||||
    L["Show CC"] = "Zeige Crowdcontrol"
 | 
			
		||||
    L["Shows all debuffs, which are displayed on the ClassIcon as well"] = "Zeigt alle Buffs & Debuffs, die auch auf dem Klassensymbol dargestellt werden"
 | 
			
		||||
    L["Buffs"] = "Buffs"
 | 
			
		||||
    L["Size & Padding"] = "Größe und Abstand"
 | 
			
		||||
    L["Icon Size"] = "Symbol Größe"
 | 
			
		||||
    L["Size of the DR Icons"] = "Größe der DR Symbole"
 | 
			
		||||
    L["Icon Width Factor"] = "Symbol Breitenfaktor"
 | 
			
		||||
    L["Stretches the icon"] = "Streckt das Symbol"
 | 
			
		||||
    L["Icon Padding"] = "Symbol Abstand"
 | 
			
		||||
    L["Space between Icons"] = "Abstand zwischen den Symbolen"
 | 
			
		||||
    L["Position"] = "Position"
 | 
			
		||||
    L["Aura Position"] = "Aura Position"
 | 
			
		||||
    L["Position of the aura icons"] = "Position der Aura Symbole"
 | 
			
		||||
    L["Top"] = "Oben"
 | 
			
		||||
    L["Bottom"] = "Unten"
 | 
			
		||||
    L["Left"] = "Links"
 | 
			
		||||
    L["Right"] = "Rechts"
 | 
			
		||||
    L["Grow Direction"] = "Richtung"
 | 
			
		||||
    L["Grow Direction of the aura icons"] = "In welche Richtung die Symbole wachsen"
 | 
			
		||||
    L["Horizontal offset"] = "Horizontaler Offset"
 | 
			
		||||
    L["Vertical offset"] = "Vertikaler Offset"
 | 
			
		||||
    L["Alpha"] = "Alpha"
 | 
			
		||||
    L["Debuffs"] = "Debuffs"
 | 
			
		||||
    L["Dynamic Timer Color"] = "Dynamische Textfarbe"
 | 
			
		||||
    L["Show dynamic color on cooldown numbers"] = "Verändert die Farbe des Textes dynamisch"
 | 
			
		||||
    L["Color of the cooldown timer and stacks"] = "Farbe der Abklingzeit und Stapel"
 | 
			
		||||
    L["Spell School Colors"] = "Zauberart Farbe"
 | 
			
		||||
    L["Spell School Colors Enabled"] = "Zauberart Farbe Eingeschaltet"
 | 
			
		||||
    L["Show border colors by spell school"] = "Färbt den Rahmen entspechend der Zauberart"
 | 
			
		||||
    L["Curse"] = "Fluch"
 | 
			
		||||
    L["Color of the border"] = "Farbe des Rahmens"
 | 
			
		||||
    L["Magic"] = "Magie"
 | 
			
		||||
    L["Poison"] = "Gift"
 | 
			
		||||
    L["Physical"] = "Physisch"
 | 
			
		||||
    L["Immune"] = "Immun"
 | 
			
		||||
    L["Disease"] = "Erkrankung"
 | 
			
		||||
    L["Aura"] = "Aura"
 | 
			
		||||
    L["Form"] = "Form"
 | 
			
		||||
 | 
			
		||||
    -- Castbar.lua
 | 
			
		||||
    L["Cast Bar"] = "Zauberleiste"
 | 
			
		||||
    L["Bar"] = "Balken"
 | 
			
		||||
    L["Bar Size"] = "Balken Größe"
 | 
			
		||||
    L["Bar height"] = "Balken Höhe"
 | 
			
		||||
    L["Height of the bar"] = "Höhe des Balken"
 | 
			
		||||
    L["Bar width"] = "Balken Weite"
 | 
			
		||||
    L["Width of the bars"] = "Weite des Balken"
 | 
			
		||||
    L["Texture"] = "Textur"
 | 
			
		||||
    L["Bar texture"] = "Balken Textur"
 | 
			
		||||
    L["Texture of the bar"] = "Textur des Balken"
 | 
			
		||||
    L["Bar color"] = "Balken Farbe"
 | 
			
		||||
    L["Color of the cast bar"] = "Farbe des Balken"
 | 
			
		||||
    L["Background color"] = "Hintergrundfarbe"
 | 
			
		||||
    L["Color of the cast bar background"] = "Hinergrundfarbe des Zauberbalkens"
 | 
			
		||||
    L["Border size"] = "Rahmen Größe"
 | 
			
		||||
    L["Status Bar border"] = "Balken Rahmen"
 | 
			
		||||
    L["Status Bar border color"] = "Balken Rahmen Farbe"
 | 
			
		||||
    L["Icon"] = "Symbol"
 | 
			
		||||
    L["Icon size"] = "Symbolgröße"
 | 
			
		||||
    L["Icon border"] = "Symbolrahmen"
 | 
			
		||||
    L["Icon border color"] = "Farbe Symbolrahmen"
 | 
			
		||||
    L["Spark"] = "Funke"
 | 
			
		||||
    L["Spark enabled"] = "Funke eingeschaltet"
 | 
			
		||||
    L["Spark color"] = "Funkenfarbe"
 | 
			
		||||
    L["Color of the cast bar spark"] = "Farbe des Zauberleisten Funke"
 | 
			
		||||
    L["Font of the castbar"] = "Schriftart der Zauberleiste"
 | 
			
		||||
    L["Font size"] = "Schriftgröße"
 | 
			
		||||
    L["Size of the text"] = "Schriftgröße"
 | 
			
		||||
    L["Format"] = "Darstellung"
 | 
			
		||||
    L["Timer Format"] = "Zeitdarstellung"
 | 
			
		||||
    L["Remaining"] = "Verbleibend"
 | 
			
		||||
    L["Total"] = "Total"
 | 
			
		||||
    L["Both"] = "Beides"
 | 
			
		||||
    L["Castbar position"] = "Zauberleistenposition"
 | 
			
		||||
    L["Icon position"] = "Symbolposition"
 | 
			
		||||
    L["Offsets"] = "Offsets"
 | 
			
		||||
 | 
			
		||||
    -- Classicon.lua
 | 
			
		||||
    L["Class Icon"] = "Klassensymbol"
 | 
			
		||||
    L["Balance"] = "Gleichgewicht"
 | 
			
		||||
    L["Feral"] = "Wilder Kampf"
 | 
			
		||||
    L["Restoration"] = "Wiederherstellung"
 | 
			
		||||
@@ -286,6 +369,145 @@ elseif (GetLocale() == "deDE") then
 | 
			
		||||
    L["Destruction"] = "Zerstörung"
 | 
			
		||||
    L["Arms"] = "Waffen"
 | 
			
		||||
    L["Fury"] = "Furor"
 | 
			
		||||
    L["Show Spec Icon"] = "Zeige Spezialisierungssymbol"
 | 
			
		||||
    L["Shows Spec Icon once spec is detected"] = "Zeigt das Talentspezialisierungs Symbol sobald die Spezialisierung erkannt wurde"
 | 
			
		||||
    L["Icon width factor"] = "Symbol Breitenfaktor"
 | 
			
		||||
    L["This changes positions with trinket"] = "Das tauscht die Position mit dem Trinket, wenn auf der gleichen Seite."
 | 
			
		||||
    L["Border color"] = "Rahmenfarbe"
 | 
			
		||||
 | 
			
		||||
    --CombatIndicator.lua
 | 
			
		||||
    L["Combat Indicator"] = "Kampfindikator"
 | 
			
		||||
    L["Enable Combat Indicator icon"] = "Schalte Kampfindikator ein"
 | 
			
		||||
    L["Anchor"] = "Anker"
 | 
			
		||||
    L["This changes the anchor of the ci icon"] = "Dies ändert den Anker des Kampfindikatorsymbols"
 | 
			
		||||
    L["This changes position relative to its anchor of the ci icon"] = "Dies ändert die Position relativ zum Anker"
 | 
			
		||||
 | 
			
		||||
    -- Cooldowns.lua
 | 
			
		||||
    L["Cooldowns"] = "Abklingzeiten"
 | 
			
		||||
    L["Enabled cooldown module"] = ""
 | 
			
		||||
    L["Cooldown size"] = "Abklingzeit Größe"
 | 
			
		||||
    L["Size of each cd icon"] = "Größe eines einzelnen Symbols"
 | 
			
		||||
    L["Max Icons per row"] = "Maximale Anzahl an Symbolen pro Reihe"
 | 
			
		||||
    L["Scale of the font"] = "Skalierung der Schrift"
 | 
			
		||||
    L["Anchor of the cooldown icons"] = "Anker der Abklingzeiten Symbole"
 | 
			
		||||
    L["Grow Direction of the cooldown icons"] = "Richtung der Abklingzeiten Symbole"
 | 
			
		||||
    L["Offset"] = "Offset"
 | 
			
		||||
 | 
			
		||||
    -- Diminishings.lua
 | 
			
		||||
    L["Diminishings"] = "DR"
 | 
			
		||||
    L["Enabled DR module"] = "DR einschalten"
 | 
			
		||||
    L["DR Cooldown position"] = "DR Position"
 | 
			
		||||
    L["Position of the cooldown icons"] = "Position der Symbole"
 | 
			
		||||
    L["DR Border Colors"] = "DR Rahmen Farbe"
 | 
			
		||||
    L["Dr Border Colors Enabled"] = "DR Rahmen Farben eingeschaltet"
 | 
			
		||||
    L["Colors borders of DRs in respective DR-color below"] = "Färbt die Rahmen der DR Symbole je nach Stärke der Verminderung"
 | 
			
		||||
    L["Half"] = "Hälfte"
 | 
			
		||||
    L["Quarter"] = "Viertel"
 | 
			
		||||
    L["Categories"] = "Kategorien"
 | 
			
		||||
    L["Force Icon"] = "Erzwinge Symbol"
 | 
			
		||||
    L["Icon of the DR"] = "Symbol des DR"
 | 
			
		||||
 | 
			
		||||
    -- ExportImport.lua
 | 
			
		||||
    L["Export Import"] = "Exportieren Importieren"
 | 
			
		||||
    L["Profile Export Import"] = "Profile Exportieren Importieren"
 | 
			
		||||
 | 
			
		||||
    -- Healthbar.lua
 | 
			
		||||
    L["Health Bar"] = "Lebensbalken"
 | 
			
		||||
    L["DEAD"] = "TOT"
 | 
			
		||||
    L["LEAVE"] = "VERLASSEN"
 | 
			
		||||
    L["General"] = "Allgemein"
 | 
			
		||||
    L["Color of the status bar background"] = "Farbe des Balkenhintergrunds"
 | 
			
		||||
    L["Font of the bar"] = "Schriftart des Balken"
 | 
			
		||||
    L["Name font size"] = "Schriftgröße des Namen"
 | 
			
		||||
    L["Size of the name text"] = "Schriftgröße des Namen"
 | 
			
		||||
    L["Health font size"] = "Schriftgröße der Gesundheit"
 | 
			
		||||
    L["Size of the health text"] = "Schriftgröße der Gesundheit"
 | 
			
		||||
    L["Size of the border"] = "Rahmengröße"
 | 
			
		||||
    L["Health Bar Text"] = "Lebensbalken Text"
 | 
			
		||||
    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 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"
 | 
			
		||||
    L["Show max health on the health bar"] = "Zeige maximale Gesundheit"
 | 
			
		||||
    L["Show health percentage"] = "Zeige Prozentwert"
 | 
			
		||||
    L["Show health percentage on the health bar"] = "Zeige Prozentwert der Gesundheit"
 | 
			
		||||
 | 
			
		||||
    -- Highlight.lua
 | 
			
		||||
    L["Highlight"] = "Hervorhebung"
 | 
			
		||||
    L["Show Inside"] = "Zeige innen"
 | 
			
		||||
    L["Show Highlight border inside of frame"] = "Zeige die Hervorhebung innerhalb des Frames"
 | 
			
		||||
    L["Colors"] = "Farben"
 | 
			
		||||
    L["Target border color"] = "Rahmenfarbe deines Ziels"
 | 
			
		||||
    L["Color of the selected targets border"] = "Rahmenfarbe deines momentanen Ziels"
 | 
			
		||||
    L["Focus border color"] = "Rahmenfarbe deines Fokus"
 | 
			
		||||
    L["Color of the focus border"] = "Rahmenfarbe deines momentanen Fokus"
 | 
			
		||||
    L["Highlight target"] = "Hervorhebung des Ziels"
 | 
			
		||||
    L["Toggle if the selected target should be highlighted"] = "Ziel hervorheben ein/ausschalten"
 | 
			
		||||
    L["Show border around target"] = "Zeige Rahmen um dein Ziel"
 | 
			
		||||
    L["Toggle if a border should be shown around the selected target"] = "Zeigt Rahmen um dein momentanes Ziel"
 | 
			
		||||
    L["Show border around focus"] = "Zeige Rahmen um dein Fokus"
 | 
			
		||||
    L["Toggle of a border should be shown around the current focus"] = "Zeigt Rahmen um dein Fokusziel"
 | 
			
		||||
 | 
			
		||||
    -- Pets.lua
 | 
			
		||||
    L["Pets"] = "Begleiter"
 | 
			
		||||
    L["Enables Pets module"] = "Schaltet das Begleiter Modul ein"
 | 
			
		||||
    L["Width of the bar"] = "Breite des Balkens"
 | 
			
		||||
    L["Health color"] = "Gesundheitsfarbe"
 | 
			
		||||
    L["Color of the status bar"] = "Farbe des Balkens"
 | 
			
		||||
    L["Portrait"] = "Portrait"
 | 
			
		||||
    L["Health Values"] = "Gesundheitswerte"
 | 
			
		||||
 | 
			
		||||
    -- Powerbar.lua
 | 
			
		||||
    L["Power Bar"] = "Mana/Energie Balken"
 | 
			
		||||
    L["Power Bar Text"] = "Mana/Energie Balken Text"
 | 
			
		||||
    L["Power Texts"] = "Mana/Energie Balken Texte"
 | 
			
		||||
    L["Show race"] = "Rasse zeigen"
 | 
			
		||||
    L["Show spec"] = "Spezialisierung zeigen"
 | 
			
		||||
    L["Show the actual power"] = "Zeige das momentane Mana"
 | 
			
		||||
    L["Show the actual power on the power bar"] = "Zeige das momentane Mana"
 | 
			
		||||
    L["Show max power"] = "Zeige das maximale Mana"
 | 
			
		||||
    L["Show max power on the power bar"] = "Zeige das maximale Mana"
 | 
			
		||||
    L["Show power percentage"] = "Zeige Prozentwert"
 | 
			
		||||
    L["Show power percentage on the power bar"] = "Zeige Prozentwert"
 | 
			
		||||
 | 
			
		||||
    -- Racial.lua
 | 
			
		||||
    L["Racial"] = "Rassenfertigkeit"
 | 
			
		||||
    L["Enable racial icon"] = "Rassenfertigkeit einschalten"
 | 
			
		||||
    L["This changes the anchor of the racial icon"] = "Dies ändert den Anker des Rassenfertigkeitssymbols"
 | 
			
		||||
    L["This changes position relative to its anchor of the racial icon"] = "Dies ändert doe Position relativ zu seinem Anker"
 | 
			
		||||
 | 
			
		||||
    -- TotemPlates.lua
 | 
			
		||||
    L["Totem Plates"] = "Totem Symbole"
 | 
			
		||||
    L["Customize Totems"] = "Individuelle Totemeinstellungen"
 | 
			
		||||
    L["Custom totem name"] = "Individueller Totem Name"
 | 
			
		||||
    L["Totem General"] = "Totems Allgemein"
 | 
			
		||||
    L["Turns totem icons instead of nameplates on or off. (Requires reload)"] = ""
 | 
			
		||||
    L["Show friendly"] = "Zeige für freundliche"
 | 
			
		||||
    L["Show enemy"] = "Zeige für feindliche"
 | 
			
		||||
    L["Totem size"] = "Totem Größe"
 | 
			
		||||
    L["Size of totem icons"] = "Größe der Totemsymbole"
 | 
			
		||||
    L["Font of the custom totem name"] = "Schriftart der benutzerdefinierten Totem Namen"
 | 
			
		||||
    L["Apply alpha when no target"] = "Wende den Alpha-Wert an, wenn kein Ziel anvisiert ist"
 | 
			
		||||
    L["Always applies alpha, even when you don't have a target. Else it is 1."] = "Alpha immer anwenden, auch wenn man kein Ziel anvisiert hat. Sonst ist der Alpha-Wert 1"
 | 
			
		||||
    L["Apply alpha when targeted"] = "Wende den Alpha-Wert an, wenn das Totem als Ziel anvisiert ist"
 | 
			
		||||
    L["Always applies alpha, even when you target the totem. Else it is 1."] = "Alpha immer anwenden, auch wenn das Totem als Ziel anvisiert ist. Sonst ist der Alpha-Wert 1"
 | 
			
		||||
    L["All totem border alphas (configurable per totem)"] = "Alpha aller Totems"
 | 
			
		||||
    L["Totem icon border style"] = "Totem Rahmenstil"
 | 
			
		||||
    L["All totem border color"] = "Rahmenfarbe aller Totems"
 | 
			
		||||
 | 
			
		||||
    -- Trinket.lua
 | 
			
		||||
    L["Trinket"] = "Insignie"
 | 
			
		||||
    L["Enable trinket icon"] = "Insignie einschalten"
 | 
			
		||||
    L["This changes positions of the trinket"] = "Dies ändert die Position der Insignie"
 | 
			
		||||
 | 
			
		||||
    -- XiconProfiles.lua
 | 
			
		||||
    L["Profile"] = "Profil"
 | 
			
		||||
 | 
			
		||||
    -- Frame.lua
 | 
			
		||||
    L["Gladdy - drag to move"] = "Gladdy - ziehe um zu bewegen"
 | 
			
		||||
 | 
			
		||||
    -- Gladdy.lua
 | 
			
		||||
    L["Welcome to Gladdy!"] = "Willkommen bei Gladdy!"
 | 
			
		||||
@@ -293,185 +515,50 @@ elseif (GetLocale() == "deDE") then
 | 
			
		||||
    L["Valid slash commands are:"] = "Gültige slash Befehle sind:"
 | 
			
		||||
    L["If this is not your first run please lock or move the frame to prevent this from happening."] = "Wenn dies nicht dein erster Start ist, sperre oder bewege das Bild um diese Meldung zu verhindern."
 | 
			
		||||
 | 
			
		||||
    -- Frame.lua
 | 
			
		||||
    L["Gladdy - drag to move"] = "Gladdy - ziehe um zu bewegen"
 | 
			
		||||
 | 
			
		||||
    -- Options.lua
 | 
			
		||||
    L["Announcements"] = "Meldungen"
 | 
			
		||||
    L["Announcement settings"] = "Meldungseinstellungen"
 | 
			
		||||
    L["Auras"] = "Auren"
 | 
			
		||||
    L["Auras settings"] = "Aureneinstellungen"
 | 
			
		||||
    L["Castbar"] = "Zauberleiste"
 | 
			
		||||
    L["Castbar settings"] = "Zauberleisteneinstellungen"
 | 
			
		||||
    L["Classicon"] = "Klassensymbol"
 | 
			
		||||
    L["Classicon settings"] = "Klassensymboleinstellungen"
 | 
			
		||||
    L["Clicks"] = "Klicks"
 | 
			
		||||
    L["Clicks settings"] = "Klickeinstellungen"
 | 
			
		||||
    L["Diminishings"] = "DR"
 | 
			
		||||
    L["Diminishings settings"] = "DR Einstellungen"
 | 
			
		||||
    L["Healthbar"] = "Lebensleiste"
 | 
			
		||||
    L["Healthbar settings"] = "Lebensleisteneinstellungen"
 | 
			
		||||
    L["Highlight"] = "warnung"
 | 
			
		||||
    L["Highlight settings"] = "Warnungseinstellungen"
 | 
			
		||||
    L["Nameplates"] = "Namensplaketten"
 | 
			
		||||
    L["Nameplates settings"] = "Namensplaketteneinstellungen"
 | 
			
		||||
    L["Powerbar"] = "Powerleiste"
 | 
			
		||||
    L["Powerbar settings"] = "Powerleisteneinstellungen"
 | 
			
		||||
    L["Score"] = "Score"
 | 
			
		||||
    L["Score settings"] = "Scoreeinstellungen"
 | 
			
		||||
    L["Trinket"] = "Insignie"
 | 
			
		||||
    L["Trinket settings"] = "Insignieneinstellungen"
 | 
			
		||||
    L["Reset module"] = "Model zurücksetzen"
 | 
			
		||||
    L["Reset module to defaults"] = "Modul auf Standardeinstellungen zurücksetzen"
 | 
			
		||||
    L["settings"] = "Einstellungen"
 | 
			
		||||
    L["Reset module"] = "Modul zurücksetzen"
 | 
			
		||||
    L["Reset module to defaults"] = "Setze das Modul auf seine Standardwerte zurück"
 | 
			
		||||
    L["No settings"] = "Keine Einstellungen"
 | 
			
		||||
    L["Module has no settings"] = "Modul hat keine Einstellungen"
 | 
			
		||||
    L["General"] = "ОAllgemein"
 | 
			
		||||
    L["General settings"] = "Allgemeine Einstellungen"
 | 
			
		||||
    L["Lock frame"] = "Sperre Bild"
 | 
			
		||||
    L["Toggle if frame can be moved"] = "Aktivieren falls das Bild bewegt werden kann"
 | 
			
		||||
    L["Grow frame upwards"] = "Bild von unten nach oben aufbauen"
 | 
			
		||||
    L["If enabled the frame will grow upwards instead of downwards"] = "Falls aktiviert, wird das Bild von unten nach oben aufgebaut"
 | 
			
		||||
    L["Frame scale"] = "Bildskalierung"
 | 
			
		||||
    L["Scale of the frame"] = "Skalierung des Bildes"
 | 
			
		||||
    L["Frame padding"] = "Bild Unterlage"
 | 
			
		||||
    L["Padding of the frame"] = "Unterlage des Bildes"
 | 
			
		||||
    L["Frame color"] = "Bildfarbe"
 | 
			
		||||
    L["Color of the frame"] = "Farbe des Bildes"
 | 
			
		||||
    L["Bar width"] = "Leistenbreite"
 | 
			
		||||
    L["Width of the bars"] = "Breite der Leisten"
 | 
			
		||||
    L["Bottom margin"] = "Unterer Abstand"
 | 
			
		||||
    L["Margin between each button"] = "Abstand zwischen jedem Buttom"
 | 
			
		||||
 | 
			
		||||
    -- Announcements.lua
 | 
			
		||||
    L["RESURRECTING: %s (%s)"] = "Wiederbeleben: %s (%s) "
 | 
			
		||||
    L["SPEC DETECTED: %s - %s (%s)"] = "Talenspezalisierung entdeckt: %s - %s (%s)"
 | 
			
		||||
    L["LOW HEALTH: %s (%s)"] = "Niedriges Leben: %s (%s)"
 | 
			
		||||
    L["TRINKET USED: %s (%s)"] = "Insiginie benutzt: %s (%s)"
 | 
			
		||||
    L["TRINKET READY: %s (%s)"] = "Insignie bereit: %s (%s)"
 | 
			
		||||
    L["DRINKING: %s (%s)"] = "Trinken: %s (%s)"
 | 
			
		||||
    L["Self"] = "Selbst"
 | 
			
		||||
    L["Party"] = "Gruppe"
 | 
			
		||||
    L["Raid Warning"] = "Schlachtzugwarnung"
 | 
			
		||||
    L["Blizzard's Floating Combat Text"] = "Blizzard Kampftext"
 | 
			
		||||
    L["MikScrollingBattleText"] = "MikScrollingBattleText"
 | 
			
		||||
    L["Scrolling Combat Text"] = "Scrolling Combat Text"
 | 
			
		||||
    L["Parrot"] = "Parrot"
 | 
			
		||||
    L["Drinking"] = "Trinken"
 | 
			
		||||
    L["Announces when enemies sit down to drink"] = "Warnt wenn Gegner sich zum Trinken hinsetzen"
 | 
			
		||||
    L["Resurrection"] = "Wiederbelebung"
 | 
			
		||||
    L["Announces when an enemy tries to resurrect a teammate"] = "Warnt wenn Gegner versuchen Teammitglieder wiederzubeleben"
 | 
			
		||||
    L["New enemies"] = "Neue Gegner"
 | 
			
		||||
    L["Announces when new enemies are discovered"] = "Gibt an, wenn neue Gegner entdeckt wurden"
 | 
			
		||||
    L["Spec Detection"] = "Talent Entdeckung"
 | 
			
		||||
    L["Announces when the spec of an enemy was detected"] = "Gibt an, wenn Talente eines Gegners entdeckt wurden"
 | 
			
		||||
    L["Low health"] = "Wenig Leben"
 | 
			
		||||
    L["Announces when an enemy drops below a certain health threshold"] = "Warnt, wenn das Leben eines Gegners unter einen bestimmten Prozentwert fällt"
 | 
			
		||||
    L["Low health threshold"] = "Prozentwert: Wenig Leben"
 | 
			
		||||
    L["Choose how low an enemy must be before low health is announced"] = "Bestimme wie wenig Leben ein Gegner haben muss, damit vor wenig Leben gewarnt wird"
 | 
			
		||||
    L["Trinket used"] = "Insignie benutzt"
 | 
			
		||||
    L["Announce when an enemy's trinket is used"] = "Warnt, wenn ein Gegner seine Insignie benutzt"
 | 
			
		||||
    L["Trinket ready"] = "Insignie bereit"
 | 
			
		||||
    L["Announce when an enemy's trinket is ready again"] = "Warnt wenn die Insignie eines Gegner wieder bereit ist"
 | 
			
		||||
    L["Destination"] = "Ziel"
 | 
			
		||||
    L["Choose how your announcements are displayed"] = "Bestimme wo Warnungen dargestellt werden"
 | 
			
		||||
 | 
			
		||||
    -- Auras.lua
 | 
			
		||||
    L["Font color"] = "Schriftfarbe"
 | 
			
		||||
    L["Color of the text"] = "Farbe der Schrift"
 | 
			
		||||
    L["Font size"] = "Schriftgröße"
 | 
			
		||||
    L["Size of the text"] = "Größe der Schrift"
 | 
			
		||||
 | 
			
		||||
    -- Castbar.lua
 | 
			
		||||
    L["Bar height"] = "Leistenhöhe"
 | 
			
		||||
    L["Height of the bar"] = "Höhe der Leiste"
 | 
			
		||||
    L["Bar texture"] = "Leistentextur"
 | 
			
		||||
    L["Texture of the bar"] = "Textur der Leiste"
 | 
			
		||||
    L["Bar color"] = "Leistenfarbe"
 | 
			
		||||
    L["Color of the cast bar"] = "Farbe der Zauberleiste"
 | 
			
		||||
    L["Background color"] = "Hintergrundfarbe"
 | 
			
		||||
    L["Color of the cast bar background"] = "Hintergrundfarbe der Zauberleiste"
 | 
			
		||||
    L["Icon position"] "Position des Zauberleistensymbols"
 | 
			
		||||
 | 
			
		||||
    -- Clicks.lua
 | 
			
		||||
    L["Action #%d"] = "Aktion #%d"
 | 
			
		||||
    L["Left Click Enemy 1"] = "Linksklick Gegner 1"
 | 
			
		||||
    L["Left Click Enemy 2"] = "Linksklick Gegner 2"
 | 
			
		||||
    L["Left Click Enemy 3"] = "Linksklick Gegner 3"
 | 
			
		||||
    L["Left Click Enemy 4"] = "Linksklick Gegner 4"
 | 
			
		||||
    L["Left Click Enemy 5"] = "Linksklick Gegner 5"
 | 
			
		||||
    L["Right Click Enemy 1"] = "Rechtsklick Gegner 1"
 | 
			
		||||
    L["Right Click Enemy 2"] = "Rechtsklick Gegner 2"
 | 
			
		||||
    L["Right Click Enemy 3"] = "Rechtsklick Gegner 3"
 | 
			
		||||
    L["Right Click Enemy 4"] = "Rechtsklick Gegner 4"
 | 
			
		||||
    L["Right Click Enemy 5"] = "Rechtsklick Gegner 5"
 | 
			
		||||
    L["Left button"] = "Linke Taste"
 | 
			
		||||
    L["Right button"] = "Rechte Taste"
 | 
			
		||||
    L["Middle button"] = "Mittlere Taste"
 | 
			
		||||
    L["Button 4"] = "Maus 4"
 | 
			
		||||
    L["Button 5"] = "Maus 5"
 | 
			
		||||
    L["None"] = "Keine"
 | 
			
		||||
    L["CTRL"] = "STRG"
 | 
			
		||||
    L["SHIFT"] = "SHIFT"
 | 
			
		||||
    L["ALT"] = "ALT"
 | 
			
		||||
    L["Cast Spell"] = "Wirke Zauber"
 | 
			
		||||
    L["Name"] = "Name"
 | 
			
		||||
    L["Select the name of the click option"] = "Wähle einen Namen für die Klickoption"
 | 
			
		||||
    L["Button"] = "Taste"
 | 
			
		||||
    L["Select which mouse button to use"] = "Wähle welche Maustaste genutzt werden soll"
 | 
			
		||||
    L["Modifier"] = "Modifier"
 | 
			
		||||
    L["Select which modifier to use"] = "Wähle welcher Modifier benutzt werdne soll"
 | 
			
		||||
    L["Action"] = "Aktion"
 | 
			
		||||
    L["Select what action this mouse button does"] = "Wähle welche Aktion die Maustaste durchführt"
 | 
			
		||||
    L["Spell name / Macro text"] = "Zaubername / Makrotext"
 | 
			
		||||
    L["Use *name* as unit's name. Like a '/rofl *name*'"] = "Benutzt *name* als Gegnername. Zum Beispiel '/rofl *name*'"
 | 
			
		||||
 | 
			
		||||
    -- Diminishings.lua
 | 
			
		||||
    L["DR Cooldown position"] = "Position des DR Cooldowns"
 | 
			
		||||
    L["Position of the cooldown icons"] = "Position des DR Cooldowns"
 | 
			
		||||
    L["Left"] = "Links"
 | 
			
		||||
    L["Right"] = "Rechts"
 | 
			
		||||
    L["Icon Size"] = "Symbolgröße"
 | 
			
		||||
    L["Size of the DR Icons"] = "Größe des DR Symbols"
 | 
			
		||||
 | 
			
		||||
    -- Healthbar.lua
 | 
			
		||||
    L["Show the actual health"] = "Zeige das Leben an"
 | 
			
		||||
    L["Show the actual health on the health bar"] = "Zeige das Leben auf der Lebensanzeige an"
 | 
			
		||||
    L["Show max health"] = "Zeige Maximalleben an"
 | 
			
		||||
    L["Show max health on the health bar"] = "Zeige Maximalleben auf der Lebensanzeige an"
 | 
			
		||||
    L["Show health percentage"] = "Zeige prozentuales Leben"
 | 
			
		||||
    L["Show health percentage on the health bar"] = "Zeige prozentuales Leben auf der Lebensanzeige an"
 | 
			
		||||
 | 
			
		||||
    -- Highlight.lua
 | 
			
		||||
    L["Border size"] = "Rahmengröße"
 | 
			
		||||
    L["Target border color"] = "Zielrahmenfarbe"
 | 
			
		||||
    L["Color of the selected targets border"] = "Farbe des Rahmens des gewählten Ziels"
 | 
			
		||||
    L["Focus border color"] = "Focusrahmenfarbe"
 | 
			
		||||
    L["Color of the focus border"] = "Farbe des Focusrahmens"
 | 
			
		||||
    L["Raid leader border color"] = "Schlachtzugleiterrahmenfarbe"
 | 
			
		||||
    L["Color of the raid leader border"] = "Farbe des Rahmens für den Schlachtzugleiter"
 | 
			
		||||
    L["Highlight target"] = "Highlight Ziel"
 | 
			
		||||
    L["Toggle if the selected target should be highlighted"] = "Включите, если необходима подсветка цели"
 | 
			
		||||
    L["Show border around target"] = "Zeige Rahmen um das Ziel an"
 | 
			
		||||
    L["Toggle if a border should be shown around the selected target"] = "Auswählen wenn ein Ramhen um das ausgewählte Ziel angezeigt werden soll"
 | 
			
		||||
    L["Show border around focus"] = "Zeige Rahmen um Focus"
 | 
			
		||||
    L["Toggle of a border should be shown around the current focus"] = "Auswählen wenn ein Ramhen um das ausgewählte Focusziel angezeigt werden soll"
 | 
			
		||||
    L["Show border around raid leader"] = "Zeige Rahmen um Schlachtzugleiter"
 | 
			
		||||
    L["Toggle if a border should be shown around the raid leader"] = "Auswählen wenn ein Ramhen um den ausgewählten SChlachtzugleiter angezeigt werden soll"
 | 
			
		||||
 | 
			
		||||
    -- Powerbar.lua
 | 
			
		||||
    L["Show the actual power"] = "Zeige genaue Power"
 | 
			
		||||
    L["Show the actual power on the power bar"] = "Zeige die genaue Power in der Powerleiste "
 | 
			
		||||
    L["Show max power"] = "Zeige Maximalpower"
 | 
			
		||||
    L["Show max power on the power bar"] = "Zeige Maximalpower in der Powerbau"
 | 
			
		||||
    L["Show power percentage"] = "Zeige prozentuale Power"
 | 
			
		||||
    L["Show power percentage on the power bar"] = "Zeige prozentuale Power in der Powerbau"
 | 
			
		||||
    L["Color of the status bar background"] = "Hintergrundfarbe der Statusleiste"
 | 
			
		||||
 | 
			
		||||
    -- Trinket.lua
 | 
			
		||||
    L["No cooldown count (OmniCC)"] = "Keine Cooldownanzeige (OmniCC)"
 | 
			
		||||
    L["Disable cooldown timers by addons (reload UI to take effect)"] = "Deaktiviere Cooldownanzeige durch Addons (UI neu laden um zu wirken)"
 | 
			
		||||
    L["Lock frame"] = "Sperre Frame"
 | 
			
		||||
    L["Toggle if frame can be moved"] = "Aktivieren falls das Frame bewegt werden kann"
 | 
			
		||||
    L["Grow frame upwards"] = "Frame von unten nach oben aufbauen"
 | 
			
		||||
    L["If enabled the frame will grow upwards instead of downwards"] = "Falls aktiviert, wird das Frame von unten nach oben aufgebaut"
 | 
			
		||||
    L["Down"] = "Runter"
 | 
			
		||||
    L["Up"] = "Hoch"
 | 
			
		||||
    L["Frame General"] = "Frame Allgemein"
 | 
			
		||||
    L["Frame scale"] = "Frame Skalierung"
 | 
			
		||||
    L["Scale of the frame"] = "Skalierung des Frames"
 | 
			
		||||
    L["Frame padding"] = "Symbolabstand"
 | 
			
		||||
    L["Padding of the frame"] = "Abstand zwischen den Elementen des Frames"
 | 
			
		||||
    L["Frame width"] = "Frame Breite"
 | 
			
		||||
    L["Margin"] = "Frame Abstand"
 | 
			
		||||
    L["Margin between each button"] = "Abstand zwischen den Arena Einheiten"
 | 
			
		||||
    L["Cooldown General"] = "Abklingzeiten Allgemein"
 | 
			
		||||
    L["Font General"] = "Schriftart Allgemein"
 | 
			
		||||
    L["General Font"] = "Allgemeine Schriftart"
 | 
			
		||||
    L["Font color text"] = "Schriftfarbe von text"
 | 
			
		||||
    L["Font color timer"] = "Schriftfarbe von Abklingzeiten"
 | 
			
		||||
    L["Color of the timers"] = "Farbe der Abklingzeiten"
 | 
			
		||||
    L["Icons General"] = "Symbol Allgemein"
 | 
			
		||||
    L["Icon border style"] = "Rahmenstil"
 | 
			
		||||
    L["This changes the border style of all icons"] = "Dies ändert den Rahmenstil aller Symbole"
 | 
			
		||||
    L["This changes the border color of all icons"] = "Dies ändert die Rahmenfarbe aller Symbole"
 | 
			
		||||
    L["Statusbar General"] = "Balken Allgemein"
 | 
			
		||||
    L["Statusbar texture"] = "Balken Textur"
 | 
			
		||||
    L["This changes the texture of all statusbar frames"] = "Dies ändert die Textur aller Balken"
 | 
			
		||||
    L["Statusbar border style"] = "Balken Rahmenstil"
 | 
			
		||||
    L["This changes the border style of all statusbar frames"] = "Dies ändert den Rahmenstil aller Balken"
 | 
			
		||||
    L["Statusbar border offset divider (smaller is higher offset)"] = "Rahmenstil offset Quotient"
 | 
			
		||||
    L["Offset of border to statusbar (in case statusbar shows beyond the border)"] = "Offset des Rahmens zur Statusbar (falls der Balken hinter dem Rahmen erscheint)"
 | 
			
		||||
    L["Statusbar border color"] = "Balken Rahmenfarbe"
 | 
			
		||||
    L["This changes the border color of all statusbar frames"] = "Dies ändert die Rahmenfarbe aller Balken"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Superhack allowing use key as value if not present in table
 | 
			
		||||
LibStub("Gladdy").L = setmetatable(L, {
 | 
			
		||||
    __index = function(t, k)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@ local Announcements = Gladdy:NewModule("Announcements", nil, {
 | 
			
		||||
        drinks = true,
 | 
			
		||||
        resurrections = true,
 | 
			
		||||
        enemy = false,
 | 
			
		||||
        spec = false,
 | 
			
		||||
        spec = true,
 | 
			
		||||
        health = false,
 | 
			
		||||
        healthThreshold = 20,
 | 
			
		||||
        trinketUsed = true,
 | 
			
		||||
        trinketReady = false,
 | 
			
		||||
        dest = "self",
 | 
			
		||||
        dest = "party",
 | 
			
		||||
    },
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@@ -206,9 +206,6 @@ function Announcements:GetOptions()
 | 
			
		||||
        ["party"] = L["Party"],
 | 
			
		||||
        ["rw"] = L["Raid Warning"],
 | 
			
		||||
        ["fct"] = L["Blizzard's Floating Combat Text"],
 | 
			
		||||
        --["msbt"] = L["MikScrollingBattleText"],
 | 
			
		||||
        --["sct"] = L["Scrolling Combat Text"],
 | 
			
		||||
        --["parrot"] = L["Parrot"],
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,11 @@
 | 
			
		||||
local floor, str_len, tostring, str_sub, str_find = math.floor, string.len, tostring, string.sub, string.find
 | 
			
		||||
local floor, str_len, tostring, str_sub, str_find, pairs = math.floor, string.len, tostring, string.sub, string.find, pairs
 | 
			
		||||
local CreateFrame = CreateFrame
 | 
			
		||||
local GetLocale = GetLocale
 | 
			
		||||
local GetTime = GetTime
 | 
			
		||||
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local ACDFrame = Gladdy:NewModule("Countdown", nil, {
 | 
			
		||||
local ACDFrame = Gladdy:NewModule("Arena Countdown", nil, {
 | 
			
		||||
    countdown = true,
 | 
			
		||||
    arenaCountdownSize = 256
 | 
			
		||||
})
 | 
			
		||||
@@ -13,6 +15,11 @@ function ACDFrame:OnEvent(event, ...)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:Initialize()
 | 
			
		||||
    if ACDFrame.locales[GetLocale()] then
 | 
			
		||||
        self.locale = ACDFrame.locales[GetLocale()]
 | 
			
		||||
    else
 | 
			
		||||
        self.locale = ACDFrame.locales["default"]
 | 
			
		||||
    end
 | 
			
		||||
    self.hidden = false
 | 
			
		||||
    self.countdown = -1
 | 
			
		||||
    self.texturePath = "Interface\\AddOns\\Gladdy\\Images\\Countdown\\";
 | 
			
		||||
@@ -44,6 +51,8 @@ function ACDFrame:Initialize()
 | 
			
		||||
    self.ACDNumOne = ACDNumOne
 | 
			
		||||
 | 
			
		||||
    self:RegisterMessage("JOINED_ARENA")
 | 
			
		||||
    self:RegisterMessage("ENEMY_SPOTTED")
 | 
			
		||||
    self:RegisterMessage("UNIT_SPEC")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame.OnUpdate(self, elapse)
 | 
			
		||||
@@ -82,50 +91,35 @@ function ACDFrame.OnUpdate(self, elapse)
 | 
			
		||||
        self.ACDNumOnes:Hide();
 | 
			
		||||
        self.ACDNumOne:Hide();
 | 
			
		||||
    end
 | 
			
		||||
    if (GetTime() > self.endTime) then
 | 
			
		||||
        self:SetScript("OnUpdate", nil)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:JOINED_ARENA()
 | 
			
		||||
    self:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
 | 
			
		||||
    self:SetScript("OnEvent", ACDFrame.OnEvent)
 | 
			
		||||
    self.endTime = GetTime() + 70
 | 
			
		||||
    self:SetScript("OnUpdate", ACDFrame.OnUpdate)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:ENEMY_SPOTTED()
 | 
			
		||||
    ACDFrame:Reset()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:UNIT_SPEC()
 | 
			
		||||
    ACDFrame:Reset()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:CHAT_MSG_BG_SYSTEM_NEUTRAL(msg)
 | 
			
		||||
    if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 60 secondes !")) then
 | 
			
		||||
        self.countdown = 61
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 30 secondes !")) then
 | 
			
		||||
        self.countdown = 31
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 15 secondes !")) then
 | 
			
		||||
        self.countdown = 16
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "L'ar\195\168ne ouvre ses portes dans 10 secondes !")) then
 | 
			
		||||
        self.countdown = 11
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "One minute until the Arena battle begins!")) then
 | 
			
		||||
        self.countdown = 61
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "Thirty seconds until the Arena battle begins!")) then
 | 
			
		||||
        self.countdown = 31
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "Fifteen seconds until the Arena battle begins!")) then
 | 
			
		||||
        self.countdown = 16
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "Ten seconds until the Arena battle begins!")) then
 | 
			
		||||
        self.countdown = 10
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if (str_find(msg, "The Arena battle has begun!")) then
 | 
			
		||||
        ACDFrame:SetScript("OnUpdate", nil)
 | 
			
		||||
        return
 | 
			
		||||
    for k,v in pairs(self.locale) do
 | 
			
		||||
        if str_find(msg, v) then
 | 
			
		||||
            if k == 0 then
 | 
			
		||||
                ACDFrame:Reset()
 | 
			
		||||
            else
 | 
			
		||||
                self.countdown = k
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -153,6 +147,7 @@ function ACDFrame:Test()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function ACDFrame:Reset()
 | 
			
		||||
    self.endTime = 0
 | 
			
		||||
    self.countdown = 0
 | 
			
		||||
    self:UnregisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL")
 | 
			
		||||
    self:SetScript("OnUpdate", nil)
 | 
			
		||||
@@ -171,7 +166,7 @@ function ACDFrame:GetOptions()
 | 
			
		||||
        },
 | 
			
		||||
        countdown = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Turn on/off"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Turns countdown before the start of an arena match on/off."],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            width = "full",
 | 
			
		||||
@@ -186,3 +181,66 @@ function ACDFrame:GetOptions()
 | 
			
		||||
        }),
 | 
			
		||||
    }
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
ACDFrame.locales = {
 | 
			
		||||
    ["default"] = {
 | 
			
		||||
        [61] = "One minute until the Arena battle begins!",
 | 
			
		||||
        [31] = "Thirty seconds until the Arena battle begins!",
 | 
			
		||||
        [16] = "Fifteen seconds until the Arena battle begins!",
 | 
			
		||||
        [0] = "The Arena battle has begun!",
 | 
			
		||||
    },
 | 
			
		||||
    ["esES"] = {
 | 
			
		||||
        [61] = "¡Un minuto hasta que dé comienzo la batalla en arena!",
 | 
			
		||||
        [31] = "¡Treinta segundos hasta que comience la batalla en arena!",
 | 
			
		||||
        [16] = "¡Quince segundos hasta que comience la batalla en arena!",
 | 
			
		||||
        [0] = "¡La batalla en arena ha comenzado!",
 | 
			
		||||
    },
 | 
			
		||||
    ["ptBR"] = {
 | 
			
		||||
        [61] = "Um minuto até a batalha na Arena começar!",
 | 
			
		||||
        [31] = "Trinta segundos até a batalha na Arena começar!",
 | 
			
		||||
        [16] = "Quinze segundos até a batalha na Arena começar!",
 | 
			
		||||
        [0] = "A batalha na Arena começou!",
 | 
			
		||||
    },
 | 
			
		||||
    ["deDE"] = {
 | 
			
		||||
        [61] = "Noch eine Minute bis der Arenakampf beginnt!",
 | 
			
		||||
        [31] = "Noch dreißig Sekunden bis der Arenakampf beginnt!",
 | 
			
		||||
        [16] = "Noch fünfzehn Sekunden bis der Arenakampf beginnt!",
 | 
			
		||||
        [0] = "Der Arenakampf hat begonnen!",
 | 
			
		||||
    },
 | 
			
		||||
    ["frFR"] = {
 | 
			
		||||
        [60] = "Le combat d'arène commence dans une minute\194\160!",
 | 
			
		||||
        [30] = "Le combat d'arène commence dans trente secondes\194\160!",
 | 
			
		||||
        [15] = "Le combat d'arène commence dans quinze secondes\194\160!",
 | 
			
		||||
        [0] = "Le combat d'arène commence\194\160!",
 | 
			
		||||
    },
 | 
			
		||||
    ["ruRU"] = {
 | 
			
		||||
        [61] = "Одна минута до начала боя на арене!",
 | 
			
		||||
        [31] = "Тридцать секунд до начала боя на арене!",
 | 
			
		||||
        [16] = "До начала боя на арене осталось 15 секунд.",
 | 
			
		||||
        [0] = "Бой начался!",
 | 
			
		||||
    },
 | 
			
		||||
    ["itIT"] = { -- TODO
 | 
			
		||||
        -- Beta has no itIT version available?
 | 
			
		||||
    },
 | 
			
		||||
    ["koKR"] = {
 | 
			
		||||
        [61] = "투기장 전투 시작 1분 전입니다!",
 | 
			
		||||
        [31] = "투기장 전투 시작 30초 전입니다!",
 | 
			
		||||
        [16] = "투기장 전투 시작 15초 전입니다!",
 | 
			
		||||
        [0] = "투기장 전투가 시작되었습니다!",
 | 
			
		||||
    },
 | 
			
		||||
    ["zhCN"] = {
 | 
			
		||||
        [61] = "竞技场战斗将在一分钟后开始!",
 | 
			
		||||
        [31] = "竞技场战斗将在三十秒后开始!",
 | 
			
		||||
        [16] = "竞技场战斗将在十五秒后开始!",
 | 
			
		||||
        [0] = "竞技场的战斗开始了!",
 | 
			
		||||
    },
 | 
			
		||||
    ["zhTW"] = {
 | 
			
		||||
        [61] = "1分鐘後競技場戰鬥開始!",
 | 
			
		||||
        [31] = "30秒後競技場戰鬥開始!",
 | 
			
		||||
        [16] = "15秒後競技場戰鬥開始!",
 | 
			
		||||
        [0] = "競技場戰鬥開始了!",
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ACDFrame.locales["esMX"] = ACDFrame.locales["esES"]
 | 
			
		||||
ACDFrame.locales["ptPT"] = ACDFrame.locales["ptBR"]
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ local function defaultSpells(auraType)
 | 
			
		||||
            spells[tostring(v.spellID)] = {}
 | 
			
		||||
            spells[tostring(v.spellID)].enabled = true
 | 
			
		||||
            spells[tostring(v.spellID)].priority = v.priority
 | 
			
		||||
            spells[tostring(v.spellID)].track = v.track
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    return spells
 | 
			
		||||
@@ -41,7 +42,7 @@ function Auras:Initialize()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Auras:CreateFrame(unit)
 | 
			
		||||
    local auraFrame = CreateFrame("Frame", nil, Gladdy.modules.Classicon.frames[unit])
 | 
			
		||||
    local auraFrame = CreateFrame("Frame", nil, Gladdy.modules["Class Icon"].frames[unit])
 | 
			
		||||
    auraFrame:EnableMouse(false)
 | 
			
		||||
    auraFrame:SetFrameStrata("MEDIUM")
 | 
			
		||||
    auraFrame:SetFrameLevel(3)
 | 
			
		||||
@@ -67,19 +68,9 @@ function Auras:CreateFrame(unit)
 | 
			
		||||
    auraFrame.icon.overlay:SetAllPoints(auraFrame)
 | 
			
		||||
    auraFrame.icon.overlay:SetTexture(Gladdy.db.buttonBorderStyle)
 | 
			
		||||
 | 
			
		||||
    local classIcon = Gladdy.modules.Classicon.frames[unit]
 | 
			
		||||
    local classIcon = Gladdy.modules["Class Icon"].frames[unit]
 | 
			
		||||
    auraFrame:ClearAllPoints()
 | 
			
		||||
    auraFrame:SetAllPoints(classIcon)
 | 
			
		||||
    auraFrame:SetScript("OnUpdate", function(self, elapsed)
 | 
			
		||||
        if (self.active) then
 | 
			
		||||
            if (self.timeLeft <= 0) then
 | 
			
		||||
                Auras:AURA_FADE(unit)
 | 
			
		||||
            else
 | 
			
		||||
                self.timeLeft = self.timeLeft - elapsed
 | 
			
		||||
                self.text:SetFormattedText("%.1f", self.timeLeft >= 0.0 and self.timeLeft or 0.0)
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    auraFrame.text = auraFrame.cooldownFrame:CreateFontString(nil, "OVERLAY")
 | 
			
		||||
    auraFrame.text:SetFont(Gladdy.LSM:Fetch("font", Gladdy.db.auraFont), 10, "OUTLINE")
 | 
			
		||||
@@ -90,6 +81,17 @@ function Auras:CreateFrame(unit)
 | 
			
		||||
    auraFrame.text:SetPoint("CENTER")
 | 
			
		||||
    auraFrame.unit = unit
 | 
			
		||||
 | 
			
		||||
    auraFrame:SetScript("OnUpdate", function(self, elapsed)
 | 
			
		||||
        if (self.active) then
 | 
			
		||||
            if (self.timeLeft <= 0) then
 | 
			
		||||
                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)
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end)
 | 
			
		||||
 | 
			
		||||
    self.frames[unit] = auraFrame
 | 
			
		||||
    self:ResetUnit(unit)
 | 
			
		||||
end
 | 
			
		||||
@@ -104,7 +106,7 @@ function Auras:UpdateFrame(unit)
 | 
			
		||||
 | 
			
		||||
    auraFrame:SetWidth(width)
 | 
			
		||||
    auraFrame:SetHeight(height)
 | 
			
		||||
    auraFrame:SetAllPoints(Gladdy.modules.Classicon.frames[unit])
 | 
			
		||||
    auraFrame:SetAllPoints(Gladdy.modules["Class Icon"].frames[unit])
 | 
			
		||||
 | 
			
		||||
    auraFrame.cooldown:SetWidth(width - width/16)
 | 
			
		||||
    auraFrame.cooldown:SetHeight(height - height/16)
 | 
			
		||||
@@ -123,6 +125,7 @@ function Auras:UpdateFrame(unit)
 | 
			
		||||
    else
 | 
			
		||||
        auraFrame.icon.overlay:SetVertexColor(0, 0, 0, 1)
 | 
			
		||||
    end
 | 
			
		||||
    auraFrame.icon.overlay:Hide()
 | 
			
		||||
    if Gladdy.db.auraDisableCircle then
 | 
			
		||||
        auraFrame.cooldown:SetAlpha(0)
 | 
			
		||||
    end
 | 
			
		||||
@@ -130,21 +133,30 @@ end
 | 
			
		||||
 | 
			
		||||
function Auras:ResetUnit(unit)
 | 
			
		||||
    self.frames[unit]:UnregisterAllEvents()
 | 
			
		||||
    self:AURA_FADE(unit)
 | 
			
		||||
    self:AURA_FADE(unit, AURA_TYPE_DEBUFF)
 | 
			
		||||
    self:AURA_FADE(unit, AURA_TYPE_BUFF)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Auras:Test(unit)
 | 
			
		||||
    local aura, _, icon
 | 
			
		||||
    local spellName, _, icon
 | 
			
		||||
 | 
			
		||||
    if (unit == "arena1") then
 | 
			
		||||
        aura, _, icon = GetSpellInfo(12826)
 | 
			
		||||
        self:AURA_GAIN(unit,nil, 12826, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration)
 | 
			
		||||
        spellName, _, icon = GetSpellInfo(12826)
 | 
			
		||||
        self:AURA_FADE(unit, AURA_TYPE_BUFF)
 | 
			
		||||
        self:AURA_FADE(unit, AURA_TYPE_DEBUFF)
 | 
			
		||||
        self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 12826, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
 | 
			
		||||
    elseif (unit == "arena2") then
 | 
			
		||||
        aura, _, icon = GetSpellInfo(6770)
 | 
			
		||||
        self:AURA_GAIN(unit,nil, 6770, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration)
 | 
			
		||||
        spellName, _, icon = GetSpellInfo(6770)
 | 
			
		||||
        self:AURA_FADE(unit, AURA_TYPE_BUFF)
 | 
			
		||||
        self:AURA_FADE(unit,AURA_TYPE_DEBUFF)
 | 
			
		||||
        self:AURA_GAIN(unit,AURA_TYPE_DEBUFF, 6770, spellName, icon, self.auras[spellName].duration, GetTime() + self.auras[spellName].duration)
 | 
			
		||||
    elseif (unit == "arena3") then
 | 
			
		||||
        aura, _, icon = GetSpellInfo(31224)
 | 
			
		||||
        self:AURA_GAIN(unit,nil, 31224, aura, icon, self.auras[aura].duration, GetTime() + self.auras[aura].duration)
 | 
			
		||||
        spellName, _, icon = GetSpellInfo(31224)
 | 
			
		||||
        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)
 | 
			
		||||
        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)
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -155,35 +167,36 @@ function Auras:JOINED_ARENA()
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirationTime, count, debuffType)
 | 
			
		||||
function Auras:AURA_GAIN(unit, auraType, spellID, spellName, icon, duration, expirationTime, count, debuffType)
 | 
			
		||||
    local auraFrame = self.frames[unit]
 | 
			
		||||
    if (not auraFrame) then
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if not self.auras[aura] then
 | 
			
		||||
 | 
			
		||||
    if not self.auras[spellName] then
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    -- don't use spellId from combatlog, in case of different spellrank
 | 
			
		||||
    if not Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)] or not Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].enabled then
 | 
			
		||||
    if not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)] or not Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].enabled then
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority) then
 | 
			
		||||
    if (auraFrame.priority and auraFrame.priority > Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority) then
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    auraFrame.startTime = expirationTime - duration
 | 
			
		||||
    auraFrame.endTime = expirationTime
 | 
			
		||||
    auraFrame.name = aura
 | 
			
		||||
    auraFrame.name = spellName
 | 
			
		||||
    auraFrame.timeLeft = expirationTime - GetTime()
 | 
			
		||||
    auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[aura].spellID)].priority
 | 
			
		||||
    auraFrame.priority = Gladdy.db.auraListDefault[tostring(self.auras[spellName].spellID)].priority
 | 
			
		||||
    auraFrame.icon:SetTexture(icon)
 | 
			
		||||
    auraFrame.track = self.auras[aura].track
 | 
			
		||||
    auraFrame.track = auraType
 | 
			
		||||
    auraFrame.active = true
 | 
			
		||||
    auraFrame.icon.overlay:SetTexture(Gladdy.db.auraBorderStyle)
 | 
			
		||||
    auraFrame.icon.overlay:Show()
 | 
			
		||||
    auraFrame.cooldownFrame:Show()
 | 
			
		||||
    if auraFrame.track and auraFrame.track == AURA_TYPE_DEBUFF then
 | 
			
		||||
    if auraType == AURA_TYPE_DEBUFF then
 | 
			
		||||
        auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraDebuffBorderColor.r, Gladdy.db.auraDebuffBorderColor.g, Gladdy.db.auraDebuffBorderColor.b, Gladdy.db.auraDebuffBorderColor.a)
 | 
			
		||||
    elseif auraFrame.track and auraFrame.track == AURA_TYPE_BUFF then
 | 
			
		||||
    elseif auraType == AURA_TYPE_BUFF then
 | 
			
		||||
        auraFrame.icon.overlay:SetVertexColor(Gladdy.db.auraBuffBorderColor.r, Gladdy.db.auraBuffBorderColor.g, Gladdy.db.auraBuffBorderColor.b, Gladdy.db.auraBuffBorderColor.a)
 | 
			
		||||
    else
 | 
			
		||||
        auraFrame.icon.overlay:SetVertexColor(Gladdy.db.frameBorderColor.r, Gladdy.db.frameBorderColor.g, Gladdy.db.frameBorderColor.b, Gladdy.db.frameBorderColor.a)
 | 
			
		||||
@@ -194,9 +207,9 @@ function Auras:AURA_GAIN(unit, auraType, spellID, aura, icon, duration, expirati
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function Auras:AURA_FADE(unit)
 | 
			
		||||
function Auras:AURA_FADE(unit, auraType)
 | 
			
		||||
    local auraFrame = self.frames[unit]
 | 
			
		||||
    if (not auraFrame) then
 | 
			
		||||
    if (not auraFrame or auraFrame.track ~= auraType) then
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
    if auraFrame.active then
 | 
			
		||||
@@ -211,7 +224,7 @@ function Auras:AURA_FADE(unit)
 | 
			
		||||
    auraFrame.endTime = nil
 | 
			
		||||
    auraFrame.icon:SetTexture("")
 | 
			
		||||
    auraFrame.text:SetText("")
 | 
			
		||||
    auraFrame.icon.overlay:SetTexture("")
 | 
			
		||||
    auraFrame.icon.overlay:Hide()
 | 
			
		||||
    auraFrame.cooldownFrame:Hide()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -225,12 +238,12 @@ function Auras:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                cooldown = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Cooldown",
 | 
			
		||||
                    name = L["Cooldown"],
 | 
			
		||||
                    order = 1,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        headerAuras = {
 | 
			
		||||
@@ -252,6 +265,18 @@ function Auras:GetOptions()
 | 
			
		||||
                            step = 0.1,
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                        }),
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                font = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = L["Font"],
 | 
			
		||||
                    order = 2,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        headerAuras = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Font"],
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                        },
 | 
			
		||||
                        auraFont = Gladdy:option({
 | 
			
		||||
                            type = "select",
 | 
			
		||||
                            name = L["Font"],
 | 
			
		||||
@@ -276,12 +301,12 @@ function Auras:GetOptions()
 | 
			
		||||
                            order = 7,
 | 
			
		||||
                            hasAlpha = true,
 | 
			
		||||
                        }),
 | 
			
		||||
                    }
 | 
			
		||||
                    },
 | 
			
		||||
                },
 | 
			
		||||
                border = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Border",
 | 
			
		||||
                    order = 2,
 | 
			
		||||
                    name = L["Border"],
 | 
			
		||||
                    order = 3,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        headerAuras = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
@@ -336,7 +361,7 @@ function Auras:GetAuraOptions(auraType)
 | 
			
		||||
        ckeckAll = {
 | 
			
		||||
            order = 1,
 | 
			
		||||
            width = "0.7",
 | 
			
		||||
            name = "Check All",
 | 
			
		||||
            name = L["Check All"],
 | 
			
		||||
            type = "execute",
 | 
			
		||||
            func = function(info)
 | 
			
		||||
                for k,v in pairs(defaultSpells(auraType)) do
 | 
			
		||||
@@ -347,7 +372,7 @@ function Auras:GetAuraOptions(auraType)
 | 
			
		||||
        uncheckAll = {
 | 
			
		||||
            order = 2,
 | 
			
		||||
            width = "0.7",
 | 
			
		||||
            name = "Uncheck All",
 | 
			
		||||
            name = L["Uncheck All"],
 | 
			
		||||
            type = "execute",
 | 
			
		||||
            func = function(info)
 | 
			
		||||
                for k,v in pairs(defaultSpells(auraType)) do
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ local LibClassAuras = LibStub("LibClassAuras-1.0")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local defaultTrackedDebuffs = select(2, Gladdy:GetAuras(AURA_TYPE_DEBUFF))
 | 
			
		||||
local defaultTrackedBuffs = select(2, Gladdy:GetAuras(AURA_TYPE_BUFF))
 | 
			
		||||
local BuffsDebuffs = Gladdy:NewModule("BuffsDebuffs", nil, {
 | 
			
		||||
local BuffsDebuffs = Gladdy:NewModule("Buffs and Debuffs", nil, {
 | 
			
		||||
    buffsEnabled = true,
 | 
			
		||||
    buffsShowAuraDebuffs = false,
 | 
			
		||||
    buffsAlpha = 1,
 | 
			
		||||
@@ -226,15 +226,16 @@ end
 | 
			
		||||
---------------------------
 | 
			
		||||
 | 
			
		||||
function BuffsDebuffs:CreateFrame(unit)
 | 
			
		||||
    local verticalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    local debuffFrame = CreateFrame("Frame", "GladdyDebuffs" .. unit, Gladdy.buttons[unit])
 | 
			
		||||
    debuffFrame:SetHeight(Gladdy.db.buffsIconSize)
 | 
			
		||||
    debuffFrame:SetWidth(1)
 | 
			
		||||
    debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding)
 | 
			
		||||
    debuffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin)
 | 
			
		||||
    debuffFrame.unit = unit
 | 
			
		||||
    local buffFrame = CreateFrame("Frame", "GladdyBuffs" .. unit, Gladdy.buttons[unit])
 | 
			
		||||
    buffFrame:SetHeight(Gladdy.db.buffsIconSize)
 | 
			
		||||
    buffFrame:SetWidth(1)
 | 
			
		||||
    buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, Gladdy.db.highlightBorderSize + Gladdy.db.padding)
 | 
			
		||||
    buffFrame:SetPoint("BOTTOMLEFT", Gladdy.buttons[unit].healthBar, "TOPLEFT", 0, verticalMargin)
 | 
			
		||||
    buffFrame.unit = unit
 | 
			
		||||
    self.frames[unit] = {}
 | 
			
		||||
    self.frames[unit].buffFrame = buffFrame
 | 
			
		||||
@@ -277,7 +278,9 @@ end
 | 
			
		||||
function BuffsDebuffs:UpdateFrame(unit)
 | 
			
		||||
    self.frames[unit].debuffFrame:SetHeight(Gladdy.db.buffsIconSize)
 | 
			
		||||
    self.frames[unit].debuffFrame:ClearAllPoints()
 | 
			
		||||
    local horizontalMargin = Gladdy.db.highlightBorderSize
 | 
			
		||||
 | 
			
		||||
    --DEBUFFS
 | 
			
		||||
    local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
 | 
			
		||||
    local verticalMargin = -(Gladdy.db.powerBarHeight)/2
 | 
			
		||||
    if Gladdy.db.buffsCooldownPos == "TOP" then
 | 
			
		||||
        verticalMargin = horizontalMargin + 1
 | 
			
		||||
@@ -300,7 +303,7 @@ function BuffsDebuffs:UpdateFrame(unit)
 | 
			
		||||
            self.frames[unit].debuffFrame:SetPoint("TOPRIGHT", Gladdy.buttons[unit].powerBar, "BOTTOMLEFT", Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset -verticalMargin)
 | 
			
		||||
        end
 | 
			
		||||
    elseif Gladdy.db.buffsCooldownPos == "LEFT" then
 | 
			
		||||
        horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding
 | 
			
		||||
        horizontalMargin = horizontalMargin - 1 + Gladdy.db.padding
 | 
			
		||||
        local anchor = Gladdy:GetAnchor(unit, "LEFT")
 | 
			
		||||
        if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
            self.frames[unit].debuffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsXOffset, Gladdy.db.buffsYOffset)
 | 
			
		||||
@@ -318,9 +321,10 @@ function BuffsDebuffs:UpdateFrame(unit)
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    --BUFFS
 | 
			
		||||
    self.frames[unit].buffFrame:SetHeight(Gladdy.db.buffsBuffsIconSize)
 | 
			
		||||
    self.frames[unit].buffFrame:ClearAllPoints()
 | 
			
		||||
    horizontalMargin = Gladdy.db.highlightBorderSize
 | 
			
		||||
    horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
 | 
			
		||||
    verticalMargin = -(Gladdy.db.powerBarHeight)/2
 | 
			
		||||
    if Gladdy.db.buffsBuffsCooldownPos == "TOP" then
 | 
			
		||||
        verticalMargin = horizontalMargin + 1
 | 
			
		||||
@@ -369,7 +373,7 @@ function BuffsDebuffs:UpdateFrame(unit)
 | 
			
		||||
        --self.frames[unit].buffFrame:SetPoint("RIGHT", Gladdy.buttons[unit].healthBar, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin)
 | 
			
		||||
 | 
			
		||||
        local anchor = Gladdy:GetAnchor(unit, "LEFT")
 | 
			
		||||
        horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding
 | 
			
		||||
        horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding
 | 
			
		||||
        if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
            self.frames[unit].buffFrame:SetPoint("RIGHT", anchor, "LEFT", -horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
 | 
			
		||||
        else
 | 
			
		||||
@@ -403,7 +407,7 @@ function BuffsDebuffs:UpdateFrame(unit)
 | 
			
		||||
        --self.frames[unit].buffFrame:SetPoint("LEFT", Gladdy.buttons[unit].healthBar, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset + verticalMargin)
 | 
			
		||||
 | 
			
		||||
        local anchor = Gladdy:GetAnchor(unit, "RIGHT")
 | 
			
		||||
        horizontalMargin = Gladdy.db.highlightBorderSize - 1 + Gladdy.db.padding
 | 
			
		||||
        horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) - 1 + Gladdy.db.padding
 | 
			
		||||
        if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
            self.frames[unit].buffFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.buffsBuffsXOffset, Gladdy.db.buffsBuffsYOffset)
 | 
			
		||||
        else
 | 
			
		||||
@@ -619,7 +623,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
        },
 | 
			
		||||
        buffsEnabled = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Enable"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Enabled Buffs and Debuffs module"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
        }),
 | 
			
		||||
@@ -632,7 +636,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 5,
 | 
			
		||||
            args = {
 | 
			
		||||
                buffs = {
 | 
			
		||||
@@ -642,7 +646,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                    args = {
 | 
			
		||||
                        size = {
 | 
			
		||||
                            type = "group",
 | 
			
		||||
                            name = "Size & Padding",
 | 
			
		||||
                            name = L["Size & Padding"],
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                            args = {
 | 
			
		||||
                                header = {
 | 
			
		||||
@@ -681,7 +685,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                        },
 | 
			
		||||
                        position = {
 | 
			
		||||
                            type = "group",
 | 
			
		||||
                            name = "Position",
 | 
			
		||||
                            name = L["Position"],
 | 
			
		||||
                            order = 3,
 | 
			
		||||
                            args = {
 | 
			
		||||
                                header = {
 | 
			
		||||
@@ -758,7 +762,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                    args = {
 | 
			
		||||
                        size = {
 | 
			
		||||
                            type = "group",
 | 
			
		||||
                            name = "Size & Padding",
 | 
			
		||||
                            name = L["Size & Padding"],
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                            args = {
 | 
			
		||||
                                header = {
 | 
			
		||||
@@ -797,7 +801,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                        },
 | 
			
		||||
                        position = {
 | 
			
		||||
                            type = "group",
 | 
			
		||||
                            name = "Position",
 | 
			
		||||
                            name = L["Position"],
 | 
			
		||||
                            order = 3,
 | 
			
		||||
                            args = {
 | 
			
		||||
                                header = {
 | 
			
		||||
@@ -869,7 +873,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                },
 | 
			
		||||
                cooldown = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Cooldown",
 | 
			
		||||
                    name = L["Cooldown"],
 | 
			
		||||
                    order = 3,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
@@ -881,6 +885,7 @@ function BuffsDebuffs:GetOptions()
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["No Cooldown Circle"],
 | 
			
		||||
                            order = 9,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        buffsCooldownAlpha = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ local BackdropTemplateMixin = BackdropTemplateMixin
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
 | 
			
		||||
local Castbar = Gladdy:NewModule("Castbar", 70, {
 | 
			
		||||
local Castbar = Gladdy:NewModule("Cast Bar", 70, {
 | 
			
		||||
    castBarHeight = 20,
 | 
			
		||||
    castBarWidth = 160,
 | 
			
		||||
    castBarIconSize = 22,
 | 
			
		||||
@@ -165,7 +165,7 @@ function Castbar:UpdateFrame(unit)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    castBar:ClearAllPoints()
 | 
			
		||||
    local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
 | 
			
		||||
    local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    if (Gladdy.db.castBarPos == "LEFT") then
 | 
			
		||||
        local anchor = Gladdy:GetAnchor(unit, "LEFT")
 | 
			
		||||
        if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
@@ -519,7 +519,7 @@ local function option(params)
 | 
			
		||||
        set = function(info, value)
 | 
			
		||||
            local key = info.arg or info[#info]
 | 
			
		||||
            Gladdy.dbi.profile[key] = value
 | 
			
		||||
            Gladdy.options.args.Castbar.args.group.args.barFrame.args.castBarBorderSize.max = Gladdy.db.castBarHeight/2
 | 
			
		||||
            Gladdy.options.args["Cast Bar"].args.group.args.barFrame.args.castBarBorderSize.max = Gladdy.db.castBarHeight/2
 | 
			
		||||
            if Gladdy.db.castBarBorderSize > Gladdy.db.castBarHeight/2 then
 | 
			
		||||
                Gladdy.db.castBarBorderSize = Gladdy.db.castBarHeight/2
 | 
			
		||||
            end
 | 
			
		||||
@@ -544,12 +544,12 @@ function Castbar:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                barFrame = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Bar",
 | 
			
		||||
                    name = L["Bar"],
 | 
			
		||||
                    order = 1,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        headerSize = {
 | 
			
		||||
@@ -632,7 +632,7 @@ function Castbar:GetOptions()
 | 
			
		||||
                },
 | 
			
		||||
                icon = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Icon",
 | 
			
		||||
                    name = L["Icon"],
 | 
			
		||||
                    order = 2,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        headerSize = {
 | 
			
		||||
@@ -669,7 +669,7 @@ function Castbar:GetOptions()
 | 
			
		||||
                },
 | 
			
		||||
                spark = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Spark",
 | 
			
		||||
                    name = L["Spark"],
 | 
			
		||||
                    order = 3,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
@@ -693,7 +693,7 @@ function Castbar:GetOptions()
 | 
			
		||||
                },
 | 
			
		||||
                font = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Font",
 | 
			
		||||
                    name = L["Font"],
 | 
			
		||||
                    order = 4,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
@@ -743,7 +743,7 @@ function Castbar:GetOptions()
 | 
			
		||||
                },
 | 
			
		||||
                position = {
 | 
			
		||||
                    type = "group",
 | 
			
		||||
                    name = "Position",
 | 
			
		||||
                    name = L["Position"],
 | 
			
		||||
                    order = 5,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@ local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local CreateFrame = CreateFrame
 | 
			
		||||
local GetSpellInfo = GetSpellInfo
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local Classicon = Gladdy:NewModule("Classicon", 80, {
 | 
			
		||||
local Classicon = Gladdy:NewModule("Class Icon", 80, {
 | 
			
		||||
    classIconPos = "LEFT",
 | 
			
		||||
    classIconSize = 60 + 20 + 1,
 | 
			
		||||
    classIconWidthFactor = 0.9,
 | 
			
		||||
@@ -120,7 +120,7 @@ function Classicon:UpdateFrame(unit)
 | 
			
		||||
    classIcon:SetHeight(Gladdy.db.classIconSize)
 | 
			
		||||
 | 
			
		||||
    classIcon:ClearAllPoints()
 | 
			
		||||
    local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
 | 
			
		||||
    local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    if (Gladdy.db.classIconPos == "LEFT") then
 | 
			
		||||
        classIcon:SetPoint("TOPRIGHT", Gladdy.buttons[unit].healthBar, "TOPLEFT", -margin, 0)
 | 
			
		||||
    else
 | 
			
		||||
@@ -195,7 +195,7 @@ function Classicon:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                size = {
 | 
			
		||||
@@ -203,6 +203,11 @@ function Classicon:GetOptions()
 | 
			
		||||
                    name = L["Icon size"],
 | 
			
		||||
                    order = 1,
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Icon size"],
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                        },
 | 
			
		||||
                        classIconSize = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
                            name = L["Icon size"],
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ local ANCHORS = { ["LEFT"] = "RIGHT", ["RIGHT"] = "LEFT", ["BOTTOM"] = "TOP", ["
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
 | 
			
		||||
local CombatIndicator = Gladdy:NewModule("CombatIndicator", nil, {
 | 
			
		||||
local CombatIndicator = Gladdy:NewModule("Combat Indicator", nil, {
 | 
			
		||||
    ciEnabled = true,
 | 
			
		||||
    ciSize = 20,
 | 
			
		||||
    ciAlpha = 1,
 | 
			
		||||
@@ -64,6 +64,7 @@ function CombatIndicator:UpdateFrame(unit)
 | 
			
		||||
    end
 | 
			
		||||
    ciFrame:SetHeight(Gladdy.db.ciSize)
 | 
			
		||||
    ciFrame:SetWidth(Gladdy.db.ciSize * Gladdy.db.ciWidthFactor)
 | 
			
		||||
    ciFrame.border:SetTexture(Gladdy.db.ciBorderStyle)
 | 
			
		||||
    ciFrame.border:SetVertexColor(Gladdy.db.ciBorderColor.r, Gladdy.db.ciBorderColor.g, Gladdy.db.ciBorderColor.b, Gladdy.db.ciBorderColor.a)
 | 
			
		||||
 | 
			
		||||
    ciFrame:ClearAllPoints()
 | 
			
		||||
@@ -106,21 +107,21 @@ end
 | 
			
		||||
 | 
			
		||||
function CombatIndicator:GetOptions()
 | 
			
		||||
    return {
 | 
			
		||||
        headerTrinket = {
 | 
			
		||||
        header = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Racial"],
 | 
			
		||||
            name = L["Combat Indicator"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        },
 | 
			
		||||
        ciEnabled = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Enable ci icon"],
 | 
			
		||||
            desc = L["Enable Combat Indicator icon"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
        }),
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
 
 | 
			
		||||
@@ -135,29 +135,30 @@ function Cooldowns:UpdateFrame(unit)
 | 
			
		||||
    if (Gladdy.db.cooldown) then
 | 
			
		||||
        button.spellCooldownFrame:ClearAllPoints()
 | 
			
		||||
        local verticalMargin = -(Gladdy.db.powerBarHeight)/2
 | 
			
		||||
        local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize)
 | 
			
		||||
        if Gladdy.db.cooldownYPos == "TOP" then
 | 
			
		||||
            if Gladdy.db.cooldownXPos == "RIGHT" then
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("BOTTOMRIGHT", button.healthBar, "TOPRIGHT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset)
 | 
			
		||||
            else
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset)
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("BOTTOMLEFT", button.healthBar, "TOPLEFT", Gladdy.db.cooldownXOffset, horizontalMargin + Gladdy.db.cooldownYOffset)
 | 
			
		||||
            end
 | 
			
		||||
        elseif Gladdy.db.cooldownYPos == "BOTTOM" then
 | 
			
		||||
            if Gladdy.db.cooldownXPos == "RIGHT" then
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset) -- needs to be properly anchored after trinket
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("TOPRIGHT", button.powerBar, "BOTTOMRIGHT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset)
 | 
			
		||||
            else
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -Gladdy.db.highlightBorderSize + Gladdy.db.cooldownYOffset)
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("TOPLEFT", button.powerBar, "BOTTOMLEFT", Gladdy.db.cooldownXOffset, -horizontalMargin + Gladdy.db.cooldownYOffset)
 | 
			
		||||
            end
 | 
			
		||||
        elseif Gladdy.db.cooldownYPos == "LEFT" then
 | 
			
		||||
            local anchor = Gladdy:GetAnchor(unit, "LEFT")
 | 
			
		||||
            if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -(Gladdy.db.highlightBorderSize + Gladdy.db.padding) + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -(horizontalMargin + Gladdy.db.padding) + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
            else
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("RIGHT", anchor, "LEFT", -Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
            end
 | 
			
		||||
        elseif Gladdy.db.cooldownYPos == "RIGHT" then
 | 
			
		||||
            local anchor = Gladdy:GetAnchor(unit, "RIGHT")
 | 
			
		||||
            if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.highlightBorderSize + Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", horizontalMargin + Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
            else
 | 
			
		||||
                button.spellCooldownFrame:SetPoint("LEFT", anchor, "RIGHT", Gladdy.db.padding + Gladdy.db.cooldownXOffset, Gladdy.db.cooldownYOffset)
 | 
			
		||||
            end
 | 
			
		||||
@@ -575,14 +576,14 @@ function Cooldowns:GetOptions()
 | 
			
		||||
        },
 | 
			
		||||
        cooldown = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Enable"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Enabled cooldown module"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        }),
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                icon = {
 | 
			
		||||
@@ -601,7 +602,7 @@ function Cooldowns:GetOptions()
 | 
			
		||||
                            desc = L["Size of each cd icon"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            min = 5,
 | 
			
		||||
                            max = (Gladdy.db.healthBarHeight + Gladdy.db.castBarHeight + Gladdy.db.powerBarHeight + Gladdy.db.bottomMargin) / 2,
 | 
			
		||||
                            max = 50,
 | 
			
		||||
                        }),
 | 
			
		||||
                        cooldownWidthFactor = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -645,6 +646,7 @@ function Cooldowns:GetOptions()
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["No Cooldown Circle"],
 | 
			
		||||
                            order = 8,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        cooldownCooldownAlpha = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -777,7 +779,7 @@ function Cooldowns:GetOptions()
 | 
			
		||||
        cooldowns = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Cooldowns",
 | 
			
		||||
            name = L["Cooldowns"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = Cooldowns:GetCooldownOptions(),
 | 
			
		||||
        },
 | 
			
		||||
 
 | 
			
		||||
@@ -162,7 +162,7 @@ function Diminishings:UpdateFrame(unit)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    drFrame:ClearAllPoints()
 | 
			
		||||
    local horizontalMargin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
 | 
			
		||||
    local horizontalMargin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    if (Gladdy.db.drCooldownPos == "LEFT") then
 | 
			
		||||
        local anchor = Gladdy:GetAnchor(unit, "LEFT")
 | 
			
		||||
        if anchor == Gladdy.buttons[unit].healthBar then
 | 
			
		||||
@@ -359,14 +359,14 @@ function Diminishings:GetOptions()
 | 
			
		||||
        },
 | 
			
		||||
        drEnabled = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Enable"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Enabled DR module"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
        }),
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                icon = {
 | 
			
		||||
@@ -422,6 +422,7 @@ function Diminishings:GetOptions()
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["No Cooldown Circle"],
 | 
			
		||||
                            order = 8,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        drCooldownAlpha = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ local function table_copy(t)
 | 
			
		||||
    return t2;
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local ExportImport = Gladdy:NewModule("ExportImport", nil, {
 | 
			
		||||
local ExportImport = Gladdy:NewModule("Export Import", nil, {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -85,6 +85,10 @@ end)
 | 
			
		||||
import:AddChild(importClearButton)
 | 
			
		||||
import.clearButton = importClearButton
 | 
			
		||||
 | 
			
		||||
local deletedOptions = { --TODO backward compatibility Imports on deleted options
 | 
			
		||||
    growUp = true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function ExportImport:CheckDeserializedOptions(tbl, refTbl, str)
 | 
			
		||||
    if str == nil and not tbl.version_major_num then
 | 
			
		||||
        return false, "Version conflict: version_major_num not seen"
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ local RAID_CLASS_COLORS = RAID_CLASS_COLORS
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
 | 
			
		||||
local Healthbar = Gladdy:NewModule("Healthbar", 100, {
 | 
			
		||||
local Healthbar = Gladdy:NewModule("Health Bar", 100, {
 | 
			
		||||
    healthBarFont = "DorisPP",
 | 
			
		||||
    healthBarHeight = 60,
 | 
			
		||||
    healthBarTexture = "Smooth",
 | 
			
		||||
@@ -98,8 +98,9 @@ function Healthbar.OnEvent(self, event, unit)
 | 
			
		||||
    if event == "UNIT_HEALTH" then
 | 
			
		||||
        local health = UnitHealth(unit)
 | 
			
		||||
        local healthMax = UnitHealthMax(unit)
 | 
			
		||||
        Healthbar:SetHealthText(self, health, healthMax)
 | 
			
		||||
        self.hp:SetMinMaxValues(0, healthMax)
 | 
			
		||||
        self.hp:SetValue(UnitHealth(unit))
 | 
			
		||||
        Healthbar:SetHealthText(self, health, healthMax)
 | 
			
		||||
    elseif event == "UNIT_MAXHEALTH" then
 | 
			
		||||
        local health = UnitHealth(unit)
 | 
			
		||||
        local healthMax = UnitHealthMax(unit)
 | 
			
		||||
@@ -109,7 +110,9 @@ function Healthbar.OnEvent(self, event, unit)
 | 
			
		||||
    elseif event == "UNIT_NAME_UPDATE" then
 | 
			
		||||
        local name = UnitName(unit)
 | 
			
		||||
        Gladdy.buttons[unit].name = name
 | 
			
		||||
        self.nameText:SetText(name)
 | 
			
		||||
        if Gladdy.db.healthName and not Gladdy.db.healthNameToArenaId then
 | 
			
		||||
            self.nameText:SetText(name)
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    if not Gladdy.buttons[unit].class then
 | 
			
		||||
        Gladdy:SpotEnemy(unit, true)
 | 
			
		||||
@@ -164,7 +167,7 @@ function Healthbar:UpdateFrame(unit)
 | 
			
		||||
                            edgeSize = Gladdy.db.healthBarBorderSize })
 | 
			
		||||
    healthBar:SetBackdropBorderColor(Gladdy.db.healthBarBorderColor.r, Gladdy.db.healthBarBorderColor.g, Gladdy.db.healthBarBorderColor.b, Gladdy.db.healthBarBorderColor.a)
 | 
			
		||||
    healthBar:ClearAllPoints()
 | 
			
		||||
    healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", iconSize, 0)
 | 
			
		||||
    healthBar:SetPoint("TOPLEFT", Gladdy.buttons[unit], "TOPLEFT", 0, 0)
 | 
			
		||||
    healthBar:SetPoint("BOTTOMRIGHT", Gladdy.buttons[unit], "BOTTOMRIGHT")
 | 
			
		||||
 | 
			
		||||
    healthBar.hp:SetStatusBarTexture(Gladdy.LSM:Fetch("statusbar", Gladdy.db.healthBarTexture))
 | 
			
		||||
@@ -316,7 +319,7 @@ local function option(params)
 | 
			
		||||
        set = function(info, value)
 | 
			
		||||
            local key = info.arg or info[#info]
 | 
			
		||||
            Gladdy.dbi.profile[key] = value
 | 
			
		||||
            Gladdy.options.args.Healthbar.args.group.args.border.args.healthBarBorderSize.max = Gladdy.db.healthBarHeight/2
 | 
			
		||||
            Gladdy.options.args["Health Bar"].args.group.args.border.args.healthBarBorderSize.max = Gladdy.db.healthBarHeight/2
 | 
			
		||||
            if Gladdy.db.healthBarBorderSize > Gladdy.db.healthBarHeight/2 then
 | 
			
		||||
                Gladdy.db.healthBarBorderSize = Gladdy.db.healthBarHeight/2
 | 
			
		||||
            end
 | 
			
		||||
@@ -344,7 +347,7 @@ function Healthbar:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
@@ -478,12 +481,14 @@ function Healthbar:GetOptions()
 | 
			
		||||
                            name = L["Show name text"],
 | 
			
		||||
                            desc = L["Show the units name"],
 | 
			
		||||
                            order = 2,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        healthNameToArenaId = option({
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["Show ArenaX"],
 | 
			
		||||
                            desc = L["Show Arena1-5 as name instead"],
 | 
			
		||||
                            order = 3,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                            disabled = function() return not Gladdy.db.healthName end
 | 
			
		||||
                        }),
 | 
			
		||||
                        healthActual = option({
 | 
			
		||||
@@ -491,18 +496,21 @@ function Healthbar:GetOptions()
 | 
			
		||||
                            name = L["Show the actual health"],
 | 
			
		||||
                            desc = L["Show the actual health on the health bar"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        healthMax = option({
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["Show max health"],
 | 
			
		||||
                            desc = L["Show max health on the health bar"],
 | 
			
		||||
                            order = 5,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        healthPercentage = option({
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["Show health percentage"],
 | 
			
		||||
                            desc = L["Show health percentage on the health bar"],
 | 
			
		||||
                            order = 6,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                    },
 | 
			
		||||
                },
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,12 @@ local CreateFrame, UnitIsUnit = CreateFrame, UnitIsUnit
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local Highlight = Gladdy:NewModule("Highlight", nil, {
 | 
			
		||||
    highlightBorderSize = 2,
 | 
			
		||||
    highlightBorderSize = 1,
 | 
			
		||||
    highlightInset = false,
 | 
			
		||||
    targetBorderColor = { r = 1, g = 0.8, b = 0, a = 1 },
 | 
			
		||||
    focusBorderColor = { r = 1, g = 0, b = 0, a = 1 },
 | 
			
		||||
    leaderBorderColor = { r = 0, g = 1, b = 0, a = 1 },
 | 
			
		||||
    highlightBorderStyle = "Square Full White",
 | 
			
		||||
    highlight = true,
 | 
			
		||||
    targetBorder = true,
 | 
			
		||||
    focusBorder = true,
 | 
			
		||||
@@ -50,20 +52,20 @@ function Highlight:CreateFrame(unit)
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    local healthBar = Gladdy.modules.Healthbar.frames[unit]
 | 
			
		||||
    local healthBar = Gladdy.modules["Health Bar"].frames[unit]
 | 
			
		||||
 | 
			
		||||
    local targetBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
 | 
			
		||||
    targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    --targetBorder:SetFrameStrata("MEDIUM")
 | 
			
		||||
    targetBorder:Hide()
 | 
			
		||||
 | 
			
		||||
    local focusBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
 | 
			
		||||
    focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    --focusBorder:SetFrameStrata("MEDIUM")
 | 
			
		||||
    focusBorder:Hide()
 | 
			
		||||
 | 
			
		||||
    local leaderBorder = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
 | 
			
		||||
    leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = Gladdy.db.highlightBorderSize })
 | 
			
		||||
    --leaderBorder:SetFrameStrata("MEDIUM")
 | 
			
		||||
    leaderBorder:Hide()
 | 
			
		||||
 | 
			
		||||
@@ -88,29 +90,48 @@ function Highlight:UpdateFrame(unit)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    local borderSize = Gladdy.db.highlightBorderSize
 | 
			
		||||
    local borderOffset = borderSize
 | 
			
		||||
    local iconSize = Gladdy.db.healthBarHeight + Gladdy.db.powerBarHeight + 1
 | 
			
		||||
    local width = Gladdy.db.barWidth + borderSize * 2
 | 
			
		||||
    local height = iconSize + borderSize * 2
 | 
			
		||||
    local width = Gladdy.db.barWidth + (Gladdy.db.highlightInset and 0 or borderSize * 2)
 | 
			
		||||
    local height = iconSize + (Gladdy.db.highlightInset and 0 or borderSize * 2)
 | 
			
		||||
 | 
			
		||||
    button.targetBorder:SetWidth(width)
 | 
			
		||||
    button.targetBorder:SetHeight(height)
 | 
			
		||||
    button.targetBorder:ClearAllPoints()
 | 
			
		||||
    button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
 | 
			
		||||
    button.targetBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
 | 
			
		||||
    if Gladdy.db.highlightInset then
 | 
			
		||||
        button.targetBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
        button.targetBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
    else
 | 
			
		||||
        button.targetBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    button.targetBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
 | 
			
		||||
    button.targetBorder:SetBackdropBorderColor(Gladdy.db.targetBorderColor.r, Gladdy.db.targetBorderColor.g, Gladdy.db.targetBorderColor.b, Gladdy.db.targetBorderColor.a)
 | 
			
		||||
 | 
			
		||||
    button.focusBorder:SetWidth(width)
 | 
			
		||||
    button.focusBorder:SetHeight(height)
 | 
			
		||||
    button.focusBorder:ClearAllPoints()
 | 
			
		||||
    button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
 | 
			
		||||
    button.focusBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
 | 
			
		||||
    if Gladdy.db.highlightInset then
 | 
			
		||||
        button.focusBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
        button.focusBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
    else
 | 
			
		||||
        button.focusBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    button.focusBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
 | 
			
		||||
    button.focusBorder:SetBackdropBorderColor(Gladdy.db.focusBorderColor.r, Gladdy.db.focusBorderColor.g, Gladdy.db.focusBorderColor.b, Gladdy.db.focusBorderColor.a)
 | 
			
		||||
 | 
			
		||||
    button.leaderBorder:SetWidth(width)
 | 
			
		||||
    button.leaderBorder:SetHeight(height)
 | 
			
		||||
    button.leaderBorder:ClearAllPoints()
 | 
			
		||||
    button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, borderSize)
 | 
			
		||||
    button.leaderBorder:SetBackdrop({ edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = borderSize })
 | 
			
		||||
    if Gladdy.db.highlightInset then
 | 
			
		||||
        button.leaderBorder:SetPoint("TOPLEFT", button.healthBar, "TOPLEFT", -(borderOffset/Gladdy.db.statusbarBorderOffset), (borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
        button.leaderBorder:SetPoint("BOTTOMRIGHT", button.powerBar, "BOTTOMRIGHT", (borderOffset/Gladdy.db.statusbarBorderOffset), -(borderOffset/Gladdy.db.statusbarBorderOffset))
 | 
			
		||||
    else
 | 
			
		||||
        button.leaderBorder:SetPoint("TOP", button.healthBar, "TOP", 0, (Gladdy.db.highlightInset and 0 or borderSize))
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    button.leaderBorder:SetBackdrop({ edgeFile = Gladdy.LSM:Fetch("border", Gladdy.db.highlightBorderStyle), edgeSize = borderSize })
 | 
			
		||||
    button.leaderBorder:SetBackdropBorderColor(Gladdy.db.leaderBorderColor.r, Gladdy.db.leaderBorderColor.g, Gladdy.db.leaderBorderColor.b, Gladdy.db.leaderBorderColor.a)
 | 
			
		||||
    if Gladdy.frame.testing then
 | 
			
		||||
        Highlight:Test(unit)
 | 
			
		||||
@@ -179,39 +200,50 @@ function Highlight:GetOptions()
 | 
			
		||||
            name = L["Highlight"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        },
 | 
			
		||||
        highlightBorderSize = {
 | 
			
		||||
        highlightInset = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Show Inside"],
 | 
			
		||||
            desc = L["Show Highlight border inside of frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
        }),
 | 
			
		||||
        highlightBorderSize = Gladdy:option({
 | 
			
		||||
            type = "range",
 | 
			
		||||
            name = L["Border size"],
 | 
			
		||||
            desc = L["Border size"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            order = 4,
 | 
			
		||||
            min = 1,
 | 
			
		||||
            max = 10,
 | 
			
		||||
            max = 20,
 | 
			
		||||
            step = 1,
 | 
			
		||||
        }),
 | 
			
		||||
        highlightBorderStyle = Gladdy:option({
 | 
			
		||||
            type = "select",
 | 
			
		||||
            name = L["Border style"],
 | 
			
		||||
            order = 5,
 | 
			
		||||
            dialogControl = "LSM30_Border",
 | 
			
		||||
            values = AceGUIWidgetLSMlists.border,
 | 
			
		||||
        }),
 | 
			
		||||
        headerColor = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Colors"],
 | 
			
		||||
            order = 6,
 | 
			
		||||
        },
 | 
			
		||||
        targetBorderColor = Gladdy:colorOption({
 | 
			
		||||
            type = "color",
 | 
			
		||||
            name = L["Target border color"],
 | 
			
		||||
            desc = L["Color of the selected targets border"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            order = 7,
 | 
			
		||||
            hasAlpha = true,
 | 
			
		||||
        }),
 | 
			
		||||
        focusBorderColor = Gladdy:colorOption({
 | 
			
		||||
            type = "color",
 | 
			
		||||
            name = L["Focus border color"],
 | 
			
		||||
            desc = L["Color of the focus border"],
 | 
			
		||||
            order = 5,
 | 
			
		||||
            hasAlpha = true,
 | 
			
		||||
        }),
 | 
			
		||||
        leaderBorderColor = Gladdy:colorOption({
 | 
			
		||||
            type = "color",
 | 
			
		||||
            name = L["Raid leader border color"],
 | 
			
		||||
            desc = L["Color of the raid leader border"],
 | 
			
		||||
            order = 6,
 | 
			
		||||
            order = 8,
 | 
			
		||||
            hasAlpha = true,
 | 
			
		||||
        }),
 | 
			
		||||
        headerEnable = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Enable/Disable"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            order = 10,
 | 
			
		||||
        },
 | 
			
		||||
        highlight = Gladdy:option({
 | 
			
		||||
@@ -219,24 +251,21 @@ function Highlight:GetOptions()
 | 
			
		||||
            name = L["Highlight target"],
 | 
			
		||||
            desc = L["Toggle if the selected target should be highlighted"],
 | 
			
		||||
            order = 11,
 | 
			
		||||
            width = "full",
 | 
			
		||||
        }),
 | 
			
		||||
        targetBorder = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Show border around target"],
 | 
			
		||||
            desc = L["Toggle if a border should be shown around the selected target"],
 | 
			
		||||
            order = 12,
 | 
			
		||||
            width = "full",
 | 
			
		||||
        }),
 | 
			
		||||
        focusBorder = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Show border around focus"],
 | 
			
		||||
            desc = L["Toggle of a border should be shown around the current focus"],
 | 
			
		||||
            order = 13,
 | 
			
		||||
        }),
 | 
			
		||||
        leaderBorder = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Show border around raid leader"],
 | 
			
		||||
            desc = L["Toggle if a border should be shown around the raid leader"],
 | 
			
		||||
            order = 14,
 | 
			
		||||
            width = "full",
 | 
			
		||||
        }),
 | 
			
		||||
    }
 | 
			
		||||
end
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
local string_gsub, floor, pairs = string.gsub, math.floor, pairs
 | 
			
		||||
local CreateFrame = CreateFrame
 | 
			
		||||
local CreateFrame, SetPortraitTexture = CreateFrame, SetPortraitTexture
 | 
			
		||||
local UnitHealthMax, UnitHealth, UnitGUID = UnitHealthMax, UnitHealth, UnitGUID
 | 
			
		||||
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local Pets = Gladdy:NewModule("Pets", nil, {
 | 
			
		||||
    petEnabled = true,
 | 
			
		||||
    petWidth = 100,
 | 
			
		||||
    petWidth = 128,
 | 
			
		||||
    petHeight = 20,
 | 
			
		||||
    petPortraitEnabled = true,
 | 
			
		||||
    petPortraitBorderStyle = "Interface\\AddOns\\Gladdy\\Images\\Border_rounded_blp",
 | 
			
		||||
@@ -21,8 +21,8 @@ local Pets = Gladdy:NewModule("Pets", nil, {
 | 
			
		||||
    petHealthBarFontColor = { r = 1, g = 1, b = 1, a = 1 },
 | 
			
		||||
    petHealthBarFontSize = 12,
 | 
			
		||||
    petHealthPercentage = true,
 | 
			
		||||
    petXOffset = 50,
 | 
			
		||||
    petYOffset = 0,
 | 
			
		||||
    petXOffset = 1,
 | 
			
		||||
    petYOffset = -62,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
function Pets:Initialize()
 | 
			
		||||
@@ -124,6 +124,7 @@ function Pets:Test(unitId)
 | 
			
		||||
        petFrame.healthBar.hp:SetMinMaxValues(0, 6200)
 | 
			
		||||
        petFrame.healthBar.hp:SetValue(2000)
 | 
			
		||||
        Pets:SetHealthText(petFrame.healthBar, 2000, 6200)
 | 
			
		||||
        SetPortraitTexture(petFrame.healthBar.portrait, "player")
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -332,21 +333,21 @@ end
 | 
			
		||||
 | 
			
		||||
function Pets:GetOptions()
 | 
			
		||||
    return {
 | 
			
		||||
        headerHealthbar = {
 | 
			
		||||
        header = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Health Bar"],
 | 
			
		||||
            name = L["Pets"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        },
 | 
			
		||||
        petEnabled = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Enable"],
 | 
			
		||||
            desc = L["Enabled Pets module"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Enables Pets module"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
        }),
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
@@ -374,7 +375,7 @@ function Pets:GetOptions()
 | 
			
		||||
                            desc = L["Width of the bar"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            min = 10,
 | 
			
		||||
                            max = 100,
 | 
			
		||||
                            max = 300,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
                        }),
 | 
			
		||||
                        petHealthBarTexture = option({
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ local CreateFrame, UnitPower, UnitPowerType, UnitPowerMax, UnitExists = CreateFr
 | 
			
		||||
local Gladdy = LibStub("Gladdy")
 | 
			
		||||
local L = Gladdy.L
 | 
			
		||||
local AceGUIWidgetLSMlists = AceGUIWidgetLSMlists
 | 
			
		||||
local Powerbar = Gladdy:NewModule("Powerbar", 90, {
 | 
			
		||||
local Powerbar = Gladdy:NewModule("Power Bar", 90, {
 | 
			
		||||
    powerBarFont = "DorisPP",
 | 
			
		||||
    powerBarHeight = 20,
 | 
			
		||||
    powerBarTexture = "Smooth",
 | 
			
		||||
@@ -132,7 +132,7 @@ function Powerbar:UpdateFrame(unit)
 | 
			
		||||
        return
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    local healthBar = Gladdy.modules.Healthbar.frames[unit]
 | 
			
		||||
    local healthBar = Gladdy.modules["Health Bar"].frames[unit]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    powerBar.bg:SetTexture(Gladdy.LSM:Fetch("statusbar", Gladdy.db.powerBarTexture))
 | 
			
		||||
@@ -290,7 +290,7 @@ local function option(params)
 | 
			
		||||
        set = function(info, value)
 | 
			
		||||
            local key = info.arg or info[#info]
 | 
			
		||||
            Gladdy.dbi.profile[key] = value
 | 
			
		||||
            Gladdy.options.args.Powerbar.args.group.args.border.args.powerBarBorderSize.max = Gladdy.db.powerBarHeight/2
 | 
			
		||||
            Gladdy.options.args["Power Bar"].args.group.args.border.args.powerBarBorderSize.max = Gladdy.db.powerBarHeight/2
 | 
			
		||||
            if Gladdy.db.powerBarBorderSize > Gladdy.db.powerBarHeight/2 then
 | 
			
		||||
                Gladdy.db.powerBarBorderSize = Gladdy.db.powerBarHeight/2
 | 
			
		||||
            end
 | 
			
		||||
@@ -318,7 +318,7 @@ function Powerbar:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
 
 | 
			
		||||
@@ -134,7 +134,7 @@ function Racial:UpdateFrame(unit)
 | 
			
		||||
    racial.texture.overlay:SetVertexColor(Gladdy.db.racialBorderColor.r, Gladdy.db.racialBorderColor.g, Gladdy.db.racialBorderColor.b, Gladdy.db.racialBorderColor.a)
 | 
			
		||||
 | 
			
		||||
    racial:ClearAllPoints()
 | 
			
		||||
    local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
 | 
			
		||||
    local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    local parent = Gladdy.buttons[unit][Gladdy.db.racialAnchor]
 | 
			
		||||
    if (Gladdy.db.racialPos == "RIGHT") then
 | 
			
		||||
        racial:SetPoint(ANCHORS[Gladdy.db.racialPos], parent, Gladdy.db.racialPos, Gladdy.db.padding + Gladdy.db.racialXOffset, Gladdy.db.racialYOffset)
 | 
			
		||||
@@ -226,7 +226,7 @@ function Racial:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
@@ -237,7 +237,7 @@ function Racial:GetOptions()
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Size"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                        },
 | 
			
		||||
                        racialSize = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -245,7 +245,7 @@ function Racial:GetOptions()
 | 
			
		||||
                            min = 5,
 | 
			
		||||
                            max = 100,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            order = 2,
 | 
			
		||||
                        }),
 | 
			
		||||
                        racialWidthFactor = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -253,7 +253,7 @@ function Racial:GetOptions()
 | 
			
		||||
                            min = 0.5,
 | 
			
		||||
                            max = 2,
 | 
			
		||||
                            step = 0.05,
 | 
			
		||||
                            order = 6,
 | 
			
		||||
                            order = 3,
 | 
			
		||||
                        }),
 | 
			
		||||
                    },
 | 
			
		||||
                },
 | 
			
		||||
@@ -271,6 +271,7 @@ function Racial:GetOptions()
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["No Cooldown Circle"],
 | 
			
		||||
                            order = 7,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        racialCooldownAlpha = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -318,7 +319,7 @@ function Racial:GetOptions()
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Position"],
 | 
			
		||||
                            name = L["Icon position"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                        },
 | 
			
		||||
                        racialAnchor = Gladdy:option({
 | 
			
		||||
@@ -335,7 +336,7 @@ function Racial:GetOptions()
 | 
			
		||||
                        }),
 | 
			
		||||
                        racialPos = Gladdy:option({
 | 
			
		||||
                            type = "select",
 | 
			
		||||
                            name = L["Position"],
 | 
			
		||||
                            name = L["Icon position"],
 | 
			
		||||
                            desc = L["This changes position relative to its anchor of the racial icon"],
 | 
			
		||||
                            order = 21,
 | 
			
		||||
                            values = {
 | 
			
		||||
 
 | 
			
		||||
@@ -77,6 +77,13 @@ local localizedTotemData = {
 | 
			
		||||
        [string_lower(select(1, GetSpellInfo(3738)))] = totemData[string_lower("Wrath of Air Totem")], -- Wrath of Air Totem
 | 
			
		||||
        [string_lower(select(1, GetSpellInfo(25908)))] = totemData[string_lower("Tranquil Air Totem")], -- Tranquil Air Totem
 | 
			
		||||
    },
 | 
			
		||||
    ["frFR"] = {
 | 
			
		||||
        [string_lower("Totem d'\195\169lementaire de terre")] = totemData[string_lower("Earth Elemental Totem")], -- Earth Elemental Totem
 | 
			
		||||
        [string_lower("Totem d'\195\169lementaire de feu")] = totemData[string_lower("Fire Elemental Totem")], -- Fire Elemental Totem
 | 
			
		||||
    },
 | 
			
		||||
    ["ruRU"] = {
 | 
			
		||||
        [string_lower("")] = totemData[string_lower("Sentry Totem")], -- Sentry Totem
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
local function GetTotemColorDefaultOptions()
 | 
			
		||||
@@ -90,7 +97,7 @@ local function GetTotemColorDefaultOptions()
 | 
			
		||||
        return a.name < b.name
 | 
			
		||||
    end)
 | 
			
		||||
    for i=1,#indexedList do
 | 
			
		||||
        defaultDB["totem" .. indexedList[i].id] = {color = indexedList[i].color, enabled = indexedList[i].enabled, alpha = 0.6}
 | 
			
		||||
        defaultDB["totem" .. indexedList[i].id] = {color = indexedList[i].color, enabled = indexedList[i].enabled, alpha = 0.6, customText = ""}
 | 
			
		||||
        options["totem" .. indexedList[i].id] = {
 | 
			
		||||
            order = i+1,
 | 
			
		||||
            name = select(1, GetSpellInfo(indexedList[i].id)),
 | 
			
		||||
@@ -106,7 +113,7 @@ local function GetTotemColorDefaultOptions()
 | 
			
		||||
                },
 | 
			
		||||
                enabled = {
 | 
			
		||||
                    order = 2,
 | 
			
		||||
                    name = "Enabled",
 | 
			
		||||
                    name = L["Enabled"],
 | 
			
		||||
                    desc = "Enable " .. format("|T%s:20|t %s", indexedList[i].texture, select(1, GetSpellInfo(indexedList[i].id))),
 | 
			
		||||
                    type = "toggle",
 | 
			
		||||
                    width = "full",
 | 
			
		||||
@@ -156,12 +163,12 @@ local function GetTotemColorDefaultOptions()
 | 
			
		||||
                    end
 | 
			
		||||
                },
 | 
			
		||||
                customText = {
 | 
			
		||||
                  type = "input",
 | 
			
		||||
                  name = L["Custom totem name"],
 | 
			
		||||
                  order = 5,
 | 
			
		||||
                  width = "full",
 | 
			
		||||
                  get = function(info) return Gladdy.dbi.profile.npTotemColors["totem" .. indexedList[i].id].customText end,
 | 
			
		||||
                  set = function(info, value) Gladdy.dbi.profile.npTotemColors["totem" .. indexedList[i].id].customText = value Gladdy:UpdateFrame() end
 | 
			
		||||
                    type = "input",
 | 
			
		||||
                    name = L["Custom totem name"],
 | 
			
		||||
                    order = 5,
 | 
			
		||||
                    width = "full",
 | 
			
		||||
                    get = function(info) return Gladdy.db.npTotemColors["totem" .. indexedList[i].id].customText end,
 | 
			
		||||
                    set = function(info, value) Gladdy.db.npTotemColors["totem" .. indexedList[i].id].customText = value Gladdy:UpdateFrame() end
 | 
			
		||||
                },
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@@ -188,7 +195,7 @@ end
 | 
			
		||||
 | 
			
		||||
---------------------------------------------------
 | 
			
		||||
 | 
			
		||||
local TotemPlates = Gladdy:NewModule("TotemPlates", nil, {
 | 
			
		||||
local TotemPlates = Gladdy:NewModule("Totem Plates", nil, {
 | 
			
		||||
    npTotems = true,
 | 
			
		||||
    npTotemsShowFriendly = true,
 | 
			
		||||
    npTotemsShowEnemy = true,
 | 
			
		||||
@@ -221,6 +228,20 @@ function TotemPlates:Initialize()
 | 
			
		||||
    self:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
 | 
			
		||||
    self:RegisterEvent("PLAYER_TARGET_CHANGED")
 | 
			
		||||
    self:SetScript("OnEvent", TotemPlates.OnEvent)
 | 
			
		||||
    if Gladdy.db.npTotems and Gladdy.db.npTotemsShowEnemy then
 | 
			
		||||
        --GetCVar("nameplateShowEnemyTotems")
 | 
			
		||||
        --SetCVar("nameplateShowEnemyTotems", true);
 | 
			
		||||
    end
 | 
			
		||||
    if Gladdy.db.npTotems and Gladdy.db.npTotemsShowFriendly then
 | 
			
		||||
        --GetCVar("nameplateShowFriendlyTotems")
 | 
			
		||||
        --SetCVar("nameplateShowFriendlyTotems", true);
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    --NeatPlates
 | 
			
		||||
    --ELVUI
 | 
			
		||||
    --Plater
 | 
			
		||||
    --KUI
 | 
			
		||||
    --threatplates
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function TotemPlates:PLAYER_ENTERING_WORLD()
 | 
			
		||||
@@ -286,7 +307,7 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
 | 
			
		||||
    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]
 | 
			
		||||
    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
 | 
			
		||||
@@ -325,15 +346,14 @@ function TotemPlates:NAME_PLATE_UNIT_ADDED(...)
 | 
			
		||||
        TotemPlates:SetTotemAlpha(nameplate.gladdyTotemFrame, unitID)
 | 
			
		||||
 | 
			
		||||
        nameplate.UnitFrame:SetAlpha(0)
 | 
			
		||||
        nameplate.UnitFrame.point = select(2, nameplate.UnitFrame.selectionHighlight:GetPoint())
 | 
			
		||||
        nameplate.UnitFrame.selectionHighlight:ClearAllPoints()
 | 
			
		||||
        nameplate.UnitFrame.selectionHighlight:SetPoint("TOPLEFT", nameplate.gladdyTotemFrame, "TOPLEFT", Gladdy.db.npTotemPlatesSize/16, -Gladdy.db.npTotemPlatesSize/16)
 | 
			
		||||
        nameplate.UnitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", nameplate.gladdyTotemFrame, "BOTTOMRIGHT", -Gladdy.db.npTotemPlatesSize/16, Gladdy.db.npTotemPlatesSize/16)
 | 
			
		||||
        nameplate.UnitFrame:SetScript("OnHide", function(unitFrame)
 | 
			
		||||
            unitFrame:SetAlpha(1)
 | 
			
		||||
            unitFrame.selectionHighlight:ClearAllPoints()
 | 
			
		||||
            unitFrame.selectionHighlight:SetPoint("TOPLEFT", unitFrame.point, "TOPLEFT")
 | 
			
		||||
            unitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", unitFrame.point, "BOTTOMRIGHT")
 | 
			
		||||
            unitFrame.selectionHighlight:SetPoint("TOPLEFT", unitFrame.healthBar.barTexture, "TOPLEFT")
 | 
			
		||||
            unitFrame.selectionHighlight:SetPoint("BOTTOMRIGHT", unitFrame.healthBar.barTexture, "BOTTOMRIGHT")
 | 
			
		||||
            unitFrame:SetScript("OnHide", nil)
 | 
			
		||||
        end)
 | 
			
		||||
        self.activeTotemNameplates[unitID] = nameplate
 | 
			
		||||
@@ -384,12 +404,12 @@ function TotemPlates:GetOptions()
 | 
			
		||||
    return {
 | 
			
		||||
        headerTotems = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Totem General"],
 | 
			
		||||
            name = L["Totem Plates"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        },
 | 
			
		||||
        npTotems = Gladdy:option({
 | 
			
		||||
            type = "toggle",
 | 
			
		||||
            name = L["Totem icons on/off"],
 | 
			
		||||
            name = L["Enabled"],
 | 
			
		||||
            desc = L["Turns totem icons instead of nameplates on or off. (Requires reload)"],
 | 
			
		||||
            order = 3,
 | 
			
		||||
            width = 0.9,
 | 
			
		||||
@@ -411,7 +431,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                icon = {
 | 
			
		||||
@@ -432,6 +452,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = 20,
 | 
			
		||||
                            max = 100,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        npTotemPlatesWidthFactor = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -441,6 +462,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = 0.5,
 | 
			
		||||
                            max = 2,
 | 
			
		||||
                            step = 0.05,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                    },
 | 
			
		||||
                },
 | 
			
		||||
@@ -451,7 +473,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Icon"],
 | 
			
		||||
                            name = L["Font"],
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                        },
 | 
			
		||||
                        npTremorFont = Gladdy:option({
 | 
			
		||||
@@ -470,6 +492,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = 1,
 | 
			
		||||
                            max = 50,
 | 
			
		||||
                            step = 0.1,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        npTremorFontXOffset = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -479,6 +502,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = -300,
 | 
			
		||||
                            max = 300,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        npTremorFontYOffset = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -488,6 +512,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = -300,
 | 
			
		||||
                            max = 300,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                    },
 | 
			
		||||
                },
 | 
			
		||||
@@ -521,7 +546,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
                            min = 0,
 | 
			
		||||
                            max = 1,
 | 
			
		||||
                            step = 0.1,
 | 
			
		||||
                            width = "double",
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                            order = 23,
 | 
			
		||||
                            get = function(info)
 | 
			
		||||
                                local alphas = GetTotemOptions()
 | 
			
		||||
@@ -590,7 +615,7 @@ function TotemPlates:GetOptions()
 | 
			
		||||
        },
 | 
			
		||||
        npTotemColors = {
 | 
			
		||||
            order = 50,
 | 
			
		||||
            name = "Customize Totems",
 | 
			
		||||
            name = L["Customize Totems"],
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            args = select(2, Gladdy:GetTotemColors())
 | 
			
		||||
 
 | 
			
		||||
@@ -130,7 +130,7 @@ function Trinket:UpdateFrame(unit)
 | 
			
		||||
    trinket.texture.overlay:SetVertexColor(Gladdy.db.trinketBorderColor.r, Gladdy.db.trinketBorderColor.g, Gladdy.db.trinketBorderColor.b, Gladdy.db.trinketBorderColor.a)
 | 
			
		||||
 | 
			
		||||
    trinket:ClearAllPoints()
 | 
			
		||||
    local margin = Gladdy.db.highlightBorderSize + Gladdy.db.padding
 | 
			
		||||
    local margin = (Gladdy.db.highlightInset and 0 or Gladdy.db.highlightBorderSize) + Gladdy.db.padding
 | 
			
		||||
    if (Gladdy.db.classIconPos == "LEFT") then
 | 
			
		||||
        if (Gladdy.db.trinketPos == "RIGHT") then
 | 
			
		||||
            trinket:SetPoint("TOPLEFT", Gladdy.buttons[unit].healthBar, "TOPRIGHT", margin, 0)
 | 
			
		||||
@@ -229,7 +229,7 @@ function Trinket:GetOptions()
 | 
			
		||||
        group = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            childGroups = "tree",
 | 
			
		||||
            name = "Frame",
 | 
			
		||||
            name = L["Frame"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            args = {
 | 
			
		||||
                general = {
 | 
			
		||||
@@ -240,11 +240,11 @@ function Trinket:GetOptions()
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Size"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                            order = 1,
 | 
			
		||||
                        },
 | 
			
		||||
                        trinketSize = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
                            name = L["Trinket size"],
 | 
			
		||||
                            name = L["Size"],
 | 
			
		||||
                            min = 5,
 | 
			
		||||
                            max = 100,
 | 
			
		||||
                            step = 1,
 | 
			
		||||
@@ -274,6 +274,7 @@ function Trinket:GetOptions()
 | 
			
		||||
                            type = "toggle",
 | 
			
		||||
                            name = L["No Cooldown Circle"],
 | 
			
		||||
                            order = 7,
 | 
			
		||||
                            width = "full",
 | 
			
		||||
                        }),
 | 
			
		||||
                        trinketCooldownAlpha = Gladdy:option({
 | 
			
		||||
                            type = "range",
 | 
			
		||||
@@ -321,12 +322,12 @@ function Trinket:GetOptions()
 | 
			
		||||
                    args = {
 | 
			
		||||
                        header = {
 | 
			
		||||
                            type = "header",
 | 
			
		||||
                            name = L["Position"],
 | 
			
		||||
                            name = L["Icon position"],
 | 
			
		||||
                            order = 4,
 | 
			
		||||
                        },
 | 
			
		||||
                        trinketPos = Gladdy:option({
 | 
			
		||||
                            type = "select",
 | 
			
		||||
                            name = L["Trinket position"],
 | 
			
		||||
                            name = L["Icon position"],
 | 
			
		||||
                            desc = L["This changes positions of the trinket"],
 | 
			
		||||
                            order = 21,
 | 
			
		||||
                            values = {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,9 @@ local XiconProfiles = Gladdy:NewModule("XiconProfiles", nil, {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
function XiconProfiles:ApplyKlimp()
 | 
			
		||||
    local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetKlimpProfile())
 | 
			
		||||
    local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetKlimpProfile())
 | 
			
		||||
    if deserialized then
 | 
			
		||||
        Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
        Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
    end
 | 
			
		||||
    Gladdy:Reset()
 | 
			
		||||
    Gladdy:HideFrame()
 | 
			
		||||
@@ -15,9 +15,9 @@ function XiconProfiles:ApplyKlimp()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function XiconProfiles:ApplyKnall()
 | 
			
		||||
    local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetKnallProfile())
 | 
			
		||||
    local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetKnallProfile())
 | 
			
		||||
    if deserialized then
 | 
			
		||||
        Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
        Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
    end
 | 
			
		||||
    Gladdy:Reset()
 | 
			
		||||
    Gladdy:HideFrame()
 | 
			
		||||
@@ -25,9 +25,19 @@ function XiconProfiles:ApplyKnall()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function XiconProfiles:ApplyClassic()
 | 
			
		||||
    local deserialized = Gladdy.modules["ExportImport"]:Decode(Gladdy:GetClassicProfile())
 | 
			
		||||
    local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetClassicProfile())
 | 
			
		||||
    if deserialized then
 | 
			
		||||
        Gladdy.modules["ExportImport"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
        Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
    end
 | 
			
		||||
    Gladdy:Reset()
 | 
			
		||||
    Gladdy:HideFrame()
 | 
			
		||||
    Gladdy:ToggleFrame(3)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function XiconProfiles:ApplyBlizz()
 | 
			
		||||
    local deserialized = Gladdy.modules["Export Import"]:Decode(Gladdy:GetBlizzardProfile())
 | 
			
		||||
    if deserialized then
 | 
			
		||||
        Gladdy.modules["Export Import"]:ApplyImport(deserialized, Gladdy.db)
 | 
			
		||||
    end
 | 
			
		||||
    Gladdy:Reset()
 | 
			
		||||
    Gladdy:HideFrame()
 | 
			
		||||
@@ -36,10 +46,29 @@ end
 | 
			
		||||
 | 
			
		||||
function XiconProfiles:GetOptions()
 | 
			
		||||
    return {
 | 
			
		||||
        headerProfileBlizzard = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = "Blizzard " .. L["Profile"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
        },
 | 
			
		||||
        blizzardProfile = {
 | 
			
		||||
            type = "execute",
 | 
			
		||||
            func = function()
 | 
			
		||||
                Gladdy.dbi:ResetProfile(Gladdy.dbi:GetCurrentProfile())
 | 
			
		||||
                XiconProfiles:ApplyBlizz()
 | 
			
		||||
            end,
 | 
			
		||||
            name = " ",
 | 
			
		||||
            desc = "Blizzard " .. L["Profile"],
 | 
			
		||||
            image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Blizz1.blp",
 | 
			
		||||
            imageWidth = 350,
 | 
			
		||||
            imageHeight = 175,
 | 
			
		||||
            width = "full",
 | 
			
		||||
            order = 3,
 | 
			
		||||
        },
 | 
			
		||||
        headerProfileClassic = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Classic Profile"],
 | 
			
		||||
            order = 2,
 | 
			
		||||
            name = "Classic " .. L["Profile"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
        },
 | 
			
		||||
        classicProfile = {
 | 
			
		||||
            type = "execute",
 | 
			
		||||
@@ -48,17 +77,17 @@ function XiconProfiles:GetOptions()
 | 
			
		||||
                XiconProfiles:ApplyClassic()
 | 
			
		||||
            end,
 | 
			
		||||
            name = " ",
 | 
			
		||||
            desc = "Classic Profile",
 | 
			
		||||
            desc = "Classic " .. L["Profile"],
 | 
			
		||||
            image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Classic1.blp",
 | 
			
		||||
            imageWidth = 350,
 | 
			
		||||
            imageHeight = 175,
 | 
			
		||||
            width = "full",
 | 
			
		||||
            order = 3,
 | 
			
		||||
            order = 5,
 | 
			
		||||
        },
 | 
			
		||||
        headerProfileKnall = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Knall's Profile"],
 | 
			
		||||
            order = 4,
 | 
			
		||||
            name = "Knall's " .. L["Profile"],
 | 
			
		||||
            order = 6,
 | 
			
		||||
        },
 | 
			
		||||
        knallProfile = {
 | 
			
		||||
            type = "execute",
 | 
			
		||||
@@ -67,17 +96,17 @@ function XiconProfiles:GetOptions()
 | 
			
		||||
                XiconProfiles:ApplyKnall()
 | 
			
		||||
            end,
 | 
			
		||||
            name = " ",
 | 
			
		||||
            desc = "Knall's Profile",
 | 
			
		||||
            desc = "Knall's " .. L["Profile"],
 | 
			
		||||
            image = "Interface\\AddOns\\Gladdy\\Images\\BasicProfiles\\Knall1.blp",
 | 
			
		||||
            imageWidth = 350,
 | 
			
		||||
            imageHeight = 175,
 | 
			
		||||
            width = "full",
 | 
			
		||||
            order = 5,
 | 
			
		||||
            order = 7,
 | 
			
		||||
        },
 | 
			
		||||
        headerProfileKlimp = {
 | 
			
		||||
            type = "header",
 | 
			
		||||
            name = L["Klimp's Profile"],
 | 
			
		||||
            order = 6,
 | 
			
		||||
            name = "Klimp's " .. L["Profile"],
 | 
			
		||||
            order = 8,
 | 
			
		||||
        },
 | 
			
		||||
        klimpProfiles = {
 | 
			
		||||
            type = "execute",
 | 
			
		||||
@@ -89,9 +118,10 @@ function XiconProfiles:GetOptions()
 | 
			
		||||
            imageWidth = 350,
 | 
			
		||||
            imageHeight = 175,
 | 
			
		||||
            name = " ",
 | 
			
		||||
            desc = "Klimp's Profile",
 | 
			
		||||
            desc = "Klimp's " .. L["Profile"],
 | 
			
		||||
            width = "full",
 | 
			
		||||
            order = 7,
 | 
			
		||||
            order = 9,
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										35
									
								
								Options.lua
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								Options.lua
									
									
									
									
									
								
							@@ -16,10 +16,11 @@ Gladdy.defaults = {
 | 
			
		||||
        x = 0,
 | 
			
		||||
        y = 0,
 | 
			
		||||
        growUp = false,
 | 
			
		||||
        growDirection = "BOTTOM",
 | 
			
		||||
        frameScale = 1,
 | 
			
		||||
        padding = 3,
 | 
			
		||||
        padding = 1,
 | 
			
		||||
        barWidth = 180,
 | 
			
		||||
        bottomMargin = 10,
 | 
			
		||||
        bottomMargin = 2,
 | 
			
		||||
        statusbarBorderOffset = 6,
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
@@ -113,7 +114,7 @@ function Gladdy:SetupModule(name, module, order)
 | 
			
		||||
        self.options.args[name] = {
 | 
			
		||||
            type = "group",
 | 
			
		||||
            name = L[name],
 | 
			
		||||
            desc = L[name .. " settings"],
 | 
			
		||||
            desc = L[name] .. " " .. L["settings"],
 | 
			
		||||
            childGroups = "tab",
 | 
			
		||||
            order = order,
 | 
			
		||||
            args = {},
 | 
			
		||||
@@ -151,7 +152,7 @@ local function pairsByKeys(t)
 | 
			
		||||
    for k in pairs(t) do
 | 
			
		||||
        tinsert(a, k)
 | 
			
		||||
    end
 | 
			
		||||
    tsort(a)
 | 
			
		||||
    tsort(a, function(a, b) return L[a] < L[b] end)
 | 
			
		||||
 | 
			
		||||
    local i = 0
 | 
			
		||||
    return function()
 | 
			
		||||
@@ -193,10 +194,21 @@ function Gladdy:SetupOptions()
 | 
			
		||||
                        desc = L["If enabled the frame will grow upwards instead of downwards"],
 | 
			
		||||
                        order = 2,
 | 
			
		||||
                    },
 | 
			
		||||
                    growDirection = {
 | 
			
		||||
                        type = "select",
 | 
			
		||||
                        name = L["Grow Direction"],
 | 
			
		||||
                        order = 3,
 | 
			
		||||
                        values = {
 | 
			
		||||
                            ["BOTTOM"] = L["Down"],
 | 
			
		||||
                            ["TOP"] = L["Up"],
 | 
			
		||||
                            ["LEFT"] = L["Left"],
 | 
			
		||||
                            ["RIGHT"] = L["Right"],
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    group = {
 | 
			
		||||
                        type = "group",
 | 
			
		||||
                        name = "General",
 | 
			
		||||
                        order = 3,
 | 
			
		||||
                        name = L["General"],
 | 
			
		||||
                        order = 4,
 | 
			
		||||
                        childGroups = "tree",
 | 
			
		||||
                        args = {
 | 
			
		||||
                            frameGeneral = {
 | 
			
		||||
@@ -238,11 +250,11 @@ function Gladdy:SetupOptions()
 | 
			
		||||
                                    },
 | 
			
		||||
                                    bottomMargin = {
 | 
			
		||||
                                        type = "range",
 | 
			
		||||
                                        name = L["Bottom margin"],
 | 
			
		||||
                                        name = L["Margin"],
 | 
			
		||||
                                        desc = L["Margin between each button"],
 | 
			
		||||
                                        order = 7,
 | 
			
		||||
                                        min = -100,
 | 
			
		||||
                                        max = 100,
 | 
			
		||||
                                        min = -200,
 | 
			
		||||
                                        max = 200,
 | 
			
		||||
                                        step = 1,
 | 
			
		||||
                                    },
 | 
			
		||||
                                }
 | 
			
		||||
@@ -490,6 +502,7 @@ function Gladdy:SetupOptions()
 | 
			
		||||
                                            local g = Gladdy.db.cooldownBorderColor
 | 
			
		||||
                                            local h = Gladdy.db.drBorderColor
 | 
			
		||||
                                            local i = Gladdy.db.trinketBorderColor
 | 
			
		||||
                                            local j = Gladdy.db.racialBorderColor
 | 
			
		||||
                                            if (a.r == b.r and a.g == b.g and a.b == b.b and a.a == b.a
 | 
			
		||||
                                                    and a.r == c.r and a.g == c.g and a.b == c.b and a.a == c.a
 | 
			
		||||
                                                    and a.r == d.r and a.g == d.g and a.b == d.b and a.a == d.a
 | 
			
		||||
@@ -497,7 +510,8 @@ function Gladdy:SetupOptions()
 | 
			
		||||
                                                    and a.r == f.r and a.g == f.g and a.b == f.b and a.a == f.a
 | 
			
		||||
                                                    and a.r == g.r and a.g == g.g and a.b == g.b and a.a == g.a
 | 
			
		||||
                                                    and a.r == h.r and a.g == h.g and a.b == h.b and a.a == h.a
 | 
			
		||||
                                                    and a.r == i.r and a.g == i.g and a.b == i.b and a.a == i.a) then
 | 
			
		||||
                                                    and a.r == i.r and a.g == i.g and a.b == i.b and a.a == i.a
 | 
			
		||||
                                                    and a.r == j.r and a.g == j.g and a.b == j.b and a.a == j.a) then
 | 
			
		||||
                                                return a.r, a.g, a.b, a.a
 | 
			
		||||
                                            else
 | 
			
		||||
                                                return { r = 0, g = 0, b = 0, a = 0 }
 | 
			
		||||
@@ -514,6 +528,7 @@ function Gladdy:SetupOptions()
 | 
			
		||||
                                            Gladdy.db.cooldownBorderColor = rgb
 | 
			
		||||
                                            Gladdy.db.drBorderColor = rgb
 | 
			
		||||
                                            Gladdy.db.trinketBorderColor = rgb
 | 
			
		||||
                                            Gladdy.db.racialBorderColor = rgb
 | 
			
		||||
                                            Gladdy:UpdateFrame()
 | 
			
		||||
                                        end,
 | 
			
		||||
                                    },
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								README.md
									
									
									
									
									
								
							@@ -1,7 +1,7 @@
 | 
			
		||||
# Gladdy - TBC
 | 
			
		||||
 | 
			
		||||
### The most powerful arena addon for WoW TBC 2.5.1
 | 
			
		||||
## [v1.07-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.07-Beta/Gladdy_TBC-Classic_v1.07-Beta.zip)
 | 
			
		||||
## [v1.12-Beta Download Here](https://github.com/XiconQoo/Gladdy-TBC/releases/download/v1.12-Beta/Gladdy_TBC-Classic_v1.12-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
 | 
			
		||||
 | 
			
		||||
@@ -39,6 +39,28 @@ The goal is to make Gladdy highly configurable in it's appearance. Everything ca
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
### v1.12-Beta
 | 
			
		||||
- fix classic profile
 | 
			
		||||
 | 
			
		||||
### v1.11-Beta
 | 
			
		||||
- TotemPlates fix after blizzard update
 | 
			
		||||
 | 
			
		||||
### v1.10-Beta
 | 
			
		||||
- fix german and russian client not working
 | 
			
		||||
- ArenaCountdown loacalization now working for all languages (except itIT...beta has no option to select italian)
 | 
			
		||||
- Race and Class localization working for all languages
 | 
			
		||||
- Localization finished for German
 | 
			
		||||
 | 
			
		||||
#### v1.09-Beta
 | 
			
		||||
- fix Blizzard profile not having all modules preconfigured
 | 
			
		||||
 | 
			
		||||
#### v1.08-Beta
 | 
			
		||||
- fix Buffs not showing on class icon
 | 
			
		||||
- added option highlight to be inside
 | 
			
		||||
- added option to grow frames vertically
 | 
			
		||||
- added new profile to XiconProfile (Blizzard raid style)
 | 
			
		||||
- minor bugfixes
 | 
			
		||||
 | 
			
		||||
#### v1.07-Beta
 | 
			
		||||
 | 
			
		||||
- CombatIndicator module added
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user