--=========================================MENU============================================
--The SMS reborn menu, activated by touching the Mystic Emerald at the player spawn points.
--You can also find the Saving and Loading features here.
--=========================================================================================
local T10,T20,T30,T40,T50,T60,T70,T80,T90 =
65536,131072,196608,262144,327680,393216,458752,524288,589824

local vLe,vRi,vTo,vBo = V_SNAPTOLEFT,V_SNAPTORIGHT,V_SNAPTOTOP,V_SNAPTOBOTTOM

--Admin options
local function SMSmenupage3(p,s)
	if SMS_Admin(p) == 0
	or (p.cmd.buttons & BT_SPIN) and not p.ssmenuiuse
		S_StartSound(s, sfx_smsmmp, p)
		p.sms_hudtransf = 7
		p.smshudmenuclick = 2
		p.ssmenuisub = 1
		p.ssmenuisubpage = 1
		p.ssmenui1 = 2
	elseif (p.cmd.forwardmove > 25) and not p.ssmenuiup and not (p.ssmenuisubpage < 1)
		if (p.ssmenuisubpage == 1)
			p.ssmenuisubpage = 10
		else
			p.ssmenuisubpage = $-1
		end
		S_StartSound(s, sfx_smsmmi, p)
		p.ssmenuidrop = 0
	elseif (p.cmd.forwardmove < -25) and not p.ssmenuidown and not (p.ssmenuisubpage > 10)
		if (p.ssmenuisubpage == 10)
			p.ssmenuisubpage = 1
		else
			p.ssmenuisubpage = $+1
		end
		S_StartSound(s, sfx_smsmmi, p)
		p.ssmenuidrop = 0					
	elseif (p.cmd.sidemove < -25) and not p.ssmenuileft and (p.ssmenuidrop or p.ssmenuisubpage == 8)
		if (p.ssmenuisubpage == 8) //HMS limit select
			if (p.hmsmlimit > 1)
				S_StartSound(s, sfx_smsmmi, p)
				p.hmsmlimit = $-1
				for ns in players.iterate
					ns.hmsmlimit = p.hmsmlimit
				end
			end
		else
			p.ssmenuidrop = $-1
			S_StartSound(s, sfx_smsmmf, p)
		end
	elseif (p.cmd.sidemove > 25) and not p.ssmenuiright
		if (p.ssmenuisubpage == 8) //HMS limit select
			if not (p.hmsmlimit > 31)
				S_StartSound(s, sfx_smsmmi, p)
				p.hmsmlimit = $+1
				for ns in players.iterate
				ns.hmsmlimit = p.hmsmlimit
				end
			end
		elseif not (p.ssmenuisubpage == 1 or p.ssmenuisubpage == 9 or p.ssmenuisubpage == 6 or p.ssmenuisubpage == 10)
			if (p.ssmenuidrop < 2)
				p.ssmenuidrop = $+1
				S_StartSound(s, sfx_smsmmf, p)
			end
		elseif not p.ssmenuidrop
		S_StartSound(s, sfx_smsmmf, p)
		p.ssmenuidrop = $+1
		end
	elseif (p.cmd.buttons & BT_JUMP) and not p.ssmenuijump
		if not (p.ssmenuisubpage == 8)
		S_StartSound(nil, sfx_menu1, p)
		P_FlashPal(p, PAL_MIXUP, 2)
		end
		if p.ssmenuisubpage == 1
			if not p.ssmenuidrop
				print("\x83"+"Players can now freely play as SMS through transforming or as seperate character.")
				for ns in players.iterate
					ns.smstransformonly = false
				end
			elseif p.ssmenuidrop == 1
				print("\x87"+"Super Mystic Sonic is now only available as transformation!")
				for ns in players.iterate
					ns.smstransformonly = true
				end
				if (s.skin == "sms") and not p.sms_transformstate
					A_SMSTOSONIC(s, nil, true, true)
				end
			end
		elseif p.ssmenuisubpage == 2
			if not p.ssmenuidrop
				print("\x83"+"Players can now freely transform into Hyper Mystic Sonic.")
				for ns in players.iterate
					ns.hmstransformdisable = 0
				end
			elseif p.ssmenuidrop == 1
				print("\x84"+"Players now need the 7 Chaos Emeralds to access Hyper Mystic Sonic.")
				for ns in players.iterate
					ns.hmstransformdisable = 2
				end
			elseif p.ssmenuidrop == 2
				print("\x85"+"Hyper Mystic Sonic is now disabled.")
				for ns in players.iterate
					ns.hmstransformdisable = 1
					if ns.hypermysticsonic and ns.mo
						A_TOGOBACKTOTHEWAYYOUWERE(ns.mo, true) //Disengage Hyper Mystic Sonic
					end
				end
			end
		elseif p.ssmenuisubpage == 3
			if not p.ssmenuidrop
				print("\x83"+"SMS can now share powers with others by holding Custom 3.")
					for ns in players.iterate
					ns.powersharerestrict = 0
					end
			elseif p.ssmenuidrop == 1
					print("\x84"+"Players now need the 7 Chaos Emeralds to use SMS' powershare.")
					for ns in players.iterate
					ns.powersharerestrict = 1
					end
			elseif p.ssmenuidrop == 2
					print("\x85"+"SMS' powershare is now disabled.")
					for ns in players.iterate
					ns.powersharerestrict = 2
					end
			end
		elseif p.ssmenuisubpage == 4
			if not p.ssmenuidrop
				print("\x83"+"SMSreborn graphics are set to full. Auto-graphics are turned off.")
					for ns in players.iterate
						ns.smsautographix = false
						ns.smsgraphix = 0
					end
			elseif p.ssmenuidrop == 1
					print("\x87"+"SMSreborn graphics are set to medium. Auto-graphics are turned off.")
					for ns in players.iterate
						ns.smsautographix = false
						ns.smsgraphix  = 1
					end
			elseif p.ssmenuidrop == 2
					print("\x85"+"SMSreborn graphics are set to low. Auto-graphics are turned off.")
					for ns in players.iterate
						ns.smsautographix = false
						ns.smsgraphix  = 2
					end
			elseif p.ssmenuidrop == 3
				print("\x84"+"Auto-graphics switched on. Graphics auto-adjust whenever someone joins based on playercount.")
				for ns in players.iterate
					ns.smsautographix = true
				end
			end
		elseif p.ssmenuisubpage == 5
			if not p.ssmenuidrop
				print("\x83"+"Everyone can participate in race, including the golden blur!")
				for ns in players.iterate
					ns.smsnoracegame = 0
				end
			elseif p.ssmenuidrop == 1
				print("\x82"+"Let's step up the pace! Now EVERYONE can transform at the racing startline!")
				for ns in players.iterate
				ns.smsnoracegame = 2
				end
			elseif p.ssmenuidrop == 2
				print("\x85"+"Super Mystic hedgehogs are now banned from race!")
				for ns in players.iterate
				ns.smsnoracegame = 1
				end
			end
		elseif p.ssmenuisubpage == 6
			if not p.ssmenuidrop
				print("\x83"+"Everyone can participate in matches, including the golden blur!")
				for ns in players.iterate
				ns.smsnomatchgame = 0
				end
			else
				print("\x85"+"SMS is banned from Match and CTF-type modes!")
				for ns in players.iterate
				ns.smsnomatchgame = 1
				end
			end
		elseif p.ssmenuisubpage == 7
			if not p.ssmenuidrop
				print("\x87"+"Players can now select SMS to become Sonic with the Super Mystic ability in Battle modes!")
				for ns in players.iterate
				ns.smsnobmgame = 2
				end
			elseif p.ssmenuidrop == 1
				print("\x83"+"SMS can freely participate in Battle Mod matches! ...seems broken. Good luck!")
				for ns in players.iterate
				ns.smsnobmgame = 0
				end
			elseif p.ssmenuidrop == 2
				print("\x85"+"SMS is banned from Battle Mod!")
				for ns in players.iterate
				ns.smsnobmgame = 1
				end
			end
		elseif p.ssmenuisubpage == 9
			if not p.ssmenuidrop
				print("\x85"+"The Mystic Emerald now spawns at player spawnpoints and checkpoints! Access the SMSreborn menu here!")
				for ns in players.iterate
					ns.smsnomsspawn = 0
				end
			else
				print("\x85"+"The Mystic Emerald no longer spawns! Use the "+"\x82"+"SMSmenu"+"\x85"+" console command to get into the menu!")
				for ns in players.iterate
					ns.smsnomsspawn = 1
				end
			end
		elseif p.ssmenuisubpage == 10
			if not p.ssmenuidrop
				print("\x83"+"Players can now select SMS' special glowing colors from the SMSreborn menu!")
				for ns in players.iterate
				ns.nosmscolorspls = 0
				end
			else
				print("\x85"+"SMS players are now restricted to SRB2's default non-pulsing colors.")
				for ns in players.iterate
				ns.nosmscolorspls = 1
				end
			end
		end
	end
	if not p.ssmenuidrop
		p.smsbcolor = SKINCOLOR_PERIDOT
	elseif p.ssmenuidrop == 1
		if p.ssmenuisubpage == 1
			p.smsbcolor = SKINCOLOR_ORANGE
		elseif (p.ssmenuisubpage == 9) or (p.ssmenuisubpage == 6)
			p.smsbcolor = SKINCOLOR_RED
		else
			p.smsbcolor = SKINCOLOR_CORNFLOWER
		end
	else
		p.smsbcolor = SKINCOLOR_RED
	end
end

