local mod = DBM:NewMod(2529, "DBM-Aberrus", nil, 1208) local L = mod:GetLocalizedStrings() mod:SetRevision("20230708213413") mod:SetCreatureID(201774, 201773, 201934)--Krozgoth, Moltannia, Molgoth mod:SetEncounterID(2687) mod:SetUsedIcons(1, 2, 3, 4) mod:SetBossHPInfoToHighest() mod:SetHotfixNoticeRev(20230626000000) mod:SetMinSyncRevision(20230626000000) --mod.respawnTime = 29 mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 403459 405016 407640 403699 404732 403101 404896 405437 405641 408193 405914 406783 403203 409385", "SPELL_CAST_SUCCESS 406730 409385", "SPELL_AURA_APPLIED 401809 402617 405036 405394 405642 405914 413597", "SPELL_AURA_APPLIED_DOSE 401809 402617 405394", "SPELL_AURA_REMOVED 401809 402617 405036 405642", "SPELL_PERIODIC_DAMAGE 405084 405645", "SPELL_PERIODIC_MISSED 405084 405645" ) --[[ (ability.id = 409385 or ability.id = 403459 or ability.id = 405016 or ability.id = 407640 or ability.id = 403699 or ability.id = 404732 or ability.id = 403101 or ability.id = 404896 or ability.id = 403203 or ability.id = 405437 or ability.id = 405641 or ability.id = 408193 or ability.id = 405914 or ability.id = 406783) and type = "begincast" or (ability.id = 406730 or ability.id = 406780) and type = "cast" or (target.id = 201774 or target.id = 201773) and type = "death" --]] --TODO, also target scan Swirling Flame? --TODO, secondary alert for Swirling Shadowflame ? --TODO, if both tank abilities in P2 are a combo, just use generic tank combo timer --General local specWarnGTFO = mod:NewSpecialWarningGTFO(405084, nil, nil, nil, 1, 8) mod:AddBoolOption("AdvancedBossFiltering", true, "misc")--May be default to off on live, but for testing purposes it needs to be forced --Krozgoth mod:AddTimerLine(DBM:EJ_GetSectionInfo(26336)) local warnCorruptingShadow = mod:NewCountAnnounce(401809, 2, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(401809)) local warnCorruptingShadowFades = mod:NewFadesAnnounce(401809, 1) local warnUmbralDetonation = mod:NewTargetCountAnnounce(405036, 3, nil, nil, 167180, nil, nil, nil, true) local specWarnCoalescingVoid = mod:NewSpecialWarningCount(403459, nil, nil, nil, 2, 2)--Possibly use a run away warning if idea is to actualy move away? Something tells me falloff is just designed to scope damage to players on THIS boss only local specWarnUmbralDetonation = mod:NewSpecialWarningYou(405036, nil, 49685, nil, 1, 2) local yellUmbralDetonation = mod:NewShortYell(405036, 49685)--"Bomb" local yellUmbralDetonationFades = mod:NewShortFadesYell(405036) local specWarnShadowsConvergence = mod:NewSpecialWarningDodgeCount(407640, nil, nil, nil, 2, 2, 3) local timerCoalescingVoidCD = mod:NewCDCountTimer(21.9, 403459, nil, nil, nil, 2) local timerUmbralDetonationCD = mod:NewCDCountTimer(21.9, 405036, 167180, nil, nil, 3)--"Bombs" local timerShadowsConvergenceCD = mod:NewCDCountTimer(20.7, 407640, nil, nil, nil, 3, nil, DBM_COMMON_L.HEROIC_ICON) local timerShadowSpikeCD = mod:NewCDCountTimer(11, 403699, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON) --local berserkTimer = mod:NewBerserkTimer(600) mod:AddSetIconOption("SetIconOnUmbral", 405036, false, 0, {1, 2, 3}) --Moltannia mod:AddTimerLine(DBM:EJ_GetSectionInfo(26337)) local warnBlazingHeat = mod:NewCountAnnounce(402617, 2, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(402617)) local warnBlazingHeatFades = mod:NewFadesAnnounce(402617, 1) local specWarnFieryMeteor = mod:NewSpecialWarningCount(404732, nil, nil, nil, 2, 2) local specWarnMoltenEruption = mod:NewSpecialWarningCount(403101, nil, nil, nil, 2, 2, 3) local specWarnSwirlingFlame = mod:NewSpecialWarningDodgeCount(404896, nil, 86189, nil, 2, 2) local timerFieryMeteorCD = mod:NewCDCountTimer(31.7, 404732, nil, nil, nil, 3) local timerMoltenEruptionCD = mod:NewCDCountTimer(22.3, 403101, nil, nil, nil, 5, nil, DBM_COMMON_L.HEROIC_ICON) local timerSwirlingFlameCD = mod:NewCDCountTimer(20.7, 404896, 86189, nil, nil, 3)--"Tornados" local timerFlameSlashCD = mod:NewCDCountTimer(11, 403203, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON) --Molgoth mod:AddTimerLine(DBM:EJ_GetSectionInfo(26338)) local warnShadowandFlame = mod:NewCastAnnounce(409385, 4) local warnShadowflame = mod:NewCountAnnounce(405394, 2, nil, nil, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(405394)) local warnBlisteringTwilight = mod:NewTargetCountAnnounce(405641, 3, nil, nil, 167180, nil, nil, nil, true) local warnShadowflameBurst = mod:NewCountAnnounce(406783, 3) local specWarnGloomConflag = mod:NewSpecialWarningCount(405437, nil, nil, nil, 2, 2) local specWarnBlisteringTwilight = mod:NewSpecialWarningYou(405642, nil, 49685, nil, 1, 2) local yellBlisteringTwilight = mod:NewShortYell(405642, 49685) local yellBlisteringTwilightFades = mod:NewShortFadesYell(405642) local specWarnConvergentEruption = mod:NewSpecialWarningCount(408193, nil, nil, nil, 2, 2) local specWarnWitheringVulnerability = mod:NewSpecialWarningDefensive(405914, nil, nil, nil, 1, 2) local specWarnWitheringVulnerabilityTaunt = mod:NewSpecialWarningTaunt(405914, nil, nil, nil, 1, 2) local yellShadowandFlameRepeat = mod:NewIconRepeatYell(409385, nil, false, 2) local timerPhaseCD = mod:NewPhaseTimer(30) local timerShadowandFlameCD = mod:NewCDCountTimer(47.4, 409385, nil, nil, nil, 3, nil, DBM_COMMON_L.MYTHIC_ICON) local timerGloomConflagCD = mod:NewCDCountTimer(40, 405437, nil, nil, nil, 3) local timerBlisteringTwilightCD = mod:NewCDCountTimer(40, 405642, 167180, nil, nil, 3)--"Bombs" local timerConvergentEruptionCD = mod:NewCDCountTimer(40, 408193, nil, nil, nil, 5) local timerWitheringVulnerabilityCD = mod:NewCDCountTimer(35.3, 405914, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--35-40 local timerShadowflameBurstCD = mod:NewCDCountTimer(35.3, 406783, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Might be redundant if always after crushing mod:AddSetIconOption("SetIconOnBlistering", 405642, false, 0, {1, 2, 3, 4}) mod:AddRangeFrameOption(6, 409385) local nearKroz, nearMolt = true, true mod.vb.coalescingCount = 0 mod.vb.umbralCount = 0 mod.vb.umbralIcon = 1 mod.vb.shadowConvergeCount = 0 mod.vb.shadowStrikeCount = 0 mod.vb.meteorCast = 0 mod.vb.swirlingCount = 0 mod.vb.moltenEruptionCast = 0 mod.vb.flameSlashCast = 0 mod.vb.witheringVulnCount = 0 mod.vb.shadowflameBurstCount = 0 mod.vb.SandFCount = 0 local difficultyName = "easy" local altTimers = {--Table of lowest averages for timers that are at least somewhat consistent ["hard"] = { ----Fire Duder --Flame Slash [403203] = false,--Too variable --Swirling Flame [404896] = false,--Too variable --Fiery Meteor [404732] = 35.3, --Molten Eruption [403101] = 34, ----Shadow Duder --Shadow Spike [403699] = false,--Too variable --Umbral Detonation [405016] = 34.5, --Coalescing Void [403459] = 35.3, --Shadows Convergence [407640] = 35.3, ----Phase 2 --Shadow and Flame (mythic Only) [409385] = 47.3, --Gloom Conflag [405437] = 47.4, --Blistering Twilight [405641] = 47.4, --Convergent Eruption (Heroic+) [408193] = 47.3, --Withering Vulnerability [405914] = 23.1, --Shadowflame Burst [406783] = 23.1, }, ["easy"] = { ----Fire Duder --Flame Slash [403203] = false,--Too variable --Swirling Flame [404896] = false,--Too variable --Fiery Meteor [404732] = 35.1, --Molten Eruption (Heroic+) -- [403101] = {}, ----Shadow Duder --Shadow Spike [403699] = false,--Too variable --Umbral Detonation [405016] = false,--Too variable --Coalescing Void [403459] = 35.1, --Shadows Convergence (Heroic+) -- [407640] = {}, ----Phase 2 --Shadow and Flame (mythic Only) -- [409385] = {}, --Gloom Conflag [405437] = 44.9, --Blistering Twilight [405641] = false,--Too variable --Convergent Eruption (Heroic+) -- [408193] = {}, --Withering Vulnerability [405914] = 23.1, --Shadowflame Burst [406783] = 23.1, }, } local allTimers = { ["hard"] = { ----Fire Duder --Flame Slash [403203] = {7, 15.7, 26.7, 15.3, 19.4, 15.8, 18.2, 15.7, 18.6}, --Swirling Flame [404896] = {10.6, 14.5, 25.8, 14.1, 20.3, 14.6, 18.2, 14.6, 20.7}, --Fiery Meteor [404732] = {35.2, 35.2, 35.3, 35.3}, --Molten Eruption [403101] = {16.7, 40.5, 34.5, 34}, ----Shadow Duder --Shadow Spike [403699] = {9.5, 15.8, 15.8, 10.1, 15.8, 19.5, 15.7, 19.4, 15.8, 19.4}, --Umbral Detonation [405016] = {14.2, 41.7, 34.5, 35.2}, --Coalescing Void [403459] = {35.2, 35.2, 35.3, 35.3}, --Shadows Convergence [407640] = {22.7, 41.3, 35.3, 35.2}, ----Phase 2 --Shadow and Flame (mythic Only) [409385] = {29.5, 51, 47.4, 47.3, 47.3, 47.3}, --Gloom Conflag [405437] = {50.4, 47.5, 47.6, 47.5, 47.4, 47.4}, --Blistering Twilight [405641] = {21.4, 51.3, 47.5, 47.6, 47.5, 47.4}, --Convergent Eruption (Heroic+) [408193] = {33.6, 51, 47.4, 47.3, 47.5, 47.4}, --Withering Vulnerability [405914] = {16.6, 24.3, 26.8, 24.3, 23.1, 24.2, 23.1, 24.2, 23.1, 24.3, 23.1, 24.3}, --Shadowflame Burst [406783] = {19.4, 24.4, 26.8, 24.3, 23.2, 24.3, 23.2, 24.3, 23.1, 24.3, 23.1, 24.3}, }, ["easy"] = { ----Fire Duder --Flame Slash [403203] = {9.3, 15.7, 25.4, 15.7, 18.3, 15.8, 19.4, 16.2, 19.5, 15.8}, --Swirling Flame [404896] = {10.9, 14.6, 25.5, 15.7, 18.3, 15.8, 19.4, 15.8, 20.4, 15.0}, --Fiery Meteor [404732] = {35.2, 35.1, 35.2, 35.2, 35.4}, --Molten Eruption (Heroic+) -- [403101] = {}, ----Shadow Duder --Shadow Spike [403699] = {9.3, 15.7, 15.7, 10.9, 15.7, 19.5, 16.2, 19.4, 15.8, 19.5, 15.9}, --Umbral Detonation [405016] = {16.6, 21.9, 19.4, 36.9, 34.0, 35.3}, --Coalescing Void [403459] = {35.2, 35.1, 35.3, 35.2, 35.4}, --Shadows Convergence (Heroic+) -- [407640] = {}, ----Phase 2 --Shadow and Flame (mythic Only) -- [409385] = {}, --Gloom Conflag [405437] = {50.3, 44.9, 45.2, 44.9, 46.2}, --Blistering Twilight [405641] = {20.2, 15.7, 37.5, 15.7, 31.6}, --Convergent Eruption (Heroic+) -- [408193] = {}, --Withering Vulnerability [405914] = {15.8, 24.2, 28.1, 24.2, 23.1}, --Shadowflame Burst [406783] = {18.5, 24.2, 28.1, 24.2, 23.1}, }, } --As computational as this looks, it's purpose is to just filter information overload. --Basically, it solves for what should or shouldn't be shown, not what a player should or shouldn't do. local function updateBossDistance(self) if not self.Options.AdvancedBossFiltering then return end --Check if near or far from Krozgoth if self:CheckBossDistance(201774, true, 32698, 48) then if not nearKroz then nearKroz = true timerCoalescingVoidCD:SetFade(false, self.vb.coalescingCount+1) timerUmbralDetonationCD:SetFade(false, self.vb.umbralCount+1) timerShadowsConvergenceCD:SetFade(false, self.vb.shadowConvergeCount+1) timerShadowSpikeCD:SetFade(false, self.vb.shadowStrikeCount+1) end else if nearKroz then nearKroz = false timerCoalescingVoidCD:SetFade(true, self.vb.coalescingCount+1) timerUmbralDetonationCD:SetFade(true, self.vb.umbralCount+1) timerShadowsConvergenceCD:SetFade(true, self.vb.shadowConvergeCount+1) timerShadowSpikeCD:SetFade(true, self.vb.shadowStrikeCount+1) end end --Check if near or far from Moltannia if self:CheckBossDistance(201773, true, 32698, 48) then if not nearMolt then nearMolt = true timerFieryMeteorCD:SetFade(false, self.vb.meteorCast+1) timerMoltenEruptionCD:SetFade(false, self.vb.moltenEruptionCast+1) timerSwirlingFlameCD:SetFade(false, self.vb.swirlingCount+1) timerFlameSlashCD:SetFade(false, self.vb.flameSlashCast+1) end else if nearMolt then nearMolt = false timerFieryMeteorCD:SetFade(true, self.vb.meteorCast+1) timerMoltenEruptionCD:SetFade(true, self.vb.moltenEruptionCast+1) timerSwirlingFlameCD:SetFade(true, self.vb.swirlingCount+1) timerFlameSlashCD:SetFade(true, self.vb.flameSlashCast+1) end end self:Schedule(2, updateBossDistance, self) end local function yellRepeater(self, text) yellShadowandFlameRepeat:Yell(text) self:Schedule(1.5, yellRepeater, self, text) end function mod:OnCombatStart(delay) nearKroz, nearMolt = true, true self:SetStage(1) --Krozgoth self.vb.coalescingCount = 0 self.vb.umbralCount = 0 self.vb.umbralIcon = 1 self.vb.shadowConvergeCount = 0 self.vb.shadowStrikeCount = 0 if self:IsHard() then difficultyName = "hard" timerShadowSpikeCD:Start(9.3-delay, 1) timerUmbralDetonationCD:Start(14.2-delay, 1) timerShadowsConvergenceCD:Start(22.7-delay, 1) timerCoalescingVoidCD:Start(35.2-delay, 1) else--LFR and normal confirmed same, and heroic and mythic posibly also same difficultyName = "easy" timerShadowSpikeCD:Start(9.3-delay, 1) timerUmbralDetonationCD:Start(16.6-delay, 1) --timerShadowsConvergenceCD:Start(22.8-delay, 1) timerCoalescingVoidCD:Start(35.2-delay, 1) end --Reset Fades timerCoalescingVoidCD:SetFade(false, 1) timerUmbralDetonationCD:SetFade(false, 1) timerShadowsConvergenceCD:SetFade(false, 1) timerShadowSpikeCD:SetFade(false, 1) --Moltannia self.vb.meteorCast = 0 self.vb.moltenEruptionCast = 0 self.vb.swirlingCount = 0 self.vb.SandFCount = 0 self.vb.flameSlashCast = 0 if self:IsHard() then timerFlameSlashCD:Start(7-delay, 1) timerSwirlingFlameCD:Start(10.7-delay, 1) timerMoltenEruptionCD:Start(16.7-delay, 1) timerFieryMeteorCD:Start(35.2-delay, 1) else--Normal and LFR confirmed timerFlameSlashCD:Start(9.3-delay, 1) timerSwirlingFlameCD:Start(12.2-delay, 1) --timerMoltenEruptionCD:Start(23-delay, 1) timerFieryMeteorCD:Start(35.2-delay, 1) end --Reset Fades timerFieryMeteorCD:SetFade(false, 1) timerMoltenEruptionCD:SetFade(false, 1) timerSwirlingFlameCD:SetFade(false, 1) timerFlameSlashCD:SetFade(false, 1) self:Schedule(2, updateBossDistance, self) end function mod:OnTimerRecovery() if self:IsHard() then difficultyName = "hard" else difficultyName = "easy" end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) local spellId = args.spellId --Krozgoth Spells if spellId == 403459 then self.vb.coalescingCount = self.vb.coalescingCount + 1 if nearKroz then specWarnCoalescingVoid:Show(self.vb.coalescingCount) specWarnCoalescingVoid:Play("aesoon") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.coalescingCount+1) or altTimers[difficultyName][spellId] if timer then timerCoalescingVoidCD:Start(timer, self.vb.coalescingCount+1) end elseif spellId == 405016 then self.vb.umbralCount = self.vb.umbralCount + 1 self.vb.umbralIcon = 1 local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.umbralCount+1) or altTimers[difficultyName][spellId] if timer then timerUmbralDetonationCD:Start(timer, self.vb.umbralCount+1) end elseif spellId == 407640 then self.vb.shadowConvergeCount = self.vb.shadowConvergeCount + 1 if nearKroz then specWarnShadowsConvergence:Show(self.vb.shadowConvergeCount) specWarnShadowsConvergence:Play("watchorb") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.shadowConvergeCount+1) or altTimers[difficultyName][spellId] if timer then timerShadowsConvergenceCD:Start(timer, self.vb.shadowConvergeCount+1) end elseif spellId == 403699 then self.vb.shadowStrikeCount = self.vb.shadowStrikeCount + 1 --if self:IsTanking("player", nil, nil, true, args.sourceGUID) then --end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.shadowStrikeCount+1) or altTimers[difficultyName][spellId] if timer then timerShadowSpikeCD:Start(timer, self.vb.shadowStrikeCount+1) end --Moltannia Spells elseif spellId == 404732 then self.vb.meteorCast = self.vb.meteorCast + 1 if nearMolt then specWarnFieryMeteor:Show(self.vb.meteorCast) specWarnFieryMeteor:Play("helpsoak") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.meteorCast+1) or altTimers[difficultyName][spellId] if timer then timerFieryMeteorCD:Start(timer, self.vb.meteorCast+1) end elseif spellId == 403101 then self.vb.moltenEruptionCast = self.vb.moltenEruptionCast + 1 if nearMolt then specWarnMoltenEruption:Show(self.vb.moltenEruptionCast) specWarnMoltenEruption:Play("helpsoak") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.moltenEruptionCast+1) or altTimers[difficultyName][spellId] if timer then timerMoltenEruptionCD:Start(timer, self.vb.moltenEruptionCast+1) end elseif spellId == 404896 then self.vb.swirlingCount = self.vb.swirlingCount + 1 if nearMolt then specWarnSwirlingFlame:Show(self.vb.swirlingCount) specWarnSwirlingFlame:Play("watchwave") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.swirlingCount+1) or altTimers[difficultyName][spellId] if timer then timerSwirlingFlameCD:Start(timer, self.vb.swirlingCount+1) end elseif spellId == 403203 then self.vb.flameSlashCast = self.vb.flameSlashCast + 1 --if self:IsTanking("player", nil, nil, true, args.sourceGUID) then --end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.flameSlashCast+1) or altTimers[difficultyName][spellId] if timer then timerFlameSlashCD:Start(timer, self.vb.flameSlashCast+1) end --Molgoth elseif spellId == 405437 then self.vb.meteorCast = self.vb.meteorCast + 1 specWarnGloomConflag:Show(self.vb.meteorCast) specWarnGloomConflag:Play("helpsoak") local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.meteorCast+1) or altTimers[difficultyName][spellId] if timer then timerGloomConflagCD:Start(timer, self.vb.meteorCast+1) end elseif spellId == 405641 then self.vb.umbralCount = self.vb.umbralCount + 1 self.vb.umbralIcon = 1 local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.umbralCount+1) or altTimers[difficultyName][spellId] if timer then timerBlisteringTwilightCD:Start(timer, self.vb.umbralCount+1) end elseif spellId == 408193 then self.vb.moltenEruptionCast = self.vb.moltenEruptionCast + 1 specWarnConvergentEruption:Show(self.vb.moltenEruptionCast) specWarnConvergentEruption:Play("helpsoak") local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.moltenEruptionCast+1) or altTimers[difficultyName][spellId] if timer then timerConvergentEruptionCD:Start(timer, self.vb.moltenEruptionCast+1) end elseif spellId == 405914 then self.vb.witheringVulnCount = self.vb.witheringVulnCount + 1 if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnWitheringVulnerability:Show() specWarnWitheringVulnerability:Play("defensive") end local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.witheringVulnCount+1) or altTimers[difficultyName][spellId] if timer then timerWitheringVulnerabilityCD:Start(timer, self.vb.witheringVulnCount+1) end elseif spellId == 406783 then self.vb.shadowflameBurstCount = self.vb.shadowflameBurstCount + 1 warnShadowflameBurst:Show(self.vb.shadowflameBurstCount) local timer = self:GetFromTimersTable(allTimers, difficultyName, false, spellId, self.vb.shadowflameBurstCount+1) or altTimers[difficultyName][spellId] if timer then timerShadowflameBurstCD:Start(timer, self.vb.shadowflameBurstCount+1) end elseif spellId == 409385 then self.vb.SandFCount = self.vb.SandFCount + 1 warnShadowandFlame:Show(self.vb.SandFCount) timerShadowandFlameCD:Start(nil, self.vb.SandFCount+1) if self.Options.RangeFrame then DBM.RangeCheck:Show(6) end end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 406730 and self:GetStage(2, 1) then--Crucible Instability self:SetStage(2) self.vb.meteorCast = 0--Reused for Gloom Conflagration self.vb.umbralCount = 0--Reused for Blistering Twilight self.vb.moltenEruptionCast = 0--Reused for Converging Eruption self.vb.witheringVulnCount = 0 self.vb.shadowflameBurstCount = 0 self:Unschedule(updateBossDistance) timerCoalescingVoidCD:Stop() timerUmbralDetonationCD:Stop() timerShadowsConvergenceCD:Stop() timerShadowSpikeCD:Stop() timerFieryMeteorCD:Stop() timerMoltenEruptionCD:Stop() timerSwirlingFlameCD:Stop() timerFlameSlashCD:Stop() timerPhaseCD:Start(11.7) if self:IsMythic() then timerShadowandFlameCD:Start(29.6, 1) timerConvergentEruptionCD:Start(35.7, 1) elseif self:IsHeroic() then timerConvergentEruptionCD:Start(32.4, 1) end --Same in all timerWitheringVulnerabilityCD:Start(15.8, 1) timerShadowflameBurstCD:Start(18.5, 1) timerBlisteringTwilightCD:Start(20.2, 1) timerGloomConflagCD:Start(50, 1) elseif spellId == 409385 then if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 401809 and args:IsPlayer() then local amount = args.amount or 1 if (amount % 3 == 0) and amount >= 18 then--Adjust as needed warnCorruptingShadow:Show(amount) end if self:IsMythic() and self:GetStage(2) and amount == 1 then self:Unschedule(yellRepeater) yellRepeater(self, 3) end elseif spellId == 402617 and args:IsPlayer() then local amount = args.amount or 1 if (amount % 3 == 0) and amount >= 18 then--Adjust as needed warnBlazingHeat:Show(amount) end if self:IsMythic() and self:GetStage(2) and amount == 1 then self:Unschedule(yellRepeater) yellRepeater(self, 2) end elseif spellId == 405394 and args:IsPlayer() then local amount = args.amount or 1 if (amount % 3 == 0) and amount >= 18 then--Adjust as needed warnShadowflame:Show(amount) end elseif spellId == 405036 then local icon = self.vb.umbralIcon if self.Options.SetIconOnUmbral then self:SetIcon(args.destName, icon) end if args:IsPlayer() then specWarnUmbralDetonation:Show() specWarnUmbralDetonation:Play("targetyou") yellUmbralDetonation:Yell() yellUmbralDetonationFades:Countdown(spellId) end if nearKroz then warnUmbralDetonation:CombinedShow(0.5, self.vb.umbralCount, args.destName) end self.vb.umbralIcon = self.vb.umbralIcon + 1 elseif spellId == 405642 then local icon = self.vb.umbralIcon if self.Options.SetIconOnBlistering then self:SetIcon(args.destName, icon) end if args:IsPlayer() then specWarnBlisteringTwilight:Show() specWarnBlisteringTwilight:Play("targetyou") yellBlisteringTwilight:Yell() yellBlisteringTwilightFades:Countdown(spellId) end warnBlisteringTwilight:CombinedShow(0.5, self.vb.umbralCount, args.destName) self.vb.umbralIcon = self.vb.umbralIcon + 1 elseif (spellId == 413597 or spellId == 405914) and not args:IsPlayer() then specWarnWitheringVulnerabilityTaunt:Show(args.destName) specWarnWitheringVulnerabilityTaunt:Play("tauntboss") end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 401809 and args:IsPlayer() then warnCorruptingShadowFades:Show() if self:IsMythic() then self:Unschedule(yellRepeater) end elseif spellId == 402617 and args:IsPlayer() then warnBlazingHeatFades:Show() if self:IsMythic() then self:Unschedule(yellRepeater) end elseif spellId == 405036 then if self.Options.SetIconOnUmbral then self:SetIcon(args.destName, 0) end if args:IsPlayer() then yellUmbralDetonationFades:Cancel() end elseif spellId == 405642 then if self.Options.SetIconOnBlistering then self:SetIcon(args.destName, 0) end if args:IsPlayer() then yellBlisteringTwilightFades:Cancel() end end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if (spellId == 405084 or spellId == 405645) and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE