Quantcast

5.0.4

Steven Jackson [10-15-14 - 23:14]
5.0.4
Filename
Interface/AddOns/SVUI/SVUI.toc
Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
Interface/AddOns/SVUI/packages/unit/SVUnit.lua
Interface/AddOns/SVUI/packages/unit/frames.lua
Interface/AddOns/SVUI/scripts/questwatch.lua
Interface/AddOns/SVUI/system/_load.xml
Interface/AddOns/SVUI/system/common.lua
Interface/AddOns/SVUI/system/core.lua
Interface/AddOns/SVUI/system/credits.lua
Interface/AddOns/SVUI/system/timers.lua
Interface/AddOns/SVUI/xml/widgets.xml
Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
Interface/PaperDollInfoFrame/UI-Character-ScrollBar.blp
Interface/PaperDollInfoFrame/UI-Character-Skills-BarBorder.blp
Interface/PaperDollInfoFrame/UI-GearManager-Border.blp
Interface/PaperDollInfoFrame/UI-GearManager-Collapsed.blp
Interface/PaperDollInfoFrame/UI-GearManager-FlyoutButton.blp
Interface/PaperDollInfoFrame/UI-GearManager-Title-Background.blp
diff --git a/Interface/AddOns/SVUI/SVUI.toc b/Interface/AddOns/SVUI/SVUI.toc
index 88c0c52..a396bfd 100644
--- a/Interface/AddOns/SVUI/SVUI.toc
+++ b/Interface/AddOns/SVUI/SVUI.toc
@@ -3,7 +3,7 @@
 ## Version: 5.0
 ## Title: |cffFF9900SVUI|r
 ## Notes: Supervillain UI [|cff9911FFCore Framework|r].
-## SavedVariables: SVUI_Global
+## SavedVariables: SVUI_Global, SVUI_Errors
 ## SavedVariablesPerCharacter: SVUI_Profile, SVUI_Cache
 ## OptionalDeps: Blizzard_DebugTools, Blizzard_PetJournal, SharedMedia
 ## X-SVUI-Header: SuperVillain UI
diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
index fc3bd43..3b5b808 100644
--- a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
+++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua
@@ -93,10 +93,11 @@ local InterfaceVersion      = select(4, GetBuildInfo());
 --[[ COMMON LOCAL VARS ]]--

 local GLOBAL_FILENAME       = CoreName.."_Global";
+local ERROR_FILENAME        = CoreName.."_Errors";
 local PROFILE_FILENAME      = CoreName.."_Profile";
 local CACHE_FILENAME        = CoreName.."_Cache";
 local SOURCE_KEY            = 1;
-local GLOBAL_SV, PROFILE_SV, CACHE_SV, PLUGINS, MODULES;
+local GLOBAL_SV, PROFILE_SV, CACHE_SV, ERROR_CACHE, PLUGINS, MODULES;
 local PluginString = ""
 local AllowedIndexes, LoadOnDemand = {},{};
 local Callbacks, ScriptQueue = {},{};
@@ -562,6 +563,42 @@ core add-ins functioning outside of the core object.
 --]]

 --REGISTRY LOCAL HELPERS
+
+local function HandleErrors(schema, action, catch)
+    if(CoreObject.DebugMode == true) then
+        schema = schema or "LibSuperVillain"
+        action = action or "Unknown Function"
+        local timestamp = date("%m/%d/%y %H:%M:%S")
+        local err_message = ("%s [%s] - (%s) %s"):format(schema, action, timestamp, catch)
+        tinsert(ERROR_CACHE.FOUND, err_message)
+        ScriptErrorsFrame_OnError(catch, false, true)
+        CoreObject:Debugger(err_message)
+    end
+end
+
+local function LoadingProxy(schema, obj)
+    if(not obj) then return end
+    if(not obj.initialized) then
+        if(obj.Load and type(obj.Load) == "function") then
+            local _, catch = pcall(obj.Load, obj)
+            if(catch) then
+                HandleErrors(schema, "Load", catch)
+            else
+                obj.initialized = true
+            end
+        end
+    else
+        if(obj.ReLoad and type(obj.ReLoad) == "function") then
+            local _, catch = pcall(obj.ReLoad, obj)
+            if(catch) then
+                HandleErrors(schema, "ReLoad", catch)
+            end
+        end
+    end
+end
+
+--OBJECT INTERNALS
+
 local changeDBVar = function(self, value, key, sub1, sub2, sub3)
     local db = CoreObject.db[self.Schema]
     if((sub1 and sub2 and sub3) and (db[sub1] and db[sub1][sub2] and db[sub1][sub2][sub3])) then
@@ -581,8 +618,13 @@ end

 local innerOnEvent = function(self, event, ...)
     local obj = self.___owner
-    if self[event] and type(self[event]) == "function" then
-        self[event](obj, event, ...)
+    local fn = self[event]
+    if(fn and type(fn) == "function" and obj.initialized) then
+        local _, catch = pcall(fn, obj, event, ...)
+        if(catch) then
+            local schema = obj.Schema
+            HandleErrors(schema, event, catch)
+        end
     end
 end

@@ -618,9 +660,9 @@ local innerOnUpdate = function(self, elapsed)
         local callbacks = self.callbacks

         for name, fn in pairs(callbacks) do
-            local _, error = pcall(fn, obj)
-            if(error and CoreObject.Debugging) then
-                print(error)
+            local _, catch = pcall(fn, obj)
+            if(catch and CoreObject.Debugging) then
+                print(catch)
             end
         end

@@ -670,38 +712,33 @@ function lib:RunCallbacks()
     for i=1, #Callbacks do
         local fn = Callbacks[i]
         if(fn and type(fn) == "function") then
-            fn()
+            local _, catch = pcall(fn)
+            if(catch) then
+                HandleErrors("LibSuperVillain", "Callback", catch)
+            end
         end
     end
 end

 function lib:RefreshModule(schema)
     local obj = CoreObject[schema]
-    if obj and obj.ReLoad then
-        obj:ReLoad()
-    end
+    LoadingProxy(schema, obj)
 end

 function lib:RefreshPlugin(schema)
     local obj = _G[schema]
-    if obj and obj.ReLoad then
-        obj:ReLoad()
-    end
+    LoadingProxy(schema, obj)
 end

 function lib:RefreshAll()
     for _,schema in pairs(MODULES) do
         local obj = CoreObject[schema]
