You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.8 KiB

-------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Halazzi", 568, 189)
if not mod then return end
mod:RegisterEnableMob(23577)
mod.engageId = 1192
-- mod.respawnTime = 0 -- resets, doesn't respawn
--------------------------------------------------------------------------------
-- Locals
--
local spiritPhasesLeft = 2
local nextPhaseWarning = 65
-------------------------------------------------------------------------------
-- Localization
--
local L = mod:GetLocale()
if L then
L.spirit_message = "Spirit Phase"
L.normal_message = "Normal Phase"
end
-------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
"stages",
43303, -- Flame Shock
43139, -- Enrage
43302, -- Lightning Totem
97499, -- Water Totem
}
end
function mod:OnBossEnable()
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1", "boss2")
self:Log("SPELL_AURA_APPLIED", "FlameShock", 43303)
self:Log("SPELL_AURA_REMOVED", "FlameShockRemoved", 43303)
self:Log("SPELL_AURA_APPLIED", "Enrage", 43139)
self:Log("SPELL_CAST_START", "Totems", 43302, 97499) -- Lightning Totem, Water Totem
end
function mod:OnEngage()
spiritPhasesLeft = 2
nextPhaseWarning = 65 -- 60% and 30%
end
-------------------------------------------------------------------------------
-- Event Handlers
--
function mod:FlameShock(args)
self:TargetMessageOld(args.spellId, args.destName, "yellow", "alarm")
self:TargetBar(args.spellId, 12, args.destName)
end
function mod:FlameShockRemoved(args)
self:StopBar(args.spellName, args.destName)
end
function mod:Enrage(args)
self:MessageOld(args.spellId, "red")
end
function mod:Totems(args)
self:MessageOld(args.spellId, "orange", "alert", CL.casting:format(args.spellName))
end
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
-- All spells used are called "Halazzi Transform"
if spellId == 43143 then -- Spirit Phase
self:MessageOld("stages", "green", nil, CL.percent:format(30 * spiritPhasesLeft, L.spirit_message), "ability_hunter_pet_cat")
spiritPhasesLeft = spiritPhasesLeft - 1
elseif spellId == 43145 or spellId == 43271 then -- Normal Phase
self:MessageOld("stages", "green", nil, L.normal_message, "achievement_character_troll_male")
end
end
function mod:UNIT_HEALTH(event, unit)
local hp = UnitHealth(unit) / UnitHealthMax(unit) * 100
if hp < nextPhaseWarning then
nextPhaseWarning = nextPhaseWarning - 30
self:MessageOld("stages", "yellow", nil, CL.soon:format(L.spirit_message), false)
if nextPhaseWarning < 35 then
self:UnregisterUnitEvent(event, unit)
end
end
end