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.

100 lines
3.3 KiB

local mod = DBM:NewMod(2339, "DBM-Party-BfA", 11, 1178)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20221016002954")
mod:SetCreatureID(144246)
mod:SetEncounterID(2258)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 291946 291973",
"SPELL_CAST_SUCCESS 291918 294929",
"SPELL_AURA_APPLIED 291972 294929",
"SPELL_AURA_APPLIED_DOSE 294929"
)
--[[
(ability.id = 291946 or ability.id = 291973) and type = "begincast"
or (ability.id = 291918 or ability.id = 294929) and type = "cast"
--]]
--TODO, can't see a way to detect Robo waste drops, schedule a timer loop?
local warnAirDrop = mod:NewCountAnnounce(291930, 2)
local warnExplosiveLeap = mod:NewTargetNoFilterAnnounce(291972, 3)
local warnBlazingChomp = mod:NewStackAnnounce(294929, 2, nil, "Tank|Healer")
local specWarnExplosiveLeap = mod:NewSpecialWarningMoveAway(291972, nil, nil, nil, 1, 2)
local yellExplosiveLeap = mod:NewYell(291972)
local specWarnVentingFlames = mod:NewSpecialWarningMoveTo(291946, nil, nil, nil, 3, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(238028, nil, nil, nil, 1, 8)
local timerAurDropCD = mod:NewNextTimer(32.7, 291930, nil, nil, nil, 3)
local timerExplosiveLeapCD = mod:NewCDTimer(31.9, 291972, nil, nil, nil, 3)
local timerVentingFlamesCD = mod:NewCDTimer(13.4, 291946, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
local timerBlazingChompCD = mod:NewCDTimer(15.8, 294929, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
mod:AddRangeFrameOption(10, 291972)
mod.vb.airDropCount = 0
function mod:OnCombatStart(delay)
self.vb.airDropCount = 0
timerAurDropCD:Start(7.2-delay)--SUCCESS
timerBlazingChompCD:Start(10.7-delay)--SUCCESS
timerVentingFlamesCD:Start(15.5-delay)--START
timerExplosiveLeapCD:Start(38.6-delay)--START
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 291946 then
specWarnVentingFlames:Show(DBM_COMMON_L.BREAK_LOS)
specWarnVentingFlames:Play("findshelter")
--15.5, 33.9, 34.0, 34.0"
timerVentingFlamesCD:Start()
elseif spellId == 291973 then
--38.6, 33.9, 34.0, 33.4
timerExplosiveLeapCD:Start()
if self.Options.RangeFrame then
DBM.RangeCheck:Show(10, nil, nil, nil, nil, 15)--Auto hide after about 15 seconds (12 plus cast)
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 291918 then
self.vb.airDropCount = self.vb.airDropCount + 1
warnAirDrop:Show(self.vb.airDropCount)
--7.2, 26.3, 34.0, 34.0, 34.0
timerAurDropCD:Start(self.vb.airDropCount == 1 and 26.3 or 34)
elseif spellId == 294929 then
--10.7, 18.2, 18.2, 17.0, 17.0, 15.8
timerBlazingChompCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 291972 then
warnExplosiveLeap:CombinedShow(0.3, args.destName)
if args:IsPlayer() then
specWarnExplosiveLeap:Show()
specWarnExplosiveLeap:Play("runout")
yellExplosiveLeap:Yell()
end
elseif spellId == 294929 then
local amount = args.amount or 1
warnBlazingChomp:Show(args.destName, amount)
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED