local mod = DBM:NewMod(190, "DBM-Party-Cataclysm", 10, 77) local L = mod:GetLocalizedStrings() mod.statTypes = "heroic,timewalker" mod:SetRevision("20220920232426") mod:SetCreatureID(24239) mod:SetEncounterID(1193) mod:RegisterCombat("combat") mod:SetMinCombatTime(30) -- Prevent pre-maturely combat-end in cases where none targets the boss? mod:RegisterEventsInCombat( "SPELL_CAST_START 43451 43431 43548", "SPELL_CAST_SUCCESS 43436", "SPELL_AURA_APPLIED 43501 43383 43421", "SPELL_PERIODIC_DAMAGE 43429 43440 61603", "SPELL_PERIODIC_MISSED 43429 43440 61603" ) local warnSiphon = mod:NewTargetNoFilterAnnounce(43501, 3) local warnSpiritBolts = mod:NewSpellAnnounce(43383, 3) local warnSpiritBoltsSoon = mod:NewSoonAnnounce(43383, 5, 2) local specWarnFireNovaTotem = mod:NewSpecialWarningSwitch(43436, "Dps", nil, nil, 1, 2) local specWarnHolyLight = mod:NewSpecialWarningInterrupt(43451, "HasInterrupt", nil, 2, 1, 2) local specWarnFlashHeal = mod:NewSpecialWarningInterrupt(43431, "HasInterrupt", nil, 2, 1, 2) local specWarnHealingWave = mod:NewSpecialWarningInterrupt(43548, "HasInterrupt", nil, 2, 1, 2) local specWarnLifebloom = mod:NewSpecialWarningDispel(43421, "MagicDispeller", nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(43440, nil, nil, nil, 1, 8) local timerSiphon = mod:NewTimer(30, "TimerSiphon", 43501, nil, nil, 3) local timerSpiritBolts = mod:NewBuffActiveTimer(5, 43383, nil, nil, nil, 2) local timerSpiritBoltsNext = mod:NewNextTimer(36, 43383, nil, nil, nil, 2) function mod:OnCombatStart(delay) timerSpiritBoltsNext:Start(15-delay) end function mod:SPELL_CAST_START(args) if args.spellId == 43451 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then specWarnHolyLight:Show(args.sourceName) specWarnHolyLight:Play("kickcast") elseif args.spellId == 43431 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then specWarnFlashHeal:Show(args.sourceName) specWarnFlashHeal:Play("kickcast") elseif args.spellId == 43548 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then specWarnHealingWave:Show(args.sourceName) specWarnHealingWave:Play("kickcast") end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 43436 then specWarnFireNovaTotem:Show() specWarnFireNovaTotem:Play("attacktotem") end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 43501 then local uId = DBM:GetRaidUnitId(args.destName) local class = select(2, UnitClass(uId)) or "unknown" class = class:sub(0, 1):upper()..class:sub(2):lower() warnSiphon:Show(args.destName) timerSiphon:Start(args.spellName, class) elseif args.spellId == 43383 then warnSpiritBolts:Show() warnSpiritBoltsSoon:Schedule(31) timerSpiritBolts:Start() timerSpiritBoltsNext:Start() elseif args.spellId == 43421 then specWarnLifebloom:Show(args.destName) specWarnLifebloom:Play("dispelboss") end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId) if spellId == 43429 and destGUID == UnitGUID("player") and self:AntiSpam(3) then specWarnGTFO:Show() specWarnGTFO:Play("watchfeet") elseif spellId == 43440 and destGUID == UnitGUID("player") and self:AntiSpam(3) then specWarnGTFO:Show() specWarnGTFO:Play("watchfeet") elseif spellId == 61603 and destGUID == UnitGUID("player") and self:AntiSpam(3) then specWarnGTFO:Show() specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE