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