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.
127 lines
4.4 KiB
127 lines
4.4 KiB
local mod = DBM:NewMod(2404, "DBM-Party-Shadowlands", 2, 1183)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240629024545")
|
|
mod:SetCreatureID(164267)
|
|
mod:SetEncounterID(2386)
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
-- "SPELL_AURA_APPLIED",
|
|
"SPELL_CAST_START 322236 322232 322475",
|
|
"SPELL_CAST_SUCCESS 322304",
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED",
|
|
"UNIT_DIED",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1 boss2 boss3 boss4 boss5"--Register all in case boss leaving coming back changes order with the spawns
|
|
)
|
|
|
|
--TODO, https://shadowlands.wowhead.com/spell=322490/plague-rot is passive, does it need an infoframe?
|
|
--TODO, figure out plague crash timer when there is a lot more time. there just isn't right now. More transcriptor logs from shittier groups would help too. WCL is USELESS for this fight
|
|
--[[
|
|
(ability.id = 322236 or ability.id = 322475 or ability.id = 322232) and type = "begincast"
|
|
or ability.id = 322304 and type = "cast"
|
|
--]]
|
|
--local warnPlagueCrash = mod:NewCountAnnounce(322473, 4)--Announces each cast of the sequence in regular warning
|
|
|
|
local specWarnMalignantGrowth = mod:NewSpecialWarningSwitch(322304, "-Healer", nil, nil, 1, 7)
|
|
local specWarnTouchofSlime = mod:NewSpecialWarningSoak(322236, "Tank", nil, nil, 1, 7)
|
|
local specWarnPlagueCrash = mod:NewSpecialWarningDodge(322473, nil, nil, nil, 2, 2)--Announces beginning of sequence in special warning
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(257274, nil, nil, nil, 1, 8)
|
|
|
|
local timerMalignantGrowthCD = mod:NewCDTimer(20.6, 322304, nil, nil, nil, 1, nil, DBM_COMMON_L.TANK_ICON .. DBM_COMMON_L.DAMAGE_ICON)
|
|
local timerInfectiousRainCD = mod:NewCDTimer(26.7, 322232, nil, nil, nil, 3)
|
|
--local timerPlagueCrashCD = mod:NewCDTimer(17, 322475, nil, nil, nil, 3)
|
|
local timerSinkPhase = mod:NewStageTimer(27)
|
|
--Tentacle Add
|
|
local timerTouchofSlimeCD = mod:NewCDTimer(6, 322236, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
--mod.vb.crashCount = 0
|
|
mod.vb.sinkPhase = false
|
|
mod.vb.sinkPhaseCount = 0
|
|
|
|
function mod:OnCombatStart(delay)
|
|
-- self.vb.crashCount = 0
|
|
self.vb.sinkPhase = false
|
|
self.vb.sinkPhaseCount = 0
|
|
timerMalignantGrowthCD:Start(5.6-delay)
|
|
timerInfectiousRainCD:Start(15.3-delay)
|
|
-- if self:IsMythic() then
|
|
-- timerPlagueCrashCD:Start(14.4)
|
|
-- end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
self:UnregisterShortTermEvents()
|
|
end
|
|
|
|
function mod:OnTimerRecovery()
|
|
if self.vb.sinkPhase then
|
|
self:RegisterShortTermEvents(
|
|
"UNIT_TARGETABLE_CHANGED boss1 boss2 boss3 boss4 boss5"
|
|
)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 322236 then
|
|
specWarnTouchofSlime:Show()
|
|
specWarnTouchofSlime:Play("helpsoak")
|
|
timerTouchofSlimeCD:Start(6, args.sourceGUID)
|
|
elseif spellId == 322232 then
|
|
timerInfectiousRainCD:Start()
|
|
-- elseif spellId == 322475 and self:AntiSpam(5, 1) then
|
|
-- self.vb.crashCount = self.vb.crashCount + 1
|
|
-- warnPlagueCrash:Show(self.vb.crashCount)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 322304 then
|
|
specWarnMalignantGrowth:Show()
|
|
specWarnMalignantGrowth:Play("killmob")
|
|
timerMalignantGrowthCD:Start()
|
|
timerTouchofSlimeCD:Start(6)
|
|
--if self:IsMythic() then
|
|
--TODO, plague crash castbar?
|
|
--end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 165430 then--Malignant MalignantGrowth
|
|
timerTouchofSlimeCD:Stop(args.destGUID)
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 322477 then--Start Plague Crash Phase
|
|
self.vb.sinkPhase = true
|
|
self.vb.sinkPhaseCount = self.vb.sinkPhaseCount + 1
|
|
timerMalignantGrowthCD:Stop()
|
|
timerInfectiousRainCD:Stop()
|
|
timerSinkPhase:Start(27)
|
|
self:RegisterShortTermEvents(
|
|
"UNIT_TARGETABLE_CHANGED boss1 boss2 boss3 boss4 boss5"
|
|
)
|
|
elseif (spellId == 333941 or spellId == 322473) and not self.vb.sinkPhase then--Plague Crash
|
|
specWarnPlagueCrash:Show()
|
|
specWarnPlagueCrash:Play("watchstep")
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_TARGETABLE_CHANGED(uId)
|
|
local cid = self:GetUnitCreatureId(uId)
|
|
if cid == 164267 and UnitCanAttack("player", uId) then
|
|
self:UnregisterShortTermEvents()
|
|
self.vb.sinkPhase = false
|
|
if self.vb.sinkPhaseCount == 1 then
|
|
timerMalignantGrowthCD:Start(5.6)
|
|
end
|
|
timerInfectiousRainCD:Start(15.3)
|
|
end
|
|
end
|
|
|