Files
coa-dbm/DBM-Hyjal/Anetheron.lua
T
Szyler dc8afd6584 5.19b (#4)
Co-authored-by: Szyler <Szyler@Szyler.com>
2024-03-03 11:23:13 -07:00

199 lines
5.4 KiB
Lua

local mod = DBM:NewMod("Anetheron", "DBM-Hyjal")
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 183 $"):sub(12, -3))
mod:SetCreatureID(17808)
mod:SetUsedIcons(1,2,3,4,5,6,7,8)
mod:RegisterCombat("combat", 17808)
mod:RegisterEvents(
"SPELL_AURA_APPLIED",
"SPELL_AURA_REFRESH",
"SPELL_AURA_REMOVED",
"SPELL_CAST_START",
"SPELL_CAST_SUCCESS",
"CHAT_MSG_RAID_BOSS_EMOTE",
"CHAT_MSG_MONSTER_YELL",
"UNIT_DIED"
)
-- Unknown Entity spawn
-- Unknown Effigy warning (2 stacks++)
-- Teleport active (plus body notification?)
--Carrion Swarm
local warnSwarm = mod:NewSpellAnnounce(2140800, 3)
local timerSwarm = mod:NewNextTimer(30, 2140800)
--Nightmare
local timerNextNightmare = mod:NewNextTimer(45, 2140830)
local warnNightmareSoon = mod:NewAnnounce("Nightmare soon!", 2140830)
local warnNightmare = mod:NewAnnounce("%s is sent into the Nightmare!", 2140830)
-- Ring of Frost
local timerNextRingofFrost = mod:NewNextTimer(45, 2140153)
local timerRingofFrost = mod:NewTimer(15, "Ring of Frost duration", 2140153)
-- Infernal Rain
local timerNextInfernal = mod:NewNextTimer(45, 2140810)
local timerInfernal = mod:NewTimer(10, "Infernal spawning", 2140810)
local timerInfernalRain = mod:NewTimer(19, "Infernal Rain duration", 2140818)
-- Fight
local target1
local target2
local target3
function mod:OnCombatStart(delay)
timerSwarm:Start(10-delay)
timerNextNightmare:Start(35-delay)
timerNextInfernal:Start(20-delay)
self:ScheduleMethod(35-delay,"Nightmare")
target1 = nil
target2 = nil
target3 = nil
DBM.BossHealth:AddBoss(17772, L.Jaina)
end
function mod:Nightmare()
self:UnscheduleMethod("Nightmare")
timerNextNightmare:Start()
warnNightmareSoon:Schedule(40)
self:ScheduleMethod(45,"Nightmare")
end
function mod:InfernalRain()
self:UnscheduleMethod("InfernalRain")
timerInfernal:Stop()
timerInfernalRain:Stop()
timerNextInfernal:Stop()
timerInfernal:Start()
timerInfernalRain:Start()
timerNextInfernal:Start()
self:ScheduleMethod(45,"InfernalRain")
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(2140825) then
if target3 == nil and target2 ~= nil and target1 ~= nil then
target3 = args.DestName
self:setIcon(target3, 2)
DBM.BossHealth:AddBoss(92171,target3)
warnNightmare:Show(target3)
elseif target2 == nil and target1 ~= nil then
target2 = args.DestName
self:setIcon(target2, 2)
DBM.BossHealth:AddBoss(92171,target2)
warnNightmare:Show(target2)
elseif target1 == nil then
target1 = args.DestName
self:setIcon(target1, 1)
DBM.BossHealth:AddBoss(92171,target1)
warnNightmare:Show(target1)
end
end
if args:IsSpellID(2140825) and args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
self:setIcon(target1, 0)
target1 = nil
elseif args:IsSpellID(2140825) and args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
self:setIcon(target2, 0)
target2 = nil
elseif args:IsSpellID(2140825) and args.destName == target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
self:setIcon(target3, 0)
target3 = nil
end
end
function mod:SPELL_AURA_REFRESH(args)
if args:IsSpellID(2140825) and args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
self:setIcon(target1, 0)
target1 = nil
elseif args:IsSpellID(2140825) and args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
self:setIcon(target2, 0)
target2 = nil
elseif args:IsSpellID(2140825) and args.destName == target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
self:setIcon(target3, 0)
target3 = nil
end
end
function mod:SPELL_AURA_REMOVED(args)
end
function mod:SPELL_CAST_START(args)
if args:IsSpellID(2140800) then
warnSwarm:Show()
timerSwarm:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
end
function mod:CHAT_MSG_MONSTER_YELL(msg)
if msg == L.Infernal1 or msg == L.Infernal2 or msg:find(L.Infernal1) or msg:find(L.Infernal2) then
self:UnscheduleMethod("InfernalRain")
timerInfernal:Stop()
timerNextInfernal:Stop()
timerInfernalRain:Stop()
timerNextInfernal:Start(45)
timerInfernal:Start(10)
timerInfernalRain:Start(19)
self:ScheduleMethod(45,"InfernalRain")
end
if msg == L.RingofFrost or msg:find(L.RingofFrost) then
timerNextRingofFrost:Start()
timerRingofFrost:Schedule(2)
end
end
function mod:UNIT_DIED(args)
if args.destName == target1 then
DBM.BossHealth:RemoveBoss(92171,target1)
target1 = nil
elseif args.destName == target2 then
DBM.BossHealth:RemoveBoss(92171,target2)
target2 = nil
elseif args.destName ==target3 then
DBM.BossHealth:RemoveBoss(92171,target3)
target3 = nil
end
end
function mod:OnCombatEnd()
DBM.BossHealth:RemoveBoss(92171,target1)
DBM.BossHealth:RemoveBoss(92171,target2)
DBM.BossHealth:RemoveBoss(92171,target3)
DBM.BossHealth:RemoveBoss(17772)
target1 = nil
target2 = nil
target3 = nil
self:UnscheduleMethod("Nightmare")
self:UnscheduleMethod("InfernalRain")
end
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg == " Anetheron sends %s into a nightmare!" or msg:find(L.Nightmare) then
if target3 == nil and target2 ~= nil and target1 ~= nil then
target3 = msg:find(L.Nightmare)
self:SetIcon(target3, 3)
DBM.BossHealth:AddBoss(92171,target3)
elseif target2 == nil and target1 ~= nil then
target2 = msg:find(L.Nightmare)
self:SetIcon(target2, 2)
DBM.BossHealth:AddBoss(92171,target2)
elseif target1 == nil then
target1 = msg:find(L.Nightmare)
self:SetIcon(target1, 1)
DBM.BossHealth:AddBoss(92171,target1)
end
end
end