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.
102 lines
3.5 KiB
102 lines
3.5 KiB
local mod = DBM:NewMod(2115, "DBM-Party-BfA", 7, 1001)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20221230022007")
|
|
mod:SetCreatureID(129231)
|
|
mod:SetEncounterID(2107)
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_AURA_APPLIED 259853",
|
|
"SPELL_CAST_START 260669 259940",
|
|
"SPELL_CAST_SUCCESS 259022 270042 259856",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1 boss2"
|
|
)
|
|
|
|
--TODO, video fight to figure out whats going on with azerite and gushing and what makes them diff.
|
|
--TODO, more work on blast timings, two casts isn't enough to establish a timer
|
|
local warnAxeriteCatalyst = mod:NewSpellAnnounce(259022, 2)--Cast often, so general warning not special
|
|
local warnPoropellantBlast = mod:NewTargetNoFilterAnnounce(259940, 2)
|
|
|
|
local specWarnChemBurn = mod:NewSpecialWarningDispel(259853, "RemoveMagic", nil, 2, 1, 2)
|
|
local specWarnPoropellantBlast = mod:NewSpecialWarningYou(259940, nil, nil, nil, 1, 2)
|
|
local yellPoropellantBlast = mod:NewYell(259940)
|
|
local specWarnPoropellantBlastNear = mod:NewSpecialWarningClose(259940, nil, nil, nil, 1, 2)
|
|
|
|
local timerAxeriteCatalystCD = mod:NewCDTimer(13, 259022, nil, nil, nil, 3)
|
|
local timerChemBurnCD = mod:NewCDTimer(13, 259853, nil, nil, 2, 5, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON)
|
|
--local timerPropellantBlastCD = mod:NewCDTimer(13, 259940, nil, nil, nil, 3)--Longer pull/more data needed (32.5, 6.0, 36.1)
|
|
--local timerGushingCatalystCD = mod:NewCDTimer(13, 275992, nil, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON)
|
|
|
|
mod.vb.chemBurnCast = 0
|
|
mod.vb.azeriteCataCast = 0
|
|
|
|
function mod:BlastTarget(targetname)
|
|
if not targetname then return end
|
|
if targetname == UnitName("player") then
|
|
specWarnPoropellantBlast:Show()
|
|
specWarnPoropellantBlast:Play("targetyou")
|
|
yellPoropellantBlast:Yell()
|
|
elseif self:CheckNearby(10, targetname) then
|
|
specWarnPoropellantBlastNear:Show(targetname)
|
|
specWarnPoropellantBlastNear:Play("runaway")
|
|
else
|
|
warnPoropellantBlast:Show(targetname)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.chemBurnCast = 0
|
|
self.vb.azeriteCataCast = 0
|
|
timerAxeriteCatalystCD:Start(4-delay)
|
|
timerChemBurnCD:Start(12-delay)--SUCCESS
|
|
--timerPropellantBlastCD:Start(31-delay)
|
|
-- if not self:IsNormal() then
|
|
-- timerGushingCatalystCD:Start(1-delay)
|
|
-- end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 259853 and self:CheckDispelFilter("magic") then
|
|
specWarnChemBurn:CombinedShow(1, args.destName)
|
|
specWarnChemBurn:ScheduleVoice(1, "dispelnow")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 260669 or spellId == 259940 then
|
|
self:BossTargetScanner(args.sourceGUID, "BlastTarget", 0.1, 8)
|
|
--timerPropellantBlastCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 259022 or spellId == 270042 then
|
|
warnAxeriteCatalyst:Show()
|
|
timerAxeriteCatalystCD:Start()
|
|
elseif spellId == 259856 and self:AntiSpam(5, 1) then
|
|
self.vb.chemBurnCast = self.vb.chemBurnCast + 1
|
|
if self.vb.chemBurnCast % 2 == 0 then
|
|
timerChemBurnCD:Start(27)
|
|
else
|
|
timerChemBurnCD:Start(15)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, spellId)
|
|
if spellId == 270028 then
|
|
self.vb.azeriteCataCast = self.vb.azeriteCataCast + 1
|
|
warnAxeriteCatalyst:Show()
|
|
--timerGushingCatalystCD:Start()
|
|
if self.vb.azeriteCataCast % 2 == 0 then
|
|
timerAxeriteCatalystCD:Start(27)
|
|
else
|
|
timerAxeriteCatalystCD:Start(15)
|
|
end
|
|
end
|
|
end
|
|
|