You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

622 lines
25 KiB

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