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