--Personal SMSreborn options
local function SMSmenupage2(p,s)
	local MTILT = 25 --How far to tilt the stick before it registers as an input.
	if (p.cmd.forwardmove > MTILT) and not p.ssmenuiup and not (p.ssmenuisubpage < 1) --Scroll up
	
		p.sms_hudflipc = 0
		if (p.ssmenuisubpage == 1)
			p.ssmenuisubpage = 12
		else
			p.ssmenuisubpage = $-1
			if p.ssmenuisubpage == 1
				if p.smslastcolormenudrop != nil
					p.ssmenuidrop = p.smslastcolormenudrop
				else
					p.ssmenuidrop = 1
					p.smslastcolormenudrop = 1
				end
			end
		end
		S_StartSound(s, sfx_smsmmi, p)
		if (p.ssmenuisubpage != 1)
			p.ssmenuidrop = 0
		end
		
	elseif (p.cmd.forwardmove < -MTILT) and not p.ssmenuidown and not (p.ssmenuisubpage > 12) --Scroll Down!
	
		p.sms_hudflipc = 0
		if (p.ssmenuisubpage == 12)
			p.ssmenuisubpage = 1
			if p.smslastcolormenudrop != nil
				p.ssmenuidrop = p.smslastcolormenudrop
			else
				p.ssmenuidrop = 1
				p.smslastcolormenudrop = 1
			end
		else
			p.ssmenuisubpage = $+1
		end
		S_StartSound(s, sfx_smsmmi, p)
		if (p.ssmenuisubpage != 1)
			p.ssmenuidrop = 0
		end
		
	elseif (p.cmd.buttons & BT_SPIN) and not p.ssmenuiuse
		S_StartSound(s, sfx_smsmmp, p)
		p.sms_hudtransf = 7
		p.smshudmenuclick = 2
		p.ssmenuisub = 1
		p.ssmenuisubpage = 1
		p.ssmenui1 = 1
	
	elseif (p.cmd.sidemove < -MTILT) and not p.ssmenuileft --Scroll left!
	
		if not p.ssmenuidrop
			p.ssmenuidrop = 33 --Loop to the end.
			p.smslastcolormenudrop = p.ssmenuidrop
			S_StartSound(s, sfx_smsmmi, p)
		elseif p.ssmenuidrop
			p.ssmenuidrop = max($-1,0)
			S_StartSound(s, sfx_smsmmi, p)
		end
		if p.ssmenuisubpage == 1
			p.smslastcolormenudrop = p.ssmenuidrop
		end			
	elseif (p.cmd.sidemove > MTILT) and not p.ssmenuiright --Scroll Right
	
		if p.ssmenuisubpage == 1 //Scroll SMS colors to the right!
			if (p.ssmenuidrop < 33)
				p.ssmenuidrop = min($+1, 33)
				p.smslastcolormenudrop = p.ssmenuidrop
				S_StartSound(s, sfx_smsmmi, p)
			else
				p.ssmenuidrop = 0 --Loop!
				p.smslastcolormenudrop = p.ssmenuidrop
				S_StartSound(s, sfx_smsmmi, p) 
			end
		end
		
	elseif (p.cmd.buttons & BT_JUMP) and not p.ssmenuijump
	
	//From here on, start confirming stuff.
		if (p.ssmenuisubpage > 2)
			S_StartSound(s, sfx_smsmmf, p)	
			p.sms_hudflipc = 4
		end
		if p.ssmenuisubpage == 1
		 if G_GametypeHasTeams()
			 S_StartSound(s, sfx_adderr, p)
		 	CONS_Printf(p, "Not in team gametypes.")
		 else
			S_StartSound(s, sfx_menu1, p)
			if (s.skin != "sms")
				CONS_Printf(p, "Be "+"\x82"+"SMS"+"\x80 before selecting these to see previews!")
			end						
			if p.ssmenuidrop != nil --Select a color!
				A_setSMSspecialcolors(p, p.ssmenuidrop)
			end
		 end
		elseif p.ssmenuisubpage == 2
			if s and (s.skin != "sms")
				P_FlashPal(p, PAL_NUKE, 3)
				S_StartSound(s, sfx_adderr, p)
				CONS_Printf(p, "These are for SMS.")							
			elseif p.lightdashenable
				P_FlashPal(p, PAL_NUKE, 3)
				S_StartSound(s, sfx_adderr, p)
				CONS_Printf(p, "You already have these!")
			elseif (p.rings < 25)
				P_FlashPal(p, PAL_NUKE, 3)
				S_StartSound(s, sfx_notadd, p)
				CONS_Printf(p, "You need at least 25 rings!")
			elseif G_GametypeHasSpectators() or s.battlemodsms
				P_FlashPal(p, PAL_NUKE, 3)
				S_StartSound(s, sfx_adderr, p)
				CONS_Printf(p, "Not for this gamemode!")
			elseif (p.lddiscount < 3)
				P_FlashPal(p, PAL_MIXUP, 3) 
				P_GivePlayerRings(p, -25)
				p.lightdashenable = 1
				S_StartSound(nil, sfx_nxitem)
				print(p.name+" just bought lightdash shoes!")
				CONS_Printf(p, "\x82You unlocked the lightdash!(Custom1) You can also charge the lightspeed attack!")
			elseif (p.lddiscount > 2) //Discount! Lucky you!
			P_FlashPal(p, PAL_MIXUP, 5) 
				P_GivePlayerRings(p, -15)
				p.lightdashenable = 1
				S_StartSound(nil, sfx_nxdone)
				print(p.name+" just got a great deal on some lightdash sneakers!")
				CONS_Printf(p, "\x82You unlocked the lightdash!(Custom1) You can also charge the lightspeed attack!")
			end
		elseif p.ssmenuisubpage == 3
			if not p.sms_instantairboost
		//	CONS_Printf(p, "\x82"+"Analog Homing Thok is on! Homing thoks go in the direction of the movement keys!")
			p.sms_instantairboost = true
			else
		//	CONS_Printf(p, "\x85"+"Analog Homing Thok is off! Homing thoks go in the direction of the camera!(unless you use simple controls)")
			p.sms_instantairboost = nil
			end
		elseif p.ssmenuisubpage == 4
			if not p.sms_oldhoming
		//	CONS_Printf(p, "\x82"+"Analog FootSweeps are on! Your kicks rush in the direction of the movement keys!")
			p.sms_oldhoming = true
			else
		//	CONS_Printf(p, "\x85"+"Analog Footsweeps are off! Your kicks rush in the camera's direction! (unless you use simple controls)")
			p.sms_oldhoming = nil
			end
		elseif p.ssmenuisubpage == 5
			if p.nosmsquakespls
		//	CONS_Printf(p, "\x83"+"All of the SMS quake effects generated are now restored!")
			p.nosmsquakespls = nil
			else
		//	CONS_Printf(p, "\x89"+"Most of the SMS quake effects generated are now turned off.")
			p.nosmsquakespls = true
			end
		elseif p.ssmenuisubpage == 6
			if not p.smseasyhaymaker
		//	CONS_Printf(p, "\x89"+"Easy airborne haymakers are now active. Holding CUSTOM1 and back is no longer necessary!")
			p.smseasyhaymaker = true
			else
		//	CONS_Printf(p, "\x83"+"Airborne haymakers now use the full button command!")
			p.smseasyhaymaker = nil
			end
		elseif p.ssmenuisubpage == 7
			if not p.smsdontgrabme
		//	CONS_Printf(p, "\x89"+"You will now never get picked up by SMS.")
			p.smsdontgrabme = 1
			elseif p.smsdontgrabme == 1
		//	CONS_Printf(p, "\x84"+"You now live to be thrown by SMS.")
			p.smsdontgrabme = 2
			elseif p.smsdontgrabme == 2
		//	CONS_Printf(p, "\x83"+"You can now get picked up by SMS after not moving for 3 seconds.")
			p.smsdontgrabme = 0
			end
		elseif p.ssmenuisubpage == 8
			if not p.smstutorial
		//	CONS_Printf(p, "\x82SMS control-aid is now active.")
			p.smstutorial = true
			else
		//	CONS_Printf(p, "\x83The training wheels are off!")
			p.smstutorial = false
			end
		elseif p.ssmenuisubpage == 9
			if not p.smsblastboost
		//	CONS_Printf(p, "\x82"+"SMS now emulates the 1.09.4 SMS gameplay of old!")
			p.smsblastboost = true
			else
		//	CONS_Printf(p, "\x83"+"The SMS reborn abilities return!")
			p.smsblastboost = nil
			end
		elseif p.ssmenuisubpage == 10
			if not p.nohmstheme
		//	CONS_Printf(p, "\x85"+"The music will no longer change if you transform into HMS")
			p.nohmstheme = true
			else
		//	CONS_Printf(p, "\x83"+"The Hyper Mystic theme now plays upon transforming again!")
			p.nohmstheme = nil
			end
		elseif p.ssmenuisubpage == 11
			if not p.autoc1mom
		//	CONS_Printf(p, "\x83"+"Automatic momentum is now on")
			p.autoc1mom = 1
			elseif p.autoc1mom == 1
		//	CONS_Printf(p, "\x83"+"Momentum from keys is now on")
			p.autoc1mom = 2
			else
		//	CONS_Printf(p, "\x85"+"Automatic momentum is now off")
			p.autoc1mom = 0
			end
		elseif p.ssmenuisubpage == 12 //Because I'm too cool for tables.
			SMS_SaveGame(s, p)
			S_StartSound(s, sfx_smsmmp, p)
		end
	end
end

