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