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.
287 lines
10 KiB
287 lines
10 KiB
local mod = DBM:NewMod(2530, "DBM-Aberrus", nil, 1208)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20230321180039")
|
|
mod:SetCreatureID(200912, 200913, 200918)
|
|
mod:SetEncounterID(2693)
|
|
mod:SetUsedIcons(1, 2, 3, 4, 5, 6)
|
|
mod:SetBossHPInfoToHighest()
|
|
mod:SetHotfixNoticeRev(20230320000000)
|
|
--mod:SetMinSyncRevision(20221215000000)
|
|
--mod.respawnTime = 29
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 406358 404472 407733 404713 405042 405492 405375 406227 407552 405391",
|
|
-- "SPELL_CAST_SUCCESS",
|
|
"SPELL_AURA_APPLIED 406317 406313 407302 407327 407617 405392",
|
|
"SPELL_AURA_APPLIED_DOSE 406313 407302",
|
|
"SPELL_AURA_REMOVED 406317 407327",
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED",
|
|
"UNIT_DIED"
|
|
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
|
|
--[[
|
|
|
|
--]]
|
|
--TODO, which slam Id, or both?
|
|
--TODO, correct Deep Breath trigger, i suspect one activates it and some of casts are each pass
|
|
--TODO, what do you actually do with TEmporal Anomaly, soak it?
|
|
--Neldris
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26001))
|
|
local warnMutilation = mod:NewTargetAnnounce(406317, 2)
|
|
local warnInfusedStrikes = mod:NewStackAnnounce(406313, 2, nil, "Tank|Healer")
|
|
|
|
local specWarnMutilation = mod:NewSpecialWarningMoveAway(406317, nil, nil, nil, 1, 2)
|
|
local yellMutilation = mod:NewShortPosYell(406317)
|
|
local yellMutilationFades = mod:NewIconFadesYell(406317)
|
|
local specWarnMassiveSlam = mod:NewSpecialWarningDodgeCount(404472, nil, nil, nil, 2, 2)
|
|
local specWarnForcefulRoar = mod:NewSpecialWarningCount(404713, nil, nil, nil, 2, 2)
|
|
--local specWarnPyroBlast = mod:NewSpecialWarningInterrupt(396040, "HasInterrupt", nil, nil, 1, 2)
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(370648, nil, nil, nil, 1, 8)
|
|
|
|
local timerMutilationCD = mod:NewAITimer(29.9, 406358, nil, nil, nil, 3)
|
|
local timerMassiveSlamCD = mod:NewAITimer(29.9, 404472, nil, nil, nil, 3)
|
|
local timerForcefulRoarCD = mod:NewAITimer(29.9, 404713, nil, nil, nil, 2)
|
|
local timerInfusedStrikes = mod:NewFadesTimer(20, 407302, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.HEALER_ICON)--Track the aura that needs to fall off before tanks "clear" again
|
|
--local timerFlameriftCD = mod:NewAITimer(28.9, 390715, nil, nil, nil, 3, nil, DBM_COMMON_L.DAMAGE_ICON)
|
|
--local berserkTimer = mod:NewBerserkTimer(600)
|
|
|
|
--mod:AddInfoFrameOption(361651, true)
|
|
--mod:AddRangeFrameOption(5, 390715)
|
|
mod:AddSetIconOption("SetIconOnMutilation", 406317, false, 0, {4, 5, 6})
|
|
--mod:AddNamePlateOption("NPAuraOnAscension", 385541)
|
|
mod:GroupSpells(406358, 406317)--Mutilation cast with debuff Id
|
|
--Thadrion
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26322))
|
|
local warnUnstableEssence = mod:NewCastAnnounce(405042, 3)
|
|
local warnUnstableEssenceTargets = mod:NewTargetAnnounce(405042, 2)
|
|
|
|
local specWarnUnstableEssence = mod:NewSpecialWarningYou(405042, nil, nil, nil, 1, 2)
|
|
local specWarnVolatileSpew = mod:NewSpecialWarningDodgeCount(405492, nil, nil, nil, 2, 2)
|
|
local specWarnUncontrollableFrenzy = mod:NewSpecialWarningCount(405375, nil, nil, nil, 2, 2)
|
|
|
|
local timerUnstableEssenceCD = mod:NewAITimer(29.9, 405042, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON)
|
|
local timerVolatileSpewCD = mod:NewAITimer(29.9, 405492, nil, nil, nil, 3)
|
|
local timerUncontrollableFrenzyCD = mod:NewAITimer(29.9, 405375, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
|
|
|
|
mod:AddSetIconOption("SetIconOnEssence", 405042, false, 0, {1, 2, 3})
|
|
--Rionthus
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(26329))
|
|
local warnTemporalAnomaly = mod:NewCastAnnounce(407552, 3)
|
|
local warnTemporalAnomalyAbsorbed = mod:NewTargetNoFilterAnnounce(407552, 2)
|
|
local warnDisintegrate = mod:NewTargetAnnounce(405391, 2)
|
|
|
|
local specWarnDeepBreath = mod:NewSpecialWarningDodgeCount(406227, nil, nil, nil, 2, 2)
|
|
local specWarnDisintegrate = mod:NewSpecialWarningMoveAway(405392, nil, nil, nil, 1, 2)
|
|
local yellDisintegrate = mod:NewShortYell(405392)
|
|
|
|
local timerDeepBreathCD = mod:NewAITimer(29.9, 406227, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
local timerTemporalAnomalyCD = mod:NewAITimer(29.9, 407552, nil, nil, nil, 5)
|
|
local timerDisintegrateCD = mod:NewAITimer(29.9, 405391, nil, nil, nil, 3)
|
|
|
|
mod.vb.mutIcon = 4
|
|
mod.vb.massiveSlamCount = 0
|
|
mod.vb.forcefulRoarCount = 0
|
|
mod.vb.volatileSpewCount = 0
|
|
mod.vb.frenzyCount = 0
|
|
mod.vb.breathCount = 0
|
|
mod.vb.Disintegrate = 0
|
|
local essenceMarks = {}
|
|
|
|
function mod:OnCombatStart(delay)
|
|
--Neldris
|
|
self.vb.massiveSlamCount = 0
|
|
self.vb.forcefulRoarCount = 0
|
|
timerMutilationCD:Start(1-delay)
|
|
timerMassiveSlamCD:Start(1-delay)
|
|
timerForcefulRoarCD:Start(1-delay)
|
|
--Thadrion
|
|
table.wipe(essenceMarks)
|
|
self.vb.volatileSpewCount = 0
|
|
self.vb.frenzyCount = 0
|
|
timerUnstableEssenceCD:Start(1-delay)
|
|
timerVolatileSpewCD:Start(1-delay)
|
|
timerUncontrollableFrenzyCD:Start(1-delay)
|
|
--Rionthus
|
|
self.vb.breathCount = 0
|
|
self.vb.Disintegrate = 0
|
|
timerDeepBreathCD:Start(1-delay)
|
|
timerTemporalAnomalyCD:Start(1-delay)
|
|
timerDisintegrateCD:Start(1-delay)
|
|
-- if self.Options.NPAuraOnAscension then
|
|
-- DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
-- end
|
|
end
|
|
|
|
--function mod:OnCombatEnd()
|
|
-- if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Hide()
|
|
-- end
|
|
-- if self.Options.InfoFrame then
|
|
-- DBM.InfoFrame:Hide()
|
|
-- end
|
|
-- if self.Options.NPAuraOnAscension then
|
|
-- DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
-- end
|
|
--end
|
|
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 406358 then
|
|
self.vb.mutIcon = 4
|
|
timerMutilationCD:Start()
|
|
elseif spellId == 407733 or spellId == 404472 then
|
|
self.vb.massiveSlamCount = self.vb.massiveSlamCount + 1
|
|
specWarnMassiveSlam:Show(self.vb.massiveSlamCount)
|
|
specWarnMassiveSlam:Play("shockwave")
|
|
timerMassiveSlamCD:Start()
|
|
elseif spellId == 404713 then
|
|
self.vb.forcefulRoarCount = self.vb.forcefulRoarCount + 1
|
|
specWarnForcefulRoar:Show(self.vb.forcefulRoarCount)
|
|
specWarnForcefulRoar:Play("carefly")
|
|
timerForcefulRoarCD:Start()
|
|
elseif spellId == 405042 then
|
|
warnUnstableEssence:Show()
|
|
timerUnstableEssenceCD:Start()
|
|
elseif spellId == 405492 then
|
|
self.vb.volatileSpewCount = self.vb.volatileSpewCount + 1
|
|
specWarnVolatileSpew:Show(self.vb.volatileSpewCount)
|
|
timerVolatileSpewCD:Start()
|
|
elseif spellId == 405375 then
|
|
self.vb.frenzyCount = self.vb.frenzyCount + 1
|
|
specWarnUncontrollableFrenzy:Show(self.vb.frenzyCount)
|
|
specWarnUncontrollableFrenzy:Play("aesoon")
|
|
timerUncontrollableFrenzyCD:Start()
|
|
elseif spellId == 406227 then
|
|
self.vb.breathCount = self.vb.breathCount + 1
|
|
specWarnDeepBreath:Show(self.vb.breathCount)
|
|
specWarnDeepBreath:Play("breathsoon")
|
|
timerDeepBreathCD:Start()
|
|
elseif spellId == 407552 then
|
|
warnTemporalAnomaly:Show()
|
|
timerTemporalAnomalyCD:Start()
|
|
elseif spellId == 405391 then
|
|
self.vb.Disintegrate = self.vb.Disintegrate + 1
|
|
timerDisintegrateCD:Start()
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 394917 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 406317 then
|
|
local icon = self.vb.mutIcon
|
|
if self.Options.SetIconOnMutilation then
|
|
self:SetIcon(args.destName, icon)
|
|
end
|
|
if args:IsPlayer() then
|
|
specWarnMutilation:Show()
|
|
specWarnMutilation:Play("runout")
|
|
yellMutilation:Yell(icon, icon)
|
|
yellMutilationFades:Countdown(spellId, nil, icon-3)
|
|
end
|
|
warnMutilation:CombinedShow(0.5, args.destName)
|
|
self.vb.mutIcon = self.vb.mutIcon + 1
|
|
elseif spellId == 406313 and not args:IsPlayer() then
|
|
local amount = args.amount or 1
|
|
if amount % 3 == 0 then--Guessed, Filler
|
|
warnInfusedStrikes:Show(args.destName, amount)
|
|
end
|
|
elseif spellId == 407302 and self:AntiSpam() then
|
|
timerInfusedStrikes:Restart()
|
|
elseif spellId == 407327 then
|
|
warnUnstableEssenceTargets:CombinedShow(0.3, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnUnstableEssence:Show()
|
|
specWarnUnstableEssence:Play("targetyou")
|
|
end
|
|
if self.Options.SetIconOnEssence then
|
|
for i = 1, 3, 1 do
|
|
if not essenceMarks[i] then
|
|
essenceMarks[i] = args.destGUID
|
|
self:SetIcon(args.destName, i)
|
|
return
|
|
end
|
|
end
|
|
end
|
|
elseif spellId == 407617 then
|
|
warnTemporalAnomalyAbsorbed:Show(args.destName)
|
|
elseif spellId == 405392 then
|
|
warnDisintegrate:CombinedShow(0.5, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnDisintegrate:Show()
|
|
specWarnDisintegrate:Play("range5")
|
|
yellDisintegrate:Yell()
|
|
end
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 406317 then
|
|
if args:IsPlayer() then
|
|
yellMutilationFades:Cancel()
|
|
end
|
|
if self.Options.SetIconOnMutilation then
|
|
self:Seticon(args.destName, 0)
|
|
end
|
|
elseif spellId == 407327 then
|
|
if self.Options.SetIconOnEssence then
|
|
for i = 1, 3, 1 do
|
|
if essenceMarks[i] == args.destGUID then
|
|
essenceMarks[i] = nil
|
|
self:SetIcon(args.destName, 0)
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 370648 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_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 200912 then--Neldris
|
|
timerMutilationCD:Stop()
|
|
timerMassiveSlamCD:Stop()
|
|
timerForcefulRoarCD:Stop()
|
|
elseif cid == 200918 then--Rionthus
|
|
timerDeepBreathCD:Stop()
|
|
timerTemporalAnomalyCD:Stop()
|
|
timerDisintegrateCD:Stop()
|
|
elseif cid == 200913 then--Thadrion
|
|
timerUnstableEssenceCD:Stop()
|
|
timerVolatileSpewCD:Stop()
|
|
timerUncontrollableFrenzyCD:Stop()
|
|
end
|
|
end
|
|
|
|
|
|
--function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
-- if spellId == 396734 then
|
|
--
|
|
-- end
|
|
--end
|
|
|