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.
123 lines
4.3 KiB
123 lines
4.3 KiB
local mod = DBM:NewMod(1140, "DBM-Party-WoD", 6, 537)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod.statTypes = "normal,heroic,mythic,challenge,timewalker"
|
|
|
|
mod:SetRevision("20230504231118")
|
|
mod:SetCreatureID(75452)
|
|
mod:SetEncounterID(1679)
|
|
mod.sendMainBossGUID = true
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 154175 165578",
|
|
"SPELL_AURA_APPLIED 153804",
|
|
"SPELL_AURA_REMOVED 153804",
|
|
"SPELL_PERIODIC_DAMAGE 153692",
|
|
"SPELL_ABSORBED 153692",
|
|
"RAID_BOSS_EMOTE",
|
|
"UNIT_SPELLCAST_SUCCEEDED boss1",
|
|
"UNIT_DIED"
|
|
)
|
|
|
|
--Inhale and submerge timers iffy. Based on data, it's possible they share a CD and which one he uses is random of two.
|
|
--With that working theory, it's possible to add a 28-30 second timer for it maybe.
|
|
--However, being a 5 man boss. Plus not knowing for certain, not worth the time right now.
|
|
--[[
|
|
(ability.id = 154175 or ability.id = 165578) and type = "begincast"
|
|
or ability.id = 153804
|
|
or type = "dungeonencounterstart" or type = "dungeonencounterend"
|
|
--]]
|
|
local warnBodySlam = mod:NewTargetAnnounce(154175, 4)
|
|
local warnCorpseBreath = mod:NewSpellAnnounce(165578, 2)
|
|
local warnSubmerge = mod:NewSpellAnnounce(177694, 1)
|
|
local warnInhaleEnd = mod:NewEndAnnounce(153804, 1)
|
|
|
|
local specWarnBodySlam = mod:NewSpecialWarningDodge(154175, nil, nil, nil, 2, 2)
|
|
local specWarnInhale = mod:NewSpecialWarningRun(153804, nil, nil, 2, 4, 12)
|
|
local specWarnNecroticPitch = mod:NewSpecialWarningMove(153692, nil, nil, nil, 1, 8)
|
|
|
|
local timerBodySlamCD = mod:NewCDSourceTimer(23, 154175, nil, nil, nil, 3)--34
|
|
local timerInhaleCD = mod:NewCDTimer(22.1, 153804, nil, nil, nil, 6, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
local timerInhale = mod:NewBuffActiveTimer(9, 153804, nil, nil, nil, 6, nil, DBM_COMMON_L.DEADLY_ICON)
|
|
local timerCorpseBreathCD = mod:NewCDTimer(28, 165578, nil, false, nil, 5)--32-37 Variation, also not that important so off by default since there will already be up to 3 smash timers
|
|
--local timerSubmergeCD = mod:NewCDTimer(80, 177694, nil, nil, nil, 6)
|
|
|
|
mod.vb.inhaleActive = false
|
|
|
|
function mod:OnCombatStart(delay)
|
|
self.vb.inhaleActive = false
|
|
timerBodySlamCD:Start(15-delay, UnitName("boss1") or BOSS, UnitGUID("boss1"))--17?
|
|
-- timerInhaleCD:Start(15-delay)--it's like 15-60 variation, disabling for now
|
|
-- timerSubmergeCD:Start(-delay)
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
local spellId = args.spellId
|
|
if spellId == 154175 then
|
|
warnBodySlam:Show(args.sourceName)
|
|
if self:AntiSpam(3) then--Throttle special warning when more than 1 slam at once happens.
|
|
specWarnBodySlam:Show()
|
|
specWarnBodySlam:Play("watchstep")
|
|
end
|
|
if args:GetSrcCreatureID() == 75452 then--Source is Bonemaw, not one of his adds
|
|
timerBodySlamCD:Start(28, args.sourceName, args.sourceGUID)
|
|
else
|
|
timerBodySlamCD:Start(14, args.sourceName, args.sourceGUID)--little guys use it more often.
|
|
end
|
|
elseif spellId == 165578 then
|
|
warnCorpseBreath:Show()
|
|
timerCorpseBreathCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 153804 then
|
|
timerInhale:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
local spellId = args.spellId
|
|
if spellId == 153804 then
|
|
self.vb.inhaleActive = false
|
|
warnInhaleEnd:Show()
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_DIED(args)
|
|
local cid = self:GetCIDFromGUID(args.destGUID)
|
|
if cid == 76057 then--Carrion Centipede
|
|
timerBodySlamCD:Stop(args.destName, args.destGUID)
|
|
end
|
|
end
|
|
|
|
function mod:RAID_BOSS_EMOTE(msg)
|
|
if msg:find("spell:153804") then--Slightly faster than combat log (~2)
|
|
self.vb.inhaleActive = true
|
|
specWarnInhale:Show()
|
|
specWarnInhale:Play("inhalegetinpuddle")
|
|
timerInhaleCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:UNIT_SPELLCAST_SUCCEEDED(uId, _, spellId)
|
|
if spellId == 177694 then
|
|
warnSubmerge:Show()
|
|
timerInhaleCD:Stop()
|
|
local name, guid = UnitName(uId), UnitGUID(uId)
|
|
timerBodySlamCD:Stop(name, guid)
|
|
timerInhaleCD:Start(17.8)
|
|
-- timerSubmergeCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, destName, _, _, spellId)
|
|
if spellId == 153692 and not self.vb.inhaleActive and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then
|
|
specWarnNecroticPitch:Show()
|
|
specWarnNecroticPitch:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_ABSORBED = mod.SPELL_PERIODIC_DAMAGE
|
|
|