local mod = DBM : NewMod ( " SacredFlameTrash " , " DBM-Party-WarWithin " , 2 )
local L = mod : GetLocalizedStrings ( )
mod : SetRevision ( " 20240612041205 " )
--mod:SetModelID(47785)
mod.isTrashMod = true
mod : RegisterEvents (
" SPELL_CAST_START 424621 424423 424431 448515 427583 424462 424420 427484 427356 427601 " ,
" SPELL_CAST_SUCCESS 453458 " ,
" SPELL_AURA_APPLIED 426964 424430 " ,
" SPELL_AURA_APPLIED_DOSE 426964 " ,
-- "SPELL_AURA_REMOVED",
" UNIT_DIED "
)
--TODO, target scan lunging strike?
--TODO, longer pulls for Trusted Guard timers
--TODO, nameplate timer for https://www.wowhead.com/beta/spell=424421/fireball on Taener Duelmal?
local warnMortalStrike = mod : NewStackAnnounce ( 426964 , 2 , nil , " Tank|Healer " )
local warnBurstofLight = mod : NewCastAnnounce ( 427601 , 4 ) --SUPER obvious so doesn't need a special warning for now i think
local warnGreaterHeal = mod : NewCastAnnounce ( 427356 , 3 ) --High Prio Interrupt
local specWarnCaltrops = mod : NewSpecialWarningDodge ( 453458 , nil , nil , nil , 2 , 2 )
local specWarnFlamestrike = mod : NewSpecialWarningDodge ( 427484 , nil , nil , nil , 2 , 2 )
--local yellChainLightning = mod:NewYell(387127)
local specWarnGreaterHeal = mod : NewSpecialWarningInterrupt ( 427356 , nil , nil , nil , 1 , 2 )
--local specWarnStormshield = mod:NewSpecialWarningDispel(386223, "MagicDispeller", nil, nil, 1, 2)
local specWarnGTFO = mod : NewSpecialWarningGTFO ( 424430 , nil , nil , nil , 1 , 8 )
local timerCaltropsCD = mod : NewCDNPTimer ( 16.9 , 453458 , nil , nil , nil , 3 )
local timerFlamestrikeCD = mod : NewCDNPTimer ( 20.4 , 427484 , nil , nil , nil , 3 )
--local timerGreaterHealCD = mod:NewCDNPTimer(20.4, 427356, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON)--Currently too much of a PITA to add due to stuns not putting it on CD
----Everything below here are the adds from Captain Dailcry. treated as trash since they are pulled as trash, just like Court of Stars
--The Trusted Guard
mod : AddTimerLine ( DBM : EJ_GetSectionInfo ( 27840 ) )
--Sergeant Shaynemail
mod : AddTimerLine ( DBM : EJ_GetSectionInfo ( 27825 ) )
local specWarnBrutalSmash = mod : NewSpecialWarningDodge ( 424621 , nil , nil , nil , 2 , 2 )
local specWarnLungingStrike = mod : NewSpecialWarningMoveAway ( 424423 , nil , nil , nil , 1 , 2 )
--local timerBrutalSmashCD = mod:NewCDNPTimer(15.7, 424621, nil, nil, nil, 3)
local timerLungingStrikeCD = mod : NewCDNPTimer ( 14.5 , 424423 , nil , nil , nil , 3 ) --Not enough sample data
--Elaena Emberlanz
mod : AddTimerLine ( DBM : EJ_GetSectionInfo ( 27828 ) )
local specWarnHolyRadiance = mod : NewSpecialWarningMoveAway ( 424431 , nil , nil , nil , 2 , 2 )
local specWarnDivineJudgement = mod : NewSpecialWarningDefensive ( 448515 , nil , nil , nil , 2 , 2 )
local specWarnRepentance = mod : NewSpecialWarningInterrupt ( 427583 , " HasInterrupt " , nil , nil , 1 , 2 )
--local timerHolyRadianceCD = mod:NewCDNPTimer(14.5, 424431, nil, nil, nil, 2, nil, DBM_COMMON_L.HEALER_ICON)
local timerDivineJudgementCD = mod : NewCDNPTimer ( 12.1 , 448515 , nil , nil , nil , 5 , nil , DBM_COMMON_L.TANK_ICON )
local timerRepentanceCD = mod : NewCDNPTimer ( 15.7 , 427583 , nil , " HasInterrupt " , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON )
--Taener Duelmal
mod : AddTimerLine ( DBM : EJ_GetSectionInfo ( 27831 ) )
local specWarnEmberStorm = mod : NewSpecialWarningDodge ( 424462 , nil , nil , nil , 2 , 2 )
local specWarnCinderblast = mod : NewSpecialWarningInterrupt ( 424420 , " HasInterrupt " , nil , nil , 1 , 2 )
--local timerEmberStormCD = mod:NewCDNPTimer(12.1, 424462, nil, nil, nil, 3)
local timerCinderblastCD = mod : NewCDNPTimer ( 15.7 , 424420 , nil , " HasInterrupt " , nil , 4 , nil , DBM_COMMON_L.INTERRUPT_ICON )
--local playerName = UnitName("player")
--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 : CLTarget ( targetname )
if not targetname then return end
if targetname == UnitName ( " player " ) then
if self : AntiSpam ( 4 , 5 ) then
specWarnChainLightning : Show ( )
specWarnChainLightning : Play ( " runout " )
end
yellChainLightning : Yell ( )
end
end
--]]
function mod : SPELL_CAST_START ( args )
local spellId = args.spellId
if not self : IsValidWarning ( args.sourceGUID ) then return end
if spellId == 424621 then
--timerBrutalSmashCD:Start(nil, args.sourceGUID)
if self : AntiSpam ( 3 , 2 ) then
specWarnBrutalSmash : Show ( )
specWarnBrutalSmash : Play ( " shockwave " )
end
elseif spellId == 427356 then
if self.Options . SpecWarn427356interrupt and self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnGreaterHeal : Show ( args.sourceName )
specWarnGreaterHeal : Play ( " kickcast " )
elseif self : AntiSpam ( 3 , 7 ) then
warnGreaterHeal : Show ( )
end
elseif spellId == 424462 then
--timerEmberStormCD:Start(nil, args.sourceGUID)
if self : AntiSpam ( 3 , 2 ) then
specWarnEmberStorm : Show ( )
specWarnEmberStorm : Play ( " watchstep " )
end
elseif spellId == 424423 then
timerLungingStrikeCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 5 ) then
specWarnLungingStrike : Show ( )
specWarnLungingStrike : Play ( " scatter " )
end
elseif spellId == 424431 then
--timerHolyRadianceCD:Start(nil, args.sourceGUID)
if self : AntiSpam ( 3 , 4 ) then
specWarnHolyRadiance : Show ( )
specWarnHolyRadiance : Play ( " aesoon " )
end
elseif spellId == 448515 then
timerDivineJudgementCD : Start ( nil , args.sourceGUID )
if self : IsTanking ( " player " , nil , nil , true , args.sourceGUID ) then
specWarnDivineJudgement : Show ( )
specWarnDivineJudgement : Play ( " defensive " )
end
elseif spellId == 427583 then
timerRepentanceCD : Start ( nil , args.sourceGUID )
if self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnRepentance : Show ( args.sourceName )
specWarnRepentance : Play ( " kickcast " )
end
elseif spellId == 424420 then
timerCinderblastCD : Start ( nil , args.sourceGUID )
if self : CheckInterruptFilter ( args.sourceGUID , false , true ) then
specWarnCinderblast : Show ( args.sourceName )
specWarnCinderblast : Play ( " kickcast " )
end
elseif spellId == 427484 then
timerFlamestrikeCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 2 ) then
specWarnFlamestrike : Show ( )
specWarnFlamestrike : Play ( " watchstep " )
end
elseif spellId == 427601 then
if self : AntiSpam ( 3 , 6 ) then
warnBurstofLight : Show ( )
end
end
end
function mod : SPELL_CAST_SUCCESS ( args )
local spellId = args.spellId
if not self : IsValidWarning ( args.sourceGUID ) then return end
if spellId == 453458 then
timerCaltropsCD : Start ( nil , args.sourceGUID )
if self : AntiSpam ( 3 , 2 ) then
specWarnCaltrops : Show ( )
specWarnCaltrops : Play ( " watchstep " )
end
end
end
function mod : SPELL_AURA_APPLIED ( args )
if not self.Options . Enabled then return end
local spellId = args.spellId
if spellId == 426964 then
local amount = args.amount or 1
if self : AntiSpam ( 3 , 5 ) then
warnMortalStrike : Show ( args.destName , amount )
end
elseif spellId == 424430 and args : IsPlayer ( ) and self : AntiSpam ( 3 , 8 ) then
specWarnGTFO : Show ( args.spellName )
specWarnGTFO : Play ( " watchfeet " )
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod : UNIT_DIED ( args )
local cid = self : GetCIDFromGUID ( args.destGUID )
if cid == 211291 then --sergeant-shaynemail
--timerBrutalSmashCD:Stop(args.destGUID)
timerLungingStrikeCD : Stop ( args.destGUID )
elseif cid == 211289 then --taener-duelmal
--timerEmberStormCD:Stop(args.destGUID)
timerCinderblastCD : Stop ( args.destGUID )
elseif cid == 211290 then --elaena-emberlanz
--timerHolyRadianceCD:Stop(args.destGUID)
timerDivineJudgementCD : Stop ( args.destGUID )
timerRepentanceCD : Stop ( args.destGUID )
elseif cid == 206694 then --Fervent Sharpshooter
timerCaltropsCD : Stop ( args.destGUID )
elseif cid == 206698 then --Fanatical Mage
timerFlamestrikeCD : Stop ( args.destGUID )
end
end