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.
787 lines
32 KiB
787 lines
32 KiB
local mod = DBM:NewMod(2608, "DBM-Raids-WarWithin", 1, 1273)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240715014353")
|
|
mod:SetCreatureID(217489, 217491)--Anub'arash, Skeinspinner Takazj
|
|
mod:SetEncounterID(2921)
|
|
mod:SetUsedIcons(6, 7, 8)
|
|
mod:SetBossHPInfoToHighest()
|
|
mod:SetHotfixNoticeRev(20240711000000)
|
|
mod:SetMinSyncRevision(20240628000000)
|
|
mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 438218 438801 440246 440504 438343 439838 450045 451016 438677 452231 441626 450129 441782 450483 438355 443068 451327 442994 441791",
|
|
-- "SPELL_CAST_SUCCESS",
|
|
"SPELL_SUMMON 438249",
|
|
"SPELL_AURA_APPLIED 455849 455850 438218 455080 449857 440001 450980 438708 456252 450728 451277 443598 438656 440179 456245 438200 456235",--451611, 440503
|
|
"SPELL_AURA_APPLIED_DOSE 438218 438200",
|
|
"SPELL_AURA_REMOVED 455080 450980 451277 440001"--451611, 440503, 438656
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED",
|
|
-- "UNIT_DIED"
|
|
-- "UNIT_SPELLCAST_SUCCEEDED boss1 boss2"
|
|
)
|
|
|
|
--TODO, target scan charge? ALsos tooltip unclear, should a player soak it to avoid him hitting a wall or is that purely about aiming charge nots soaking?
|
|
--TODO, binding webs multi target alerts to alert who you are bound to once it's clear how it's presented in combat log (if it's presented)
|
|
--TODO, stinging swarm seems to have two versions, complex one that reequires dispeling near other boss to interrupt it, and one that's just ordinary debuff (probably LFR version)
|
|
--TODO, if stringing swarm doesn't go private aura, add icons and icon based yells for dispel assignments. Not gonna waste time doing it now though when this fight hasn't had PA flagging done yet
|
|
--TODO, add https://www.wowhead.com/beta/spell=441775/void-blast if it's not spammed, similar boat to poison bolt
|
|
--TODO, maybe Entropic should be a run away warning instead for melee?
|
|
--TODO, lots of cleanup of boss mechanics that interrupt other boss mechanics with better clarity and voices
|
|
--TODO, change option keys to match BW for weak aura compatability before live
|
|
--NOTE, https://www.wowhead.com/beta/spell=440503/impaling-eruption was not exposed, re-add of that changes
|
|
--[[
|
|
(ability.id = 438218 or ability.id = 438801 or ability.id = 440246 or ability.id = 440504 or ability.id = 438343 or ability.id = 439838 or ability.id = 450045 or ability.id = 451016 or ability.id = 438677 or ability.id = 452231 or ability.id = 441626 or ability.id = 450129 or ability.id = 441782 or ability.id = 450483 or ability.id = 438355 or ability.id = 443068 or ability.id = 451327 or ability.id = 442994) and type = "begincast"
|
|
or (ability.id = 451277 or ability.id = 450980) and (type = "applybuff" or type = "removebuff")
|
|
--]]
|
|
local anubarash, takazj = DBM:EJ_GetSectionInfo(29012), DBM:EJ_GetSectionInfo(29017)
|
|
--General Stuff
|
|
local specWarnMarkofParanoia = mod:NewSpecialWarningYou(455849, nil, nil, nil, 1, 17, 4)
|
|
local specWarnMarkofRage = mod:NewSpecialWarningYou(455850, nil, nil, nil, 1, 17, 4)
|
|
|
|
mod:AddInfoFrameOption(nil, true)--Absorb shield infoframe
|
|
--Stage One: Clash of Rivals
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(29011))
|
|
----Anub'arash
|
|
mod:AddTimerLine(anubarash)
|
|
local warnPiercingStrike = mod:NewStackAnnounce(438218, 2, nil, "Tank|Healer", 2)
|
|
local warnCalloftheSwarm = mod:NewCountAnnounce(438801, 2)
|
|
local warnBurrowedEruption = mod:NewCountAnnounce(441791, 2)
|
|
local warnImpaled = mod:NewTargetNoFilterAnnounce(449857, 4)
|
|
local warnEntangled = mod:NewTargetNoFilterAnnounce(440179, 1)
|
|
|
|
local specWarnPiercingStrike = mod:NewSpecialWarningDefensive(438218, nil, nil, nil, 1, 2)
|
|
local specWarnRecklessCharge = mod:NewSpecialWarningCount(440246, nil, nil, nil, 1, 2)--If we can get target, make dodge warning for non target and "move to web" for target
|
|
local specWarnImpalingEruption = mod:NewSpecialWarningDodgeCount(440504, nil, nil, nil, 2, 2)
|
|
local yellImpaled = mod:NewShortYell(449857, nil, false)
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(421532, nil, nil, nil, 1, 8)
|
|
|
|
local timerPiercingStrikeCD = mod:NewCDCountTimer(49, 438218, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
|
|
local timerCalloftheSwarmCD = mod:NewCDCountTimer(49, 438801, nil, nil, nil, 1)
|
|
local timerRecklessChargeCD = mod:NewCDCountTimer(49, 440246, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
local timerBurrowedEruptionCD = mod:NewCDCountTimer(49, 441791, nil, nil, nil, 3)
|
|
local timerImpalingEruptionCD = mod:NewCDCountTimer(49, 440504, nil, nil, nil, 3)
|
|
--local timerEntangledCD = mod:NewTargetTimer(6, 440179, nil, false, nil, 5)--Too many timers on fight already, this is opt in
|
|
|
|
mod:AddNamePlateOption("NPAuraOnPerseverance", 455080, true)
|
|
mod:AddSetIconOption("SetIconOnScarab", 438801, true, 5, {6, 7, 8})
|
|
----Skeinspinner Takazj
|
|
mod:AddTimerLine(takazj)
|
|
local warnPoisonBolt = mod:NewStackAnnounce(438200, 2, nil, "Tank|Healer")
|
|
local warnVenomousRain = mod:NewCountAnnounce(438343, 2)
|
|
local warnWebBomb = mod:NewCountAnnounce(439838, 3)--General announce for everyone, personal special announce to target
|
|
local warnSkitteringLeap = mod:NewCountAnnounce(450045, 2)
|
|
local warnBindingWeb = mod:NewFadesAnnounce(440001, 1)
|
|
|
|
--local specWarnWebBomb = mod:NewSpecialWarningYou(439838, nil, nil, nil, 1, 2)--Not exposed
|
|
--local yellWebBomb = mod:NewShortYell(439838)
|
|
--local yellWebBombFades = mod:NewShortFadesYell(439838)
|
|
local specWarnBindingWebs = mod:NewSpecialWarningYou(440001, nil, nil, nil, 1, 2)
|
|
local specWarnVenomousRain = mod:NewSpecialWarningYou(438343, nil, nil, nil, 1, 2)--Change to moveto if this is one that removes ground webs?
|
|
|
|
local timerVenomousRainCD = mod:NewCDCountTimer(49, 438343, nil, nil, nil, 3)
|
|
local timerWebBombCD = mod:NewCDCountTimer(49, 439838, nil, nil, nil, 3)
|
|
local timerSkitteringLeapCD = mod:NewCDCountTimer(49, 450045, nil, nil, nil, 3)
|
|
local timerVoidAscensionCD = mod:NewIntermissionCountTimer(100, 450483, nil, nil, nil, 6)
|
|
--Stage Two: Grasp of the Void
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(29021))
|
|
----Anub'arash
|
|
mod:AddTimerLine(anubarash)
|
|
local warnStingingSwarm = mod:NewTargetNoFilterAnnounce(450045, 2)--No Filter because this is a raid wiping mechanic if the 3 players don't get to boss
|
|
local warnStingingDelirium = mod:NewTargetNoFilterAnnounce(456245, 2)--Player or Boss
|
|
|
|
local specWarnStingingSwarm = mod:NewSpecialWarningMoveTo(438677, nil, nil, nil, 1, 2)--438708
|
|
local yellStingingSwarm = mod:NewShortYell(438677)
|
|
|
|
local timerStingingSwarmCD = mod:NewCDCountTimer(49, 438677, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON)
|
|
local timerRagingFuryIntermissionCD = mod:NewIntermissionCountTimer(100, 451327, nil, nil, nil, 6)
|
|
----Skeinspinner Takazj
|
|
mod:AddTimerLine(takazj)
|
|
local warnVoidStep = mod:NewCountAnnounce(450483, 2)
|
|
local warnEntropicDesolation = mod:NewCastAnnounce(450129, 4)
|
|
|
|
local specWarnWebVortex = mod:NewSpecialWarningCount(441626, nil, nil, nil, 2, 12)
|
|
--local specWarnEntropicDesolation = mod:NewSpecialWarningRun(450129, nil, nil, nil, 4, 2)
|
|
local specWarnStrandsofReality = mod:NewSpecialWarningDodgeCount(441782, nil, nil, nil, 2, 2)
|
|
local specWarnCataclysmicEntropy = mod:NewSpecialWarningCount(438355, nil, nil, nil, 2, 2)
|
|
|
|
local timerWebVortexCD = mod:NewCDCountTimer(49, 441626, nil, nil, nil, 2)
|
|
local timerEntropicDesolationCD = mod:NewCDCountTimer(49, 450129, nil, nil, nil, 2)
|
|
local timerStrandsofRealityCD = mod:NewCDCountTimer(49, 441782, nil, nil, nil, 3)
|
|
local timerVoidStepCD = mod:NewCDCountTimer(49, 450483, nil, nil, nil, 3)
|
|
local timerCataclysmicEntropyCD = mod:NewCDCountTimer(49, 438355, nil, nil, nil, 5, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
--Stage Three: Unleashed Rage
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(29022))
|
|
local specWarnEnragedFerocity = mod:NewSpecialWarningDispel(443598, "RemoveEnrage", nil, nil, 1, 2)
|
|
----Anub'arash
|
|
mod:AddTimerLine(anubarash)
|
|
local specWarnUnleashedSwarm = mod:NewSpecialWarningCount(442994, nil, nil, nil, 2, 2)
|
|
local specWarnSpikeEruption = mod:NewSpecialWarningDodgeCount(443068, nil, nil, nil, 2, 2)
|
|
|
|
local timerSpikeEruptionCD = mod:NewCDCountTimer(49, 443068, nil, nil, nil, 3)
|
|
local timerUnleashedSwarmCD = mod:NewCDCountTimer(49, 442994, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
--local timerRagingFuryCD = mod:NewCDCountTimer(49, 451327, nil, nil, nil, 5, nil, DBM_COMMON_L.ENRAGE_ICON)
|
|
|
|
mod.vb.burrowedEruptionCount = 0
|
|
mod.vb.piercingCount = 0
|
|
mod.vb.swarmCount = 0--Call of the Swarm and Unleashed Swarm
|
|
mod.vb.chargeCount = 0
|
|
mod.vb.eruptionCount = 0--Impaling Eruption & Spike Eruption
|
|
mod.vb.rainCount = 0--Venomous Rain & Entropic Desolation
|
|
mod.vb.webBombCount = 0--Web Bomb & Web Vortex
|
|
mod.vb.leapCount = 0--Skittering Leap & Void Step
|
|
mod.vb.stingingCount = 0
|
|
mod.vb.strandsCount = 0
|
|
mod.vb.cataCount = 0
|
|
mod.vb.scarabIcon = 8
|
|
--mod.vb.rageCount = 0--Only cast once?
|
|
|
|
local savedDifficulty = "heroic"
|
|
local allTimers = {
|
|
["normal"] = {
|
|
[1] = {
|
|
-- Piercing Strike
|
|
[438218] = {18, 19.9, 20, 22.9, 38.0},
|
|
-- Call of the Swarm
|
|
[438801] = {13.1, 64.8},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {40.1, 59.9},
|
|
-- Reckless Charge
|
|
[440246] = {43.9, 59.9},
|
|
-- Impaling Eruption
|
|
[440504] = {30, 32.9, 31.0},
|
|
-- Venomous Rain
|
|
[438343] = {7.7, 31.7, 30.2, 31.8},
|
|
-- Web Bomb
|
|
[439838] = {24.3, 33.2, 33.3},
|
|
-- Skittering Leap
|
|
[450045] = {17, 31.5, 28.7, 30.3},
|
|
},
|
|
[2] = {
|
|
-- Call of the Swarm
|
|
[438801] = {26.0, 51},
|
|
-- Piercing Strike
|
|
[438218] = {14.0, 20, 20, 20, 20, 20},
|
|
-- Impaling Eruption
|
|
[440504] = {9, 39.9, 40.0},
|
|
-- Stinging Swarm
|
|
[438677] = {46.0, 49.9},
|
|
-- Web Vortex
|
|
[441626] = {32.2, 49.7},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Entropic Desolation
|
|
[450129] = {35.0, 49.7},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Strands of Reality
|
|
[441782] = {18.1, 75.3},
|
|
-- Void Step
|
|
[450483] = {27.1, 26.7, 25.2, 23.4},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {56.9, 48.6},
|
|
},
|
|
[3] = {
|
|
-- Piercing Strike
|
|
[438218] = {25.0, 23.0, 40, 22.9, 56.0, 20},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {55.0, 75},
|
|
-- Reckless Charge
|
|
[440246] = {58.8, 75},
|
|
-- Stinging Swarm
|
|
[438677] = {75.0, 100.0},
|
|
-- Web Vortex
|
|
[441626] = {42.3, 73.8},
|
|
-- Entropic Desolation
|
|
[450129] = {45.1, 73.8},
|
|
-- Strands of Reality
|
|
[441782] = {26.3, 153.8},
|
|
-- Void Step
|
|
[450483] = {37.3, 26.6, 23.3, 25.9, 24.6, 25.2, 24.0},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {90.1, 100.1},
|
|
-- Spike Eruption
|
|
[443068] = {45.0, 62.9, 63.0},
|
|
-- Unleashed Swarm
|
|
[442994] = {30.0, 118.9},
|
|
}
|
|
},
|
|
["heroic"] = {
|
|
[1] = {
|
|
-- Piercing Strike
|
|
[438218] = {15.1, 19.9, 27.0, 19.0},
|
|
-- Call of the Swarm
|
|
[438801] = {18.0, 65.0},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {40, 59.5},
|
|
-- Reckless Charge
|
|
[440246] = {43.3, 59.5},
|
|
-- Impaling Eruption
|
|
[440504] = {21.1, 35.9, 30.0, 31.0},
|
|
-- Venomous Rain
|
|
[438343] = {7.7, 31.2, 31.7, 28.6},
|
|
-- Web Bomb
|
|
[439838] = {25.0, 36.2},
|
|
-- Skittering Leap
|
|
[450045] = {15.6, 30.9, 30.1, 15.0, 15.0},
|
|
},
|
|
[2] = {
|
|
-- Call of the Swarm
|
|
[438801] = {31.0, 37.0},
|
|
-- Piercing Strike
|
|
[438218] = {14.1, 20.0, 20.0, 20.0, 20.0},
|
|
-- Impaling Eruption
|
|
[440504] = {9.0, 40.0, 40.0},
|
|
-- Stinging Swarm
|
|
[438677] = {39.0, 37.0},
|
|
-- Web Vortex
|
|
[441626] = {32.2, 37.2, 36.2},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Entropic Desolation
|
|
[450129] = {35.0, 37.2, 36.2},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Strands of Reality
|
|
[441782] = {14.2, 33.2, 34.1},
|
|
-- Void Step
|
|
[450483] = {27.2, 25.2, 26.1, 24.2},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {55.4, 59.4},
|
|
},
|
|
[3] = {
|
|
-- Piercing Strike
|
|
[438218] = {25.0, 20.0, 30.0, 21.0, 20.0, 20.0, 20.0},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {55.2, 108.8},
|
|
-- Reckless Charge
|
|
[440246] = {59.0, 108.8},
|
|
-- Stinging Swarm
|
|
[438677] = {93.0, 69.0},
|
|
-- Web Vortex
|
|
[441626] = {42.4, 99.8},
|
|
-- Entropic Desolation
|
|
[450129] = {45.2, 99.8},
|
|
-- Strands of Reality
|
|
[441782] = {28.4, 64.5, 56.4},
|
|
-- Void Step
|
|
[450483] = {37.4, 50.4, 24.3, 25.1, 25.2, 9.1, 13.1, 3.0},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {115.1, 75.5},
|
|
-- Spike Eruption
|
|
[443068] = {20.0, 111.0},
|
|
-- Unleashed Swarm
|
|
[442994] = {30.0, 89.0},
|
|
}
|
|
},
|
|
["mythic"] = {
|
|
[1] = {
|
|
-- Piercing Strike
|
|
[438218] = {15.0, 23.0, 25.0, 24.0},
|
|
-- Call of the Swarm
|
|
[438801] = {23.0, 50.0},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {40.0, 59.9},
|
|
-- Reckless Charge
|
|
[440246] = {43.0, 59.9},
|
|
-- Impaling Eruption
|
|
[440504] = {8.0, 24.0, 25.0, 23.0},
|
|
-- Venomous Rain
|
|
[438343] = {15.2, 41.9, 33.2},
|
|
-- Web Bomb
|
|
[439838] = {31.4, 32.9, 28.1},
|
|
-- Skittering Leap
|
|
[450045] = {19.3, 27.3, 61.1},
|
|
},
|
|
[2] = {
|
|
-- Call of the Swarm
|
|
[438801] = {20.0, 48.0},
|
|
-- Piercing Strike
|
|
[438218] = {15.0, 19.0, 20.0, 23.0, 19.0, 24.0},
|
|
-- Impaling Eruption
|
|
[440504] = {9.0, 35.0, 35.0, 35.0},
|
|
-- Stinging Swarm
|
|
[438677] = {36.0, 37.0},
|
|
-- Web Vortex
|
|
[441626] = {32.7, 2.5, 34.6, 2.5, 33.7},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Entropic Desolation
|
|
[450129] = {38.0, 37.1},--Sometimes boss skips 2nd cast then 3rd cast 73.4 after 1st cast
|
|
-- Strands of Reality
|
|
[441782] = {14.1, 32.2, 36.1},
|
|
-- Void Step
|
|
[450483] = {52.8, 26.6, 23.7},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {55.8, 61.3},
|
|
},
|
|
[3] = {
|
|
-- Piercing Strike
|
|
[438218] = {26.0, 20.0, 20.0, 34.0, 22.0, 21.0, 20.0},
|
|
-- Burrowed Eruption (precursor to Reckless Charge)
|
|
[441791] = {81.0, 97.0},
|
|
-- Reckless Charge
|
|
[440246] = {84.4, 96.6},
|
|
-- Stinging Swarm
|
|
[438677] = {63.0, 77.0},
|
|
-- Web Vortex
|
|
[441626] = {20.2, 2.5, 68.5, 2.5, 73.9, 2.5},
|
|
-- Entropic Desolation
|
|
[450129] = {25.5, 71.0, 76.4},
|
|
-- Strands of Reality
|
|
[441782] = {42.8, 38.8, 48.2, 47.2},
|
|
-- Void Step
|
|
[450483] = {37.8, 50.4, 24.6, 49.7, 23.1, 3.0},
|
|
-- Cataclysmic Entropy
|
|
[438355] = {115.8, 75.8},
|
|
-- Spike Eruption
|
|
[443068] = {23.0, 37.0, 37.0, 37.0, 37.0},
|
|
-- Unleashed Swarm
|
|
[442994] = {30.0, 80.0},
|
|
}
|
|
},
|
|
}
|
|
|
|
local function checkSkippedWebVortex(self)
|
|
self.vb.webBombCount = self.vb.webBombCount + 1
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 441626, self.vb.webBombCount+1)
|
|
if timer then
|
|
timerWebVortexCD:Start(timer-8, self.vb.webBombCount+1)
|
|
self:Schedule(timer, checkSkippedWebVortex, self)
|
|
end
|
|
DBM:Debug("checkSkippedWebVortex fired", 2)
|
|
end
|
|
|
|
local function checkSkippedEntropicDesolation(self)
|
|
self.vb.rainCount = self.vb.rainCount + 1
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 450129, self.vb.rainCount+1)
|
|
if timer then
|
|
timerEntropicDesolationCD:Start(timer-8, self.vb.rainCount+1)
|
|
self:Schedule(timer, checkSkippedEntropicDesolation, self)
|
|
end
|
|
DBM:Debug("checkSkippedEntropicDesolation fired", 2)
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self:SetStage(1)
|
|
self.vb.burrowedEruptionCount = 0
|
|
self.vb.piercingCount = 0
|
|
self.vb.swarmCount = 0
|
|
self.vb.chargeCount = 0
|
|
self.vb.eruptionCount = 0
|
|
self.vb.rainCount = 0
|
|
self.vb.webBombCount = 0
|
|
self.vb.leapCount = 0
|
|
self.vb.stingingCount = 0
|
|
self.vb.strandsCount = 0
|
|
self.vb.cataCount = 0
|
|
--self.vb.rageCount = 0
|
|
if self:IsMythic() then
|
|
savedDifficulty = "mythic"
|
|
elseif self:IsHeroic() then
|
|
savedDifficulty = "heroic"
|
|
else--Combine LFR and Normal
|
|
savedDifficulty = "normal"
|
|
end
|
|
--Anub
|
|
timerPiercingStrikeCD:Start(allTimers[savedDifficulty][1][438218][1]-delay, 1)--15.1
|
|
timerCalloftheSwarmCD:Start(allTimers[savedDifficulty][1][438801][1]-delay, 1)--18.0
|
|
timerImpalingEruptionCD:Start(allTimers[savedDifficulty][1][440504][1]-delay, 1)--21.1
|
|
timerRecklessChargeCD:Start(allTimers[savedDifficulty][1][440246][1]-delay, 1)--43.3
|
|
--timerBurrowedEruptionCD:Start(allTimers[savedDifficulty][1][441791][1]-delay, 1)
|
|
--Takazj
|
|
timerVenomousRainCD:Start(allTimers[savedDifficulty][1][438343][1]-delay, 1)--7.7
|
|
timerSkitteringLeapCD:Start(allTimers[savedDifficulty][1][450045][1]-delay, 1)--15.6
|
|
timerWebBombCD:Start(allTimers[savedDifficulty][1][439838][1]-delay, 1)--25.0
|
|
timerVoidAscensionCD:Start(self:IsHeroic() and 126.6 or 131, 1.5)--131 confirmed on mythic and normal, maybe heroic changed?
|
|
if self.Options.NPAuraOnPerseverance then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.NPAuraOnPerseverance then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:Hide()
|
|
end
|
|
end
|
|
|
|
function mod:OnTimerRecovery()
|
|
if self:IsMythic() then
|
|
savedDifficulty = "mythic"
|
|
elseif self:IsHeroic() then
|
|
savedDifficulty = "heroic"
|
|
else--Combine LFR and Normal
|
|
savedDifficulty = "normal"
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 438218 then
|
|
self.vb.piercingCount = self.vb.piercingCount + 1
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 438218, self.vb.piercingCount+1)
|
|
if timer then
|
|
timerPiercingStrikeCD:Start(timer, self.vb.piercingCount+1)
|
|
end
|
|
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then
|
|
specWarnPiercingStrike:Show()
|
|
specWarnPiercingStrike:Play("defensive")
|
|
end
|
|
elseif spellId == 438801 then
|
|
self.vb.scarabIcon = 8
|
|
self.vb.swarmCount = self.vb.swarmCount + 1
|
|
warnCalloftheSwarm:Show(self.vb.swarmCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 438801, self.vb.swarmCount+1)
|
|
if timer then
|
|
timerCalloftheSwarmCD:Start(timer, self.vb.swarmCount+1)
|
|
end
|
|
elseif spellId == 440246 then
|
|
self.vb.chargeCount = self.vb.chargeCount + 1
|
|
specWarnRecklessCharge:Show(self.vb.chargeCount)
|
|
if DBM:UnitDebuff("player", 440001) then--Web Lines
|
|
specWarnRecklessCharge:Play("stopchargewithline")
|
|
else
|
|
specWarnRecklessCharge:Play("chargemove")
|
|
end
|
|
specWarnRecklessCharge:Play("chargemove")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 440246, self.vb.chargeCount+1)
|
|
if timer then
|
|
timerRecklessChargeCD:Start(timer, self.vb.chargeCount+1)
|
|
end
|
|
elseif spellId == 440504 then
|
|
self.vb.eruptionCount = self.vb.eruptionCount + 1
|
|
specWarnImpalingEruption:Show(self.vb.eruptionCount)
|
|
specWarnImpalingEruption:Play("shockwave")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 440504, self.vb.eruptionCount+1)
|
|
if timer then
|
|
timerImpalingEruptionCD:Start(timer, self.vb.eruptionCount+1)
|
|
end
|
|
elseif spellId == 438343 then
|
|
self.vb.rainCount = self.vb.rainCount + 1
|
|
warnVenomousRain:Show(self.vb.rainCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 438343, self.vb.rainCount+1)
|
|
if timer then
|
|
timerVenomousRainCD:Start(timer, self.vb.rainCount+1)
|
|
end
|
|
elseif spellId == 439838 then
|
|
self.vb.webBombCount = self.vb.webBombCount + 1
|
|
warnWebBomb:Show(self.vb.webBombCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 439838, self.vb.webBombCount+1)
|
|
if timer then
|
|
timerWebBombCD:Start(timer, self.vb.webBombCount+1)
|
|
end
|
|
elseif spellId == 450045 then
|
|
self.vb.leapCount = self.vb.leapCount + 1
|
|
warnSkitteringLeap:Show(self.vb.leapCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 450045, self.vb.leapCount+1)
|
|
if timer then
|
|
timerSkitteringLeapCD:Start(timer, self.vb.leapCount+1)
|
|
end
|
|
elseif spellId == 451016 and self:GetStage(1) then--Shatter Existence
|
|
self:SetStage(1.5)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
--We manually stop timers Mostly in case phases can push early with higher dps checks in future
|
|
--Anub
|
|
timerRecklessChargeCD:Stop()
|
|
timerPiercingStrikeCD:Stop()
|
|
timerCalloftheSwarmCD:Stop()
|
|
timerImpalingEruptionCD:Stop()
|
|
--Takazj
|
|
timerVenomousRainCD:Stop()
|
|
timerWebBombCD:Stop()
|
|
timerSkitteringLeapCD:Stop()
|
|
elseif spellId == 438677 or spellId == 452231 then--Hard difficulty, and second ID LFR assumed
|
|
self.vb.stingingCount = self.vb.stingingCount + 1
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 438677, self.vb.stingingCount+1)
|
|
if timer then
|
|
timerStingingSwarmCD:Start(timer, self.vb.stingingCount+1)
|
|
end
|
|
elseif spellId == 441626 then
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self.vb.webBombCount = self.vb.webBombCount + 1
|
|
specWarnWebVortex:Show(self.vb.webBombCount)
|
|
specWarnWebVortex:Play("pullin")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 441626, self.vb.webBombCount+1)
|
|
if timer then
|
|
timerWebVortexCD:Start(timer, self.vb.webBombCount+1)
|
|
self:Schedule(timer+8, checkSkippedWebVortex, self)
|
|
end
|
|
elseif spellId == 450129 then
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
self.vb.rainCount = self.vb.rainCount + 1
|
|
warnEntropicDesolation:Show()
|
|
-- specWarnEntropicDesolation:Show(self.vb.rainCount)
|
|
-- specWarnEntropicDesolation:Play("runout")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 450129, self.vb.rainCount+1)
|
|
if timer then
|
|
timerEntropicDesolationCD:Start(timer, self.vb.rainCount+1)
|
|
self:Schedule(timer+8, checkSkippedEntropicDesolation, self)
|
|
end
|
|
elseif spellId == 441782 then
|
|
self.vb.strandsCount = self.vb.strandsCount + 1
|
|
specWarnStrandsofReality:Show(self.vb.strandsCount)
|
|
specWarnStrandsofReality:Play("shockwave")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 441782, self.vb.strandsCount+1)
|
|
if timer then
|
|
timerStrandsofRealityCD:Start(timer, self.vb.strandsCount+1)
|
|
end
|
|
elseif spellId == 450483 then
|
|
--"<128.45 21:38:32> [CLEU] SPELL_CAST_START#Creature-0-2085-2657-20809-217491-00007DBEE3#Skeinspinner Takazj(62.2%-0.0%)##nil#450483#Void Step#nil#nil",
|
|
--"<131.92 21:38:36> [CLEU] SPELL_AURA_APPLIED#Creature-0-2085-2657-20809-217491-00007DBEE3#Skeinspinner Takazj#Creature-0-2085-2657-20809-217491-00007DBEE3#Skeinspinner Takazj#450980#Shatter Existence#BUFF#269896768",
|
|
--Early phasing since boss does a void step before casting shatter existence
|
|
if self:GetStage(1) then
|
|
self:SetStage(1.5)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
--We manually stop timers Mostly in case phases can push early with higher dps checks in future
|
|
--Anub
|
|
timerRecklessChargeCD:Stop()
|
|
timerPiercingStrikeCD:Stop()
|
|
timerCalloftheSwarmCD:Stop()
|
|
timerImpalingEruptionCD:Stop()
|
|
--Takazj
|
|
timerVenomousRainCD:Stop()
|
|
timerWebBombCD:Stop()
|
|
timerSkitteringLeapCD:Stop()
|
|
else
|
|
self.vb.leapCount = self.vb.leapCount + 1
|
|
warnVoidStep:Show(self.vb.leapCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 450483, self.vb.leapCount+1)
|
|
if timer then
|
|
timerVoidStepCD:Start(timer, self.vb.leapCount+1)
|
|
end
|
|
end
|
|
elseif spellId == 438355 then
|
|
self.vb.cataCount = self.vb.cataCount + 1
|
|
specWarnCataclysmicEntropy:Show(self.vb.cataCount)
|
|
specWarnCataclysmicEntropy:Play("specialsoon")--Maybe custom sound?
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 438355, self.vb.cataCount+1)
|
|
if timer then
|
|
timerCataclysmicEntropyCD:Start(timer, self.vb.cataCount+1)
|
|
end
|
|
elseif spellId == 443068 then
|
|
self.vb.eruptionCount = self.vb.eruptionCount + 1
|
|
specWarnSpikeEruption:Show(self.vb.eruptionCount)
|
|
specWarnSpikeEruption:Play("watchstep")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 443068, self.vb.eruptionCount+1)
|
|
if timer then
|
|
timerSpikeEruptionCD:Start(timer, self.vb.eruptionCount+1)
|
|
end
|
|
elseif spellId == 441791 then
|
|
self.vb.burrowedEruptionCount = self.vb.burrowedEruptionCount + 1
|
|
warnBurrowedEruption:Show(self.vb.burrowedEruptionCount)
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 441791, self.vb.burrowedEruptionCount+1)
|
|
if timer then
|
|
timerBurrowedEruptionCD:Start(timer, self.vb.burrowedEruptionCount+1)
|
|
end
|
|
elseif spellId == 451327 and self:GetStage(3) then--Raging Fury
|
|
if self:GetStage(2) then
|
|
self:SetStage(2.5)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
--We manually stop timers Mostly in case phases can push early with higher dps checks in future
|
|
--Anub
|
|
timerPiercingStrikeCD:Stop()
|
|
timerCalloftheSwarmCD:Stop()
|
|
timerImpalingEruptionCD:Stop()
|
|
timerStingingSwarmCD:Stop()
|
|
--Takazj
|
|
timerWebVortexCD:Stop()
|
|
timerEntropicDesolationCD:Stop()
|
|
timerStrandsofRealityCD:Stop()
|
|
timerVoidStepCD:Stop()
|
|
timerCataclysmicEntropyCD:Stop()
|
|
--else
|
|
--self.vb.rageCount = self.vb.rageCount + 1
|
|
--timerRagingFuryCD:Start()
|
|
end
|
|
elseif spellId == 442994 then
|
|
self.vb.swarmCount = self.vb.swarmCount + 1
|
|
specWarnUnleashedSwarm:Show(self.vb.swarmCount)
|
|
specWarnUnleashedSwarm:Play("aesoon")
|
|
local timer = self:GetFromTimersTable(allTimers, savedDifficulty, self.vb.phase, 442994, self.vb.swarmCount+1)
|
|
if timer then
|
|
timerUnleashedSwarmCD:Start(timer, self.vb.swarmCount+1)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_SUMMON(args)
|
|
local spellId = args.spellId
|
|
if spellId == 438249 then
|
|
if self.Options.SetIconOnScarab then
|
|
self:ScanForMobs(args.destGUID, 2, self.vb.scarabIcon, 1, nil, 12, "SetIconOnScarab")
|
|
end
|
|
self.vb.scarabIcon = self.vb.scarabIcon - 1
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 455849 and args:IsPlayer() then
|
|
specWarnMarkofParanoia:Show()
|
|
specWarnMarkofParanoia:Play("paranoiayou")
|
|
elseif spellId == 455850 and args:IsPlayer() then
|
|
specWarnMarkofRage:Show()
|
|
specWarnMarkofRage:Play("rageyou")
|
|
elseif spellId == 438218 then
|
|
warnPiercingStrike:Show(args.destName, args.amount or 1)
|
|
elseif spellId == 438200 then
|
|
local amount = args.amount or 1
|
|
if amount % 6 == 0 then
|
|
warnPoisonBolt:Show(args.destName, args.amount or 1)
|
|
end
|
|
elseif spellId == 455080 then
|
|
if self.Options.NPAuraOnPerseverance then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 449857 then
|
|
warnImpaled:CombinedShow(1.5, args.destName)--Collects impaled targets over 1.5 seconds to reduce spam from bad dodging
|
|
if args:IsPlayer() then
|
|
yellImpaled:Yell()
|
|
end
|
|
-- elseif spellId == 451611 then
|
|
-- if args:IsPlayer() then
|
|
-- specWarnWebBomb:Show()
|
|
-- specWarnWebBomb:Play("bombyou")
|
|
-- yellWebBomb:Yell()
|
|
-- yellWebBombFades:Countdown(spellId)
|
|
-- end
|
|
elseif spellId == 440001 then
|
|
if args:IsPlayer() and self:AntiSpam(3, 1) then
|
|
specWarnBindingWebs:Show()
|
|
specWarnBindingWebs:Play("lineapart")--Maybe use a diff sound during charge like "block charge"?
|
|
end
|
|
elseif spellId == 450980 then--Shatter Existence Absorb
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:SetHeader(args.spellName)
|
|
local uId = DBM:GetUnitIdFromGUID(args.destGUID, true)
|
|
DBM.InfoFrame:Show(2, "enemyabsorb", nil, args.amount, uId)
|
|
end
|
|
elseif spellId == 438656 then
|
|
if args:IsPlayer() then
|
|
specWarnVenomousRain:Show()
|
|
specWarnVenomousRain:Play("targetyou")
|
|
end
|
|
elseif spellId == 440179 then
|
|
warnEntangled:Show(args.destName)
|
|
elseif spellId == 456245 or spellId == 456235 then
|
|
warnStingingDelirium:Show(args.destName)
|
|
elseif spellId == 451277 and self:GetStage(2) then--Spike Storm Absorb
|
|
self:SetStage(2.5)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
--Anub
|
|
timerPiercingStrikeCD:Stop()
|
|
timerCalloftheSwarmCD:Stop()
|
|
timerImpalingEruptionCD:Stop()
|
|
timerStingingSwarmCD:Stop()
|
|
--Takazj
|
|
timerWebVortexCD:Stop()
|
|
timerEntropicDesolationCD:Stop()
|
|
timerStrandsofRealityCD:Stop()
|
|
timerVoidStepCD:Stop()
|
|
timerCataclysmicEntropyCD:Stop()
|
|
elseif spellId == 438708 or spellId == 456252 or spellId == 450728 then--One is unlimited version one is 9 second. I suspect one is initial version and one is jump?
|
|
warnStingingSwarm:CombinedShow(0.5, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnStingingSwarm:Show(takazj)
|
|
specWarnStingingSwarm:Play("movetoboss")
|
|
yellStingingSwarm:Yell()
|
|
end
|
|
elseif spellId == 443598 then
|
|
specWarnEnragedFerocity:Show(args.destName)
|
|
specWarnEnragedFerocity:Play("enrage")
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 455080 then
|
|
if self.Options.NPAuraOnPerseverance then
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
end
|
|
-- elseif spellId == 451611 then
|
|
-- if args:IsPlayer() then
|
|
-- yellWebBombFades:Cancel()
|
|
-- end
|
|
elseif spellId == 440001 then
|
|
if args:IsPlayer() then
|
|
warnBindingWeb:Show()
|
|
end
|
|
elseif spellId == 450980 then--Shatter Existence Absorb
|
|
self:SetStage(2)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
self.vb.piercingCount = 0
|
|
self.vb.swarmCount = 0
|
|
self.vb.eruptionCount = 0
|
|
self.vb.rainCount = 0--Also used for Entropic Desolation
|
|
self.vb.webBombCount = 0--Also web vortex
|
|
self.vb.leapCount = 0--Also used for void step
|
|
self.vb.strandsCount = 0
|
|
self.vb.stingingCount = 0
|
|
self.vb.cataCount = 0
|
|
--Anub
|
|
timerImpalingEruptionCD:Start(allTimers[savedDifficulty][2][440504][1], 1)
|
|
timerPiercingStrikeCD:Start(allTimers[savedDifficulty][2][438218][1], 1)
|
|
timerCalloftheSwarmCD:Start(allTimers[savedDifficulty][2][438801][1], 1)
|
|
timerStingingSwarmCD:Start(allTimers[savedDifficulty][2][438677][1], 1)
|
|
--Takazj
|
|
timerStrandsofRealityCD:Start(allTimers[savedDifficulty][2][441782][1], 1)
|
|
timerVoidStepCD:Start(allTimers[savedDifficulty][2][450483][1], 1)
|
|
timerWebVortexCD:Start(allTimers[savedDifficulty][2][441626][1], 1)
|
|
timerEntropicDesolationCD:Start(allTimers[savedDifficulty][2][450129][1], 1)
|
|
timerCataclysmicEntropyCD:Start(allTimers[savedDifficulty][2][438355][1], 1)
|
|
timerRagingFuryIntermissionCD:Start(self:IsEasy() and 128.7 or 132, 2.5)
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:Hide()
|
|
end
|
|
elseif spellId == 451277 then--Spike Storm Absorb
|
|
self:SetStage(3)
|
|
self:Unschedule(checkSkippedWebVortex)
|
|
self:Unschedule(checkSkippedEntropicDesolation)
|
|
self.vb.piercingCount = 0
|
|
self.vb.swarmCount = 0
|
|
self.vb.chargeCount = 0
|
|
self.vb.eruptionCount = 0
|
|
self.vb.rainCount = 0--Also used for Entropic Desolation
|
|
self.vb.webBombCount = 0--Also web vortex
|
|
self.vb.leapCount = 0--Also used for void step
|
|
self.vb.strandsCount = 0
|
|
self.vb.stingingCount = 0
|
|
self.vb.cataCount = 0
|
|
--Anub
|
|
timerSpikeEruptionCD:Start(allTimers[savedDifficulty][3][443068][1], 1)
|
|
timerPiercingStrikeCD:Start(allTimers[savedDifficulty][3][438218][1], 1)
|
|
timerUnleashedSwarmCD:Start(allTimers[savedDifficulty][3][442994][1], 1)
|
|
timerRecklessChargeCD:Start(allTimers[savedDifficulty][3][440246][1], 1)
|
|
timerStingingSwarmCD:Start(allTimers[savedDifficulty][3][438677][1], 1)
|
|
--Takazj
|
|
timerStrandsofRealityCD:Start(allTimers[savedDifficulty][3][441782][1], 1)
|
|
timerVoidStepCD:Start(allTimers[savedDifficulty][3][450483][1], 1)
|
|
timerWebVortexCD:Start(allTimers[savedDifficulty][3][441626][1], 1)
|
|
timerEntropicDesolationCD:Start(allTimers[savedDifficulty][3][450129][1], 1)
|
|
timerCataclysmicEntropyCD:Start(allTimers[savedDifficulty][3][438355][1], 1)
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:Hide()
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 421532 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
--]]
|
|
|
|
--[[
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 426144 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|