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.
158 lines
5.9 KiB
158 lines
5.9 KiB
local mod = DBM:NewMod(2414, "DBM-Party-Shadowlands", 5, 1186)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20220803233609")
|
|
mod:SetCreatureID(162060)
|
|
mod:SetEncounterID(2358)
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 324608 334053 324427",
|
|
"SPELL_AURA_APPLIED 324392 338729 338731 327416 327416 324046",
|
|
"SPELL_AURA_REMOVED 327416 324392 324046"
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED",
|
|
-- "UNIT_SPELLCAST_START boss1"
|
|
)
|
|
|
|
--TODO, use https://shadowlands.wowhead.com/npc=165807/coalesced-anima at all?
|
|
--TODO, purifying blast cast has been removed from combat log, testing a unit event for it, for now. If not, not much can do with it warning/timer wise
|
|
--TODO, drained still a thing? I don't even see it occur in a M+ 10
|
|
--[[
|
|
(ability.id = 334053 or ability.id = 324427 or ability.id = 324608) and type = "begincast"
|
|
or ability.id = 324444 and type = "cast"
|
|
or (ability.id = 321355 or ability.id = 327416 or ability.id = 324046) and (type = "applybuff" or type = "removebuff" or type = "removedebuff" or type = "applydebuff")
|
|
--]]
|
|
local warnRechargeAnima = mod:NewSpellAnnounce(327416, 2)
|
|
--local warnEmpyrealOrdnance = mod:NewTargetAnnounce(321936, 3)
|
|
local warnChargedStomp = mod:NewTargetNoFilterAnnounce(338731, 2, nil, "RemoveMagic")
|
|
local warnPurifyingBlast = mod:NewTargetNoFilterAnnounce(334053, 3)
|
|
|
|
--local specWarnEmpyrealOrdnance = mod:NewSpecialWarningMoveAway(321936, nil, nil, nil, 1, 2)--Not in combat log, aura hidden
|
|
--local yellEmpyrealOrdnance = mod:NewYell(321936)--Not in combat log, aura hidden
|
|
local specWarnEmpyrealOrdnance = mod:NewSpecialWarningDodge(324427, nil, nil, nil, 2, 2)
|
|
local specWarnAnimaField = mod:NewSpecialWarningMove(324392, "Tank", nil, nil, 1, 2)
|
|
local specWarnPurifyingBlast = mod:NewSpecialWarningMoveAway(334053, nil, nil, nil, 1, 2)
|
|
local yellPurifyingBlast = mod:NewYell(334053)
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(257274, nil, nil, nil, 1, 8)
|
|
|
|
local timerEmpyrealOrdnanceCD = mod:NewCDTimer(26.7, 321936, nil, nil, nil, 3)
|
|
local timerPurifyingBlastCD = mod:NewCDTimer(13.4, 334053, nil, nil, nil, 3)--Wild variations do to spell queuing problems
|
|
local timerChargedStompCD = mod:NewCDTimer(13.4, 324608, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON)--Wild variations do to spell queuing problems
|
|
|
|
mod:AddRangeFrameOption(8, 334053)
|
|
mod:AddInfoFrameOption(327416, true)
|
|
mod:AddNamePlateOption("NPAuraOnAnimaField", 324392)
|
|
|
|
function mod:BlastTarget(targetname, uId)
|
|
if not targetname then return end
|
|
if targetname == UnitName("player") then
|
|
specWarnPurifyingBlast:Show()
|
|
specWarnPurifyingBlast:Play("scatter")
|
|
yellPurifyingBlast:Yell()
|
|
else
|
|
warnPurifyingBlast:Show(targetname)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
timerPurifyingBlastCD:Start(8.4-delay)
|
|
timerChargedStompCD:Start(14.3-delay)--Wild pull variation depending on boss casts ordinance or stomp first
|
|
timerEmpyrealOrdnanceCD:Start(16.9-delay)--Wild pull variation depending on boss casts ordinance or stomp first
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
if self.Options.InfoFrame then
|
|
DBM.InfoFrame:SetHeader(DBM_CORE_L.INFOFRAME_POWER)
|
|
DBM.InfoFrame:Show(3, "enemypower", 2)
|
|
end
|
|
if self.Options.NPAuraOnAnimaField 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.NPAuraOnAnimaField then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 324608 then
|
|
timerChargedStompCD:Start()
|
|
elseif spellId == 334053 then
|
|
timerPurifyingBlastCD:Start()
|
|
--Intentionally not using UNIT_TARGET scanner, boss doesn't fire a UNIT_TARGET event during this
|
|
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "BlastTarget", 0.1, 10)
|
|
elseif spellId == 324427 then
|
|
specWarnEmpyrealOrdnance:Show()
|
|
specWarnEmpyrealOrdnance:Play("watchstep")
|
|
timerEmpyrealOrdnanceCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 324392 and args:IsDestTypeHostile() then
|
|
if self:AntiSpam(3, 1) then
|
|
specWarnAnimaField:Show()
|
|
specWarnAnimaField:Play("moveboss")
|
|
end
|
|
if self.Options.NPAuraOnAnimaField then
|
|
DBM.Nameplate:Show(true, args.destGUID, spellId)
|
|
end
|
|
elseif spellId == 338731 or spellId == 338729 then
|
|
warnChargedStomp:CombinedShow(0.3, args.destName)
|
|
elseif spellId == 327416 or spellId == 324046 then
|
|
warnRechargeAnima:Show()
|
|
timerEmpyrealOrdnanceCD:Stop()
|
|
timerPurifyingBlastCD:Stop()
|
|
timerChargedStompCD:Stop()
|
|
-- elseif spellId == 321936 then
|
|
-- if args:IsPlayer() then
|
|
-- specWarnEmpyrealOrdnance:Show()
|
|
-- specWarnEmpyrealOrdnance:Play("runout")
|
|
-- yellEmpyrealOrdnance:Yell()
|
|
-- else
|
|
-- warnEmpyrealOrdnance:Show(args.destName)
|
|
-- end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 327416 or spellId == 324046 then--Recharge Anima (or drained instead?)
|
|
--Boss resumes engagement
|
|
timerPurifyingBlastCD:Start(8.4)
|
|
timerChargedStompCD:Start(14.3)
|
|
timerEmpyrealOrdnanceCD:Start(16.9)
|
|
elseif spellId == 324392 and args:IsDestTypeHostile() then
|
|
if self.Options.NPAuraOnAnimaField then
|
|
DBM.Nameplate:Hide(true, args.destGUID, spellId)
|
|
end
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 309991 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_START(uId, _, spellId)
|
|
if spellId == 334053 then
|
|
local guid = UnitGUID(uId)
|
|
end
|
|
end
|
|
--]]
|
|
|