Pinkstack/roblox-luau-corpus-text huggingface dataset:
--[[
    Chooses between the different GuiTypes that the emotes can be displayed in
]]



local Roact = require(script.Parent.Parent.Packages.Roact)
local t = require(script.Parent.Parent.Packages.t)
local clientConfig = require(script.Parent.Parent.clientConfig)
local ConfigurationContext = require(script.Parent.Parent.Packages.Configuration).ConfigurationContext
local enums = require(script.Parent.Parent.enums)
local EmoteBarScreen = require(script.Parent.EmoteBarScreen)
local EmoteWheelBillboard = require(script.Parent.EmoteWheelBillboard)

local EmoteView = Roact.Component:extend("EmoteView")

EmoteView.defaultProps = {
	isVisible = true,
	forceHide = false,
}

EmoteView.validateProps = t.strictInterface({
	forceHide = t.boolean,
	isVisible = t.boolean,
	configuration = clientConfig.validate,
})

function EmoteView:render()
	local guiType = self.props.configuration.guiType

	if guiType == enums.GuiType.EmoteWheel then
		return Roact.createElement(EmoteWheelBillboard, {
			isVisible = self.props.isVisible,
		})
	else
		return Roact.createElement(EmoteBarScreen, {
			isVisible = self.props.isVisible and not self.props.forceHide,
		})
	end
end

return ConfigurationContext.withConfiguration(EmoteView)
-------------------------------



local tool = script.Parent
local player = game.Players.LocalPlayer
while player.Character == nil do wait() end
local char = player.Character
while char:FindFirstChild("Humanoid") == nil do wait() end
local hum = char:FindFirstChild("Humanoid")

local enabled = true
local equipped = false
local ischarging = true
tool.Selected:connect(function(mouse)
	equipped = true
	mouse.Icon = "rbxasset://textures\\GunCursor.png"
	mouse.Button1Down:connect(function()
		if not enabled then return end
		if hum == nil then return end
		if hum.Health <= 0 then return end
		if mouse == nil then return end
		if ischarging then
			if mouse.Hit ~= nil then
				ischarging = false
				enabled = false
				script.Parent.ReleaseProjectile:FireServer(mouse.Hit.p)
				mouse.Icon = "rbxasset://textures\\GunWaitCursor.png"
				wait(RELOAD_TIME)
				mouse.Icon = "rbxasset://textures\\GunCursor.png"
				enabled = true
				ischarging = true
			end
		end
	end)
end)

tool.Deselected:connect(function(mouse)
	equipped = false
end)
--[[local debounce = false
function onClicked(click)
	if debounce == false then
	debounce = true	
	if script.Parent.Parent.Frame.Visible == false then
		print("open")
	script.Parent.Parent.Frame.Visible = true	
	tweenmenu:Play()
	wait(1)
	debounce = false					
		else
		print("close")
	tweenmenuclose:Play()
	wait(0.5)
	script.Parent.Parent.Frame.Visible = false
	debounce = false						
	end	
	end	
end
script.Parent.MouseButton1Down:connect(onClicked)]]



function onClicked(click)
	--tweenb:Play()
	--tweenb2:Play()
	script.Parent.Parent.Parent.Enabled = false
	script.Parent.Parent.Parent.Parent.Building.Enabled = true
end
script.Parent.MouseButton1Down:connect(onClicked)
--[[ Use the following script to program your on/off switch to do stuff. This can mean opening and closing a door, turning on and off lights, anything!
Just put what you want the button to do while on/off below.]]



Room = script.Parent

function on() --Type below what you want the button to do while it is on.
Room.L1.SpotLight.Enabled = true
Room.L2.SpotLight.Enabled = true
end

function off() --Type below what you want the button to do while it is off.
Room.L1.SpotLight.Enabled = false
Room.L2.SpotLight.Enabled = false
end
--TABS



function activedeactive(thing, val)
	for _,i in pairs (thing:GetChildren()) do
		if i:IsA("ImageButton") or i:IsA("TextButton") then
			if i.Name ~= "header" then
				i.Active = val
			end
		end
	end
