local mod = DBM:NewMod(2602, "DBM-Raids-WarWithin", 1, 1273) local L = mod:GetLocalizedStrings() mod.statTypes = "story,lfr,normal,heroic,mythic" mod:SetRevision("20240822113319") mod:SetCreatureID(227323) mod:SetEncounterID(2922) mod:SetUsedIcons(1, 2) --mod:SetHotfixNoticeRev(20231115000000) --mod:SetMinSyncRevision(20230929000000) mod.respawnTime = 29 mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 437592 456623 437417 439814 440899 440883 437093 447076 447411 450191 449940 449986 447950 448458 448147 451600 455374 443888 445422 444829 445021 438976 443325 443336", "SPELL_CAST_SUCCESS 439299 449986", "SPELL_AURA_APPLIED 451320 441958 436800 440885 447207 453990 464056 447967 462558 451278 443903 455387 445880 445152 438974 443656 443726 443342 451832 464638 441556 455404", "SPELL_AURA_APPLIED_DOSE 449236 445880 443726 443342 464638 441556", "SPELL_AURA_REMOVED 451320 447207 453990 462558 451278 443903 455387 445152 443656", "SPELL_PERIODIC_DAMAGE 443403", "SPELL_PERIODIC_MISSED 443403", -- "UNIT_DIED" "UNIT_SPELLCAST_SUCCEEDED boss1" ) --TODO, verify reactive toxin spellids/events --TODO, figure out how reactive toxin works and make mod less crappy --TODO, figure out Silken Tomb targetting and make mod less crappy --TODO, figure out Liquefy targetting and make mod less crappy --TODO, get right web blades event --TODO, fix Wrest spellIds --TODO, Phase 2 Entropic Conduit mythic mechanics --TODO, add https://www.wowhead.com/beta/spell=448660/acid-bolt to stage 2 if it is not spammed --TODO, add shadowblast nameplate timer --TODO, add Gloom Orb nameplate timer? --TODO, figure out a proper way to warn for Ousting Fragments. how far are they cast from Chamber guardian. maybe scoped alert for players within x yards of caster? --TODO, Dark Detonation nameplate cast bar? --TODO, appropriate stack high warning for https://www.wowhead.com/beta/spell=449236/caustic-fangs --TODO, correct detection for https://www.wowhead.com/beta/spell=444502/conduit-collapse --TODO, use https://www.wowhead.com/beta/spell=445818/frothing-gluttony for anything? --TODO, track player version of https://www.wowhead.com/beta/spell=445877/froth-vapor ? --TODO, infoframe or more for https://www.wowhead.com/beta/spell=445013/dark-barrier ? depends on mob count --TODO, add auto marking? --TODO, https://www.wowhead.com/beta/spell=441865/royal-shackles alert too? --General Stuff local warnPhase = mod:NewPhaseChangeAnnounce(0, nil, nil, nil, nil, nil, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(441958, nil, nil, nil, 1, 8) --Stage One: A Queen's Venom mod:AddTimerLine(DBM:EJ_GetSectionInfo(28754)) local warnReactiveToxin = mod:NewTargetAnnounce(437592, 3) local warnSilkenTomb = mod:NewCountAnnounce(439814, 2) local warnFrothyToxin = mod:NewCountAnnounce(464638, 3, nil, false, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(464638))--Player local warnReactionVapor = mod:NewCountAnnounce(441556, 3, nil, false, DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.stack:format(441556))--Player local specWarnReactiveToxin = mod:NewSpecialWarningMoveAway(437592, nil, nil, nil, 1, 2) local yellReactiveToxin = mod:NewShortYell(437592) local yellReactiveToxinFades = mod:NewShortFadesYell(437592) local specWarnConcentratedToxin = mod:NewSpecialWarningYou(451278, nil, nil, nil, 1, 2) local yellConcentratedToxin = mod:NewShortYell(451278) local yellConcentratedToxinFades = mod:NewShortFadesYell(451278) local specWarnVenomNova = mod:NewSpecialWarningCount(437417, nil, nil, nil, 2, 2)--not soak warning because it's used for both soak and avoid --local specWarnSilkenTomb = mod:NewSpecialWarningYou(439814, nil, nil, nil, 1, 2) --local yellSilkenTomb = mod:NewShortYell(439814) local specWarnLiquefy = mod:NewSpecialWarningDefensive(440899, nil, nil, nil, 1, 2) local specWarnLiquefyTaunt = mod:NewSpecialWarningTaunt(440899, nil, nil, nil, 1, 2) --local specWarnLiquefyNonTank = mod:NewSpecialWarningYou(440885, nil, nil, nil, 1, 2)--No idea, wording changed since adding it. does liquify tank just get both debuffs? local specWarnFeast = mod:NewSpecialWarningDefensive(437093, nil, nil, nil, 1, 2) local specWarnFeastTaunt = mod:NewSpecialWarningTaunt(437093, nil, nil, nil, 1, 2) local specWarnWebBlades = mod:NewSpecialWarningDodgeCount(439299, nil, nil, nil, 2, 2) local timerReactiveToxinCD = mod:NewAITimer(49, 437592, nil, nil, nil, 3) local timerVenomNovaCD = mod:NewAITimer(49, 437417, nil, nil, nil, 3) local timerSilkenTombCD = mod:NewAITimer(49, 439814, nil, nil, nil, 3) local timerLiquefyCD = mod:NewAITimer(49, 440899, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--DBM_COMMON_L.TANKCOMBO.." (%s)" local timerFeastCD = mod:NewAITimer(49, 437093, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Combine with liquefy if it is a combo local timerWebBladesCD = mod:NewAITimer(49, 439299, nil, nil, nil, 3) --mod:AddSetIconOption("SetIconOnSinSeeker", 335114, true, 0, {1, 2, 3}) --mod:AddPrivateAuraSoundOption(426010, true, 425885, 4) --Intermission: The Spider's Web mod:AddTimerLine(DBM:EJ_GetSectionInfo(28755)) local specWarnWrest = mod:NewSpecialWarningCount(447411, nil, nil, nil, 2, 12) local timerWrestCD = mod:NewAITimer(49, 447411, nil, nil, nil, 3) mod:AddInfoFrameOption(447076, true) --Stage Two: Royal Ascension mod:AddTimerLine(DBM:EJ_GetSectionInfo(28756)) --Mythic Stuff here mod:AddNamePlateOption("NPAuraOnEchoingConnection", 453990) ----Queen Ansurek mod:AddTimerLine(DBM:EJ_GetSectionInfo(29628)) local timerAcidicApocalypse = mod:NewCastTimer(105, 449940, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON) ----Ascended Voidspeaker mod:AddTimerLine(DBM:EJ_GetSectionInfo(29633)) local specWarnShadowblast = mod:NewSpecialWarningInterruptCount(447950, nil, nil, nil, 1, 2) --local timerShadowblastCD = mod:NewCDNPTimer(49, 447950, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) ----Devoted Worshipper local specWarnGloomTouch = mod:NewSpecialWarningMoveAway(464056, nil, nil, nil, 1, 2) local yellGloomTouch = mod:NewShortYell(464056) local specWarnCosmicRupture = mod:NewSpecialWarningYou(447967, nil, nil, nil, 1, 2, 4)--Mythic local yellCosmicRupture = mod:NewShortFadesYell(447967) local specWarnCosmicApocalypse = mod:NewSpecialWarningSpell(448458, nil, nil, nil, 3, 2) --local timerGloomTouchCD = mod:NewCDNPTimer(49, 464056, nil, nil, nil, 3) ---Chamber Guardian mod:AddTimerLine(DBM:EJ_GetSectionInfo(29642)) local specWarnOust = mod:NewSpecialWarningDefensive(448147, nil, nil, nil, 1, 2) --local timerOustCD = mod:NewCDNPTimer(49, 448147, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) --Chamber Expeller mod:AddTimerLine(DBM:EJ_GetSectionInfo(29744)) local specWarnExpulsionBeam = mod:NewSpecialWarningDodge(448660, nil, nil, nil, 2, 2)--Change to target warning if it can be scanned? --local timerExpulsionBeamCD = mod:NewCDNPTimer(49, 448660, nil, nil, nil, 3) --Chamber Acolyte mod:AddTimerLine(DBM:EJ_GetSectionInfo(29945)) local specWarnDarkDetonation = mod:NewSpecialWarningInterruptCount(455374, nil, nil, nil, 1, 2) --Caustic Skitterer mod:AddTimerLine(DBM:EJ_GetSectionInfo(29645)) local warnCausticFangs = mod:NewStackAnnounce(449236, 2, nil, "Tank") local specWarnCausticFangs = mod:NewSpecialWarningStack(449236, nil, 30, nil, nil, 1, 6, 3) --Stage Three: Paranoia's Feast mod:AddTimerLine(DBM:EJ_GetSectionInfo(28757)) local warnAbyssalInfusion = mod:NewTargetNoFilterAnnounce(443888, 3) local warnFrothVapor = mod:NewStackAnnounce(445880, 4)--Version on boss local warnQueenSummon = mod:NewCountAnnounce(444829, 2) local warnRoyalCondemnation = mod:NewTargetNoFilterAnnounce(438976, 3) local warnGloomHatchlings = mod:NewStackAnnounce(443726, 2)--Version on boss local warnGorge = mod:NewStackAnnounce(443342, 3, nil, "Tank") local specWarnAbyssalInfusion = mod:NewSpecialWarningYouPos(443888, nil, nil, nil, 1, 2) local yellAbyssalInfusion = mod:NewShortPosYell(443888) local yellAbyssalInfusionFades = mod:NewIconFadesYell(443888) local specWarnAbyssalReverb = mod:NewSpecialWarningMoveAway(455387, nil, nil, nil, 1, 2, 3)--Heroic+ secondary effect of Abyssal Infusion local yellAbyssalReverb = mod:NewShortYell(455387) local yellAbyssalReverbFades = mod:NewShortFadesYell(455387) local specWarnFrothingGluttony = mod:NewSpecialWarningRunCount(445422, nil, nil, nil, 4, 12) local specWarnAcolytesEssence = mod:NewSpecialWarningMoveAway(445152, nil, nil, nil, 1, 2) local yellAcolytesEssenceFades = mod:NewShortFadesYell(445152) local specWarnNullDetonation = mod:NewSpecialWarningInterruptCount(455374, nil, nil, nil, 1, 2) local specWarnRoyalCondemnation = mod:NewSpecialWarningYouPos(438976, nil, nil, nil, 1, 2) local yellRoyalCondemnation = mod:NewShortPosYell(438976) --local yellRoyalCondemnationFades = mod:NewIconFadesYell(438976)--No Duration on debuff local specWarnInfest = mod:NewSpecialWarningMoveAway(443325, nil, nil, nil, 1, 2) local yellInfest = mod:NewShortYell(443325) local yellInfestFades = mod:NewShortFadesYell(443325) local specWarnInfestOther = mod:NewSpecialWarningTaunt(443325, nil, nil, nil, 1, 2) local specWarnGorge = mod:NewSpecialWarningDefensive(443336, nil, nil, nil, 1, 2) local specWarnCataclysmicEvolution = mod:NewSpecialWarningTarget(451832, nil, nil, nil, 3, 2) local timerAbyssalInfusionCD = mod:NewAITimer(49, 443888, nil, nil, nil, 3) local timerFrothingGluttonyCD = mod:NewAITimer(49, 445422, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON) local timerQueensSummonsCD = mod:NewAITimer(49, 444829, nil, nil, nil, 1) --local timerNullDetonationCD = mod:NewCDNPTimer(49, 455374, nil, nil, nil, 4) local timerRoyalCondemnationCD = mod:NewAITimer(49, 438976, nil, nil, nil, 3) local timerInfestCD = mod:NewAITimer(49, 443325, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerGorgeCD = mod:NewAITimer(49, 443336, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) mod:AddSetIconOption("SetIconOnAbyssalInfusion", 443888, true, 0, {1, 2}) mod:AddSetIconOption("SetIconOnRoyalCondemnation", 438976, true, 0, {3, 4, 5})--3 on Mythic local castsPerGUID = {} --P1 mod.vb.novaCount = 0 mod.vb.tombCount = 0 mod.vb.tankComboCount = 0--Liquefy for now mod.vb.feastCount = 0 mod.vb.webBladesCount = 0 --Intermission 1 mod.vb.wrestCount = 0 --P3 mod.vb.abyssalInfusionCount = 0 mod.vb.infusionIcon = 1 mod.vb.frothingGluttonyCount = 0 mod.vb.queensSummonsCount = 0 mod.vb.royalCondom = 0 mod.vb.royalCondomIcon = 3 mod.vb.infestCount = 0 mod.vb.gorgeCount = 0 mod.vb.cataEvoActivated = false function mod:OnCombatStart(delay) table.wipe(castsPerGUID) self:SetStage(1) self.vb.novaCount = 0 self.vb.tombCount = 0 self.vb.tankComboCount = 0 self.vb.feastCount = 0 self.vb.webBladesCount = 0 self.vb.wrestCount = 0 self.vb.abyssalInfusionCount = 0 self.vb.queensSummonsCount = 0 self.vb.frothingGluttonyCount = 0 self.vb.royalCondom = 0 self.vb.infestCount = 0 self.vb.gorgeCount = 0 self.vb.cataEvoActivated = false timerReactiveToxinCD:Start(1-delay) timerVenomNovaCD:Start(1-delay) timerSilkenTombCD:Start(1-delay) timerLiquefyCD:Start(1-delay) timerFeastCD:Start(1-delay) timerWebBladesCD:Start(1-delay) if self.Options.NPAuraOnEchoingConnection then DBM:FireEvent("BossMod_EnableHostileNameplates") end DBM:AddMsg("this mod is a drycode. Some warnings may be wrong or missing, especially tank stuff") end function mod:OnCombatEnd() if self.Options.NPAuraOnEchoingConnection then DBM.Nameplate:Hide(true, nil, nil, nil, true, true) end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 437592 or spellId == 456623 then timerReactiveToxinCD:Start() elseif spellId == 437417 then self.vb.novaCount = self.vb.novaCount + 1 specWarnVenomNova:Show(self.vb.novaCount) if not DBM:UnitDebuff("player", 441692) then--Reaction Trauma (can't soak) specWarnVenomNova:Play("helpsoak")--Maybe something more specific like movetopool? else specWarnVenomNova:Play("watchwave") end timerVenomNovaCD:Start() elseif spellId == 439814 then self.vb.tombCount = self.vb.tombCount + 1 warnSilkenTomb:Show(self.vb.tombCount) timerSilkenTombCD:Start() elseif spellId == 440899 or spellId == 440883 then--Non Mythic / Mythic (assumed) self.vb.tankComboCount = self.vb.tankComboCount + 1 if self:IsTanking("player", "boss1", nil, true) then specWarnLiquefy:Show() specWarnLiquefy:Play("defensive") end timerLiquefyCD:Start() elseif spellId == 437093 then self.vb.feastCount = self.vb.feastCount + 1 if self:IsTanking("player", "boss1", nil, true) then specWarnFeast:Show() specWarnFeast:Play("defensive") end timerFeastCD:Start() elseif spellId == 447411 or spellId == 450191 then--Intermission Left / Phase 2 right self.vb.wrestCount = self.vb.wrestCount + 1 specWarnWrest:Show(self.vb.wrestCount) specWarnWrest:Play("pullin") timerWrestCD:Start() elseif spellId == 449940 then timerAcidicApocalypse:Start() elseif spellId == 447950 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 specWarnShadowblast:Show(args.sourceName, count) if count < 6 then specWarnShadowblast:Play("kick"..count.."r") else specWarnShadowblast:Play("kickcast") end end elseif spellId == 455374 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 specWarnDarkDetonation:Show(args.sourceName, count) if count < 6 then specWarnDarkDetonation:Play("kick"..count.."r") else specWarnDarkDetonation:Play("kickcast") end end elseif spellId == 445021 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 specWarnNullDetonation:Show(args.sourceName, count) if count < 6 then specWarnNullDetonation:Play("kick"..count.."r") else specWarnNullDetonation:Play("kickcast") end end elseif spellId == 448458 then specWarnCosmicApocalypse:Show() specWarnCosmicApocalypse:Play("stilldanger") elseif spellId == 448147 then if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnOust:Show() specWarnOust:Play("carefly") end --timerOustCD:Start(nil, args.sourceGUID) elseif spellId == 451600 then if self:AntiSpam(5, 2) then--Just in case multiple do it at once specWarnExpulsionBeam:Show() specWarnExpulsionBeam:Play("farfromline") end --timerExpulsionBeamCD:Start(nil, args.sourceGUID) elseif spellId == 443888 then self.vb.abyssalInfusionCount = self.vb.abyssalInfusionCount + 1 self.vb.infusionIcon = 1 timerAbyssalInfusionCD:Start() elseif spellId == 445422 and not self.vb.cataEvoActivated then self.vb.frothingGluttonyCount = self.vb.frothingGluttonyCount + 1 specWarnFrothingGluttony:Show(self.vb.frothingGluttonyCount) specWarnFrothingGluttony:Play("pullin") timerFrothingGluttonyCD:Start() elseif spellId == 444829 then self.vb.queensSummonsCount = self.vb.queensSummonsCount + 1 warnQueenSummon:Show(self.vb.queensSummonsCount) timerQueensSummonsCD:Start() elseif spellId == 438976 then self.vb.royalCondom = self.vb.royalCondom + 1 timerRoyalCondemnationCD:Start() elseif spellId == 443325 then self.vb.infestCount = self.vb.infestCount + 1 timerInfestCD:Start() elseif spellId == 443336 then self.vb.gorgeCount = self.vb.gorgeCount + 1 timerGorgeCD:Start() if self:IsTanking("player", nil, nil, true, args.sourceGUID) then specWarnGorge:Show() specWarnGorge:Play("defensive") end elseif spellId == 447076 then--Predation self:SetStage(1.5) timerReactiveToxinCD:Stop() timerVenomNovaCD:Stop() timerSilkenTombCD:Stop() timerLiquefyCD:Stop() timerFeastCD:Stop() timerWebBladesCD:Stop() warnPhase:Show(1.5) warnPhase:Play("phasechange") timerWrestCD:Start(1) elseif spellId == 449986 then--Aphotic Communion Starting self:SetStage(3) warnPhase:Show(3) warnPhase:Play("pthree") timerAcidicApocalypse:Stop() --Possibly move to cast finish later timerAbyssalInfusionCD:Start(3) timerFrothingGluttonyCD:Start(3) timerQueensSummonsCD:Start(3) timerRoyalCondemnationCD:Start(3) timerInfestCD:Start(3) timerWebBladesCD:Start(3) end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 439299 and self:AntiSpam(5, 3) then self.vb.webBladesCount = self.vb.webBladesCount + 1 specWarnWebBlades:Show(self.vb.webBladesCount) specWarnWebBlades:Play("watchstep") timerWebBladesCD:Start() --elseif spellId == 449986 then--Aphotic Communion Finishing -- timerAbyssalInfusionCD:Start(3) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 451320 then warnReactiveToxin:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnReactiveToxin:Show() specWarnReactiveToxin:Play("runout") yellReactiveToxin:Yell() yellReactiveToxinFades:Countdown(spellId) end elseif spellId == 441958 and args:IsPlayer() and self:AntiSpam(3, 1) then--Grasping Silk specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") elseif spellId == 436800 and not args:IsPlayer() then specWarnLiquefyTaunt:Show(args.destName) specWarnLiquefyTaunt:Play("tauntboss") --elseif spellId == 440885 and args:IsPlayer() then -- specWarnLiquefyNonTank:Show() -- specWarnLiquefyNonTank:Play("targetyou") elseif spellId == 447207 then--Predation Shield if self.Options.Infoframe then DBM.InfoFrame:SetHeader(args.spellName) DBM.InfoFrame:Show(2, "enemyabsorb", nil, args.amount, "boss1") end elseif spellId == 453990 then if self.Options.NPAuraOnEchoingConnection then DBM.Nameplate:Show(true, args.destGUID, spellId) end elseif spellId == 464056 or spellId == 447967 then if args:IsPlayer() then specWarnGloomTouch:Show() specWarnGloomTouch:Play("runout") yellGloomTouch:Yell() end elseif spellId == 462558 then if args:IsPlayer() then specWarnCosmicRupture:Show() specWarnCosmicRupture:Play("targetyou") yellCosmicRupture:Countdown(spellId) end elseif spellId == 451278 then if args:IsPlayer() then specWarnConcentratedToxin:Show() specWarnConcentratedToxin:Play("targetyou") yellConcentratedToxin:Yell() yellConcentratedToxinFades:Countdown(spellId) end elseif spellId == 443903 then local icon = self.vb.infusionIcon if self.Options.SetIconOnAbyssalInfusion then self:SetIcon(args.destName, icon) end if args:IsPlayer() then specWarnAbyssalInfusion:Show(self:IconNumToTexture(icon)) specWarnAbyssalInfusion:Play("mm"..icon) yellAbyssalInfusion:Yell(icon, icon) yellAbyssalInfusionFades:Countdown(spellId, nil, icon) end warnAbyssalInfusion:CombinedShow(1, args.destName) self.vb.infusionIcon = self.vb.infusionIcon + 1 elseif spellId == 438974 then if self:AntiSpam(5, 4) then --In case targeting goes out before cast start, we want to make sure icons reset on first target self.vb.royalCondomIcon = 3 end local icon = self.vb.royalCondomIcon if self.Options.SetIconOnRoyalCondemnation then self:SetIcon(args.destName, icon) end if args:IsPlayer() then specWarnRoyalCondemnation:Show(self:IconNumToTexture(icon)) specWarnRoyalCondemnation:Play("mm"..icon) yellRoyalCondemnation:Yell(icon, icon - 2) --yellRoyalCondemnationFades:Countdown(spellId, nil, icon) end warnRoyalCondemnation:CombinedShow(1, args.destName) self.vb.royalCondomIcon = self.vb.royalCondomIcon + 1 elseif spellId == 455387 then if args:IsPlayer() then specWarnAbyssalReverb:Show() specWarnAbyssalReverb:Play("runout") yellAbyssalReverb:Yell() yellAbyssalReverbFades:Countdown(spellId) end elseif spellId == 445880 then warnFrothVapor:Show(args.destName, 1) elseif spellId == 443726 then warnGloomHatchlings:Show(args.destName, 1) elseif spellId == 445152 then if args:IsPlayer() then specWarnAcolytesEssence:Show() specWarnAcolytesEssence:Play("targetyou")--Needs better audio yellAcolytesEssenceFades:Countdown(spellId) end elseif spellId == 443656 then if args:IsPlayer() then specWarnInfest:Show() specWarnInfest:Play("runout") yellInfest:Yell() yellInfestFades:Countdown(spellId) else specWarnInfestOther:Show(args.destName) specWarnInfestOther:Play("tauntboss") end elseif spellId == 443342 then warnGorge:Show(args.destName, 1) elseif spellId == 451832 then self.vb.cataEvoActivated = true specWarnCataclysmicEvolution:Show(args.destName) specWarnCataclysmicEvolution:Play("stilldanger") elseif spellId == 464638 and args:IsPlayer() then warnFrothyToxin:Show(1) elseif spellId == 441556 and args:IsPlayer() then warnReactionVapor:Show(1) elseif spellId == 455404 then if not args:IsPlayer() then specWarnFeastTaunt:Show(args.destName) specWarnFeastTaunt:Play("tauntboss") end end end function mod:SPELL_AURA_APPLIED_DOSE(args) local spellId = args.spellId if spellId == 449236 then local uId = DBM:GetRaidUnitId(args.destName) if self:IsTanking(uId) then local amount = args.amount or 1 if amount % 5 == 0 then if args:IsPlayer() and args.amount >= 30 then--Placeholder specWarnCausticFangs:Show(args.amount) specWarnCausticFangs:Play("stackhigh") else warnCausticFangs:Show(args.destName, args.amount) end end end elseif spellId == 445880 then warnFrothVapor:Cancel() --Scheduled in case boss absorbs a ton at once on bad pull warnFrothVapor:Schedule(1, args.destName, args.amount) elseif spellId == 443726 then warnGloomHatchlings:Show(args.destName, args.amount) elseif spellId == 443342 then warnGorge:Show(args.destName, args.amount) elseif spellId == 464638 and args:IsPlayer() then --if amount % 5 == 0 then warnFrothyToxin:Show(args.amount) --end --if args.amount >= 30 then--Placeholder -- specWarnFrothyToxin:Show(args.amount) -- specWarnFrothyToxin:Play("stackhigh") --end elseif spellId == 441556 and args:IsPlayer() then --if amount % 5 == 0 then warnReactionVapor:Show(args.amount) --end --if args.amount >= 30 then--Placeholder -- specWarnReactionVapor:Show(args.amount) -- specWarnReactionVapor:Play("stackhigh") --end end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 451320 then if args:IsPlayer() then yellReactiveToxinFades:Cancel() end elseif spellId == 447207 then--Predation Shield self:SetStage(2) warnPhase:Show(2) warnPhase:Play("ptwo") self.vb.wrestCount = 0 timerWrestCD:Stop() timerWrestCD:Start(2) if self.Options.Infoframe then DBM.InfoFrame:Hide() end elseif spellId == 453990 then if self.Options.NPAuraOnEchoingConnection then DBM.Nameplate:Hide(true, args.destGUID, spellId) end elseif spellId == 462558 then if args:IsPlayer() then yellCosmicRupture:Cancel() end elseif spellId == 451278 then if args:IsPlayer() then yellConcentratedToxinFades:Cancel() end elseif spellId == 443903 then if self.Options.SetIconOnAbyssalInfusion then self:SetIcon(args.destName, 0) end if args:IsPlayer() then yellAbyssalInfusionFades:Cancel() end elseif spellId == 455387 then if args:IsPlayer() then yellAbyssalReverbFades:Cancel() end elseif spellId == 445152 then if args:IsPlayer() then yellAcolytesEssenceFades:Cancel() end end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName) if spellId == 443403 and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) 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 == 223150 then--Ascended Voidspeaker elseif cid == 223318 then--Devoted Worshipper elseif cid == 223204 then--Chamber Guardian elseif cid == 224368 then--Chamber Expeller elseif cid == 221863 then--cycle-warden--Summoned Acolyte end end --]] function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId) if spellId == 439299 and self:AntiSpam(5, 3) then self.vb.webBladesCount = self.vb.webBladesCount + 1 specWarnWebBlades:Show(self.vb.webBladesCount) specWarnWebBlades:Play("watchstep") timerWebBladesCD:Start() end end