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