--Main menu.
local function SMSmenupage1(p,s)
	if (p.cmd.buttons & BT_SPIN) and not p.ssmenuiuse --Exit menu!
		if p.sms_intoship
			SMS_SaveGame(p)
		end
	
		--Keep these below the menu's Lua or it'll break.		
		SMS_RemoveMenuValues(p)
		
		p.smsmemeter = 0
		p.sms_intoship = 0
		p.spinhold = 99
		s.hmsshieldconsume = 35
		p.cmd.buttons = $|BT_USE
		p.accelstart = skins[s.skin].accelstart
		p.pflags = $|PF_USEDOWN & ~(PF_INVIS|PF_GODMODE|PF_FORCESTRAFE|PF_STARTDASH|PF_SPINNING|PF_JUMPED|PF_STASIS|PF_JUMPSTASIS|PF_THOKKED)
		s.flags2 = $|MF2_DONTDRAW & ~MF2_SHADOW
		p.powers[pw_flashing] = 40
		S_StartSound(s, sfx_menu1, p)
		P_RestoreMusic(p)
		p.powers[pw_nocontrol] = 0
		
	elseif p.ssmenui1 == 1  //SMS Reborn
	
		if (abs(p.cmd.forwardmove) > 25) and not (p.ssmenuiup or p.ssmenuidown)
			p.ssmenui1 = 2
			S_StartSound(s, sfx_smsmmi, p)
		elseif (p.cmd.buttons & BT_JUMP) and not p.ssmenuijump
			p.smshudmenuclick = 2
			p.sms_hudtransf = 7
			S_StartSound(s, sfx_smsmmp, p)
			p.ssmenuisub = 2
			p.ssmenuisubpage = 1
			p.ssmenui1 = 2
			if p.smslastcolormenudrop != nil
				p.ssmenuidrop = p.smslastcolormenudrop
			else
				p.ssmenuidrop = 1
				p.smslastcolormenudrop = 1
			end
		end
		
	elseif p.ssmenui1 == 2  //Admin Options
	
		if (abs(p.cmd.forwardmove) > 25) and not (p.ssmenuiup or p.ssmenuidown)
			p.ssmenui1 = 1
			S_StartSound(s, sfx_smsmmi, p)
		elseif (p.cmd.buttons & BT_JUMP) and not p.ssmenuijump
			if SMS_Admin(p) == 0
				p.smshudmenuclick = 2
				S_StartSound(s, sfx_notadd, p)
				CONS_Printf(p, "\x85"+"Only admins and server hosts may access this.")
			else
				p.smshudmenuclick = 2
				S_StartSound(s, sfx_smsmmp)
				p.sms_hudtransf = 7
				p.ssmenuisub = 3
				p.ssmenuisubpage = 1
				p.ssmenui1 = 1
				p.ssmenuidrop = 0
			end
		end
	end
end

local function SMSmenuButtons(p)
	//Keep these below the menu's Lua or it'll break.		
	p.ssmenuileft = (p.cmd.sidemove < -25) --The value automatically turns into true or false when put between parenthesises. 
	p.ssmenuiright = (p.cmd.sidemove > 25)
	p.ssmenuijump = (p.cmd.buttons & BT_JUMP)
	p.ssmenuiup = (p.cmd.forwardmove > 25)
	p.ssmenuidown = (p.cmd.forwardmove < -25)
	p.ssmenuiuse = (p.cmd.buttons & BT_SPIN)
end

//Actual menu navigation thinker. Visuals are in HUD hook further below.
local function SMSmenuthink(p)	if not (p.valid and p.mo) return end --
	local s = p.mo

	--Turn the stars into a simple table.
	if p.starSMS == nil
		p.starSMS = {}
	end
	for i = 1,9
		local STAR = p.starSMS[i]
		if STAR == nil
			p.starSMS[i] = {x = P_RandomRange(38, 360), y = P_RandomRange(220, 240)}
		else
			local RESET = (STAR.y<-20) --Reached the limit or continue scrolling??
			if RESET
				STAR.x = P_RandomRange(-5, 325)
			end
			if i==1		STAR.y = (RESET) and P_RandomRange(234, 270)<<16 or $-FRACUNIT 
			elseif i==2 STAR.y = (RESET) and P_RandomRange(221, 269)<<16 or $-2<<16 
			elseif i==3	STAR.y = (RESET) and P_RandomRange(240, 280)<<16 or $-3<<16 
			elseif i==4 STAR.y = (RESET) and P_RandomRange(223, 290)<<16 or $-2<<16-15355 
			elseif i==5 STAR.y = (RESET) and P_RandomRange(210, 240)<<16 or $-2<<16-27000
			elseif i==6	STAR.y = (RESET) and P_RandomRange(229, 260)<<16 or $-2<<16-5500
			elseif i==7 STAR.y = (RESET) and P_RandomRange(225, 285)<<16 or $-2<<16-43000
			elseif i==8 STAR.y = (RESET) and P_RandomRange(238, 273)<<16 or $-FRACUNIT-43000
			elseif i==9 STAR.y = (RESET) and P_RandomRange(230, 240)<<16 or $-FRACUNIT-30000
			end	
		end
	end
	
	if p.smstext2y == nil or (p.smstext2y > 258<<16)
		p.smstext2y = 0 
	else
		p.smstext2y = $+2<<16
	end
	if p.smstext1x == nil or (p.smstext1x >= 350<<16)
		p.smstext1x = 0 
	else
		p.smstext1x = $+2<<16
	end
	if (leveltime % 16 == 0)
		P_SpawnMobj(s.x, s.y, s.z-8<<16, MT_IVSP)
	end
	p.sms_flamedelay = 10
	p.accelstart = 0
	p.powers[pw_carry] = 0
	s.momx,s.momy,s.momz = 0,0,0
	
	--You join the losing team if you go into the menu, don't abuse it!
	if (gametype == GT_TAG) or (gametype == GT_HIDEANDSEEK)
		p.pflags = $|PF_TAGIT
	end
	if p.sms_intoship == 35
		if s
			if p.powers[pw_underwater]
				s.eshipwater = p.powers[pw_underwater]
			end
			if p.powers[pw_spacetime]
				s.eshipspace = p.powers[pw_spacetime]
			end
			if p.mysticsuper		
				A_ENDMYSTICSUPER(s) //Disengage Mystic Super
			end
			if p.hypermysticsonic
				A_TOGOBACKTOTHEWAYYOUWERE(s, true) //Disengage Hyper Mystic Sonic
			end
			s.state = S_PLAY_STND
		end
		if p.ssmenuileft == nil
			SMSmenuButtons(p)
		end
		p.sms_boostlevel = 0
		p.powers[pw_nocontrol] = 2
		p.dashspeed = 0
		p.ssmenuiuse = true
		p.pflags = $|PF_INVIS|PF_GODMODE|PF_FORCESTRAFE|PF_USEDOWN|PF_JUMPDOWN|PF_JUMPED|PF_THOKKED|PF_JUMPSTASIS & ~(PF_SPINNING|PF_STARTDASH)
		p.sms_intoship = 33 --Switch to being active.
		p.smsmenuanim,p.smsmenuanim2 = 160,160
		p.hsh1 = 0
		p.hssh2 = 155355
		p.hssh = 1		
		p.ssmenui1,p.ssmenuisub,p.ssmenuisubpage = 1,1,1
		p.ssmenuidrop = 0
		S_ChangeMusic("_INTER", true, p)
		S_StopSound(s)
		
		if G_GametypeHasSpectators()
		    P_PlayerEmeraldBurst(p)
		    P_PlayerFlagBurst(p)
		    P_PlayerWeaponAmmoBurst(p)
		    S_StartSound(nil, sfx_antiri, p)
		    p.score = 0
		    CONS_Printf(p, "\x85Your score resets to 0 when you use the menu in Match.")
		end
	end
	if p.sms_intoship == 33 --33 means we're in the menu!
		if p.powers[pw_underwater] and s
			if p.powers[pw_underwater] < 400
				p.powers[pw_underwater] = 401
				s.eshipwater = 401
			elseif s.eshipwater
				p.powers[pw_underwater] = s.eshipwater
			end
		end
		if p.powers[pw_spacetime] and s
			if p.powers[pw_spacetime] < 400
				p.powers[pw_spacetime] = 401
				s.eshipspace = 401
			elseif s.eshipspace
				p.powers[pw_spacetime] = s.eshipspace		
			end
		end
		if leveltime //Fixes issue switching levels mid-menu
			S_ChangeMusic("_INTER", true, p)
		end
		if s.actioncooldown != nil
			s.actioncooldown = max($,50)
		end
		p.sms_flamedelay = 10
		p.weapondelay = 11
		p.pflags = $|PF_INVIS|PF_GODMODE|PF_FORCESTRAFE|PF_USEDOWN|PF_JUMPDOWN|PF_JUMPED|PF_THOKKED|PF_JUMPSTASIS & ~(PF_SPINNING|PF_STARTDASH)
		s.iasmsp = 1 //Don't get picked up right now
		s.flags2 = $|MF2_SHADOW
		p.powers[pw_nocontrol] = 0 	
		
		
		//  ___  ___   _ __  | |_  _ __  ___  | | ___ 
		// / __|/ _ \ | '_ \ | __|| '__|/ _ \ | |/ __|
		//| (__| (_) || | | || |_ | |  | (_) || |\__ \
		// \___|\___/ |_| |_| \__||_|   \___/ |_||___/
		//
		if p.ssmenuileft != nil
			--Set the controls in the respective menu pages!
			if p.ssmenuisub == 1
				SMSmenupage1(p,s) --Main Menu.(Select between Admin or SMSreborn options)	
			elseif p.ssmenuisub == 2 
				SMSmenupage2(p,s) --Personal Options page!				
			elseif p.ssmenuisub == 3
				SMSmenupage3(p,s) --Admin Options page!
			end	
		end	
		SMSmenuButtons(p) --Keep this below the menu's Lua or it'll break.	
	end
end


