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.

107 lines
3.5 KiB

local mod = DBM:NewMod(1500, "DBM-Party-Legion", 6, 726)
local L = mod:GetLocalizedStrings()
mod.statTypes = "heroic,mythic,challenge"
mod:SetRevision("20231117105343")
mod:SetCreatureID(98207)
mod:SetEncounterID(1826)
mod:SetUsedIcons(2, 1)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 200284",
"SPELL_AURA_REMOVED 200284",
"SPELL_CAST_START 200227 200024",
"SPELL_PERIODIC_DAMAGE 200040",
"SPELL_PERIODIC_MISSED 200040",
"UNIT_SPELLCAST_SUCCEEDED boss1",
"UNIT_SPELLCAST_CHANNEL_START boss1"
)
--TODO timers are iffy.
--TODO, blink scanning should work but may not if logic errors. May be spammy in certain situations such as pets/etc taunting boss
--["200227-Tangled Web"] = "pull:35.2, 26.6, 21.8",
local warnBlink = mod:NewTargetAnnounce(199811, 4)
local warnWeb = mod:NewTargetAnnounce(200284, 3)
local specWarnBlink = mod:NewSpecialWarningRun(199811, nil, nil, nil, 4, 2)
local yellBlink = mod:NewYell(199811, nil, false)
local specWarnVenomGTFO = mod:NewSpecialWarningMove(200040, nil, nil, nil, 1, 2)
local timerBlinkCD = mod:NewNextTimer(30, 199811, nil, nil, nil, 3)
local timerWebCD = mod:NewCDTimer(21.8, 200284, nil, nil, nil, 3)--21-26
local timerVenomCD = mod:NewCDTimer(30, 200040, nil, nil, nil, 3)--30-33
mod:AddSetIconOption("SetIconOnWeb", 200284, true, 6, {1, 2})
mod.vb.blinkCount = 0
function mod:OnCombatStart(delay)
self.vb.blinkCount = 0
timerBlinkCD:Start(15-delay)
timerVenomCD:Start(25-delay)
timerWebCD:Start(35-delay)
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 200227 then
timerWebCD:Start()
elseif spellId == 200024 and self:AntiSpam(5, 3) then
timerVenomCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 200284 then
warnWeb:CombinedShow(0.5, args.destName)
if self.Options.SetIconOnWeb and args:IsDestTypePlayer() then
self:SetAlphaIcon(0.5, args.destName, 2)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 200284 and self.Options.SetIconOnWeb then
self:SetIcon(args.destName, 0)
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 200040 and destGUID == UnitGUID("player") and self:AntiSpam(2, 1) then
specWarnVenomGTFO:Show()
specWarnVenomGTFO:Play("runaway")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 199809 then--Blink Strikes begin
timerBlinkCD:Start()
self.vb.blinkCount = 0
end
end
--UNIT_SPELLCAST_CHANNEL_STOP method dropped, not because it wasn't returning a valid target, but because DBMs target scanner methods don't work well with pets and fail to announce all strikes because of it
--This method doesn't require target scanning but is 0.6 seconds slower, but won't have a chance to fail if boss targets stupid things like army or spirit beast.
function mod:UNIT_SPELLCAST_CHANNEL_START(uId, _, spellId)
if spellId == 199811 then--Blink Strikes Channel ending
self.vb.blinkCount = self.vb.blinkCount + 1
local targetname = UnitExists("boss1target") and UnitName("boss1target")
if not targetname then
return
end
if UnitIsUnit("boss1target", "player") then
specWarnBlink:Show()
specWarnBlink:Play("runaway")
yellBlink:Yell()
else
warnBlink:Show(targetname)
end
end
end