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.
84 lines
2.9 KiB
84 lines
2.9 KiB
local mod = DBM:NewMod("Akmahat", "DBM-Party-Cataclysm", 15)
|
|
local L = mod:GetLocalizedStrings()
|
|
|
|
mod.statTypes = "normal,timewalker"
|
|
|
|
mod:SetRevision("20220116042005")
|
|
mod:SetCreatureID(50063)
|
|
mod:SetModelID(34573)
|
|
mod:EnableWBEngageSync()--Enable syncing engage in outdoors
|
|
|
|
mod:RegisterCombat("combat")
|
|
|
|
mod:RegisterEventsInCombat(
|
|
"SPELL_CAST_START 93561 94946 94968",
|
|
"SPELL_AURA_APPLIED 93561 93578",
|
|
"SPELL_AURA_REMOVED 93561 93578"
|
|
)
|
|
|
|
local warnShockwave = mod:NewSpellAnnounce(94968, 2, nil, "Tank|Healer")
|
|
local warnSandsofTime = mod:NewTargetNoFilterAnnounce(93578, 2)
|
|
|
|
local specWarnFuryofSands = mod:NewSpecialWarningDodge(94946, nil, nil, nil, 2, 2)
|
|
local specWarnMantle = mod:NewSpecialWarningSpell(93561, nil, nil, nil, 1, 2)
|
|
|
|
local timerShockwaveCD = mod:NewCDTimer(16, 94968, nil, nil, nil, 3)--Every 16 seconds shockwave and fury alternate unless mantle, is cast, then it's 18 seconds cause of the cast delay of mantle affecting both CDs
|
|
local timerFuryofSandsCD = mod:NewCDTimer(16, 94946, nil, nil, nil, 3)
|
|
local timerSandsofTime = mod:NewBuffFadesTimer(15, 93578, nil, "Healer", nil, 5, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.MAGIC_ICON)
|
|
local timerSandsofTimeCD = mod:NewCDTimer(25, 93578, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON)
|
|
local timerMantleCD = mod:NewCDTimer(43, 93561, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON)--42.8-46.5 variations. a CD timer will suffice of 43
|
|
|
|
local sandsTargets = {}
|
|
mod.vb.sandsDebuffs = 0
|
|
|
|
local function showSandsgWarning()
|
|
warnSandsofTime:Show(table.concat(sandsTargets, "<, >"))
|
|
table.wipe(sandsTargets)
|
|
end
|
|
|
|
function mod:OnCombatStart(delay)
|
|
timerMantleCD:Start(23-delay)--Highly variable, i don't like it
|
|
timerShockwaveCD:Start(-delay)
|
|
timerFuryofSandsCD:Start(11-delay)
|
|
self.vb.sandsDebuffs = 0
|
|
table.wipe(sandsTargets)
|
|
end
|
|
|
|
function mod:SPELL_CAST_START(args)
|
|
if args.spellId == 93561 then
|
|
specWarnMantle:Show()
|
|
specWarnMantle:Play("attackshield")
|
|
timerMantleCD:Start()
|
|
elseif args.spellId == 94946 then
|
|
specWarnFuryofSands:Show()
|
|
specWarnFuryofSands:Play("watchstep")
|
|
timerFuryofSandsCD:Start()
|
|
elseif args.spellId == 94968 then
|
|
warnShockwave:Show()
|
|
timerShockwaveCD:Start()
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_APPLIED(args)
|
|
if args.spellId == 93561 then
|
|
--Do infoframe things
|
|
elseif args.spellId == 93578 then
|
|
sandsTargets[#sandsTargets + 1] = args.destName
|
|
self.vb.sandsDebuffs = self.vb.sandsDebuffs + 1
|
|
timerSandsofTime:Start()
|
|
timerSandsofTimeCD:Start()
|
|
self:Unschedule(showSandsgWarning)
|
|
self:Schedule(0.3, showSandsgWarning)
|
|
end
|
|
end
|
|
|
|
function mod:SPELL_AURA_REMOVED(args)
|
|
if args.spellId == 93561 then
|
|
--End infoframe things
|
|
elseif args.spellId == 93578 then
|
|
self.vb.sandsDebuffs = self.vb.sandsDebuffs - 1
|
|
if self.vb.sandsDebuffs == 0 then
|
|
timerSandsofTime:Cancel()
|
|
end
|
|
end
|
|
end
|
|
|