--=========================================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.
--=========================================================================================

//Actual menu navigation thinker. Visuals are in HUD hook further below.
local function SMSmenuthink(p)
		local s = p.mo
			if p.starsms1x == nil
			
				p.starsms1y = SMSLocalRNG(220, 240,s)*FRACUNIT p.starsms1x = P_RandomRange(38, 360)
				p.starsms2y = P_RandomRange(220, 240)*FRACUNIT p.starsms2x = P_RandomRange(38, 360)
				p.starsms3y = P_RandomRange(220, 240)*FRACUNIT p.starsms3x = P_RandomRange(38, 360)
				p.starsms4y = P_RandomRange(220, 240)*FRACUNIT p.starsms4x = P_RandomRange(38, 360)
				p.starsms5y = P_RandomRange(220, 240)*FRACUNIT p.starsms5x = P_RandomRange(38, 360) 
				p.starsms6y = P_RandomRange(220, 240)*FRACUNIT p.starsms6x = P_RandomRange(38, 360)
				p.starsms7y = P_RandomRange(220, 240)*FRACUNIT p.starsms7x = P_RandomRange(38, 360)
				p.starsms8y = P_RandomRange(220, 240)*FRACUNIT p.starsms8x = P_RandomRange(38, 360) 
				p.starsms9y = P_RandomRange(220, 240)*FRACUNIT p.starsms9x = P_RandomRange(38, 360) 

			elseif p.starsms1x != nil
			
				if p.starsms1y != nil p.starsms1y = $-FRACUNIT end if p.starsms1y < -20 p.starsms1y = P_RandomRange(234, 270)*FRACUNIT p.starsms1x = P_RandomRange(-5, 325) end
				if p.starsms2y != nil p.starsms2y = $-2*FRACUNIT end if p.starsms2y < -20 p.starsms2y = P_RandomRange(221, 269)*FRACUNIT p.starsms2x = P_RandomRange(-5, 325) end
				if p.starsms3y != nil p.starsms3y = $-3*FRACUNIT end if p.starsms3y < -20 p.starsms3y = P_RandomRange(240, 280)*FRACUNIT p.starsms3x = P_RandomRange(-5, 325) end
				if p.starsms4y != nil p.starsms4y = $-2*FRACUNIT-15355 end if p.starsms4y < -20 p.starsms4y = P_RandomRange(223, 290)*FRACUNIT p.starsms4x = P_RandomRange(-5, 325) end
				if p.starsms5y != nil p.starsms5y = $-2*FRACUNIT-27000 end if p.starsms5y < -20 p.starsms5y = P_RandomRange(210, 240)*FRACUNIT p.starsms5x = P_RandomRange(-5, 325) end
				if p.starsms6y != nil p.starsms6y = $-2*FRACUNIT-5500 end if p.starsms6y < -20 p.starsms6y = P_RandomRange(229, 260)*FRACUNIT p.starsms6x = P_RandomRange(-5, 325) end
				if p.starsms7y != nil p.starsms7y = $-2*FRACUNIT-43000 end if p.starsms7y < -20 p.starsms7y = P_RandomRange(225, 285)*FRACUNIT p.starsms7x = P_RandomRange(-5, 325) end
				if p.starsms8y != nil p.starsms8y = $-FRACUNIT-43000 end if p.starsms8y < -20 p.starsms8y = P_RandomRange(238, 273)*FRACUNIT p.starsms8x = P_RandomRange(-5, 325) end
				if p.starsms9y != nil p.starsms9y = $-FRACUNIT-30000 end if p.starsms9y < -20 p.starsms9y = P_RandomRange(230, 240)*FRACUNIT p.starsms9x = P_RandomRange(-5, 325) end
				
			end
			
			if p.smstext2y == nil or (p.smstext2y > 258*FRACUNIT)
			p.smstext2y = 0 
			else
			p.smstext2y = $+2*FRACUNIT
			end
			if p.smstext1x == nil or (p.smstext1x >= 350*FRACUNIT)
			p.smstext1x = 0 
			else
			p.smstext1x = $+2*FRACUNIT
			end
			
			
			if (leveltime % 16 == 0)
			P_SpawnMobj(s.x, s.y, s.z-8*FRACUNIT, MT_IVSP)
			end
			p.sms_flamedelay = 10
			p.accelstart = 0
			p.powers[pw_carry] = 0
			s.momz = 0
			s.momy = 0
			s.momx = 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 p.powers[pw_underwater]
					p.eshipwater = p.powers[pw_underwater]
					end
					if p.powers[pw_spacetime]
					p.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
				p.smsmenuanim = 160
				p.smsmenuanim2 = 160
				p.sms_boostlevel = 0
				p.hsh1 = 0
				p.hshh2 = 155355
				p.hshh = 1
				s.state = S_PLAY_STND
				p.powers[pw_nocontrol] = 2
				p.ssmenuiuse = true
				p.dashspeed = 0
				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
					p.ssmenui1 = 1
					p.ssmenuisub = 1
					p.ssmenuisubpage = 1
					p.ssmenuidrop = 0
					S_ChangeMusic("_INTER", true, p)
						if G_GametypeHasSpectators()
					    P_PlayerEmeraldBurst(p)
					    P_PlayerFlagBurst(p)
					    P_PlayerWeaponAmmoBurst(p)
					    S_StartSound(s, 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
				if p.powers[pw_underwater]
					if p.powers[pw_underwater] < 400
					p.powers[pw_underwater] = 401
					p.eshipwater = 401
					elseif p.eshipwater
					p.powers[pw_underwater] = p.eshipwater		
					end
				end
				if p.powers[pw_spacetime]
					if p.powers[pw_spacetime] < 400
					p.powers[pw_spacetime] = 401
					p.eshipspace = 401
					elseif p.eshipspace
					p.powers[pw_spacetime] = p.eshipspace		
					end
				end
				if leveltime //Fixes issue switching levels mid-menu
				S_ChangeMusic("_INTER", true, p)
				end
			if (s.actioncooldown and (s.actioncooldown < 50))
			s.actioncooldown = 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 	
		
//  ___  ___   _ __  | |_  _ __  ___  | | ___ 
// / __|/ _ \ | '_ \ | __|| '__|/ _ \ | |/ __|
//| (__| (_) || | | || |_ | |  | (_) || |\__ \
// \___|\___/ |_| |_| \__||_|   \___/ |_||___/



//Main Menu! Only two options. Enjoy the simplicity. :P

			  if p.ssmenuisub == 1
			  
				if (p.cmd.buttons & BT_SPIN) and not p.ssmenuiuse
				
					if p.sms_intoship
						SMS_SaveGame(p)
					end
					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
					if p.sms_intoship
						SMS_SaveGame(p)
					end
					
				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
				
			  elseif p.ssmenuisub == 2 //In the main SMSreborn sub-menu now!
			  
			  		if (p.cmd.forwardmove > 25) 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 not (p.ssmenuisubpage == 1)
							p.ssmenuidrop = 0
						end
			  		elseif (p.cmd.forwardmove < -25) 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 not (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 < -25) --Scroll left!
					and not p.ssmenuileft --and p.ssmenuidrop
						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 > 25) --Scroll Right
					and not p.ssmenuiright
					
			  			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
					
