Quantcast

Fixed shaman/mage/pally/rogue resources

failcoder [07-27-16 - 20:39]
Fixed shaman/mage/pally/rogue resources

Nameplates are usable again though for now they are very stripped down
inventory bugs fixed
added all the new power types to color options
other misc bugs fixed
Filename
SVUI_!Core/SVUI_!Core.toc
SVUI_!Core/system/overrides.lua
SVUI_!Options/SVUI_!Options.toc
SVUI_!Options/UnitFrames.lua
SVUI_ActionBars/SVUI_ActionBars.toc
SVUI_Auras/SVUI_Auras.toc
SVUI_Chat/SVUI_Chat.toc
SVUI_Inventory/SVUI_Inventory.toc
SVUI_Maps/SVUI_Maps.toc
SVUI_NamePlates/SVUI_NamePlates.lua
SVUI_NamePlates/SVUI_NamePlates.toc
SVUI_QuestTracker/SVUI_QuestTracker.toc
SVUI_Skins/SVUI_Skins.toc
SVUI_Skins/components/blizzard/pvp.lua
SVUI_Skins/components/blizzard/system.lua
SVUI_Skins/components/blizzard/talents.lua
SVUI_Tooltip/SVUI_Tooltip.toc
SVUI_UnitFrames/Loader.lua
SVUI_UnitFrames/SVUI_UnitFrames.toc
SVUI_UnitFrames/class_resources/deathknight.lua
SVUI_UnitFrames/class_resources/mage.lua
SVUI_UnitFrames/class_resources/priest.lua
SVUI_UnitFrames/class_resources/shaman.lua
SVUI_UnitFrames/class_resources/warrior.lua
SVUI_UnitFrames/elements/essentials.lua
SVUI_UnitFrames/frames.lua
SVUI_UnitFrames/libs/Plugins/oUF_Maelstrom/oUF_Maelstrom.lua
SVUI_UnitFrames/libs/Plugins/oUF_Necromancy/oUF_Necromancy.lua
SVUI_UnitFrames/libs/_load.xml
diff --git a/SVUI_!Core/SVUI_!Core.toc b/SVUI_!Core/SVUI_!Core.toc
index 253d7ad..f8a15b3 100644
--- a/SVUI_!Core/SVUI_!Core.toc
+++ b/SVUI_!Core/SVUI_!Core.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cff00FF00!Core|r
 ## Notes: SVUI [|cff9911FFCore Framework|r].
 ## SavedVariables: SVUI_Global, SVUI_Errors, SVUI_Filters, SVUI_Media, SVUI_Shared
diff --git a/SVUI_!Core/system/overrides.lua b/SVUI_!Core/system/overrides.lua
index 6bc2d70..d27d9a0 100644
--- a/SVUI_!Core/system/overrides.lua
+++ b/SVUI_!Core/system/overrides.lua
@@ -1123,4 +1123,4 @@ local function SetOverrides()
 	AlterBlizzMainBar()
 end

-SV:NewScript(SetOverrides)
+SV:NewScript(SetOverrides)
\ No newline at end of file
diff --git a/SVUI_!Options/SVUI_!Options.toc b/SVUI_!Options/SVUI_!Options.toc
index 601873b..54e3a20 100644
--- a/SVUI_!Options/SVUI_!Options.toc
+++ b/SVUI_!Options/SVUI_!Options.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cff00FF00!Options|r
 ## Notes: SVUI [|cff9911FFConfig Options|r]
 ## RequiredDeps: SVUI_!Core
diff --git a/SVUI_!Options/UnitFrames.lua b/SVUI_!Options/UnitFrames.lua
index 987d925..8b12ae9 100644
--- a/SVUI_!Options/UnitFrames.lua
+++ b/SVUI_!Options/UnitFrames.lua
@@ -2407,6 +2407,28 @@ SVUIOptions.FilterOptionSpells['PetBuffWatch'] = function(selectedSpell)
 	return RESULT;
 end;

+local function GetPowerColorOptions()
+	local args = {};
+	local count = 1;
+	for power, color in next, SV.media.extended.unitframes.power do
+		args[power] = {
+			order = count,
+			name = power,
+			type = "color",
+			get = function(key)
+				local color = SV.media.extended.unitframes.power[power]
+				return color[1],color[2],color[3]
+			end,
+			set = function(key, rValue, gValue, bValue)
+				SV.media.extended.unitframes.power[power] = {rValue, gValue, bValue}
+				MOD:RefreshAllUnitMedia()
+			end,
+		};
+		count = count + 1;
+	end
+	return args;
+end;
+
 SV.Options.args[Schema] = {
 	type = "group",
 	name = Schema,
@@ -2696,73 +2718,7 @@ SV.Options.args[Schema] = {
 									type = "group",
 									guiInline = true,
 									name = L["Powers"],
-									args = {
-										MANA = {
-											order = 1,
-											name = MANA,
-											type = "color",
-											get = function(key)
-												local color = SV.media.extended.unitframes.power["MANA"]
-												return color[1],color[2],color[3]
-											end,
-											set = function(key, rValue, gValue, bValue)
-												SV.media.extended.unitframes.power["MANA"] = {rValue, gValue, bValue}
-												MOD:RefreshAllUnitMedia()
-											end,
-										},
-										RAGE = {
-											order = 2,
-											name = RAGE,
-											type = "color",
-											get = function(key)
-												local color = SV.media.extended.unitframes.power["RAGE"]
-												return color[1],color[2],color[3]
-											end,
-											set = function(key, rValue, gValue, bValue)
-												SV.media.extended.unitframes.power["RAGE"] = {rValue, gValue, bValue}
-												MOD:RefreshAllUnitMedia()
-											end,
-										},
-										FOCUS = {
-											order = 3,
-											name = FOCUS,
-											type = "color",
-											get = function(key)
-												local color = SV.media.extended.unitframes.power["FOCUS"]
-												return color[1],color[2],color[3]
-											end,
-											set = function(key, rValue, gValue, bValue)
-												SV.media.extended.unitframes.power["FOCUS"] = {rValue, gValue, bValue}
-												MOD:RefreshAllUnitMedia()
-											end,
-										},
-										ENERGY = {
-											order = 4,
-											name = ENERGY,
-											type = "color",
-											get = function(key)
-												local color = SV.media.extended.unitframes.power["ENERGY"]
-												return color[1],color[2],color[3]
-											end,
-											set = function(key, rValue, gValue, bValue)
-												SV.media.extended.unitframes.power["ENERGY"] = {rValue, gValue, bValue}
-												MOD:RefreshAllUnitMedia()
-											end,
-										},
-										RUNIC_POWER = {
-											order = 5,
-											name = RUNIC_POWER,
-											type = "color",
-											get = function(key)
-												local color = SV.media.extended.unitframes.power["RUNIC_POWER"]
-												return color[1],color[2],color[3]
-											end,
-											set = function(key, rValue, gValue, bValue)
-												SV.media.extended.unitframes.power["RUNIC_POWER"] = {rValue, gValue, bValue}
-												MOD:RefreshAllUnitMedia()
-											end,
-										}
-									}
+									args = GetPowerColorOptions()
 								},
 								castBars = {
 									order = 11,
diff --git a/SVUI_ActionBars/SVUI_ActionBars.toc b/SVUI_ActionBars/SVUI_ActionBars.toc
index 48718f0..df2a197 100644
--- a/SVUI_ActionBars/SVUI_ActionBars.toc
+++ b/SVUI_ActionBars/SVUI_ActionBars.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Action Bars|r
 ## Notes: Action Bar Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0, LibActionButton-1.0
diff --git a/SVUI_Auras/SVUI_Auras.toc b/SVUI_Auras/SVUI_Auras.toc
index bcf748b..e88f287 100644
--- a/SVUI_Auras/SVUI_Auras.toc
+++ b/SVUI_Auras/SVUI_Auras.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Auras|r
 ## Notes: Aura Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_Chat/SVUI_Chat.toc b/SVUI_Chat/SVUI_Chat.toc
index f6e9e4e..80485fc 100644
--- a/SVUI_Chat/SVUI_Chat.toc
+++ b/SVUI_Chat/SVUI_Chat.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Chat|r
 ## Notes: Chat Plugin for [|cff9911FFSVUI|r].
 ## SavedVariables: SVUI_Global_ChatCache
diff --git a/SVUI_Inventory/SVUI_Inventory.toc b/SVUI_Inventory/SVUI_Inventory.toc
index 261d059..da92fe2 100644
--- a/SVUI_Inventory/SVUI_Inventory.toc
+++ b/SVUI_Inventory/SVUI_Inventory.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Inventory|r
 ## Notes: Inventory Plugin for [|cff9911FFSVUI|r].
 ## SavedVariables: SVUI_LootCache
diff --git a/SVUI_Maps/SVUI_Maps.toc b/SVUI_Maps/SVUI_Maps.toc
index 6db48d1..697c4a2 100644
--- a/SVUI_Maps/SVUI_Maps.toc
+++ b/SVUI_Maps/SVUI_Maps.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Maps|r
 ## Notes: Maps Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_NamePlates/SVUI_NamePlates.lua b/SVUI_NamePlates/SVUI_NamePlates.lua
index 1336369..58481f9 100644
--- a/SVUI_NamePlates/SVUI_NamePlates.lua
+++ b/SVUI_NamePlates/SVUI_NamePlates.lua
@@ -51,7 +51,7 @@ LOCAL VARS
 ##########################################################
 ]]--
 local PlateRegistry, VisiblePlates = {}, {};