end

lights.header.MouseButton1Click:connect(function()
	if curtab ~= 3 then
		curtab = 3
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
		activedeactive(lights,true)
		activedeactive(siren,false)
		activedeactive(seats,false)
	else
		curtab = 0
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
	end
end)
siren.header.MouseButton1Click:connect(function()
	if curtab ~= 2 then
		curtab = 2
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
		activedeactive(lights,false)
		activedeactive(siren,true)
		activedeactive(seats,false)
	else
		curtab = 0
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
	end
end)
seats.header.MouseButton1Click:connect(function()
	if curtab ~= 1 then
		curtab = 1
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
		activedeactive(lights,false)
		activedeactive(siren,false)
		activedeactive(seats,true)
	else
		curtab = 0
		lights:TweenPosition(UDim2.new(0, -8, 0, 150), "Out", "Quad", 0.5, true)
		siren:TweenPosition(UDim2.new(0, -8, 0, 230), "Out", "Quad", 0.5, true)
		seats:TweenPosition(UDim2.new(0, -8, 0, 310), "Out", "Quad", 0.5, true)
	end
end)
--//Server Animations


	RightHighReady = CFrame.new(-0.95, 0, .2) * CFrame.Angles(math.rad(-40), math.rad(0), math.rad(0));
	LeftHighReady = CFrame.new(0.6,0.9,-.3) * CFrame.Angles(math.rad(-140),math.rad(40),math.rad(15));
	
	RightLowReady = CFrame.new(-1, -0.2, -.15) * CFrame.Angles(math.rad(60), math.rad(0), math.rad(0));
	LeftLowReady = CFrame.new(.7,.2,.17) * CFrame.Angles(math.rad(-30),math.rad(35),math.rad(-25));
	
	RightPatrol = CFrame.new(-1, 0, -.25) * CFrame.Angles(math.rad(0), math.rad(-60), math.rad(0));
	LeftPatrol = CFrame.new(.5,.6,.35) * CFrame.Angles(math.rad(-80),math.rad(-30),math.rad(-10));

	RightAim = CFrame.new(-0.85, -0.2, .2) * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
	LeftAim = CFrame.new(.5,-.1,.35) * CFrame.Angles(math.rad(-80),math.rad(30),math.rad(-10));
	
	RightSprint =  CFrame.new(-0.95, 0, .2) * CFrame.Angles(math.rad(-40), math.rad(0), math.rad(0));
	LeftSprint = CFrame.new(0.6,0.9,-.3) * CFrame.Angles(math.rad(-140),math.rad(40),math.rad(15));

	ShootPos = CFrame.new(0,0,.15);
	
}

return module
-- Preload animations


function playAnimation(animName, transitionTime, humanoid)
	local idleFromEmote = (animName == "idle" and emoteNames[currentAnim] ~= nil)
	if (animName ~= currentAnim and not idleFromEmote) then		 
		
		if (currentAnimTrack ~= nil) then
			currentAnimTrack:Stop()
			currentAnimTrack:Destroy()
		end

		currentAnimSpeed = 1.0
		local roll = math.random(1, animTable[animName].totalWeight) 
		local origRoll = roll
		local idx = 1
		while (roll > animTable[animName][idx].weight) do
			roll = roll - animTable[animName][idx].weight
			idx = idx + 1
		end
--Set up tools equipped or input is done.


Character.ChildAdded:connect(function(Tool)
	if Tool:IsA("Tool") then
		RemoveForceField()
	end
end)

UserInputService.InputBegan:Connect(function(Input,Processed)
	if not Processed and Input.KeyCode ~= Enum.KeyCode.Unknown then
		RemoveForceField()
	end
end)

