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.
201 lines
7.4 KiB
201 lines
7.4 KiB
local mod = DBM:NewMod(1653, "DBM-Party-Legion", 1, 740)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240714045506")
|
|
mod:SetCreatureID(98696)
|
|
mod:SetEncounterID(1833)
|
|
mod:SetUsedIcons(3, 2, 1)
|
|
mod:SetHotfixNoticeRev(20231027000000)
|
|
mod:SetMinSyncRevision(20231027000000)
|
|
mod.respawnTime = 29
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 197418 197546 197974 197797",
|
|
"SPELL_CAST_SUCCESS 197478 197687 197622 197394 197546",
|
|
"SPELL_AURA_APPLIED 197478",
|
|
"SPELL_AURA_REMOVED 197478",
|
|
-- "SPELL_PERIODIC_DAMAGE",
|
|
-- "SPELL_PERIODIC_MISSED",
|
|
"UNIT_DIED"
|
|
)
|
|
|
|
--[[
|
|
--Legion numbers
|
|
"<3.42 23:50:12> [ENCOUNTER_START] ENCOUNTER_START#1833#Ilysanna Ravencrest#23#5", -- [7]
|
|
"<50.59 23:50:59> [UNIT_SPELLCAST_SUCCEEDED] Illysanna Ravencrest(??) boss1:Phase 2 Jump::3-3020-1501-31352-197622-00004A48A3:197622",
|
|
"<119.67 23:52:08> [UNIT_SPELLCAST_SUCCEEDED] Illysanna Ravencrest(??) boss1:Periodic Energize::3-3020-1501-31352-197394-0000CA48E8:197394",
|
|
"<213.28 23:53:41> [UNIT_SPELLCAST_SUCCEEDED] Illysanna Ravencrest(??) boss1:Phase 2 Jump::3-3020-1501-31352-197622-0003CA4945:197622",
|
|
--]]
|
|
--[[
|
|
(ability.id = 197418 or ability.id = 197546 or ability.id = 197974 or ability.id = 197797) and type = "begincast"
|
|
or (ability.id = 197478 or ability.id = 197687 or ability.id = 197622 or ability.id = 197394) and type = "cast"
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
--]]
|
|
--TODO, maybe GTFO for standing in fire left by dark rush and eye beams?
|
|
--TODO, initial bonebreaking strike nameplate CD?
|
|
--Stage One: Vengeance
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(12277))
|
|
local warnBrutalGlaive = mod:NewTargetAnnounce(197546, 2)
|
|
local warnDarkRush = mod:NewTargetAnnounce(197478, 3)
|
|
|
|
local specWarnBrutalGlaive = mod:NewSpecialWarningMoveAway(197546, nil, nil, nil, 1, 2)
|
|
local yellBrutalGlaive = mod:NewYell(197546)
|
|
local specWarnVengefulShear = mod:NewSpecialWarningDefensive(197418, nil, nil, nil, 3, 2)
|
|
local specWarnDarkRush = mod:NewSpecialWarningYou(197478, nil, nil, nil, 1, 2)
|
|
|
|
local timerBrutalGlaiveCD = mod:NewCDCountTimer(15.7, 197546, nil, nil, nil, 3)--15 before
|
|
local timerVengefulShearCD = mod:NewCDCountTimer(11, 197418, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--11-16, delayed by dark rush
|
|
local timerDarkRushCD = mod:NewCDCountTimer(31, 197478, nil, nil, nil, 3)--30 before
|
|
local timerLeapCD = mod:NewStageContextTimer(100, -12281, nil, nil, nil, 6, 197622)
|
|
|
|
mod:AddSetIconOption("SetIconOnDarkRush", 197478, true, 6, {1, 2, 3})
|
|
--Stage Two: Fury
|
|
mod:AddTimerLine(DBM:EJ_GetSectionInfo(12281))
|
|
local warnEyeBeam = mod:NewTargetNoFilterAnnounce(197696, 2)
|
|
|
|
local specWarnEyeBeam = mod:NewSpecialWarningRunCount(197696, nil, nil, nil, 4, 2)
|
|
local yellEyeBeam = mod:NewYell(197696)
|
|
local specWarnBonebreakingStrike = mod:NewSpecialWarningDodge(197974, "Tank", nil, nil, 1, 2)
|
|
local specWarnArcaneBlitz = mod:NewSpecialWarningInterrupt(197797, "HasInterrupt", nil, nil, 1, 2)
|
|
|
|
local timerEyeBeamCD = mod:NewCDCountTimer(13.5, 197696, nil, nil, nil, 3)
|
|
local timerBonebreakingStrikeCD = mod:NewCDNPTimer(21.8, 197974, nil, nil, nil, 3)
|
|
local timerGroundedCD = mod:NewStageContextTimer(44.8, -12277, nil, nil, nil, 6, 197394)
|
|
|
|
--mod:AddRangeFrameOption(5, 197546)--Range not given for Brutal Glaive
|
|
|
|
mod.vb.glaiveCount = 0
|
|
mod.vb.shearCount = 0
|
|
mod.vb.rushCount = 0
|
|
mod.vb.eyeCount = 0
|
|
|
|
function mod:BrutalGlaiveTarget(targetname, uId)
|
|
if not targetname then
|
|
warnBrutalGlaive:Show(DBM_COMMON_L.UNKNOWN)
|
|
return
|
|
end
|
|
if targetname == UnitName("player") then
|
|
specWarnBrutalGlaive:Show()
|
|
specWarnBrutalGlaive:Play("runout")
|
|
yellBrutalGlaive:Yell()
|
|
else
|
|
warnBrutalGlaive:Show(targetname)
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.glaiveCount = 0
|
|
self.vb.shearCount = 0
|
|
self.vb.rushCount = 0
|
|
self.vb.eyeCount = 0
|
|
timerBrutalGlaiveCD:Start(5.5-delay, 1)
|
|
timerVengefulShearCD:Start(8-delay, 1)
|
|
timerDarkRushCD:Start(10.8-delay, 1)
|
|
timerLeapCD:Start(33.9)--33.9-35.2 (they changed his starting energy from Legion)
|
|
end
|
|
|
|
--function mod:OnCombatEnd()
|
|
-- if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Hide()
|
|
-- end
|
|
--end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 197418 then
|
|
self.vb.shearCount = self.vb.shearCount + 1
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnVengefulShear:Show()
|
|
specWarnVengefulShear:Play("defensive")
|
|
end
|
|
timerVengefulShearCD:Start(nil, self.vb.shearCount+1)
|
|
elseif spellId == 197546 then
|
|
self:BossTargetScanner(args.sourceGUID, "BrutalGlaiveTarget", 0.1, 10, true)
|
|
elseif spellId == 197974 then
|
|
specWarnBonebreakingStrike:Show()
|
|
specWarnBonebreakingStrike:Play("shockwave")
|
|
timerBonebreakingStrikeCD:Start(nil, args.sourceGUID)
|
|
elseif spellId == 197797 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnArcaneBlitz:Show(args.sourceName)
|
|
specWarnArcaneBlitz:Play("kickcast")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 197478 then
|
|
self.vb.rushCount = self.vb.rushCount + 1
|
|
timerDarkRushCD:Start(nil, self.vb.rushCount+1)
|
|
elseif spellId == 197687 then--No longer fires applied event, so success has to be used, even if it misses or gets dropped off target by some kind of feign
|
|
self.vb.eyeCount = self.vb.eyeCount + 1
|
|
timerEyeBeamCD:Start(nil, self.vb.eyeCount+1)
|
|
if args:IsPlayer() then
|
|
specWarnEyeBeam:Show(self.vb.eyeCount)
|
|
yellEyeBeam:Yell()
|
|
specWarnEyeBeam:Play("laserrun")
|
|
else
|
|
warnEyeBeam:Show(args.destName)
|
|
end
|
|
elseif spellId == 197546 then
|
|
self.vb.glaiveCount = self.vb.glaiveCount + 1
|
|
timerBrutalGlaiveCD:Start(13.7, self.vb.glaiveCount+1)--Stutter casts, so moved to success event
|
|
elseif spellId == 197622 then--Leap
|
|
self.vb.eyeCount = 0
|
|
self:SetStage(2)
|
|
timerBrutalGlaiveCD:Stop()
|
|
timerVengefulShearCD:Stop()
|
|
timerDarkRushCD:Stop()
|
|
-- timerEyeBeamCD:Start(4, 1)--cast 1.5 after
|
|
timerGroundedCD:Start()--44.8
|
|
elseif spellId == 197394 then--Gaining Energy
|
|
self.vb.glaiveCount = 0
|
|
self.vb.shearCount = 0
|
|
self.vb.rushCount = 0
|
|
self.vb.eyeCount = 0
|
|
self:SetStage(1)
|
|
timerEyeBeamCD:Stop()
|
|
timerBrutalGlaiveCD:Start(6, 1)
|
|
timerDarkRushCD:Start(12, 1)
|
|
timerVengefulShearCD:Start(13, 1)
|
|
timerLeapCD:Start(93.4)--Same as it was back then. yay for consistency
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 197478 then
|
|
warnDarkRush:CombinedShow(0.3, args.destName)
|
|
if args:IsPlayer() then
|
|
specWarnDarkRush:Show()
|
|
specWarnDarkRush:Play("targetyou")
|
|
end
|
|
if self.Options.SetIconOnDarkRush then
|
|
self:SetAlphaIcon(0.5, args.destName, 3)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 197478 and self.Options.SetIconOnDarkRush then
|
|
self:SetIcon(args.destName, 0)
|
|
end
|
|
end
|
|
|
|
--[[
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
|
|
if spellId == 153616 and destGUID == UnitGUID("player") and self:AntiSpam(2, 1) then
|
|
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE--]]
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 100485 then--Soul-torn Vanguard
|
|
timerBonebreakingStrikeCD:Stop(args.destGUID)
|
|
end
|
|
end
|
|
|