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.

498 lines
24 KiB

local mod = DBM:NewMod(2025, "DBM-Raids-Legion", 1, 946)
local L = mod:GetLocalizedStrings()
local DBM_COMMON_L = DBM_COMMON_L
mod:SetRevision("20230618063432")
mod:SetCreatureID(124445)
mod:SetEncounterID(2075)
--mod:SetBossHPInfoToHighest()
mod:SetUsedIcons(1, 2, 3, 4, 5, 6)
mod:SetHotfixNoticeRev(16960)
--mod.respawnTime = 29
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 249121 250701",
"SPELL_CAST_SUCCESS 246753 254769 250048",
"SPELL_AURA_APPLIED 250074 250555 249016 248332 250073 250693 250691 250140",
"SPELL_AURA_APPLIED_DOSE 250140",
"SPELL_AURA_REMOVED 250074 250555 249016 248332 250693 250691",
-- "SPELL_DAMAGE 248329",
-- "SPELL_MISSED 248329",
"UNIT_DIED",
"CHAT_MSG_RAID_BOSS_EMOTE",
"UNIT_SPELLCAST_CHANNEL_STOP boss1 boss2 boss3 boss4 boss5",
"UNIT_SPELLCAST_STOP boss1 boss2 boss3 boss4 boss5"
)
--TODO, verify Meteor Storm in LFR
--[[
(ability.id = 249121 or ability.id = 250048) and type = "begincast"
or (ability.id = 246753 or ability.id = 254769 or ability.id = 250048) and type = "cast"
or (ability.id = 248332) and type = "applydebuff"
or (ability.id = 250073) and type = "applybuff"
or target.name = "Volant Kerapteron"
or target.id = 124445 and ability.id = 250030
4 Life Force LFR Logs, and slower add spawn rates:
https://www.warcraftlogs.com/reports/bWwmdJ8gCkcP1BYF#fight=1&type=summary&view=events&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20249121%20or%20ability.id%20%3D%20250048)%20and%20type%20%3D%20%22begincast%22%20%20or%20(ability.id%20%3D%20246753%20or%20ability.id%20%3D%20254769)%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20248332)%20and%20type%20%3D%20%22applydebuff%22%20%20or%20(ability.id%20%3D%20250073)%20and%20type%20%3D%20%22applybuff%22%20%20or%20target.name%20%3D%20%22Volant%20Kerapteron%22
https://www.warcraftlogs.com/reports/RcjbYJQHWNCt41Fm#fight=24&type=summary&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20249121%20or%20ability.id%20%3D%20250048)%20and%20type%20%3D%20%22begincast%22%20%20or%20(ability.id%20%3D%20246753%20or%20ability.id%20%3D%20254769)%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20248332)%20and%20type%20%3D%20%22applydebuff%22%20%20or%20(ability.id%20%3D%20250073)%20and%20type%20%3D%20%22applybuff%22%20%20or%20target.name%20%3D%20%22Volant%20Kerapteron%22&view=events
3 Life Force LFR Logs, with faster add spawn rates:
https://www.warcraftlogs.com/reports/9xkDgRXYLtzb1Bnq#fight=2&type=summary&view=events&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20249121%20or%20ability.id%20%3D%20250048)%20and%20type%20%3D%20%22begincast%22%20%20or%20(ability.id%20%3D%20246753%20or%20ability.id%20%3D%20254769)%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20248332)%20and%20type%20%3D%20%22applydebuff%22%20%20or%20(ability.id%20%3D%20250073)%20and%20type%20%3D%20%22applybuff%22%20%20or%20target.name%20%3D%20%22Volant%20Kerapteron%22
https://www.warcraftlogs.com/reports/V1dPgAZtFLwq2HDz#fight=8&type=summary&view=events&pins=2%24Off%24%23244F4B%24expression%24(ability.id%20%3D%20249121%20or%20ability.id%20%3D%20250048)%20and%20type%20%3D%20%22begincast%22%20%20or%20(ability.id%20%3D%20246753%20or%20ability.id%20%3D%20254769)%20and%20type%20%3D%20%22cast%22%20%20or%20(ability.id%20%3D%20248332)%20and%20type%20%3D%20%22applydebuff%22%20%20or%20(ability.id%20%3D%20250073)%20and%20type%20%3D%20%22applybuff%22%20%20or%20target.name%20%3D%20%22Volant%20Kerapteron%22
--]]
--General/The Paraxis
mod:AddTimerLine(GENERAL)
local warnRainofFel = mod:NewTargetCountAnnounce(248332, 2)
local warnWarpIn = mod:NewTargetAnnounce(246888, 3, nil, nil, nil, nil, nil, 2, true)
local warnLifeForce = mod:NewCountAnnounce(250048, 1)
local specWarnSpearofDoom = mod:NewSpecialWarningDodge(248789, nil, nil, nil, 2, 2)
--local yellSpearofDoom = mod:NewYell(248789)
local specWarnRainofFel = mod:NewSpecialWarningMoveAway(248332, nil, nil, 2, 1, 2)
local yellRainofFel = mod:NewYell(248332)
local yellRainofFelFades = mod:NewShortFadesYell(248332)
local timerSpearofDoomCD = mod:NewCDCountTimer(55, 248789, nil, nil, nil, 3)--55-69
local timerRainofFelCD = mod:NewCDCountTimer(61, 248332, nil, nil, nil, 3)
mod:AddInfoFrameOption(nil, true)
mod:AddRangeFrameOption("8/10")
--Adds
mod:AddTimerLine(DBM_COMMON_L.ADDS)
local specWarnSwing = mod:NewSpecialWarningDodge(250701, "MeleeDps", nil, nil, 1, 2)
--local yellBurstingDreadflame = mod:NewPosYell(238430, DBM_CORE_L.AUTO_YELL_CUSTOM_POSITION)
--local specWarnMalignantAnguish = mod:NewSpecialWarningInterrupt(236597, "HasInterrupt")
--local specWarnGTFO = mod:NewSpecialWarningGTFO(238028, nil, nil, nil, 1, 2)
local timerDestructorCD = mod:NewTimer(90, "timerDestructor", 254769, nil, nil, 1, DBM_COMMON_L.TANK_ICON)
local timerObfuscatorCD = mod:NewTimer(90, "timerObfuscator", 246753, nil, nil, 1, DBM_COMMON_L.DAMAGE_ICON)
local timerPurifierCD = mod:NewTimer(90, "timerPurifier", 250074, nil, nil, 1, DBM_COMMON_L.TANK_ICON)
local timerBatsCD = mod:NewTimer(90, "timerBats", 242080, nil, nil, 1, DBM_COMMON_L.DAMAGE_ICON)
mod:AddNamePlateOption("NPAuraOnPurification", 250074)
--Mythic
mod:AddTimerLine(ENCOUNTER_JOURNAL_SECTION_FLAG12)
local specWarnFinalDoom = mod:NewSpecialWarningCount(249121, "-Tank", nil, nil, 1, 2)
local specWarnArcaneBuildup = mod:NewSpecialWarningMoveAway(250693, nil, nil, nil, 1, 2)
local yellArcaneBuildup = mod:NewYell(250693)
local yellArcaneBuildupFades = mod:NewShortFadesYell(250693)
local specWarnBurningEmbers = mod:NewSpecialWarningMoveAway(250691, nil, nil, nil, 1, 2)
local yellBurningEmbers = mod:NewYell(250691)
local yellBurningEmbersFades = mod:NewShortFadesYell(250691)
local specWarnFoulSteps = mod:NewSpecialWarningStack(250140, nil, 12, nil, nil, 1, 6)--Fine tune
local timerFinalDoom = mod:NewCastTimer(50, 249121, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON, nil, 2, 5)
local timerFinalDoomCD = mod:NewCDCountTimer(90, 249121, nil, nil, nil, 4, nil, DBM_COMMON_L.HEROIC_ICON, nil, 1, 5)
mod:AddSetIconOption("SetIconOnFeedbackTargeted2", 249016, false)
mod:AddNamePlateOption("NPAuraOnFelShielding", 250555)
mod.vb.rainOfFelCount = 0
mod.vb.lifeForceCast = 0
mod.vb.lifeRequired = 5
mod.vb.spearCast = 0
mod.vb.finalDoomCast = 0
mod.vb.destructors = 0
mod.vb.obfuscators = 0
mod.vb.purifiers = 0
--Timers combine multi sets,counts above do not combine cause for info frame
mod.vb.destructorCast = 0
mod.vb.obfuscatorCast = 0
mod.vb.purifierCast = 0
mod.vb.batCast = 0
mod.vb.targetedIcon = 1
local normalRainOfFelTimers = {}--PTR, recheck
local heroicRainOfFelTimers = {9.3, 43, 10, 43, 20, 19, 20, 29.2, 45, 25, 99}--Live, Dec 26
local mythicRainOfFelTimers = {6, 23.1, 24.1, 46, 25, 49.3, 15, 45, 24, 49.2, 24.1, 49.2, 50}--Live, Dec 14
--local mythicSpearofDoomTimers = {}
local heroicSpearofDoomTimers = {35, 59.2, 64.3, 40, 84.7, 34.1, 65.2}--Live, Nov 29
local finalDoomTimers = {59.3, 120, 94, 104.6, 99.6}--Live, Dec 5
local lfrDestructors = {21.5, 51.9, 50.3, 64.3, 107.2, 58.2, 44.1, 46.2, 44.2}--4 Life Force LFR Version
local lfrDestructors2 = {21.2, 43.8, 39.0, 51.1, 37.0, 53.0, 43.6, 45.2, 43.2}--3 Life force LFR version
local normalDestructors = {17, 46.2, 32, 52.4, 93.7, 40.9, 50.2, 55.4, 49.2}--Live, Dec 01. Old 17, 39.4, 28, 44.2, 92.4, 41.3, 50, 53.4, 48.1
local heroicDestructors = {15.7, 35.3, 40.6, 104.6, 134.7, 99.6}
local mythicDestructors = {27, 18, 87.4, 288.4, 20, 79}--Changed Dec 12th
local normalObfuscators = {193}--Live, Dec 01
local heroicObfuscators = {80.6, 148.5, 94.7, 99.9}
local mythicObfuscators = {46, 243, 43.8, 90.8}
local heroicPurifiers = {125, 66.1, 30.6}
local mythicPurifiers = {65.7, 82.6, 66.9, 145.7}
local heroicBats = {170, 125, 105, 105}--170, 295, 405, 510 (probably way off for 3rd and 4th because the heroic logs with long pulls are shit showa of terrible and unware dps that don't hit bats until they are in middle of path)
local mythicBats = {195, 79.9, 100, 95}--195, 275, 375, 470
local warnedAdds = {}
local addCountToLocationMythic = {
["Dest"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE},
["Obfu"] = {DBM_COMMON_L.BOTTOM, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM},
["Pur"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP}
}
local addCountToLocationHeroic = {
["Dest"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.MIDDLE.."/"..DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE.."/"..DBM_COMMON_L.TOP},
["Obfu"] = {DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.BOTTOM},
["Pur"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.MIDDLE}
}
local addCountToLocationNormal = {
["Dest"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE},
["Obfu"] = {DBM_COMMON_L.MIDDLE}
}
local addCountToLocationLFR = {
["Dest"] = {DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP, DBM_COMMON_L.MIDDLE, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM, DBM_COMMON_L.TOP, DBM_COMMON_L.BOTTOM}
}
local lifeForceName = DBM:GetSpellInfo(250048)
local updateInfoFrame
do
local lines = {}
local sortedLines = {}
local function addLine(key, value)
-- sort by insertion order
lines[key] = value
sortedLines[#sortedLines + 1] = key
end
updateInfoFrame = function()
table.wipe(lines)
table.wipe(sortedLines)
--Boss Powers first
local cid = mod:GetUnitCreatureId("boss1") or 0
if cid ~= 124445 then--Filter Paraxus
local currentPower = UnitPower("boss1", 10) or 0
local currentHealth = (UnitHealth("boss1")/UnitHealthMax("boss1") * 100) or 100
addLine(L.EonarHealth, math.floor(currentHealth).."%")
addLine(L.EonarPower, currentPower)
end
local cid2 = mod:GetUnitCreatureId("boss2") or 0
if cid2 ~= 124445 then--Filter Paraxus
local currentPower = UnitPower("boss2", 10) or 0
local currentHealth = (UnitHealth("boss2")/UnitHealthMax("boss2") * 100) or 100
addLine(L.EonarHealth, math.floor(currentHealth).."%")
addLine(L.EonarPower, currentPower.."%")
end
addLine(lifeForceName, mod.vb.lifeForceCast.."/"..mod.vb.lifeRequired)
if mod:IsLFR() then
local nextLocation = addCountToLocationLFR["Dest"][mod.vb.destructorCast+1]
if nextLocation then
addLine(L.NextLoc, nextLocation)
end
end
if mod.vb.obfuscators > 0 then
addLine(L.Obfuscators, mod.vb.obfuscators)
end
if mod.vb.destructors > 0 then
addLine(L.Destructors, mod.vb.destructors)
end
if mod.vb.purifiers > 0 then
addLine(L.Purifiers, mod.vb.purifiers)
end
return lines, sortedLines
end
end
--This is backup for fixing timers if destructors die before they ever cast high alert, such as massively overgearing encounter and able to burn it down in less than 10 seconds
local function checkForDeadDestructor(self, forceStart)
self:Unschedule(checkForDeadDestructor)
self.vb.destructorCast = self.vb.destructorCast + 1
local timer = self:IsMythic() and mythicDestructors[self.vb.destructorCast+1] or self:IsHeroic() and heroicDestructors[self.vb.destructorCast+1] or self:IsNormal() and normalDestructors[self.vb.destructorCast+1] or self:IsLFR() and lfrDestructors2[self.vb.destructorCast+1]
if forceStart then
DBM:Debug("checkForDeadDestructor ran with forceStart arg for "..self.vb.destructorCast, 2)
local text = self:IsHeroic() and addCountToLocationHeroic["Dest"][self.vb.destructorCast+1] or self:IsNormal() and addCountToLocationNormal["Dest"][self.vb.destructorCast+1] or self:IsMythic() and addCountToLocationMythic["Dest"][self.vb.destructorCast+1] or self:IsLFR() and addCountToLocationLFR["Dest"][self.vb.destructorCast+1] or self.vb.destructorCast+1
timerDestructorCD:Start(forceStart, text)--Minus 10 for being 10 seconds after high alert, and minus 10 for wanting when it spawns not high alert cast
self:Schedule(forceStart+20, checkForDeadDestructor, self)--10 seconds after high alert
elseif timer then
local text = self:IsHeroic() and addCountToLocationHeroic["Dest"][self.vb.destructorCast+1] or self:IsNormal() and addCountToLocationNormal["Dest"][self.vb.destructorCast+1] or self:IsMythic() and addCountToLocationMythic["Dest"][self.vb.destructorCast+1] or self:IsLFR() and addCountToLocationLFR["Dest"][self.vb.destructorCast+1] or self.vb.destructorCast+1
timerDestructorCD:Start(timer-20, text)--Minus 10 for being 10 seconds after high alert, and minus 10 for wanting when it spawns not high alert cast
self:Schedule(timer, checkForDeadDestructor, self)--10 seconds after high alert
end
DBM:Debug("checkForDeadDestructor ran, which means a destructor died before casting high alert, or DBM has a timer error near: "..self.vb.destructorCast, 2)
end
local function startBatsStuff(self)
self.vb.batCast = self.vb.batCast + 1
warnWarpIn:Show(L.Bats)
warnWarpIn:Play("killmob")
local timer = self:IsMythic() and mythicBats[self.vb.batCast+1] or self:IsHeroic() and heroicBats[self.vb.batCast+1]
if timer then
timerBatsCD:Start(timer, self.vb.batCast+1)
self:Schedule(timer, startBatsStuff, self)
end
end
function mod:OnCombatStart(delay)
self.vb.rainOfFelCount = 0
self.vb.destructors = 0
self.vb.obfuscators = 0
self.vb.purifiers = 0
self.vb.destructorCast = 0
self.vb.obfuscatorCast = 0
self.vb.purifierCast = 0
self.vb.batCast = 0
self.vb.lifeForceCast = 0
self.vb.spearCast = 0
self.vb.finalDoomCast = 0
self.vb.targetedIcon = 1
if not self:IsLFR() then
self.vb.lifeRequired = 4
if self:IsMythic() then
timerRainofFelCD:Start(6-delay, 1)
--timerSpearofDoomCD:Start(35-delay, 1)
timerDestructorCD:Start(17, DBM_COMMON_L.MIDDLE)
self:Schedule(30, checkForDeadDestructor, self, 5)
timerObfuscatorCD:Start(46, DBM_COMMON_L.BOTTOM)
timerPurifierCD:Start(65.7, DBM_COMMON_L.MIDDLE)
timerFinalDoomCD:Start(59.3-delay, 1)
timerBatsCD:Start(195, 1)
self:Schedule(195, startBatsStuff, self)
elseif self:IsHeroic() then
timerRainofFelCD:Start(9.3-delay, 1)
timerDestructorCD:Start(7, DBM_COMMON_L.MIDDLE)
self:Schedule(27, checkForDeadDestructor, self)
timerSpearofDoomCD:Start(34-delay, 1)
timerObfuscatorCD:Start(80.6, DBM_COMMON_L.TOP)
timerPurifierCD:Start(125, DBM_COMMON_L.MIDDLE)
timerBatsCD:Start(170, 1)
self:Schedule(170, startBatsStuff, self)
else--Normal
timerDestructorCD:Start(7, DBM_COMMON_L.MIDDLE)
self:Schedule(27, checkForDeadDestructor, self)
timerObfuscatorCD:Start(174, 1)
--timerRainofFelCD:Start(30-delay, 1)
end
else
self.vb.lifeRequired = 3
timerDestructorCD:Start(12, DBM_COMMON_L.MIDDLE)
end
if self.Options.InfoFrame then
DBM.InfoFrame:Show(7, "function", updateInfoFrame, false, false)
end
if self.Options.NPAuraOnPurification or self.Options.NPAuraOnFelShielding then
DBM:FireEvent("BossMod_EnableHostileNameplates")
end
end
function mod:OnCombatEnd()
table.wipe(warnedAdds)
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
if self.Options.InfoFrame then
DBM.InfoFrame:Hide()
end
if self.Options.NPAuraOnPurification or self.Options.NPAuraOnFelShielding then
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 249121 then
self.vb.finalDoomCast = self.vb.finalDoomCast + 1
specWarnFinalDoom:Show(self.vb.finalDoomCast)
specWarnFinalDoom:Play("specialsoon")
timerFinalDoom:Start()
local timer = finalDoomTimers[self.vb.finalDoomCast+1]
if timer then
timerFinalDoomCD:Start(timer, self.vb.finalDoomCast+1)
end
elseif spellId == 250701 and self:CheckInterruptFilter(args.sourceGUID, true) then
specWarnSwing:Show()
specWarnSwing:Play("watchstep")
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 246753 and not warnedAdds[args.sourceGUID] then--Cloak
warnedAdds[args.sourceGUID] = true
self.vb.obfuscators = self.vb.obfuscators + 1
if self:AntiSpam(5, args.sourceName) then
warnWarpIn:Show(L.Obfuscators)
warnWarpIn:Play("bigmob")
self.vb.obfuscatorCast = self.vb.obfuscatorCast + 1
local timer = self:IsMythic() and mythicObfuscators[self.vb.obfuscatorCast+1] or self:IsHeroic() and heroicObfuscators[self.vb.obfuscatorCast+1] or self:IsNormal() and normalObfuscators[self.vb.obfuscatorCast+1]
if timer then
local text = self:IsHeroic() and addCountToLocationHeroic["Obfu"][self.vb.obfuscatorCast+1] or self:IsNormal() and addCountToLocationNormal["Obfu"][self.vb.obfuscatorCast+1] or self:IsMythic() and addCountToLocationMythic["Obfu"][self.vb.obfuscatorCast+1] or self.vb.obfuscatorCast+1
timerObfuscatorCD:Start(timer, text)
end
end
elseif spellId == 254769 and args:GetSrcCreatureID() == 123760 and not warnedAdds[args.sourceGUID] then--High Alert
warnedAdds[args.sourceGUID] = true
self:Unschedule(checkForDeadDestructor)
self.vb.destructors = self.vb.destructors + 1
if self:AntiSpam(5, args.sourceName) then
warnWarpIn:Show(L.Destructors)
warnWarpIn:Play("bigmob")
self.vb.destructorCast = self.vb.destructorCast + 1
local timer = self:IsMythic() and mythicDestructors[self.vb.destructorCast+1] or self:IsHeroic() and heroicDestructors[self.vb.destructorCast+1] or self:IsNormal() and normalDestructors[self.vb.destructorCast+1] or self:IsLFR() and lfrDestructors2[self.vb.destructorCast+1]
if timer then
local text = self:IsHeroic() and addCountToLocationHeroic["Dest"][self.vb.destructorCast+1] or self:IsNormal() and addCountToLocationNormal["Dest"][self.vb.destructorCast+1] or self:IsMythic() and addCountToLocationMythic["Dest"][self.vb.destructorCast+1] or self:IsLFR() and addCountToLocationLFR["Dest"][self.vb.destructorCast+1] or self.vb.destructorCast+1
if not self:IsLFR() then--This work around doesn't work in LFR because if dps is slow LFR massively slows down spawns to help out
self:Schedule(timer+10, checkForDeadDestructor, self)
else
timerDestructorCD:Stop()--Because of way LFR works, we need to do timer cleanup if they come earlier than expected
end
timerDestructorCD:Start(timer-10, text)--High alert fires about 9 seconds after spawn so using it as a trigger has a -10 adjustment
end
end
elseif spellId == 250048 then
self.vb.lifeForceCast = self.vb.lifeForceCast + 1
warnLifeForce:Show(self.vb.lifeForceCast)
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 250073 and not warnedAdds[args.sourceGUID] then--Purification (buff on purifier)
warnedAdds[args.sourceGUID] = true
self.vb.purifiers = self.vb.purifiers + 1
if self:AntiSpam(5, 2) then
warnWarpIn:Show(L.Purifiers)
warnWarpIn:Play("bigmob")
self.vb.purifierCast = self.vb.purifierCast + 1
local timer = self:IsMythic() and mythicPurifiers[self.vb.purifierCast+1] or self:IsHeroic() and heroicPurifiers[self.vb.purifierCast+1]
if timer then
local text = self:IsHeroic() and addCountToLocationHeroic["Pur"][self.vb.purifierCast+1] or self:IsNormal() and addCountToLocationNormal["Pur"][self.vb.purifierCast+1] or self:IsMythic() and addCountToLocationMythic["Pur"][self.vb.purifierCast+1] or self.vb.purifierCast+1
timerPurifierCD:Start(timer, text)
end
end
elseif spellId == 250074 then--Purification (buff on enemies near purifier)
if self.Options.NPAuraOnPurification then
DBM.Nameplate:Show(true, args.destGUID, spellId)
end
elseif spellId == 250555 then--Fel Shielding
if self.Options.NPAuraOnFelShielding then
DBM.Nameplate:Show(true, args.destGUID, spellId)
end
elseif spellId == 249016 then
if self.Options.SetIconOnFeedbackTargeted2 then
self:SetIcon(args.destName, self.vb.targetedIcon)
end
self.vb.targetedIcon = self.vb.targetedIcon + 1
elseif spellId == 248332 then--Rain of Fel
warnRainofFel:CombinedShow(1, self.vb.rainOfFelCount, args.destName)
if self:AntiSpam(10, 4) then
self.vb.rainOfFelCount = self.vb.rainOfFelCount + 1
local timer = self:IsMythic() and mythicRainOfFelTimers[self.vb.rainOfFelCount+1] or self:IsHeroic() and heroicRainOfFelTimers[self.vb.rainOfFelCount+1] or self:IsNormal() and normalRainOfFelTimers[self.vb.rainOfFelCount+1]
if timer then
timerRainofFelCD:Start(timer, self.vb.rainOfFelCount+1)
end
end
if args:IsPlayer() then
specWarnRainofFel:Show()
specWarnRainofFel:Play("scatter")
yellRainofFel:Yell()
yellRainofFelFades:Countdown(5)
if self.Options.RangeFrame then
DBM.RangeCheck:Show(8)
end
end
elseif spellId == 250693 then--Arcane Buildup
if args:IsPlayer() then
specWarnArcaneBuildup:Show()
specWarnArcaneBuildup:Play("runout")
yellArcaneBuildup:Yell()
yellArcaneBuildupFades:Countdown(5, 4)
if self.Options.RangeFrame then
DBM.RangeCheck:Show(10)
end
end
elseif spellId == 250691 then --Burning Embers
if args:IsPlayer() then
specWarnBurningEmbers:Show()
specWarnBurningEmbers:Play("runout")
yellBurningEmbers:Yell()
yellBurningEmbersFades:Countdown(5, 4)
if self.Options.RangeFrame then
DBM.RangeCheck:Show(8)
end
end
elseif spellId == 250140 then--Foul Steps
if args:IsPlayer() then
local amount = args.amount or 1
if amount >= 12 and amount % 4 == 0 then
specWarnFoulSteps:Show(amount)
specWarnFoulSteps:Play("stackhigh")
end
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 250074 then--Purification
if self.Options.NPAuraOnPurification then
DBM.Nameplate:Hide(true, args.destGUID, spellId)
end
elseif spellId == 250555 then--Fel Shielding
if self.Options.NPAuraOnFelShielding then
DBM.Nameplate:Hide(true, args.destGUID, spellId)
end
elseif spellId == 249016 then
if self.Options.SetIconOnFeedbackTargeted2 then
self:SetIcon(args.destName, 0)
end
elseif spellId == 248332 then--Rain of Fel
if args:IsPlayer() then
yellRainofFelFades:Cancel()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
elseif spellId == 250693 then--Arcane Buildup
if args:IsPlayer() then
yellArcaneBuildupFades:Cancel()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
elseif spellId == 250691 then --Burning Embers
if args:IsPlayer() then
yellBurningEmbersFades:Cancel()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
end
end
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 124207 and self.vb.obfuscators > 0 then--Fel-Charged Obfuscator
self.vb.obfuscators = self.vb.obfuscators - 1
elseif cid == 123760 then
if warnedAdds[args.destGUID] and self.vb.destructors > 0 then--Fel-Infused Destructor
self.vb.destructors = self.vb.destructors - 1
end
elseif cid == 123726 and self.vb.purifiers > 0 then--Fel-Infused Purifier
self.vb.purifiers = self.vb.purifiers - 1
end
end
--[[
function mod:SPELL_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 248329 and self:AntiSpam(5, 4) then
end
end
mod.SPELL_MISSED = mod.SPELL_DAMAGE
--]]
function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, npc, _, _, target)
if msg:find("spell:248861") then
self.vb.spearCast = self.vb.spearCast + 1
specWarnSpearofDoom:Show()
specWarnSpearofDoom:Play("watchstep")
local timer = self:IsHeroic() and heroicSpearofDoomTimers[self.vb.spearCast+1]
if timer then
timerSpearofDoomCD:Start(timer, self.vb.spearCast+1)
end
end
end
function mod:UNIT_SPELLCAST_CHANNEL_STOP(uId, _, spellId)
if spellId == 249121 then
timerFinalDoom:Stop()
end
end
mod.UNIT_SPELLCAST_STOP = mod.UNIT_SPELLCAST_CHANNEL_STOP