--- /dev/null
+-- Based on Simple Holy Power
+local _;
+local hptype = 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 GetSpecialization() == 3 then -- ret
+ f:Show();
+ f:RegisterUnitEvent("UNIT_POWER", "player");
+ updatehp[UnitPower("player", hptype)]();
+ else
+ f:UnregisterEvent("UNIT_POWER");
+ f:Hide();
+ end
+end
+f.PLAYER_ENTERING_WORLD = f.PLAYER_SPECIALIZATION_CHANGED;
+
+function f:UNIT_POWER(_, t)
+ if t == "HOLY_POWER" then
+ return updatehp[UnitPower("player", hptype)]();
+ end
+end
+
+function f:PLAYER_LOGIN()
+ f:UnregisterAllEvents();
+ f:Hide();
+ if select(2, UnitClass("player")) ~= "PALADIN" then 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);
+ -- color is default from SHP
+ f[i]:SetColorTexture(0.9686274509803922, 0.674509803921568, 0.1450980392156863);
+ end
+
+ f:RegisterUnitEvent("UNIT_POWER", "player");
+ f:RegisterEvent("PLAYER_ENTERING_WORLD");
+ f:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED");
+end
+
+f:RegisterEvent("PLAYER_LOGIN");