View Single Post
02-19-14, 06:16 PM   #18
Caellian
A Frostmaul Preserver
 
Caellian's Avatar
Join Date: May 2006
Posts: 281
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
__________________
if (sizeof(workload) > sizeof(brain_capacity)) { die('System Overload'); }
  Reply With Quote