-        if obj and obj.ReLoad then
-            obj:ReLoad()
-        end
+        LoadingProxy(schema, obj)
     end

     for _,schema in pairs(PLUGINS) do
         local obj = _G[schema]
-        if obj and obj.ReLoad then
-            obj:ReLoad()
-        end
+        LoadingProxy(schema, obj)
     end
 end

@@ -747,9 +784,8 @@ function lib:LoadQueuedModules()
                         if IsAddOnLoaded(addon) then halt = true end
                     end
                 end
-                if(obj.Load and (not halt)) then
-                    obj:Load()
-                    obj.initialized = true
+                if(not halt) then
+                    LoadingProxy(schema, obj)
                 end
             end
         end
@@ -769,9 +805,8 @@ function lib:LoadQueuedPlugins()
                         if IsAddOnLoaded(addon) then halt = true end
                     end
                 end
-                if(obj.Load and (not halt)) then
-                    obj:Load()
-                    obj.initialized = true
+                if(not halt) then
+                    LoadingProxy(schema, obj)
                 end
             end
         end
@@ -984,7 +1019,7 @@ local Core_ResetData = function(self, sub, sub2, sub3)
     tablecopy(sv, src)
 end

-function lib:NewCore(gfile, pfile, cfile)
+function lib:NewCore(gfile, efile, pfile, cfile)
     --meta assurance
     local mt = {};
     local old = getmetatable(CoreObject);
@@ -996,6 +1031,7 @@ function lib:NewCore(gfile, pfile, cfile)

     --database
     GLOBAL_FILENAME = gfile or GLOBAL_FILENAME
+    ERROR_FILENAME = efile or ERROR_FILENAME
     PROFILE_FILENAME = pfile or PROFILE_FILENAME
     CACHE_FILENAME  = cfile or CACHE_FILENAME

@@ -1009,6 +1045,8 @@ function lib:NewCore(gfile, pfile, cfile)
     end

     --internals
+    CoreObject.___errors            = {};
+
     CoreObject.NameID               = CoreName;
     CoreObject.Version              = AddonVersion;
     CoreObject.GameVersion          = tonumber(InterfaceVersion);
@@ -1058,6 +1096,22 @@ function lib:Initialize()
         GLOBAL_SV.profileKeys[k] = k
     end

+    --SAVED ERRORS
+    if not _G[ERROR_FILENAME] then _G[ERROR_FILENAME] = {} end
+    ERROR_CACHE = _G[ERROR_FILENAME]
+
+    local datestamp = date("%m_%d_%y")
+
+    if(ERROR_CACHE.TODAY and ERROR_CACHE.TODAY ~= datestamp) then
+        ERROR_CACHE.FOUND = {}
+    end
+
+    if(not ERROR_CACHE.FOUND) then
+        ERROR_CACHE.FOUND = {}
+    end
+
+    ERROR_CACHE.TODAY = datestamp
+
     --CACHE SAVED VARIABLES
     if not _G[CACHE_FILENAME] then _G[CACHE_FILENAME] = {} end
     CACHE_SV = _G[CACHE_FILENAME]
diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
index a084307..4370a86 100644
--- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
+++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua
@@ -1381,28 +1381,17 @@ function MOD:FrameForge()
 end

 function MOD:KillBlizzardRaidFrames()
-	if InCombatLockdown() then return end
-	CompactRaidFrameManager:Die()
-	CompactRaidFrameContainer:Die()
-	CompactUnitFrameProfiles:Die()
+	if(InCombatLockdown()) then return end
+	if(not _G.CompactRaidFrameManager) then return end
+	_G.CompactRaidFrameManager:Die()
+	_G.CompactRaidFrameContainer:Die()
+	_G.CompactUnitFrameProfiles:Die()
 	local crfmTest = CompactRaidFrameManager_GetSetting("IsShown")
 	if crfmTest and crfmTest ~= "0" then
-		CompactRaidFrameManager_SetSetting("IsShown","0")
+		CompactRaidFrameManager_SetSetting("IsShown", "0")
 	end
 end

--- function MOD:GROUP_ROSTER_UPDATE()
--- 	self:KillBlizzardRaidFrames()
--- 	if(IsInGroup()) then
--- 		if(not self:IsEventRegistered("ZONE_CHANGED_NEW_AREA")) then
--- 			self:ZONE_CHANGED_NEW_AREA()
--- 			self:RegisterEvent("ZONE_CHANGED_NEW_AREA")
--- 		end
--- 	else
--- 		self:UnregisterEvent("ZONE_CHANGED_NEW_AREA")
--- 	end;
--- end
-
 function MOD:PLAYER_REGEN_DISABLED()
 	for _,frame in pairs(self.Headers) do
 		if frame and frame.forceShow then
diff --git a/Interface/AddOns/SVUI/packages/unit/frames.lua b/Interface/AddOns/SVUI/packages/unit/frames.lua
index 3595815..8f7ee76 100644
--- a/Interface/AddOns/SVUI/packages/unit/frames.lua
+++ b/Interface/AddOns/SVUI/packages/unit/frames.lua
@@ -1127,16 +1127,13 @@ local Raid10Visibility = function(self, event)
         self:UnregisterEvent("PLAYER_REGEN_ENABLED")
     end
     if not InCombatLockdown() then
-        if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers == 10)) then
+        if(instance and (instanceType == "raid" or instanceType == "pvp")) then
             UnregisterStateDriver(self, "visibility")
-            if(raidType == 'Mythic') then
-                self:Hide()
-            else
+            if(maxPlayers == 10) then
                 self:Show()
+            else
+                self:Hide()
             end
-        elseif(instance and (instanceType == "raid")) then
-            UnregisterStateDriver(self, "visibility")
-            self:Hide()
         elseif db.visibility then
             RegisterStateDriver(self, "visibility", db.visibility)
         end
@@ -1156,16 +1153,13 @@ local Raid25Visibility = function(self, event)
         self:UnregisterEvent("PLAYER_REGEN_ENABLED")
     end
     if not InCombatLockdown()then
-        if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers > 10 and maxPlayers < 40)) then
+        if(instance and (instanceType == "raid" or instanceType == "pvp")) then
             UnregisterStateDriver(self, "visibility")