//Hooray, the first PlayerThink hook created for SMSreborn!
addHook("PlayerThink", function(p) if not p.mo return end //And I STILL only need it when there's a player mobj... :P
	local s = p.mo
	if s.smsmsdelay
		if abs(p.cmd.forwardmove) > 25 
		or abs(p.cmd.sidemove) > 25 
		or (p.cmd.buttons & BT_JUMP)
			if s.smsmsdelayp
				s.smsmsdelayp = nil
			else
				s.smsmsdelay = nil
			end
		end
	end
	if p.sms_shipready
		p.sms_shipready = 0
	end

	if p.smshudappearanim or p.sms_intoship --Either of these? Run those animation numbers!
		if p.sms_hudflipc
			p.sms_hudflipc = max($-1,0)
		end
		if p.sms_hudflipc2
			p.sms_hudflipc2 = max($-1,0)
		end
		if p.sms_hudtransf
			p.sms_hudtransf = max($-1,0)
		end
	  
		if p.ssmenuisub != nil
			if p.smsmenuanim == nil
				p.smsmenuanim = 160
			else
				if p.ssmenuisub == 2
					p.smsmenuanim = min($+50, 480)
				elseif (p.smsmenuanim != 160)
					p.smsmenuanim = max($-50,160)
				end
			end
			if p.smsmenuanim2 == nil
				p.smsmenuanim2 = 0
			elseif p.ssmenuisub == 3
				if (p.smsmenuanim2 < 160)
					p.smsmenuanim2 = $+30
				elseif (p.smsmenuanim2 != 160)
					p.smsmenuanim2 = 160
				end
			elseif (p.smsmenuanim2 != 0)
				p.smsmenuanim2 = max($-30,0)
			end
			if p.hssh == nil
				p.hssh = 1
			elseif p.ssmenuisub != 1
				if (p.hssh != 65536)
					p.hssh = min(65536, $+10000)
				end
			elseif (p.hssh != 1)
				p.hssh = max(1, $-10000)
			end
			if p.hssh2 == nil
				p.hssh2 = 155355
			elseif p.hssh2 != 65536
				p.hssh2 = min(65536, $-5000)
			end
			if p.hsh1 == nil
				p.hsh1 = 0
			elseif p.ssmenuisub != 1
				if (p.hsh1 < 200)
					if (p.hsh1 <= 185)
						p.hsh1 = $+15
					elseif (p.hsh1 <= 190)
						p.hsh1 = $+10
					else
						p.hsh1 = min($+1,200)
					end
				end
			elseif (p.hsh1 > 0)
				if (p.hsh1 >= 30)
					p.hsh1 = $-30
				elseif (p.hsh1 >= 20)
					p.hsh1 = $-20
				elseif (p.hsh1 >= 10)
					p.hsh1 = $-10
				else
					p.hsh1 = max($-1,0)
				end
			end
		end
		if p.smshudappearanim == nil
			p.smshudappearanim = 0
		end
		
		p.menutpos = (not p.menutpos or (p.menutpos > 16)) and 1 or $+1
		
		if p.sms_intoship and (p.smshudappearanim < 52)
			if p.smshudappearanim < 49
				p.smshudappearanim = $+4
			else
				p.smshudappearanim = $+1
			end
		elseif p.smshudappearanim and not p.sms_intoship
			if (p.smshudappearanim > 3)
				p.smshudappearanim = $-3
			else
				p.smshudappearanim = $-1
			end
		end		
		if (leveltime % 5 == 0) or p.smshudtrans1n == nil
			if p.smshudtrans1n == nil or (p.smshudtrans1n > 2)
				if not s.huddiego
					s.huddiego = true
				else
					p.smshudtrans1n = 0
					s.huddiego = false
				end
			else
				p.smshudtrans1n = $+1
			end
			if not p.smshudtrans1n
				p.smshudtrans1 = T40
			elseif p.smshudtrans1n == 1
				p.smshudtrans1 = T50
			elseif p.smshudtrans1n == 2
				p.smshudtrans1 = T40
			elseif p.smshudtrans1n >= 3
				p.smshudtrans1 = T30
			end			
		end
		
		if (leveltime % 6 == 0)	or p.smshudtrans2n == nil or p.smshudtrans3n == nil
			if p.smshudtrans2n == nil or (p.smshudtrans2n > 2)
				if not s.huddiego2
					s.huddiego2 = true
				else
					p.smshudtrans2n = 0
					s.huddiego2 = false
				end
			else
				p.smshudtrans2n = $+1
			end
			if not p.smshudtrans2n
				p.smshudtrans2 = T60
			elseif p.smshudtrans2n == 1
				p.smshudtrans2 = T70
			elseif p.smshudtrans2n == 2
				p.smshudtrans2 = T60
			elseif p.smshudtrans2n >= 3
				p.smshudtrans2 = T50
			end	
			
			if p.smshudtrans3n == nil or (p.smshudtrans3n > 2)
				if not s.huddiego3
					s.huddiego3 = true
				else
					p.smshudtrans3n = 0
					s.huddiego3 = false
				end
			else
				p.smshudtrans3n = $+1
			end
			if not p.smshudtrans3n
				p.smshudtrans3 = T70
			elseif p.smshudtrans3n == 1
				p.smshudtrans3 = T90
			else--if p.smshudtrans3n >= 2
				p.smshudtrans3 = T80
			end			
		end
	end
		
	if p.smshudmessagetime 
		p.smshudmessagetime = $-1
	end
	if p.smshudmenuclick
		p.smshudmenuclick = $-1
		p.smshudmenusphere = "SPHRB0"
	else
		p.smshudmenusphere = "SPHRA0"
	end
	if p.smsmeterfiller
		p.smsmeterfillery = P_RandomRange(0,14)
		p.smsmeterfiller = false
		p.smsmemeter = p.smsmemeter and $+1 or 1
		if p.smsmemeter == 29
			S_StartSound(nil, sfx_s25d, p)
		elseif p.smsmemeter >= 30
			p.smsmemeter = 30
		end
	elseif p.smsmemeter and not p.sms_intoship
		p.smsmemeter = 0
	end
	//This is where SMSus enters the Mystic Emeship
	//Literally repeating the cursed hellscape I went through before with Samus.
	//Why do I have myself make menus all the time. WHY? I'M TERRIBLE AT THIS.
	if p.sms_intoship
		SMSmenuthink(p) //Put it into a local thinker because...uhh....organization or something.
	end
end)

local function MysticEmeraldAura(s)
	local ghs = P_SpawnMobjFromMobj(s, 0,0,0, MT_THOK)
	ghs.flags = $|MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY
	ghs.renderflags = RF_FULLBRIGHT|RF_NOCOLORMAPS
	ghs.blendmode = AST_ADD
	ghs.angle = s.angle
	ghs.sprite = SPR_SMME return ghs --
end

//All aboard the Mystic Emerald gunship!
addHook("MobjThinker", function(s)
	if s.movetms
		local v = s.movetms
		if v.valid
			P_SpawnGhostMobj(s)
			local ANG = R_PointToAngle2(s.x, s.y, v.x, v.y)
			for i = 1,3
				if not (P_TryMove(s, 
					s.x-FixedMul(85355, cos(ANG)), 
					s.y-FixedMul(85355, sin(ANG)), true)) break --
				end
			end
		end
		s.movetms = nil
	end
	if s.msexisting == nil
		s.msexisting = 70
		s.flags2 = $|MF2_SHADOW
	else
		if s.msexisting
		
			s.msexisting = $-1
			s.flags2 = (s.msexisting) and ($|MF2_SHADOW) or ($ & ~MF2_SHADOW)
			
		elseif s.msexisting == 0 and (leveltime > 40)
		
			if (leveltime % 16 == 0)
				P_SpawnMobjFromMobj(s, 0,0, -18*s.scale, MT_IVSP)
			end
			
			--Aura 1
			if not (s.mslayer1 and s.mslayer1.valid)
				s.mslayer1 = MysticEmeraldAura(s)
			end
			s.mslayer1.tics = 3
			if (s.state == S_SMSME1)
				s.mslayer1.frame = (s.tics>4) and C|FF_TRANS10 or C|FF_TRANS20
			else
				s.mslayer1.frame = (s.tics>4) and C|FF_TRANS40 or C|FF_TRANS30
			end
			
			--Aura 2
			if not (s.mslayer2 and s.mslayer2.valid)
				s.mslayer2 = MysticEmeraldAura(s)
			end
			s.mslayer2.tics = 3
			if (s.state == S_SMSME1)
				s.mslayer2.frame = (s.tics>4) and D|FF_TRANS40 or D|FF_TRANS60
			else
				s.mslayer2.frame = (s.tics>4) and D|FF_TRANS90 or D|FF_TRANS70
			end
		end
	end
	if not s.mozes --...mozes?
		if s.z == s.floorz or P_IsObjectOnGround(s) --Float a little over the floor!
			s.z = $+16<<16
		end
		s.scale = 2<<16
		s.mozes = true
	end
end, MT_THEMYSTICEMERALD)

local function MECollide(s, v)
	if not (v and v.valid)
	or (v.z > s.z+s.height)
	or (s.z > v.z+v.height)
		return false --
	end
	if v.smsmsdelay
		v.smsmsdelayp = true return false --
	elseif v.player and v.health --Act as a shop to buy golden shoes at!
		local p = v.player
		if p.bot
			return false --No bots!!
		end
		if (p.cmd.buttons & BT_CUSTOM3) and not (p.transformdown and p.transformdown > 1) 
		and (v.skin == "sms")
		and (p.rings >= 25) 
		and not p.lightdashenable
			if (p.lddiscount != 3)
				P_GivePlayerRings(p, -25)
				S_StartSound(nil, sfx_nxitem)
				print(p.name+" just bought lightdash shoes!")
			else --Discount! Lucky you!
				P_GivePlayerRings(p, -15)
				S_StartSound(nil, sfx_nxdone)
				print(p.name+" just got a great deal on some lightdash sneakers!")
			end
			CONS_Printf(p, "\x82You unlocked the lightdash!(Custom1) You can also charge the lightspeed attack!")
			p.lightdashenable = 1
			p.transformdown = 4
			S_StartSound(s, sfx_s1c5)
			P_FlashPal(p, PAL_MIXUP, 3) return false --
		end
	end
	//Gunship and starposts "push" Mystic Emerald
	if (v.trymsspawn or not v.checktimer == nil) and not (s.msexisting!= nil and s.msexisting == 0) 
		s.movetms = v return false --
	elseif v.player and not v.hmsshieldconsume
	and not (v.player.realtime and v.player.realtime < 30)
	local p = v.player		
		if not p.sms_intoship
			p.smsmeterfiller = true
			if v.health and (p.smsmemeter and p.smsmemeter >= 30)
				p.sms_shipready = 2
				if p.sms_shipready
					if (p.cmd.buttons & BT_SPIN) and not (p.spinhold and (p.spinhold  > 1))
					and not p.sms_intoship
						p.sms_intoship = 35
					end
				end
			end
		end
  	end
  	return false --
end
addHook("MobjCollide", MECollide, MT_THEMYSTICEMERALD)
addHook("MobjMoveCollide", MECollide, MT_THEMYSTICEMERALD)

