You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.4 KiB

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