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.
157 lines
5.4 KiB
157 lines
5.4 KiB
local mod = DBM:NewMod(1518, "DBM-Party-Legion", 1, 740)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240714045506")
|
|
mod:SetCreatureID(98542)
|
|
mod:SetEncounterID(1832)
|
|
mod:SetHotfixNoticeRev(20231027000000)
|
|
mod:SetMinSyncRevision(20231027000000)
|
|
mod.respawnTime = 29
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 195254 194966 194956 196078 196587",
|
|
"SPELL_CAST_SUCCESS 196587 194956",
|
|
"SPELL_AURA_APPLIED 194966 196930",
|
|
"SPELL_AURA_APPLIED_DOSE 196930"
|
|
)
|
|
|
|
--[[
|
|
(ability.id = 195254 or ability.id = 194966 or ability.id = 194956 or ability.id = 196078 or ability.id = 196587) and type = "begincast"
|
|
or ability.id = 196587 and type = "cast"
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
--]]
|
|
--NOTE, trash uses 194966 just like boss, the expression will pick up both
|
|
local warnSwirlingScythe = mod:NewTargetNoFilterAnnounce(195254, 2)
|
|
local warnSoulEchoes = mod:NewTargetAnnounce(194966, 2)
|
|
local warnCallSouls = mod:NewSpellAnnounce(196078, 2)--Change to important warning if it becomes more relevant.
|
|
local warnSoulgorge = mod:NewStackAnnounce(196930, 4)
|
|
|
|
local specWarnReapSoul = mod:NewSpecialWarningDodgeCount(194956, "Tank", nil, nil, 3, 2)
|
|
local specWarnSoulEchos = mod:NewSpecialWarningRun(194966, nil, nil, nil, 1, 2)
|
|
local specWarnSwirlingScythe = mod:NewSpecialWarningDodge(195254, nil, nil, nil, 1, 2)
|
|
local yellSwirlingScythe = mod:NewYell(195254)
|
|
local specWarnSoulBurst = mod:NewSpecialWarningCount(196587, nil, nil, nil, 2, 2)
|
|
|
|
local timerSwirlingScytheCD = mod:NewCDTimer(20.5, 195254, nil, nil, nil, 3)--20-27
|
|
local timerSoulEchoesCD = mod:NewNextTimer(27.5, 194966, nil, nil, nil, 3)
|
|
local timerReapSoulCD = mod:NewNextTimer(10, 194956, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.DEADLY_ICON)--13-3 because started in success
|
|
|
|
mod.vb.scytheCount = 0
|
|
mod.vb.echoesCount = 0
|
|
mod.vb.reapCount = 0
|
|
mod.vb.burstCounnt = 0
|
|
|
|
function mod:ScytheTarget(targetname, uId)
|
|
if not targetname then
|
|
warnSwirlingScythe:Show(DBM_COMMON_L.UNKNOWN)
|
|
return
|
|
end
|
|
if targetname == UnitName("player") then
|
|
specWarnSwirlingScythe:Show()
|
|
specWarnSwirlingScythe:Play("runaway")
|
|
yellSwirlingScythe:Yell()
|
|
else
|
|
warnSwirlingScythe:Show(targetname)
|
|
end
|
|
end
|
|
|
|
function mod:SoulTarget(targetname, uId)
|
|
if not targetname then
|
|
return
|
|
end
|
|
if self:AntiSpam(3, targetname) then
|
|
if targetname == UnitName("player") then
|
|
specWarnSoulEchos:Show()
|
|
specWarnSoulEchos:Play("runaway")
|
|
specWarnSoulEchos:ScheduleVoice(1, "keepmove")
|
|
else
|
|
warnSoulEchoes:Show(targetname)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.scytheCount = 0
|
|
self.vb.echoesCount = 0
|
|
self.vb.reapCount = 0
|
|
self.vb.burstCount = 0
|
|
self:SetStage(1)
|
|
timerSwirlingScytheCD:Start(8-delay, 1)
|
|
timerSoulEchoesCD:Start(15.5-delay, 1)
|
|
timerReapSoulCD:Start(20-delay, 1)
|
|
end
|
|
|
|
function mod:OnCombatEnd(wipe, secondRun)
|
|
if not wipe and not secondRun then
|
|
local BRHTrash = DBM:GetModByName("BRHTrash")
|
|
BRHTrash:StartFirstRP()
|
|
end
|
|
-- if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Hide()
|
|
-- end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 195254 then
|
|
self.vb.scytheCount = self.vb.scytheCount + 1
|
|
timerSwirlingScytheCD:Start(nil, self.vb.scytheCount+1)
|
|
self:BossTargetScanner(args.sourceGUID, "ScytheTarget", 0.05, 12, true)--Can target tank if no one else is left, but if this causes probelm add tank filter back
|
|
elseif spellId == 194966 then
|
|
self.vb.echoesCount = self.vb.echoesCount + 1
|
|
timerSoulEchoesCD:Start(nil, self.vb.echoesCount+1)
|
|
self:BossTargetScanner(args.sourceGUID, "SoulTarget", 0.1, 20, true, nil, nil, nil, true)--Always filter tank, because if scan fails debuff will be used.
|
|
elseif spellId == 194956 then
|
|
specWarnReapSoul:Show(self.vb.reapCount+1)
|
|
specWarnReapSoul:Play("shockwave")
|
|
elseif spellId == 196078 then
|
|
self:SetStage(2)
|
|
warnCallSouls:Show()
|
|
timerReapSoulCD:Stop()
|
|
timerSwirlingScytheCD:Stop()
|
|
timerSoulEchoesCD:Stop()
|
|
elseif spellId == 196587 then
|
|
self.vb.burstCount = self.vb.burstCount + 1
|
|
specWarnSoulBurst:Show(self.vb.burstCount)
|
|
specWarnSoulBurst:Play("aesoon")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 196587 then--SoulBurst Ending
|
|
self:SetStage(1)
|
|
--Reset Count?
|
|
--self.vb.scytheCount = 0
|
|
--self.vb.echoesCount = 0
|
|
--self.vb.reapCount = 0
|
|
timerSwirlingScytheCD:Stop()
|
|
timerSwirlingScytheCD:Start(9.2, self.vb.scytheCount+1)
|
|
timerSoulEchoesCD:Stop()
|
|
timerSoulEchoesCD:Start(16.5, self.vb.echoesCount+1)
|
|
timerReapSoulCD:Stop()
|
|
timerReapSoulCD:Start(21.3, self.vb.reapCount+1)
|
|
elseif spellId == 194956 then
|
|
self.vb.reapCount = self.vb.reapCount + 1
|
|
timerReapSoulCD:Start(nil, self.vb.reapCount+1)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 194966 and self:AntiSpam(3, args.destName) then--Backup Soul echos warning that's 2 seconds slower than target scan
|
|
if args:IsPlayer() then
|
|
specWarnSoulEchos:Show()
|
|
specWarnSoulEchos:Play("runaway")
|
|
specWarnSoulEchos:ScheduleVoice(1, "keepmove")
|
|
else
|
|
warnSoulEchoes:Show(args.destName)
|
|
end
|
|
elseif spellId == 196930 then
|
|
warnSoulgorge:Show(args.destName, args.amount or 1)
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|