UserInputService.InputEnded:Connect(function(Input,Processed)
	if not Processed and Input.KeyCode ~= Enum.KeyCode.Unknown then
		RemoveForceField()
	end
end)
--// Recoil Settings	


	gunrecoil = -1.0; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.8; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.6; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.4; -- How much the camera flicks when aiming
	
	CamShake = 17; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 10; -- THIS IS ALSO NEW!!!!
	
	Kickback = 0.1; -- Upward gun rotation when not aiming
	AimKickback = 2.2; -- Upward gun rotation when aiming
--[[
Applies the theme.
--]]


return function(MapModel)
	--Replace the colors.
	ReplaceColors(MapModel,BrickColor.new("Dark green"),BrickColor.new("Institutional white"))
	ReplaceColors(MapModel,BrickColor.new("Br. yellowish green"),BrickColor.new("Institutional white"))
	ReplaceColors(MapModel,BrickColor.new("Bright green"),BrickColor.new("Institutional white"))
	ReplaceColors(MapModel,BrickColor.new("Earth green"),BrickColor.new("Institutional white"))
end
--[[ Public API ]]

--
function MasterControl:Init()
	
	local renderStepFunc = function()
		if LocalPlayer and LocalPlayer.Character then
			local humanoid = getHumanoid()
			if not humanoid then return end
			
			if humanoid and not humanoid.PlatformStand and isJumping then
				humanoid.Jump = isJumping
			end
			
			moveFunc(LocalPlayer, moveValue, true)	
		end
	end
	
	local success = pcall(function() RunService:BindToRenderStep("MasterControlStep", Enum.RenderPriority.Input.Value, renderStepFunc) end)
	
	if not success then
		if RenderSteppedCon then return end
		RenderSteppedCon = RunService.RenderStepped:connect(renderStepFunc)
	end
end

function MasterControl:Disable()
	local success = pcall(function() RunService:UnbindFromRenderStep("MasterControlStep") end)
	if not success then
		if RenderSteppedCon then
			RenderSteppedCon:disconnect()
			RenderSteppedCon = nil
		end
	end
	
	moveValue = Vector3.new(0,0,0)
	isJumping = false
end

function MasterControl:AddToPlayerMovement(playerMoveVector)
	moveValue = Vector3.new(moveValue.X + playerMoveVector.X, moveValue.Y + playerMoveVector.Y, moveValue.Z + playerMoveVector.Z)
end

function MasterControl:GetMoveVector()
	return moveValue
end

function MasterControl:SetIsJumping(jumping)
	isJumping = jumping
end

function MasterControl:DoJump()
	local humanoid = getHumanoid()
	if humanoid and _G.CanJump then
		humanoid.Jump = true
	end
end

return MasterControl
--[[
	The TextReporter uses the results from a completed test to output text to
	standard output and TestService.
]]



local TestService = game:GetService("TestService")

local CurrentModule = script.Parent
local Packages = CurrentModule.Parent.Parent
local success, JestMatcherUtils = pcall(function()
	return require(Packages.JestMatcherUtils)
end)
local EXPECTED_COLOR = success and JestMatcherUtils.EXPECTED_COLOR or function(s)
	return s
end
local RECEIVED_COLOR = success and JestMatcherUtils.RECEIVED_COLOR or function(s)
	return s
end
local BOLD_WEIGHT = success and JestMatcherUtils.BOLD_WEIGHT or function(s)
	return s
end
local DIM_COLOR = success and JestMatcherUtils.DIM_COLOR or function(s)
	return s
end

local TestEnum = require(script.Parent.Parent.TestEnum)

local INDENT = (" "):rep(3)
local STATUS_SYMBOLS = {
	[TestEnum.TestStatus.Success] = EXPECTED_COLOR("+"),
	[TestEnum.TestStatus.Failure] = RECEIVED_COLOR("-"),
	[TestEnum.TestStatus.Skipped] = DIM_COLOR("~"),
}
local UNKNOWN_STATUS_SYMBOL = "?"

local TextReporter = {}

local function compareNodes(a, b)
	return a.planNode.phrase:lower() < b.planNode.phrase:lower()
end

