local mod = DBM:NewMod(2532, "DBM-Aberrus", nil, 1208) local L = mod:GetLocalizedStrings() mod:SetRevision("20230403104939") mod:SetCreatureID(202375) mod:SetEncounterID(2689) mod:SetUsedIcons(8, 7, 6, 4, 3, 2, 1) mod:SetHotfixNoticeRev(20230402000000) --mod:SetMinSyncRevision(20221215000000) --mod.respawnTime = 29 mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 406678 405812 405919 403978 405736", "SPELL_CAST_SUCCESS 404007 406725", "SPELL_AURA_APPLIED 405592 404010 404942", "SPELL_AURA_APPLIED_DOSE 404942", "SPELL_AURA_REMOVED 404010", "SPELL_DAMAGE 404955", "SPELL_MISSED 404955", -- "SPELL_PERIODIC_DAMAGE", -- "SPELL_PERIODIC_MISSED", "UNIT_DIED" ) --[[ (ability.id = 406678 or ability.id = 406725 or ability.id = 406725 or ability.id = 406725 or ability.id = 406725 or ability.id = 406725) and type = "begincast" or (ability.id = 404007 or ability.id = 406725) and type = "cast" --]] --TODO, icon method for golems will likely be changed to broodkeeper method since that's what BW is likely to use, but for testing purposes a basic incremental apply per set is probably fine --TODO, GTFO for standing in fire traps local warnSoakedShrapnal = mod:NewAddsLeftAnnounce(404955, 2) local warnScatterTraps = mod:NewCountAnnounce(404533, 2) local warnSalvageParts = mod:NewTargetNoFilterAnnounce(405592, 1) local warnSearingClaws = mod:NewStackAnnounce(404942, 2, nil, "Tank|Healer") local specWarnTacticalDestruction = mod:NewSpecialWarningDodgeCount(406678, nil, nil, nil, 1, 2) local specWarnDragonDeezTraps = mod:NewSpecialWarningDodgeCount(405736, nil, nil, nil, 1, 2) local specWarnAnimateGolems = mod:NewSpecialWarningSwitchCount(405812, nil, nil, nil, 1, 2) local specWarnActivateTrap = mod:NewSpecialWarningInterruptCount(405919, "HasInterrupt", nil, nil, 1, 2) local specWarnBlastWave = mod:NewSpecialWarningCount(403978, nil, nil, nil, 2, 2) local specWarnUnstableEmbers = mod:NewSpecialWarningMoveAway(404007, nil, nil, nil, 1, 2) local yellUnstableEmbers = mod:NewShortYell(404007) local specWarnSearingClawsTaunt = mod:NewSpecialWarningTaunt(404942, nil, nil, nil, 1, 2) --local specWarnGTFO = mod:NewSpecialWarningGTFO(370648, nil, nil, nil, 1, 8) local timerTacticalDestructionCD = mod:NewCDCountTimer(61.5, 406678, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) local timerShrapnalBombCD = mod:NewCDCountTimer(42.5, 406725, nil, nil, nil, 3) local timerShrapnalBomb = mod:NewCastTimer(30, 406725, nil, nil, nil, 2) local timerAnimateGolemsCD = mod:NewCDCountTimer(60.2, 405812, nil, nil, nil, 1) local timerBlastWaveCD = mod:NewCDCountTimer(33.2, 403978, nil, nil, nil, 2) local timerUnstableEmbersCD = mod:NewCDCountTimer(20.7, 404007, nil, nil, nil, 3, nil, DBM_COMMON_L.HEALER_ICON) local timerDragonDeezTrapsCD = mod:NewCDCountTimer(32.2, 405736, nil, nil, nil, 3) --local berserkTimer = mod:NewBerserkTimer(600) mod:AddRangeFrameOption(5, 404007) mod:AddSetIconOption("SetIconOnGolems", 404533, true, 5, {8, 7, 6}) mod:AddSetIconOption("SetIconOnEmbers", 404007, false, 0, {1, 2, 3, 4}) local castsPerGUID = {} mod.vb.destructionCount = 0 mod.vb.shrapnalSoakCount = 0 mod.vb.trapCastCount = 0 mod.vb.golemsCount = 0 mod.vb.blastWaveCount = 0 mod.vb.embersCount = 0 mod.vb.dragonCount = 0 function mod:OnCombatStart(delay) table.wipe(castsPerGUID) self.vb.destructionCount = 0 self.vb.shrapnalSoakCount = 0 self.vb.trapCastCount = 0 self.vb.golemsCount = 0 self.vb.blastWaveCount = 0 self.vb.embersCount = 0 self.vb.dragonCount = 0 timerUnstableEmbersCD:Start(7-delay, 1) timerBlastWaveCD:Start(10.7-delay, 1) if self:IsMythic() then timerShrapnalBombCD:Start(5.8-delay, 1) timerDragonDeezTrapsCD:Start(19.2-delay, 1) timerAnimateGolemsCD:Start(24.1-delay, 1) timerTacticalDestructionCD:Start(31.3-delay, 1) else timerShrapnalBombCD:Start(14.8-delay, 1) timerDragonDeezTrapsCD:Start(21-delay, 1) timerAnimateGolemsCD:Start(35.7-delay, 1) timerTacticalDestructionCD:Start(47.9-delay, 1) end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 406678 then self.vb.destructionCount = self.vb.destructionCount + 1 specWarnTacticalDestruction:Show(self.vb.destructionCount) specWarnTacticalDestruction:Play("watchstep") timerTacticalDestructionCD:Start(self:IsMythic() and 71.7 or 61.5, self.vb.destructionCount+1) elseif spellId == 405812 then self.vb.golemsCount = self.vb.golemsCount + 1 specWarnAnimateGolems:Show(self.vb.golemsCount) specWarnAnimateGolems:Play("killmobs") timerAnimateGolemsCD:Start(self:IsMythic() and 73 or 60.2, self.vb.golemsCount+1) if self.Options.SetIconOnGolems then self:ScanForMobs(203230, 0, 8, 3, nil, 12, "SetIconOnGolems") end elseif spellId == 405919 then if not castsPerGUID[args.sourceGUID] then castsPerGUID[args.sourceGUID] = 0 end castsPerGUID[args.sourceGUID] = castsPerGUID[args.sourceGUID] + 1 local count = castsPerGUID[args.sourceGUID] if self:CheckInterruptFilter(args.sourceGUID, false, false) then--Count interrupt, so cooldown is not checked specWarnActivateTrap:Show(args.sourceName, count) if count < 6 then specWarnActivateTrap:Play("kick"..count.."r") else specWarnActivateTrap:Play("kickcast") end end elseif spellId == 403978 then self.vb.blastWaveCount = self.vb.blastWaveCount + 1 specWarnBlastWave:Show(self.vb.blastWaveCount) specWarnBlastWave:Play("carefly") timerBlastWaveCD:Start(nil, self.vb.blastWaveCount+1) elseif spellId == 405736 then self.vb.dragonCount = self.vb.dragonCount + 1 specWarnDragonDeezTraps:Show() specWarnDragonDeezTraps:Play("watchstep") timerDragonDeezTrapsCD:Start(nil, self.vb.dragonCount) end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 404007 then self.vb.embersCount = self.vb.embersCount + 1 timerUnstableEmbersCD:Start(self:IsMythic() and 15.8 or 20.7, self.vb.embersCount+1) elseif spellId == 406725 then self.vb.shrapnalSoakCount = 0 self.vb.trapCastCount = self.vb.trapCastCount + 1 warnScatterTraps:Show(self.vb.trapCastCount) timerShrapnalBombCD:Start(self:IsMythic() and 30.8 or 42.5, self.vb.trapCastCount+1) timerShrapnalBomb:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 405592 then warnSalvageParts:Show(args.destName)--Aggregate? elseif spellId == 404010 then if args:IsPlayer() then specWarnUnstableEmbers:Show() specWarnUnstableEmbers:Play("range5") yellUnstableEmbers:Yell() if self.Options.RangeFrame then DBM.RangeCheck:Show(5) end end if self.Options.SetIconOnEmbers then self:SetUnsortedIcon(0.3, args.destName, 1, 4, false) end elseif spellId == 404942 and not args:IsPlayer() then local amount = args.amount or 1 if amount % 3 == 0 then--Guessed, Filler if amount >= 6 and not DBM:UnitDebuff("player", spellId) and not UnitIsDeadOrGhost("player") and not self:IsHealer() then specWarnSearingClawsTaunt:Show(args.destName) specWarnSearingClawsTaunt:Play("tauntboss") else warnSearingClaws:Show(args.destName, amount) end end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 404010 then if args:IsPlayer() then if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end if self.Options.SetIconOnEmbers then self:SetIcon(args.destName, 0) end end end function mod:SPELL_DAMAGE(_, _, _, _, _, _, _, _, spellId) if spellId == 404955 then self.vb.shrapnalSoakCount = self.vb.shrapnalSoakCount + 1 warnSoakedShrapnal:Show(4 - self.vb.shrapnalSoakCount) if self.vb.shrapnalSoakCount == 4 then timerShrapnalBomb:Stop() end end end mod.SPELL_MISSED = mod.SPELL_DAMAGE --[[ function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 370648 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE --]] function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 203230 then--Dragonfire Golem castsPerGUID[args.destGUID] = nil end end