local mod = DBM:NewMod(2096, "DBM-Party-BfA", 9, 1002) local L = mod:GetLocalizedStrings() mod:SetRevision("20240428124541") mod:SetCreatureID(127503) mod:SetEncounterID(2104) mod:SetUsedIcons(1) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 256038 256105", "SPELL_AURA_REMOVED 256038 256105", "SPELL_CAST_START 256083 256198 256199 263345", "SPELL_CAST_SUCCESS 256038 256101" ) local warnAZBlast = mod:NewSpellAnnounce(256199, 2) local warnAZIncendiary = mod:NewSpellAnnounce(256198, 2) local warnDeadeye = mod:NewTargetNoFilterAnnounce(256038, 4) local warnExplosiveBurst = mod:NewTargetAnnounce(256105, 2) local specWarnCrossIgnition = mod:NewSpecialWarningSpell(256083, nil, nil, nil, 2, 2)--If the lines have better visuals later maybe i'll say farfromline/dodge, but for now, treating as unavoidable aoe local specWarnDeadeye = mod:NewSpecialWarningDefensive(256038, nil, nil, nil, 1, 2) local yellDeadeye = mod:NewYell(256038) local specWarnExplosiveBurst = mod:NewSpecialWarningMoveAway(256105, nil, nil, nil, 1, 2) local yellExplosiveBurst = mod:NewYell(256105) local specWarnMassiveBlast = mod:NewSpecialWarningDodge(263345, nil, nil, nil, 2, 2) local timerARBlastCD = mod:NewCDTimer(44.8, 256199, nil, nil, nil, 3) local timerARICD = mod:NewCDTimer(44.8, 256198, nil, nil, nil, 3) local timerCrossIgnitionCD = mod:NewCDTimer(44.8, 256083, nil, nil, nil, 2) local timerDeadeyeCD = mod:NewCDTimer(23, 256038, nil, nil, nil, 3) local timerExplosiveBurstCD = mod:NewCDTimer(44.8, 256105, nil, nil, nil, 3) local timerMassiveBlastCD = mod:NewCDTimer(21.8, 263345, nil, nil, nil, 3) mod:AddSetIconOption("SetIconOnDeadeye", 256038, true, 0, {1}) mod:AddInfoFrameOption(256038) mod:AddRangeFrameOption(5, 256105) mod.vb.crossCount = 0 mod.vb.burstCount = 0 function mod:OnCombatStart(delay) self.vb.crossCount = 0 self.vb.burstCount = 0 timerARICD:Start(5.1-delay) timerExplosiveBurstCD:Start(11.5-delay) timerCrossIgnitionCD:Start(16-delay) timerMassiveBlastCD:Start(17-delay) timerDeadeyeCD:Start(23.1-delay) if self.Options.InfoFrame then DBM.InfoFrame:SetHeader(DBM:GetSpellName(256044)) DBM.InfoFrame:Show(5, "reverseplayerbaddebuffbyspellid", 256044)--Must match spellID to filter other debuffs out end 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_AURA_APPLIED(args) local spellId = args.spellId if spellId == 256038 then--Targetting deadeye if args:IsPlayer() then specWarnDeadeye:Show() specWarnDeadeye:Play("targetyou") yellDeadeye:Yell() else warnDeadeye:Show(args.destName) end if self.Options.SetIconOnDeadeye then self:SetIcon(args.destName, 1) end elseif spellId == 256105 then warnExplosiveBurst:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnExplosiveBurst:Show() specWarnExplosiveBurst:Play("runout") yellExplosiveBurst:Yell() if self.Options.RangeFrame then DBM.RangeCheck:Show(5) end end end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 256038 and self.Options.SetIconOnDeadeye then self:SetIcon(args.destName, 0) elseif spellId == 256105 and args:IsPlayer() and self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 256083 then self.vb.crossCount = self.vb.crossCount + 1 specWarnCrossIgnition:Show() specWarnCrossIgnition:Play("aesoon") --16.0, 27.5, 17.0, 27.9 if self.vb.crossCount % 2 == 0 then timerCrossIgnitionCD:Start(17)--20? else timerCrossIgnitionCD:Start(27.5) end elseif spellId == 256198 then warnAZIncendiary:Show() --Blast next timerARBlastCD:Start(22.2) elseif spellId == 256199 then warnAZBlast:Show() --Incendiary next timerARICD:Start(22.2) elseif spellId == 263345 then specWarnMassiveBlast:Show() specWarnMassiveBlast:Play("shockwave")--Shockwave, but from cannon not boss timerMassiveBlastCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 256038 then timerDeadeyeCD:Start() elseif spellId == 256101 then self.vb.burstCount = self.vb.burstCount + 1 --12.9, 15.8, 7.3, 25.5 /// 12.6, 15.8, 7.3, 15.0, 7.3, 15.8, 7.3 --12.1, 15.8, 7.3, 25.5 if self.vb.burstCount % 2 == 0 then timerExplosiveBurstCD:Start(7.3) else timerExplosiveBurstCD:Start(15) end end end