local cmsky,cmred,cmblue,cmwhite,cmSS --Random experiment...precaching colormaps!
local cmgold1,cmgold2,cmgold3,cmgold4,cmgold5
hud.add(function(v, p) if not p.mo return end local s = p.mo

	if p.sms_intoship	
		cmsky = v.getColormap(nil, SKINCOLOR_SKY) --Interesting. They lose their properties if not refreshed in the HUD hook.
		cmred = v.getColormap(nil, SKINCOLOR_RED)	
		cmblue = v.getColormap(nil, SKINCOLOR_BLUE)
		cmgold1 = v.getColormap(nil, SKINCOLOR_SUPERGOLD1)
		cmgold2 = v.getColormap(nil, SKINCOLOR_SUPERGOLD2)
		cmgold3 = v.getColormap(nil, SKINCOLOR_SUPERGOLD3)
		cmgold4 = v.getColormap(nil, SKINCOLOR_SUPERGOLD4)
		cmgold5 = v.getColormap(nil, SKINCOLOR_SUPERGOLD5)
		cmwhite = v.getColormap(nil, SKINCOLOR_WHITE)
		cmSS = v.getColormap(nil, SKINCOLOR_SUPERSILVER1)
		
		local SC2 = p.hssh2
		v.drawFill(0, 0, 600, 500, 31|vTo|vLe) //Black background
		
		--Floating screensaver background bubbles for prosperity!
		if p.starSMS and p.smshudtrans2 and p.starSMS[1] != nil 
			local STAR = p.starSMS --Bro, those are bubbles, not stars.
			local PATCH = v.cachePatch("THOKA0")
			v.drawScaled(STAR[1].x<<16, STAR[1].y, FRACUNIT, PATCH, T90, cmgold5)
			v.drawScaled(STAR[2].x<<16, STAR[2].y, 1<<15, PATCH, T80, v.getColormap(nil, SKINCOLOR_SUPERRED4))
			v.drawScaled(STAR[3].x<<16, STAR[3].y, FRACUNIT, PATCH, T70, cmgold4)
			v.drawScaled(STAR[4].x<<16, STAR[4].y, FRACUNIT/3, PATCH, T80, cmgold1)
			v.drawScaled(STAR[5].x<<16, STAR[5].y, 1<<15, PATCH, T80, cmgold3)
			v.drawScaled(STAR[6].x<<16, STAR[6].y, FRACUNIT/3, PATCH, T90, cmSS)
			v.drawScaled(STAR[7].x<<16, STAR[7].y, FRACUNIT, PATCH, T80, cmgold2)
			v.drawScaled(STAR[8].x<<16, STAR[8].y, 1<<15, PATCH, T80, v.getColormap(nil, SKINCOLOR_SUPERPERIDOT1))
			v.drawScaled(STAR[9].x<<16, STAR[9].y, FRACUNIT, PATCH, T80, v.getColormap(nil, SKINCOLOR_SILVER))
		end
		
		--Explanation text to display for each option.
		if p.smstext1x != nil and SC2 != nil
			local TFL = vTo|vLe
			local BFL = vBo|vLe
			local PATCH = v.cachePatch("SMSTEXT1")
			if SC2 != 65536
			
				//Sonic background artwork and SMSreborn/Super Mystic Sonic text
				
				v.drawScaled(139<<16-(p.smshudappearanim<<16), -80<<16, SC2*3/2, v.cachePatch("SMSMENUA"), T90|vRi|vBo)
				v.drawScaled(189<<16-(p.smshudappearanim<<16), 0, SC2, v.cachePatch("SMSMENUA"), T90|vRi|vBo)
				
				v.drawScaled(p.smstext1x+200<<16, 4<<16, SC2, PATCH, T90|TFL)
				v.drawScaled(p.smstext1x-150<<16, 4<<16, SC2, PATCH, T90|TFL)
				v.drawScaled(p.smstext1x-500<<16, 4<<16, SC2, PATCH, T90|TFL)
				
				v.drawScaled(p.smstext1x*-1+50<<16, 180<<16, SC2, PATCH, T90|BFL)			
				v.drawScaled(p.smstext1x*-1+400<<16, 180<<16, SC2, PATCH, T90|BFL)
				v.drawScaled(p.smstext1x*-1+750<<16, 180<<16, SC2, PATCH, T90|BFL)	
			else
			
				v.drawScaled(696<<16-(p.smshudappearanim<<16)-(p.smsmenuanim<<16), 0, SC2, v.cachePatch("SMSMENUC"), T70|vRi|vBo)
				v.drawScaled(-148<<16+(p.smsmenuanim2<<16), 0, SC2, v.cachePatch("SMSMENUC"), T70|BFL)
				v.drawScaled(189<<16-(p.smshudappearanim<<16)+(p.smsmenuanim<<16)-160<<16+((p.smsmenuanim2<<16)/5), 0, SC2, v.cachePatch("SMSMENUA"), T70|vRi|vBo)
				
				v.drawScaled(p.smstext1x+200<<16, 4<<16, SC2, PATCH, T80|TFL)
				v.drawScaled(p.smstext1x-150<<16, 4<<16, SC2, PATCH, T80|TFL)
				v.drawScaled(p.smstext1x-500<<16, 4<<16, SC2, PATCH, T80|TFL)
				
				v.drawScaled(p.smstext1x*-1+50<<16, 180<<16, SC2, PATCH, T80|BFL)			
				v.drawScaled(p.smstext1x*-1+400<<16, 180<<16, SC2, PATCH, T80|BFL)
				v.drawScaled(p.smstext1x*-1+750<<16, 180<<16, SC2, PATCH, T80|BFL)
			end
		end
		
	elseif p.smsmemeter --HUD bar when you're touching the Mystic Emerald.
	
		local MMY = (p.smsmemeter*3)
		v.drawFill(115, 139, 2+MMY, 15, 100|vBo)
		v.drawFill(115, 145, 2+MMY, 9, 101|vBo)
		v.drawFill(115, 149, 2+MMY, 5, 102|vBo)
		v.drawFill(115, 139, 2+MMY, 2, 96|vBo)
		v.drawFill(115, 152, 2+MMY, 2, 107|vBo)
		v.drawFill(115, 139, 2, 13, 96|vBo)
		if p.smsmeterfillery != nil and (p.smsmemeter < 30)
			v.drawScaled((113+MMY)<<16, (163-p.smsmeterfillery)<<16, 40055, v.cachePatch("SSPKA0"), T30|vBo)
			v.drawScaled((117+MMY)<<16, (154+p.smsmeterfillery)<<16, 55355, v.cachePatch("SSPKA0"), T10|vBo)
		end
		if (p.smsmemeter > 10)
			if (p.smsmemeter < 20)
				v.drawString(158, 142, "SPIN", T90|vBo, "center")
			elseif (p.smsmemeter < 25)
				v.drawString(158, 142, "SPIN", T60|vBo, "center")
			elseif (p.smsmemeter < 30)
				v.drawString(158, 142, "SPIN", T40|vBo, "center")
			else--if (p.smsmemeter >= 30)
				v.drawString(158, 142, "SPIN", T20|vBo, "center")
				v.drawFill(205, 139, 2, 13, 98|vBo)
			end
		end
	end	
	
	if p.smshudappearanim --Animated elements when the menu opens up.
	
		local SC,SC2 = p.hssh,p.hssh2
		local ANIM = p.smshudappearanim
		local HTRANS1,HTRANS2,HTRANS3 = p.smshudtrans1, p.smshudtrans2, p.smshudtrans3
		local cm = v.getColormap(nil, s.color) --Preload some of these colormaps
		
		if p.sms_hudtransf //Changing Colors!
			if p.sms_hudtransf == 4
				v.drawFill(0, 0, ANIM, 500, 0|vTo|vLe) //White background
				if p.menutpos != nil
					v.drawScaled(ANIM<<16, (p.menutpos<<16)-16<<16, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmSS) //White Triangles
				else
					v.drawScaled(ANIM<<16, 0, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmSS) //Triangles
				end
				v.drawFill(70, 208-ANIM, 206, 20, 16|vBo) //Box around text, middle gray
				v.drawFill(70, 208-ANIM, 2, 20, 6|vBo)  //Left vertical line
				v.drawFill(274, 208-ANIM, 2, 20, 6|vBo) //Right vertical line
				v.drawFill(70, 208-ANIM, 206, 1, 0|vBo)  //Sideways lines
				v.drawFill(70, 209-ANIM, 206, 1, 3|vBo)
				v.drawFill(70, 228-ANIM, 206, 1, 6|vBo) 
				v.drawFill(70, 229-ANIM, 206, 1, 9|vBo)
			else
				v.drawFill(0, 0, ANIM, 500, 15|vTo|vLe) //Blue background
				if p.menutpos != nil
					v.drawScaled(ANIM<<16, (p.menutpos<<16)-16<<16, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, v.getColormap(nil, SKINCOLOR_GREY)) //Grey Triangles
				else
					v.drawScaled(ANIM<<16, 0, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, v.getColormap(nil, SKINCOLOR_GREY)) //Triangles
				end
				v.drawFill(70, 208-ANIM, 206, 20, 26|vBo) //Box around text, middle dark gray
				v.drawFill(70, 208-ANIM, 2, 20, 11|vBo)  //Left vertical line
				v.drawFill(274, 208-ANIM, 2, 20, 11|vBo) //Right vertical line
				v.drawFill(70, 208-ANIM, 206, 1, 6|vBo)  //Sideways lines
				v.drawFill(70, 209-ANIM, 206, 1, 9|vBo)
				v.drawFill(70, 228-ANIM, 206, 1, 13|vBo) 
				v.drawFill(70, 229-ANIM, 206, 1, 15|vBo)
			end
		elseif (p.ssmenuisub and (p.ssmenuisub <= 1 or p.ssmenuisub >= 4))	//Default Blue!
			v.drawFill(0, 0, ANIM, 500, 153|vTo|vLe) //Blue background
			if p.menutpos != nil
				v.drawScaled(ANIM<<16, (p.menutpos<<16)-16<<16, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmblue) //Triangles
			else
				v.drawScaled(ANIM<<16, 0, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmblue) //Triangles
			end
			v.drawFill(70, 208-ANIM, 206, 20, 156|vBo) //Box around text, middle blue
			v.drawFill(70, 208-ANIM, 2, 20, 148|vBo)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 148|vBo) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 146|vBo)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 147|vBo)
			v.drawFill(70, 228-ANIM, 206, 1, 149|vBo) 
			v.drawFill(70, 229-ANIM, 206, 1, 151|vBo)
			
		elseif p.ssmenuisub == 2	//SMS style yellow!
			v.drawFill(0, 0, ANIM, 500, 73|vTo|vLe) //Yellow background  
			v.drawFill(0, 0, ANIM-10, 500, 74|vTo|vLe) //Yellower background	
			v.drawFill(0, 0, ANIM-22, 500, 75|vTo|vLe) //Yellowest background
			v.drawFill(0, 0, ANIM-34, 500, 76|vTo|vLe) //Yellowester background
			v.drawFill(0, 0, ANIM-46, 500, 77|vTo|vLe) //Yellowestest background
			if p.menutpos != nil
				v.drawScaled(ANIM<<16, (p.menutpos<<16)-16<<16, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmgold2) //Yellow Triangles
			else
				v.drawScaled(ANIM<<16, 0, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmgold2) //Yellow Triangles
			end
			v.drawFill(70, 208-ANIM, 206, 20, 70|vBo) //Box around text, middle blue
			v.drawFill(70, 208-ANIM, 2, 20, 83|vBo)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 83|vBo) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 0|vBo)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 80|vBo)
			v.drawFill(70, 228-ANIM, 206, 1, 83|vBo) 
			v.drawFill(70, 229-ANIM, 206, 1, 74|vBo)
				
		elseif p.ssmenuisub == 3	//Red!
		
			v.drawFill(0, 0, ANIM, 500, 40|vTo|vLe) //RED Background
			if p.menutpos != nil
				v.drawScaled(ANIM<<16, (p.menutpos<<16)-16<<16, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmred) //Red Triangles
			else
				v.drawScaled(ANIM<<16, 0, FRACUNIT, v.cachePatch("SMSMENUT"), vLe|vTo, cmred) //Red Triangles
			end
			v.drawFill(70, 208-ANIM, 206, 20, 47|vBo) //Box around text, middle blue
			v.drawFill(70, 208-ANIM, 2, 20, 37|vBo)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 37|vBo) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 32|vBo)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 35|vBo)
			v.drawFill(70, 228-ANIM, 206, 1, 37|vBo) 
			v.drawFill(70, 229-ANIM, 206, 1, 43|vBo)
		end
		
		v.drawFill(286, 242-ANIM, 20, 25, 59|vBo|vRi) //Spin Notification box
		
		//Display these regardless
		if not p.sms_intoship
			local PATCH1,PATCH2,PATCH3 = v.cachePatch("SMSMENU1"),v.cachePatch("SMSMENU2"),v.cachePatch("SMSMENU3")
			
			v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH1,T10,cmblue) 
			v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH2, HTRANS1, cmsky)
			v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH3, HTRANS2, cmsky)
			
			v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH1,T10,cmblue) 
			v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH2, HTRANS1, cmsky)
			v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, PATCH3, HTRANS2, cmsky)
			return --
		end
	end
	
	// _____ ___  ___ _____          _   _  _   _ ______ 
	///  ___||  \/  |/  ___|        | | | || | | ||  _  \
	//\ `--. | .  . |\ `--.  ______ | |_| || | | || | | |
	// `--. \| |\/| | `--. \|______||  _  || | | || | | |
	///\__/ /| |  | |/\__/ /        | | | || |_| || |/ / 
	//\____/ \_|  |_/\____/         \_| |_/ \___/ |___/  
	//

	if p.sms_intoship and p.smshudmenusphere and p.smshudappearanim != nil
	
		local SC,SC2 = p.hssh,p.hssh2
		local cm = v.getColormap(nil, s.color) 
		local ANIM = p.smshudappearanim
		local HTRANS1,HTRANS2,HTRANS3 = p.smshudtrans1, p.smshudtrans2, p.smshudtrans3
		local PAGE = p.ssmenuisub or 0
		local SUBPAGE = p.ssmenuisubpage or 0
		local DONESCALING = (SC == 65536)
		local MENU1P,MENU2P,MENU3P = v.cachePatch("SMSMENU1"),v.cachePatch("SMSMENU2"),v.cachePatch("SMSMENU3")
		
		if SC2 != nil and p.smstext2y != nil 
			local PATCH, textY = v.cachePatch("SMSTEXT2"), p.smstext2y or 0
			local TRANS = (SC2>105355) and T70 or (SC2>65536) and T50 or T30
			v.drawScaled(6<<16, textY-174<<16, SC2, PATCH, TRANS|vLe)
			v.drawScaled(6<<16, textY+86<<16, SC2, PATCH, TRANS|vLe)	
		end
		v.drawString(288, 244-ANIM, "SPIN", T50|vBo|vRi, "small")
			
		v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU1P, T10,cmblue) 
		v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU2P, HTRANS1, cmsky)
		v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU3P, HTRANS2, cmsky)
		v.drawString(133+p.hsh1*2, -109+(ANIM*3)-p.hsh1, "SMS Reborn", T20, "center")
			
		v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU1P, T10,cmblue) 
		v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU2P, HTRANS1, cmsky)
		v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU3P, HTRANS2, cmsky)
		v.drawString(132+p.hsh1*2, -45+(ANIM*3)-p.hsh1, "Admin Options", T20, "center")
		
		if PAGE == 1
			if p.ssmenui1 == 1 and PAGE != 2
				v.drawScaled((ANIM-22)<<16, 58<<16, 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
			
				v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU1P, T90,cmwhite)
				v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU2P, HTRANS2,cmgold2)
				v.drawScaled(69<<16+(p.hsh1<<16*2), -116<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU3P, HTRANS2,cmgold4)
				v.drawString(133+p.hsh1*2, -109+(ANIM*3)-p.hsh1, "SMS Reborn", T20, "center")
			
				v.drawString(75, 212-ANIM, "Personalize settings related to Super Mystic Sonic.", T20|vBo, "small")
				v.drawString(75, 222-ANIM, "These options only affect your own character setup.", T20|vBo, "small")
			elseif p.ssmenui1 == 2 and PAGE != 2
				if SMS_Admin(p) != 0 --Can you access this?
					v.drawScaled((ANIM-22)<<16, 122<<16, 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU1P, T90,cmwhite)
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU2P,HTRANS2,cmgold2)
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU3P,HTRANS2,cmgold4)
				else
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU1P, T40,cmred)
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU2P,HTRANS2,cmred)
					v.drawScaled(69<<16+(p.hsh1<<16*2), -52<<16+(ANIM<<16*3)-(p.hsh1<<16), 65536, MENU3P,HTRANS2,cmred)
					v.drawScaled((ANIM-22)<<16, 122<<16, 1<<15, v.cachePatch("SPHRC0"), vLe)
				end
				v.drawString(132+p.hsh1*2, -45+(ANIM*3)-p.hsh1, "Admin Options", T20, "center")
				v.drawString(75, 212-ANIM, "Set server-wide options/restrictions related to SMS.", T20|vBo, "small")
				v.drawString(75, 222-ANIM, "These cannot be changed by unverified server joiners.", T20|vBo, "small")
			end
			return --
		end
		
		//SMS Reborn Menu	
	--	if SC == nil print("NIL") return end
		local FLIP = (p.sms_hudflipc) or nil
	
		if PAGE == 2 --First option in the SMSreborn menu, the color select. 
		
			if (SUBPAGE < 5) --First page.
			
				local CPICK = p.smslastcolormenudrop or 0
				local TEXT = "\x84"+"NO SPECIAL"
				v.drawScaled(40<<16, -18<<16+(ANIM<<16*3), SC, v.cachePatch("SMSADWN"),HTRANS1,cm)
				v.drawScaled(61<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU4"),T10,cmblue)
		
				--The great list of shiny SMS colors
				if CPICK
					if CPICK == 1 --Mystical! The new default color.
						TEXT = "SMS DEFAULT"
					elseif CPICK == 2
						TEXT = "SUPER YELLOW"
					elseif CPICK == 3
						TEXT = "SUPER ORANGE"
					elseif CPICK == 4
						TEXT = "SUPER RED"
					elseif CPICK == 5
						TEXT = "SUPER GREEN"
					elseif CPICK == 6
						TEXT = "SUPER SKY"
					elseif CPICK == 7
						TEXT = "SUPER PURPLE"
					elseif CPICK == 8
						TEXT = "SUPER RUST"
					elseif CPICK == 9
						TEXT = "SUPER TAN"
					elseif CPICK == 10
						TEXT = "CRISIS"
					elseif CPICK == 11 
						TEXT = "ANTIMATTER"
					elseif CPICK == 12 
						TEXT = "PRIEST"
					elseif CPICK == 13 //Hyper Sonic
						TEXT = "HYPER"
					elseif CPICK == 14 
						TEXT = "BLUEWAVE"
					elseif CPICK == 15
						TEXT = "ARCTIC CHI"
					elseif CPICK == 16 
						TEXT = "RANGER"
					elseif CPICK == 17 
						TEXT = "PINK MENACE"
					elseif CPICK == 18 
						TEXT = "METALLIC"
					elseif CPICK == 19 
						TEXT = "HAZELGLOW"
					elseif CPICK == 20 
						TEXT = "ULTRA DRIVE"
					elseif CPICK == 21 
						TEXT = "LAPIS VAPOR"
					elseif CPICK == 22 
						TEXT = "AZURE BREAKER"
					elseif CPICK == 23 //EMPEROR! Replaces oldschool SMS. You can select oldschool SMS as a static color now.
						TEXT = "EMPEROR"
					elseif CPICK == 24 
						TEXT = "BASE SONIC"
					elseif CPICK == 25 
						TEXT = "SMS REBORN"
					elseif CPICK == 26 
						TEXT = "TRANS-FORMATION"	
					elseif CPICK == 27
						TEXT = "FLAMEBREAKER"	
					elseif CPICK == 28 
						TEXT = "INFINITY'S END"
					elseif CPICK == 29
						TEXT =  "SOLAR"	
					elseif CPICK == 30 
						TEXT = "MOON SLAMMER"	
					elseif CPICK == 31
						TEXT = "GALACTIC"	
					elseif CPICK == 32 
						TEXT = "BREEZY"	
					elseif CPICK == 33 
						TEXT = "ZENITH"
					end
				end
				v.drawString(133, -133+(ANIM*3), TEXT, nil, "center")
				
				if s.skin == "sms" and not p.hypermysticsonic			
					v.drawScaled(234<<16, -118<<16+(ANIM<<16*3), SC/2, v.cachePatch("SMSOS2S3"),nil, cm)
				else
					v.drawScaled(234<<16, -118<<16+(ANIM<<16*3), SC/2, v.cachePatch("SMSOS2S3"),T60,  v.getColormap(nil, SKINCOLOR_GREY))
				end
			
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,  v.getColormap(nil, SKINCOLOR_GOLD)) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold5)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold5)
				v.drawString(132, -98+(ANIM*3), "Golden Shoes", T20, "center")
				v.drawScaled(234<<16, -83<<16+(ANIM<<16*3), SC*2/3, v.cachePatch("RINGA0"))
				if DONESCALING
					v.drawString(234, -97+(ANIM*3), "25", T20, "center")
				end
				
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P, T10, cmblue) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -63+(ANIM*3), "Instant Airboost", T20, "center")
				
				if (FLIP) and (SUBPAGE == 3)
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				else
					if not p.sms_instantairboost
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 3)) v.drawString(234, -62+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -62+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"), HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"), HTRANS2, v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -28+(ANIM*3), "Simple Homing", T20, "center")

				if (FLIP) and (SUBPAGE == 4)
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if p.sms_oldhoming
						v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 4)) v.drawString(234, -27+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -27+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				//Getting into specifics, 1-4
				if SUBPAGE == 1
					v.drawScaled(61<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU4"),HTRANS2,cmSS)
					v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawString(75, 212-ANIM, "Select exclusive glowing color patterns for SMS.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "Press jump to apply. Are unused in team games.", T20|vBo, "small")
				
				elseif SUBPAGE == 2
					v.drawScaled((ANIM-22)<<16, -88<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T70,cmwhite) 
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmSS)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold1)
					v.drawString(132, -98+(ANIM*3), "GOLDEN SHOES", nil, "center")
					v.drawString(75, 212-ANIM, "Buy Golden Shoes for the Light Dash!", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "PS: Quick-buy these with C3 at the Mystic Emerald!", T20|vBo, "small")
				elseif SUBPAGE == 3
					v.drawScaled((ANIM-22)<<16, -52<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(132, -63+(ANIM*3), "INSTANT AIRBOOST", nil, "center")
					v.drawString(75, 212-ANIM, "Toggles whether the Air Boost is activated instantly,", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "or with a 2x press of the Custom1/JUMP button.", T20|vBo, "small")
				else//if SUBPAGE == 4
					v.drawScaled((ANIM-22)<<16, -17<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -28+(ANIM*3), "SIMPLE HOMING", nil, "center")
					v.drawString(75, 212-ANIM, "Toggles whether homing attacks require the spin", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "button to be held in order to be activated.", T20|vBo, "small")
				end
				
			elseif (SUBPAGE < 9) --Second Page
				
				v.drawScaled(40<<16, -142<<16+(ANIM<<16*3), SC, v.cachePatch("SMSAMUP"),HTRANS1,cm)			
				v.drawScaled(40<<16, -18<<16+(ANIM<<16*3), SC, v.cachePatch("SMSADWN"),HTRANS1,cm)
				
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -133+(ANIM*3), "SMS Quakes", T20, "center")
				
				if (FLIP) and (SUBPAGE == 5)
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if p.nosmsquakespls
						v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 5)) v.drawString(234, -132+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -132+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"), HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"), HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -98+(ANIM*3), "Simple Haymaker", T20, "center")
				
				if (FLIP) and (SUBPAGE == 6)
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smseasyhaymaker
						v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 6)) v.drawString(234, -97+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -97+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -63+(ANIM*3), "Pick Me Up", T20, "center")
				
				if (FLIP) and (SUBPAGE == 7)
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smsdontgrabme
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_ORANGE))
						if DONESCALING and not ((FLIP) and (SUBPAGE == 7)) v.drawString(233, -62+(ANIM*3), "3S", T20, "center") end
					elseif p.smsdontgrabme == 1
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 7))v.drawString(234, -62+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -62+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -28+(ANIM*3), "Controls Aid", T20, "center")	
				
				if (FLIP) and (SUBPAGE == 8)
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smstutorial
						v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 8)) v.drawString(234, -27+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -27+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end	
				
				//Getting into specifics, 5-8				
				if (SUBPAGE == 5)
					v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(132, -133+(ANIM*3), "SMS QUAKES", nil, "center")
					v.drawString(75, 212-ANIM, "Turning this off makes most quakes generated by SMS", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "not display for you. Useful if you're sensitive.", T20|vBo, "small")
				elseif (SUBPAGE == 6)
					v.drawScaled((ANIM-22)<<16, -88<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -98+(ANIM*3), "SIMPLE HAYMAKER", nil, "center")
					v.drawString(75, 212-ANIM, "Turn this on to execute airborne haymakers with", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "only a press of C2, without holding back and C1.", T20|vBo, "small")
				elseif (SUBPAGE == 7)
					v.drawScaled((ANIM-22)<<16, -52<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(132, -63+(ANIM*3), "PICK ME UP", nil, "center")
					v.drawString(75, 212-ANIM, "Toggle whether SMS players can pick you up or not.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "By default allowed after not moving for 3 seconds.", T20|vBo, "small")
				else//if (SUBPAGE == 8)
					v.drawScaled((ANIM-22)<<16, -17<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -28+(ANIM*3), "CONTROLS AID", nil, "center")
					v.drawString(75, 212-ANIM, "Turns on a context-sensitive controls aid, which", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "displays every available command for SMS each moment.", T20|vBo, "small")
				end
				
			else --if (SUBPAGE > 8) --Third page of SMSreborn menu	
			
				v.drawScaled(40<<16, -142<<16+(ANIM<<16*3), SC, v.cachePatch("SMSAMUP"),HTRANS1,cm)
			
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -133+(ANIM*3), "LEGEND MODE", T20, "center")
				
				if (FLIP) and (SUBPAGE == 9)
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil, v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smsblastboost
						v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 9)) v.drawString(234, -132+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil, v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -132+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2, v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -98+(ANIM*3), "Music themes", T20, "center")
				
				if (FLIP) and (SUBPAGE == 10)
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil, v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if p.nohmstheme
						v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmred)
						if DONESCALING and not ((FLIP) and (SUBPAGE == 10)) v.drawString(234, -97+(ANIM*3), "OFF", T20, "center") end
					else
						v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil, v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING v.drawString(233, -97+(ANIM*3), "ON", T20, "center") end
					end
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2, v.getColormap(nil, SKINCOLOR_BLACK))
				end			
				
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -63+(ANIM*3), "H. MOMENTUM", T20, "center")
				
				if (FLIP) and (SUBPAGE == 11)
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.autoc1mom
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil, v.getColormap(nil, SKINCOLOR_PERIDOT))
						if DONESCALING and not ((FLIP) and (SUBPAGE == 10)) v.drawString(234, -62+(ANIM*3), "C1", T20, "center") end
					elseif p.autoc1mom == 1
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil, v.getColormap(nil, SKINCOLOR_ORANGE))
						if DONESCALING v.drawString(234, -62+(ANIM*3), "AUTO", T20, "center") end
					else
						v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,cmblue)
						if DONESCALING v.drawString(233, -62+(ANIM*3), "KEY", T20, "center") end
					end
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2, v.getColormap(nil, SKINCOLOR_BLACK))
				end	
				
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T10, v.getColormap(nil, SKINCOLOR_SILVER)) 
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmwhite)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, v.getColormap(nil, SKINCOLOR_SUPERSILVER3))
				v.drawString(133, -28+(ANIM*3), "SAVE CONFIG", T20, "center")
				
				//Getting into specifics, 9-11	
				if (SUBPAGE == 9)
					v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(132, -133+(ANIM*3), "LEGEND MODE", nil, "center")
					v.drawString(75, 212-ANIM, "Play similarly to the old school SMS releases", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "in exchange for most of your SMSreborn abilities.", T20|vBo, "small")
					
				elseif (SUBPAGE == 10)
				
					v.drawScaled((ANIM-22)<<16, -88<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -98+(ANIM*3), "MUSIC THEMES", nil, "center")
					v.drawString(75, 212-ANIM, "Toggle whether the HMS, HMS panic(Match modes)", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "and runshoes event themes will play for you.", T20|vBo, "small")
					
				elseif (SUBPAGE == 11)
				
					v.drawScaled((ANIM-22)<<16, -52<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -63+(ANIM*3), "H. MOMENTUM", nil, "center")
					v.drawString(75, 212-ANIM, "Retain momentum from your homing attacks either by", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "holding C1, a forward direction, or automatically.", T20|vBo, "small")
				
				else//if (SUBPAGE == 12)
				
					v.drawScaled((ANIM-22)<<16, -17<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, v.getColormap(nil, SKINCOLOR_SUPERSILVER3))
					v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold2)
					v.drawString(133, -28+(ANIM*3), "SAVE CONFIG", nil, "center")
					v.drawString(75, 212-ANIM, "Save your preferences as a code to your logs. You'll", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "be given instructions how to auto-load these.", T20|vBo, "small")	
				end
			end
			return --
			
		//Admin Options Menu	

		elseif (PAGE == 3) and p.smsbcolor

			local FLIP2 = (p.sms_hudflipc2) or nil
			
			if (SUBPAGE < 5) //Super Mystic
				
				v.drawScaled(40<<16, -18<<16+(ANIM<<16*3), SC, v.cachePatch("SMSADWN"),HTRANS1,cm)
				
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T10,cmgold4) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold1)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmSS)
				v.drawString(132, -133+(ANIM*3), "Super Mystic", T20, "center")
				
				
				v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 1) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil, v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2, v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
				
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,  v.getColormap(nil, SKINCOLOR_BONE)) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, v.getColormap(nil, SKINCOLOR_SUPERSKY1))
				v.drawString(132, -98+(ANIM*3), "Hyper Mystic", T20, "center")
				
				v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+68<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 2) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
				
				
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -63+(ANIM*3), "Power Share", T20, "center")
				
				v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+68<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 3) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -63+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
				
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -28+(ANIM*3), "SMS Graphics", T20, "center")
				
				v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+68<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 4) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -28+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
			//Getting into specifics, 1-4 : Menu 3	
				if (SUBPAGE == 1)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T80,cmSS) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmred)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmred)
				v.drawString(132, -133+(ANIM*3), "SUPER MYSTIC", nil, "center")
				v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 Allow players to go Super Mystic through", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "transforming, or become SMS as seperate character.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x87"+"[Transform-Only]"+"\x80 Players may only go Super Mystic", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "by transforming from any other version of Sonic.", T20|vBo, "small")
					end
				elseif (SUBPAGE == 2)
				v.drawScaled((ANIM-22)<<16, -88<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T80,cmgold1) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmred)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmred)
				v.drawString(132, -98+(ANIM*3), "HYPER MYSTIC", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 Allow access to Hyper Mystic Sonic", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "freely. The Chaos Emeralds are irrelevant.", T20|vBo, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x84"+"[All-Emeralds]"+"\x80 Allow access to Hyper Mystic Sonic", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "only when all 7 Chaos Emeralds are collected in coop.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-HMS]"+"\x80 Don't allow players to go Hyper Mystic.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "This restriction does not apply in Match/CTF.", T20|vBo, "small")
					end
				elseif (SUBPAGE == 3)
				v.drawScaled((ANIM-22)<<16, -52<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
				v.drawString(132, -63+(ANIM*3), "POWER SHARE", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 SMS can powershare by holding C3. Other", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "characters gain access to a special 'mystic' superform.", T20|vBo, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x84"+"[All-Emeralds]"+"\x80 SMS can powershare only when", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "all 7 Chaos Emeralds are already collected.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-Powershare]"+"\x80 Don't allow SMS to share power", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "with anyone.", T20|vBo, "small")
					end
				elseif (SUBPAGE == 4)
				v.drawScaled((ANIM-22)<<16, -17<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -35<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
				v.drawString(133, -28+(ANIM*3), "SMS GRAPHICS", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[ALL]"+"\x80 All SMSreborn particles/graphics display.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "If a player receives too much lag, try lowering this.", T20|vBo, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x87"+"[MEDIUM]"+"\x80 The more intensive effects are removed.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "Only purely visual effects are removed.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[LOW]"+"\x80 A ton of particles and effects are removed.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "This includes a few that mildly affect gameplay.", T20|vBo, "small")
					end
				end
				
			//Page 2 of Admin Menu
			elseif (SUBPAGE < 9)
			
				v.drawScaled(40<<16, -18<<16+(ANIM<<16*3), SC, v.cachePatch("SMSADWN"),HTRANS1,cm)
				v.drawScaled(40<<16, -142<<16+(ANIM<<16*3), SC, v.cachePatch("SMSAMUP"),HTRANS1,cm)
				
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -133+(ANIM*3), "Circuit/Race", T20, "center")
					
				v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+68<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 5) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
					
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
					v.drawString(132, -98+(ANIM*3), "MATCH/CTF", T20, "center")
					
				v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 6) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end				
					
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(132, -63+(ANIM*3), "BattleMod", T20, "center")
				v.drawScaled(221<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+68<<16, -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 7) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -70<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -63+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end				
		
		

				//HMS limit
				v.drawScaled(61<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU4"),T10,cmblue)
				v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_LAVENDER))
				v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3, v.getColormap(nil, SKINCOLOR_BLUE))
				v.drawScaled(221<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_PURPLE))
				
				v.drawString(132, -28+(ANIM*3), "HMS LIMIT", nil, "center")
				v.drawString(234, -27+(ANIM*3), p.hmsmlimit, nil, "center")
	
	
			//Getting into specifics, 5-8: Menu 3	
				if (SUBPAGE == 5)
				v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
				v.drawString(132, -133+(ANIM*3), "CIRCUIT/RACE", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 SMS is allowed to race.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "At this point everyone should be SMS to stand a chance.", T20|vBo, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x82"+"[All-Super]"+"\x80 Non-SMS players receive shared power", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "to compensate a bit for SMS' overwhelming speed.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from the races.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "", T20|vBo, "small")
					end
				elseif (SUBPAGE == 6)
				v.drawScaled((ANIM-22)<<16, -88<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
				v.drawString(132, -98+(ANIM*3), "MATCH/CTF", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 SMS can be picked in Match&CTF. He can't use", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "weapons, is nerfed, and his abilities drain rings.", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from Match and CTF.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "", T20|vBo, "small")
					end				
				elseif (SUBPAGE == 7)
				v.drawScaled((ANIM-22)<<16, -52<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
				v.drawScaled(69<<16, -70<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
				v.drawString(132, -63+(ANIM*3), "BATTLEMOD", nil, "center")
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x82"+"[Ability]"+"\x80 Pick SMS to become a weaker Sonic with the", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "Super Mystic transformation as his special ability!", T20|vBo, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 SMS can be picked in 'Battle Mod' modes.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "Perhaps good if you're looking for an all-SMS match?", T20|vBo, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from Battle Mod.", T20|vBo, "small")
					v.drawString(75, 222-ANIM, "", T20|vBo, "small")
					end
					
				elseif (SUBPAGE == 8) //Hyper Mystic Limit

				v.drawScaled(61<<16, -35<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU4"),HTRANS2,cmSS)
				v.drawString(75, 212-ANIM, "\x80"+"Select how many players can go Hyper Mystic at once.", T20|vBo, "small")
				v.drawString(75, 222-ANIM, "Too many will strain performance.\x83 Default limit is 1.", T20|vBo, "small")

				end
				
				
			elseif (SUBPAGE > 8) --Page 3 of the Admin Menu
			
			
				v.drawScaled(40<<16, -142<<16+(ANIM<<16*3), SC, v.cachePatch("SMSAMUP"),HTRANS1,cm)
				
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T10,cmred) 
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, v.getColormap(nil, SKINCOLOR_ORANGE))
				v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, v.getColormap(nil, SKINCOLOR_SUPERORANGE5))
				v.drawString(133, -133+(ANIM*3), "Mystic Emerald", T20, "center")
				
				v.drawScaled(221<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 9) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -140<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end
				
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T10,cmblue) 
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmsky)
				v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmsky)
				v.drawString(133, -98+(ANIM*3), "Pulse Colors", T20, "center")
				
				v.drawScaled(221<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				v.drawScaled(221<<16+34<<16, -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
				if (SUBPAGE == 10) and not (FLIP2) and DONESCALING
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16) , -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU7"),HTRANS3,  v.getColormap(nil, SKINCOLOR_WHITE))
					v.drawScaled(221<<16+(p.ssmenuidrop*34<<16), -105<<16+(ANIM<<16*3), SC, v.cachePatch("SMSMENU6"),HTRANS2,  v.getColormap(nil, SKINCOLOR_BLACK))
					v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, T20, "center")
				end					
				
			 //Specifics of page 3	
				if (SUBPAGE == 9) 
					v.drawScaled((ANIM-22)<<16, -122<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -140<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -133+(ANIM*3), "MYSTIC EMERALD", nil, "center")
					if not p.ssmenuidrop
						v.drawString(75, 212-ANIM, "\x83"+"[ON]"+"\x80 Enables the Mystic Emerald's appearance. Allows", T20|vBo, "small")
						v.drawString(75, 222-ANIM, "easy access into the SMSreborn menu for all players.", T20|vBo, "small")
					else
						v.drawString(75, 212-ANIM, "\x85"+"[OFF]"+"\x80 Disables the Mystic Emerald's appearance. Bring", T20|vBo, "small")
						v.drawString(75, 222-ANIM, "this menu up again with the"+"\x82"+" 'SMSmenu'"+"\x80"+" console command.", T20|vBo, "small")
					end
				elseif (SUBPAGE == 10) 
					v.drawScaled((ANIM-22)<<16, -87<<16+(ANIM<<16*3), 1<<15, v.cachePatch(p.smshudmenusphere), vLe)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU1P,T90,cmwhite) 
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU2P, HTRANS1, cmgold2)
					v.drawScaled(69<<16, -105<<16+(ANIM<<16*3), SC, MENU3P, HTRANS2, cmgold4)
					v.drawString(133, -98+(ANIM*3), "PULSE COLORS", nil, "center")
					if not p.ssmenuidrop
						v.drawString(75, 212-ANIM, "\x83"+"[ON]"+"\x80 Enables players to select the pulsing colors", T20|vBo, "small")
						v.drawString(75, 222-ANIM, "in the SMSreborn menu. Might be hard on SRB2's netcode.", T20|vBo, "small")
					else
						v.drawString(75, 212-ANIM, "\x85"+"[OFF]"+"\x80 Disables SMS pulsing colors. Experimental!", T20|vBo, "small")
						v.drawString(75, 222-ANIM, "May be gentler on netcode. Use if experiencing resyncs!", T20|vBo, "small")
					end
				end
			end
	/*	elseif PAGE == 241 //Save Config Tutorial text
			v.drawString(70, 112-ANIM, "\x83"+"[1]"+"\x80 Exit SRB2.", T20|vBo, "small")
			v.drawString(70, 122-ANIM, "\x83"+"[2]"+"\x80 Go into SRB2 folder > Go into Logs folder.", T20|vBo, "small")
			v.drawString(70, 132-ANIM, "\x83"+"[3]"+"\x80 Open your most recent log txt. Find the code at the bottom.", T20|vBo, "small")
			v.drawString(70, 142-ANIM, "\x83"+"[4]"+"\x80 Copy&Paste code into SMSreborn.cfg with notepad.", T20|vBo, "small")
			v.drawString(75, 212-ANIM, "Download SMSreborn.cfg from the SRB2 MB if it doesn't", T20|vBo, "small")
			v.drawString(75, 222-ANIM, "exist already, or create it with notepad.", T20|vBo, "small")
			v.drawFill(286, 242-ANIM, 20, 25, 59|vBo|vRi) //Spin Notification box
	  		v.drawString(288, 244-ANIM, "SPIN", T50|vBo|vRi, "small")			*/	
		end
	end
end)