local mod = DBM:NewMod(102, "DBM-Party-Cataclysm", 9, 65) local L = mod:GetLocalizedStrings() local wowToc = DBM:GetTOC() if (wowToc >= 100200) then mod.statTypes = "normal,heroic,challenge,timewalker" mod.upgradedMPlus = true mod.sendMainBossGUID = true else mod.statTypes = "normal,heroic" end mod:SetRevision("20240615053330") mod:SetCreatureID(40765) mod:SetEncounterID(1044) mod:RegisterCombat("combat") if (wowToc >= 100200) then --Patch 10.2 or later mod:RegisterEventsInCombat( "SPELL_CAST_START 427672 427456 427668 427670", "SPELL_AURA_APPLIED 427559" ) --[[ (ability.id = 427672 or ability.id = 427456 or ability.id = 427668 or ability.id = 427670) and type = "begincast" or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] --TODO, more timer data needed (longer pulls) local warnAwakenOoze = mod:NewCountAnnounce(427456, 3) local specWarnBubblingFissure = mod:NewSpecialWarningDodge(427672, nil, nil, nil, 2, 2) local specWarnFesteringShockwave = mod:NewSpecialWarningCount(427668, nil, nil, nil, 2, 2) local specWarnCrushingClaw = mod:NewSpecialWarningDefensive(427670, nil, nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(427559, nil, nil, nil, 1, 8) local timerBubblingFissureCD = mod:NewCDTimer(32.3, 427672, nil, nil, nil, 3)--32-34 local timerAwakenOozeCD = mod:NewCDCountTimer(48.5, 427456, nil, nil, nil, 1) local timerFesteringShockwaveCD = mod:NewCDCountTimer(32.7, 427668, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON) local timerCrushingClawCD = mod:NewCDCountTimer(26.7, 427670, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON) mod.vb.oozeCount = 0 mod.vb.festeringCount = 0 mod.vb.clawCount = 0 --Delays usually caused by a 6 second lockout from Festering shockwave on just the tank ability --likely a protection to keep healer from having to heal shockwave and tank at same time --With more data, i'll be able to scrap table and just dynamically apply timer updates automatically, but I want to confirm theory first local clawTimers = {8.2, 26.7, 27.9, 32.7} function mod:OnCombatStart(delay) self.vb.oozeCount = 0 self.vb.festeringCount = 0 self.vb.clawCount = 0 timerCrushingClawCD:Start(8.2-delay, 1) timerBubblingFissureCD:Start(15.5-delay) timerFesteringShockwaveCD:Start(25.2-delay, 1) timerAwakenOozeCD:Start(30.1-delay, 1) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 427672 then specWarnBubblingFissure:Show() specWarnBubblingFissure:Play("watchstep") timerBubblingFissureCD:Start() elseif spellId == 427456 then self.vb.oozeCount = self.vb.oozeCount + 1 warnAwakenOoze:Show(self.vb.oozeCount) timerAwakenOozeCD:Start(nil, self.vb.oozeCount+1) elseif spellId == 427668 then self.vb.festeringCount = self.vb.festeringCount + 1 specWarnFesteringShockwave:Show(self.vb.festeringCount) specWarnFesteringShockwave:Play("carefly") timerFesteringShockwaveCD:Start(nil, self.vb.festeringCount+1) elseif spellId == 427670 then self.vb.clawCount = self.vb.clawCount + 1 if self:IsTanking("player", "boss1", nil, true) then specWarnCrushingClaw:Show() specWarnCrushingClaw:Play("defensive") end local timer = clawTimers[self.vb.clawCount+1] or 26.7 timerCrushingClawCD:Start(timer, self.vb.clawCount+1) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 427559 and args:IsPlayer() and self:AntiSpam(3, 1) then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") end end else --10.1.7 on retail, and Cataclysm classic if it happens (if it doesn't happen old version of mod will be retired) mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 76094 76100 76026", "SPELL_CAST_START 76047 76100" ) --TODO, GTFO for void zones local warnDarkFissure = mod:NewSpellAnnounce(76047, 4) local warnSqueeze = mod:NewTargetNoFilterAnnounce(76026, 3) local warnEnrage = mod:NewSpellAnnounce(76100, 2, nil, "Tank") local specWarnCurse = mod:NewSpecialWarningDispel(76094, "RemoveCurse", nil, 2, 1, 2) local specWarnFissure = mod:NewSpecialWarningDodge(76047, "Tank", nil, nil, 1, 2) local timerDarkFissureCD = mod:NewCDTimer(18.4, 76047, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerSqueeze = mod:NewTargetTimer(6, 76026, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerSqueezeCD = mod:NewCDTimer(29, 76026, nil, nil, nil, 3) local timerEnrage = mod:NewBuffActiveTimer(10, 76100, nil, "Tank|Healer", 2, 5) function mod:SPELL_AURA_APPLIED(args) if args.spellId == 76094 and self:CheckDispelFilter("curse") then specWarnCurse:Show(args.destName) specWarnCurse:Play("helpdispel") elseif args.spellId == 76100 then timerEnrage:Start() elseif args.spellId == 76026 then warnSqueeze:Show(args.destName) timerSqueeze:Start(args.destName) timerSqueezeCD:Start() end end function mod:SPELL_CAST_START(args) if args.spellId == 76047 then if self.Options.SpecWarn76047dodge then specWarnFissure:Show() specWarnFissure:Play("shockwave") else warnDarkFissure:Show() end timerDarkFissureCD:Start() elseif args.spellId == 76100 then warnEnrage:Show() end end end