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.

128 lines
4.2 KiB

local mod = DBM:NewMod(1133, "DBM-Party-WoD", 3, 536)
local L = mod:GetLocalizedStrings()
mod.statTypes = "normal,heroic,mythic,challenge,timewalker"
mod.upgradedMPlus = true
mod:SetRevision("20220917022927")
mod:SetCreatureID(80005)
mod:SetEncounterID(1736)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_CAST_START 162066 162058",
"SPELL_AURA_APPLIED 163447 161588 181089",
"SPELL_AURA_APPLIED_DOSE 161588",
"SPELL_AURA_REMOVED 163447"
)
--[[
(ability.id = 162066 or ability.id = 162058) and type = "begincast"
or (ability.id = 171900 or ability.id = 163447) and (type = "applybuff" or type = "applydebuff")
or ability.id = 181089 and type = "applybuff"
or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
local warnFreezingSnare = mod:NewTargetAnnounce(162066, 3)
local warnMark = mod:NewTargetNoFilterAnnounce(163447, 3)
local specWarnFreezingSnare = mod:NewSpecialWarningYou(162066, nil, nil, nil, 1, 2)
local specWarnFreezingSnareNear = mod:NewSpecialWarningClose(162066, nil, nil, nil, 1, 2)
local yellFreezingSnare = mod:NewYell(162066)
local specWarnDiffusedEnergy = mod:NewSpecialWarningMove(161588, nil, nil, nil, 1, 8)
local specWarnSpinningSpear = mod:NewSpecialWarningDodge(162058, nil, nil, 3, 2, 2)
local specWarnMark = mod:NewSpecialWarningMoveAway(163447, nil, nil, nil, 1, 2)
local yellMark = mod:NewYell(163447)
local specWarnThunderousBreath = mod:NewSpecialWarningDodge(171900, nil, nil, nil, 2, 2)
local timerFreezingSnareCD = mod:NewCDTimer(16.6, 162066, nil, nil, nil, 3)
local timerSpinningSpearCD = mod:NewCDTimer(17, 162058, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerMark = mod:NewTargetTimer(5, 163447, nil, nil, nil, 5)
local timerMarkCD = mod:NewCDTimer(20, 163447, nil, nil, nil, 3)
local timerThunderousBreathCD = mod:NewCDTimer(17.4, 171900, nil, nil, nil, 3)
mod:AddRangeFrameOption(8, 163447)
local debuffCheck = DBM:GetSpellInfo(163447)
local debuffFilter
do
debuffFilter = function(uId)
return DBM:UnitDebuff(uId, debuffCheck)
end
end
function mod:FreezingSnareTarget(targetname, uId)
if not targetname then return end
if targetname == UnitName("player") then
specWarnFreezingSnare:Show()
yellFreezingSnare:Yell()
specWarnFreezingSnare:Play("runaway")
elseif self:CheckNearby(8, targetname) then
specWarnFreezingSnareNear:Show(targetname)
specWarnFreezingSnareNear:Play("watchstep")
else
warnFreezingSnare:Show(targetname)
end
end
function mod:OnCombatStart(delay)
timerFreezingSnareCD:Start(5.8)
timerThunderousBreathCD:Start(7.8)
timerSpinningSpearCD:Start(14.3)
end
function mod:OnCombatEnd()
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 162066 then
self:BossTargetScanner(80005, "FreezingSnareTarget", 0.04, 15)
timerFreezingSnareCD:Start()
elseif spellId == 162058 then
specWarnSpinningSpear:Show()
specWarnSpinningSpear:Play("shockwave")
timerSpinningSpearCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
if args.spellId == 163447 then
timerMark:Start(args.destName)
timerMarkCD:Start()
if args:IsPlayer() then
specWarnMark:Show()
specWarnMark:Play("runout")
yellMark:Yell()
else
warnMark:Show(args.destName)
end
if self.Options.RangeFrame then
if DBM:UnitDebuff("player", debuffCheck) then--You have debuff, show everyone
DBM.RangeCheck:Show(8, nil)
else--You do not have debuff, only show players who do
DBM.RangeCheck:Show(8, debuffFilter)
end
end
elseif args.spellId == 161588 and args:IsPlayer() and self:AntiSpam() then
specWarnDiffusedEnergy:Show()
specWarnDiffusedEnergy:Play("watchfeet")
elseif args.spellId == 181089 then--Encounter Event
specWarnThunderousBreath:Show()
specWarnThunderousBreath:Play("breathsoon")
timerThunderousBreathCD:Start()
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_AURA_REMOVED(args)
if args.spellId == 163447 then
timerMark:Cancel(args.destName)
if self.Options.RangeFrame then
DBM.RangeCheck:Hide()
end
end
end