diff --git a/README.md b/README.md index 06fcd5a..2e6f92c 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,10 @@ Extends the Blizzard unitframes for better visuals, with a minimal footprint ## Changes -Starting integration with WoW Classic and WoW Retail 8.1 patch. -For now, make sure to load "out-of-date" addons and it should work on both. +- The mainline is now only supporting Retail WoW 10.0 with modern UI + +## Open Issues +- Support removed for Classic and WotLK, for now please use old versions on CurseForge ## Distribution Packaged and distributed via CurseForge. diff --git a/UnitFramesImproved/Textures/UI-FocusTargetingFrame.blp b/UnitFramesImproved/Textures/UI-FocusTargetingFrame.blp deleted file mode 100644 index e1055ae..0000000 Binary files a/UnitFramesImproved/Textures/UI-FocusTargetingFrame.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-Player-Status.blp b/UnitFramesImproved/Textures/UI-Player-Status.blp deleted file mode 100644 index 838788e..0000000 Binary files a/UnitFramesImproved/Textures/UI-Player-Status.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-TargetingFrame-Elite.blp b/UnitFramesImproved/Textures/UI-TargetingFrame-Elite.blp deleted file mode 100644 index 5124367..0000000 Binary files a/UnitFramesImproved/Textures/UI-TargetingFrame-Elite.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-TargetingFrame-Rare-Elite.blp b/UnitFramesImproved/Textures/UI-TargetingFrame-Rare-Elite.blp deleted file mode 100644 index a11d52a..0000000 Binary files a/UnitFramesImproved/Textures/UI-TargetingFrame-Rare-Elite.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-TargetingFrame-Rare.blp b/UnitFramesImproved/Textures/UI-TargetingFrame-Rare.blp deleted file mode 100644 index c742a17..0000000 Binary files a/UnitFramesImproved/Textures/UI-TargetingFrame-Rare.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-TargetingFrame.blp b/UnitFramesImproved/Textures/UI-TargetingFrame.blp deleted file mode 100644 index 433a02e..0000000 Binary files a/UnitFramesImproved/Textures/UI-TargetingFrame.blp and /dev/null differ diff --git a/UnitFramesImproved/Textures/UI-UnitFrame-Boss.blp b/UnitFramesImproved/Textures/UI-UnitFrame-Boss.blp deleted file mode 100644 index fc22fd8..0000000 Binary files a/UnitFramesImproved/Textures/UI-UnitFrame-Boss.blp and /dev/null differ diff --git a/UnitFramesImproved/UnitFramesImproved.lua b/UnitFramesImproved/UnitFramesImproved.lua index 86fa9f2..52a8eb2 100644 --- a/UnitFramesImproved/UnitFramesImproved.lua +++ b/UnitFramesImproved/UnitFramesImproved.lua @@ -1,119 +1,46 @@ --- Credits to stassart on curse.com for suggesting to use InCombatLockdown() checks in the code - --- Debug function. Adds message to the chatbox (only visible to the loacl player) -function dout(msg) - DEFAULT_CHAT_FRAME:AddMessage(msg); -end - --- Additional debug info can be found on http://www.wowwiki.com/Blizzard_DebugTools --- /framestack [showhidden] --- showhidden - if "true" then will also display information about hidden frames --- /eventtrace [command] --- start - enables event capturing to the EventTrace frame --- stop - disables event capturing --- number - captures the provided number of events and then stops --- If no command is given the EventTrace frame visibility is toggled. The first time the frame is displayed, event tracing is automatically started. --- /dump expression --- expression can be any valid lua expression that results in a value. So variable names, function calls, frames or tables can all be dumped. - -function tokenize(str) - local tbl = {}; - for v in string.gmatch(str, "[^ ]+") do - tinsert(tbl, v); - end - return tbl; -end - -- Create the addon main instance local UnitFramesImproved = CreateFrame('Button', 'UnitFramesImproved'); -- Event listener to make sure we enable the addon at the right time function UnitFramesImproved:PLAYER_ENTERING_WORLD() - -- Set some default settings - if (characterSettings == nil) then - UnitFramesImproved_LoadDefaultSettings(); - end - + DebugPrintf("Initializing") EnableUnitFramesImproved(); -end - --- Event listener to make sure we've loaded our settings and thta we apply them -function UnitFramesImproved:VARIABLES_LOADED() - dout("UnitFramesImproved settings loaded!"); - - -- Set some default settings - if (characterSettings == nil) then - UnitFramesImproved_LoadDefaultSettings(); - end - - if (not (characterSettings["PlayerFrameAnchor"] == nil)) then - StaticPopup_Show("LAYOUT_RESETDEFAULT"); - characterSettings["PlayerFrameX"] = nil; - characterSettings["PlayerFrameY"] = nil; - characterSettings["PlayerFrameMoved"] = nil; - characterSettings["PlayerFrameAnchor"] = nil; - end - - UnitFramesImproved_ApplySettings(characterSettings); -end - -function UnitFramesImproved_ApplySettings(settings) - UnitFramesImproved_SetFrameScale(settings["FrameScale"]) -end - -function UnitFramesImproved_LoadDefaultSettings() - characterSettings = {} - characterSettings["FrameScale"] = "1.0"; - - if not TargetFrame:IsUserPlaced() then - TargetFrame:SetPoint("TOPLEFT", PlayerFrame, "TOPRIGHT", 36, 0); - end + DebugPrintf("Initialized") end function EnableUnitFramesImproved() -- Generic status text hook hooksecurefunc("TextStatusBar_UpdateTextStringWithValues", UnitFramesImproved_TextStatusBar_UpdateTextStringWithValues); - -- Hook PlayerFrame functions - hooksecurefunc("PlayerFrame_ToPlayerArt", UnitFramesImproved_PlayerFrame_ToPlayerArt); - hooksecurefunc("PlayerFrame_ToVehicleArt", UnitFramesImproved_PlayerFrame_ToVehicleArt); - -- Hook TargetFrame functions - hooksecurefunc("TargetFrame_CheckDead", UnitFramesImproved_TargetFrame_Update); - hooksecurefunc("TargetFrame_Update", UnitFramesImproved_TargetFrame_Update); - hooksecurefunc("TargetFrame_CheckFaction", UnitFramesImproved_TargetFrame_CheckFaction); - hooksecurefunc("TargetFrame_CheckClassification", UnitFramesImproved_TargetFrame_CheckClassification); - hooksecurefunc("TargetofTarget_Update", UnitFramesImproved_TargetFrame_Update); - - -- BossFrame hooks - hooksecurefunc("BossTargetFrame_OnLoad", UnitFramesImproved_BossTargetFrame_Style); + hooksecurefunc(TargetFrame, "CheckDead", UnitFramesImproved_TargetFrame_Update); + hooksecurefunc(TargetFrame, "Update", UnitFramesImproved_TargetFrame_Update); + hooksecurefunc(TargetFrame, "CheckClassification", UnitFramesImproved_TargetFrame_CheckClassification); + + -- Hook FocusFrame functions + if (FocusFrame) then -- Support WoW Classic by checking for FocusFrame + hooksecurefunc(FocusFrame, "Update", UnitFramesImproved_TargetFrame_Update); + hooksecurefunc(FocusFrame, "CheckClassification", UnitFramesImproved_TargetFrame_CheckClassification); + end + + -- Hook TargetFrameToT functions + hooksecurefunc(TargetFrameToT, "Update", UnitFramesImproved_TargetFrame_Update); + + -- Hook FocusFrameToT functions + hooksecurefunc(FocusFrameToT, "Update", UnitFramesImproved_TargetFrame_Update); -- Set up some stylings UnitFramesImproved_Style_PlayerFrame(); - UnitFramesImproved_BossTargetFrame_Style(Boss1TargetFrame); - UnitFramesImproved_BossTargetFrame_Style(Boss2TargetFrame); - UnitFramesImproved_BossTargetFrame_Style(Boss3TargetFrame); - UnitFramesImproved_BossTargetFrame_Style(Boss4TargetFrame); UnitFramesImproved_Style_TargetFrame(TargetFrame); + UnitFramesImproved_Style_ToT(TargetFrameToT); if (FocusFrame) then -- Support WoW Classic by checking for FocusFrame UnitFramesImproved_Style_TargetFrame(FocusFrame); + UnitFramesImproved_Style_ToT(FocusFrameToT); end - UnitFramesImproved_Style_TargetOfTargetFrame(); -- Update some values TextStatusBar_UpdateTextString(PlayerFrame.healthbar); TextStatusBar_UpdateTextString(PlayerFrame.manabar); - - -- Add TargetFrame status text for classic - if (not FocusFrame) then - TargetFrameHealthBar.TextString = CreateStatusBarText("Text", "TargetFrameHealthBar", TargetFrameTextureFrame, "CENTER", -50, 3) - TargetFrameHealthBar.LeftText = CreateStatusBarText("TextLeft", "TargetFrameHealthBar", TargetFrameTextureFrame, "LEFT", 8, 3) - TargetFrameHealthBar.RightText = CreateStatusBarText("TextRight", "TargetFrameHealthBar", TargetFrameTextureFrame, "RIGHT", -110, 3) - - TargetFrameManaBar.TextString = CreateStatusBarText("Text", "TargetFrameManaBar", TargetFrameTextureFrame, "CENTER", -50, -8) - TargetFrameManaBar.LeftText = CreateStatusBarText("TextLeft", "TargetFrameManaBar", TargetFrameTextureFrame, "LEFT", 8, -8) - TargetFrameManaBar.RightText = CreateStatusBarText("TextRight", "TargetFrameManaBar", TargetFrameTextureFrame, "RIGHT", -110, -8) - end end function CreateStatusBarText(name, parentName, parent, point, x, y) @@ -123,133 +50,40 @@ function CreateStatusBarText(name, parentName, parent, point, x, y) return fontString end -function UnitFramesImproved_Style_TargetOfTargetFrame() - if not InCombatLockdown() then - TargetFrameToTHealthBar.lockColor = true; - end -end - function UnitFramesImproved_Style_PlayerFrame() if not InCombatLockdown() then PlayerFrameHealthBar.lockColor = true; PlayerFrameHealthBar.capNumericDisplay = true; - PlayerFrameHealthBar:SetWidth(119); - PlayerFrameHealthBar:SetHeight(29); - PlayerFrameHealthBar:SetPoint("TOPLEFT",106,-22); - PlayerFrameHealthBarText:SetPoint("CENTER",50,6); + PlayerFrameHealthBar:SetStatusBarTexture("UI-HUD-UnitFrame-Player-PortraitOff-Bar-Health-Status", TextureKitConstants.UseAtlasSize); end - PlayerFrameTexture:SetTexture("Interface\\Addons\\UnitFramesImproved\\Textures\\UI-TargetingFrame"); - PlayerStatusTexture:SetTexture("Interface\\Addons\\UnitFramesImproved\\Textures\\UI-Player-Status"); PlayerFrameHealthBar:SetStatusBarColor(UnitColor("player")); end function UnitFramesImproved_Style_TargetFrame(self) - --if not InCombatLockdown() then - local classification = UnitClassification(self.unit); - if (classification == "minus") then - self.healthbar:SetHeight(12); - self.healthbar:SetPoint("TOPLEFT",7,-41); - if (self.healthbar.TextString) then - self.healthbar.TextString:SetPoint("CENTER",-50,4); - end - self.deadText:SetPoint("CENTER",-50,4); - self.Background:SetPoint("TOPLEFT",7,-41); - else - self.healthbar:SetHeight(29); - self.healthbar:SetPoint("TOPLEFT",7,-22); - if (self.healthbar.TextString) then - self.healthbar.TextString:SetPoint("CENTER",-50,6); - end - self.deadText:SetPoint("CENTER",-50,6); - self.nameBackground:Hide(); - self.Background:SetPoint("TOPLEFT",7,-22); - end - - self.healthbar:SetWidth(119); - self.healthbar.lockColor = true; - --end + self.healthbar.lockColor = true; end -function UnitFramesImproved_BossTargetFrame_Style(self) - self.borderTexture:SetTexture("Interface\\Addons\\UnitFramesImproved\\Textures\\UI-UnitFrame-Boss"); - - UnitFramesImproved_Style_TargetFrame(self); - if (not (characterSettings["FrameScale"] == nil)) then - if not InCombatLockdown() then - self:SetScale(characterSettings["FrameScale"] * 0.9); - end - end +function UnitFramesImproved_TargetFrame_CheckClassification(self) + local healthBar = self.TargetFrameContent.TargetFrameContentMain.HealthBar; + healthBar.HealthBarTexture:SetAtlas("UI-HUD-UnitFrame-Target-PortraitOn-Bar-Health-Status", TextureKitConstants.UseAtlasSize); end -function UnitFramesImproved_SetFrameScale(scale) - if not InCombatLockdown() then - -- Scale the main frames - PlayerFrame:SetScale(scale); - TargetFrame:SetScale(scale); - if (FocusFrame) then -- Support WoW Classic by checking for FocusFrame - FocusFrame:SetScale(scale); - end - - -- Scale sub-frames - ComboFrame:SetScale(scale); -- Still needed - - characterSettings["FrameScale"] = scale; - end +function UnitFramesImproved_Style_ToT(self) + local healthBar = self.HealthBar; + healthBar:SetStatusBarTexture("UI-HUD-UnitFrame-TargetofTarget-PortraitOn-Bar-Health-Status", TextureKitConstants.UseAtlasSize); end -- Slashcommand stuff SLASH_UNITFRAMESIMPROVED1 = "/unitframesimproved"; SLASH_UNITFRAMESIMPROVED2 = "/ufi"; SlashCmdList["UNITFRAMESIMPROVED"] = function(msg, editBox) - local tokens = tokenize(msg); - if(table.getn(tokens) > 0 and strlower(tokens[1]) == "reset") then - StaticPopup_Show("LAYOUT_RESET"); - elseif(table.getn(tokens) > 0 and strlower(tokens[1]) == "settings") then - InterfaceOptionsFrame_OpenToCategory(UnitFramesImproved.panelSettings); - elseif(table.getn(tokens) > 0 and strlower(tokens[1]) == "scale") then - if(table.getn(tokens) > 1) then - UnitFramesImproved_SetFrameScale(tokens[2]); - else - dout("Please supply a number, between 0.0 and 10.0 as the second parameter."); - end - else - dout("Valid commands for UnitFramesImproved are:") - dout(" help (shows this message)"); - dout(" scale # (scales the player frames)"); - dout(" reset (resets the scale of the player frames)"); - dout(""); - end + dout("Welcome to UnitFramesImproved. Settings have been removed as this is part of standard UI.") + dout(""); end --- Setup the static popup dialog for resetting the UI -StaticPopupDialogs["LAYOUT_RESET"] = { - text = "Are you sure you want to reset your scale?", - button1 = "Yes", - button2 = "No", - OnAccept = function() - UnitFramesImproved_LoadDefaultSettings(); - end, - timeout = 0, - whileDead = true, - hideOnEscape = true -} - -StaticPopupDialogs["LAYOUT_RESETDEFAULT"] = { - text = "In order for UnitFramesImproved to work properly,\nyour old layout settings need to be reset.\nThis will reload your UI.", - button1 = "Reset", - button2 = "Ignore", - OnAccept = function() - PlayerFrame:SetUserPlaced(false); - ReloadUI(); - end, - timeout = 0, - whileDead = true, - hideOnEscape = true -} - function UnitFramesImproved_TextStatusBar_UpdateTextStringWithValues(statusFrame, textString, value, valueMin, valueMax) - if( statusFrame.LeftText and statusFrame.RightText ) then + if( statusFrame.LeftText and statusFrame.RightText ) then statusFrame.LeftText:SetText(""); statusFrame.RightText:SetText(""); statusFrame.LeftText:Hide(); @@ -272,14 +106,7 @@ function UnitFramesImproved_TextStatusBar_UpdateTextStringWithValues(statusFrame if (textDisplay == "NONE") then return end if ( value and valueMax > 0 and ( textDisplay ~= "NUMERIC" or statusFrame.showPercentage ) and not statusFrame.showNumeric) then - -- if ( value == 0 and statusFrame.zeroText ) then - -- textString:SetText(statusFrame.zeroText); - -- statusFrame.isZero = 1; - -- textString:Show(); - -- return; - -- end - - percent = math.ceil((value / valueMax) * 100) .. "%"; + local percent = math.ceil((value / valueMax) * 100) .. "%"; if ( textDisplay == "BOTH" and not statusFrame.showPercentage) then valueDisplay = valueDisplay .. " (" .. percent .. ")"; textString:SetText(valueDisplay); @@ -292,9 +119,6 @@ function UnitFramesImproved_TextStatusBar_UpdateTextStringWithValues(statusFrame end end elseif ( value == 0 and statusFrame.zeroText ) then - -- textString:SetText(statusFrame.zeroText); - -- statusFrame.isZero = 1; - -- textString:Show(); return; else statusFrame.isZero = nil; @@ -307,19 +131,6 @@ function UnitFramesImproved_TextStatusBar_UpdateTextStringWithValues(statusFrame end end -function UnitFramesImproved_PlayerFrame_ToPlayerArt(self) - if not InCombatLockdown() then - UnitFramesImproved_Style_PlayerFrame(); - end -end - -function UnitFramesImproved_PlayerFrame_ToVehicleArt(self) - if not InCombatLockdown() then - PlayerFrameHealthBar:SetHeight(12); - PlayerFrameHealthBarText:SetPoint("CENTER",50,3); - end -end - function UnitFramesImproved_TargetFrame_Update(self) -- Set back color of health bar if ( not UnitPlayerControlled(self.unit) and UnitIsTapDenied(self.unit) ) then @@ -327,7 +138,8 @@ function UnitFramesImproved_TargetFrame_Update(self) self.healthbar:SetStatusBarColor(0.5, 0.5, 0.5); else -- Standard by class etc if not - self.healthbar:SetStatusBarColor(UnitColor(self.healthbar.unit)); + local r, g, b = UnitColor(self.healthbar.unit) + self.healthbar:SetStatusBarColor(r, g, b); end if ((UnitHealth(self.unit) <= 0) and UnitIsConnected(self.unit)) then @@ -340,45 +152,6 @@ function UnitFramesImproved_TargetFrame_Update(self) end end -function UnitFramesImproved_TargetFrame_CheckClassification(self, forceNormalTexture) - local texture; - local classification = UnitClassification(self.unit); - if ( classification == "worldboss" or classification == "elite" ) then - texture = "Interface\\Addons\\UnitFramesImproved\\Textures\\UI-TargetingFrame-Elite"; - elseif ( classification == "rareelite" ) then - texture = "Interface\\Addons\\UnitFramesImproved\\Textures\\UI-TargetingFrame-Rare-Elite"; - elseif ( classification == "rare" ) then - texture = "Interface\\Addons\\UnitFramesImproved\\Textures\\UI-TargetingFrame-Rare"; - end - if ( texture and not forceNormalTexture) then - self.borderTexture:SetTexture(texture); - else - if ( not (classification == "minus") ) then - self.borderTexture:SetTexture("Interface\\Addons\\UnitFramesImproved\\Textures\\UI-TargetingFrame"); - end - end - - self.nameBackground:Hide(); -end - -function UnitFramesImproved_TargetFrame_CheckFaction(self) - local factionGroup = UnitFactionGroup(self.unit); - if ( UnitIsPVPFreeForAll(self.unit) ) then - self.pvpIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA"); - self.pvpIcon:Show(); - elseif ( factionGroup and UnitIsPVP(self.unit) and UnitIsEnemy("player", self.unit) ) then - self.pvpIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA"); - self.pvpIcon:Show(); - elseif ( factionGroup == "Alliance" or factionGroup == "Horde" ) then - self.pvpIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup); - self.pvpIcon:Show(); - else - self.pvpIcon:Hide(); - end - - UnitFramesImproved_Style_TargetFrame(self); -end - -- Utility functions function UnitColor(unit) local r, g, b; @@ -424,11 +197,34 @@ end function UnitFramesImproved_StartUp(self) self:SetScript('OnEvent', function(self, event) self[event](self) end); self:RegisterEvent('PLAYER_ENTERING_WORLD'); - self:RegisterEvent('VARIABLES_LOADED'); end UnitFramesImproved_StartUp(UnitFramesImproved); +-- Additional debug info can be found on http://www.wowwiki.com/Blizzard_DebugTools +-- /framestack [showhidden] +-- showhidden - if "true" then will also display information about hidden frames +-- /eventtrace [command] +-- start - enables event capturing to the EventTrace frame +-- stop - disables event capturing +-- number - captures the provided number of events and then stops +-- If no command is given the EventTrace frame visibility is toggled. The first time the frame is displayed, event tracing is automatically started. +-- /dump expression +-- expression can be any valid lua expression that results in a value. So variable names, function calls, frames or tables can all be dumped. + +-- Adds message to the chatbox (only visible to the loacl player) +function dout(msg) + DEFAULT_CHAT_FRAME:AddMessage(msg); +end + +-- Debug print +function DebugPrintf(...) + local status, res = pcall(format, ...) + if status then + if DLAPI then DLAPI.DebugLog("UnitFramesImproved", res) end + end +end + -- Table Dump Functions -- http://lua-users.org/wiki/TableSerialization function print_r (t, indent, done) done = done or {} diff --git a/UnitFramesImproved/UnitFramesImproved.toc b/UnitFramesImproved/UnitFramesImproved.toc index cfa88e2..9f6166f 100644 --- a/UnitFramesImproved/UnitFramesImproved.toc +++ b/UnitFramesImproved/UnitFramesImproved.toc @@ -1,10 +1,8 @@ -# Interface: 11302 -## Interface: 90001 -#11302 = 1.13.2 classic -#90001 = 9.0.1 latest retail +## Interface: 100000 + ## Title: UnitFramesImproved ## Notes: Extends the Blizzard unitframes for better visuals, with a minimal footprint. -## Version: 1.7.2 +## Version: 2.0.0 ## Author: Althalla (Kim Forsberg) ## SavedVariables: globalSettings ## SavedVariablesPerCharacter: characterSettings diff --git a/UnitFramesImproved/dev/NumericThreatBorder.png b/UnitFramesImproved/dev/NumericThreatBorder.png deleted file mode 100644 index 32c1b9e..0000000 Binary files a/UnitFramesImproved/dev/NumericThreatBorder.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-FocusTargetingFrame.png b/UnitFramesImproved/dev/UI-FocusTargetingFrame.png deleted file mode 100644 index e8d6fc7..0000000 Binary files a/UnitFramesImproved/dev/UI-FocusTargetingFrame.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-Player-Status.png b/UnitFramesImproved/dev/UI-Player-Status.png deleted file mode 100644 index ed28be3..0000000 Binary files a/UnitFramesImproved/dev/UI-Player-Status.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-TargetingFrame-Elite.png b/UnitFramesImproved/dev/UI-TargetingFrame-Elite.png deleted file mode 100644 index b8a4bd6..0000000 Binary files a/UnitFramesImproved/dev/UI-TargetingFrame-Elite.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-TargetingFrame-Rare-Elite.png b/UnitFramesImproved/dev/UI-TargetingFrame-Rare-Elite.png deleted file mode 100644 index 41371a9..0000000 Binary files a/UnitFramesImproved/dev/UI-TargetingFrame-Rare-Elite.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-TargetingFrame-Rare.png b/UnitFramesImproved/dev/UI-TargetingFrame-Rare.png deleted file mode 100644 index 94104f3..0000000 Binary files a/UnitFramesImproved/dev/UI-TargetingFrame-Rare.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-TargetingFrame.png b/UnitFramesImproved/dev/UI-TargetingFrame.png deleted file mode 100644 index 6643af6..0000000 Binary files a/UnitFramesImproved/dev/UI-TargetingFrame.png and /dev/null differ diff --git a/UnitFramesImproved/dev/UI-UnitFrame-Boss.png b/UnitFramesImproved/dev/UI-UnitFrame-Boss.png deleted file mode 100644 index e323fd4..0000000 Binary files a/UnitFramesImproved/dev/UI-UnitFrame-Boss.png and /dev/null differ