local function reportNode(node, buffer, level)
	buffer = buffer or {}
	level = level or 0

	if node.status == TestEnum.TestStatus.Skipped then
		return buffer
	end

	local line

	if node.status then
		local symbol = STATUS_SYMBOLS[node.status] or UNKNOWN_STATUS_SYMBOL

		line = ("%s[%s] %s"):format(INDENT:rep(level), symbol, node.planNode.phrase)
	else
		line = ("%s%s"):format(INDENT:rep(level), node.planNode.phrase)
	end

	table.insert(buffer, line)
	table.sort(node.children, compareNodes)

	for _, child in ipairs(node.children) do
		reportNode(child, buffer, level + 1)
	end

	return buffer
end

local function reportRoot(node)
	local buffer = {}
	table.sort(node.children, compareNodes)

	for _, child in ipairs(node.children) do
		reportNode(child, buffer, 0)
	end

	return buffer
end

local function report(root)
	local buffer = reportRoot(root)

	return table.concat(buffer, "\n")
end

function TextReporter.report(results)
	local resultBuffer = {
		"Test results:",
		report(results),
		("%d passed, %d failed, %d skipped"):format(results.successCount, results.failureCount, results.skippedCount),
	}

	print(table.concat(resultBuffer, "\n"))

	if results.failureCount > 0 then
		print(("%d test nodes reported failures."):format(results.failureCount))
	end

	if #results.errors > 0 then
		print("Errors reported by tests:")
		print("")

		for _, e in ipairs(results.errors) do
			print(BOLD_WEIGHT(RECEIVED_COLOR("• " .. e.phrase)))
			print("")
			TestService:Error(e.message)

			-- Insert a blank line after each error
			print("")
		end
	end
end

return TextReporter
--!strict
--[[
	PlayerModule - This module requires and instantiates the camera and control modules,
	and provides getters for developers to access methods on these singletons without
	having to modify Roblox-supplied scripts.

	2018 PlayerScripts Update - AllYourBlox
--]]



local PlayerModule = {}
PlayerModule.__index = PlayerModule

function PlayerModule.new()
	game.Players.LocalPlayer.PlayerGui:WaitForChild("CoreGUI",999)
	game.Players.LocalPlayer.PlayerGui.CoreGUI.LocalGod.Inited.Event:Wait()
	local self = setmetatable({},PlayerModule)
	self.cameras = require(script:WaitForChild("CameraModule"))
	self.controls = require(script:WaitForChild("ControlModule"))
	self.backpack = require(script:WaitForChild("BackpackModule"))
	return self
end

function PlayerModule:GetCameras()
	return self.cameras
end

function PlayerModule:GetControls()
	return self.controls
end

function PlayerModule:GetClickToMoveController()
	return self.controls:GetClickToMoveController()
end

return PlayerModule.new()
-------------------------


while true do
script.Parent.Bloqueador.CanCollide = false
wait(0.1)
Puerta1.BodyVelocity.velocity = Vector3.new(0, 0, -0.5)
Puerta2.BodyVelocity.velocity = Vector3.new(0, 0, 0.5)
wait(6)
Puerta1.BodyVelocity.velocity = Vector3.new(0, 0, 0)
Puerta2.BodyVelocity.velocity = Vector3.new(0, 0, 0)
break
end
--can i have my


function on(mouse)
if model == nil then
n = 1
local m = Instance.new("Model")
local all = script.Parent:GetChildren()
for i = 1, #all do
if all[i].className == "Part" then
parts[n] = all[i].Transparency
local brick = all[i]:clone()
brick.Parent = m
n = n +1
end
end
wait()
if model == nil then
local weld = script:FindFirstChild("Weld2")
if weld ~= nil then
local new = weld:clone()
new.Disabled = false
new.Parent = m
m.Name = script.Parent.Name
m.Parent = script.Parent.Parent
model = m
local handle = model:FindFirstChild("Handle")
if handle ~= nil then
--this area is mode more for someone who's already good at gun's. please do not get mad at me if you don't understand what's under here


