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.

112 lines
3.8 KiB

local mod = DBM:NewMod(2130, "DBM-Party-BfA", 8, 1001)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20230504231118")
mod:SetCreatureID(131383)
mod:SetEncounterID(2112)
mod.sendMainBossGUID = true
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 259718",
"SPELL_AURA_REMOVED 259718",
"SPELL_CAST_START 259732 272457",
"SPELL_CAST_SUCCESS 259830 259718 259732",
"UNIT_SPELLCAST_SUCCEEDED boss1"
)
--TODO, re-evalulate all timers from DF M+ logs
--local warnBoundlessrot = mod:NewSpellAnnounce(259830, 3)--Use if too spammy as special warning
local warnUpheaval = mod:NewTargetAnnounce(259718, 3)
local specWarnFesteringHarvest = mod:NewSpecialWarningSpell(259732, nil, nil, nil, 2, 2)
local specWarnVolatilePods = mod:NewSpecialWarningDodge(273271, nil, nil, nil, 2, 2)
local specWarnShockwave = mod:NewSpecialWarningSpell(272457, "Tank", nil, nil, 1, 2)
local specWarnUpheaval = mod:NewSpecialWarningMoveAway(259718, nil, nil, nil, 1, 2)
local yellUpheaval = mod:NewYell(259718)
local yellUpheavalFades = mod:NewShortFadesYell(259718)
local specWarnUpheavalNear = mod:NewSpecialWarningClose(259718, nil, nil, nil, 1, 2)
local timerFesteringHarvestCD = mod:NewCDTimer(51, 259732, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
--local timerBoundlessRotCD = mod:NewCDTimer(13, 259830, nil, nil, nil, 3)
local timerVolatilePodsCD = mod:NewCDTimer(27.5, 273271, nil, nil, nil, 3)
local timerShockwaveCD = mod:NewCDTimer(14.6, 272457, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerUpheavalCD = mod:NewCDTimer(15.8, 259718, nil, nil, nil, 3)--15.8-20
function mod:OnCombatStart(delay)
--timerBoundlessRotCD:Start(1-delay)
timerShockwaveCD:Start(10-delay)
timerUpheavalCD:Start(17-delay)
if not self:IsNormal() then
timerVolatilePodsCD:Start(20.4-delay)
end
timerFesteringHarvestCD:Start(34.9-delay)
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 259718 then
if args:IsPlayer() then
specWarnUpheaval:Show()
specWarnUpheaval:Play("runout")
yellUpheaval:Yell()
yellUpheavalFades:Countdown(6)
elseif self:CheckNearby(8, args.destName) and not DBM:UnitDebuff("player", spellId) then
specWarnUpheavalNear:CombinedShow(0.3, args.destName)
specWarnUpheavalNear:ScheduleVoice(0.3, "runaway")
else
warnUpheaval:CombinedShow(0.3, args.destName)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 259718 and args:IsPlayer() then
yellUpheavalFades:Cancel()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 259732 then
specWarnFesteringHarvest:Show()
specWarnFesteringHarvest:Play("specialsoon")
timerFesteringHarvestCD:Start()
if DBM.Options.DebugMode then
DBM:Debug("Why is this scoped to debug only?. This looks like an unfinished train of thought. Do timers restart or get spell queued here?")
timerShockwaveCD:Stop()
timerUpheavalCD:Stop()
timerVolatilePodsCD:Stop()
end
elseif spellId == 272457 then
specWarnShockwave:Show()
specWarnShockwave:Play("shockwave")
timerShockwaveCD:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 259830 then
--timerBoundlessRotCD:Start()
elseif spellId == 259718 and self:AntiSpam(3, 1) then
timerUpheavalCD:Start(20.6)
elseif spellId == 259732 then
timerUpheavalCD:Start(10.5)
if not self:IsNormal() then
timerVolatilePodsCD:Start(12)
end
timerShockwaveCD:Start(19)
end
end
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, spellId)
if spellId == 273271 then--Volatile Pods
specWarnVolatilePods:Show()
specWarnVolatilePods:Play("watchstep")
timerVolatilePodsCD:Start()
end
end