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.
196 lines
6.2 KiB
196 lines
6.2 KiB
local mod = DBM:NewMod(2408, "DBM-Party-Shadowlands", 7, 1188)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20240106080507")
|
|
mod:SetCreatureID(166473)
|
|
mod:SetEncounterID(2395)
|
|
mod:SetHotfixNoticeRev(20220306000000)
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 323064 322736 332329",
|
|
"SPELL_CAST_SUCCESS 323166",
|
|
"SPELL_AURA_APPLIED 322773 322746 328987",
|
|
"SPELL_AURA_REMOVED 322773 322746 328987",
|
|
"SPELL_PERIODIC_DAMAGE 323569",
|
|
"SPELL_PERIODIC_MISSED 323569"
|
|
-- "UNIT_DIED"
|
|
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
|
|
)
|
|
|
|
--TODO, blood barrier probably has a CD before it goes back up
|
|
--TODO, longer pull with more timers
|
|
--[[
|
|
(ability.id = 322736) and type = "begincast"
|
|
or (ability.id = 322746 or ability.id = 323166) and type = "cast"
|
|
or (ability.id = 322773) and (type = "applybuff" or type = "removebuff")
|
|
--]]
|
|
--Hakkar the Soulflayer
|
|
local warnBloodBarrier = mod:NewTargetNoFilterAnnounce(322773, 2)
|
|
local warnBloodBarrierEnded = mod:NewEndAnnounce(322773, 1)
|
|
local warnCorruptedBlood = mod:NewTargetAnnounce(322746, 3)
|
|
--Son of Hakkar:
|
|
local warnDevotedSacrifice = mod:NewCastAnnounce(332329, 2)
|
|
local warnZealous = mod:NewTargetAnnounce(328987, 2)
|
|
|
|
--Hakkar the Soulflayer
|
|
local specWarnBloodBarrage = mod:NewSpecialWarningInterrupt(323064, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnCorruptedBlood = mod:NewSpecialWarningMoveAway(322746, nil, nil, nil, 3, 2)
|
|
local yellCorruptedBlood = mod:NewYell(322746)
|
|
local specWarnPiercingBarb = mod:NewSpecialWarningDefensive(322736, nil, nil, nil, 1, 2)
|
|
--Son of Hakkar:
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(323569, nil, nil, nil, 1, 8)
|
|
local specWarnZealous = mod:NewSpecialWarningRun(328987, nil, nil, nil, 4, 2)
|
|
|
|
--Hakkar the Soulflayer
|
|
local timerBloodBarrierCD = mod:NewCDTimer(27.9, 322773, nil, nil, nil, 6)
|
|
--local timerBloodBarrageCD = mod:NewCDTimer(13, 323064, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)
|
|
local timerCorruptedBloodCD = mod:NewCDTimer(17.1, 322746, nil, nil, nil, 3)
|
|
local timerPiercingBarbCD = mod:NewCDTimer(8.5, 322736, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--8.9-22.7 (blood barrier delays
|
|
--Son of Hakkar:
|
|
--local timerDevotedSacrificeCD = mod:NewCDTimer(46, 332329, nil, nil, nil, 1)
|
|
|
|
mod:AddRangeFrameOption(8, 322746)--Spell is 7, but can't do 7 in api
|
|
mod:AddNamePlateOption("NPAuraOnFixate", 328987)
|
|
|
|
mod.vb.barrierActive = false
|
|
--local debuffFilter
|
|
--[[
|
|
do
|
|
debuffFilter = function(uId)
|
|
if not playerDebuff then return true end
|
|
if not DBM:UnitDebuff(uId, 322746) then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
--]]
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.barrierActive = false
|
|
timerCorruptedBloodCD:Start(8.1-delay)--SUCCESS
|
|
timerPiercingBarbCD:Start(10.1-delay)
|
|
timerBloodBarrierCD:Start(26.5-delay)--SUCCESS
|
|
-- timerBloodBarrageCD:Start(22.5-delay)--It's cast instantly on barrier application, redundant timer
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Show(8)
|
|
end
|
|
if self.Options.NPAuraOnFixate then
|
|
DBM:FireEvent("BossMod_EnableHostileNameplates")
|
|
end
|
|
end
|
|
|
|
function mod:OnCombatEnd()
|
|
if self.Options.RangeFrame then
|
|
DBM.RangeCheck:Hide()
|
|
end
|
|
if self.Options.NPAuraOnFixate then
|
|
DBM.Nameplate:Hide(true, nil, nil, nil, true, true)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 322736 then
|
|
if self:IsTanking("player", "boss1", nil, true) then
|
|
specWarnPiercingBarb:Show()
|
|
specWarnPiercingBarb:Play("defensive")
|
|
end
|
|
timerPiercingBarbCD:Start()
|
|
elseif spellId == 323064 then
|
|
--timerBloodBarrageCD:Start()
|
|
if not self.vb.barrierActive and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnBloodBarrage:Show(args.sourceName)
|
|
specWarnBloodBarrage:Play("kickcast")
|
|
end
|
|
elseif spellId == 332329 and self:AntiSpam(3, 1) then
|
|
warnDevotedSacrifice:Show()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 323166 then
|
|
timerCorruptedBloodCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 322773 then
|
|
self.vb.barrierActive = true
|
|
timerPiercingBarbCD:Pause()
|
|
timerCorruptedBloodCD:Pause()
|
|
warnBloodBarrier:Show(args.destName)
|
|
elseif spellId == 322746 then
|
|
if args:IsPlayer() then
|
|
specWarnCorruptedBlood:Show()
|
|
specWarnCorruptedBlood:Play("scatter")
|
|
yellCorruptedBlood:Yell()
|
|
--if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Show(8, debuffFilter)--Show everyone
|
|
--end
|
|
else
|
|
warnCorruptedBlood:CombinedShow(0.5, args.destName)
|
|
end
|
|
elseif spellId == 328987 then
|
|
if args:IsPlayer() then
|
|
specWarnZealous:Show()
|
|
specWarnZealous:Play("justrun")
|
|
if self.Options.NPAuraOnFixate then
|
|
DBM.Nameplate:Show(true, args.sourceGUID, spellId, nil, 20)
|
|
end
|
|
else
|
|
warnZealous:Show(args.destName)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 322773 then
|
|
self.vb.barrierActive = false
|
|
warnBloodBarrierEnded:Show()
|
|
timerPiercingBarbCD:Resume()
|
|
timerPiercingBarbCD:AddTime(2)--Resumes plus adds 2 seconds
|
|
timerCorruptedBloodCD:Resume()
|
|
timerCorruptedBloodCD:AddTime(2)--Resumes plus adds 2 seconds
|
|
timerBloodBarrierCD:Start()
|
|
elseif spellId == 328987 then
|
|
if args:IsPlayer() then
|
|
if self.Options.NPAuraOnFixate then
|
|
DBM.Nameplate:Hide(true, args.sourceGUID, spellId)
|
|
end
|
|
end
|
|
--elseif spellId == 322746 then
|
|
-- if args:IsPlayer() then
|
|
--if self.Options.RangeFrame then
|
|
-- DBM.RangeCheck:Show(8, debuffFilter)--Show only those with debuff
|
|
--end
|
|
-- end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if spellId == 323569 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|
|
--[[
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 165905 then--Son of Hakkar
|
|
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 257453 then
|
|
|
|
end
|
|
end
|
|
--]]
|
|
|