Files
Andrew6810 39c0ed874e init
2022-10-21 06:50:13 -07:00

370 lines
10 KiB
Lua

local mod = DBM:NewMod("Sartura", "DBM-AQ40", 1)
local L = mod:GetLocalizedStrings()
mod:SetRevision(("$Revision: 132 $"):sub(12, -3))
mod:SetCreatureID(15516)
mod:RegisterCombat("combat")
mod:RegisterEvents(
"SPELL_CAST_START",
"SPELL_AURA_APPLIED",
"SPELL_AURA_APPLIED_DOSE",
"PLAYER_ALIVE"
)
function mod:PLAYER_ALIVE()
if UnitIsDeadOrGhost("PLAYER") and self.Options.ResetOnRelease then
--self:wipeAllTimers();
self:Stop();
end
end
-----MISC TIMERS-----
local berserkTimer = mod:NewBerserkTimer(360)
local kickAnnounce = mod:NewSpellAnnounce(1766, 4)
local meleeOut = mod:NewAnnounce("MELEE OUT - MELEE OUT", 4)
-----PREWARNINGS-----
local prewarnSTranslocation = mod:NewAnnounce("Song of Translocation Soon", 3, 1002345)
local prewarnDTranslocation = mod:NewAnnounce("Dance of Translocation Soon", 3, 1002323)
local prewarnSColossus = mod:NewAnnounce("Song of The Colossus Soon", 3, 1002346)
local prewarnDHaste = mod:NewAnnounce("Dance of Haste Soon", 3, 1002324)
local prewarnSOppression = mod:NewAnnounce("Song of Oppression Soon", 3, 1002347)
local prewarnDHunt = mod:NewAnnounce("Dance of The Hunt Soon", 3, 1002325)
local prewarnSDeath = mod:NewAnnounce("Song of Death Soon", 3, 1002348)
-----ALERTS-----
local warn1Stacks = mod:NewAnnounce("1 Stack of Suspended Assault", 3, 1002328)
local warn2Stacks = mod:NewAnnounce("2 Stacks of Suspended Assault", 3, 1002328)
local warn3Stacks = mod:NewAnnounce("3 Stacks of Suspended Assault", 3, 1002328)
local warn4Stacks = mod:NewAnnounce("4 Stacks of Suspended Assault", 3, 1002328)
local warnSTranslocation = mod:NewSpellAnnounce(1002345, 2)
local warnDTranslocation = mod:NewSpellAnnounce(1002323, 2)
local warnSColossus = mod:NewSpellAnnounce(1002346, 2)
local warnDHaste = mod:NewSpellAnnounce(1002324, 2)
local warnSOppression = mod:NewSpellAnnounce(1002347, 2)
local warnDHunt = mod:NewSpellAnnounce(1002325, 2)
local warnSDeath = mod:NewSpellAnnounce(1002348, 2)
-----TIMERS-----
local timerStacks = mod:NewTimer(60, "Time Remaining: Stacks", 1002328)
local timerSongRemaining = mod:NewTimer(15, "Time Remaining: Song", 1002345)
local timerDanceRemaining = mod:NewTimer(15, "Time Remaining: Dance", 1002323)
local timerSTranslocation = mod:NewCDTimer(30, 1002345)
local timerDTranslocation = mod:NewCDTimer(30, 1002323)
local timerSColossus = mod:NewCDTimer(30, 1002346)
local timerDHaste = mod:NewCDTimer(30, 1002324)
local timerSOppression = mod:NewCDTimer(30, 1002347)
local timerDHunt = mod:NewCDTimer(30, 1002325)
local timerSDeath = mod:NewCDTimer(30, 1002348)
-----SOUND-----
local castNumber
local dancetimerFix
local songtimerFix
local isFourStack
local latestAuraFix
-----PREWARNING FUNCTIONS-----
function mod:preSTranslocation()
prewarnSTranslocation:Show()
end
function mod:preDTranslocation()
prewarnDTranslocation:Show()
end
function mod:preSColossus()
prewarnSColossus:Show()
end
function mod:preDHaste()
prewarnDHaste:Show()
end
function mod:preSOppression()
prewarnSOppression:Show()
end
function mod:preDHunt()
prewarnDHunt:Show()
end
function mod:preSDeath()
prewarnSDeath:Show()
end
-----ALERT FUNCTIONS-----
function mod:alertSTranslocation()
warnSTranslocation:Show()
end
function mod:alertDTranslocation()
warnDTranslocation:Show()
end
function mod:alertSColossus()
warnSColossus:Show()
end
function mod:alertDHaste()
warnDHaste:Show()
end
function mod:alertSOppression()
warnSOppression:Show()
end
function mod:alertDHunt()
warnDHunt:Show()
end
function mod:alertSDeath()
warnSDeath:Show()
end
-----MISC FUNCTIONS-----
function mod:kickThisCunt()
kickAnnounce:Show()
end
function mod:runBitch()
meleeOut:Show()
end
-----ACTUAL FUNCTIONS-----
function mod:OnCombatStart(delay)
berserkTimer:Start()
self:ScheduleMethod(0, "initialSarturaCast")
castNumber = 0
dancetimerFix = 0
songtimerFix = 0
isFourStack = 0
latestAuraFix = 0
end
function mod:SPELL_AURA_APPLIED(args)
if args:IsSpellID(1002328) and (args.amount or 1) == 1 then
warn1Stacks:Show()
timerStacks:Start()
elseif args:IsSpellID(1002328) and (args.amount or 1) == 2 then
warn2Stacks:Show()
timerStacks:Start()
elseif args:IsSpellID(1002328) and (args.amount or 1) == 3 then
warn3Stacks:Show()
timerStacks:Start()
elseif args:IsSpellID(1002328) and (args.amount or 1) == 4 then
warn4Stacks:Show()
timerStacks:Start()
if isFourStack == 0 then
isFourStack = 1
self:ScheduleMethod(60, "fixFourStack")
end
elseif args:IsSpellID(1002323) then
if dancetimerFix == 0 then
timerDanceRemaining:Start()
dancetimerFix = 1
self:ScheduleMethod(20, "fixDanceTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002323
end
elseif args:IsSpellID(1002324) then
if dancetimerFix == 0 then
timerDanceRemaining:Start()
dancetimerFix = 1
self:ScheduleMethod(20, "fixDanceTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002324
end
elseif args:IsSpellID(1002325) then
if dancetimerFix == 0 then
timerDanceRemaining:Start()
dancetimerFix = 1
self:ScheduleMethod(20, "fixDanceTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002325
end
elseif args:IsSpellID(1002345) then
if songtimerFix == 0 then
timerSongRemaining:Start()
songtimerFix = 1
self:ScheduleMethod(20, "fixSongTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002345
end
elseif args:IsSpellID(1002346) then
if songtimerFix == 0 then
timerSongRemaining:Start()
songtimerFix = 1
self:ScheduleMethod(20, "fixSongTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002346
end
elseif args:IsSpellID(1002347) then
if songtimerFix == 0 then
timerSongRemaining:Start()
songtimerFix = 1
self:ScheduleMethod(20, "fixSongTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002347
end
elseif args:IsSpellID(1002348) then
if songtimerFix == 0 then
timerSongRemaining:Start()
songtimerFix = 1
self:ScheduleMethod(20, "fixSongTimer")
self:ScheduleMethod(1, "checkFourCast")
latestAuraFix = 1002348
end
end
end
function mod:fixDanceTimer()
dancetimerFix = 0
end
function mod:fixSongTimer()
songtimerFix = 0
end
function mod:fixFourStack()
isFourStack = 0
end
function mod:checkFourCast()
if isFourStack == 1 then
if latestAuraFix == 1002323 then
self:ScheduleMethod(0, "dotCast")
latestAuraFix = 0
elseif latestAuraFix == 1002324 then
self:ScheduleMethod(0, "dohCast")
latestAuraFix = 0
elseif latestAuraFix == 1002325 then
self:ScheduleMethod(0, "dothCast")
latestAuraFix = 0
elseif latestAuraFix == 1002345 then
self:ScheduleMethod(0, "sotCast")
latestAuraFix = 0
elseif latestAuraFix == 1002346 then
self:ScheduleMethod(0, "socCast")
latestAuraFix = 0
elseif latestAuraFix == 1002347 then
self:ScheduleMethod(0, "sooCast")
latestAuraFix = 0
elseif latestAuraFix == 1002348 then
self:ScheduleMethod(0, "sodCast")
latestAuraFix = 0
end
end
end
mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED
function mod:SPELL_CAST_START(args)
if args:IsSpellID(1002345) then --Song of Translocation
self:ScheduleMethod(0, "sotCast")
mod:alarmSound()
mod:kickThisCunt()
if castNumber == 0 then
castNumber = castNumber+1
elseif castNumber == 7 then
castNumber = castNumber+1
end
elseif args:IsSpellID(1002323) then --Dance of Translocation
self:ScheduleMethod(0, "dotCast")
mod:alarmSound()
mod:kickThisCunt()
if castNumber == 1 then
castNumber = castNumber+1
elseif castNumber == 8 then
castNumber = castNumber+1
end
elseif args:IsSpellID(1002346) then --Song of the Colossus
self:ScheduleMethod(0, "socCast")
if castNumber == 2 then
castNumber = castNumber+1
mod:alarmSound()
mod:kickThisCunt()
elseif castNumber == 9 then
castNumber = castNumber+1
mod:runBitch()
end
elseif args:IsSpellID(1002324) then --Dance of Haste
self:ScheduleMethod(0, "dohCast")
if castNumber == 3 then
castNumber = castNumber+1
elseif castNumber == 10 then
castNumber = castNumber+1
end
elseif args:IsSpellID(1002347) then --Song of Oppression
self:ScheduleMethod(0, "sooCast")
if castNumber == 4 then
castNumber = castNumber+1
mod:runBitch()
elseif castNumber == 11 then
castNumber = castNumber+1
mod:alarmSound()
mod:kickThisCunt()
end
elseif args:IsSpellID(1002325) then --Dance of the Hunt
self:ScheduleMethod(0, "dothCast")
if castNumber == 5 then
castNumber = castNumber+1
elseif castNumber == 12 then
castNumber = castNumber+1
mod:alarmSound()
mod:kickThisCunt()
end
elseif args:IsSpellID(1002348) then --Song of Death
self:ScheduleMethod(0, "sodCast")
mod:alarmSound()
mod:kickThisCunt()
if castNumber == 6 then
castNumber = castNumber+1
elseif castNumber == 13 then
castNumber = castNumber+1
mod:alarmSound()
mod:kickThisCunt()
end
end
end
function mod:initialSarturaCast()
local timer1 = 10
timerSTranslocation:Start(timer1)
self:ScheduleMethod(timer1-5, "preSTranslocation")
self:ScheduleMethod(timer1, "alertSTranslocation")
end
function mod:sodCast()
local timer1 = 50
timerSTranslocation:Start(timer1)
self:ScheduleMethod(timer1-5, "preSTranslocation")
self:ScheduleMethod(timer1, "alertSTranslocation")
end
function mod:sotCast()
local timer2 = 25
timerDTranslocation:Start(timer2)
self:ScheduleMethod(timer2-5, "preDTranslocation")
self:ScheduleMethod(timer2, "alertDTranslocation")
end
function mod:dotCast()
local timer3 = 25
timerSColossus:Start(timer3)
self:ScheduleMethod(timer3-5, "preSColossus")
self:ScheduleMethod(timer3, "alertSColossus")
end
function mod:socCast()
local timer4 = 25
timerDHaste:Start(timer4)
self:ScheduleMethod(timer4-5, "preDHaste")
self:ScheduleMethod(timer4, "alertDHaste")
end
function mod:dohCast()
local timer5 = 25
timerSOppression:Start(timer5)
self:ScheduleMethod(timer5-5, "preSOppression")
self:ScheduleMethod(timer5, "alertSOppression")
end
function mod:sooCast()
local timer6 = 25
timerDHunt:Start(timer6)
self:ScheduleMethod(timer6-5, "preDHunt")
self:ScheduleMethod(timer6, "alertDHunt")
end
function mod:dothCast()
local timer7 = 25
timerSDeath:Start(timer7)
self:ScheduleMethod(timer7-5, "preSDeath")
self:ScheduleMethod(timer7, "alertSDeath")
end