-local _hook_NamePlateDriverMixin, PlateForge;
+local _hook_NamePlateDriverMixin, PlateForge, PlateUpdate;
 local CURRENT_TARGET_NAME;
 local TARGET_CHECKS = 0;
 local PLATE_TOP = MOD.media.topArt;
@@ -76,16 +76,21 @@ function _hook_NamePlateDriverMixin(self, event, ...)
 		local frame = ...;
 		if(not PlateRegistry[frame]) then
 			PlateForge(frame)
+		else
+			PlateUpdate(frame)
 		end
 	elseif event == "NAME_PLATE_UNIT_ADDED" then
 		local namePlateUnitToken = ...;
 		local frame = C_NamePlate.GetNamePlateForUnit(namePlateUnitToken);
 		if(not PlateRegistry[frame]) then
 			PlateForge(frame)
+		else
+			PlateUpdate(frame)
 		end
 	elseif event == "NAME_PLATE_UNIT_REMOVED" then
-		-- local namePlateUnitToken = ...;
-		-- DO STUFF
+		local namePlateUnitToken = ...;
+		local frame = C_NamePlate.GetNamePlateForUnit(namePlateUnitToken);
+		PlateUpdate(frame)
 	elseif event == "PLAYER_TARGET_CHANGED" then
 		-- DO STUFF
 	elseif event == "DISPLAY_SIZE_CHANGED" then
@@ -96,24 +101,26 @@ function _hook_NamePlateDriverMixin(self, event, ...)
 		-- DO STUFF
 	end
 end
---[[
-##########################################################
-SCRIPT HANDLERS
-##########################################################
-]]--
-function PlateForge(source)
+
+function PlateUpdate(source)
 	local plate = source.UnitFrame;
 	if(not plate) then return end;
-
-	plate.healthBar:SetStyle("Frame", "Bar")
 	plate.healthBar:SetStatusBarTexture(NPBarTex)
-	plate.castBar:SetStyle("Frame", 'Bar')
 	plate.castBar:SetStatusBarTexture(NPBarTex)
 	plate.name:SetFontObject(SVUI_Font_NamePlate)
 	plate.name:SetTextColor(1, 1, 1)
+end
+
+function PlateForge(source)
+	local plate = source.UnitFrame;
+	if(not plate) then return end;
+
+	plate.healthBar:SetStyle("Frame", "Bar")
+	plate.castBar:SetStyle("Frame", 'Bar')

 	VisiblePlates[plate] = true
 	PlateRegistry[source] = true;
+	PlateUpdate(source)
 end
 --[[
 ##########################################################
@@ -197,5 +204,11 @@ function MOD:Load()
 	self:RegisterEvent("PLAYER_ENTERING_WORLD")
 	self:RegisterEvent("PLAYER_TARGET_CHANGED")
 	NamePlateDriverFrame:HookScript("OnEvent", _hook_NamePlateDriverMixin)
+
+	if (ClassNameplateManaBarFrame) then
+		ClassNameplateManaBarFrame:SetStyle("Frame", "Bar")
+		ClassNameplateManaBarFrame:SetStatusBarTexture(SV.media.statusbar.glow)
+	end
+
 	self:CombatToggle(true)
 end
diff --git a/SVUI_NamePlates/SVUI_NamePlates.toc b/SVUI_NamePlates/SVUI_NamePlates.toc
index b44b414..e24c6b5 100644
--- a/SVUI_NamePlates/SVUI_NamePlates.toc
+++ b/SVUI_NamePlates/SVUI_NamePlates.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00NamePlates|r
 ## Notes: NamePlates Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_QuestTracker/SVUI_QuestTracker.toc b/SVUI_QuestTracker/SVUI_QuestTracker.toc
index 3dbe249..3a4b2e4 100644
--- a/SVUI_QuestTracker/SVUI_QuestTracker.toc
+++ b/SVUI_QuestTracker/SVUI_QuestTracker.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00QuestTracker|r
 ## Notes: QuestTracker Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_Skins/SVUI_Skins.toc b/SVUI_Skins/SVUI_Skins.toc
index b909d7f..df702a7 100644
--- a/SVUI_Skins/SVUI_Skins.toc
+++ b/SVUI_Skins/SVUI_Skins.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch, Azilroka, Sortokk
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Skins|r
 ## Notes: SVUI [|cff9911FFSkins System and AddOn Frames|r].
 ## SavedVariables: SVUIUI_STYLE_GLOBAL
diff --git a/SVUI_Skins/components/blizzard/pvp.lua b/SVUI_Skins/components/blizzard/pvp.lua
index f80bec5..b2ad24a 100644
--- a/SVUI_Skins/components/blizzard/pvp.lua
+++ b/SVUI_Skins/components/blizzard/pvp.lua
@@ -62,9 +62,9 @@ local function PVPFrameStyle()
 	HonorFrame.BonusFrame.RandomBGButton:SetStyle("Button")
 	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:InsetPoints()
 	HonorFrame.BonusFrame.RandomBGButton.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
-
 	HonorFrame.BonusFrame.DiceButton:DisableDrawLayer("ARTWORK")
 	HonorFrame.BonusFrame.DiceButton:SetHighlightTexture("")
+
 	HonorFrame.RoleInset:RemoveTextures()
 	HonorFrame.RoleInset.DPSIcon.checkButton:SetStyle("CheckButton")
 	HonorFrame.RoleInset.TankIcon.checkButton:SetStyle("CheckButton")
diff --git a/SVUI_Skins/components/blizzard/system.lua b/SVUI_Skins/components/blizzard/system.lua
index ea646f0..e985fa8 100644
--- a/SVUI_Skins/components/blizzard/system.lua
+++ b/SVUI_Skins/components/blizzard/system.lua
@@ -172,7 +172,7 @@ local SystemFrameList15 = {
 	"NamesPanelUnitNameplatesMakeLarger",
 	"NamesPanelUnitNameplatesShowAll",
 	"NamesPanelUnitNameplatesAggroFlash",
-	"NamesPanelUnitNameplatesFriends",
+	--"NamesPanelUnitNameplatesFriends",
 	"NamesPanelUnitNameplatesFriendlyGuardians",
 	"NamesPanelUnitNameplatesFriendlyPets",
 	"NamesPanelUnitNameplatesFriendlyTotems",
@@ -187,7 +187,7 @@ local SystemFrameList15 = {
 	"NamesPanelEnemyGuardians",
 	"NamesPanelEnemyTotems",
 	"NamesPanelUnitNameplatesEnemyPets",
-	"NamesPanelUnitNameplatesEnemies",
+	--"NamesPanelUnitNameplatesEnemies",
 	"NamesPanelUnitNameplatesEnemyGuardians",
 	"NamesPanelUnitNameplatesEnemyTotems",
 	"NamesPanelUnitNameplatesEnemyMinus",
diff --git a/SVUI_Skins/components/blizzard/talents.lua b/SVUI_Skins/components/blizzard/talents.lua
index a2f9e51..7d3c636 100644
--- a/SVUI_Skins/components/blizzard/talents.lua
+++ b/SVUI_Skins/components/blizzard/talents.lua
@@ -103,7 +103,8 @@ local function TalentFrameStyle()
 	SV.API:Set("Window", PlayerTalentFrame)
 	PlayerTalentFrameInset:RemoveTextures()
 	PlayerTalentFrameTalents:RemoveTextures()
-	--PlayerTalentFrameSpecialization:RemoveTextures()
+	PlayerTalentFrameSpecialization:DisableDrawLayer("BORDER")
+	PlayerTalentFramePetSpecialization:DisableDrawLayer("BORDER")
 	PlayerTalentFrameSpecializationTutorialButton:Die()
 	PlayerTalentFrameTalentsTutorialButton:Die()
 	PlayerTalentFramePetSpecializationTutorialButton:Die()
@@ -111,8 +112,13 @@ local function TalentFrameStyle()
 	PlayerTalentFrame.Panel:SetPoint("BOTTOMRIGHT", PlayerTalentFrame, "BOTTOMRIGHT", 0, -5)

 	PlayerTalentFrameTalents:SetStyle("!_Frame", "Inset")
-	PlayerTalentFrameSpecialization:SetStyle("!_Frame", "Inset")
+	PlayerTalentFrameSpecialization:SetStyle("Frame", "Inset")
+	PlayerTalentFrameSpecialization.Panel:SetPoint("TOPLEFT", PlayerTalentFrameSpecialization, "TOPLEFT", 0, 4)
+	PlayerTalentFrameSpecialization.Panel:SetPoint("BOTTOMRIGHT", PlayerTalentFrameSpecialization, "BOTTOMRIGHT", 3, 0)
 	PlayerTalentFramePetSpecialization:SetStyle("!_Frame", "Inset")
+	PlayerTalentFramePetSpecialization.Panel:SetPoint("TOPLEFT", PlayerTalentFramePetSpecialization, "TOPLEFT", 0, 4)
+	PlayerTalentFramePetSpecialization.Panel:SetPoint("BOTTOMRIGHT", PlayerTalentFramePetSpecialization, "BOTTOMRIGHT", 3, 0)
+
 	SV.API:Set("CloseButton", PlayerTalentFrameCloseButton)
 	SV.API:Set("ScrollBar", PlayerTalentFrameSpecializationSpellScrollFrameScrollBar, 5)
 	SV.API:Set("ScrollBar", PlayerTalentFramePetSpecializationSpellScrollFrameScrollBar, 5)
@@ -130,34 +136,6 @@ local function TalentFrameStyle()
 		end
 	end

--- PlayerTalentFrameSpecializationSpellScrollFrameScrollBar
-	-- PlayerTalentFrameTalentsClearInfoFrame.icon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-	-- PlayerTalentFrameTalentsClearInfoFrame:SetWidth(PlayerTalentFrameTalentsClearInfoFrame:GetWidth()-2)
-	-- PlayerTalentFrameTalentsClearInfoFrame:SetHeight(PlayerTalentFrameTalentsClearInfoFrame:GetHeight()-2)
-	-- PlayerTalentFrameTalentsClearInfoFrame.icon:SetSize(PlayerTalentFrameTalentsClearInfoFrame:GetSize())
-	-- PlayerTalentFrameTalentsClearInfoFrame:SetPoint('TOPLEFT', PlayerTalentFrameTalents, 'BOTTOMLEFT', 8, -8)
-
-	-- hooksecurefunc("PlayerTalentFrame_UpdateTabs", function()
-	-- 	for i = 1, 4 do
-	-- 		local d, e, k, g = _G["PlayerTalentFrameTab"..i]:GetPoint()
-	-- 		_G["PlayerTalentFrameTab"..i]:SetPoint(d, e, k, g, -4)
-	-- 	end
-	-- end)
-
-	-- PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetColorTexture(1, 1, 1)
-	-- PlayerTalentFrameSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
-
-	-- for i = 1, 2 do
-	-- 	local v = _G["PlayerSpecTab"..i]
-	-- 	_G["PlayerSpecTab"..i.."Background"]:Die()
-	-- 	ChangeTabHelper(v)
-	-- end
-
-	-- hooksecurefunc("PlayerTalentFrame_UpdateSpecs", function()
-	-- 	local d, x, f, g, h = PlayerSpecTab1:GetPoint()
-	-- 	PlayerSpecTab1:SetPoint(d, x, f, -1, h)
-	-- end)
-
 	local maxTiers = 7

 	for i = 1, 7 do
@@ -198,140 +176,45 @@ local function TalentFrameStyle()
 		end
 	end)

-	-- for b = 1, 5 do
-	-- 	 select(b, PlayerTalentFrameSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
-	-- end
-
-	-- local C = _G["PlayerTalentFrameSpecializationSpellScrollFrameScrollChild"]
-	-- C.ring:Hide()
-	-- C:SetStyle("!_Frame", "Inset")
-	-- C.Panel:WrapPoints(C.specIcon)
-	-- C.specIcon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-
-	-- local D = _G["PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild"]
-	-- D.ring:Hide()
-	-- D:SetStyle("!_Frame", "Inset")
-	-- D.Panel:WrapPoints(D.specIcon)
-	-- D.specIcon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-
-	-- hooksecurefunc("PlayerTalentFrame_UpdateSpecFrame", function(self, arg1)
-	-- 	local arg2 = GetSpecialization(nil, self.isPet, PlayerSpecTab2:GetChecked() and 2 or 1)
-	-- 	local spec = arg1 or arg2 or 1;
-	-- 	local arg3, _, _, icon = GetSpecializationInfo(spec, nil, self.isPet)
-	-- 	local scrollChild = self.spellsScroll.child;
-	-- 	scrollChild.specIcon:SetTexture(icon)
-
-	-- 	local cache;
-	-- 	if self.isPet then
-	-- 		cache = { GetSpecializationSpells(spec, nil, self.isPet) }
-	-- 	else
-	-- 		 cache = SPEC_SPELLS_DISPLAY[arg3]
-	-- 	end
-
-	-- 	local indexOffset = 1;
-	-- 	for i = 1, #cache, 2 do
-	-- 		local button = scrollChild["abilityButton" .. indexOffset]
-	-- 		if(button) then
-	-- 			local _, icon = GetSpellTexture(cache[i])
-	-- 			button.icon:SetTexture(icon)
-	-- 			if not button.restyled then
-	-- 				button.restyled = true;
-	-- 				button:SetSize(30, 30)
-	-- 				button.ring:Hide()
-	-- 				button:SetStyle("!_Frame", "Inset")
-	-- 				button.icon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-	-- 				button.icon:InsetPoints()
-	-- 			end
-	-- 		end
-	-- 		indexOffset = indexOffset + 1
-	-- 	end
-
-	-- 	for i = 1, GetNumSpecializations(nil, self.isPet)do
-	-- 		local specButton = self["specButton"..i]
-	-- 		if(specButton) then
-	-- 			specButton.SelectedTexture:InsetPoints(specButton.Panel)
-	-- 			if specButton.selected then
-	-- 				 specButton.SelectedTexture:Show()
-	-- 			else
-	-- 				 specButton.SelectedTexture:Hide()
-	-- 			end
-	-- 		end
-	-- 	end
-	-- end)
-
-	-- for b = 1, GetNumSpecializations(false, nil)do
-	-- 	local button = PlayerTalentFrameSpecialization["specButton"..b]
-	-- 	if(button) then
-	-- 		local _, _, _, icon = GetSpecializationInfo(b, false, nil)
-	-- 		button.ring:Hide()
-	-- 		button.specIcon:SetTexture(icon)
-	-- 		button.specIcon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-	-- 		button.specIcon:SetSize(50, 50)
-	-- 		button.specIcon:SetPoint("LEFT", button, "LEFT", 15, 0)
-	-- 		button.SelectedTexture = button:CreateTexture(nil, 'ARTWORK')
-	-- 		button.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
-	-- 	end
-	-- end
-
-	-- local btnList = {
-	-- 	"PlayerTalentFrameSpecializationSpecButton", "PlayerTalentFramePetSpecializationSpecButton"
-	-- }
-
-	-- for _, gName in pairs(btnList)do
-	-- 	for b = 1, 4 do
-	-- 		local button = _G[gName..b]
-	-- 		if(button) then
-	-- 			if(_G[gName..b.."Glow"]) then _G[gName..b.."Glow"]:Die() end
-	-- 			local bTex = button:CreateTexture(nil, 'ARTWORK')
-	-- 			bTex:SetColorTexture(1, 1, 1, 0.1)
-	-- 			button:SetHighlightTexture(bTex)
-	-- 			button.bg:SetAlpha(0)
-	-- 			button.learnedTex:SetAlpha(0)
-	-- 			button.selectedTex:SetAlpha(0)
-	-- 			button:SetStyle("!_Frame", "Button")
-	-- 			button:GetHighlightTexture():InsetPoints(button.Panel)
-	-- 		end
-	-- 	end
-	-- end
-
-	-- if SV.class == "HUNTER" then
-	-- 	for b = 1, 6 do
-	-- 		 select(b, PlayerTalentFramePetSpecialization:GetRegions()):Hide()
-	-- 	end
-	-- 	for b = 1, PlayerTalentFramePetSpecialization:GetNumChildren()do
-	-- 		local O = select(b, PlayerTalentFramePetSpecialization:GetChildren())
-	-- 		if O and not O:GetName() then
-	-- 			 O:DisableDrawLayer("OVERLAY")
-	-- 		end
-	-- 	end
-	-- 	for b = 1, 5 do
-	-- 		 select(b, PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild:GetRegions()):Hide()
-	-- 	end
-	-- 	for b = 1, GetNumSpecializations(false, true)do
-	-- 		local A = PlayerTalentFramePetSpecialization["specButton"..b]
-	-- 		local p, p, p, icon = GetSpecializationInfo(b, false, true)
-	-- 		A.ring:Hide()
-	-- 		A.specIcon:SetTexture(icon)
-	-- 		A.specIcon:SetTexCoord(unpack(_G.SVUI_ICON_COORDS))
-	-- 		A.specIcon:SetSize(50, 50)
-	-- 		A.specIcon:SetPoint("LEFT", A, "LEFT", 15, 0)
-	-- 		A.SelectedTexture = A:CreateTexture(nil, 'ARTWORK')
-	-- 		A.SelectedTexture:SetColorTexture(1, 1, 0, 0.1)
-	-- 	end
-	-- 	PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetColorTexture(1, 1, 1)
-	-- 	PlayerTalentFramePetSpecializationSpellScrollFrameScrollChild.Seperator:SetAlpha(0.2)
-	-- end
-
-	-- PlayerTalentFrameSpecialization:DisableDrawLayer('ARTWORK')
-	-- PlayerTalentFrameSpecialization:DisableDrawLayer('BORDER')
-
-	-- for b = 1, PlayerTalentFrameSpecialization:GetNumChildren()do
-	-- 	local O = select(b, PlayerTalentFrameSpecialization:GetChildren())
-	-- 	if O and not O:GetName() then
-	-- 		 O:DisableDrawLayer("OVERLAY")
-	-- 	end
-	-- end
+	--[[ PVP TALENTS ]]--
+	PlayerTalentFramePVPTalents:RemoveTextures()
+	PlayerTalentFramePVPTalents.Talents:RemoveTextures()
+	PlayerTalentFramePVPTalents.Talents:SetStyle("!_Frame", "Inset")
+	for i = 1, 6 do
+		local rowFrame = PlayerTalentFramePVPTalents.Talents[("Tier%d"):format(i)]
+		if(rowFrame) then
+			if(rowFrame.Bg) then rowFrame.Bg:Hide() end
+
+			--rowFrame:DisableDrawLayer("BORDER")
+			rowFrame:RemoveTextures()
+			rowFrame.TopLine:SetPoint("TOP", 0, 4)
+			rowFrame.BottomLine:SetPoint("BOTTOM", 0, -4)
+
+			for z = 1, 3 do
+				local talentItem = rowFrame[("Talent%d"):format(z)]
+				if(talentItem) then
+					SV.API:Set("ItemButton", talentItem)
+					talentItem.Cover:SetColorTexture(0,0,0,0.4)
+				end
+			end
+		end
+	end

+	hooksecurefunc("PVPTalentFrame_Update", function()
+		for i = 1, 6 do
+			local rowFrame = PlayerTalentFramePVPTalents.Talents[("Tier%d"):format(i)]
+			for z = 1, 3 do
+				local talentItem = rowFrame[("Talent%d"):format(z)]
+				if(talentItem) then
+					if talentItem.knownSelection:IsShown() then
+						talentItem:SetBackdropBorderColor(0, 1, 0)
+					else
+			 			talentItem:SetBackdropBorderColor(0, 0, 0)
+					end
+				end
+			end
+		end
+	end)
 end
 --[[
 ##########################################################
@@ -354,7 +237,6 @@ local function GlyphStyle()

 	if(GlyphFrameClearInfoFrame and GlyphFrameClearInfoFrame.icon) then
 		GlyphFrameClearInfoFrame:RemoveTextures()
-
 		local w,h = GlyphFrameClearInfoFrame:GetSize()
 		GlyphFrameClearInfoFrame:SetSize((w - 2),(h - 2))
 		GlyphFrameClearInfoFrame:SetPoint("TOPLEFT", GlyphFrame, "BOTTOMLEFT", 6, -10)
diff --git a/SVUI_Tooltip/SVUI_Tooltip.toc b/SVUI_Tooltip/SVUI_Tooltip.toc
index f152d7b..141a52d 100644
--- a/SVUI_Tooltip/SVUI_Tooltip.toc
+++ b/SVUI_Tooltip/SVUI_Tooltip.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00Tooltip|r
 ## Notes: Tooltip Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_UnitFrames/Loader.lua b/SVUI_UnitFrames/Loader.lua
index 8a21b2b..15e80f0 100644
--- a/SVUI_UnitFrames/Loader.lua
+++ b/SVUI_UnitFrames/Loader.lua
@@ -20,15 +20,7 @@ local Schema = MOD.Schema;
 local unitframeColors = {
 	["health"]       = {0.3, 0.5, 0.3},
 	["healthBackdrop"] = {0.1, 0.1, 0.1},
-	["power"]        = {
-		["MANA"]         = {0.41, 0.85, 1},
-		["RAGE"]         = {1, 0.31, 0.31},
-		["FOCUS"]        = {1, 0.63, 0.27},
-		["ENERGY"]       = {0.85, 0.83, 0.25},
-		["RUNES"]        = {0.55, 0.57, 0.61},
-		["RUNIC_POWER"] = {0, 0.82, 1},
-		["FUEL"]         = {0, 0.75, 0.75}
-	},
+	["power"]        = { },
 	["reaction"]     = {
 		[1] = {0.92, 0.15, 0.15},
 		[2] = {0.92, 0.15, 0.15},
@@ -54,6 +46,12 @@ local unitframeColors = {
 	}
 };

+for power, color in next, PowerBarColor do
+	if(type(power) == 'string' and (not unitframeColors.power[power])) then
+		unitframeColors.power[power] = {color.r, color.g, color.b}
+	end
+end
+
 MOD.media = {}
 MOD.media.groupNumbers = {
 	[[Interface\AddOns\SVUI_UnitFrames\assets\GroupNumbers\1]],
diff --git a/SVUI_UnitFrames/SVUI_UnitFrames.toc b/SVUI_UnitFrames/SVUI_UnitFrames.toc
index f253aab..4ca8512 100644
--- a/SVUI_UnitFrames/SVUI_UnitFrames.toc
+++ b/SVUI_UnitFrames/SVUI_UnitFrames.toc
@@ -1,6 +1,6 @@
 ## Interface: 70000
 ## Author: Munglunch
-## Version: 1.3.1
+## Version: 1.3.2
 ## Title: |cffFF9900SuperVillain UI: |r|cffFFEF00UnitFrames|r
 ## Notes: UnitFrames Plugin for [|cff9911FFSVUI|r].
 ## OptionalDeps: LibSharedMedia-3.0
diff --git a/SVUI_UnitFrames/class_resources/deathknight.lua b/SVUI_UnitFrames/class_resources/deathknight.lua
index 1347d84..fa67a6b 100644
--- a/SVUI_UnitFrames/class_resources/deathknight.lua
+++ b/SVUI_UnitFrames/class_resources/deathknight.lua
@@ -46,24 +46,22 @@ SV.SpecialFX:Register("rune_unholy", [[Spells\Poison_impactdot_med_chest.m2]], 0
 SV.SpecialFX:Register("rune_death", [[Spells\Shadow_strikes_state_hand.m2]], 0, 0, 0, 0, 0.001, 0, -0.25)
 local specEffects = {
 	[1] = "rune_blood",
-	[2] = "rune_blood",
-	[3] = "rune_frost",
-	[4] = "rune_frost",
-	[5] = "rune_unholy",
-	[6] = "rune_unholy",
+	[2] = "rune_frost",
+	[3] = "rune_unholy",
+	[4] = "rune_death"
 };
 local RUNE_FG = [[Interface\AddOns\SVUI_UnitFrames\assets\Class\RUNES-FG]];
 local RUNE_BG = [[Interface\AddOns\SVUI_UnitFrames\assets\Class\RUNES-BG]];
 local runeColors = {
 	{0.75, 0, 0},   -- blood
-	{0.1, 0.75, 0},  -- unholy
 	{0, 0.75, 1},   -- frost
+	{0.1, 0.75, 0},  -- unholy
 	{1, 1, 1}, -- death
 };
 local runeTextures = {
 	[[Interface\AddOns\SVUI_UnitFrames\assets\Class\DEATHKNIGHT-BLOOD]],
-	[[Interface\AddOns\SVUI_UnitFrames\assets\Class\DEATHKNIGHT-UNHOLY]],
 	[[Interface\AddOns\SVUI_UnitFrames\assets\Class\DEATHKNIGHT-FROST]],
+	[[Interface\AddOns\SVUI_UnitFrames\assets\Class\DEATHKNIGHT-UNHOLY]],
 	[[Interface\AddOns\SVUI_UnitFrames\assets\Class\DEATHKNIGHT-DEATH]]
 };
 local runeClassic = {
@@ -83,25 +81,19 @@ local OnMove = function()
 	SV.db.UnitFrames.player.classbar.detachFromFrame = true
 end

-local RuneChange = function(self, runeType)
-	if(runeType and runeType == 7) then
-		self.FX:SetEffect("rune_death")
-	else
-		self.FX:SetEffect(specEffects[self.effectIndex])
-	end
+local RuneChange = function(self, ...)
+	local spec = GetSpecialization()
+	self.FX:SetEffect(specEffects[spec])
 end

-local ClassicRuneChange = function(self, runeType)
-	local graphic = runeTextures[runeType]
-	local colors = runeColors[runeType]
+local ClassicRuneChange = function(self, ...)
+	local spec = GetSpecialization()
+	local graphic = runeTextures[spec]
+	local colors = runeColors[spec]
 	self:SetStatusBarColor(colors[1], colors[2], colors[3])
 	self.bg:SetTexture(graphic)
 	self:SetStatusBarTexture(graphic)
-	if(runeType and runeType == 7) then
-		self.FX:SetEffect("rune_death")
-	else
-		self.FX:SetEffect(specEffects[self.effectIndex])
-	end
+	self.FX:SetEffect(specEffects[spec])
 end

 local Reposition = function(self)
@@ -112,6 +104,8 @@ local Reposition = function(self)
 	local inset = size * 0.1
 	local width = size * max;

+	local spec = GetSpecialization()
+
 	bar.Holder:SetSize(width, size)
     if(not db.classbar.detachFromFrame) then
     	SV:ResetAnchors(L["Classbar"])
@@ -126,7 +120,7 @@ local Reposition = function(self)

 	if(db.classbar.altRunes) then
 		for i = 1, max do
-			local graphic = runeClassic[i]
+			local graphic = runeTextures[spec]
 			bar[i]:ClearAllPoints()
 			bar[i]:SetHeight(size)
 			bar[i]:SetWidth(size)
diff --git a/SVUI_UnitFrames/class_resources/mage.lua b/SVUI_UnitFrames/class_resources/mage.lua
index a629fd5..69ad8ca 100644
--- a/SVUI_UnitFrames/class_resources/mage.lua
+++ b/SVUI_UnitFrames/class_resources/mage.lua
@@ -146,33 +146,33 @@ function MOD:CreateClassBar(playerFrame)
 	bgTexture:SetColorTexture(0.09,0.01,0,0.5)

 	local borderB = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderB:SetColorTexture(0,0,0)
-  borderB:SetPoint("BOTTOMLEFT")
-  borderB:SetPoint("BOTTOMRIGHT")
-  borderB:SetHeight(2)
+	borderB:SetColorTexture(0,0,0)
+	borderB:SetPoint("BOTTOMLEFT")
+	borderB:SetPoint("BOTTOMRIGHT")
+	borderB:SetHeight(2)

-  local borderT = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderT:SetColorTexture(0,0,0)
-  borderT:SetPoint("TOPLEFT")
-  borderT:SetPoint("TOPRIGHT")
-  borderT:SetHeight(2)
+	local borderT = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderT:SetColorTexture(0,0,0)
+	borderT:SetPoint("TOPLEFT")
+	borderT:SetPoint("TOPRIGHT")
+	borderT:SetHeight(2)

-  local borderL = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderL:SetColorTexture(0,0,0)
-  borderL:SetPoint("TOPLEFT")
-  borderL:SetPoint("BOTTOMLEFT")
-  borderL:SetWidth(2)
+	local borderL = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderL:SetColorTexture(0,0,0)
+	borderL:SetPoint("TOPLEFT")
+	borderL:SetPoint("BOTTOMLEFT")
+	borderL:SetWidth(2)

-  local borderR = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderR:SetColorTexture(0,0,0)
-  borderR:SetPoint("TOPRIGHT")
-  borderR:SetPoint("BOTTOMRIGHT")
-  borderR:SetWidth(2)
+	local borderR = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderR:SetColorTexture(0,0,0)
+	borderR:SetPoint("TOPRIGHT")
+	borderR:SetPoint("BOTTOMRIGHT")
+	borderR:SetWidth(2)

-  bar.bg = bgTexture;
+	bar.bg = bgTexture;


-  local ignite = CreateFrame("StatusBar", nil, bgFrame)
+	local ignite = CreateFrame("StatusBar", nil, bgFrame)
 	ignite.noupdate = true;
 	ignite:InsetPoints(bgFrame)
 	ignite:SetOrientation("HORIZONTAL")
diff --git a/SVUI_UnitFrames/class_resources/priest.lua b/SVUI_UnitFrames/class_resources/priest.lua
index 7ccc8c0..1de6e83 100644
--- a/SVUI_UnitFrames/class_resources/priest.lua
+++ b/SVUI_UnitFrames/class_resources/priest.lua
@@ -79,6 +79,7 @@ local Reposition = function(self)
 			bar[i]:SetPoint("LEFT", bar[i - 1], "RIGHT", -1, 0)
 		end
 	end
+	--print(UnitPowerType('player'))
 end
 --[[
 ##########################################################
diff --git a/SVUI_UnitFrames/class_resources/shaman.lua b/SVUI_UnitFrames/class_resources/shaman.lua
index 3ebce47..8d5032a 100644
--- a/SVUI_UnitFrames/class_resources/shaman.lua
+++ b/SVUI_UnitFrames/class_resources/shaman.lua
@@ -40,31 +40,9 @@ if(SV.class ~= "SHAMAN") then return end
 LOCALS
 ##########################################################
 ]]--
-local totemMax = MAX_TOTEMS
-local totemPriorities = SHAMAN_TOTEM_PRIORITIES or {1, 2, 3, 4};
-local totemTextures = {
-	[EARTH_TOTEM_SLOT] 	= [[Interface\Addons\SVUI_UnitFrames\assets\Class\SHAMAN-EARTH]],
-	[FIRE_TOTEM_SLOT] 	= [[Interface\Addons\SVUI_UnitFrames\assets\Class\SHAMAN-FIRE]],
-	[WATER_TOTEM_SLOT] 	= [[Interface\Addons\SVUI_UnitFrames\assets\Class\SHAMAN-WATER]],
-	[AIR_TOTEM_SLOT] 		= [[Interface\Addons\SVUI_UnitFrames\assets\Class\SHAMAN-AIR]],
-};
-
--- [[Spells\Flowingwater_high.m2]]
--- [[Spells\Cyclonewater_state.m2]]
--- [[Spells\Shaman_water_precast.m2]]
--- [[Spells\Monk_rushingjadewind_grey.m2]]
--- [[Spells\Missile_bomb.m2]]
-
-SV.SpecialFX:Register("shaman_fire", [[Spells\Bloodlust_state_hand.m2]], -8, 16, 8, -16, 0.23, 0.05, -0.1)
-SV.SpecialFX:Register("shaman_earth", [[Spells\Sand_precast_hand.m2]], -8, 16, 8, -16, 0.20, -0.04, -0.08)
-SV.SpecialFX:Register("shaman_air", [[Spells\Monk_rushingjadewind_grey.m2]], -8, 16, 8, -16, 1.8, 0, 2)
-SV.SpecialFX:Register("shaman_water", [[Spells\Flowingwater_high.m2]], -8, 16, 8, -16, 0.008, -0.02, -0.22)
-local specEffects = {
-	[EARTH_TOTEM_SLOT] 	= "shaman_earth",
-	[FIRE_TOTEM_SLOT] 	= "shaman_fire",
-	[WATER_TOTEM_SLOT] 	= "shaman_water",
-	[AIR_TOTEM_SLOT] 		= "shaman_air",
-};
+SV.SpecialFX:Register("maelstrom", [[Spells\Fill_lightning_cast_01.m2]], 0, 0, 0, 0, 1.18, 0, 0)
+SV.SpecialFX:Register("maelstrom_air", [[Spells\Monk_rushingjadewind_grey.m2]], 2, -2, -2, 2, 0.5, 0, 2)
+SV.SpecialFX:Register("maelstrom_water", [[Spells\Flowingwater_high.m2]], 2, -2, -2, 2, 0.008, -0.02, -0.22)
 --[[
 ##########################################################
 POSITIONING
@@ -76,10 +54,11 @@ end

 local Reposition = function(self)
 	local db = SV.db.UnitFrames.player
-	local bar = self.TotemBars
+	local bar = self.Maelstrom;
+	local max = self.MaxClassPower;
 	local size = db.classbar.height
-	local width = size * totemMax
-	bar.Holder:SetSize(width, size)
+	local width = size * max;
+	bar.Holder:SetSize(width, size*0.8)
     if(not db.classbar.detachFromFrame) then
     	SV:ResetAnchors(L["Classbar"])
     end
@@ -90,65 +69,81 @@ local Reposition = function(self)

     bar:ClearAllPoints()
     bar:SetAllPoints(bar.Holder)
-	for i = 1, totemMax do
-		bar[i].holder:ClearAllPoints()
-		bar[i].holder:SetHeight(size)
-		bar[i].holder:SetWidth(size)
-		bar[i]:GetStatusBarTexture():SetHorizTile(false)
-		if i==1 then
-			bar[i].holder:SetPoint("TOPLEFT", bar, "TOPLEFT", 0, 0)
-		else
-			bar[i].holder:SetPoint("LEFT", bar[i - 1].holder, "RIGHT", -1, 0)
-		end
-	end
 end
 --[[
 ##########################################################
 SHAMAN
 ##########################################################
 ]]--
-local SFXUpdate = function(self, value)
+local PostUpdate = function(self, ...)
+	local value = ...;
 	if(not value) then return end
-	if(not self.FX:IsShown()) then
-		if(value > 0.02) then
-			self.FX:Show()
-			self.FX:UpdateEffect()
+	if(value > 0) then
+		self:FadeIn()
+		if(not self.Bar.FX:IsShown()) then
+			self.Bar.FX:Show()
+			self.Bar.FX:UpdateEffect()
 		end
-	elseif(value <= 0.02) then
-		self.FX:Hide()
+	else
+		self:FadeOut()
 	end
 end

 function MOD:CreateClassBar(playerFrame)
+	local max = 6
 	local bar = CreateFrame("Frame",nil,playerFrame)
 	bar:SetFrameLevel(playerFrame.TextGrip:GetFrameLevel() + 30)
-	for i=1, totemMax do
-		local iconfile = totemTextures[totemPriorities[i]]
-		local holder = CreateFrame("Frame", nil, bar)
-		holder:SetFrameLevel(bar:GetFrameLevel() - 1)
-
-		bar[i] = CreateFrame("StatusBar",nil,holder)
-		bar[i]:SetAllPoints(holder)
-		bar[i]:SetStatusBarTexture(iconfile)
-		bar[i]:GetStatusBarTexture():SetHorizTile(false)
-		bar[i]:SetOrientation("VERTICAL")
-		bar[i]:SetFrameLevel(bar:GetFrameLevel() + 1)
-		hooksecurefunc(bar[i], "SetValue", SFXUpdate)
-		bar[i].noupdate=true;
-
-		bar[i].backdrop = holder:CreateTexture(nil,"BACKGROUND")
-		bar[i].backdrop:SetAllPoints(holder)
-		bar[i].backdrop:SetTexture(iconfile)
-		bar[i].backdrop:SetDesaturated(true)
-		bar[i].backdrop:SetVertexColor(0.2,0.2,0.2,0.7)
-
-		bar[i]:EnableMouse(true)
-
-		bar[i].holder = holder
-
-		SV.SpecialFX:SetFXFrame(bar[i], specEffects[totemPriorities[i]], true)
-		bar[i].FX:SetFrameLevel(bar:GetFrameLevel())
-	end
+
+	local bgTexture = bar:CreateTexture(nil, "BACKGROUND")
+	bgTexture:SetAllPoints(bar)
+	bgTexture:SetColorTexture(0,0.05,0.1,0.5)
+
+	local borderB = bar:CreateTexture(nil,"OVERLAY")
+	borderB:SetColorTexture(0,0,0)
+	borderB:SetPoint("BOTTOMLEFT")
+	borderB:SetPoint("BOTTOMRIGHT")
+	borderB:SetHeight(2)
+
+	local borderT = bar:CreateTexture(nil,"OVERLAY")
+	borderT:SetColorTexture(0,0,0)
+	borderT:SetPoint("TOPLEFT")
+	borderT:SetPoint("TOPRIGHT")
+	borderT:SetHeight(2)
+
+	local borderL = bar:CreateTexture(nil,"OVERLAY")
+	borderL:SetColorTexture(0,0,0)
+	borderL:SetPoint("TOPLEFT")
+	borderL:SetPoint("BOTTOMLEFT")
+	borderL:SetWidth(2)
+
+	local borderR = bar:CreateTexture(nil,"OVERLAY")
+	borderR:SetColorTexture(0,0,0)
+	borderR:SetPoint("TOPRIGHT")
+	borderR:SetPoint("BOTTOMRIGHT")
+	borderR:SetWidth(2)
+
+	bar.bg = bgTexture;
+
+	local maelBar = CreateFrame("StatusBar", nil, bar)
+	maelBar.noupdate = true;
+	maelBar:InsetPoints(bar)
+	maelBar:SetOrientation("HORIZONTAL")
+	maelBar:SetStatusBarTexture(SV.media.statusbar.gradient)
+	maelBar:SetStatusBarColor(0.2, 0.9, 1, 0.75)
+	maelBar.text = maelBar:CreateFontString(nil, "OVERLAY")
+	maelBar.text:SetPoint("LEFT")
+	maelBar.text:SetFontObject(SVUI_Font_Unit_Small)
+	maelBar.text:SetJustifyH('LEFT')
+	maelBar.text:SetTextColor(1,1,1)
+	maelBar.text:SetText("0")
+
+	SV.SpecialFX:SetFXFrame(bar, "maelstrom_air", true)
+	SV.SpecialFX:SetFXFrame(maelBar, "maelstrom", true)
+	bar.FX:SetFrameLevel(0)
+	bar.FX:SetAlpha(0.5)
+
+	bar.Bar = maelBar;
+	bar.PostUpdate = PostUpdate;

 	local classBarHolder = CreateFrame("Frame", "Player_ClassBar", bar)
 	classBarHolder:SetPoint("TOPLEFT", playerFrame, "BOTTOMLEFT", 0, -2)
@@ -156,8 +151,9 @@ function MOD:CreateClassBar(playerFrame)
 	bar.Holder = classBarHolder
 	SV:NewAnchor(bar.Holder, L["Classbar"], OnMove)

-	playerFrame.MaxClassPower = totemMax;
+	playerFrame.MaxClassPower = max
+	playerFrame.PostTalentUpdate = PostUpdate;
 	playerFrame.RefreshClassBar = Reposition;
-	playerFrame.TotemBars = bar
-	return 'TotemBars'
+	playerFrame.Maelstrom = bar
+	return 'Maelstrom'
 end
diff --git a/SVUI_UnitFrames/class_resources/warrior.lua b/SVUI_UnitFrames/class_resources/warrior.lua
index 7615ed2..e9a701c 100644
--- a/SVUI_UnitFrames/class_resources/warrior.lua
+++ b/SVUI_UnitFrames/class_resources/warrior.lua
@@ -79,40 +79,40 @@ function MOD:CreateClassBar(playerFrame)
 	bgTexture:SetColorTexture(0.2,0,0,0.5)

 	local borderB = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderB:SetColorTexture(0,0,0)
-  borderB:SetPoint("BOTTOMLEFT")
-  borderB:SetPoint("BOTTOMRIGHT")
-  borderB:SetHeight(2)
-
-  local borderT = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderT:SetColorTexture(0,0,0)
-  borderT:SetPoint("TOPLEFT")
-  borderT:SetPoint("TOPRIGHT")
-  borderT:SetHeight(2)
-
-  local borderL = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderL:SetColorTexture(0,0,0)
-  borderL:SetPoint("TOPLEFT")
-  borderL:SetPoint("BOTTOMLEFT")
-  borderL:SetWidth(2)
-
-  local borderR = bgFrame:CreateTexture(nil,"OVERLAY")
-  borderR:SetColorTexture(0,0,0)
-  borderR:SetPoint("TOPRIGHT")
-  borderR:SetPoint("BOTTOMRIGHT")
-  borderR:SetWidth(2)
-
-  bar.bg = bgTexture;
+	borderB:SetColorTexture(0,0,0)
+	borderB:SetPoint("BOTTOMLEFT")
+	borderB:SetPoint("BOTTOMRIGHT")
+	borderB:SetHeight(2)
+
+	local borderT = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderT:SetColorTexture(0,0,0)
+	borderT:SetPoint("TOPLEFT")
+	borderT:SetPoint("TOPRIGHT")
+	borderT:SetHeight(2)
+
+	local borderL = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderL:SetColorTexture(0,0,0)
+	borderL:SetPoint("TOPLEFT")
+	borderL:SetPoint("BOTTOMLEFT")
+	borderL:SetWidth(2)
+
+	local borderR = bgFrame:CreateTexture(nil,"OVERLAY")
+	borderR:SetColorTexture(0,0,0)
+	borderR:SetPoint("TOPRIGHT")
+	borderR:SetPoint("BOTTOMRIGHT")
+	borderR:SetWidth(2)
+
+	bar.bg = bgTexture;

 	local enrage = CreateFrame("StatusBar", nil, bgFrame)
 	enrage.noupdate = true;
 	enrage:InsetPoints(bgFrame)
 	enrage:SetOrientation("HORIZONTAL")
 	enrage:SetStatusBarTexture(SV.media.statusbar.glow)
-  enrage:SetStatusBarColor(1, 0, 0, 0.75)
+	enrage:SetStatusBarColor(1, 0, 0, 0.75)

-  bgFrame.bar = enrage;
-  --SV.SpecialFX:SetFXFrame(enrage, "conqueror", true)
+	bgFrame.bar = enrage;
+	--SV.SpecialFX:SetFXFrame(enrage, "conqueror", true)
 	--enrage.FX:SetScript("OnShow", EffectModel_OnShow)
 	bar.Enrage = bgFrame;

diff --git a/SVUI_UnitFrames/elements/essentials.lua b/SVUI_UnitFrames/elements/essentials.lua
index 7f7fb75..4c5de01 100644
--- a/SVUI_UnitFrames/elements/essentials.lua
+++ b/SVUI_UnitFrames/elements/essentials.lua
@@ -726,14 +726,14 @@ end

 function MOD:PostUpdatePower(unit, value, max)
 	local db = SV.db.UnitFrames[unit]
-	local powerType, _, _, _, _ = UnitPowerType(unit)
+	local powerType, powerToken = UnitPowerType(unit)
 	local parent = self:GetParent()
 	if parent.isForced then
 		value = random(1, max)
 		powerType = random(0, 4)
 		self:SetValue(value)
 	end
-	local colors = oUF_SVUI.colors.power[token[powerType]]
+	local colors = oUF_SVUI.colors.power[powerToken]
 	local mult = self.bg.multiplier or 1;
 	local isPlayer = UnitPlayerControlled(unit)
 	if isPlayer and self.colorClass then
diff --git a/SVUI_UnitFrames/frames.lua b/SVUI_UnitFrames/frames.lua
index 128ed2c..d29522f 100644
--- a/SVUI_UnitFrames/frames.lua
+++ b/SVUI_UnitFrames/frames.lua
@@ -255,19 +255,17 @@ local UpdatePlayerFrame = function(self)
             if USE_CLASSBAR and self.RefreshClassBar then
                 self.RefreshClassBar(self)
             end
-            if(self.ClassBar) then
-                local classBar = self[self.ClassBar];
-                if USE_CLASSBAR then
-                    if(not self:IsElementEnabled(self.ClassBar)) then
-                        self:EnableElement(self.ClassBar)
-                    end
-                    classBar:Show()
-                else
-                    if(self:IsElementEnabled(self.ClassBar)) then
-                        self:DisableElement(self.ClassBar)
-                    end
-                    classBar:Hide()
+            local classBar = self[self.ClassBar];
+            if USE_CLASSBAR then
+                if(not self:IsElementEnabled(self.ClassBar)) then
+                    self:EnableElement(self.ClassBar)
+                end
+                classBar:Show()
+            else
+                if(self:IsElementEnabled(self.ClassBar)) then
+                    self:DisableElement(self.ClassBar)
                 end
+                classBar:Hide()
             end
         end
     end
diff --git a/SVUI_UnitFrames/libs/Plugins/oUF_Maelstrom/oUF_Maelstrom.lua b/SVUI_UnitFrames/libs/Plugins/oUF_Maelstrom/oUF_Maelstrom.lua
new file mode 100644
index 0000000..570a442
--- /dev/null
+++ b/SVUI_UnitFrames/libs/Plugins/oUF_Maelstrom/oUF_Maelstrom.lua
@@ -0,0 +1,75 @@
+--GLOBAL NAMESPACE
+local _G = _G;
+--LUA
+local unpack        = _G.unpack;
+local select        = _G.select;
+--BLIZZARD API
+local GameTooltip   = _G.GameTooltip;
+local MAX_TOTEMS 	= _G.MAX_TOTEMS;
+local TotemFrame 	= _G.TotemFrame;
+
+local class = select(2, UnitClass('player'))
+if(class ~= 'SHAMAN') then return end
+
+local parent, ns = ...
+local oUF = ns.oUF
+
+local Update = function(self, event)
+	local maelstrom = self.Maelstrom
+	local bar = maelstrom.Bar
+	local current = UnitPower("player", SPELL_POWER_MAELSTROM);
+	local max = UnitPowerMax("player", SPELL_POWER_MAELSTROM);
+
+	if(maelstrom.PreUpdate) then maelstrom:PreUpdate() end
+	bar:SetMinMaxValues(0,max)
+	bar:SetValue(current)
+	if(bar.text) then
+		bar.text:SetText(current)
+	end
+	if(maelstrom.PostUpdate) then
+		return maelstrom:PostUpdate(current)
+	end
+end
+
+local Path = function(self, ...)
+	return (self.Maelstrom.Override or Update) (self, ...)
+end
+
+local ForceUpdate = function(element)
+	return Path(element.__owner, 'ForceUpdate')
+end
+
+local Enable = function(self)
+	local maelstrom = self.Maelstrom
+
+	if(maelstrom and maelstrom.Bar) then
+		local bar = maelstrom.Bar
+		bar.__owner = self
+		bar.ForceUpdate = ForceUpdate
+
+		bar:SetMinMaxValues(0,100)
+		bar:SetValue(0)
+
+		self:RegisterEvent('UNIT_DISPLAYPOWER', Path, true)
+		self:RegisterUnitEvent('UNIT_DISPLAYPOWER', "player")
+		self:RegisterEvent('UNIT_POWER_FREQUENT', Path, true)
+		self:RegisterUnitEvent("UNIT_POWER_FREQUENT", "player")
+		self:RegisterEvent('UNIT_MAXPOWER', Path, true)
+		self:RegisterUnitEvent("UNIT_MAXPOWER", "player")
+
+		return true
+	end
+end
+
+local Disable = function(self)
+	if(self.Maelstrom) then
+		self.Maelstrom:Hide()
+		self:UnregisterEvent('PLAYER_ENTERING_WORLD', Path)
+		self:UnregisterEvent('UNIT_DISPLAYPOWER', Path)
+		self:UnregisterEvent('PLAYER_TARGET_CHANGED', Path)
+		self:UnregisterEvent('UNIT_POWER_FREQUENT', Path)
+		self:UnregisterEvent('UNIT_MAXPOWER', Path)
+	end
+end
+
+oUF:AddElement("Maelstrom", Path, Enable, Disable)
diff --git a/SVUI_UnitFrames/libs/Plugins/oUF_Necromancy/oUF_Necromancy.lua b/SVUI_UnitFrames/libs/Plugins/oUF_Necromancy/oUF_Necromancy.lua
index 43ad2a1..a32b2ad 100644
--- a/SVUI_UnitFrames/libs/Plugins/oUF_Necromancy/oUF_Necromancy.lua
+++ b/SVUI_UnitFrames/libs/Plugins/oUF_Necromancy/oUF_Necromancy.lua
@@ -7,11 +7,8 @@ local floor = math.floor

 local runeColors = {
 	{0.75, 0, 0},   -- blood
-	{0.75, 0, 0},   -- blood
-	{0, 0.75, 1},   -- frost
 	{0, 0.75, 1},   -- frost
 	{0.1, 0.75, 0},  -- unholy
-	{0.1, 0.75, 0},  -- unholy
 	{0.75, 0, 1}, -- death
 }

@@ -29,9 +26,10 @@ end

 local spellName = GetSpellInfo(54637)
 local UpdateType = function(self, event, rid)
+	local spec = GetSpecialization()
 	local isUsable = IsUsableSpell(spellName)
 	local rune = self.Necromancy[rid]
-	local colors = runeColors[rid]
+	local colors = runeColors[spec]
 	if (rune and colors) then
 		local r, g, b = colors[1], colors[2], colors[3]
 		rune.bar:SetStatusBarColor(r, g, b)
@@ -83,7 +81,7 @@ local Enable = function(self, unit)
 	if(runes and unit == 'player') then
 		runes.__owner = self
 		runes.ForceUpdate = ForceUpdate
-
+		self:RegisterEvent("PLAYER_TALENT_UPDATE", UpdateAllRuneTypes)
 		self:RegisterEvent("RUNE_POWER_UPDATE", UpdateRune, true)
 		self:RegisterEvent("RUNE_TYPE_UPDATE", UpdateType, true)	--I have no idea why this won't fire on initial login.
 		self:RegisterEvent("PLAYER_ENTERING_WORLD", UpdateAllRuneTypes)
@@ -109,7 +107,7 @@ local Disable = function(self)
 	local runes = self.Necromancy
 	if(runes) then
 		runes:SetScript('OnUpdate', nil)
-
+		self:UnregisterEvent("PLAYER_TALENT_UPDATE", UpdateAllRuneTypes)
 		self:UnregisterEvent("RUNE_POWER_UPDATE", UpdateRune)
 		self:UnregisterEvent("RUNE_TYPE_UPDATE", UpdateType)
 		self:UnregisterEvent("PLAYER_ENTERING_WORLD", UpdateAllRuneTypes)
diff --git a/SVUI_UnitFrames/libs/_load.xml b/SVUI_UnitFrames/libs/_load.xml
index 2a24e3b..4963bb5 100644
--- a/SVUI_UnitFrames/libs/_load.xml
+++ b/SVUI_UnitFrames/libs/_load.xml
@@ -68,7 +68,7 @@
 	<Script file="plugins\oUF_WarlockShards\oUF_WarlockShards.lua"/>
 	<Script file="plugins\oUF_PriestOrbs\oUF_PriestOrbs.lua"/>
 	<Script file="plugins\oUF_KungFu\oUF_KungFu.lua"/>
-	<Script file="plugins\oUF_TotemBars\oUF_TotemBars.lua"/>
+	<Script file="plugins\oUF_Maelstrom\oUF_Maelstrom.lua"/>
 	<Script file="plugins\oUF_HyperCombo\oUF_HyperCombo.lua"/>
 	<Script file="plugins\oUF_Gladiator\oUF_Gladiator.lua"/>
 	<Script file="plugins\oUF_Necromancy\oUF_Necromancy.lua"/>