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.
169 lines
8.3 KiB
169 lines
8.3 KiB
local mod = DBM:NewMod("TirnaScitheTrash", "DBM-Party-Shadowlands", 3)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod:SetRevision("20201129045556")
|
|
--mod:SetModelID(47785)
|
|
|
|
mod.isTrashMod = true
|
|
|
|
mod:RegisterEvents(
|
|
"SPELL_CAST_START 321968 324909 324923 324914 324776 340305 340304 340300 340160 340189 326046 325418",
|
|
"SPELL_CAST_SUCCESS 325418",
|
|
"SPELL_AURA_APPLIED 322557 322938 324914 324776 325224 340288 326046 340544",
|
|
"SPELL_AURA_APPLIED_DOSE 340288"
|
|
)
|
|
|
|
--All warnings/recommendations drycoded from https://www.wowhead.com/guides/mists-of-tirna-scithe-shadowlands-dungeon-strategy-guide
|
|
--TODO, adjust triple bite stack warnings? More often, less often?
|
|
--TODO, target scan crushing leap? If it can be done, and if the two aoe abilities come from leap target destination, fine tune those warnings too
|
|
--TODO, see if Pool of Radiance is too early to warn, might need to warn at 340191/rejuvenating-radiance instead
|
|
local warnOvergrowth = mod:NewTargetAnnounce(322486, 4)
|
|
local warnFuriousThrashing = mod:NewSpellAnnounce(324909, 3)
|
|
local warnTripleBite = mod:NewStackAnnounce(340288, 2, nil, "Tank|Healer|RemovePoison")
|
|
local warnCrushingLeap = mod:NewSpellAnnounce(340305, 3)--Change to target warning if target scan debug checks out
|
|
local warnVolatileAcid = mod:NewTargetAnnounce(325418, 3)
|
|
|
|
--General
|
|
--local specWarnGTFO = mod:NewSpecialWarningGTFO(257274, nil, nil, nil, 1, 8)
|
|
--Notable Ingra Maloch Trash
|
|
local specWarnSoulSplit = mod:NewSpecialWarningDispel(322557, "RemoveMagic", nil, nil, 1, 2)
|
|
local specWarnHarvestEssence = mod:NewSpecialWarningInterrupt(322938, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnBewilderingPollen = mod:NewSpecialWarningDodge(321968, "Tank", nil, nil, 1, 2)
|
|
local specWarnOvergrowth = mod:NewSpecialWarningMoveTo(322486, nil, nil, nil, 1, 11)
|
|
local specWarnBrambleBurst = mod:NewSpecialWarningDodge(324923, nil, nil, nil, 2, 2)
|
|
--Notable Mistcaller Trash
|
|
local specWarnNourishtheForest = mod:NewSpecialWarningInterrupt(324914, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnNourishtheForestDispel = mod:NewSpecialWarningDispel(324914, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnBramblethornCoat = mod:NewSpecialWarningInterrupt(324776, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnBramblethornCoatDispel = mod:NewSpecialWarningDispel(324776, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnAnimaInjection = mod:NewSpecialWarningDispel(325224, "RemoveMagic", nil, nil, 1, 2)
|
|
local specWarnPoisonousSecretions = mod:NewSpecialWarningDodge(340304, nil, nil, nil, 2, 2)
|
|
local specWarnTongueLashing = mod:NewSpecialWarningDodge(340300, nil, nil, nil, 2, 2)
|
|
local specWarnRadiantBreath = mod:NewSpecialWarningDodge(340160, nil, nil, nil, 2, 2)
|
|
local specWarnPoolOfRadiance = mod:NewSpecialWarningMove(340189, "Tank", nil, nil, 1, 10)
|
|
--Notable Tred'ova Trash
|
|
local specWarnStimulateResistance = mod:NewSpecialWarningInterrupt(326046, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnStimulateResistanceDispel = mod:NewSpecialWarningDispel(326046, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnStimulateRegeneration = mod:NewSpecialWarningInterrupt(340544, "HasInterrupt", nil, nil, 1, 2)
|
|
local specWarnVolatileAcid = mod:NewSpecialWarningMoveAway(325418, nil, nil, nil, 1, 2)
|
|
local yellVolatileAcid = mod:NewYell(325418)
|
|
|
|
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role
|
|
|
|
function mod:CrushingLeap(targetname, uId)
|
|
if not targetname then return end
|
|
DBM:Debug("Crushing Leap on "..targetname)
|
|
-- warnRicochetingThrow:Show(targetname)
|
|
-- if targetname == UnitName("player") then
|
|
-- yellRicochetingThrow:Yell()
|
|
-- end
|
|
end
|
|
|
|
--About 1 second faster than debuff
|
|
function mod:VolatileAcid(targetname, uId)
|
|
if not targetname then return end
|
|
if self:AntiSpam(3, targetname) then
|
|
if targetname == UnitName("player") then
|
|
specWarnVolatileAcid:Show()
|
|
specWarnVolatileAcid:Play("runout")
|
|
yellVolatileAcid:Yell()
|
|
else
|
|
warnVolatileAcid:Show(targetname)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if not self.Options.Enabled then return end
|
|
if not self:IsValidWarning(args.sourceGUID) then return end--Filter all casts done by mobs in combat with npcs/other mobs.
|
|
local spellId = args.spellId
|
|
if spellId == 321968 and self:AntiSpam(3, 2) then
|
|
specWarnBewilderingPollen:Show()
|
|
specWarnBewilderingPollen:Play("shockwave")
|
|
elseif spellId == 324909 and self:AntiSpam(3, 4) then
|
|
warnFuriousThrashing:Show()
|
|
elseif spellId == 324923 and self:AntiSpam(3, 2) then
|
|
specWarnBrambleBurst:Show()
|
|
specWarnBrambleBurst:Play("watchfeet")
|
|
elseif spellId == 324914 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnNourishtheForest:Show(args.sourceName)
|
|
specWarnNourishtheForest:Play("kickcast")
|
|
elseif spellId == 324776 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnBramblethornCoat:Show(args.sourceName)
|
|
specWarnBramblethornCoat:Play("kickcast")
|
|
elseif spellId == 326046 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnStimulateResistance:Show(args.sourceName)
|
|
specWarnStimulateResistance:Play("kickcast")
|
|
elseif spellId == 340305 then
|
|
warnCrushingLeap:Show()
|
|
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "CrushingLeap", 0.1, 4)
|
|
elseif spellId == 340304 and self:AntiSpam(3, 2) then
|
|
specWarnPoisonousSecretions:Show()
|
|
specWarnPoisonousSecretions:Play("watchstep")
|
|
elseif spellId == 340300 and self:AntiSpam(3, 2) then
|
|
specWarnTongueLashing:Show()
|
|
specWarnTongueLashing:Play("watchstep")
|
|
elseif spellId == 340160 and self:AntiSpam(3, 2) then
|
|
specWarnRadiantBreath:Show()
|
|
specWarnRadiantBreath:Play("watchstep")
|
|
elseif spellId == 340189 then--No Antispam, not to be throttled against other types
|
|
specWarnPoolOfRadiance:Show()
|
|
specWarnPoolOfRadiance:Play("mobout")
|
|
elseif spellId == 325418 then
|
|
self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "CrushingLeap", 0.1, 4)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 325418 and self:AntiSpam(3, args.destName) then--Backup, in case no one in party was targetting mob casting Volatile Acid (ie target scanning would fail)
|
|
if args:IsPlayer() then
|
|
specWarnVolatileAcid:Show()
|
|
specWarnVolatileAcid:Play("runout")
|
|
yellVolatileAcid:Yell()
|
|
else
|
|
warnVolatileAcid:Show(args.destName)
|
|
end
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if not self.Options.Enabled then return end
|
|
local spellId = args.spellId
|
|
if spellId == 322557 and args:IsDestTypePlayer() and self:CheckDispelFilter() and self:AntiSpam(3, 5) then
|
|
specWarnSoulSplit:Show(args.destName)
|
|
specWarnSoulSplit:Play("helpdispel")
|
|
elseif spellId == 325224 and args:IsDestTypePlayer() and self:CheckDispelFilter() and self:AntiSpam(3, 5) then
|
|
specWarnAnimaInjection:Show(args.destName)
|
|
specWarnAnimaInjection:Play("helpdispel")
|
|
elseif spellId == 322938 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnHarvestEssence:Show(args.sourceName)
|
|
specWarnHarvestEssence:Play("kickcast")
|
|
elseif spellId == 340544 and self:CheckInterruptFilter(args.sourceGUID, false, true) then
|
|
specWarnStimulateRegeneration:Show(args.sourceName)
|
|
specWarnStimulateRegeneration:Play("kickcast")
|
|
elseif spellId == 322486 then
|
|
if args:IsPlayer() then
|
|
specWarnOvergrowth:Show()
|
|
specWarnOvergrowth:Play("movemelee")--Eh most accurate way to say move into melee for now, TODO, switch to movemelee
|
|
else
|
|
warnOvergrowth:Show(args.destName)
|
|
end
|
|
elseif spellId == 322557 and self:IsValidWarning(args.destGUID) and args:IsDestTypeHostile() and self:AntiSpam(3, 5) then
|
|
specWarnNourishtheForestDispel:Show(args.destName)
|
|
specWarnNourishtheForestDispel:Play("helpdispel")
|
|
elseif spellId == 324776 and self:IsValidWarning(args.destGUID) and args:IsDestTypeHostile() and self:AntiSpam(3, 5) then
|
|
specWarnBramblethornCoatDispel:Show(args.destName)
|
|
specWarnBramblethornCoatDispel:Play("helpdispel")
|
|
elseif spellId == 326046 and self:IsValidWarning(args.destGUID) and args:IsDestTypeHostile() and self:AntiSpam(3, 5) then
|
|
specWarnStimulateResistanceDispel:Show(args.destName)
|
|
specWarnStimulateResistanceDispel:Play("helpdispel")
|
|
elseif spellId == 340288 and args:IsDestTypePlayer() then
|
|
local amount = args.amount or 1
|
|
if amount % 2 == 0 then
|
|
warnTripleBite:Show(args.destName, args.amount or 1)
|
|
end
|
|
end
|
|
end
|
|
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
|
|
|