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
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
|
|
|