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.

82 lines
3.1 KiB

local mod = DBM:NewMod("GRDTrash", "DBM-Party-WoD", 3)
local L = mod:GetLocalizedStrings()
mod:SetRevision("20230907220903")
--mod:SetModelID(47785)
mod.isTrashMod = true
mod:RegisterEvents(
"SPELL_CAST_START 166675 176032",
"SPELL_CAST_SUCCESS 163966",
"SPELL_AURA_APPLIED 176025 166340 171900",
"SPELL_AURA_APPLIED_DOSE 166340",
"SPELL_PERIODIC_DAMAGE 176033",
"SPELL_ABSORBED 176033"
)
--TODO, add https://www.wowhead.com/spell=166380/reckless-slash ?
local warnLavaWreath = mod:NewTargetNoFilterAnnounce(176025, 4)
local warnThunderousBreath = mod:NewSpellAnnounce(171900, 3)
local specWarnActivating = mod:NewSpecialWarningInterrupt(163966, false, nil, 2, 1, 8)
local specWarnLavaWreath = mod:NewSpecialWarningMoveAway(176025, nil, nil, nil, 1, 2)
local specWarnFlametongueGround = mod:NewSpecialWarningMove(176033, nil, nil, nil, 1, 8)--Ground aoe, may add an earlier personal warning if target scanning works.
local specWarnShrapnelblast = mod:NewSpecialWarningDodge(166675, nil, nil, 2, 3, 2)--160943 boss version, 166675 trash version.
local specWarnThunderzone = mod:NewSpecialWarningMove(166340, nil, nil, nil, 1, 8)
--Antispam IDs for this mod: 1 run away, 2 dodge, 3 dispel, 4 incoming damage, 5 you/role, 6 misc, 7 off interrupt, 8 gtfo
function mod:SPELL_CAST_START(args)
if not self.Options.Enabled then return end
if not self:IsValidWarning(args.sourceGUID) then return end
local spellId = args.spellId
if spellId == 166675 and self:AntiSpam(2, 1) then
if self:IsTanking("player", nil, nil, true, args.sourceGUID) then
specWarnShrapnelblast:Show()
specWarnShrapnelblast:Play("shockwave")
end
elseif spellId == 176032 then
if self:IsTank() then
specWarnFlametongueGround:Show()--Pre warn here for tanks, because this attack also massively buffs trash damage if they are standing in the fire too.
specWarnFlametongueGround:Play("watchfeet")
end
end
end
function mod:SPELL_CAST_SUCCESS(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 163966 and self:AntiSpam(3, 3) then
specWarnActivating:Show(args.sourceName)
specWarnActivating:Play("crowdcontrol")
end
end
function mod:SPELL_AURA_APPLIED(args)
if not self.Options.Enabled then return end
local spellId = args.spellId
if spellId == 176025 then
if args:IsPlayer() then
specWarnLavaWreath:Show()
specWarnLavaWreath:Play("runout")
else
warnLavaWreath:Show(args.destName)
end
elseif spellId == 166340 and args:IsPlayer() and self:AntiSpam(2, 3) then
specWarnThunderzone:Show()
specWarnThunderzone:Play("watchfeet")
elseif spellId == 171900 then
warnThunderousBreath:Show()
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
if spellId == 176033 and destGUID == UnitGUID("player") and self:AntiSpam(2, 2) and not self:IsTrivial() then
specWarnFlametongueGround:Show()
specWarnFlametongueGround:Play("watchfeet")
end
end
mod.SPELL_ABSORBED = mod.SPELL_PERIODIC_DAMAGE