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.

132 lines
4.6 KiB

local mod = DBM:NewMod(2131, "DBM-Party-BfA", 8, 1001)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20220209045257")
mod:SetCreatureID(131817)
mod:SetEncounterID(2118)
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