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.

124 lines
5.8 KiB

local mod = DBM:NewMod("SethralissTrash", "DBM-Party-BfA", 6)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20220920232426")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 265968 272657 264574 258908 272655 261635 273995 272700 268061",
"SPELL_AURA_APPLIED 273563 272659 267027 272699 268013 268008",
"SPELL_CAST_SUCCESS 268705",
"UNIT_SPELLCAST_SUCCEEDED"
)
--TODO, GTFO for Lightning in a Bottle?
--TODO, get right event for 265912 (Accumulate Charge. Can't find a START event)
local warnBladeFlurry = mod:NewSpellAnnounce(258908, 3)
local warnPyrrhicBlast = mod:NewCastAnnounce(273995, 4)
--local yellArrowBarrage = mod:NewYell(200343)
local specWarnDustCloud = mod:NewSpecialWarningMove(268705, "Tank", nil, nil, 1, 2)
local specWarnNoxiousBreath = mod:NewSpecialWarningDodge(272657, "Tank", nil, nil, 1, 2)
local specWarnPowerShot = mod:NewSpecialWarningDodge(264574, nil, nil, nil, 1, 2)
local specWarnScouringSand = mod:NewSpecialWarningDodge(272655, nil, nil, nil, 2, 8)
local specWarnCallLightning = mod:NewSpecialWarningDodge(272823, nil, nil, nil, 2, 2)
local specWarnHealingSurge = mod:NewSpecialWarningInterrupt(265968, "HasInterrupt", nil, nil, 1, 2)
local specWarnStoneshieldPotion = mod:NewSpecialWarningInterrupt(261635, "HasInterrupt", nil, nil, 1, 2)
local specWarnGreaterHealingPotion = mod:NewSpecialWarningInterrupt(272700, "HasInterrupt", nil, nil, 1, 2)
local specWarnChainLightning = mod:NewSpecialWarningInterrupt(268061, "HasInterrupt", nil, nil, 1, 2)
--local specWarnAccumulateCharge = mod:NewSpecialWarningInterrupt(265912, "HasInterrupt", nil, nil, 1, 2)
local specWarnNeurotoxinDispel = mod:NewSpecialWarningDispel(273563, "RemovePoison", nil, nil, 1, 2)
local specWarnCytotoxin = mod:NewSpecialWarningDispel(267027, "RemovePoison", nil, nil, 1, 2)
local specWarnVenomousSpit = mod:NewSpecialWarningDispel(272699, "RemovePoison", nil, nil, 1, 2)
local specWarnElectrifiedScales = mod:NewSpecialWarningDispel(272659, "MagicDispeller", nil, nil, 1, 2)
local specWarnFlameShock = mod:NewSpecialWarningDispel(268013, "RemoveMagic", nil, 2, 1, 2)
local specWarnSnakeCharm = mod:NewSpecialWarningDispel(268008, "RemoveMagic", nil, 2, 1, 2)
local specWarnNeurotoxin = mod:NewSpecialWarningYou(273563, nil, nil, nil, 1, 2)
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 265968 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnHealingSurge:Show(args.sourceName)
specWarnHealingSurge:Play("kickcast")
elseif spellId == 272657 and self:AntiSpam(2.5, 1) then
specWarnNoxiousBreath:Show()
specWarnNoxiousBreath:Play("shockwave")
elseif spellId == 264574 and self:AntiSpam(2.5, 1) then
specWarnPowerShot:Show()
specWarnPowerShot:Play("shockwave")
elseif spellId == 272655 and self:AntiSpam(2.5, 1) then
specWarnScouringSand:Show()
specWarnScouringSand:Play("behindmob")
elseif spellId == 258908 and self:AntiSpam(3, 2) then
warnBladeFlurry:Show()
elseif spellId == 273995 and self:AntiSpam(3, 6) then
warnPyrrhicBlast:Show()
elseif spellId == 261635 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnStoneshieldPotion:Show(args.sourceName)
specWarnStoneshieldPotion:Play("kickcast")
elseif spellId == 272700 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnGreaterHealingPotion:Show(args.sourceName)
specWarnGreaterHealingPotion:Play("kickcast")
elseif spellId == 268061 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
specWarnChainLightning:Show(args.sourceName)
specWarnChainLightning:Play("kickcast")
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 273563 and args:IsDestTypePlayer() then
if self.Options.SpecWarn273563dispel and self:CheckDispelFilter("poison") then
specWarnNeurotoxinDispel:Show(args.destName)
specWarnNeurotoxinDispel:Play("helpdispel")
elseif args:IsPlayer() then
specWarnNeurotoxin:Show()
specWarnNeurotoxin:Play("stopmove")
end
elseif spellId == 272659 and not args:IsDestTypePlayer() and self:AntiSpam(3, 3) then
specWarnElectrifiedScales:Show(args.destName)
specWarnElectrifiedScales:Play("helpdispel")
elseif spellId == 267027 and args:IsDestTypePlayer() and self:CheckDispelFilter("poison") and self:AntiSpam(3, 4) then
specWarnCytotoxin:Show(args.destName)
specWarnCytotoxin:Play("helpdispel")
elseif spellId == 272699 and args:IsDestTypePlayer() and self:CheckDispelFilter("poison") and self:AntiSpam(3, 4) then
specWarnVenomousSpit:Show(args.destName)
specWarnVenomousSpit:Play("helpdispel")
elseif spellId == 268013 and args:IsDestTypePlayer() and self:CheckDispelFilter("magic") and self:AntiSpam(3, 8) then
specWarnFlameShock:Show(args.destName)
specWarnFlameShock:Play("helpdispel")
elseif spellId == 268008 and args:IsDestTypePlayer() and self:CheckDispelFilter("magic") and self:AntiSpam(3, 8) then
specWarnSnakeCharm:Show(args.destName)
specWarnSnakeCharm:Play("helpdispel")
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 268705 and self:AntiSpam(3, 5) then
specWarnDustCloud:Show()
specWarnDustCloud:Play("moveboss")
end
end
--Events not in combat log
function mod:UNIT_SPELLCAST_SUCCEEDED(_, _, spellId)
if spellId == 272823 then
--local guid = UnitGUID(uId)
--if self:IsValidWarning(guid, uId) then
self:SendSync("CallLightning")
--end
end
end
function mod:OnSync(msg)
if msg == "CallLightning" and self:AntiSpam(4, 7) then
specWarnCallLightning:Show()
specWarnCallLightning:Play("watchstep")
end
end