local mod = DBM:NewMod(2131, "DBM-Party-BfA", 8, 1022) local L = mod:GetLocalizedStrings() mod:SetRevision("20240417180519") mod:SetCreatureID(131817) mod:SetEncounterID(2118) mod.sendMainBossGUID = true mod:SetHotfixNoticeRev(20230528000000) 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 :\ --M+ Off Log --https://www.warcraftlogs.com/reports/cjPnRCWhkrvwd7zD#fight=last&pins=2%24Off%24%23244F4B%24expression%24ability.id%20%3D%20260333%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20260793%20or%20ability.id%20%3D%20260292)%20and%20type%20%3D%20%22begincast%22%20%20or%20type%20%3D%20%22dungeonencounterstart%22%20or%20type%20%3D%20%22dungeonencounterend%22&view=events&translate=true --M+ Frequent Log --https://www.warcraftlogs.com/reports/GQa23ntY8pxJNhHB#fight=last&pins=2%24Off%24%23244F4B%24expression%24ability.id%20%3D%20260333%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20260793%20or%20ability.id%20%3D%20260292)%20and%20type%20%3D%20%22begincast%22%20%20or%20type%20%3D%20%22dungeonencounterstart%22%20or%20type%20%3D%20%22dungeonencounterend%22&view=events --[[ ability.id = 260333 and type = "cast" or (ability.id = 260793 or ability.id = 260292) and type = "begincast" or type = "dungeonencounterstart" or type = "dungeonencounterend" --]] local specWarnIndigestion = mod:NewSpecialWarningSpell(260793, "Tank", nil, nil, 1, 2) local specWarnCharge = mod:NewSpecialWarningDodgeCount(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(49.7, 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:NewCDCountTimer(44.9, 260333, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON) mod:AddNamePlateOption("NPAuraMetamorphosis", 260416) mod.vb.chargeCast = 0 mod.vb.tantrumCast = 0 local function updateAllTimers(self, ICD) DBM:Debug("updateAllTimers running", 3) if timerTantrumCD:GetRemaining(self.vb.tantrumCast+1) < ICD then local elapsed, total = timerTantrumCD:GetTime(self.vb.tantrumCast+1) local extend = ICD - (total-elapsed) DBM:Debug("timerTantrumCD extended by: "..extend, 2) timerTantrumCD:Update(elapsed, total+extend, self.vb.tantrumCast+1) end if timerChargeCD:GetRemaining() < ICD then local elapsed, total = timerChargeCD:GetTime() local extend = ICD - (total-elapsed) DBM:Debug("timerChargeCD extended by: "..extend, 2) timerChargeCD:Update(elapsed, total+extend) end if timerIndigestionCD:GetRemaining() < ICD then local elapsed, total = timerIndigestionCD:GetTime() local extend = ICD - (total-elapsed) DBM:Debug("timerIndigestionCD extended by: "..extend, 2) timerIndigestionCD:Update(elapsed, total+extend) end end function mod:OnCombatStart(delay) self.vb.chargeCast = 0 self.vb.tantrumCast = 0 if self.Options.NPAuraMetamorphosis then DBM:FireEvent("BossMod_EnableHostileNameplates") end --he casts random ability first, it's charge like 95% of time though timerIndigestionCD:Start(8.3-delay) timerChargeCD:Start(8.3-delay) timerTantrumCD:Start(45, 1) 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 specWarnIndigestion:Show() specWarnIndigestion:Play("breathsoon") timerIndigestionCD:Start(49.7) updateAllTimers(self, 10.9)--10.9 for tantrum, 12 for charge elseif spellId == 260292 then self.vb.chargeCast = self.vb.chargeCast + 1 specWarnCharge:Show(self.vb.chargeCast) specWarnCharge:Play("chargemove") timerChargeCD:Start(20) updateAllTimers(self, 5)--Never seen it delay indigestion but have seen it delay tantrum many times by at least 5 sec end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 260333 then--Tantrum self.vb.chargeCast = 0 self.vb.tantrumCast = self.vb.tantrumCast + 1 timerChargeCD:AddTime(6.1)--Seems to add 7 seconds static to charge timer, period. charge CD is either 20, or 27 if a tantrum was in between charges, (Unless spell queued but that is handled by auto correct) specWarnTantrum:Show(self.vb.tantrumCast) specWarnTantrum:Play("aesoon") timerTantrumCD:Start(nil, self.vb.tantrumCast+1) -- updateAllTimers(self, 13.4)--Unknown but I imagine it's like 5 sec at most, some logs make it appear 6 13 or 18, but all are incorrect assumptions end end