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

local mod = DBM:NewMod(1479, "DBM-Party-Legion", 3, 716)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20200927225704")
mod:SetCreatureID(91808)
mod:SetEncounterID(1813)
mod:SetZone(1456)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_AURA_APPLIED 191855 191797"
)
mod:RegisterEventsInCombat(
"SPELL_CAST_START 192003 192005 191848",
"SPELL_CAST_SUCCESS 191855",
"SPELL_DAMAGE 191858",
"SPELL_MISSED 191858",
"CHAT_MSG_RAID_BOSS_EMOTE"
)
--TODO, verify heroic+ Arcane Blast
--If complicated enough, setup interrupt rotation helper
local warnToxicWound = mod:NewTargetAnnounce(191855, 2)
local warnWinds = mod:NewSpellAnnounce(191798, 2)
local specWarnToxicWound = mod:NewSpecialWarningRun(191855, nil, nil, nil, 1, 2)
local specWarnSubmerge = mod:NewSpecialWarningSpell(191873, nil, nil, nil, 2, 2)
local specWarnToxicPool = mod:NewSpecialWarningMove(191858, nil, nil, nil, 1, 2)
local specWarnBlazingNova = mod:NewSpecialWarningInterrupt(192003, false, nil, nil, 1, 2)
local specWarnArcaneBlast = mod:NewSpecialWarningInterrupt(192005, false, nil, nil, 1, 2)
local specWarnRampage = mod:NewSpecialWarningInterrupt(191848, "HasInterrupt", nil, nil, 1, 2)
--Next timers always, unless rampage is not interrupted (Boss will not cast anything else during rampages)
local timerToxicWoundCD = mod:NewCDTimer(15, 191855, nil, nil, nil, 3)
local timerWindsCD = mod:NewNextTimer(30, 191798, nil, nil, nil, 2)
local wrathMod
function mod:UpdateWinds()
timerWindsCD:Stop()
end
function mod:OnCombatStart(delay)
timerToxicWoundCD:Start(5-delay)
timerWindsCD:Stop()
timerWindsCD:Start(33-delay)
end
function mod:OnCombatEnd()
timerWindsCD:Stop()--Does it nearly immediately upon death
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 191855 then
warnToxicWound:Show(args.destName)
if args:IsPlayer() then
specWarnToxicWound:Show()
specWarnToxicWound:Play("justrun")
specWarnToxicWound:ScheduleVoice(1.5, "keepmove")
end
elseif spellId == 191797 and self:AntiSpam(3, 2) then--Violent Winds
if not wrathMod then wrathMod = DBM:GetModByName("1492") end
if wrathMod.vb.phase == 2 then return end--Phase 2 against Wrath of Azshara, which means this is happening every 10 seconds
warnWinds:Show()
if self:IsInCombat() then--Boss engaged it's 30
timerWindsCD:Start()
else--Zone wide, it's every 90 seconds
timerWindsCD:Start(90)
end
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 192003 and self:CheckInterruptFilter(args.sourceGUID, false, true) then--Blazing Nova
specWarnBlazingNova:Show(args.sourceName)
specWarnBlazingNova:Play("kickcast")
elseif spellId == 192005 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnArcaneBlast:Show(args.sourceName)
specWarnArcaneBlast:Play("kickcast")
elseif spellId == 191848 then
specWarnRampage:Show(args.sourceName)
specWarnRampage:Play("kickcast")
end
end
function mod:SPELL_CAST_SUCCESS(args)
if args.spellId == 191855 then
timerToxicWoundCD:Start()
end
end
function mod:SPELL_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 191858 and destGUID == UnitGUID("player") and self:AntiSpam(2.5, 1) then
specWarnToxicPool:Show()
specWarnToxicPool:Play("runaway")
end
end
mod.SPELL_MISSED = mod.SPELL_DAMAGE
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg)
if msg:find("spell:191873") then
specWarnSubmerge:Show()
specWarnSubmerge:Play("phasechange")
end
end