local mod = DBM:NewMod(2449, "DBM-Party-Shadowlands", 9, 1194) local L = mod:GetLocalizedStrings() mod:SetRevision("20231020041658") mod:SetCreatureID(175546) mod:SetEncounterID(2419) mod:SetHotfixNoticeRev(20220405000000) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 350517 347151", "SPELL_CAST_SUCCESS 352345", "SPELL_AURA_APPLIED 354334 350134", "SPELL_PERIODIC_DAMAGE 358947", "SPELL_PERIODIC_MISSED 358947" ) --Notes: Cannon Barrage has no entries for cast, only damage, no clean timers/warnings for it so omitted --TODO, Fix hook swipe when blizzard re-enables the ability they accidentally deleted. --[[ (ability.id = 347149 or ability.id = 350517 or ability.id = 347151) and type = "begincast" or ability.id = 352345 and type = "cast" or ability.id = 350134 and type = "applydebuff" or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] --Boss local warnHookd = mod:NewTargetNoFilterAnnounce(354334, 2, nil, "Healer") local warnDoubleTime = mod:NewCastAnnounce(350517, 3) local specWarnInfiniteBreath = mod:NewSpecialWarningCount(347149, "Tank", nil, nil, 1, 2) local specWarnAnchorShot = mod:NewSpecialWarningYou(352345, nil, nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(358947, nil, nil, nil, 1, 8) local timerInfiniteBreathCD = mod:NewCDTimer(12, 347149, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON) --local timerHookSwipeCD = mod:NewCDTimer(12, 347151, nil, nil, nil, 3, nil, DBM_COMMON_L.HEALER_ICON) local timerDoubleTimeCD = mod:NewCDTimer(54.6, 350517, nil, nil, nil, 3) --mod:GroupSpells(347151, 354334)--Group Hook'd debuff with Hook Swipe --Corsair Cannoneers --local warnCannonBarrage = mod:NewSpellAnnounce(347370, 3) local warnAnchorShot = mod:NewTargetNoFilterAnnounce(352345, 3) local timerAnchorShotCD = mod:NewCDTimer(11, 352345, nil, nil, nil, 3) mod.vb.breathCount = 0 mod.vb.anchorCount = 0 --Maybe worth adding? --"Super Saison-356133-npc:180015-000048C7C5 = pull:28.5, 30.4, 30.4", --"Sword Toss-368661-npc:179386-000048C7C6 = pull:12.7, 14.6, 14.6", --These are handled different right now but might sequence if other handling faulters --"Infinite Breath-347149-npc:175546-000048CB60 = pull:15.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 7.0, 12.0, 12.0, 12.0, 12.0, 7.0, 12.0, 12.0, 12.0", -- [9] --"Anchor Shot-352345-npc:176178-000048C7C5 = pull:59.0, 21.0, 20.0, 14.0, 21.0, 20.0, 14.0, 21.0, 20.0", -- [1] function mod:OnCombatStart(delay) self.vb.breathCount = 0 self.vb.anchorCount = 0 -- timerHookSwipeCD:Start(8.2-delay)--April 5th hotfixes broke it and he doesn't cast this anymore timerInfiniteBreathCD:Start(12-delay) timerDoubleTimeCD:Start(55-delay) --Cannoneers timerAnchorShotCD:Start(58.9-delay) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 350517 then warnDoubleTime:Show() timerDoubleTimeCD:Start() --When he casts double time it removes 5 seconds from current breath timer timerInfiniteBreathCD:RemoveTime(5) --It also removes 6 seconds from current Anchor Shot timer -- timerAnchorShotCD:RemoveTime(6)--Handled via counting for now, but counting may fail if pull is long enough elseif spellId == 347151 then -- timerHookSwipeCD:Start()--Work Needed end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 352345 then self.vb.anchorCount = self.vb.anchorCount + 1 if args:IsPlayer() then specWarnAnchorShot:Show() specWarnAnchorShot:Play("targetyou") else warnAnchorShot:Show(args.destName) end if self.vb.anchorCount % 3 == 0 then timerAnchorShotCD:Start(14) else timerAnchorShotCD:Start(20) end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 354334 then warnHookd:Show(args.destName) elseif spellId == 350134 then self.vb.breathCount = self.vb.breathCount + 1 specWarnInfiniteBreath:Show(self.vb.breathCount) specWarnInfiniteBreath:Play("breathsoon") timerInfiniteBreathCD:Start() end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 358947 and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE