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.

154 lines
5.7 KiB

local mod = DBM:NewMod(672, "DBM-Party-MoP", 1, 313)
local L = mod:GetLocalizedStrings()
mod.statTypes = "normal,heroic,challenge,timewalker"
mod:SetRevision("20240601044955")
mod:SetCreatureID(56448)
mod:SetEncounterID(1418)
mod:SetUsedIcons(8)
mod:SetHotfixNoticeRev(20230410000000)
mod:SetMinSyncRevision(20230410000000)
mod.sendMainBossGUID = true
mod:RegisterCombat("combat")
--mod:RegisterEventsInCombat(
--)
--Hybrid mod that works for both Season 1 Dragonflight version and original version you seen in timewalking
--[[
ability.id = 397783 and type = "begincast"
or ability.id = 397797 and type = "applydebuff"
or type = "dungeonencounterstart" or type = "dungeonencounterend"
--]]
local warnCorruptedVortex = mod:NewTargetAnnounce(397797, 3)
local warnCorruptedGeyser = mod:NewCountAnnounce(397793, 3)
local warnBubbleBurst = mod:NewCastAnnounce(106612, 3)
local warnAddsLeft = mod:NewAddsLeftAnnounce(-5616, 2, 106526)
local specWarnLivingWater = mod:NewSpecialWarningSwitch(-5616, "-Healer", nil, nil, 1, 2)
local specWarnWashAway = mod:NewSpecialWarningDodge(397783, nil, nil, nil, 2, 2)
local specWarnCorruptedVortex = mod:NewSpecialWarningMoveAway(397797, nil, nil, nil, 1, 2)
local yellCorruptedVortex = mod:NewYell(397797)
local yellCorruptedVortexFades = mod:NewShortFadesYell(397797)
local specWarnHydrolance = mod:NewSpecialWarningInterrupt(397801, "HasInterrupt", nil, nil, 1, 2)
local specWarnGTFO = mod:NewSpecialWarningGTFO(397799, nil, nil, nil, 1, 8)
local timerWashAwayCD = mod:NewCDTimer(41.3, 397783, nil, nil, nil, 2, nil, DBM_COMMON_L.DEADLY_ICON)--41-44
local timerCorruptedVortexCD = mod:NewCDTimer(13, 397797, nil, nil, nil, 3, nil, DBM_COMMON_L.HEALER_ICON)
local timerCorruptedGeyserCD = mod:NewCDCountTimer("d5", 397793, nil, nil, nil, 3)
local timerLivingWater = mod:NewCastTimer(5.5, 106526, nil, nil, nil, 1)
--mod:AddSetIconOption("SetIconOnAdds", "ej5616", false, true, {8})--FIXME, where the fuck did scanner go?
mod.vb.addsRemaining = 4--Also 4 on heroic?
mod.vb.firstAdd = false
local addsName = DBM:EJ_GetSectionInfo(5616)
function mod:OnCombatStart(delay)
if self:IsMythicPlus() then
timerCorruptedVortexCD:Start(8.5-delay)
timerWashAwayCD:Start(20.6-delay)
self:RegisterShortTermEvents(
"SPELL_CAST_START 397783 397801",
"SPELL_AURA_APPLIED 397797 397799",
"SPELL_AURA_REMOVED 397797"
)
else
self.vb.addsRemaining = 4
self.vb.firstAdd = false
timerLivingWater:Start(13-delay)
self:RegisterShortTermEvents(
"SPELL_AURA_APPLIED 106653",
"SPELL_CAST_START 106526 106612",
"SPELL_DAMAGE 115167",
"SPELL_MISSED 115167",
"UNIT_DIED"
)
end
end
function mod:OnCombatEnd()
self:UnregisterShortTermEvents()
end
function mod:SPELL_CAST_START(args)
local spellId = args.spellId
--Retail M+ stuff
if spellId == 397783 then
specWarnWashAway:Show()
specWarnWashAway:Play("watchstep")
timerWashAwayCD:Start()
timerCorruptedVortexCD:Stop()
timerCorruptedVortexCD:Start(16)
--"<432.19 20:50:33> [CLEU] SPELL_CAST_START#Creature-0-3772-960-3510-56448-000045A960#Der weise Mari(56.1%-100.0%)##nil#397783#Wegspülen#nil#nil", -- [3320]
--"<435.47 20:50:36> [CLEU] SPELL_DAMAGE[CONDENSED]#Creature-0-3772-960-3510-56448-000045A960#Der weise Mari#2 Targets#397793#Verderbter Geysir", -- [3338]
--"<440.60 20:50:41> [CLEU] SPELL_DAMAGE#Creature-0-3772-960-3510-56448-000045A960#Der weise Mari#Player-1401-04216D3A#Valî-Shattrath#397793#Verderbter Geysir", -- [3373]
--"<445.52 20:50:46> [CLEU] SPELL_DAMAGE#Creature-0-3772-960-3510-56448-000045A960#Der weise Mari#Player-1401-04216D3A#Valî-Shattrath#397793#Verderbter Geysir", -- [3382]
warnCorruptedGeyser:Schedule(3.2, 1)
timerCorruptedGeyserCD:Start(3.2, 1)
warnCorruptedGeyser:Schedule(8.3, 2)
timerCorruptedGeyserCD:Start(8.3, 2)
warnCorruptedGeyser:Schedule(13.3, 3)
timerCorruptedGeyserCD:Start(13.3, 3)
elseif spellId == 397801 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHydrolance:Show(args.sourceName)
specWarnHydrolance:Play("kickcast")
--Classic and retail timewalking/non mythic+
elseif args.spellId == 106526 then--Call Water
if not self.vb.firstAdd then
self.vb.firstAdd = true
else
timerLivingWater:Start()
end
specWarnLivingWater:Schedule(5.5)
specWarnLivingWater:ScheduleVoice(5.5, "killmob")
elseif args.spellId == 106612 then--Bubble Burst (phase 2)
warnBubbleBurst:Show()
timerWashAwayCD:Start()
end
end
function mod:SPELL_AURA_APPLIED(args)
local spellId = args.spellId
if spellId == 397797 then
if self:AntiSpam(5, 1) then
timerCorruptedVortexCD:Start()
end
if args:IsPlayer() then
specWarnCorruptedVortex:Show()
specWarnCorruptedVortex:Play("runout")
yellCorruptedVortex:Yell()
yellCorruptedVortexFades:Countdown(spellId)
end
elseif (spellId == 106653 or spellId == 397799) and args:IsPlayer() and self:AntiSpam(3, 2) then
specWarnGTFO:Show(args.spellName)
specWarnGTFO:Play("watchfeet")
end
end
function mod:SPELL_AURA_REMOVED(args)
if args.spellId == 397797 then
if args:IsPlayer() then
yellCorruptedVortexFades:Cancel()
end
end
end
function mod:SPELL_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId, spellName)
if spellId == 115167 and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then
specWarnGTFO:Show(spellName)
specWarnGTFO:Play("watchfeet")
end
end
mod.SPELL_MISSED = mod.SPELL_DAMAGE
function mod:UNIT_DIED(args)
local cid = self:GetCIDFromGUID(args.destGUID)
if cid == 56511 then--Corrupt Living Water
self.vb.addsRemaining = self.vb.addsRemaining - 1
warnAddsLeft:Show(self.vb.addsRemaining)
end
end