-            if(raidType == 'Mythic') then
-                self:Hide()
-            else
+            if(maxPlayers > 10 and maxPlayers < 40) then
                 self:Show()
+            else
+                self:Hide()
             end
-        elseif(instance and (instanceType == "raid")) then
-            UnregisterStateDriver(self, "visibility")
-            self:Hide()
         elseif db.visibility then
             RegisterStateDriver(self, "visibility", db.visibility)
         end
@@ -1185,16 +1179,13 @@ local Raid40Visibility = function(self, event)
         self:UnregisterEvent("PLAYER_REGEN_ENABLED")
     end
     if not InCombatLockdown()then
-        if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers == 40)) then
+        if(instance and (instanceType == "raid" or instanceType == "pvp")) then
             UnregisterStateDriver(self, "visibility")
-            if(raidType == 'Mythic') then
-                self:Hide()
-            else
+            if(maxPlayers == 40) then
                 self:Show()
+            else
+                self:Hide()
             end
-        elseif(instance and (instanceType == "raid")) then
-            UnregisterStateDriver(self, "visibility")
-            self:Hide()
         elseif db.visibility then
             RegisterStateDriver(self, "visibility", db.visibility)
         end
diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua
index 4932ff6..332f9c5 100644
--- a/Interface/AddOns/SVUI/scripts/questwatch.lua
+++ b/Interface/AddOns/SVUI/scripts/questwatch.lua
@@ -58,17 +58,11 @@ local L = SV.L
 LOCAL VARS
 ##########################################################
 ]]--
-local SuperDockWindowRight, QuestFrame;
+local SuperDockWindowRight, QuestFrame, ObjectiveTrackerFrame;
 local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]]
 local OBJECTIVE_TRACKER_LINE_WIDTH = _G.OBJECTIVE_TRACKER_LINE_WIDTH;
 --[[
 ##########################################################
-PRE VARS/FUNCTIONS
-##########################################################
-]]--
-
---[[
-##########################################################
 CORE FUNCTIONS
 ##########################################################
 ]]--
@@ -92,8 +86,8 @@ end

 local function CreateQuestFrame()
 	SuperDockWindowRight = _G.SuperDockWindowRight
-	local ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame
-
+	ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame
+	if(not ObjectiveTrackerFrame) then return end
 	if(not SV.db.general.questWatch) then
 		ObjectiveTrackerFrame:RemoveTextures(true)

@@ -121,6 +115,7 @@ local function CreateQuestFrame()
 	else
 		local bgTex = [[Interface\BUTTONS\WHITE8X8]]
 		local bdTex = SV.Media.bar.glow
+		local WIDTH, HEIGHT = SuperDockWindowRight:GetSize()

 		QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", SuperDockWindowRight);
 		QuestFrame:SetFrameStrata("BACKGROUND");
@@ -162,14 +157,9 @@ local function CreateQuestFrame()
 		ObjectiveTrackerFrame:SetClampedToScreen(false)
 		ObjectiveTrackerFrame:SetParent(listFrame)
 		ObjectiveTrackerFrame:SetHeight(500)
+		ObjectiveTrackerFrame:SetWidth(WIDTH)
 		ObjectiveTrackerFrame:SetPoint("TOPRIGHT", listFrame, "TOPRIGHT", -31, 0)
 		ObjectiveTrackerFrame:SetFrameLevel(listFrame:GetFrameLevel()  +  1)
-		if listFrame then
-			OBJECTIVE_TRACKER_LINE_WIDTH = (listFrame:GetWidth() - 100);
-		else
-			OBJECTIVE_TRACKER_LINE_WIDTH = (ObjectiveTrackerFrame:GetWidth() - 100);
-		end
-		ObjectiveTrackerFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH)

 		listFrame:SetScrollChild(ObjectiveTrackerFrame)
 		scrollFrame:SetScript("OnValueChanged", function(self, argValue)
@@ -178,13 +168,37 @@ local function CreateQuestFrame()
 		scrollFrame:ClearAllPoints()
 		scrollFrame:SetPoint("TOPRIGHT", QuestFrame, "TOPRIGHT", -3, 0)

+		ObjectiveTrackerFrame.ClearAllPoints = SV.fubar;
+		ObjectiveTrackerFrame.SetAllPoints = SV.fubar;
+		ObjectiveTrackerFrame.SetPoint = SV.fubar;
+		ObjectiveTrackerFrame.SetWidth = SV.fubar;
+
+		ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetWidth((WIDTH - 60))
+		ObjectiveTrackerFrame.BlocksFrame.QuestHeader:RemoveTextures(true)
+		ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetFixedPanelTemplate("Headline", true)
+  		--ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetPanelColor("unique")
+  		ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetBackdropColor(0, 0, 0, 0.5)
+
+  		ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetWidth((WIDTH - 60))
+		ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:RemoveTextures(true)
+		ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetFixedPanelTemplate("Headline", true)
+  		--ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetPanelColor("unique")
+  		ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetBackdropColor(0, 0, 0, 0.5)
+
+  		ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetWidth((WIDTH - 60))
+		ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:RemoveTextures(true)
+		ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetFixedPanelTemplate("Headline", true)
+  		--ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetPanelColor("unique")
+  		ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetBackdropColor(0, 0, 0, 0.5)
+
+
+		ObjectiveTrackerFrame.HeaderMenu.MinimizeButton:Hide()
+
 		ObjectiveTrackerFrame.BlocksFrame:RemoveTextures(true)
 		ObjectiveTrackerFrame.BlocksFrame:SetPoint("TOPLEFT", ObjectiveTrackerFrame, "TOPLEFT", 87, 0)
 		ObjectiveTrackerFrame.BlocksFrame:SetPoint("BOTTOMLEFT", ObjectiveTrackerFrame, "BOTTOMLEFT", 87, 0)
-		ObjectiveTrackerFrame.BlocksFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH)
-		ObjectiveTrackerFrame.ClearAllPoints = SV.fubar;
-		ObjectiveTrackerFrame.SetPoint = SV.fubar;
-		ObjectiveTrackerFrame.SetAllPoints = SV.fubar;
+		ObjectiveTrackerFrame.BlocksFrame:SetWidth(WIDTH)
+		ObjectiveTrackerFrame.BlocksFrame.SetWidth = SV.fubar;

 		local eventHandler = CreateFrame("Frame")
 		eventHandler:RegisterEvent("QUEST_AUTOCOMPLETE")
