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.
621 lines
25 KiB
621 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
|
|
|