//Menu 3, the Admin Menu					
			 elseif p.ssmenuisub == 3
			 		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
			/*  elseif p.ssmenuisub == 241 //Save Config tutorial screen.
				if (p.cmd.buttons & BT_SPIN) and not p.ssmenuiuse
					p.sms_intoship = 0
					p.spinhold = 10
					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
				end */
			  end
				
	//Keep these below the menu Lua or it'll break.		
	
				if (p.cmd.sidemove < -25)
					p.ssmenuileft = true
				else
					p.ssmenuileft = false
				end
				if (p.cmd.sidemove > 25)
					p.ssmenuiright = true
				else
					p.ssmenuiright = false
				end
				if (p.cmd.buttons & BT_JUMP)
					p.ssmenuijump = true
				else
					p.ssmenuijump = false
				end
				if (p.cmd.forwardmove > 25)
					p.ssmenuiup = true
				else
					p.ssmenuiup = false
				end
				if (p.cmd.forwardmove < -25)
					p.ssmenuidown = true
				else
					p.ssmenuidown = false
				end
				if (p.cmd.buttons & BT_SPIN)
					p.ssmenuiuse = true
				else
					p.ssmenuiuse = false
				end
			end
end





//Hooray, the first PlayerThink hook created for SMSreborn!
addHook("PlayerThink", function(p)
	if p.mo //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 = $-1
		  end
		  if p.sms_hudflipc2
		  p.sms_hudflipc2 = $-1
		  end
		  if p.sms_hudtransf
		  p.sms_hudtransf = $-1
		  end
		  
		  if p.ssmenuisub != nil
		  	if p.smsmenuanim == nil
			p.smsmenuanim = 160
			elseif p.ssmenuisub == 2
				if (p.smsmenuanim < 480)
				p.smsmenuanim = $+50
				elseif (p.smsmenuanim != 480)
				p.smsmenuanim = 480
				end
			elseif (p.smsmenuanim != 160)
				if (p.smsmenuanim > 160)		
				p.smsmenuanim = $-50
				else
				p.smsmenuanim = 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)
				if (p.smsmenuanim2 > 0)		
				p.smsmenuanim2 = $-30
				else
				p.smsmenuanim2 = 0
				end
			end
			if p.hshh == nil
			p.hshh = 1
			elseif p.ssmenuisub != 1
				if (p.hshh < 65355)
				p.hshh = $+10000
				elseif (p.hshh > 65355)
				p.hshh = 65355
				end
			elseif (p.hshh != 1)
				if (p.hshh > 10000)		
				p.hshh = $-10000
				else
				p.hshh = 1
				end
			end
			if p.hshh2 == nil
			p.hshh2 = 155355
			elseif p.hshh2 != 65355
				if (p.hshh2 > 68000)		
				p.hshh2 = $-5000
				else
				p.hshh2 = 65355
				end
			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 = $+1
					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 = $-1
				end
			end
		  end
		
		
			if p.smshudappearanim == nil
			p.smshudappearanim = 0
			end
			if not p.menutpos or (p.menutpos and (p.menutpos > 16))
			p.menutpos = 1
			else
			p.menutpos = $+1
			end
			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)
			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
		end
		if not p.smshudtrans1n
			p.smshudtrans1 = V_40TRANS
		elseif p.smshudtrans1n == 1
			p.smshudtrans1 = V_50TRANS
		elseif p.smshudtrans1n == 2
			p.smshudtrans1 = V_40TRANS
		elseif p.smshudtrans1n >= 3
			p.smshudtrans1 = V_30TRANS
		end
		
			if (leveltime % 6 == 0)		
				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
			end
			if not p.smshudtrans2n
			p.smshudtrans2 = V_60TRANS
			elseif p.smshudtrans2n == 1
			p.smshudtrans2 = V_70TRANS
			elseif p.smshudtrans2n == 2
			p.smshudtrans2 = V_60TRANS
			elseif p.smshudtrans2n >= 3
			p.smshudtrans2 = V_50TRANS
			end
			
			if (leveltime % 6 == 0)		
				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
			end
			if not p.smshudtrans3n
			p.smshudtrans3 = V_70TRANS
			elseif p.smshudtrans3n == 1
			p.smshudtrans3 = V_90TRANS
			elseif p.smshudtrans3n == 2
			p.smshudtrans3 = V_80TRANS
			elseif p.smshudtrans3n >= 3
			p.smshudtrans3 = V_70TRANS
			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 and s
			S_StartSound(s, 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 had to go through before with Samus to make a goddamn menu.
//Why do I have myself make menus all the time. WHY.

		if p.sms_intoship
			SMSmenuthink(p) //Put it into a local thinker because...it's...better? ...apparently????
		end
	end
end)






//All aboard the Mystic Emerald gunship!

addHook("MobjThinker", function(s)
		if s.movetms
		local v = s.movetms
			if v.valid
			P_SpawnGhostMobj(s)
			P_TryMove(s, s.x-FixedMul(85355, cos( R_PointToAngle2(s.x, s.y, v.x, v.y) )), s.y-FixedMul(85355, sin( R_PointToAngle2(s.x, s.y, v.x, v.y) )), true)
			P_TryMove(s, s.x-FixedMul(105355, cos( R_PointToAngle2(s.x, s.y, v.x, v.y) )), s.y-FixedMul(85355, sin( R_PointToAngle2(s.x, s.y, v.x, v.y) )), true)
			P_TryMove(s, s.x-FixedMul(75355, cos( R_PointToAngle2(s.x, s.y, v.x, v.y) )), s.y-FixedMul(85355, sin( R_PointToAngle2(s.x, s.y, v.x, v.y) )), true)
			end
		s.movetms = nil
		end
		if s.msexisting == nil
		s.msexisting = 70
		s.flags2 = $|MF2_SHADOW
		elseif s.msexisting
		s.msexisting = $-1
		s.flags2 = $|MF2_SHADOW
			if not s.msexisting
			s.flags2 = $ & ~MF2_SHADOW
			end
		end
		if (leveltime > 40) and s.msexisting != nil and not s.msexisting
			if (leveltime % 16 == 0) and
			P_SpawnMobjFromMobj(s, 0,0, -18*s.scale, MT_IVSP)
			end
			if not s.mslayer1 or (s.mslayer1 and not s.mslayer1.valid)
			s.mslayer1 = P_SpawnMobjFromMobj(s, 0,0,0, MT_THOK)
			s.mslayer1.angle = s.angle
			s.mslayer1.sprite = SPR_SMME
			s.mslayer1.frame = C|FF_FULLBRIGHT|TR_TRANS10
			elseif s.mslayer1 and s.mslayer1.valid
			s.mslayer1.tics = 3
				if s.state == S_SMSME1
					if s.tics > 4
					s.mslayer1.frame = C|FF_FULLBRIGHT|TR_TRANS10
					else
					s.mslayer1.frame = C|FF_FULLBRIGHT|TR_TRANS20
					end
				else
					if s.tics > 4
					s.mslayer1.frame = C|FF_FULLBRIGHT|TR_TRANS40
					else
					s.mslayer1.frame = C|FF_FULLBRIGHT|TR_TRANS30
					end
				end
			end
			if not s.mslayer2 or (s.mslayer2 and not s.mslayer2.valid)
			s.mslayer2 = P_SpawnMobjFromMobj(s, 0,0,0, MT_THOK)
			s.mslayer2.angle = s.angle
			s.mslayer2.sprite = SPR_SMME
			s.mslayer2.frame = D|FF_FULLBRIGHT|TR_TRANS40
			elseif s.mslayer2 and s.mslayer2.valid
			s.mslayer2.tics = 3
				if s.state == S_SMSME1
					if s.tics > 4
					s.mslayer2.frame = D|FF_FULLBRIGHT|TR_TRANS40
					else
					s.mslayer2.frame = D|FF_FULLBRIGHT|TR_TRANS60
					end
				else
					if s.tics > 4
					s.mslayer2.frame = D|FF_FULLBRIGHT|TR_TRANS90
					else
					s.mslayer2.frame = D|FF_FULLBRIGHT|TR_TRANS70
					end
				end
			end
		end
		if not s.mozes
			if s.z == s.floorz
			s.z = $+16*FRACUNIT
			end
		s.scale = 2*FRACUNIT
		s.mozes = true
	//	P_SpawnMobj(s.x, s.y, s.z, MT_IVSP)
		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 --
			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)

