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