-- Based on Simple Holy Power local _; local class = "PALADIN"; local ptype = Enum.PowerType.HolyPower; local UnitPower = UnitPower; local GetSpecialization = GetSpecialization; local f = CreateFrame("Frame", "OmaSHP", UIParent); f:SetScript("OnEvent", function(self, event, ...) self[event](self, ...); end) local updatehp = { [0] = function() f[1]:Hide(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end, [1] = function() f[1]:Show(); f[2]:Hide(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end, [2] = function() f[1]:Show(); f[2]:Show(); f[3]:Hide(); f[4]:Hide(); f[5]:Hide() end, [3] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Hide(); f[5]:Hide() end, [4] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Hide() end, [5] = function() f[1]:Show(); f[2]:Show(); f[3]:Show(); f[4]:Show(); f[5]:Show() end, }; function f:PLAYER_SPECIALIZATION_CHANGED() if class == "PALADIN" then if GetSpecialization() == 3 then -- ret f:Show(); f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player"); updatehp[UnitPower("player", ptype)](); else f:UnregisterEvent("UNIT_POWER_UPDATE"); f:Hide(); end elseif class == "WARLOCK" then f:Show(); f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player"); updatehp[UnitPower("player", ptype)](); end end f.PLAYER_ENTERING_WORLD = f.PLAYER_SPECIALIZATION_CHANGED; function f:UNIT_POWER_UPDATE(_, t) if t == "HOLY_POWER" or t == "SOUL_SHARDS" then return updatehp[UnitPower("player", ptype)](); end end function f:PLAYER_LOGIN() f:UnregisterAllEvents(); f:Hide(); _, class = UnitClass("player"); if class == "PALADIN" then ptype = Enum.PowerType.HolyPower; elseif class == "WARLOCK" then ptype = Enum.PowerType.SoulShards; else return; end f:SetFrameStrata("LOW"); f:SetPoint("CENTER", UIParent, "CENTER", -283, -220); f:SetWidth(29*5); f:SetHeight(25); for i = 1,5 do f[i] = f:CreateTexture("OmaSHP"..i, "ARTWORK"); if i == 1 then f[i]:SetPoint("TOPLEFT", f, "TOPLEFT", 2, 0) else f[i]:SetPoint("TOPLEFT", f[i-1], "TOPRIGHT", 2, 0) end f[i]:SetWidth(25); f[i]:SetHeight(25); if class == "WARLOCK" then f[i]:SetColorTexture(0.7, 0.3, 0.5); else -- color is default from SHP f[i]:SetColorTexture(0.9686274509803922, 0.674509803921568, 0.1450980392156863); end end f:RegisterUnitEvent("UNIT_POWER_UPDATE", "player"); f:RegisterEvent("PLAYER_ENTERING_WORLD"); f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED"); end f:RegisterEvent("PLAYER_LOGIN");