hud.add(function(v, p)
	if not p.mo return end --
	local s = p.mo
	
	if p.sms_intoship
	v.drawFill(0, 0, 600, 500, 31|V_SNAPTOTOP|V_SNAPTOLEFT) //Black background
		if p.starsms1x != nil and p.smshudtrans2 //Rising bubbles
		v.drawScaled(p.starsms1x*FRACUNIT, p.starsms1y, FRACUNIT, v.cachePatch("THOKA0"), V_90TRANS, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
		v.drawScaled(p.starsms2x*FRACUNIT, p.starsms2y, FRACUNIT/2, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SUPERRED4))
		v.drawScaled(p.starsms3x*FRACUNIT, p.starsms3y, FRACUNIT, v.cachePatch("THOKA0"), V_70TRANS, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
		v.drawScaled(p.starsms4x*FRACUNIT, p.starsms4y, FRACUNIT/3, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SUPERGOLD1))
		v.drawScaled(p.starsms5x*FRACUNIT, p.starsms5y, FRACUNIT/2, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SUPERGOLD3))
		v.drawScaled(p.starsms6x*FRACUNIT, p.starsms6y, FRACUNIT/3, v.cachePatch("THOKA0"), V_90TRANS, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
		v.drawScaled(p.starsms7x*FRACUNIT, p.starsms7y, FRACUNIT, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
		v.drawScaled(p.starsms8x*FRACUNIT, p.starsms8y, FRACUNIT/2, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SUPERPERIDOT1))
		v.drawScaled(p.starsms9x*FRACUNIT, p.starsms9y, FRACUNIT, v.cachePatch("THOKA0"), V_80TRANS, v.getColormap(nil, SKINCOLOR_SILVER))
		end
		if p.hshh2 != nil
		  if p.smstext1x != nil
			if p.hshh2 != 65355
			//Sonic background artwork and SMSreborn/Super Mystic Sonic text
			
			v.drawScaled(139*FRACUNIT-(p.smshudappearanim*FRACUNIT), -80*FRACUNIT, p.hshh2*3/2, v.cachePatch("SMSMENUA"), V_90TRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM)
			v.drawScaled(189*FRACUNIT-(p.smshudappearanim*FRACUNIT), 0, p.hshh2, v.cachePatch("SMSMENUA"), V_90TRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM)
			
			v.drawScaled(p.smstext1x+200*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x-150*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x-500*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			
			v.drawScaled(p.smstext1x*-1+50*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)			
			v.drawScaled(p.smstext1x*-1+400*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x*-1+750*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_90TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)	
			else
			
			v.drawScaled(696*FRACUNIT-(p.smshudappearanim*FRACUNIT)-(p.smsmenuanim*FRACUNIT), 0, p.hshh2, v.cachePatch("SMSMENUC"), V_70TRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM)
			v.drawScaled(-148*FRACUNIT+(p.smsmenuanim2*FRACUNIT), 0, p.hshh2, v.cachePatch("SMSMENUC"), V_70TRANS|V_SNAPTOLEFT|V_SNAPTOBOTTOM)
			v.drawScaled(189*FRACUNIT-(p.smshudappearanim*FRACUNIT)+(p.smsmenuanim*FRACUNIT)-160*FRACUNIT+((p.smsmenuanim2*FRACUNIT)/5), 0, p.hshh2, v.cachePatch("SMSMENUA"), V_70TRANS|V_SNAPTORIGHT|V_SNAPTOBOTTOM)
			
			v.drawScaled(p.smstext1x+200*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x-150*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x-500*FRACUNIT, 4*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOTOP|V_SNAPTOLEFT)
			
			v.drawScaled(p.smstext1x*-1+50*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)			
			v.drawScaled(p.smstext1x*-1+400*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)
			v.drawScaled(p.smstext1x*-1+750*FRACUNIT, 180*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT1"), V_80TRANS|V_SNAPTOBOTTOM|V_SNAPTOLEFT)
			end
		  end
		end
	elseif p.smsmemeter
		v.drawFill(115, 139, 2+(p.smsmemeter*3), 15, 100|V_SNAPTOBOTTOM)
		v.drawFill(115, 145, 2+(p.smsmemeter*3), 9, 101|V_SNAPTOBOTTOM)
		v.drawFill(115, 149, 2+(p.smsmemeter*3), 5, 102|V_SNAPTOBOTTOM)
		v.drawFill(115, 139, 2+(p.smsmemeter*3), 2, 96|V_SNAPTOBOTTOM)
		v.drawFill(115, 152, 2+p.smsmemeter*3, 2, 107|V_SNAPTOBOTTOM)
		v.drawFill(115, 139, 2, 13, 96|V_SNAPTOBOTTOM)
		if p.smsmeterfillery != nil and (p.smsmemeter < 30)
		v.drawScaled((113+(p.smsmemeter*3))*FRACUNIT, (163-p.smsmeterfillery)*FRACUNIT, 40055, v.cachePatch("SSPKA0"), V_30TRANS|V_SNAPTOBOTTOM)
		v.drawScaled((117+(p.smsmemeter*3))*FRACUNIT, (154+p.smsmeterfillery)*FRACUNIT, 55355, v.cachePatch("SSPKA0"), V_10TRANS|V_SNAPTOBOTTOM)
		end
		if (p.smsmemeter > 10)
			if (p.smsmemeter < 20)
			v.drawString(158, 142, "SPIN", V_90TRANS|V_SNAPTOBOTTOM, "center")
			elseif (p.smsmemeter < 25)
			v.drawString(158, 142, "SPIN", V_60TRANS|V_SNAPTOBOTTOM, "center")
			elseif (p.smsmemeter < 30)
			v.drawString(158, 142, "SPIN", V_40TRANS|V_SNAPTOBOTTOM, "center")
			elseif (p.smsmemeter >= 30)
			v.drawString(158, 142, "SPIN", V_20TRANS|V_SNAPTOBOTTOM, "center")
			v.drawFill(205, 139, 2, 13, 98|V_SNAPTOBOTTOM)
			end
		end
	end	
	
	if p.smshudappearanim
	local ANIM = p.smshudappearanim
	  if p.sms_hudtransf //Changing Colors!
	 	if p.sms_hudtransf == 4
			v.drawFill(0, 0, ANIM, 500, 0|V_SNAPTOTOP|V_SNAPTOLEFT) //White background
			if p.menutpos != nil
			v.drawScaled(ANIM*FRACUNIT, (p.menutpos*FRACUNIT)-16*FRACUNIT, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_SUPERSILVER1)) //White Triangles
			else
			v.drawScaled(ANIM*FRACUNIT, 0, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_SUPERSILVER1)) //Triangles
			end
			v.drawFill(70, 208-ANIM, 206, 20, 16|V_SNAPTOBOTTOM) //Box around text, middle gray
			v.drawFill(70, 208-ANIM, 2, 20, 6|V_SNAPTOBOTTOM)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 6|V_SNAPTOBOTTOM) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 0|V_SNAPTOBOTTOM)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 3|V_SNAPTOBOTTOM)
			v.drawFill(70, 228-ANIM, 206, 1, 6|V_SNAPTOBOTTOM) 
			v.drawFill(70, 229-ANIM, 206, 1, 9|V_SNAPTOBOTTOM)
		else
			v.drawFill(0, 0, ANIM, 500, 15|V_SNAPTOTOP|V_SNAPTOLEFT) //Blue background
			if p.menutpos != nil
			v.drawScaled(ANIM*FRACUNIT, (p.menutpos*FRACUNIT)-16*FRACUNIT, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_GREY)) //Grey Triangles
			else
			v.drawScaled(ANIM*FRACUNIT, 0, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_GREY)) //Triangles
			end
			v.drawFill(70, 208-ANIM, 206, 20, 26|V_SNAPTOBOTTOM) //Box around text, middle dark gray
			v.drawFill(70, 208-ANIM, 2, 20, 11|V_SNAPTOBOTTOM)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 11|V_SNAPTOBOTTOM) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 6|V_SNAPTOBOTTOM)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 9|V_SNAPTOBOTTOM)
			v.drawFill(70, 228-ANIM, 206, 1, 13|V_SNAPTOBOTTOM) 
			v.drawFill(70, 229-ANIM, 206, 1, 15|V_SNAPTOBOTTOM)
		end
	  elseif (p.ssmenuisub and (p.ssmenuisub <= 1 or p.ssmenuisub >= 4))	//Default Blue!
		v.drawFill(0, 0, ANIM, 500, 153|V_SNAPTOTOP|V_SNAPTOLEFT) //Blue background
		if p.menutpos != nil
		v.drawScaled(ANIM*FRACUNIT, (p.menutpos*FRACUNIT)-16*FRACUNIT, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_BLUE)) //Triangles
		else
		v.drawScaled(ANIM*FRACUNIT, 0, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_BLUE)) //Triangles
		end
		v.drawFill(70, 208-ANIM, 206, 20, 156|V_SNAPTOBOTTOM) //Box around text, middle blue
		v.drawFill(70, 208-ANIM, 2, 20, 148|V_SNAPTOBOTTOM)  //Left vertical line
		v.drawFill(274, 208-ANIM, 2, 20, 148|V_SNAPTOBOTTOM) //Right vertical line
		v.drawFill(70, 208-ANIM, 206, 1, 146|V_SNAPTOBOTTOM)  //Sideways lines
		v.drawFill(70, 209-ANIM, 206, 1, 147|V_SNAPTOBOTTOM)
		v.drawFill(70, 228-ANIM, 206, 1, 149|V_SNAPTOBOTTOM) 
		v.drawFill(70, 229-ANIM, 206, 1, 151|V_SNAPTOBOTTOM)
		
	 elseif p.ssmenuisub == 2	//SMS style yellow!
		v.drawFill(0, 0, ANIM, 500, 73|V_SNAPTOTOP|V_SNAPTOLEFT) //Yellow background  
		v.drawFill(0, 0, ANIM-10, 500, 74|V_SNAPTOTOP|V_SNAPTOLEFT) //Yellower background	
		v.drawFill(0, 0, ANIM-22, 500, 75|V_SNAPTOTOP|V_SNAPTOLEFT) //Yellowest background
		v.drawFill(0, 0, ANIM-34, 500, 76|V_SNAPTOTOP|V_SNAPTOLEFT) //Yellowester background
		v.drawFill(0, 0, ANIM-46, 500, 77|V_SNAPTOTOP|V_SNAPTOLEFT) //Yellowestest background
		if p.menutpos != nil
		v.drawScaled(ANIM*FRACUNIT, (p.menutpos*FRACUNIT)-16*FRACUNIT, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_SUPERGOLD2)) //Yellow Triangles
		else
		v.drawScaled(ANIM*FRACUNIT, 0, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_SUPERGOLD2)) //Yellow Triangles
		end
			v.drawFill(70, 208-ANIM, 206, 20, 70|V_SNAPTOBOTTOM) //Box around text, middle blue
			v.drawFill(70, 208-ANIM, 2, 20, 83|V_SNAPTOBOTTOM)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 83|V_SNAPTOBOTTOM) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 0|V_SNAPTOBOTTOM)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 80|V_SNAPTOBOTTOM)
			v.drawFill(70, 228-ANIM, 206, 1, 83|V_SNAPTOBOTTOM) 
			v.drawFill(70, 229-ANIM, 206, 1, 74|V_SNAPTOBOTTOM)
			
	  elseif p.ssmenuisub == 3	//Red!
	  
	  	v.drawFill(0, 0, ANIM, 500, 40|V_SNAPTOTOP|V_SNAPTOLEFT) //RED Background
		if p.menutpos != nil
		v.drawScaled(ANIM*FRACUNIT, (p.menutpos*FRACUNIT)-16*FRACUNIT, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_RED)) //Red Triangles
		else
		v.drawScaled(ANIM*FRACUNIT, 0, FRACUNIT, v.cachePatch("SMSMENUT"), V_SNAPTOLEFT|V_SNAPTOTOP, v.getColormap(nil, SKINCOLOR_RED)) //Red Triangles
		end
			v.drawFill(70, 208-ANIM, 206, 20, 47|V_SNAPTOBOTTOM) //Box around text, middle blue
			v.drawFill(70, 208-ANIM, 2, 20, 37|V_SNAPTOBOTTOM)  //Left vertical line
			v.drawFill(274, 208-ANIM, 2, 20, 37|V_SNAPTOBOTTOM) //Right vertical line
			v.drawFill(70, 208-ANIM, 206, 1, 32|V_SNAPTOBOTTOM)  //Sideways lines
			v.drawFill(70, 209-ANIM, 206, 1, 35|V_SNAPTOBOTTOM)
			v.drawFill(70, 228-ANIM, 206, 1, 37|V_SNAPTOBOTTOM) 
			v.drawFill(70, 229-ANIM, 206, 1, 43|V_SNAPTOBOTTOM)
	  end
	  
	  //Display these regardless
	  	if not p.sms_intoship
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
			
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
		end
		
	  v.drawFill(286, 242-ANIM, 20, 25, 59|V_SNAPTOBOTTOM|V_SNAPTORIGHT) //Spin Notification box
	end
	
	
