Roblox/luau_corpus huggingface dataset:
--[=[
	Constructs a new CancelToken that cancels whenever the maid does.

	@param maid Maid
	@return CancelToken
]=]
function CancelToken.fromMaid(maid)
	local token = CancelToken.new(EMPTY_FUNCTION)

	local taskId = maid:GiveTask(function()
		token:_cancel()
	end)

	token.PromiseCancelled:Then(function()
		maid[taskId] = nil
	end)

	return token
end
--// Variables
local L_1_ = game.Players.LocalPlayer
local L_2_ = L_1_.Character

local L_3_ = game.ReplicatedStorage:WaitForChild('ACS_Engine')
local L_5_ = L_3_:WaitForChild('GameRules')
local L_7_ = L_3_:WaitForChild('HUD')
--CHANGE THIS LINE-- (Turn)
Turn = script.Parent.Parent.Parent.ControlBox.TurnValues.TurnSignal1 -- Change last word
-- VisualComponents by Travis, modified for native visuals. 

for i,v in pairs(script.Setup:GetChildren()) do
	v.Parent = game:GetService("StarterGui")
end
script.UsualOpenVideo.Parent = game:GetService("ServerScriptService")
script:Destroy()
-- 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'))
--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
--//Server Relay
event.OnServerEvent:Connect(function(player)
	event:FireAllClients(player) --Tell all the clients that this player is double jumping
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
-- ROBLOX FIXME: workaround for defult generic param
export type Expect_ = Expect<MatcherState>

type Constructable = {
	new: (...Array<any>) -> any,
}
--///////////////////////// 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")
-- Decompiled with the Synapse X Luau decompiler.

local v1 = {};
local l__ReplicatedStorage__2 = game.ReplicatedStorage;
local v3 = require(game.ReplicatedStorage.Modules.Lightning);
local v4 = require(game.ReplicatedStorage.Modules.Xeno);
local v5 = require(game.ReplicatedStorage.Modules.CameraShaker);
local l__TweenService__6 = game.TweenService;
local l__Debris__7 = game.Debris;
function v1.RunStompFx(p1, p2, p3, p4)
	local v8 = game.ReplicatedStorage.KillFX.Deletion.Thimg:Clone();
	v8.Parent = p2;
	local v9 = game.ReplicatedStorage.KillFX.Deletion.Sound:Clone();
	v9.Parent = p2;
	v9:Play();
	for v10, v11 in pairs(v8:GetDescendants()) do
		if v11:IsA("ImageLabel") then
			game.TweenService:Create(v11, TweenInfo.new(1.5, Enum.EasingStyle.Bounce, Enum.EasingDirection.Out), {
				Size = UDim2.fromScale(1, 1), 
				ImageTransparency = 0
			}):Play();
		end;
	end;
	task.delay(3, function()
		for v12, v13 in pairs(v8:GetDescendants()) do
			if v13:IsA("ImageLabel") then
				game.TweenService:Create(v13, TweenInfo.new(1, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {
					ImageTransparency = 1
				}):Play();
			end;
		end;
	end);
	for v14, v15 in pairs(p2.Parent:GetDescendants()) do
		if not (not v15:IsA("BasePart")) or not (not v15:IsA("MeshPart")) or v15:IsA("Decal") then
			game:GetService("TweenService"):Create(v15, TweenInfo.new(0.5), {
				Transparency = 1
			}):Play();
		end;
	end;
	return nil;
end;
return v1;
--------------------) Settings
Damage = 0 -- the ammout of health the player or mob will take

Cooldown = 10 -- cooldown for use of the tool again

ZoneModelName = "Sea of Blood" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage
--edit the function below to return true when you want this response/prompt to be valid
--player is the player speaking to the dialogue, and dialogueFolder is the object containing the dialogue data
return function(player, dialogueFolder)
	local plrData = require(game.ReplicatedStorage.Source.Modules.Util):GetPlayerData(player)
	return plrData.Character.Purity.Value <= -100
end
-- Holding Services
Players = game:GetService("Players")
ReplicatedStorage = game:GetService("ReplicatedStorage")
ServerStorage = game:GetService("ServerStorage")

TweenService = game:GetService("TweenService")
Chat = game:GetService("Chat")
-- 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