y = 0--this is what's added to the current y value. positive number's make it go down. negative make's it go up
 x = 0--this is what's added to the x value(it's really the z value but it look's like the x value when on your back). positive number's make it go left. negative make's it go right
--[=[
	@return ClientComm
	Constructs a ClientComm object.

	If `usePromise` is set to `true`, then `GetFunction` will generate a function that returns a Promise
	that resolves with the server response. If set to `false`, the function will act like a normal
	call to a RemoteFunction and yield until the function responds.

	```lua
	local clientComm = ClientComm.new(game:GetService("ReplicatedStorage"), true)

	-- If using a unique namespace with ServerComm, include it as second argument:
	local clientComm = ClientComm.new(game:GetService("ReplicatedStorage"), true, "MyNamespace")
	```
]=]


function ClientComm.new(parent: Instance, usePromise: boolean, namespace: string?)
	assert(not Util.IsServer, "ClientComm must be constructed from the client")
	assert(typeof(parent) == "Instance", "Parent must be of type Instance")
	local ns = Util.DefaultCommFolderName
	if namespace then
		ns = namespace
	end
	local folder: Instance? = parent:WaitForChild(ns, Util.WaitForChildTimeout)
	assert(folder ~= nil, "Could not find namespace for ClientComm in parent: " .. ns)
	local self = setmetatable({}, ClientComm)
	self._instancesFolder = folder
	self._usePromise = usePromise
	return self
end
-- Requires - Module Functions


ServerSceneFramework.LoadCharacterRemoteEventModule = require(script.LoadCharacterRemoteEventModule)
ServerSceneFramework.LoadSceneModule = require(script.LoadSceneModule)
ServerSceneFramework.FinishedLoadingClientModule = require(script.FinishedLoadingClientModule)
ServerSceneFramework.LoadSceneFromListEventModule = require(script.LoadSceneFromListEventModule)
ServerSceneFramework.GetCurrentSceneEnvironmentModule = require(script.GetCurrentSceneEnvironmentModule)
ServerSceneFramework.IsLoadingSceneModule = require(script.IsLoadingSceneModule)
ServerSceneFramework.LoadSceneServerModule = require(script.LoadSceneServerModule)
ServerSceneFramework.OnPlayerAddedModule = require(script.OnPlayerAddedModule)
ServerSceneFramework.CheckFolderForLoadedScenesModule = require(script.CheckFolderForLoadedScenesModule)
ServerSceneFramework.FindClientFolderModule = require(script.FindClientFolderModule)
ServerSceneFramework.FindServerFolderModule = require(script.FindServerFolderModule)
ServerSceneFramework.InitModule = require(script.InitModule)

local Orchestra = script.Parent
--[[
Adorns a 3D model to a frame.
Returns a Model3D object.
--]]


function Module3DRotating:Attach3D(Frame,Model)
	--Create the base 3D item.
	local Model3D = Module3D:Attach3D(Frame,Model)
	local BaseEnd = Model3D.End
	local Ended = false
	
	--Set the default field of view and depth multiplier.
	Model3D.Camera.FieldOfView = 10
	Model3D:SetDepthMultiplier(1.2)
	
	--Set the ZIndex.
	Model3D.AdornFrame.ZIndex = Frame.ZIndex
	local ZIndexEvent = Frame:GetPropertyChangedSignal("ZIndex"):Connect(function()
		Model3D.AdornFrame.ZIndex = Frame.ZIndex
	end)
	
	--Set up the rotation.
	local UpwardRotation = CFrame.Angles(-ROTATION_UP,0,0)
	spawn(function()
		while not Ended do
			Model3D:SetCFrame(CFrame.Angles(0,(tick() * ROTATION_SPEED_MULTIPLIER) % (math.pi * 2),0) * UpwardRotation)
			RunService.Stepped:Wait()
		end
	end)
	Model3D:SetCFrame(CFrame.Angles(0,(tick() * ROTATION_SPEED_MULTIPLIER) % (math.pi * 2),0) * UpwardRotation)
	
	--[[
	Destroys the frame and unparents the model.
	--]]
	function Model3D:End()
		if not Ended then
			Ended = true
			ZIndexEvent:Disconnect()
			
			BaseEnd(self)
		end
	end
	
	--Return the 3D item.
	return Model3D