diff --git a/Interface/AddOns/SVUI/system/_load.xml b/Interface/AddOns/SVUI/system/_load.xml
index 08da957..458130c 100644
--- a/Interface/AddOns/SVUI/system/_load.xml
+++ b/Interface/AddOns/SVUI/system/_load.xml
@@ -11,4 +11,5 @@
     <Script file="alerts.lua"/>
     <Script file="moveable.lua"/>
     <Script file="mentalo.lua"/>
+    <Script file="credits.lua"/>
 </Ui>
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/common.lua b/Interface/AddOns/SVUI/system/common.lua
index f45ddd7..473e1b5 100644
--- a/Interface/AddOns/SVUI/system/common.lua
+++ b/Interface/AddOns/SVUI/system/common.lua
@@ -259,6 +259,7 @@ local function Die(self)
 end

 local function RemoveTextures(self, option)
+    if(self.Panel) then return end
     local region, layer, texture
     for i = 1, self:GetNumRegions()do
         region = select(i, self:GetRegions())
@@ -348,7 +349,8 @@ XML TEMPLATE LOOKUP TABLE
 local _templates = {
     ["Default"] = "SVUI_PanelTemplate_Default",
     ["Transparent"] = "SVUI_PanelTemplate_Transparent",
-    ["Component"] = "SVUI_PanelTemplate_Component",
+    ["Component"] = "SVUI_PanelTemplate_Component",
+    ["Headline"] = "SVUI_PanelTemplate_Headline",
     ["Button"] = "SVUI_PanelTemplate_Button",
     ["FramedTop"] = "SVUI_PanelTemplate_FramedTop",
     ["FramedBottom"] = "SVUI_PanelTemplate_FramedBottom",
diff --git a/Interface/AddOns/SVUI/system/core.lua b/Interface/AddOns/SVUI/system/core.lua
index f0852c7..e160299 100644
--- a/Interface/AddOns/SVUI/system/core.lua
+++ b/Interface/AddOns/SVUI/system/core.lua
@@ -214,7 +214,7 @@ end

 -- We have to send the names of our three SavedVariables files since the WoW API
 -- has no method for parsing them in LUA.
-local SVUI = SVLib:NewCore("SVUI_Global", "SVUI_Profile", "SVUI_Cache")
+local SVUI = SVLib:NewCore("SVUI_Global", "SVUI_Errors", "SVUI_Profile", "SVUI_Cache")

 SVUI.ConfigID           = "SVUI_ConfigOMatic";
 SVUI.class              = playerClass
diff --git a/Interface/AddOns/SVUI/system/credits.lua b/Interface/AddOns/SVUI/system/credits.lua
new file mode 100644
index 0000000..cb13528
--- /dev/null
+++ b/Interface/AddOns/SVUI/system/credits.lua
@@ -0,0 +1,148 @@
+--[[
+##############################################################################
+_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
+ ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
+  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
+   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
+    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
+     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
+      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
+       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
+        ___\///////////___________\///___________\/////////_____\///////////_#
+##############################################################################
+S U P E R - V I L L A I N - U I   By: Munglunch                              #
+##############################################################################
+]]--
+
+--[[ GLOBALS ]]--
+
+local _G = _G;
+local unpack 	 =  _G.unpack;
+local pairs 	 =  _G.pairs;
+
+--[[ ADDON ]]--
+
+local SV = _G["SVUI"];
+local L = SV.L;
+
+--[[ CODING CREDITS ]]--
+
+local contributors = {
+	"Elv",
+	"Tukz",
+	"Azilroka",
+	"Sortokk",
+	"Kkthnx",
+	"AlleyKat",
+	"Quokka",
+	"Duugu",
+	"Zork",
+	"Haleth",
+	"P3lim",
+	"Haste",
+	"Totalpackage",
+	"Kryso",
+	"Thepilli",
+	"Phanx"
+};
+
+local coderList = "";
+
+for _, name in pairs(contributors) do
+	coderList = ("%s\n%s"):format(coderList, name)
+end
+
+--[[ DONATION CREDITS ]]--
+
+local donations = {
+	"Movster",
+	"Cazart506",
+	"FaolanKing",
+	"Doonga",
+	"Meggalo",
+	"Penguinsane",
+	"Moondoggy",
+	"Necroo",
+	"Other Silent Partners.. (Let me know if I have forgotten you)"
+};
+
+local donorList = "";
+
+for _, name in pairs(contributors) do
+	donorList = ("%s\n%s"):format(donorList, name)
+end
+
+--[[ TESTER CREDITS ]]--
+
+local testers = {
+	"Sinnisterr - (My wife, the MOST ruthless Warlock you will ever meet)",
+	"Doonga - (The man who keeps me busy)",
+	"Daigan - (My current 2nd in command)",
+	"Penguinsane - (Tester extraordinaire)",
+	"FaolanKing - (King of the bug report portal)"
+};
+
+local testerList = "";
+
+for _, name in pairs(testers) do
+	testerList = ("%s\n%s"):format(testerList, name)
+end
+
+--[[ COMMUNITY CREDITS ]]--
+
+local community = {
+	"Movster",
+	"Judicate",
+	"Cazart506",
+	"MuffinMonster",
+	"Joelsoul",
+	"Trendkill09",
+	"Luamar",
+	"Zharooz",
+	"Lyn3x5",
+	"Madh4tt3r",
+	"Xarioth",
+	"AtomicKiller",
+	"Meljen",
+	"Moondoggy",
+	"Stormblade",
+	"Schreibstift",
+	"Anj",
+	"Risien",
+	"Cromax",
+	"Nitro_Turtle",
+	"Shinzou",
+	"Autolykus",
+	"Taotao",
+	"ColorsGaming",
+	"Necroo",
+	"The Wowinterface Community",
+};
+
+local communityList = "";
+
+for _, name in pairs(community) do
+	communityList = ("%s\n%s"):format(communityList, name)
+end
+
+--[[ BUILD STRING ]]--
+
+local creditHeader = "|cffff9900SUPERVILLAIN CREDITS:|r\n|cff4f4f4f---------------------------------------------|r\n|cffff9900CREATED BY:|r  Munglunch\n|cff4f4f4f---------------------------------------------|r\n|cffff9900CODE GRANTS BY:|r  Elv, Tukz, Azilroka, Sortokk\n|cff4f4f4f---------------------------------------------|r\n";
+
+local creditThanks1 = "|cffff9900SPECIAL THANKS TO:  |r|cfff81422Cairenn|r |cff2288cc(@WowInterface.com)|r  ..the most patient and accomodating person I know!\n\n";
+
+local creditThanks2 = "|cffff9900A VERY SPECIAL THANKS TO:  |r|cffffff00Movster|r  ..who inspired me to bring this project back to life!\n|cff4f4f4f---------------------------------------------|r\n";
+
+local creditCoders = ("|cff3399ffCODE MONKEYS  (aka CONTRIBUTORS):|r%s\n|cff4f4f4f---------------------------------------------|r\n"):format(coderList);
+
+local creditDonations = ("|cff99ff33KINGPINS  (aka INVESTORS):|r%s\n|cff4f4f4f---------------------------------------------|r\n"):format(donorList);
+
+local creditTesters = ("|cffaa33ffPERFECTIONISTS  (aka CORE TESTING TEAM):|r%s\n|cff4f4f4f---------------------------------------------|r\n"):format(testerList);
+
+local creditCommunity = ("|cffaa33ffMINIONS  (aka COMMUNITY TESTERS):|r%s\n|cff4f4f4f---------------------------------------------|r\n"):format(communityList);
+
+local creditMusic = "|cff00ccffTheme Song By: Fingathing [taken from the song: SuperHero Music]|r";
+
+--[[ FINAL CREDITS STRING ]]--
+
+SV.Credits = creditHeader .. creditThanks1 .. creditThanks2 .. creditCoders .. creditDonations .. creditTesters .. creditCommunity .. creditMusic;
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI/system/timers.lua b/Interface/AddOns/SVUI/system/timers.lua
index ffbf1b1..b1f67d9 100644
--- a/Interface/AddOns/SVUI/system/timers.lua
+++ b/Interface/AddOns/SVUI/system/timers.lua
@@ -257,7 +257,7 @@ local Cooldown_OnLoad = function(self, start, duration, elapsed)
 		if elapsed and elapsed > 0 then
 			self.timer:SetAlpha(0)
 		else
-			self.timer:SetAlpha(1)
+			self.timer:SetAlpha(0.8)
 		end
 	end
 end
diff --git a/Interface/AddOns/SVUI/xml/widgets.xml b/Interface/AddOns/SVUI/xml/widgets.xml
index 4691e33..37326b9 100644
--- a/Interface/AddOns/SVUI/xml/widgets.xml
+++ b/Interface/AddOns/SVUI/xml/widgets.xml
@@ -205,6 +205,20 @@
         </Frames>
     </Frame>

+    <Frame name="SVUI_PanelTemplate_Headline" virtual="true">
+        <Attributes>
+            <Attribute name="panelColor" type="string" value="darkest" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
+        </Attributes>
+        <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" tile="true">
+            <TileSize val="20" />
+            <Color r="0" g="0" b="0" a="0.5" />
+        </Backdrop>
+    </Frame>
+
     <Frame name="SVUI_PanelTemplate_Button" virtual="true">
         <Attributes>
             <Attribute name="panelColor" type="string" value="default" />
@@ -399,7 +413,14 @@
         </Layers>
     </Frame>

-    <Frame name="SVUI_PanelTemplate_Bar" inherits="SVUI_PanelTemplate_Transparent" virtual="true">
+    <Frame name="SVUI_PanelTemplate_Bar" virtual="true">
+        <Attributes>
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
+            <Attribute name="panelPadding" type="number" value="1" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
+        </Attributes>
         <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
             <EdgeSize val="1" />
             <TileSize val="0" />
@@ -407,6 +428,50 @@
             <Color r="0" g="0" b="0" a="0.5" />
             <BorderColor r="0" g="0" b="0" a="1" />
         </Backdrop>
+        <Layers>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="1" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
+        </Layers>
     </Frame>

     <Frame name="SVUI_PanelTemplate_Slot" virtual="true">
@@ -473,9 +538,13 @@
         </Frames>
     </Frame>

-    <Frame name="SVUI_PanelTemplate_Inset" inherits="SVUI_PanelTemplate_Transparent" virtual="true">
+    <Frame name="SVUI_PanelTemplate_Inset" virtual="true">
         <Attributes>
+            <Attribute name="panelColor" type="string" value="transparent" />
+            <Attribute name="panelGradient" type="boolean" value="false" />
+            <Attribute name="panelTexUpdate" type="boolean" value="false" />
             <Attribute name="panelPadding" type="number" value="2" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="true" />
         </Attributes>
         <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
             <EdgeSize val="2" />
@@ -660,10 +729,12 @@
         </Layers>
     </Frame>

-    <Frame name="SVUI_PanelTemplate_Paper" inherits="SVUI_PanelTemplate_Comic" virtual="true">
+    <Frame name="SVUI_PanelTemplate_Paper" virtual="true">
         <Attributes>
             <Attribute name="panelColor" type="string" value="white" />
             <Attribute name="panelGradient" type="string" value="white" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelPadding" type="number" value="3" />
             <Attribute name="panelSkipUpdate" type="boolean" value="true" />
         </Attributes>
         <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
@@ -678,6 +749,48 @@
                 <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" setAllPoints="true" />
                 <Color r="1" g="1" b="1" a="1" />
             </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
         </Layers>
     </Frame>

@@ -746,10 +859,13 @@
         </Layers>
     </Frame>

-    <Frame name="SVUI_PanelTemplate_Pattern" inherits="SVUI_PanelTemplate_Comic" virtual="true">
+    <Frame name="SVUI_PanelTemplate_Pattern" virtual="true">
         <Attributes>
             <Attribute name="panelColor" type="string" value="special" />
             <Attribute name="panelGradient" type="string" value="special" />
+            <Attribute name="panelTexUpdate" type="boolean" value="true" />
+            <Attribute name="panelPadding" type="number" value="3" />
+            <Attribute name="panelSkipUpdate" type="boolean" value="false" />
         </Attributes>
         <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false">
             <EdgeSize val="1" />
@@ -763,6 +879,48 @@
                 <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" setAllPoints="true" />
                 <Color r="0.37" g="0.32" b="0.29" a="1" />
             </Layer>
+            <Layer level="BORDER">
+                <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension x="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="TOPLEFT" relativePoint="TOPLEFT" />
+                        <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+                <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8">
+                    <Anchors>
+                        <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" />
+                        <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" />
+                    </Anchors>
+                    <Size>
+                        <AbsDimension y="3" />
+                    </Size>
+                    <Color r="0" g="0" b="0" a="1" />
+                </Texture>
+            </Layer>
         </Layers>
         <Frames>
             <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" />
diff --git a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
index 21a940f..ff6beb2 100644
--- a/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
+++ b/Interface/AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua
@@ -35,12 +35,8 @@ local Ace3Config = LibStub("AceConfig-3.0");
 local Ace3ConfigDialog = LibStub("AceConfigDialog-3.0");
 Ace3Config:RegisterOptionsTable(SV.NameID, SV.Options);
 Ace3ConfigDialog:SetDefaultSize(SV.NameID, 890, 651);
-
 local AceGUI = LibStub("AceGUI-3.0", true);
-local posOpts = {TOPLEFT='TOPLEFT',LEFT='LEFT',BOTTOMLEFT='BOTTOMLEFT',RIGHT='RIGHT',TOPRIGHT='TOPRIGHT',BOTTOMRIGHT='BOTTOMRIGHT',CENTER='CENTER',TOP='TOP',BOTTOM='BOTTOM'};
-local GEAR = SV.SVGear;
-local BAG = SV.SVBag;
-local OVR = SV.SVOverride;
+
 local sortingFunction = function(arg1, arg2) return arg1 < arg2 end

 local function CommonFontSizeUpdate()
@@ -123,7 +119,7 @@ SET PACKAGE OPTIONS
 SV.Options.args.SVUI_Header = {
 	order = 1,
 	type = "header",
-	name = "You are using |cffff9900Super Villain UI|r - "..L["Version"]..format(": |cff99ff33%s|r", SV.Version),
+	name = ("You are using |cffff9900Super Villain UI|r - %s: |cff99ff33%s|r"):format(L["Version"], SV.Version),
 	width = "full"
 }

@@ -293,7 +289,7 @@ SV.Options.args.common = {
 									max = 328,
 									step = 1,
 									get = function()return SV.db.SVOverride.lootRollWidth end,
-									set = function(a,b) OVR:ChangeDBVar(b,a[#a]); end,
+									set = function(a,b) SV.SVOverride:ChangeDBVar(b,a[#a]); end,
 								},
 								lootRollHeight = {
 									order = 4,
@@ -304,7 +300,7 @@ SV.Options.args.common = {
 									max = 58,
 									step = 1,
 									get = function()return SV.db.SVOverride.lootRollHeight end,
-									set = function(a,b) OVR:ChangeDBVar(b,a[#a]); end,
+									set = function(a,b) SV.SVOverride:ChangeDBVar(b,a[#a]); end,
 								},
 							}
 						},
@@ -662,68 +658,75 @@ SV.Options.args.common = {
 					order = 3,
 					type = 'group',
 					name = SV.SVGear.TitleID,
-					get = function(a)return SV.db.SVGear[a[#a]]end,
-					set = function(a,b)SV.db.SVGear[a[#a]]=b;GEAR:ReLoad()end,
+					get = function(key) return SV.db.SVGear[key[#key]]end,
+					set = function(key, value) SV.db.SVGear[key[#key]] = value; SV.SVGear:ReLoad()end,
 					args={
 						intro={
 							order = 1,
 							type = 'description',
 							name = function()
 								if(GetNumEquipmentSets()==0) then
-									return L["EQUIPMENT_DESC"] .. "\n" .. "|cffFF0000Must create an equipment set to use some of these features|r"
+									return ("%s\n|cffFF0000Must create an equipment set to use some of these features|r"):format(L["EQUIPMENT_DESC"])
 								else
 									return L["EQUIPMENT_DESC"]
 								end
 							end
 						},
-						specialization={
+						specialization = {
 							order = 2,
 							type = "group",
 							name = L["Specialization"],
 							guiInline = true,
-							disabled = function()return GetNumEquipmentSets()==0 end,
-							args={
-								enable={
-									type="toggle",
-									order=1,
-									name=L["Enable"],
-									desc=L['Enable/Disable the specialization switch.'],
-									get=function(e)return SV.db.SVGear.specialization.enable end,
-									set=function(e,value) SV.db.SVGear.specialization.enable = value end
-								},
-								primary={
-									type="select",
-									order=2,
-									name=L["Primary Talent"],
-									desc=L["Choose the equipment set to use for your primary specialization."],
-									disabled=function()return not SV.db.SVGear.specialization.enable end,
-									values=function()
-										local h={["none"]=L["No Change"]}
-										for i=1,GetNumEquipmentSets()do
-											local name=GetEquipmentSetInfo(i)
-											if name then h[name]=name end
+							disabled = function() return GetNumEquipmentSets() == 0 end,
+							args = {
+								enable = {
+									type = "toggle",
+									order = 1,
+									name = L["Enable"],
+									desc = L["Enable/Disable the specialization switch."],
+									get = function(key)
+										return SV.db.SVGear.specialization.enable
+									end,
+									set = function(key, value)
+										SV.db.SVGear.specialization.enable = value
+									end
+								},
+								primary = {
+									type = "select",
+									order = 2,
+									name = L["Primary Talent"],
+									desc = L["Choose the equipment set to use for your primary specialization."],
+									disabled = function()
+										return not SV.db.SVGear.specialization.enable
+									end,
+									values = function()
+										local h = {["none"] = L["No Change"]}
+										for i = 1, GetNumEquipmentSets()do
+											local name = GetEquipmentSetInfo(i)
+											if name then
+												h[name] = name
+											end
 										end
-										tsort(h,sortingFunction)
+										tsort(h, sortingFunction)
 										return h
 									end
 								},
-								secondary={
-									type="select",
-									order=3,
-									name=L["Secondary Talent"],
-									desc=L["Choose the equipment set to use for your secondary specialization."],
-									disabled=function()return not SV.db.SVGear.specialization.enable end,
-									values=function()
-										local h={["none"]=L["No Change"]}
-										for i=1,GetNumEquipmentSets()do
-											local name,l,l,l,l,l,l,l,l=GetEquipmentSetInfo(i)
-											if name then h[name]=name end
+								secondary = {
+									type = "select",
+									order = 3,
+									name = L["Secondary Talent"],
+									desc = L["Choose the equipment set to use for your secondary specialization."],
+									disabled = function() return not SV.db.SVGear.specialization.enable end,
+									values = function()
+										local h = {["none"] = L["No Change"]}
+										for i = 1, GetNumEquipmentSets()do
+											local name = GetEquipmentSetInfo(i)
+											if name then h[name] = name end
 										end
-										tsort(h,sortingFunction)
+										tsort(h, sortingFunction)
 										return h
 									end
 								}
-
 							}
 						},
 						battleground = {
@@ -753,7 +756,7 @@ SV.Options.args.common = {
 											local name = GetEquipmentSetInfo(i)
 											if name then h[name] = name end
 										end
-										tsort(h,sortingFunction)
+										tsort(h, sortingFunction)
 										return h
 									end
 								}
@@ -770,7 +773,7 @@ SV.Options.args.common = {
 							guiInline = true,
 							order = 5,
 							get = function(e)return SV.db.SVGear.durability[e[#e]]end,
-							set = function(e,value)SV.db.SVGear.durability[e[#e]] = value;GEAR:ReLoad()end,
+							set = function(e,value)SV.db.SVGear.durability[e[#e]] = value; SV.SVGear:ReLoad()end,
 							args = {
 								enable = {
 									type = "toggle",
@@ -798,7 +801,7 @@ SV.Options.args.common = {
 							guiInline = true,
 							order = 7,
 							get = function(e)return SV.db.SVGear.itemlevel[e[#e]]end,
-							set = function(e,value)SV.db.SVGear.itemlevel[e[#e]] = value;GEAR:ReLoad()end,
+							set = function(e,value)SV.db.SVGear.itemlevel[e[#e]] = value; SV.SVGear:ReLoad()end,
 							args = {
 								enable = {
 									type = "toggle",
@@ -824,7 +827,7 @@ SV.Options.args.common = {
 									desc = L["Show the associated equipment sets for the items in your bags (or bank)."],
 									set = function(e,value)
 										SV.db.SVGear.misc[e[#e]] = value;
-										BAG:ToggleEquipmentOverlay()
+										SV.SVBag:ToggleEquipmentOverlay()
 									end
 								}
 							}
@@ -836,41 +839,6 @@ SV.Options.args.common = {
 	}
 };

-local q, r, community, dnt = "", "", "", "";
-local s = "\n";
-local p = "\n"..format("|cff4f4f4f%s|r", "---------------------------------------------");
-local t = {"Munglunch", "Elv", "Tukz", "Azilroka", "Sortokk", "Kkthnx", "AlleyKat", "Quokka", "Haleth", "P3lim", "Haste", "Totalpackage", "Kryso", "Thepilli"};
-local u = {"Sinnisterr - (My wife, the MOST ruthless Warlock you will ever meet)", "Doonga - (The man who keeps me busy)", "Daigan - (My current 2nd in command)", "Penguinsane - (Tester extraordinaire)", "FaolanKing - (King of the bug report portal)"};
-local v = {"Movster", "Cazart506", "FaolanKing", "Doonga", "Other Silent Partners.. (Let me know if I have forgotten you)"};
-local w = {"Wowinterface Community", "Judicate", "Cazart506", "Movster", "MuffinMonster", "Joelsoul", "Trendkill09", "Luamar", "Zharooz", "Lyn3x5", "Madh4tt3r", "Xarioth", "Melonmaniac", "Hojowameeat", "Xandeca", "Bkan", "AtomicKiller", "Meljen", "Moondoggy", "Stormblade", "Schreibstift", "Anj", "Risien", "Cromax", "Nitro_Turtle", "Shinzou", "Autolykus", "Taotao"};
-local credit_header = format("|cffff9900%s|r", "SUPERVILLAIN CREDITS:")..p;
-local credit_sub = format("|cffff9900%s|r", "CREATED BY:").."  Munglunch"..p;
-local credit_sub2 = format("|cffff9900%s|r", "CODE GRANTS BY:").."  Elv, Tukz, Azilroka, Sortokk"..p;
-local special_thanks = format("|cffff9900%s|r", "SPECIAL THANKS TO:  ")..format("|cfff81422%s|r |cff2288cc(@WowInterface.com)|r", "Cairenn").."  ..the most patient and accomodating person I know!\n\n"..format("|cffff9900%s|r", "A VERY SPECIAL THANKS TO:  ")..format("|cffffff00%s|r", "Movster").."  ..who inspired me to bring this project back to life!"..p;
-local coding = format("|cff3399ff%s|r", L['CODE MONKEYS  (aka CONTRIBUTORS):'])..p;
-local testing = format("|cffaa33ff%s|r", L['PERFECTIONISTS  (aka CORE TESTING TEAM):'])..p;
-local testing2 = format("|cffaa33ff%s|r", L['MINIONS  (aka COMMUNITY TESTERS):'])..p;
-local doners = format("|cff99ff33%s|r", L['KINGPINS  (aka INVESTORS):'])..p;
-local music = format("|cff00ccff%s|r", 'Theme Song By: Fingathing [taken from the song: SuperHero Music]');
-
-for _, x in pairs(t) do
-	q = q..s..x
-end
-
-for _, x in pairs(u) do
-	r = r..s..x
-end
-
-for _, x in pairs(v) do
-	dnt = dnt..s..x
-end
-
-for _, x in pairs(w) do
-	community = community..s..x
-end
-
-local creditsString = credit_header..'\n'..credit_sub..'\n'..credit_sub2..'\n'..special_thanks..'\n\n'..coding..q..'\n\n'..testing..r..'\n\n'..testing2..community..'\n\n'..doners..dnt..'\n\n'..music..'\n\n';
-
 SV.Options.args.credits = {
 	type = "group",
 	name = L["Credits"],
@@ -879,7 +847,7 @@ SV.Options.args.credits = {
 		new = {
 			order = 1,
 			type = "description",
-			name = creditsString
+			name = SV.Credits
 		}
 	}
 }
\ No newline at end of file
diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
index bd7d1d6..5656547 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua
@@ -98,9 +98,9 @@ function PLUGIN:LoadAlert(MainText, Function)
 end

 function PLUGIN:Style(style, fn, ...)
-	local pass, error = pcall(fn, ...)
-	if(self.Debugging and error) then
-		SV:Debugger(errorMessage:format(VERSION, style, error))
+	local pass, catch = pcall(fn, ...)
+	if(catch and self.Debugging) then
+		SV:Debugger(errorMessage:format(VERSION, style, catch))
 		return
 	end
 	if(pass and (not style:find("Blizzard")) and not self.StyledAddons[style]) then
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
index db59c68..07ce3ac 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/encounterjournal.lua
@@ -125,7 +125,7 @@ local function EncounterJournalStyle()
   EncounterJournalEncounterFrameInfoBossesScrollFrame:RemoveTextures(true)
   EncounterJournalInstanceSelectDungeonTab:RemoveTextures(true)
   EncounterJournalInstanceSelectRaidTab:RemoveTextures(true)
-  ChangeTabHelper(EncounterJournalEncounterFrameInfoBossTab)
+  ChangeTabHelper(EncounterJournalEncounterFrameInfoOverviewTab)
   ChangeTabHelper(EncounterJournalEncounterFrameInfoLootTab, 0, -10)

   EncounterJournalSearchResults:RemoveTextures(true)
diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
index dcac39d..d3e44a3 100644
--- a/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
+++ b/Interface/AddOns/SVUI_StyleOMatic/components/blizzard/system.lua
@@ -256,8 +256,11 @@ local SystemFrameList16 ={
 	"CombatPanelLossOfControlInterruptDropDown",
 	"CombatPanelLossOfControlDisarmDropDown",
 	"CombatPanelLossOfControlRootDropDown",
+	"CombatTextPanelTargetModeDropDown",
 	"DisplayPanelAggroWarningDisplay",
 	"DisplayPanelWorldPVPObjectiveDisplay",
+	"DisplayPanelOutlineDropDown",
+	"ObjectivesPanelQuestSorting",
 	"SocialPanelChatStyle",
 	"SocialPanelWhisperMode",
 	"SocialPanelTimestamps",
@@ -270,6 +273,7 @@ local SystemFrameList16 ={
 	"CameraPanelStyleDropDown",
 	"MousePanelClickMoveStyleDropDown",
 	"LanguagesPanelLocaleDropDown",
+	"LanguagesPanelAudioLocaleDropDown",
 	"StatusTextPanelDisplayDropDown"
 };
 local SystemFrameList17 = {
@@ -298,12 +302,13 @@ local SystemFrameList17 = {
 	"NetworkOptionsPanelAdvancedCombatLogging"
 };
 local SystemFrameList18 = {
-	"Graphics_DisplayModeDropDown",
-	"Graphics_ResolutionDropDown",
-	"Graphics_RefreshDropDown",
-	"Graphics_PrimaryMonitorDropDown",
-	"Graphics_MultiSampleDropDown",
-	"Graphics_VerticalSyncDropDown",
+	"Display_AntiAliasingDropDown",
+	"Display_DisplayModeDropDown",
+	"Display_ResolutionDropDown",
+	"Display_RefreshDropDown",
+	"Display_PrimaryMonitorDropDown",
+	"Display_MultiSampleDropDown",
+	"Display_VerticalSyncDropDown",
 	"Graphics_TextureResolutionDropDown",
 	"Graphics_FilteringDropDown",
 	"Graphics_ProjectedTexturesDropDown",
@@ -315,6 +320,7 @@ local SystemFrameList18 = {
 	"Graphics_SunshaftsDropDown",
 	"Graphics_ParticleDensityDropDown",
 	"Graphics_SSAODropDown",
+	"Graphics_RefractionDropDown",
 	"Advanced_BufferingDropDown",
 	"Advanced_LagDropDown",
 	"Advanced_HardwareCursorDropDown",
diff --git a/Interface/PaperDollInfoFrame/UI-Character-ScrollBar.blp b/Interface/PaperDollInfoFrame/UI-Character-ScrollBar.blp
index e5ee23a..6624970 100644
Binary files a/Interface/PaperDollInfoFrame/UI-Character-ScrollBar.blp and b/Interface/PaperDollInfoFrame/UI-Character-ScrollBar.blp differ
diff --git a/Interface/PaperDollInfoFrame/UI-Character-Skills-BarBorder.blp b/Interface/PaperDollInfoFrame/UI-Character-Skills-BarBorder.blp
index 103fb70..f7a381e 100644
Binary files a/Interface/PaperDollInfoFrame/UI-Character-Skills-BarBorder.blp and b/Interface/PaperDollInfoFrame/UI-Character-Skills-BarBorder.blp differ
diff --git a/Interface/PaperDollInfoFrame/UI-GearManager-Border.blp b/Interface/PaperDollInfoFrame/UI-GearManager-Border.blp
new file mode 100644
index 0000000..02b5f22
Binary files /dev/null and b/Interface/PaperDollInfoFrame/UI-GearManager-Border.blp differ
diff --git a/Interface/PaperDollInfoFrame/UI-GearManager-Collapsed.blp b/Interface/PaperDollInfoFrame/UI-GearManager-Collapsed.blp
new file mode 100644
index 0000000..d592fd9
Binary files /dev/null and b/Interface/PaperDollInfoFrame/UI-GearManager-Collapsed.blp differ
diff --git a/Interface/PaperDollInfoFrame/UI-GearManager-FlyoutButton.blp b/Interface/PaperDollInfoFrame/UI-GearManager-FlyoutButton.blp
index 9d9be9f..7158d2e 100644
Binary files a/Interface/PaperDollInfoFrame/UI-GearManager-FlyoutButton.blp and b/Interface/PaperDollInfoFrame/UI-GearManager-FlyoutButton.blp differ
diff --git a/Interface/PaperDollInfoFrame/UI-GearManager-Title-Background.blp b/Interface/PaperDollInfoFrame/UI-GearManager-Title-Background.blp
new file mode 100644
index 0000000..e723167
Binary files /dev/null and b/Interface/PaperDollInfoFrame/UI-GearManager-Title-Background.blp differ