|
|
|
|
local mod = DBM:NewMod(2131, "DBM-Party-BfA", 8, 1001)
|
|
|
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
|
|
|
|
|
|
mod:SetRevision("20230504231118")
|
|
|
|
|
mod:SetCreatureID(131817)
|
|
|
|
|
mod:SetEncounterID(2118)
|
|
|
|
|
mod.sendMainBossGUID = true
|
|
|
|
|
|
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
|
|
|
|
|
|
mod:RegisterEventsInCombat(
|
|
|
|
|
"SPELL_AURA_APPLIED 260416 260333",
|
|
|
|
|
"SPELL_AURA_REMOVED 260416",
|
|
|
|
|
"SPELL_CAST_START 260793 260292",
|
|
|
|
|
"SPELL_CAST_SUCCESS 260333"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
--TODO, a really long normal pull to get timer interactions correct when there are no tantrums
|
|
|
|
|
--These don't exist on WCL, or at least not in a way they can be found easily :\
|
|
|
|
|
--[[
|
|
|
|
|
ability.id = 260333 and type = "cast"
|
|
|
|
|
or (ability.id = 260793 or ability.id = 260292) and type = "begincast"
|
|
|
|
|
--]]
|
|
|
|
|
local specWarnIndigestion = mod:NewSpecialWarningSpell(260793, "Tank", nil, nil, 1, 2)
|
|
|
|
|
local specWarnCharge = mod:NewSpecialWarningDodge(260292, nil, nil, nil, 3, 2)
|
|
|
|
|
local specWarnTantrum = mod:NewSpecialWarningCount(260333, nil, nil, nil, 2, 2)
|
|
|
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(238028, nil, nil, nil, 1, 8)
|
|
|
|
|
|
|
|
|
|
local timerIndigestionCD = mod:NewCDTimer(70, 260793, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
|
|
|
local timerChargeCD = mod:NewCDTimer(20.7, 260292, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
|
local timerTantrumCD = mod:NewCDTimer(13, 260333, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
|
|
|
|
|
|
|
|
|
|
mod:AddNamePlateOption("NPAuraMetamorphosis", 260416)
|
|
|
|
|
|
|
|
|
|
mod.vb.IndigestionCast = false--Never used more than once per cycle, whereass charge may or may not be cast twice
|
|
|
|
|
mod.vb.chargeCast = 0
|
|
|
|
|
mod.vb.tantrumCast = 0
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatStart(delay)
|
|
|
|
|
self.vb.IndigestionCast = false
|
|
|
|
|
self.vb.chargeCast = 0
|
|
|
|
|
self.vb.tantrumCast = 0
|
|
|
|
|
if self.Options.NPAuraMetamorphosis then
|
|
|
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
|
|
|
end
|
|
|
|
|
--he casts random ability first
|
|
|
|
|
timerIndigestionCD:Start(8.3-delay)
|
|
|
|
|
timerChargeCD:Start(8.3-delay)
|
|
|
|
|
--timerTantrumCD:Start(45)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:OnCombatEnd()
|
|
|
|
|
if self.Options.NPAuraMetamorphosis then
|
|
|
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 260416 then
|
|
|
|
|
if self.Options.NPAuraMetamorphosis then
|
|
|
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId, nil, 8)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 260416 then
|
|
|
|
|
if self.Options.NPAuraMetamorphosis then
|
|
|
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 260793 then
|
|
|
|
|
self.vb.IndigestionCast = true
|
|
|
|
|
specWarnIndigestion:Show()
|
|
|
|
|
specWarnIndigestion:Play("breathsoon")
|
|
|
|
|
--Charge is always 12 seconds after indigiestion in EVERY combo
|
|
|
|
|
--Also, regardless of time left on charg timer, Indigestion always resets charge to 12
|
|
|
|
|
timerChargeCD:Stop()
|
|
|
|
|
timerChargeCD:Start(12)
|
|
|
|
|
if not self:IsNormal() then
|
|
|
|
|
if self.vb.chargeCast == 0 then--No charge yet, it means it's one of the two Indigestion first combos
|
|
|
|
|
if self.vb.tantrumCast == 0 then--Indigestion, charge, charge, Tantrum
|
|
|
|
|
--Very niche combat start condition. This segment slightly longer than rest
|
|
|
|
|
timerTantrumCD:Start(43.7)
|
|
|
|
|
else
|
|
|
|
|
--It's only Indigestion, charge, Tantrum
|
|
|
|
|
timerTantrumCD:Start(26.7)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
timerIndigestionCD:Start(43.7)
|
|
|
|
|
--(will probably never be accurate, since WCL lacks tools to search for normal dungeons)
|
|
|
|
|
end
|
|
|
|
|
elseif spellId == 260292 then
|
|
|
|
|
self.vb.chargeCast = self.vb.chargeCast + 1
|
|
|
|
|
specWarnCharge:Show()
|
|
|
|
|
specWarnCharge:Play("chargemove")
|
|
|
|
|
if not self:IsNormal() then
|
|
|
|
|
--If charge is first, Indigestion will always be cast 10.9 seconds after
|
|
|
|
|
if not self.vb.IndigestionCast then--charge, indigestion, charge combo.
|
|
|
|
|
timerIndigestionCD:Start(10.9)
|
|
|
|
|
timerTantrumCD:Start(37.6)
|
|
|
|
|
else--Indigestion was first, check for niche Indigestion, charge, charge, Tantrum combo
|
|
|
|
|
if self.vb.tantrumCast == 0 then
|
|
|
|
|
timerChargeCD:Start(20)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else--On normal, just always start the 20 second timer, but allow it to still be corrected by Indigestion Cast
|
|
|
|
|
timerChargeCD:Start(20)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
|
|
|
local spellId = args.spellId
|
|
|
|
|
if spellId == 260333 then
|
|
|
|
|
self.vb.IndigestionCast = false
|
|
|
|
|
self.vb.chargeCast = 0
|
|
|
|
|
self.vb.tantrumCast = self.vb.tantrumCast + 1
|
|
|
|
|
timerChargeCD:Stop()
|
|
|
|
|
specWarnTantrum:Show(self.vb.tantrumCast)
|
|
|
|
|
specWarnTantrum:Play("aesoon")
|
|
|
|
|
--Start both bars, what he uses first is random
|
|
|
|
|
timerIndigestionCD:Start(18.2)
|
|
|
|
|
timerChargeCD:Start(18.2)
|
|
|
|
|
end
|
|
|
|
|
end
|