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.

103 lines
3.1 KiB

local mod = DBM:NewMod(1884, "DBM-BrokenIsles", 1, 822)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240426185020")
mod:SetCreatureID(117303)
--mod:SetEncounterID(1880)
mod:SetReCombatTime(20)
mod:EnableWBEngageSync()--Enable syncing engage in outdoors
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 233614 234452",
"SPELL_CAST_SUCCESS 233570",
"SPELL_AURA_APPLIED 233570 233568",
"SPELL_PERIODIC_DAMAGE 233850",
"SPELL_PERIODIC_MISSED 233850"
)
--TODO, actual timer data and verify spellIds
--TODO, use nameplate auras or HUDMap (since it is outdoors after all)
local warnIncitePanic = mod:NewSpellAnnounce(233568, 2, nil, false)--Off cause fuckups may result in heavy spam
local warnShadowBarrage = mod:NewSpellAnnounce(234452, 2)
local specWarnIncitePanic = mod:NewSpecialWarningYou(233568, nil, nil, nil, 2, 2)
local specWarnIncitePanicNear = mod:NewSpecialWarningClose(233568, nil, nil, nil, 1, 2)
local specWarnVirulentInfection = mod:NewSpecialWarningMove(233850, nil, nil, nil, 1, 2)
local timerIncitePanicCD = mod:NewCDTimer(14.6, 233568, nil, nil, nil, 1)
local timerPestilenceCD = mod:NewCDTimer(14.2, 233614, nil, nil, nil, 3)
local timerShadowBarrageCD = mod:NewCDTimer(16.7, 234452, nil, nil, nil, 2)
--mod:AddReadyCheckOption(37460, false)
mod:AddRangeFrameOption(8, 233568)
local PanicDebuff = DBM:GetSpellName(233568)
local debuffFilter
do
debuffFilter = function(uId)
if DBM:UnitDebuff(uId, PanicDebuff) then
return true
end
end
end
function mod:OnCombatStart(delay, yellTriggered)
PanicDebuff = DBM:GetSpellName(233568)
if yellTriggered then
end
if self.Options.RangeFrame then
DBM.RangeCheck:Show(8, debuffFilter)
end
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 233614 then
timerPestilenceCD:Start()
elseif spellId == 234452 then
warnShadowBarrage:Show()
timerShadowBarrageCD:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 233570 and self:AntiSpam(4, 3) then
timerIncitePanicCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 233568 or spellId == 233570 then
warnIncitePanic:CombinedShow(0.5, args.destName)
if args:IsPlayer() then
specWarnIncitePanic:Show()
specWarnIncitePanic:Play("scatter")
elseif self:CheckNearby(10, args.destName) and not DBM:UnitDebuff("player", args.spellName) then
specWarnIncitePanicNear:CombinedShow(0.5, args.destName)
if self:AntiSpam(3, 1) then
specWarnIncitePanicNear:Play("scatter")
end
end
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 233850 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then
specWarnVirulentInfection:Show()
specWarnVirulentInfection:Play("runaway")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE