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.

109 lines
2.8 KiB

-------------------------------------------------------------------------------
-- Module Declaration
--
local mod, CL = BigWigs:NewBoss("Isiset", 644, 127)
if not mod then return end
mod:RegisterEnableMob(39587)
mod.engageId = 1077
mod.respawnTime = 30
--------------------------------------------------------------------------------
-- Locals
--
local nextSplitWarning = 71
-------------------------------------------------------------------------------
-- Initialization
--
function mod:GetOptions()
return {
74373, -- Veil of Sky
74137, -- Supernova
74135, -- Astral Rain
74045, -- Energy Flux
-2556, -- Mirror Images
}
end
function mod:OnBossEnable()
-- 3 ids per spell: destroying a mirror image disables 1 ability, empowers others. 2nd & 3rd ids are empowered versions
self:Log("SPELL_AURA_APPLIED", "VeilOfSky", 74133, 74372, 74373)
self:Log("SPELL_AURA_REMOVED", "VeilOfSkyRemoved", 74133, 74372, 74373)
self:Log("SPELL_CAST_START", "Supernova", 74136, 74137, 76670)
self:Log("SPELL_DAMAGE", "AstralRain", 74135, 74366, 74370)
self:Log("SPELL_MISSED", "AstralRain", 74135, 74366, 74370)
self:Log("SPELL_DAMAGE", "EnergyFlux", 74045)
self:Log("SPELL_MISSED", "EnergyFlux", 74045)
self:RegisterUnitEvent("UNIT_SPELLCAST_SUCCEEDED", nil, "boss1")
end
function mod:OnEngage()
nextSplitWarning = 71 -- 66% and 33%
self:RegisterUnitEvent("UNIT_HEALTH", nil, "boss1")
end
-------------------------------------------------------------------------------
-- Event Handlers
--
function mod:VeilOfSky()
self:MessageOld(74373, "yellow")
self:CDBar(74373, 60)
end
function mod:VeilOfSkyRemoved()
self:StopBar(74373)
end
function mod:Supernova(args)
self:MessageOld(74137, "red", "alarm", CL.casting:format(args.spellName))
self:CastBar(74137, 3)
end
do
local prev = 0
function mod:AstralRain(args)
if self:Me(args.destGUID) then
local t = GetTime()
if t - prev > 1.5 then
prev = t
self:MessageOld(74135, "blue", "alert", CL.you:format(args.spellName))
end
end
end
function mod:EnergyFlux(args)
if self:Me(args.destGUID) then
local t = GetTime()
if t - prev > 1.5 then
prev = t
self:MessageOld(args.spellId, "blue", "alert", CL.underyou:format(args.spellName))
end
end
end
end
function mod:UNIT_HEALTH(event, unit)
local hp = UnitHealth(unit) / UnitHealthMax(unit) * 100
if hp < nextSplitWarning then
self:MessageOld(-2556, "green", nil, CL.soon:format(self:SpellName(-2556))) -- Mirror Image
nextSplitWarning = nextSplitWarning - 33
if nextSplitWarning < 33 then
self:UnregisterUnitEvent(event, unit)
end
end
end
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, _, spellId)
if spellId == 69941 then -- Mirror Image
self:MessageOld(-2556, "cyan", "info")
end
end