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.
106 lines
3.5 KiB
106 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
|
|
|