local mod = DBM : NewMod ( " FreeholdTrash " , " DBM-Party-BfA " , 2 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20230308170228 " )
--mod:SetModelID(47785)
mod.isTrashMod = true
mod : RegisterEvents (
" SPELL_CAST_START 257732 257397 257899 257736 258777 257784 257756 274860 257426 274383 258199 272402 257870 274400 " ,
" SPELL_AURA_APPLIED 257274 257476 258323 257739 257908 "
-- "SPELL_CAST_SUCCESS"
)
--TODO, poision Strikes dispel/stack warning?
--TODO, warning for earth shaker?
local warnDuelistDash = mod : NewTargetNoFilterAnnounce ( 274400 , 4 )
local warnRatTrap = mod : NewCastAnnounce ( 274383 , 2 )
local warnRicochetingThrow = mod : NewTargetAnnounce ( 272402 , 2 )
local yellRicochetingThrow = mod : NewYell ( 272402 )
local yellDuelistDash = mod : NewYell ( 274400 )
local specWarnOiledBladeSelf = mod : NewSpecialWarningDefensive ( 257908 , nil , nil , nil , 1 , 2 )
local specWarnBrutalBackhand = mod : NewSpecialWarningDodge ( 257426 , nil , nil , nil , 1 , 2 )
local specWarnShatteringToss = mod : NewSpecialWarningSpell ( 274860 , " Tank " , nil , nil , 1 , 12 )
local specWarnGoinBan = mod : NewSpecialWarningRun ( 257756 , " Melee " , nil , nil , 4 , 2 )
local specWarnBladeBarrage = mod : NewSpecialWarningRun ( 257870 , " Melee " , nil , nil , 4 , 2 )
local specWarnGroundShatter = mod : NewSpecialWarningRun ( 258199 , " Melee " , nil , nil , 4 , 2 )
local specWarnBlindRagePlayer = mod : NewSpecialWarningRun ( 257739 , nil , nil , nil , 4 , 2 )
local specWarnHealingBalm = mod : NewSpecialWarningInterrupt ( 257397 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnPainfulMotivation = mod : NewSpecialWarningInterrupt ( 257899 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnThunderingSquall = mod : NewSpecialWarningInterrupt ( 257736 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnSeaSpout = mod : NewSpecialWarningInterrupt ( 258779 , " HasInterrupt " , nil , nil , 1 , 2 ) --258777 has no tooltip yet so using damage ID for now
local specWarnFrostBlast = mod : NewSpecialWarningInterrupt ( 257784 , " HasInterrupt " , nil , nil , 1 , 2 ) --Might prune or disable by default if it conflicts with higher priority interrupts in area
local specWarnShatteringBellowKick = mod : NewSpecialWarningInterrupt ( 257732 , " HasInterrupt " , nil , nil , 1 , 2 )
local specWarnShatteringBellow = mod : NewSpecialWarningCast ( 257732 , " SpellCaster " , nil , nil , 1 , 2 )
local specWarnBestialWrath = mod : NewSpecialWarningDispel ( 257476 , " RemoveEnrage " , nil , 2 , 1 , 2 )
local specWarnBlindRage = mod : NewSpecialWarningDispel ( 257739 , " RemoveEnrage " , nil , 2 , 1 , 2 )
local specWarnInfectedWound = mod : NewSpecialWarningDispel ( 258323 , " RemoveDisease " , nil , nil , 1 , 2 )
local specWarnOiledBlade = mod : NewSpecialWarningDispel ( 257908 , " RemoveMagic " , nil , 2 , 1 , 2 )
local specWarnGTFO = mod : NewSpecialWarningGTFO ( 257274 , 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
function mod : RicochetingTarget ( targetname )
if not targetname then return end
if self : AntiSpam ( 3 , targetname ) then
warnRicochetingThrow : CombinedShow ( 0.5 , targetname )
if targetname == UnitName ( " player " ) then
yellRicochetingThrow : Yell ( )
end
end
end
function mod : DashTarget ( targetname )
if not targetname then return end
warnDuelistDash : Show ( targetname )
if targetname == UnitName ( " player " ) then
yellDuelistDash : Yell ( )
end
end
function mod : SPELL_CAST_START ( args )
if not self.Options . Enabled then return end
local spellId = args.spellId
if spellId == 257397 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnHealingBalm : Show ( args.sourceName )
specWarnHealingBalm : Play ( " kickcast " )
elseif spellId == 257899 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnPainfulMotivation : Show ( args.sourceName )
specWarnPainfulMotivation : Play ( " kickcast " )
elseif spellId == 257736 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnThunderingSquall : Show ( args.sourceName )
specWarnThunderingSquall : Play ( " kickcast " )
elseif spellId == 258777 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnSeaSpout : Show ( args.sourceName )
specWarnSeaSpout : Play ( " kickcast " )
elseif spellId == 257784 and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnFrostBlast : Show ( args.sourceName )
specWarnFrostBlast : Play ( " kickcast " )
elseif spellId == 257732 then
--Can interrupt and interrupt warning enabled, show that
if self : CheckInterruptFilter ( args.sourceGUID , false , true ) and self.Options . SpecWarn257732interrupt then
specWarnShatteringBellowKick : Show ( args.sourceName )
specWarnShatteringBellowKick : Play ( " kickcast " )
elseif self : AntiSpam ( 3 , 6 ) then --Else, can't interrupt or interrupt warning is disabled and user is a caster, warn to stop casting.
specWarnShatteringBellow : Show ( )
specWarnShatteringBellow : Play ( " stopcast " )
end
elseif spellId == 257756 and self : AntiSpam ( 4 , 1 ) then
specWarnGoinBan : Show ( )
specWarnGoinBan : Play ( " justrun " )
elseif spellId == 257870 and self : AntiSpam ( 4 , 1 ) then
specWarnBladeBarrage : Show ( )
specWarnBladeBarrage : Play ( " justrun " )
elseif spellId == 274860 and self : AntiSpam ( 3 , 5 ) then
specWarnShatteringToss : Show ( )
specWarnShatteringToss : Play ( " tosscoming " )
elseif spellId == 257426 and self : AntiSpam ( 3 , 2 ) then
specWarnBrutalBackhand : Show ( )
specWarnBrutalBackhand : Play ( " shockwave " )
elseif spellId == 274400 then
self : ScheduleMethod ( 0.1 , " BossTargetScanner " , args.sourceGUID , " DashTarget " , 0.1 , 8 )
elseif spellId == 274383 and self : AntiSpam ( 3 , 6 ) then
warnRatTrap : Show ( )
elseif spellId == 258199 and self : AntiSpam ( 3 , 1 ) then
specWarnGroundShatter : Show ( )
specWarnGroundShatter : Play ( " justrun " )
elseif spellId == 272402 then
self : ScheduleMethod ( 0.1 , " BossTargetScanner " , args.sourceGUID , " RicochetingTarget " , 0.1 , 4 )
end
end
function mod : SPELL_AURA_APPLIED ( args )
if not self.Options . Enabled then return end
local spellId = args.spellId
if spellId == 257274 and args : IsPlayer ( ) and self : AntiSpam ( 2 , 2 ) then
specWarnGTFO : Show ( args.spellName )
specWarnGTFO : Play ( " watchfeet " )
elseif spellId == 257476 and self : AntiSpam ( 3 , 5 ) then
specWarnBestialWrath : Show ( args.destName )
specWarnBestialWrath : Play ( " helpdispel " )
elseif spellId == 257739 and self : AntiSpam ( 3 , 5 ) then
--If it can be dispelled by affected player, no reason to tell them to run away, dispel is priority
if self.Options . SpecWarn257739dispel then
specWarnBlindRage : Show ( args.destName )
specWarnBlindRage : Play ( " helpdispel " )
elseif args : IsPlayer ( ) then
specWarnBlindRagePlayer : Show ( )
specWarnBlindRagePlayer : Play ( " justrun " )
end
elseif spellId == 257908 and args : IsDestTypePlayer ( ) and self : AntiSpam ( 3 , 5 ) then
--If tank can dispel self, no reason to tell tank to defensive through it, dispel is priority
if self.Options . SpecWarn257908dispel and self : CheckDispelFilter ( " magic " ) then
specWarnOiledBlade : Show ( args.destName )
specWarnOiledBlade : Play ( " helpdispel " )
elseif args : IsPlayer ( ) then
specWarnOiledBladeSelf : Show ( )
specWarnOiledBladeSelf : Play ( " defensive " )
end
elseif spellId == 258323 and args : IsDestTypePlayer ( ) and self : CheckDispelFilter ( " disease " ) and self : AntiSpam ( 3 , 5 ) then
specWarnInfectedWound : Show ( args.destName )
specWarnInfectedWound : Play ( " helpdispel " )
end
end