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