dc8afd6584
Co-authored-by: Szyler <Szyler@Szyler.com>
124 lines
3.8 KiB
Lua
124 lines
3.8 KiB
Lua
local mod = DBM:NewMod("Maexxna", "DBM-Naxx", 1)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision(("$Revision: 2943 $"):sub(12, -3))
|
|
mod:SetCreatureID(15952)
|
|
mod:RegisterCombat("combat")
|
|
mod:EnableModel()
|
|
mod:RegisterEvents(
|
|
"SPELL_AURA_APPLIED",
|
|
"SPELL_AURA_APPLIED_DOSE",
|
|
"SPELL_CAST_SUCCESS",
|
|
"PLAYER_ALIVE",
|
|
"CHAT_MSG_RAID_BOSS_EMOTE",
|
|
"UNIT_HEALTH",
|
|
"UNIT_DIED"
|
|
)
|
|
|
|
-----Necrotic Poison-----
|
|
local warnNecrotic = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123201)
|
|
local specWarnNecrotic = mod:NewSpecialWarningStack(2123201, 3)
|
|
----DIGESTIVE ACID----
|
|
local warnDigestive = mod:NewAnnounce("%s on >%s< (%d)",3 ,2123202)
|
|
local specWarnDigestive = mod:NewSpecialWarningStack(2123202, 1)
|
|
-----WEB WRAP-----
|
|
local warnWebWrap = mod:NewTargetAnnounce(2123211, 2)
|
|
local timerWebWrap = mod:NewNextTimer(40, 2123211)
|
|
-----WEB SPRAY-----
|
|
local warnWebSpraySoon = mod:NewSoonAnnounce(2123206, 1)
|
|
local warnWebSprayNow = mod:NewSpecialWarningSpell(2123206, 3)
|
|
local timerWebSpray = mod:NewNextTimer(50, 2123206)
|
|
local timerWebStunSoon = mod:NewTimer(4,"Stun incoming!", 2123210)
|
|
local timerWebStun = mod:NewTimer(4, "WRAPPED!", 2123210)
|
|
-----SPIDERLINGS-----
|
|
local timerSpider = mod:NewNextTimer(16, 43134)
|
|
-----SOFT ENRAGE-----
|
|
local warnSoftEnrageSoon = mod:NewSpellAnnounce(54123, 3)
|
|
local warnSoftEnrageNow = mod:NewSoonAnnounce(54123, 2)
|
|
local phase
|
|
local webSpam = 0
|
|
local necroticSpam = 0
|
|
-----BOSS FUNCTIONS-----
|
|
function mod:OnCombatStart(delay)
|
|
webSpam = 0
|
|
necroticSpam = 0
|
|
warnWebSpraySoon:Schedule(35 - delay)
|
|
timerWebSpray:Start(40 - delay)
|
|
timerWebWrap:Start(20-delay)
|
|
timerSpider:Start(8 - delay)
|
|
self:ScheduleMethod(8-delay, "Spiders")
|
|
end
|
|
|
|
-- "Kel'Thuzad strikes!"
|
|
|
|
|
|
function mod:Spiders()
|
|
timerSpider:Start()
|
|
self:ScheduleMethod(16, "Spiders")
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args:IsSpellID(2123201) then
|
|
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
|
|
elseif args:IsSpellID(2123206, 2123207, 2123208, 2123209) and DBM:AntiSpam() then
|
|
warnWebSprayNow:Show()
|
|
timerWebStunSoon:Start()
|
|
timerWebSpray:Start()
|
|
elseif args:IsSpellID(2123211,2123212,2123216,2123217) and (GetTime() - webSpam) > 5 then -- Web Wrap
|
|
webSpam = GetTime()
|
|
warnWebWrap:Show(args.destName)
|
|
timerWebWrap:Start()
|
|
if args:IsPlayer() then
|
|
SendChatMessage(L.YellWebWrap, "YELL")
|
|
end
|
|
elseif args:IsSpellID(2123210) then
|
|
timerWebStun:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED_DOSE(args)
|
|
if args:IsSpellID(2123201) then
|
|
if args:IsPlayer() and args.amount >= 1 and (GetTime() - necroticSpam) > 5 then
|
|
necroticSpam = GetTime()
|
|
specWarnNecrotic:Show(args.amount)
|
|
elseif args:IsPlayer() == false and args.amount >= 5 and (GetTime() - necroticSpam) > 5 then
|
|
necroticSpam = GetTime()
|
|
warnNecrotic:Show(args.spellName, args.destName, args.amount or 1)
|
|
end
|
|
elseif args:IsSpellID(2123202) then
|
|
if args:IsPlayer() and args.amount >= 1 then
|
|
specWarnDigestive:Show(args.amount)
|
|
elseif args:IsPlayer() == false and args.amount >= 4 and args.amount <=10 then
|
|
warnDigestive:Show(args.spellName, args.destName, args.amount or 1)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_HEALTH(uId)
|
|
if self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and phase == 1 then
|
|
phase = 2
|
|
warnSoftEnrageSoon:Show()
|
|
elseif self:GetUnitCreatureId(uId) == 15952 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.20 and phase == 2 then
|
|
phase = 3
|
|
warnSoftEnrageNow:Show()
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
timerWebSpray:Stop()
|
|
warnWebSpraySoon:Cancel()
|
|
timerSpider:Stop()
|
|
timerWebWrap:Stop()
|
|
self:UnscheduleMethod("Spiders")
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 15952 or cid == 26616 then
|
|
timerWebSpray:Stop()
|
|
warnWebSpraySoon:Cancel()
|
|
timerSpider:Stop()
|
|
timerWebWrap:Stop()
|
|
self:UnscheduleMethod("Spiders")
|
|
end
|
|
end |