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.

183 lines
6.7 KiB

local mod = DBM:NewMod(1654, "DBM-Party-Legion", 2, 762)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240714045506")
mod:SetCreatureID(96512)
mod:SetEncounterID(1836)
mod:SetUsedIcons(8, 7)
mod:SetHotfixNoticeRev(20231029000000)
mod:SetMinSyncRevision(20231029000000)
--mod.respawnTime = 29
mod.sendMainBossGUID = true
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 198379",
"SPELL_CAST_SUCCESS 198401 212464 196354",
"SPELL_SUMMON 198432",
"SPELL_AURA_APPLIED 198477",
"SPELL_AURA_REMOVED 198477",
"SPELL_PERIODIC_DAMAGE 198408",
"SPELL_PERIODIC_MISSED 198408"
)
--[[
ability.id = 198379 and type = "begincast"
or (ability.id = 198401 or ability.id = 212464 or ability.id = 196354) and type = "cast"
or ability.id = 198432
or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
--NOTE: Leap will be broken until 10.2 but that's fine. in TW or while leveling dungeon is easy
--TODO, min timers could still possibly need tweaking/lowering. Same with min ICD of each ability
local warnLeap = mod:NewCountAnnounce(196354, 2)
local warnNightFall = mod:NewCountAnnounce(212464, 2)
local specWarnNightfall = mod:NewSpecialWarningMove(212464, nil, nil, nil, 1, 2)
--local specWarnLeap = mod:NewSpecialWarningDodge(196354, nil, nil, nil, 1)
local yellLeap = mod:NewYell(196354)
local specWarnRampage = mod:NewSpecialWarningDefensive(198379, nil, nil, nil, 1, 2)
local specWarnFixate = mod:NewSpecialWarningYou(198477, nil, nil, nil, 1, 2)
local timerLeapCD = mod:NewCDCountTimer(11.9, 196354, nil, nil, nil, 3)--11.9-17 depending on travel time and spell queuing (timer could be even shorter, small sample)
local timerRampageCD = mod:NewCDCountTimer(26.7, 198379, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--26.7-32.7
local timerNightfallCD = mod:NewCDCountTimer(20.6, 212464, nil, nil, nil, 3)--20.6--30.4
mod:AddSetIconOption("SetIconOnAdd", -13302, true, 5, {8, 7})
mod:AddNamePlateOption("NPAuraOnFixate", 198477)
mod:GroupSpells(198401, -13302)--Group add with it's parent spell
mod.vb.addIcon = 8
mod.vb.leapCount = 0
mod.vb.rampageCount = 0
mod.vb.nightCount = 0
--Grievous Leap triggers 5.1-5.8 ICD
--Primal rampage triggers 5.7 ICD
--Nightfall triggers 2.6 ICD
local function updateAllTimers(self, ICD)
DBM:Debug("updateAllTimers running", 3)
if timerLeapCD:GetRemaining(self.vb.leapCount+1) < ICD then
local elapsed, total = timerLeapCD:GetTime(self.vb.leapCount+1)
local extend = ICD - (total-elapsed)
DBM:Debug("timerLeapCD extended by: "..extend, 2)
timerLeapCD:Update(elapsed, total+extend, self.vb.leapCount+1)
end
if timerRampageCD:GetRemaining(self.vb.rampageCount+1) < ICD then
local elapsed, total = timerRampageCD:GetTime(self.vb.rampageCount+1)
local extend = ICD - (total-elapsed)
DBM:Debug("timerRampageCD extended by: "..extend, 2)
timerRampageCD:Update(elapsed, total+extend, self.vb.rampageCount+1)
end
if timerNightfallCD:GetRemaining(self.vb.nightCount+1) < ICD then
local elapsed, total = timerNightfallCD:GetTime(self.vb.nightCount+1)
local extend = ICD - (total-elapsed)
DBM:Debug("timerNightfallCD extended by: "..extend, 2)
timerNightfallCD:Update(elapsed, total+extend, self.vb.nightCount+1)
end
end
--Not realy dodgable, more or less just a visual of leap target
function mod:LeapTarget(targetname, uId)
if targetname == UnitName("player") then
yellLeap:Yell()
end
end
function mod:OnCombatStart(delay)
self.vb.leapCount = 0
self.vb.rampageCount = 0
self.vb.nightCount = 0
timerLeapCD:Start(5-delay, 1)
timerRampageCD:Start(12.2-delay, 1)
timerNightfallCD:Start(19.4-delay, 1)--19.4-25.5
if self.Options.NPAuraOnFixate then
DBM:FireEvent("BossMod_EnableHostileNameplates")
end
end
function mod:OnCombatEnd(wipe, secondRun)
if self.Options.NPAuraOnFixate then
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
end
if not wipe and not secondRun then
local DHTTrash = DBM:GetModByName("DHTTrash")
DHTTrash:ResetSecondBossRP()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 198379 then
self.vb.rampageCount = self.vb.rampageCount + 1
if self:IsTanking("player", "boss1", nil, true) then
specWarnRampage:Show()
specWarnRampage:Play("defensive")
end
timerRampageCD:Start(nil, self.vb.rampageCount+1)
updateAllTimers(self, 5.7)
end
end
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if (spellId == 198401 or spellId == 212464) and self:AntiSpam(2, 1) then
self.vb.nightCount = self.vb.nightCount + 1
self.vb.addIcon = 8
warnNightFall:Show(self.vb.nightCount)
timerNightfallCD:Start(nil, self.vb.nightCount+1)
updateAllTimers(self, 2.6)
elseif spellId == 196354 then
self.vb.leapCount = self.vb.leapCount + 1
warnLeap:Show(self.vb.leapCount)
--"<398.10 22:27:23> [UNIT_SPELLCAST_SUCCEEDED] Archdruid Glaidalis(76.9%-100.0%){Target:Lucyz} -Grievous Leap- [[boss1:Cast-3-5770-1466-11160-196354-0007A1BF2D:196354]]", -- [4835]
--"<398.12 22:27:23> [UNIT_TARGET] boss1#Archdruid Glaidalis#Target: Fxa#TargetOfTarget: Archdruid Glaidalis", -- [4842]
--"<398.11 22:27:23> [CLEU] SPELL_DAMAGE#Creature-0-5770-1466-11160-96512-000021BD9C#Archdruid Glaidalis#Player-5765-0007A043#Lucyz-Raszageth#196354#Grievous Leap", -- [4843]
if DBM.Options.DebugMode then
self:BossTargetScanner(args.sourceGUID, "LeapTarget", 0.05, 6, true, nil, nil, nil, true)
end
timerLeapCD:Start(nil, self.vb.leapCount+1)
updateAllTimers(self, 5.1)
end
end
function mod:SPELL_SUMMON(args)
local spellId = args.spellId
if spellId == 198432 then
if self.Options.SetIconOnAdd then
self:ScanForMobs(args.destGUID, 2, self.vb.addIcon, 1, nil, 12, "SetIconOnAdd")
end
self.vb.addIcon = self.vb.addIcon - 1
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 198477 and args:IsPlayer() then
if self:AntiSpam(3, 2) then
specWarnFixate:Show()
specWarnFixate:Play("targetyou")
end
if self.Options.NPAuraOnFixate then
DBM.Nameplate:Show(true, args.sourceGUID, spellId, nil, 20)
end
end
end
function mod:SPELL_AURA_REMOVED(args)
local spellId = args.spellId
if spellId == 198477 and args:IsPlayer() then
if self.Options.NPAuraOnFixate then
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
end
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 198408 and destGUID == UnitGUID("player") and self:AntiSpam(2, 3) then
specWarnNightfall:Show()
specWarnNightfall:Play("runaway")
end
end
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE