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.
106 lines
3.9 KiB
106 lines
3.9 KiB
local mod = DBM:NewMod(2456, "DBM-Shadowlands", nil, 1192)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20211125075428")
|
|
mod:SetCreatureID(178958)
|
|
mod:SetEncounterID(2496)
|
|
mod:SetReCombatTime(20)
|
|
mod:EnableWBEngageSync()--Enable syncing engage in outdoors
|
|
--mod:SetMinSyncRevision(11969)
|
|
|
|
mod:RegisterCombat("combat_yell", L.Pull)
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 356430 353741 355456",
|
|
"SPELL_CAST_SUCCESS 353800",
|
|
"SPELL_AURA_APPLIED 353800",
|
|
"SPELL_AURA_APPLIED_DOSE 353800",
|
|
"SPELL_PERIODIC_DAMAGE 353183 356382",
|
|
"SPELL_PERIODIC_MISSED 353183 356382"
|
|
)
|
|
|
|
local warnCriesofAnquish = mod:NewCastAnnounce(353741, 2)
|
|
local warnTorment = mod:NewStackAnnounce(353800, 2, nil, "Tank|Healer")
|
|
|
|
local specWarnIronGolem = mod:NewSpecialWarningSwitch(356430, "Dps", nil, nil, 1, 2)
|
|
local specWarnTorment = mod:NewSpecialWarningStack(353800, nil, 2, nil, nil, 1, 6)
|
|
local specWarnTormentSwap = mod:NewSpecialWarningTaunt(353800, nil, nil, nil, 1, 2)
|
|
local specWarnDamnation = mod:NewSpecialWarningDodge(355456, nil, nil, nil, 2, 2)
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(353183, nil, nil, nil, 1, 8)
|
|
|
|
--All timers are delayed when damnation is cast.
|
|
--If anything comes off CD during Damnation, it just queues up and he casts everything queued right away after damn is over
|
|
local timerIronGolemCD = mod:NewCDTimer(49.7, 356430, nil, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON)--49.7-113.1
|
|
local timerCriesofAnquishCD = mod:NewCDTimer(11, 353741, nil, nil, nil, 3)--11.3-99.1
|
|
local timerTormentCD = mod:NewCDTimer(9.4, 353800, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--9.9-44.4
|
|
local timerDamnationCD = mod:NewCDTimer(53.7, 355456, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
local timerDamnation = mod:NewBuffActiveTimer(32, 355456, nil, nil, nil, 6, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
|
|
function mod:OnCombatStart(delay, yellTriggered)
|
|
if yellTriggered then
|
|
timerIronGolemCD:Start(13-delay)
|
|
timerCriesofAnquishCD:Start(15.7-delay)
|
|
timerTormentCD:Start(18.5-delay)
|
|
timerDamnationCD:Start(29.1-delay)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 338858 then
|
|
specWarnIronGolem:Show()
|
|
timerIronGolemCD:Start()
|
|
elseif spellId == 353741 then
|
|
warnCriesofAnquish:Show()
|
|
timerCriesofAnquishCD:Start()
|
|
elseif spellId == 355456 then
|
|
specWarnDamnation:Show()
|
|
specWarnDamnation:Play("shockwave")
|
|
specWarnDamnation:ScheduleVoice(1, "keepmove")
|
|
timerDamnation:Start()
|
|
timerDamnationCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
local spellId = args.spellId
|
|
if spellId == 353800 then
|
|
timerTormentCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 353800 then
|
|
local amount = args.amount or 1
|
|
if amount >= 2 then
|
|
if args:IsPlayer() then
|
|
--Shared antispam with tank defensive warning, just to avoid tank feeling spammed, especially since this could also trigger twice in a single bite
|
|
specWarnTorment:Show(amount)
|
|
specWarnTorment:Play("stackhigh")
|
|
else
|
|
local _, _, _, _, expireTime = DBM:UnitDebuff("player", spellId)
|
|
local remaining
|
|
if expireTime then
|
|
remaining = expireTime-GetTime()
|
|
end
|
|
if not UnitIsDeadOrGhost("player") and (not remaining or remaining and remaining < 9.9) then
|
|
specWarnTormentSwap:Show(args.destName)
|
|
specWarnTormentSwap:Play("tauntboss")
|
|
else
|
|
warnTorment:Show(args.destName, amount)
|
|
end
|
|
end
|
|
else
|
|
warnTorment:Show(args.destName, amount)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
|
|
if (spellId == 356382 or spellId == 353183) and destGUID == UnitGUID("player") and self:AntiSpam(2, 3) then
|
|
specWarnGTFO:Show(spellName)
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|