// _____ ___  ___ _____          _   _  _   _ ______ 
///  ___||  \/  |/  ___|        | | | || | | ||  _  \
//\ `--. | .  . |\ `--.  ______ | |_| || | | || | | |
// `--. \| |\/| | `--. \|______||  _  || | | || | | |
///\__/ /| |  | |/\__/ /        | | | || |_| || |/ / 
//\____/ \_|  |_/\____/         \_| |_/ \___/ |___/  


	
	if p.sms_intoship and p.smshudmenusphere and p.smshudappearanim != nil
	local ANIM = p.smshudappearanim
		if p.hshh2 != nil
		  if p.smstext2y != nil 
			if p.hshh2 > 105355
			v.drawScaled(6*FRACUNIT, p.smstext2y-174*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_70TRANS|V_SNAPTOLEFT)
			v.drawScaled(6*FRACUNIT, p.smstext2y+86*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_70TRANS|V_SNAPTOLEFT)
			elseif p.hshh2 > 65355
			v.drawScaled(6*FRACUNIT, p.smstext2y-174*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_50TRANS|V_SNAPTOLEFT)
			v.drawScaled(6*FRACUNIT, p.smstext2y+86*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_50TRANS|V_SNAPTOLEFT)
			else	
			v.drawScaled(6*FRACUNIT, p.smstext2y-174*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_30TRANS|V_SNAPTOLEFT)
			v.drawScaled(6*FRACUNIT, p.smstext2y+86*FRACUNIT, p.hshh2, v.cachePatch("SMSTEXT2"), V_30TRANS|V_SNAPTOLEFT)
			end
		  end
		 end
	v.drawString(288, 244-ANIM, "SPIN", V_50TRANS|V_SNAPTOBOTTOM|V_SNAPTORIGHT, "small")
			
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawString(133+p.hsh1*2, -109+(ANIM*3)-p.hsh1, "SMS Reborn", V_20TRANS, "center")
			
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawString(132+p.hsh1*2, -45+(ANIM*3)-p.hsh1, "Admin Options", V_20TRANS, "center")
		
		if (p.ssmenuisub and p.ssmenuisub == 1) and p.ssmenui1 != nil
		
			if p.ssmenui1 == 1 and not (p.ssmenuisub == 2)
				v.drawScaled((ANIM-22)*FRACUNIT, 58*FRACUNIT, FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
			
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"), V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"), p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -116*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"), p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(133+p.hsh1*2, -109+(ANIM*3)-p.hsh1, "SMS Reborn", V_20TRANS, "center")
			
				v.drawString(75, 212-ANIM, "Personalize settings related to Super Mystic Sonic.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "These options only affect your own character setup.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			elseif p.ssmenui1 == 2 and not (p.ssmenuisub == 2)
				if SMS_Admin(p) != 0
				v.drawScaled((ANIM-22)*FRACUNIT, 122*FRACUNIT, FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"), V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				else
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU1"), V_40TRANS,  v.getColormap(nil, SKINCOLOR_RED))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU2"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_RED))
				v.drawScaled(69*FRACUNIT+(p.hsh1*FRACUNIT*2), -52*FRACUNIT+(ANIM*FRACUNIT*3)-(p.hsh1*FRACUNIT), 65355, v.cachePatch("SMSMENU3"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_RED))
				v.drawScaled((ANIM-22)*FRACUNIT, 122*FRACUNIT, FRACUNIT/2, v.cachePatch("SPHRC0"), V_SNAPTOLEFT)
				end
			
				v.drawString(132+p.hsh1*2, -45+(ANIM*3)-p.hsh1, "Admin Options", V_20TRANS, "center")
				v.drawString(75, 212-ANIM, "Set server-wide options/restrictions related to SMS.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "These cannot be changed by unverified server joiners.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			end
		end
		
//SMS Reborn Menu	
	
		if (p.ssmenuisub == 2)
		//First page
			if (p.ssmenuisubpage < 5) //SMS colors
			
				v.drawScaled(40*FRACUNIT, -18*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSADWN"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
				
				v.drawScaled(61*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU4"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE))
			
							if not p.smslastcolormenudrop //The great list of shiny SMS colors
								v.drawString(132, -133+(ANIM*3), "\x84"+"NO SPECIAL", nil, "center")
							elseif p.smslastcolormenudrop == 1 --Mystical! The new default color.
								v.drawString(132, -133+(ANIM*3), "SMS DEFAULT", nil, "center")
							elseif p.smslastcolormenudrop == 2
								v.drawString(132, -133+(ANIM*3), "SUPER YELLOW", nil, "center")
							elseif p.smslastcolormenudrop == 3
								v.drawString(132, -133+(ANIM*3), "SUPER ORANGE", nil, "center")
							elseif p.smslastcolormenudrop == 4
								v.drawString(132, -133+(ANIM*3), "SUPER RED", nil, "center")
							elseif p.smslastcolormenudrop == 5
								v.drawString(132, -133+(ANIM*3), "SUPER GREEN", nil, "center")
							elseif p.smslastcolormenudrop == 6
								v.drawString(132, -133+(ANIM*3), "SUPER SKY", nil, "center")
							elseif p.smslastcolormenudrop == 7
								v.drawString(132, -133+(ANIM*3), "SUPER PURPLE", nil, "center")
							elseif p.smslastcolormenudrop == 8
								v.drawString(132, -133+(ANIM*3), "SUPER RUST", nil, "center")
							elseif p.smslastcolormenudrop == 9
								v.drawString(132, -133+(ANIM*3), "SUPER TAN", nil, "center")
							elseif p.smslastcolormenudrop == 10
								v.drawString(132, -133+(ANIM*3), "CRISIS", nil, "center")
							elseif p.smslastcolormenudrop == 11 //Antimatter
								v.drawString(132, -133+(ANIM*3), "ANTIMATTER", nil, "center")
							elseif p.smslastcolormenudrop == 12 //Priest
								v.drawString(132, -133+(ANIM*3), "PRIEST", nil, "center")
							elseif p.smslastcolormenudrop == 13 //Hyper Sonic
								v.drawString(132, -133+(ANIM*3), "HYPER", nil, "center")
							elseif p.smslastcolormenudrop == 14 //Blue Wave
								v.drawString(132, -133+(ANIM*3), "BLUEWAVE", nil, "center")
							elseif p.smslastcolormenudrop == 15 //Arctic Chi
								v.drawString(132, -133+(ANIM*3), "ARCTIC CHI", nil, "center")
							elseif p.smslastcolormenudrop == 16 //Ranger
								v.drawString(132, -133+(ANIM*3), "RANGER", nil, "center")
							elseif p.smslastcolormenudrop == 17 //Pink Menace
								v.drawString(132, -133+(ANIM*3), "PINK MENACE", nil, "center")
							elseif p.smslastcolormenudrop == 18 //Metallic Gold
								v.drawString(132, -133+(ANIM*3), "METALLIC", nil, "center")
							elseif p.smslastcolormenudrop == 19 //HazelGlow
								v.drawString(132, -133+(ANIM*3), "HAZELGLOW", nil, "center")
							elseif p.smslastcolormenudrop == 20 //Ultra Drive
								v.drawString(132, -133+(ANIM*3), "ULTRA DRIVE", nil, "center")
							elseif p.smslastcolormenudrop == 21 //Lapis Vapor
								v.drawString(132, -133+(ANIM*3), "LAPIS VAPOR", nil, "center")
							elseif p.smslastcolormenudrop == 22 //Azure Breaker
								v.drawString(132, -133+(ANIM*3), "AZURE BREAKER", nil, "center")
							elseif p.smslastcolormenudrop == 23 //EMPEROR! Replaces oldschool SMS. You can select oldschool SMS as a static color now.
								v.drawString(132, -133+(ANIM*3), "EMPEROR", nil, "center")
							elseif p.smslastcolormenudrop == 24 //Base Sonic
								v.drawString(132, -133+(ANIM*3), "BASE SONIC", nil, "center")
							elseif p.smslastcolormenudrop == 25 //Old SMSreborn colors before 3.0.
								v.drawString(132, -133+(ANIM*3), "SMS REBORN", nil, "center")
							elseif p.smslastcolormenudrop == 26 //Trans-Formation
								v.drawString(132, -133+(ANIM*3), "TRANS-FORMATION", nil, "center")	
							elseif p.smslastcolormenudrop == 27 //FlameBreaker
								v.drawString(132, -133+(ANIM*3), "FLAMEBREAKER", nil, "center")	
							elseif p.smslastcolormenudrop == 28 //Infinity's End
								v.drawString(133, -133+(ANIM*3), "INFINITY'S END", nil, "center")
							elseif p.smslastcolormenudrop == 29 //Solar Billow
								v.drawString(133, -133+(ANIM*3), "SOLAR", nil, "center")	
							elseif p.smslastcolormenudrop == 30 //MoonSlammer
								v.drawString(133, -133+(ANIM*3), "MOON SLAMMER", nil, "center")	
							elseif p.smslastcolormenudrop == 31 //Galactic
								v.drawString(133, -133+(ANIM*3), "GALACTIC", nil, "center")	
							elseif p.smslastcolormenudrop == 32 //Breezy
								v.drawString(133, -133+(ANIM*3), "BREEZY", nil, "center")	
							elseif p.smslastcolormenudrop == 33 //Zenith
								v.drawString(133, -133+(ANIM*3), "ZENITH", nil, "center")									
							end
							
				if (p.mo.skin == "sms" and not p.hypermysticsonic)			
					v.drawScaled(234*FRACUNIT, -118*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh/2, v.cachePatch("SMSOS2S3"),nil,  v.getColormap(nil, p.mo.color))
				else
					v.drawScaled(234*FRACUNIT, -118*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh/2, v.cachePatch("SMSOS2S3"),V_60TRANS,  v.getColormap(nil, SKINCOLOR_GREY))
				end
			
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_GOLD)) 
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
			v.drawString(132, -98+(ANIM*3), "Golden Shoes", V_20TRANS, "center")
			v.drawScaled(234*FRACUNIT, -83*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh*2/3, v.cachePatch("RINGA0"))
			if p.hshh == 65355
			v.drawString(234, -97+(ANIM*3), "25", V_20TRANS, "center")
			end
			
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawString(132, -63+(ANIM*3), "Instant Airboost", V_20TRANS, "center")
			if p.sms_hudflipc and (p.ssmenuisubpage == 3)
				v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
			else
				if not p.sms_instantairboost
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 3)) v.drawString(234, -62+(ANIM*3), "OFF", V_20TRANS, "center") end
				else
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -62+(ANIM*3), "ON", V_20TRANS, "center") end
				end
				v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
			end
			
			
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawString(133, -28+(ANIM*3), "Simple Homing", V_20TRANS, "center")
			if p.sms_hudflipc and (p.ssmenuisubpage == 4)
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
			else
				if p.sms_oldhoming
					v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 4)) v.drawString(234, -27+(ANIM*3), "OFF", V_20TRANS, "center") end
				else
					v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -27+(ANIM*3), "ON", V_20TRANS, "center") end
				end
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
			end
			//Getting into specifics, 1-4
				if p.ssmenuisubpage == 1
					v.drawScaled(61*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU4"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
					v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawString(75, 212-ANIM, "Select exclusive glowing color patterns for SMS.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "Press jump to apply. Are unused in team games.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				
				elseif p.ssmenuisubpage == 2
					v.drawScaled((ANIM-22)*FRACUNIT, -88*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_70TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD1))
					v.drawString(132, -98+(ANIM*3), "GOLDEN SHOES", nil, "center")
					v.drawString(75, 212-ANIM, "Buy Golden Shoes for the Light Dash!", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "PS: Quick-buy these with C3 at the Mystic Emerald!", V_20TRANS|V_SNAPTOBOTTOM, "small")
				elseif p.ssmenuisubpage == 3
					v.drawScaled((ANIM-22)*FRACUNIT, -52*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
					v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
					v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
					v.drawString(132, -63+(ANIM*3), "INSTANT AIRBOOST", nil, "center")
					v.drawString(75, 212-ANIM, "Toggles whether the Air Boost is activated instantly,", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "or with a 2x press of the Custom1/JUMP button.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				else//if p.ssmenuisubpage == 4
					v.drawScaled((ANIM-22)*FRACUNIT, -17*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
					v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
					v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
					v.drawString(133, -28+(ANIM*3), "SIMPLE HOMING", nil, "center")
					v.drawString(75, 212-ANIM, "Toggles whether homing attacks require the spin", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "button to be held in order to be activated.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				end
		//Second Page
			elseif (p.ssmenuisubpage < 9)
			
			v.drawScaled(40*FRACUNIT, -142*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSAMUP"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))			
			v.drawScaled(40*FRACUNIT, -18*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSADWN"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
			
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(132, -133+(ANIM*3), "SMS Quakes", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 5)
				v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if p.nosmsquakespls
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 5)) v.drawString(234, -132+(ANIM*3), "OFF", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -132+(ANIM*3), "ON", V_20TRANS, "center") end
					end
				v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(133, -98+(ANIM*3), "Simple Haymaker", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 6)
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smseasyhaymaker
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 6)) v.drawString(234, -97+(ANIM*3), "OFF", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -97+(ANIM*3), "ON", V_20TRANS, "center") end
					end
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(132, -63+(ANIM*3), "Pick Me Up", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 7)
				v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smsdontgrabme
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_ORANGE))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 7)) v.drawString(233, -62+(ANIM*3), "3S", V_20TRANS, "center") end
					elseif p.smsdontgrabme and p.smsdontgrabme == 1
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 7))v.drawString(234, -62+(ANIM*3), "OFF", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -62+(ANIM*3), "ON", V_20TRANS, "center") end
					end
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(133, -28+(ANIM*3), "Controls Aid", V_20TRANS, "center")		
			if p.sms_hudflipc and (p.ssmenuisubpage == 8)
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
			else
				if not p.smstutorial
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
				if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 8)) v.drawString(234, -27+(ANIM*3), "OFF", V_20TRANS, "center") end
				else
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
				if p.hshh == 65355 v.drawString(233, -27+(ANIM*3), "ON", V_20TRANS, "center") end
				end
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
			end	
				
			//Getting into specifics, 5-8				
				if (p.ssmenuisubpage == 5)
				v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(132, -133+(ANIM*3), "SMS QUAKES", nil, "center")
				v.drawString(75, 212-ANIM, "Turning this off makes most quakes generated by SMS", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "not display for you. Useful if you're sensitive.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				elseif (p.ssmenuisubpage == 6)
				v.drawScaled((ANIM-22)*FRACUNIT, -88*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(133, -98+(ANIM*3), "SIMPLE HAYMAKER", nil, "center")
				v.drawString(75, 212-ANIM, "Turn this on to execute airborne haymakers with", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "only a press of C2, without holding back and C1.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				elseif (p.ssmenuisubpage == 7)
				v.drawScaled((ANIM-22)*FRACUNIT, -52*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "By default allowed after not moving for 3 seconds.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				else//if (p.ssmenuisubpage == 8)
				v.drawScaled((ANIM-22)*FRACUNIT, -17*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(133, -28+(ANIM*3), "CONTROLS AID", nil, "center")
				v.drawString(75, 212-ANIM, "Turns on a context-sensitive controls aid, which", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "displays every available command for SMS each moment.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				end
		//Third page of SMSreborn menu		
			elseif (p.ssmenuisubpage > 8)
			
				v.drawScaled(40*FRACUNIT, -142*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSAMUP"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
			
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
					v.drawString(132, -133+(ANIM*3), "LEGEND MODE", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 9)
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.smsblastboost
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 9)) v.drawString(234, -132+(ANIM*3), "OFF", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -132+(ANIM*3), "ON", V_20TRANS, "center") end
					end
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end
				
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
					v.drawString(133, -98+(ANIM*3), "Music themes", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 10)
				v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if p.nohmstheme
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_RED))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 10)) v.drawString(234, -97+(ANIM*3), "OFF", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 v.drawString(233, -97+(ANIM*3), "ON", V_20TRANS, "center") end
					end
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end			
				
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
					v.drawString(133, -63+(ANIM*3), "H. MOMENTUM", V_20TRANS, "center")
				if p.sms_hudflipc and (p.ssmenuisubpage == 11)
				v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))	
				else
					if not p.autoc1mom
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_PERIDOT))
					if p.hshh == 65355 and not (p.sms_hudflipc and (p.ssmenuisubpage == 10)) v.drawString(234, -62+(ANIM*3), "C1", V_20TRANS, "center") end
					elseif p.autoc1mom == 1
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_ORANGE))
					if p.hshh == 65355 v.drawString(234, -62+(ANIM*3), "AUTO", V_20TRANS, "center") end
					else
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_BLUE))
					if p.hshh == 65355 v.drawString(233, -62+(ANIM*3), "KEY", V_20TRANS, "center") end
					end
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
					v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				end	
				
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_SILVER)) 
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_WHITE))
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERSILVER3))
				v.drawString(133, -28+(ANIM*3), "SAVE CONFIG", V_20TRANS, "center")
				
			//Getting into specifics, 9-11	
				if (p.ssmenuisubpage == 9)
				v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(132, -133+(ANIM*3), "LEGEND MODE", nil, "center")
				v.drawString(75, 212-ANIM, "Play similarly to the old school SMS releases", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "in exchange for most of your SMSreborn abilities.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				elseif (p.ssmenuisubpage == 10)
				v.drawScaled((ANIM-22)*FRACUNIT, -88*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(133, -98+(ANIM*3), "MUSIC THEMES", nil, "center")
				v.drawString(75, 212-ANIM, "Toggle whether the HMS, HMS panic(Match modes)", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "and runshoes event themes will play for you.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				elseif (p.ssmenuisubpage == 11)
				v.drawScaled((ANIM-22)*FRACUNIT, -52*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				v.drawString(133, -63+(ANIM*3), "H. MOMENTUM", nil, "center")
				v.drawString(75, 212-ANIM, "Retain momentum from your homing attacks either by", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "holding C1, a forward direction, or automatically.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				
				else//if (p.ssmenuisubpage == 12)
				v.drawScaled((ANIM-22)*FRACUNIT, -17*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERSILVER3))
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				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", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "be given instructions how to auto-load these.", V_20TRANS|V_SNAPTOBOTTOM, "small")	
				end
			end
			
//Admin Options Menu	

		elseif (p.ssmenuisub == 3) and p.smsbcolor
		
			if (p.ssmenuisubpage < 5) //Super Mystic
			
			v.drawScaled(40*FRACUNIT, -18*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSADWN"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
			
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_SUPERGOLD4)) 
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD1))
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
			v.drawString(132, -133+(ANIM*3), "Super Mystic", V_20TRANS, "center")
			
			
			v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 1) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end
			
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BONE)) 
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERSKY1))
			v.drawString(132, -98+(ANIM*3), "Hyper Mystic", V_20TRANS, "center")
			
			v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+68*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 2) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end
			
			
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawString(132, -63+(ANIM*3), "Power Share", V_20TRANS, "center")
			
			v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+68*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 3) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -63+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end
			
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawString(133, -28+(ANIM*3), "SMS Graphics", V_20TRANS, "center")
			
			v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+68*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 4) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -28+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end
		//Getting into specifics, 1-4 : Menu 3	
				if (p.ssmenuisubpage == 1)
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_80TRANS,  v.getColormap(nil, SKINCOLOR_SUPERSILVER1)) 
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_RED))
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_RED))
				v.drawString(132, -133+(ANIM*3), "SUPER MYSTIC", nil, "center")
				v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					if not p.ssmenuidrop
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 Allow players to go Super Mystic through", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "transforming, or become SMS as seperate character.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x87"+"[Transform-Only]"+"\x80 Players may only go Super Mystic", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "by transforming from any other version of Sonic.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
				elseif (p.ssmenuisubpage == 2)
				v.drawScaled((ANIM-22)*FRACUNIT, -88*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_80TRANS,  v.getColormap(nil, SKINCOLOR_SUPERGOLD1)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_RED))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_RED))
				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", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "freely. The Chaos Emeralds are irrelevant.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x84"+"[All-Emeralds]"+"\x80 Allow access to Hyper Mystic Sonic", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "only when all 7 Chaos Emeralds are collected in coop.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-HMS]"+"\x80 Don't allow players to go Hyper Mystic.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "This restriction does not apply in Match/CTF.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
				elseif (p.ssmenuisubpage == 3)
				v.drawScaled((ANIM-22)*FRACUNIT, -52*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "characters gain access to a special 'mystic' superform.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x84"+"[All-Emeralds]"+"\x80 SMS can powershare only when", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "all 7 Chaos Emeralds are already collected.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-Powershare]"+"\x80 Don't allow SMS to share power", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "with anyone.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
				elseif (p.ssmenuisubpage == 4)
				v.drawScaled((ANIM-22)*FRACUNIT, -17*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "If a player receives too much lag, try lowering this.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x87"+"[MEDIUM]"+"\x80 The more intensive effects are removed.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "Only purely visual effects are removed.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[LOW]"+"\x80 A ton of particles and effects are removed.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "This includes a few that mildly affect gameplay.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
				end
			//Page 2 of Admin Menu
			elseif (p.ssmenuisubpage < 9)
			
			v.drawScaled(40*FRACUNIT, -18*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSADWN"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
			v.drawScaled(40*FRACUNIT, -142*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSAMUP"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
			
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(132, -133+(ANIM*3), "Circuit/Race", V_20TRANS, "center")
				
			v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+68*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 5) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end
				
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(132, -98+(ANIM*3), "MATCH/CTF", V_20TRANS, "center")
				
			v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 6) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end				
				
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawString(132, -63+(ANIM*3), "BattleMod", V_20TRANS, "center")
			v.drawScaled(221*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+34*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			v.drawScaled(221*FRACUNIT+68*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
			if (p.ssmenuisubpage == 7) and not (p.sms_hudflipc2) and p.hshh == 65355
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
				v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
				v.drawString(234+(p.ssmenuidrop*34), -63+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
			end				
		
		
		
		
			//HMS limit
			v.drawScaled(61*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU4"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE))
			v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, SKINCOLOR_LAVENDER))
			v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_BLUE))
			v.drawScaled(221*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  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 (p.ssmenuisubpage == 5)
				v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "At this point everyone should be SMS to stand a chance.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x82"+"[All-Super]"+"\x80 Non-SMS players receive shared power", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "to compensate a bit for SMS' overwhelming speed.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from the races.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
				elseif (p.ssmenuisubpage == 6)
				v.drawScaled((ANIM-22)*FRACUNIT, -88*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "weapons, is nerfed, and his abilities drain rings.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from Match and CTF.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end				
				elseif (p.ssmenuisubpage == 7)
				v.drawScaled((ANIM-22)*FRACUNIT, -52*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				v.drawScaled(69*FRACUNIT, -70*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
				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", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "Super Mystic transformation as his special ability!", V_20TRANS|V_SNAPTOBOTTOM, "small")
					elseif p.ssmenuidrop and p.ssmenuidrop == 1
					v.drawString(75, 212-ANIM, "\x83"+"[Free]"+"\x80 SMS can be picked in 'Battle Mod' modes.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "Perhaps good if you're looking for an all-SMS match?", V_20TRANS|V_SNAPTOBOTTOM, "small")
					else
					v.drawString(75, 212-ANIM, "\x85"+"[No-SMS]"+"\x80 SMS is disqualified from Battle Mod.", V_20TRANS|V_SNAPTOBOTTOM, "small")
					v.drawString(75, 222-ANIM, "", V_20TRANS|V_SNAPTOBOTTOM, "small")
					end
					
				elseif (p.ssmenuisubpage == 8) //Hyper Mystic Limit

				v.drawScaled(61*FRACUNIT, -35*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU4"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
				v.drawString(75, 212-ANIM, "\x80"+"Select how many players can go Hyper Mystic at once.", V_20TRANS|V_SNAPTOBOTTOM, "small")
				v.drawString(75, 222-ANIM, "Too many will strain performance.\x83 Default limit is 1.", V_20TRANS|V_SNAPTOBOTTOM, "small")

				end
				
				//Page 3 of the Admin Menu
			elseif (p.ssmenuisubpage > 8)
			
			
					v.drawScaled(40*FRACUNIT, -142*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSAMUP"),p.smshudtrans1,  v.getColormap(nil, p.mo.color))
					
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_RED)) 
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_ORANGE))
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERORANGE5))
					v.drawString(133, -133+(ANIM*3), "Mystic Emerald", V_20TRANS, "center")
					
					v.drawScaled(221*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
					v.drawScaled(221*FRACUNIT+34*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
					if (p.ssmenuisubpage == 9) and not (p.sms_hudflipc2) and p.hshh == 65355
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
						v.drawString(234+(p.ssmenuidrop*34), -133+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
					end
					
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_10TRANS,  v.getColormap(nil, SKINCOLOR_BLUE)) 
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SKY))
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SKY))
					v.drawString(133, -98+(ANIM*3), "Pulse Colors", V_20TRANS, "center")
					
					v.drawScaled(221*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
					v.drawScaled(221*FRACUNIT+34*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENUF"), nil,  v.getColormap(nil, SKINCOLOR_CARBON))
					if (p.ssmenuisubpage == 10) and not (p.sms_hudflipc2) and p.hshh == 65355
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT) , -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU5"), nil,  v.getColormap(nil, p.smsbcolor))
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU7"),p.smshudtrans3,  v.getColormap(nil, SKINCOLOR_SUPERSILVER2))
						v.drawScaled(221*FRACUNIT+(p.ssmenuidrop*34*FRACUNIT), -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU6"),p.smshudtrans2,  v.getColormap(nil, SKINCOLOR_BLACK))
						v.drawString(234+(p.ssmenuidrop*34), -98+(ANIM*3), p.ssmenuidrop+1, V_20TRANS, "center")
					end					
					
				 //Specifics of page 3	
					if (p.ssmenuisubpage == 9) 
					v.drawScaled((ANIM-22)*FRACUNIT, -122*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
					v.drawScaled(69*FRACUNIT, -140*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
					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", V_20TRANS|V_SNAPTOBOTTOM, "small")
						v.drawString(75, 222-ANIM, "easy access into the SMSreborn menu for all players.", V_20TRANS|V_SNAPTOBOTTOM, "small")
						else
						v.drawString(75, 212-ANIM, "\x85"+"[OFF]"+"\x80 Disables the Mystic Emerald's appearance. Bring", V_20TRANS|V_SNAPTOBOTTOM, "small")
						v.drawString(75, 222-ANIM, "this menu up again with the"+"\x82"+" 'SMSmenu'"+"\x80"+" console command.", V_20TRANS|V_SNAPTOBOTTOM, "small")
						end
					elseif (p.ssmenuisubpage == 10) 
					v.drawScaled((ANIM-22)*FRACUNIT, -87*FRACUNIT+(ANIM*FRACUNIT*3), FRACUNIT/2, v.cachePatch(p.smshudmenusphere), V_SNAPTOLEFT)
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU1"),V_90TRANS,  v.getColormap(nil, SKINCOLOR_WHITE)) 
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU2"), p.smshudtrans1, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
					v.drawScaled(69*FRACUNIT, -105*FRACUNIT+(ANIM*FRACUNIT*3), p.hshh, v.cachePatch("SMSMENU3"), p.smshudtrans2, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
					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", V_20TRANS|V_SNAPTOBOTTOM, "small")
						v.drawString(75, 222-ANIM, "in the SMSreborn menu. Might be hard on SRB2's netcode.", V_20TRANS|V_SNAPTOBOTTOM, "small")
						else
						v.drawString(75, 212-ANIM, "\x85"+"[OFF]"+"\x80 Disables SMS pulsing colors. Experimental!", V_20TRANS|V_SNAPTOBOTTOM, "small")
						v.drawString(75, 222-ANIM, "May be gentler on netcode. Use if experiencing resyncs!", V_20TRANS|V_SNAPTOBOTTOM, "small")
						end
					end
					
					
			
			end
	/*	elseif p.ssmenuisub == 241 //Save Config Tutorial text
			v.drawString(70, 112-ANIM, "\x83"+"[1]"+"\x80 Exit SRB2.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawString(70, 122-ANIM, "\x83"+"[2]"+"\x80 Go into SRB2 folder > Go into Logs folder.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawString(70, 132-ANIM, "\x83"+"[3]"+"\x80 Open your most recent log txt. Find the code at the bottom.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawString(70, 142-ANIM, "\x83"+"[4]"+"\x80 Copy&Paste code into SMSreborn.cfg with notepad.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawString(75, 212-ANIM, "Download SMSreborn.cfg from the SRB2 MB if it doesn't", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawString(75, 222-ANIM, "exist already, or create it with notepad.", V_20TRANS|V_SNAPTOBOTTOM, "small")
			v.drawFill(286, 242-ANIM, 20, 25, 59|V_SNAPTOBOTTOM|V_SNAPTORIGHT) //Spin Notification box
	  		v.drawString(288, 244-ANIM, "SPIN", V_50TRANS|V_SNAPTOBOTTOM|V_SNAPTORIGHT, "small")			*/	
		end
	
	end
end)