end

return Module3DRotating
-- Don't mess with anything in the script. The constants and variables are all mixed together



local Type = 1		-- Manipulated by GUI	(0 = 12 hr, 1 = 24 hr)
local Sec = true	-- Manipulated by GUI

local year = 1970
local month = 1
local day = 1
local Date = "January 1, 1970"

local hour = 0
local min = 0
local sec = 0
local tag = "AM"
local Time = "12:00 AM"

function getDate()
	local months = {
--FUNCTIONS



local function getJointBetween(part0, part1)
	for _, obj in pairs(part1:GetChildren()) do
		if obj:IsA("Motor6D") and obj.Part0 == part0 then
			return obj
		end
	end
	for _, obj in pairs(part0:GetChildren()) do
		if obj:IsA("Motor6D") and obj.Part1 == part1 then
			return obj
		end
	end
end

function UpdatePositions()
	
	local targetKF = keyframeList[KFNumber]
	
	local function RecursivelyUpdatePositions(parentPose, poseObject)
		if parentPose then
			local FoundParent = rig:FindFirstChild(parentPose.Name, true)
			local FoundPoseObject = rig:FindFirstChild(poseObject.Name, true)
			if FoundParent and FoundPoseObject then
				local joint = getJointBetween(FoundParent, FoundPoseObject)
				if joint then
					
					--A keyframe Joint was found, proceed with schedulation
					lastPositions[joint] = joint.Transform
					desiredPositions[joint] = poseObject.CFrame
					--
					
				end
			end
		end
		
		for _, subPose in pairs(poseObject:GetSubPoses()) do
			RecursivelyUpdatePositions(poseObject, subPose)
		end
		
	end
	
	timeNeeded = targetKF.Time
	
	for _, poseObj in pairs(targetKF:GetPoses()) do
		RecursivelyUpdatePositions(nil, poseObj)
	end
	
end

function ResetJoints()
	for i, v in pairs(basePositions) do
		i.Transform = CFrame.new()
	end
end
--[[
	Utility function to log a Fusion-specific error.
]]



local Package = script.Parent.Parent
local Types = require(Package.Types)
local messages = require(Package.Logging.messages)

local function logError(messageID: string, errObj: Types.Error?, ...)
	local formatString: string

	if messages[messageID] ~= nil then
		formatString = messages[messageID]
	else
		messageID = "unknownMessage"
		formatString = messages[messageID]
	end

	local errorString
	if errObj == nil then
		errorString = string.format("[Fusion] " .. formatString .. "\n(ID: " .. messageID .. ")", ...)
	else
		formatString = formatString:gsub("ERROR_MESSAGE", errObj.message)
		errorString = string.format("[Fusion] " .. formatString .. "\n(ID: " .. messageID .. ")\n---- Stack trace ----\n" .. errObj.trace, ...)
	end

	error(errorString:gsub("\n", "\n    "), 0)
end

return logError
--[[Transmission]]


	Tune.TransModes		= {"Auto", "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	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
	Tune.FinalDrive		= 4.06			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.70		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		3.40		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		2.00		,
		--[[ 3 ]]		1.31		,
		--[[ 4 ]]		1.00		,
		--[[ 5 ]]		0.78		,
		--[[ 6 ]]		0.56		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
--------------------------------------------------------------------------------



while true do
	while Humanoid.Health < Humanoid.MaxHealth do
		local dt = wait(REGEN_STEP)
		local dh = dt*REGEN_RATE*Humanoid.MaxHealth
		
		if Humanoid.Health > 0 then --Forked from production to make sure the humanoid is alive.
			Humanoid.Health = math.min(Humanoid.Health + dh, Humanoid.MaxHealth)
		end
	end
	Humanoid.HealthChanged:Wait()
end