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.

127 lines
4.5 KiB

local mod = DBM:NewMod(2419, "DBM-Party-Shadowlands", 2, 1183)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20220920232426")
mod:SetCreatureID(164255)
mod:SetEncounterID(2382)
mod:RegisterCombat("combat")
mod:RegisterEventsInCombat(
"SPELL_AURA_APPLIED 324652",
"SPELL_CAST_START 324527 324667",
"SPELL_CAST_SUCCESS 324459 324490"
-- "SPELL_PERIODIC_DAMAGE",
-- "SPELL_PERIODIC_MISSED",
-- "UNIT_DIED"
-- "UNIT_SPELLCAST_SUCCEEDED boss1"
)
--[[
(ability.id = 324527 or ability.id = 324667) and type = "begincast"
or (ability.id = 324459 or ability.id = 324490) and type = "cast"
or ability.id = 335514
--327598 is trash version of spell
--]]
local warnPlaguestomp = mod:NewCastAnnounce(324527, 2)
local warnSlimeWave = mod:NewCastAnnounce(324667, 2)
local warnBeckonSlime = mod:NewCastAnnounce(327608, 2, 9)
--local specWarnPlaguestomp = mod:NewSpecialWarningDodge(324527, nil, nil, nil, 2, 2)
local specWarnDebilitatingPlague = mod:NewSpecialWarningDispel(324652, "RemoveDisease", nil, nil, 1, 2)
local specWarnBeckonSlime = mod:NewSpecialWarningSwitch(327608, "-Healer", nil, nil, 1, 2)
--local yellBlackPowder = mod:NewYell(257314)
--local specWarnHealingBalm = mod:NewSpecialWarningInterrupt(257397, "HasInterrupt", nil, nil, 1, 2)
--local specWarnGTFO = mod:NewSpecialWarningGTFO(257274, nil, nil, nil, 1, 8)
local timerPlaguestompCD = mod:NewNextTimer(15.8, 324527, nil, nil, nil, 3)--38.8, 19.4
local timerBeckonSlimeCD = mod:NewCDTimer(49.8, 327608, nil, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON)--50-55
local timerBeckonSlime = mod:NewCastTimer(7, 327608, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON)
local timerSlimeWaveCD = mod:NewNextTimer(10.5, 324667, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)
local timerSpecialCD = mod:NewNextSpecialTimer(40)
mod.vb.specialCast = 0
function mod:OnCombatStart(delay)
self.vb.specialCast = 0
timerSpecialCD:Start(8.3)--First spell can be either Plaguestomp or slime wave
timerBeckonSlimeCD:Start(25-delay)
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
if spellId == 324527 then
self.vb.lastCast = self.vb.specialCast + 1
warnPlaguestomp:Show()
-- specWarnPlaguestomp:Show()
-- specWarnPlaguestomp:Play("shockwave")
if self.vb.specialCast == 1 or self.vb.specialCast == 2 then--First means opposite in 7 seconds
timerSlimeWaveCD:Start(7)
end
elseif spellId == 324667 then
self.vb.specialCast = self.vb.specialCast + 1
warnSlimeWave:Show()
if self.vb.specialCast == 1 or self.vb.specialCast == 3 then--First and third means opposite in 7 seconds
timerPlaguestompCD:Start(7)
elseif self.vb.specialCast == 2 then--Second being slime wave means next is another slime wave in 11
timerSlimeWaveCD:Start(11)
end
end
end
--25.595 Globgrog casts Beckon Slime
--25.595 Globgrog begins casting Beckon Slime
--30.601 Globgrog casts Beckon Slime
--32.612 Living Slime Stalker 1 summons Slimy Morsel 1 with Beckon Slime
function mod:SPELL_CAST_SUCCESS(args)
local spellId = args.spellId
if spellId == 324459 then--Precast event
warnBeckonSlime:Show()
timerBeckonSlime:Start(7)
timerBeckonSlimeCD:Start()
timerSpecialCD:Stop()
timerSlimeWaveCD:Stop()
timerPlaguestompCD:Stop()
elseif spellId == 324490 then--Summon finish event, which is still good 4 seconds before attackable
specWarnBeckonSlime:Show()
if self:IsTank() then
specWarnBeckonSlime:Play("moveboss")
else
specWarnBeckonSlime:Play("killmob")
end
--Resets the sequence for slime wave/plaguestomp
self.vb.specialCast = 0
timerSpecialCD:Start(18)--Which means one is cast (slime or plague seems to be toss up)
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 324652 and self:CheckDispelFilter("disease") then
specWarnDebilitatingPlague:CombinedShow(0.3, args.destName)
specWarnDebilitatingPlague:ScheduleVoice(0.3, args.destName)
end
end
--[[
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 168128 then--Slimy Morsel
end
end
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 309991 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_SPELLCAST_SUCCEEDED(uId, _, spellId)
if spellId == 257453 then
end
end
--]]