Phanx, i believe i have it working for everyone with your version, let me know what you think:
Code:
local _, caelUI = ...
caelUI.powersound = caelUI.createModule("PowerSound")
local floor, numPrevious = math.floor, 0
local POWER_TYPE, SPELL_POWER_TYPE
if caelUI.playerClass == "MONK" then
POWER_TYPE = "CHI"
SPELL_POWER_TYPE = SPELL_POWER_CHI
elseif caelUI.playerClass == "PALADIN" then
POWER_TYPE = "HOLY_POWER"
SPELL_POWER_TYPE = SPELL_POWER_HOLY_POWER
elseif caelUI.playerClass == "PRIEST" then
POWER_TYPE = "SHADOW_ORBS"
SPELL_POWER_TYPE = SPELL_POWER_SHADOW_ORBS
MAX_POWER = PRIEST_BAR_NUM_ORBS
elseif caelUI.playerClass == "WARLOCK" then
caelUI.powersound:RegisterEvent("PLAYER_LOGIN")
caelUI.powersound:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
end
caelUI.powersound:SetScript("OnEvent", function(self, event, unit, powerType)
if event == "UNIT_POWER" and powerType ~= POWER_TYPE then return end
if event == "PLAYER_LOGIN" or event == "PLAYER_SPECIALIZATION_CHANGED" then
local spec = GetSpecialization()
if spec == SPEC_WARLOCK_AFFLICTION then
POWER_TYPE = "SOUL_SHARDS"
SPELL_POWER_TYPE = SPELL_POWER_SOUL_SHARDS
-- elseif spec == SPEC_WARLOCK_DEMONOLOGY then
-- POWER_TYPE = "DEMONIC_FURY"
-- SPELL_POWER_TYPE = SPELL_POWER_DEMONIC_FURY
elseif spec == SPEC_WARLOCK_DESTRUCTION then
POWER_TYPE = "BURNING_EMBERS"
SPELL_POWER_TYPE = SPELL_POWER_BURNING_EMBERS
end
return
end
local num, numMax
if event == "UNIT_COMBO_POINTS" then
num = GetComboPoints("player", "target")
numMax = MAX_COMBO_POINTS
else
num = UnitPower(unit, SPELL_POWER_TYPE)
numMax = MAX_POWER or UnitPowerMax(unit, SPELL_POWER_TYPE)
end
if num > numPrevious then
if num == numMax then
PlaySoundFile(caelMedia.files.soundComboMax, "Master")
else
PlaySoundFile(caelMedia.files.soundCombo, "Master")
end
end
numPrevious = num
end)
for _, event in next, {
"UNIT_COMBO_POINTS",
"UNIT_POWER",
} do
caelUI.powersound:RegisterUnitEvent(event, "player")
end