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.
90 lines
3.5 KiB
90 lines
3.5 KiB
local mod = DBM:NewMod(190, "DBM-Party-Cataclysm", 10, 77)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod.statTypes = "heroic,timewalker"
|
|
|
|
mod:SetRevision("20220920232426")
|
|
mod:SetCreatureID(24239)
|
|
mod:SetEncounterID(1193)
|
|
|
|
mod:RegisterCombat("combat")
|
|
mod:SetMinCombatTime(30) -- Prevent pre-maturely combat-end in cases where none targets the boss?
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 43451 43431 43548",
|
|
"SPELL_CAST_SUCCESS 43436",
|
|
"SPELL_AURA_APPLIED 43501 43383 43421",
|
|
"SPELL_PERIODIC_DAMAGE 43429 43440 61603",
|
|
"SPELL_PERIODIC_MISSED 43429 43440 61603"
|
|
)
|
|
|
|
local warnSiphon = mod:NewTargetNoFilterAnnounce(43501, 3)
|
|
local warnSpiritBolts = mod:NewSpellAnnounce(43383, 3)
|
|
local warnSpiritBoltsSoon = mod:NewSoonAnnounce(43383, 5, 2)
|
|
|
|
local specWarnFireNovaTotem = mod:NewSpecialWarningSwitch(43436, "Dps", nil, nil, 1, 2)
|
|
local specWarnHolyLight = mod:NewSpecialWarningInterrupt(43451, "HasInterrupt", nil, 2, 1, 2)
|
|
local specWarnFlashHeal = mod:NewSpecialWarningInterrupt(43431, "HasInterrupt", nil, 2, 1, 2)
|
|
local specWarnHealingWave = mod:NewSpecialWarningInterrupt(43548, "HasInterrupt", nil, 2, 1, 2)
|
|
local specWarnLifebloom = mod:NewSpecialWarningDispel(43421, "MagicDispeller", nil, nil, 1, 2)
|
|
local specWarnGTFO = mod:NewSpecialWarningGTFO(43440, nil, nil, nil, 1, 8)
|
|
|
|
local timerSiphon = mod:NewTimer(30, "TimerSiphon", 43501, nil, nil, 3)
|
|
local timerSpiritBolts = mod:NewBuffActiveTimer(5, 43383, nil, nil, nil, 2)
|
|
local timerSpiritBoltsNext = mod:NewNextTimer(36, 43383, nil, nil, nil, 2)
|
|
|
|
function mod:OnCombatStart(delay)
|
|
timerSpiritBoltsNext:Start(15-delay)
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args.spellId == 43451 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then
|
|
specWarnHolyLight:Show(args.sourceName)
|
|
specWarnHolyLight:Play("kickcast")
|
|
elseif args.spellId == 43431 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then
|
|
specWarnFlashHeal:Show(args.sourceName)
|
|
specWarnFlashHeal:Play("kickcast")
|
|
elseif args.spellId == 43548 and self:CheckInterruptFilter(args.sourceGUID, false, true, true) then
|
|
specWarnHealingWave:Show(args.sourceName)
|
|
specWarnHealingWave:Play("kickcast")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_CAST_SUCCESS(args)
|
|
if args.spellId == 43436 then
|
|
specWarnFireNovaTotem:Show()
|
|
specWarnFireNovaTotem:Play("attacktotem")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args.spellId == 43501 then
|
|
local uId = DBM:GetRaidUnitId(args.destName)
|
|
local class = select(2, UnitClass(uId)) or "unknown"
|
|
class = class:sub(0, 1):upper()..class:sub(2):lower()
|
|
warnSiphon:Show(args.destName)
|
|
timerSiphon:Start(args.spellName, class)
|
|
elseif args.spellId == 43383 then
|
|
warnSpiritBolts:Show()
|
|
warnSpiritBoltsSoon:Schedule(31)
|
|
timerSpiritBolts:Start()
|
|
timerSpiritBoltsNext:Start()
|
|
elseif args.spellId == 43421 then
|
|
specWarnLifebloom:Show(args.destName)
|
|
specWarnLifebloom:Play("dispelboss")
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_PERIODIC_DAMAGE(_, _, _, _, destGUID, _, _, _, spellId)
|
|
if spellId == 43429 and destGUID == UnitGUID("player") and self:AntiSpam(3) then
|
|
specWarnGTFO:Show()
|
|
specWarnGTFO:Play("watchfeet")
|
|
elseif spellId == 43440 and destGUID == UnitGUID("player") and self:AntiSpam(3) then
|
|
specWarnGTFO:Show()
|
|
specWarnGTFO:Play("watchfeet")
|
|
elseif spellId == 61603 and destGUID == UnitGUID("player") and self:AntiSpam(3) then
|
|
specWarnGTFO:Show()
|
|
specWarnGTFO:Play("watchfeet")
|
|
end
|
|
end
|
|
mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE
|
|
|