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