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.

127 lines
4.4 KiB

local mod = DBM:NewMod(2116, "DBM-Party-BfA", 7, 1001)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20220209045257")
mod:SetCreatureID(129232)
mod:SetEncounterID(2108)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 260189 262515 260190 260829",
"SPELL_AURA_REMOVED 260189 262515",
"SPELL_AURA_REMOVED_DOSE 260189",
"SPELL_CAST_START 260280 271456",
"SPELL_CAST_SUCCESS 260813 271456 276212"
)
--TODO: Maybe general range 6 for Micro Missiles from BOOMBA?
local warnDrill = mod:NewStackAnnounce(260189, 2)
local warnHomingMissile = mod:NewTargetAnnounce(260811, 3)
--local warnDrillSmashCast = mod:NewCastAnnounce(271456, 2)
local warnDrillSmash = mod:NewTargetNoFilterAnnounce(271456, 2)
local warnSummonBooma = mod:NewSpellAnnounce(276212, 2)
--Stage One: Big Guns
local specWarnGatlingGun = mod:NewSpecialWarningDodge(260280, nil, nil, nil, 3, 8)
local specWarnHomingMissile = mod:NewSpecialWarningMoveAway(260811, nil, nil, nil, 1, 2)
local yellHomingMissile = mod:NewYell(260811)
local specWarnHomingMissileNear = mod:NewSpecialWarningClose(260811, nil, nil, nil, 1, 2)
--Stage Two: Drill
local specWarnDrillSmash = mod:NewSpecialWarningMoveTo(271456, nil, nil, nil, 1, 2)
local yellDrillSmash = mod:NewYell(271456)
local specWarnHeartseeker = mod:NewSpecialWarningYou(262515, nil, nil, nil, 1, 2)
local specWarnHeartseekerOther = mod:NewSpecialWarningTarget(262515, "Tank", nil, nil, 1, 2)
local yellHeartseeker = mod:NewYell(262515)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(238028, nil, nil, nil, 1, 8)
--Stage One: Big Guns
local timerGatlingGunCD = mod:NewCDTimer(20.1, 260280, nil, nil, nil, 3)
local timerHomingMissileCD = mod:NewCDTimer(21, 260811, nil, nil, nil, 3)
--Stage Two: Drill
local timerDrillSmashCD = mod:NewCDTimer(8.4, 271456, nil, nil, nil, 3)--8.4--9.9
function mod:DrillTarget(targetname)
if not targetname then return end
if self:AntiSpam(4, targetname) then--Antispam to lock out redundant later warning from firing if this one succeeds
if targetname == UnitName("player") then
specWarnDrillSmash:Show()
specWarnDrillSmash:Play("targetyou")
yellDrillSmash:Yell()
else
warnDrillSmash:Show(targetname)
end
end
end
function mod:OnCombatStart(delay)
timerHomingMissileCD:Start(4.9-delay)
timerGatlingGunCD:Start(14.9-delay)
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 260189 then--Configuration: Drill
timerGatlingGunCD:Stop()
timerHomingMissileCD:Stop()
timerDrillSmashCD:Start(17.3)
elseif spellId == 260190 then--Configuration: Combat
timerDrillSmashCD:Stop()
timerHomingMissileCD:Start(7)
timerGatlingGunCD:Start(17)
elseif spellId == 262515 then
if args:IsPlayer() then
specWarnHeartseeker:Show()
specWarnHeartseeker:Play("targetyou")
yellHeartseeker:Yell()
else
specWarnHeartseekerOther:Show(args.destName)
specWarnHeartseekerOther:Play("gathershare")
end
elseif spellId == 260829 then
if args:IsPlayer() then
specWarnHomingMissile:Show()
specWarnHomingMissile:Play("runout")
yellHomingMissile:Yell()
elseif self:CheckNearby(20, args.destName) then
specWarnHomingMissileNear:Show(args.destName)
specWarnHomingMissileNear:Play("watchstep")
else
warnHomingMissile:Show(args.destName)
end
end
end
function mod:SPELL_AURA_REMOVED_DOSE(args)
local spellId = args.spellId
if spellId == 260189 then
local amount = args.amount or 0
warnDrill:Cancel()
warnDrill:Schedule(0.5, args.destName, amount)
end
end
mod.SPELL_AURA_REMOVED = mod.SPELL_AURA_REMOVED_DOSE
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 260280 then
specWarnGatlingGun:Show()
specWarnGatlingGun:Play("behindboss")
specWarnGatlingGun:ScheduleVoice(1.5, "keepmove")
timerGatlingGunCD:Start()
elseif spellId == 271456 then
self:ScheduleMethod(0.5, "BossTargetScanner", args.sourceGUID, "DrillTarget", 0.1, 12, true)
timerDrillSmashCD:Start()
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 260813 then
timerHomingMissileCD:Start()
elseif spellId == 271456 and self:AntiSpam(6, args.destName) then--Backup, should only trigger if targetscan failed
warnDrillSmash:Show(args.destName)
elseif spellId == 276212 then
warnSummonBooma:Show()
end
end