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.
187 lines
7.6 KiB
187 lines
7.6 KiB
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
|
|
|