Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- Clone map upon game start. This is what will be loaded and unloaded
-- Destroy original after cloning


map = mapContainer:FindFirstChild(MAP_NAME)
local cachedMap = map:Clone()

function MapManager.loadMap()
	if map then
		print("Current map must be unloaded before loading a new map. Returning current map.")
		return map
	end
	
	map = cachedMap:Clone()
	map.Parent = mapContainer -- Parent it to the map container
	map.Name = MAP_NAME -- Rename the map so that we can use the unloadMap() function later to remove it.
	return map -- Return the map we selected, in case we want to display its info.
end

function MapManager.unloadMap()
	if map then
		map:Destroy()
		map = false -- Easier to handle than nil
	end 
end

function MapManager.reloadMap()
	if map then
		print("Removing current map before reloading")
		map:Destroy()
	end
	
	map = cachedMap:Clone()
	map.Parent = mapContainer -- Parent it to the map container
	map.Name = MAP_NAME -- Rename the map so that we can use the unloadMap() function later to remove it.
	return map -- Return the map we selected, in case we want to display its info.
end

function MapManager.getMap()
	return map
end

function MapManager.getSpawnLocations()
	if map then
		return map:FindFirstChild("SpawnLocations")
	end
	
	return false
end

return MapManager
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------



function onSwimming(speed)
	if userAnimateScaleRun then
		speed /= getHeightScale()
	end
	if speed > 1.00 then
		local scale = 10.0
		playAnimation("swim", 0.4, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Swimming"
	else
		playAnimation("swimidle", 0.4, Humanoid)
		pose = "Standing"
	end
end

function animateTool()
	if (toolAnim == "None") then
		playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		return
	end

	if (toolAnim == "Slash") then
		playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end

	if (toolAnim == "Lunge") then
		playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end
end

function getToolAnim(tool)
	for _, c in ipairs(tool:GetChildren()) do
		if c.Name == "toolanim" and c.className == "StringValue" then
			return c
		end
	end
	return nil
end

local lastTick = 0

function stepAnimate(currentTime)
	local amplitude = 1
	local frequency = 1
	local deltaTime = currentTime - lastTick
	lastTick = currentTime

	local climbFudge = 0
	local setAngles = false

	if (jumpAnimTime > 0) then
		jumpAnimTime = jumpAnimTime - deltaTime
	end

	if (pose == "FreeFall" and jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	elseif (pose == "Seated") then
		playAnimation("sit", 0.5, Humanoid)
		return
	elseif (pose == "Running") then
		playAnimation("walk", 0.2, Humanoid)
		updateVelocity(currentTime)
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
		stopAllAnimations()
		amplitude = 0.1
		frequency = 1
		setAngles = true
	end

	-- Tool Animation handling
	local tool = Character:FindFirstChildOfClass("Tool")
	if tool and tool:FindFirstChild("Handle") then
		local animStringValueObject = getToolAnim(tool)

		if animStringValueObject then
			toolAnim = animStringValueObject.Value
			-- message recieved, delete StringValue
			animStringValueObject.Parent = nil
			toolAnimTime = currentTime + .3
		end

		if currentTime > toolAnimTime then
			toolAnimTime = 0
			toolAnim = "None"
		end

		animateTool()
	else
		stopToolAnimations()
		toolAnim = "None"
		toolAnimInstance = nil
		toolAnimTime = 0
	end
end
--- Parses escape sequences into their fully qualified characters


function Util.ParseEscapeSequences(text)
	return text:gsub("\\(.)", {
		t = "\t";
		n = "\n";
	})
	:gsub("\\u(%x%x%x%x)", charCode)
	:gsub("\\x(%x%x)", charCode)
end

function Util.EncodeEscapedOperator(text, op)
	local first = op:sub(1, 1)
	local escapedOp = op:gsub(".", "%%%1")
	local escapedFirst = "%" .. first

	return text:gsub("(" .. escapedFirst .. "+)(" .. escapedOp .. ")", function(esc, op)
			return (esc:sub(1, #esc-1) .. op):gsub(".", function(char)
					return "\\u" .. string.format("%04x", string.byte(char), 16)
			end)
	end)
end

local OPERATORS = {"&&", "||", ";"}
function Util.EncodeEscapedOperators(text)
	for _, operator in ipairs(OPERATORS) do
		text = Util.EncodeEscapedOperator(text, operator)
	end

	return text
end

local function encodeControlChars(text)
	return (
		text
		:gsub("\\\\", "___!CMDR_ESCAPE!___")
		:gsub("\\\"", "___!CMDR_QUOTE!___")
		:gsub("\\'", "___!CMDR_SQUOTE!___")
		:gsub("\\\n", "___!CMDR_NL!___")
	)
end

local function decodeControlChars(text)
	return (
		text
		:gsub("___!CMDR_ESCAPE!___", "\\")
		:gsub("___!CMDR_QUOTE!___", "\"")
		:gsub("___!CMDR_NL!___", "\n")
	)
end
--[[**
	ensures value is a number where min < value < max

	@param min The minimum to use
	@param max The maximum to use

	@returns A function that will return true iff the condition is passed
**--]]


function t.numberConstrainedExclusive(min, max)
	assert(t.number(min))
	assert(t.number(max))
	local minCheck = t.numberMinExclusive(min)
	local maxCheck = t.numberMaxExclusive(max)

	return function(value)
		local minSuccess = minCheck(value)
		if not minSuccess then
			return false
		end

		local maxSuccess = maxCheck(value)
		if not maxSuccess then
			return false
		end

		return true
	end
end
-- Libraries


local Libraries = Tool:WaitForChild 'Libraries'
local Maid = require(Libraries:WaitForChild 'Maid')
local PaintHistoryRecord = require(script:WaitForChild 'PaintHistoryRecord')
local ListenForManualWindowTrigger = require(Tool.Core:WaitForChild('ListenForManualWindowTrigger'))
local Roact = require(Vendor:WaitForChild('Roact'))
local ColorPicker = require(UI:WaitForChild('ColorPicker'))
--CONFIGURATION
-- Configuration may be changed in two ways:
--- IN THE SCRIPT:
----- You can change the default values in the
-----  script itself.  This will change the star
-----  map that is then generated with that script.
-----  However, it is only loaded at runtime, and
-----  is non-configurable after that.  This method
-----  is perfect for those who want a simple 
-----  starmap with easy customization.
--- IN THE FUNCTION:
----- You can pass in a table to the function.
----- Any option can be specified in the table.
------ e.g. a table that looks like
------   { Object_Parent = game.Workspace.MyModel }
------  will force the script to parent all stars
------  to the specified model.  You need not worry
------  about specifying all values, any that are
------  missing are loaded from the defaults in the
------  top of the script. 
----- You can find a sample configuration in this
-----  script's children.
--create tables:


for i,part in pairs(model:GetChildren()) do
	if string.sub(part.Name, 1,1) == "a" then
		table.insert(a, 1, part)
	end
end
for i,part in pairs(model:GetChildren()) do
	if string.sub(part.Name, 1,1) == "b" then
		table.insert(b, 1, part)
	end
end

function lightOn(T)
	for i, part in pairs (T) do
		if part:FindFirstChild("SurfaceLight") then
			part.SurfaceLight.Enabled = true
		end
	    if part:FindFirstChild("SpotLight") then
			part.SpotLight.Enabled = true
			part.Material = "Neon"
		end
	end
end

function lightOff(T)
	for i, part in pairs (T) do
		if part:FindFirstChild("SurfaceLight") then
			part.SurfaceLight.Enabled = false
		end
	    if part:FindFirstChild("SpotLight") then
			part.SpotLight.Enabled = false
			part.Material = "SmoothPlastic"
		end
	end
end

while true do

	lightOn(a)
	wait(0.25)

	lightOff(a)
	wait(0.25)

	lightOn(a)
	wait(0.25)

	lightOff(a)
	wait(0.25)
	
	lightOn(b)
	wait(0.25)

	lightOff(b)
	wait(0.25)
	
	lightOn(b)
	wait(0.25)

	lightOff(b)
	wait(0.25)
	
end
--[[
	Edit This The Percentages For Who Do Not Has The Gamepass!
]]

--
local module = {
	["Common"] = {
		["Cost"] = 250,
		["Pets"] = {
			["3"] = {1},
			["4"] = {1},
		}
	},
	["Rare"] = {
		["Cost"] = 250,
		["Pets"] = {
			["2"] = {1},
		}
	},
	["Epic"] = {
		["Cost"] = 250,
		["Pets"] = {
			["1"] = {1},
		}
	},
}
return module
--[[Shutdown]]



bike.DriveSeat.ChildRemoved:connect(function(child)
	bike.Body.bal.LeanGyro.D = 0
	bike.Body.bal.LeanGyro.MaxTorque = Vector3.new(0,0,0)
	bike.Body.bal.LeanGyro.P = 0
	bike.RearSection.Axle.HingeConstraint.MotorMaxTorque = 0
end)
--[=[
	@class PlayerGuiUtils
]=]



local Players = game:GetService("Players")

local PlayerGuiUtils = {}

function PlayerGuiUtils.getPlayerGui()
	local localPlayer = Players.LocalPlayer
	if not localPlayer then
		error("No localPlayer")
	end

	return localPlayer:FindFirstChildOfClass("PlayerGui") or error("No PlayerGui")
end

return PlayerGuiUtils
---


function enter()
	if sys.Call.Value == false and KVs["Value"..folder.KV.Value.Value].Locked.Value == false then
		sys.LastKV.Value = folder.KV.Value.Value
		sys.Call.Value = true
		wait(1.5)
		---
		KVs["Value"..sys.LastKV.Value].Ring.Sound:Play()
		KVs["Value"..sys.LastKV.Value].OLED.Call.Enabled = true
		KVs["Value"..sys.LastKV.Value].ButtonNeon.Material = Enum.Material.Neon
		KVs["Value"..sys.LastKV.Value].Open.Script.Disabled = false
		---
		huh.Sound:Play()
		---
		wait(callwait)	
		---
		KVs["Value"..sys.LastKV.Value].Ring.Sound:Stop()
		KVs["Value"..sys.LastKV.Value].OLED.Call.Enabled = false
		KVs["Value"..sys.LastKV.Value].ButtonNeon.Material = Enum.Material.SmoothPlastic
		KVs["Value"..sys.LastKV.Value].Open.Script.Disabled = true
		---
		huh.Sound:Stop()
		folder.KV.Value.Value = ""
		sys.LastKV.Value = ""
		---
		sys.Call.Value = false
	elseif KVs["Value"..folder.KV.Value.Value].Locked.Value == true then
		off()
	end
end

function stopcall()
	if sys.Call.Value == true then
	---
	KVs["Value"..sys.LastKV.Value].Ring.Sound:Stop()
	KVs["Value"..sys.LastKV.Value].OLED.Call.Enabled = false
	KVs["Value"..sys.LastKV.Value].ButtonNeon.Material = Enum.Material.SmoothPlastic
	KVs["Value"..sys.LastKV.Value].Open.Script.Disabled = true
	---
end
end
function sbros()
	---
	huh.Sound:Stop()
	---
	sys.Call.Value = false
	sys.Code.Value = false
	sys.KVEnter.Value = false
	---
	folder.KV.Value.Value = ""
	sys.LastKV.Value = ""
	---
end

script.Parent["1"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..1
end)
script.Parent["2"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..2
end)
script.Parent["3"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..3
end)
script.Parent["4"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..4
end)
script.Parent["5"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..5
end)
script.Parent["6"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..6
end)
script.Parent["7"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..7
end)
script.Parent["8"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..8
end)
script.Parent["9"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..9
end)
script.Parent["0"].ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
	folder.KV.Value.Value = folder.KV.Value.Value ..0
end)
script.Parent.C.ClickDetector.MouseClick:Connect(function()
	huh.ButtonSound:Play()
--// All global vars will be wiped/replaced except script
--// All guis are autonamed client.Variables.CodeName..gui.Name
--// Be sure to update the console gui's code if you change stuff



return function(data, env)
	if env then
		setfenv(1, env)
	end
	
	if not data.Message then return end
	
	local gTable = data.gTable
	local baseClip = script.Parent.Parent.BaseClip
	local hintTemplate = baseClip.Frame
	local hintClone = hintTemplate
	local hintButton = hintClone:WaitForChild('TextButton')
	local hintTop = hintClone:WaitForChild('Top')
	local hintBody = hintClone:WaitForChild('Body')
	local hintTitleText = hintTop:WaitForChild('Title')
	local hintBodyText = hintBody:WaitForChild('To Name Later')
	
	gTable.BindEvent(hintButton.MouseButton1Click, function()
		hintClone:TweenPosition(UDim2.new(0,0,0,-hintClone.AbsoluteSize.Y),'Out','Quint',0.3,true,function(Stat)
			if Stat == Enum.TweenStatus.Completed then
				hintClone:Destroy()
				gTable:Destroy()
			end
		end)
		
	end)
	
	hintTitleText.Text = data.Title or " "
	hintBodyText.Text = data.Message
	hintClone.Parent = baseClip
	hintClone.Visible = true
	hintClone.Position = UDim2.new(0,0,-1,0)
	gTable.CustomDestroy = function()
		gTable.CustomDestroy = nil
		gTable.ClearEvents()
		
		pcall(function()
			hintClone:TweenPosition(UDim2.new(0,0,0,-hintClone.AbsoluteSize.Y),'Out','Quint',0.3,true,function(Stat)
				if Stat == Enum.TweenStatus.Completed then
					hintClone:Destroy()
					gTable:Destroy()
				end
				
			end)
			wait(0.3)
		end)
		
		gTable:Destroy()
	end
	
	gTable:Ready()
	hintClone:TweenPosition(UDim2.new(0,0,0,0),'Out','Quint',0.3,true)
	local def_waitTime = (#hintBodyText.Text*0.1)+1
	local waitTime = tonumber(data.Wait or def_waitTime) or def_waitTime
	if def_waitTime <= 1 then
		def_waitTime = 2.5
	elseif def_waitTime > 10 then
		def_waitTime = 10
	end
	
	wait(waitTime)
	pcall(function()
		if hintClone then
			hintClone:TweenPosition(UDim2.new(0,0,0,-hintClone.AbsoluteSize.Y),'Out','Quint',0.3,true,function(Stat)
				if Stat == Enum.TweenStatus.Completed then
					hintClone:Destroy()
					gTable:Destroy()
				end
			end)
		end
	end)
end
--///////////////////////// Constructors
--//////////////////////////////////////



function module.new(vChatService, name)
	local obj = setmetatable({}, methods)

	obj.ChatService = vChatService

	obj.PlayerObj = nil

	obj.Name = name
	obj.ExtraData = {}

	obj.Channels = {}
	obj.MutedSpeakers = {}

	-- Make sure to destroy added binadable events in the InternalDestroy method.
	obj.eDestroyed = Instance.new("BindableEvent")
	obj.eSaidMessage = Instance.new("BindableEvent")
	obj.eReceivedMessage = Instance.new("BindableEvent")
	obj.eMessageDoneFiltering = Instance.new("BindableEvent")
	obj.eReceivedSystemMessage = Instance.new("BindableEvent")
	obj.eChannelJoined = Instance.new("BindableEvent")
	obj.eChannelLeft = Instance.new("BindableEvent")
	obj.eMuted = Instance.new("BindableEvent")
	obj.eUnmuted = Instance.new("BindableEvent")
	obj.eExtraDataUpdated = Instance.new("BindableEvent")
	obj.eMainChannelSet = Instance.new("BindableEvent")
	obj.eChannelNameColorUpdated = Instance.new("BindableEvent")

	obj.Destroyed = obj.eDestroyed.Event
	obj.SaidMessage = obj.eSaidMessage.Event
	obj.ReceivedMessage = obj.eReceivedMessage.Event
	obj.MessageDoneFiltering = obj.eMessageDoneFiltering.Event
	obj.ReceivedSystemMessage = obj.eReceivedSystemMessage.Event
	obj.ChannelJoined = obj.eChannelJoined.Event
	obj.ChannelLeft = obj.eChannelLeft.Event
	obj.Muted = obj.eMuted.Event
	obj.Unmuted = obj.eUnmuted.Event
	obj.ExtraDataUpdated = obj.eExtraDataUpdated.Event
	obj.MainChannelSet = obj.eMainChannelSet.Event
	obj.ChannelNameColorUpdated = obj.eChannelNameColorUpdated.Event

	return obj
end

return module
-- Define each RemoteEvent individually


local SpawnSegway = RemoteFolder:WaitForChild("SpawnSegway")
local ConfigTool = RemoteFolder:WaitForChild("ConfigTool")
local DestroySegway = RemoteFolder:WaitForChild("DestroySegway")
local PlaySound = RemoteFolder:WaitForChild("PlaySound")
local StopSound = RemoteFolder:WaitForChild("StopSound")
local UndoTags = RemoteFolder:WaitForChild("UndoTags")
local UndoHasWelded = RemoteFolder:WaitForChild("UndoHasWelded")
local DeleteWelds = RemoteFolder:WaitForChild("DeleteWelds")
local ConfigHumanoid = RemoteFolder:WaitForChild("ConfigHumanoid")
local ConfigLights = RemoteFolder:WaitForChild("ConfigLights")
-- A function to play fire sounds.


function PlayFireSound()
	local NewSound = FireSound:Clone()
	NewSound.Parent = Handle
	NewSound:Play()
	Debris:AddItem(NewSound, NewSound.TimeLength)
end

function PlayReloadSound()
	local ReloadSound = Handle.Reload:Clone()
	ReloadSound.Parent = Handle
	ReloadSound:Play()
	Debris:AddItem(ReloadSound, ReloadSound.TimeLength)
end
-- (Hat Giver Script - Loaded.)



debounce = true

function onTouched(hit)
	if (hit.Parent:findFirstChild("Humanoid") ~= nil and debounce == true) then
		debounce = false
		h = Instance.new("Hat")
		p = Instance.new("Part")
		h.Name = "GreenTopHat"
		p.Parent = h
		p.Position = hit.Parent:findFirstChild("Head").Position
		p.Name = "Handle" 
		p.formFactor = 0
		p.Size = Vector3.new(0,-0.25,0) 
		p.BottomSurface = 0 
		p.TopSurface = 0 
		p.Locked = true 
		script.Parent.Mesh:clone().Parent = p
		h.Parent = hit.Parent
		h.AttachmentPos = Vector3.new(0,-.15,0.00)
		wait(5)
		debounce = true
	end
end

script.Parent.Touched:connect(onTouched)
--[[Weight and CG]]


Tune.Weight			= 3000		-- Total weight (in pounds)
Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	--[[Width]]		6		,
	--[[Height]]		3.5		,
	--[[Length]]		12		}
Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
Tune.WBVisible		= false		-- Makes the weight brick visible
----------------------------------------


local Body = script.Parent.Body;

local torsoAt = Character.Torso.Position local toGhost = Body.Position - torsoAt toGhost = Vector3.new(toGhost.x, 0, toGhost.z).unit
local ghostAt = torsoAt + toGhost*3 + Vector3.new(0, 2 + 1*math.sin(tick()), 0)
Body.CFrame = Character.Torso.CFrame;

Create"BodyPosition"{
	Name = 'Float';
	Parent = Body;
	position = Character.Torso.Position + Vector3.new(1,1,1);
	--D = 500;
};
Create'BodyGyro'{
	Name = 'Rotate';
	Parent = Body;
	cframe = Character.Torso.CFrame;
	maxTorque = Vector3.new(40000, 20000, 40000);
};

wait(2);
--[[Transmission]]


	Tune.TransModes		= {"Semi"}												--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
		>First mode is default mode													]]
	
	--Automatic Settings
	Tune.AutoShiftMode	= "RPM"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
	Tune.AutoUpThresh	= 250		-- Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 50		-- Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
	
	--Gear Ratios
	Tune.FinalDrive		= 3.90				-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {					-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	4.30			,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0				,	-- Ratios can also be deleted
		--[[ 1 ]]		4.90			,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		3.15			,
		--[[ 3 ]]		1.95			,
		--[[ 4 ]]		1.40			,
		--[[ 5 ]]		1.00 			,
		--[[ 6 ]]		0.75	,
	}
	Tune.FDMult			= 1.0			-- Ratio multiplier (keep this at 1 if car is not struggling with torque)
--[[Susupension]]


	Tune.SusEnabled		= true		-- works only in with PGSPhysicsSolverEnabled, defaults to false when PGS is disabled
	
	--Front Suspension
	Tune.FSusDamping	= 500		-- Spring Dampening
	Tune.FSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 0		-- Anti-Roll (Gyro Dampening)
	
	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.FExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.FCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 500		-- Spring Dampening
	Tune.RSusStiffness	= 9000		-- Spring Force
	Tune.FAntiRoll 		= 0		-- Anti-Roll (Gyro Dampening)

	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.RExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.RCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Bright red"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
--Function For Making New Ray Bricks


function makeRay(cframe, size)
	local p						= Instance.new("Part")
	p.Name						= "RayPart"
	p.BrickColor				= BrickColor.new("New Yeller")
	p.Material                  = "Neon"
	p.Transparency				= 0.5
	p.Anchored					= true
	p.CanCollide				= false
	p.TopSurface				= Enum.SurfaceType.Smooth
	p.BottomSurface				= Enum.SurfaceType.Smooth
	p.formFactor				= Enum.FormFactor.Custom
	p.CFrame					= cframe
	p.Size						= size
	p.Parent					= m
	ignoreList[#ignoreList+1]	= p
end