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
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
|
|
|