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.

158 lines
7.8 KiB

local mod = DBM:NewMod("SotSTrash", "DBM-Party-BfA", 4)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20240426175442")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 268030 267973 268391 268239 268309 276268 267977 268050 268027 274437 268184 276292 268211 268273 268322 268317 268375 276767",
"SPELL_AURA_APPLIED 268375 268322 268214 276297 276767 274631",
"SPELL_AURA_REMOVED 276297"
)
--TODO, Colossal Slam-268348? START
--TODO, Tempest-274437-npc:139800 target scan (START)?
--Find slicing hurricane
local warnCarvedFlesh = mod:NewTargetAnnounce(268214, 2)
--local yellArrowBarrage = mod:NewYell(200343)
local specWarnRisingTides = mod:NewSpecialWarningSpell(268027, nil, nil, nil, 2, 2)
local specWarnShipbreakerStorm = mod:NewSpecialWarningSpell(268239, nil, nil, nil, 2, 2)--Can be interrupted by stuns, but not interrupts
local specWarnWashAway = mod:NewSpecialWarningDodge(267973, nil, nil, nil, 2, 2)
local specWarnDeepSmash = mod:NewSpecialWarningDodge(268273, nil, nil, nil, 2, 2)
local specWarnWhirlingSlam = mod:NewSpecialWarningDodge(276292, nil, nil, nil, 4, 2)
local specWarnMentalAssault = mod:NewSpecialWarningDodge(268391, "Tank", nil, 2, 1, 2)
local specWarnHeavingBlow = mod:NewSpecialWarningDodge(276268, "Tank", nil, nil, 1, 2)
local specWarnBlessingofIrontides = mod:NewSpecialWarningRun(274631, "Tank", nil, nil, 1, 2)
local specWarnMinorSwiftness = mod:NewSpecialWarningMove(268184, "Tank", nil, nil, 1, 2)
local specWarnMinorReinforcement = mod:NewSpecialWarningMove(268211, "Tank", nil, nil, 1, 2)
local specWarnAnchorofBinding = mod:NewSpecialWarningInterrupt(268050, false, nil, nil, 1, 2)--Off by default, should only be interrupted if group has enough for this and mending and purging swiftness
local specWarnMendingRapids = mod:NewSpecialWarningInterrupt(268030, "HasInterrupt", nil, nil, 1, 2)
local specWarnUnendingDarkness = mod:NewSpecialWarningInterrupt(268309, "HasInterrupt", nil, nil, 1, 2)
local specWarnTidalSurge = mod:NewSpecialWarningInterrupt(267977, "HasInterrupt", nil, nil, 1, 2)
local specWarnTempest = mod:NewSpecialWarningInterrupt(274437, "HasInterrupt", nil, nil, 1, 2)
local specWarnRipMind = mod:NewSpecialWarningInterrupt(268317, "Tank", nil, nil, 1, 2)--Let tank handle this interrupt
local specWarnTouchofDrownedKick = mod:NewSpecialWarningInterrupt(268322, "HasInterrupt", nil, nil, 1, 2)--Let everyone else get this one (or healers can dispel it)
local specWarnDetectThoughtsKick = mod:NewSpecialWarningInterrupt(268375, "HasInterrupt", nil, nil, 1, 2)
local specWarnConsumingVoidKick = mod:NewSpecialWarningInterrupt(276767, "HasInterrupt", nil, nil, 1, 2)
local specWarnDetectThoughts = mod:NewSpecialWarningDispel(268375, "MagicDispeller", nil, nil, 1, 2)
local specWarnConsumingVoid = mod:NewSpecialWarningDispel(276767, "MagicDispeller", nil, nil, 1, 2)
local specWarnTouchofDrowned = mod:NewSpecialWarningDispel(268322, "RemoveMagic", nil, 2, 1, 2)
local specWarnConsumingVoidStop = mod:NewSpecialWarningReflect(276767, "CasterDps", nil, nil, 1, 2)
local specWarnCarveFlesh = mod:NewSpecialWarningMoveTo(268214, nil, nil, nil, 3, 2)
local specWarnVoidSeed = mod:NewSpecialWarningMoveAway(276297, nil, nil, nil, 1, 2)
local yellVoidSeed = mod:NewShortFadesYell(276297)
local MinorReinforcement = DBM:GetSpellName(268211)
--1: Dodge Shit on ground, 2: Shockwaves, 4: AoEs, 5: Run Away, 6: Role
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 268030 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnMendingRapids:Show(args.sourceName)
specWarnMendingRapids:Play("kickcast")
elseif spellId == 268309 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnUnendingDarkness:Show(args.sourceName)
specWarnUnendingDarkness:Play("kickcast")
elseif spellId == 267973 and self:AntiSpam(5, 1) then
specWarnWashAway:Show()
specWarnWashAway:Play("watchstep")
elseif spellId == 268391 and self:AntiSpam(3, 2) then
specWarnMentalAssault:Show()
specWarnMentalAssault:Play("shockwave")
elseif spellId == 268239 and self:AntiSpam(5, 4) then
specWarnShipbreakerStorm:Show()
specWarnShipbreakerStorm:Play("aesoon")
elseif spellId == 276268 and self:AntiSpam(3, 2) then
specWarnHeavingBlow:Show()
specWarnHeavingBlow:Play("shockwave")
elseif spellId == 267977 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTidalSurge:Show(args.sourceName)
specWarnTidalSurge:Play("kickcast")
elseif spellId == 268050 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnAnchorofBinding:Show(args.sourceName)
specWarnAnchorofBinding:Play("kickcast")
elseif spellId == 268027 and self:AntiSpam(4, 4) then
specWarnRisingTides:Show()
specWarnRisingTides:Play("aesoon")
elseif spellId == 274437 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTempest:Show(args.sourceName)
specWarnTempest:Play("kickcast")
elseif spellId == 268184 and self:AntiSpam(4, 6) then
specWarnMinorSwiftness:Show()
specWarnMinorSwiftness:Play("moveboss")
elseif spellId == 276292 and self:AntiSpam(5, 5) then
specWarnWhirlingSlam:Show()
specWarnWhirlingSlam:Play("justrun")
elseif spellId == 268211 and self:AntiSpam(4, 6) then
specWarnMinorReinforcement:Show()
specWarnMinorReinforcement:Play("moveboss")
elseif spellId == 268273 and self:AntiSpam(4, 1) then
specWarnDeepSmash:Show()
specWarnDeepSmash:Play("watchstep")
elseif spellId == 268322 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnTouchofDrownedKick:Show(args.sourceName)
specWarnTouchofDrownedKick:Play("kickcast")
elseif spellId == 268317 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnRipMind:Show(args.sourceName)
specWarnRipMind:Play("kickcast")
elseif spellId == 268375 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnDetectThoughtsKick:Show(args.sourceName)
specWarnDetectThoughtsKick:Play("kickcast")
elseif spellId == 276767 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnConsumingVoidKick:Show(args.sourceName)
specWarnConsumingVoidKick:Play("kickcast")
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 268375 and self:AntiSpam(2, 6) then
specWarnDetectThoughts:Show(args.destName)
specWarnDetectThoughts:Play("helpdispel")
elseif spellId == 276767 and self:AntiSpam(2, 6) then
if self.Options.SpecWarn276767dispel then
specWarnConsumingVoid:Show(args.destName)
specWarnConsumingVoid:Play("helpdispel")
else
specWarnConsumingVoidStop:Show(args.destName)
specWarnConsumingVoidStop:Play("stopattack")
end
elseif spellId == 268322 and args:IsDestTypePlayer() and self:CheckDispelFilter("magic") and self:AntiSpam(2, 3) then
specWarnTouchofDrowned:Show(args.destName)
specWarnTouchofDrowned:Play("helpdispel")
elseif spellId == 268214 then
if args:IsPlayer() then
specWarnCarveFlesh:Show(MinorReinforcement)
specWarnCarveFlesh:Play("targetyou")
else
warnCarvedFlesh:Show(args.destName)
end
elseif spellId == 276297 then
if args:IsPlayer() then
specWarnVoidSeed:Schedule(8)
specWarnVoidSeed:ScheduleVoice(8, "runout")
yellVoidSeed:Countdown(12)
end
elseif spellId == 274631 and self:AntiSpam(4, 5) then
specWarnBlessingofIrontides:Show()
specWarnBlessingofIrontides:Play("justrun")
end
end
function mod:SPELL_AURA_REMOVED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 276297 then
if args:IsPlayer() then
specWarnVoidSeed:Cancel()
specWarnVoidSeed:CancelVoice()
yellVoidSeed:Cancel()
end
end
end