Roblox/luau_corpus huggingface dataset:
--[[Steering]]
	Tune.SteerInner		= 65    	-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 65		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .45		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .4		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 900		-- Steering Dampening
	Tune.SteerMaxTorque	= 30000		-- Steering Force
	Tune.SteerP			= 6000		-- Steering Aggressiveness
--[[
By AxisAngle, (Trey Reynolds)
Documentation
http://www.roblox.com/item.aspx?id=227509468

Region constructors:
	Region Region.new(CFrame RegionCFrame, Vector3 RegionSize)
		>Returns a new Region object

	Region Region.FromPart(Instance Part)
		>Returns a new Region objects


Region methods:
	table Region:Cast([Instance or table Ignore])
		>Returns all parts in the Region, ignoring the Ignore

	bool Region:CastPart(Instance Part)
		>Returns true if Part is within Region, false otherwise

	table Region:CastParts(table Parts)
		>Returns a table of all parts within the region

	bool Region:CastPoint(Vector3 Point)
		>Returns true if Point intersects Region, false otherwise

	bool Region:CastSphere(Vector3 SphereCenter, number SphereRadius)
		>Returns true if Sphere intersects Region, false otherwise

	bool Region:CastBox(CFrame BoxCFrame, Vector3 BoxSize)
		>Returns true if Box intersects Region, false otherwise



Region properties: (Regions are mutable)
	CFrame	CFrame
	Vector3	Size
	Region3	Region3



Region functions:
	Region3 Region.Region3BoundingBox(CFrame BoxCFrame, Vector3 BoxSize)
		>Returns the enclosing boundingbox of Box

	table Region.FindAllPartsInRegion3(Region3 Region3, [Instance or table Ignore])
		>Returns all parts within a Region3 of any size

	bool Region.BoxPointCollision(CFrame BoxCFrame, Vector3 BoxSize, Vector3 Point)
		>Returns true if the Point is intersecting the Box, false otherwise

	bool Region.BoxSphereCollision(CFrame BoxCFrame, Vector3 BoxSize, Vector3 SphereCenter, number SphereRadius)
		>Returns true if the Sphere is intersecting the Box, false otherwise

	bool Region.BoxCollision(CFrame Box0CFrame, Vector3 Box0Size, CFrame Box1CFrame, Vector3 Box1Size, [bool AssumeTrue])
		>Returns true if the boxes are intersecting, false otherwise
		If AssumeTrue is left blank, it does the full check to see if Box0 is intersecting Box1
		If AssumeTrue is true, it skips the heavy check and assumes that any part that could possibly be in the Region is
		If AssumeTrue is false, it skips the heavy check and assumes that any part that could possible be outside the Region is
	
	bool Region.CastPoint(Vector3 Point, [Instance or table Ignore])
		>Returns true if the point intersects a part, false otherwise
]]

local Region={}



local BoxPointCollision do
	local VecDiv=CFrame.new().pointToObjectSpace--Right Division, yo.
	function BoxPointCollision(CFrame,Size,Point)
		local Relative	=VecDiv(CFrame,Point)
		local sx,sy,sz	=Size.x/2,Size.y/2,Size.z/2
		local rx,ry,rz	=Relative.x,Relative.y,Relative.z
		return			rx*rx<sx*sx and rx*rx<sx*sx and rx*rx<sx*sx
	end
end



local BoxSphereCollision do
	local VecDiv=CFrame.new().pointToObjectSpace--Right Division, yo.
	function BoxSphereCollision(CFrame,Size,Center,Radius)
		local Relative	=VecDiv(CFrame,Center)
		local sx,sy,sz	=Size.x/2,Size.y/2,Size.z/2
		local rx,ry,rz	=Relative.x,Relative.y,Relative.z
		local dx		=rx>sx and rx-sx--Faster than if statement
						or rx<-sx and rx+sx
						or 0
		local dy		=ry>sy and ry-sy
						or ry<-sy and ry+sy
						or 0
		local dz		=rz>sz and rz-sz
						or rz<-sz and rz+sz
						or 0
		return dx*dx+dy*dy+dz*dz<Radius*Radius
	end
end
--[[
	This view holds all the logic and user experience for the finished user interface view.
]]
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SoundService = game:GetService("SoundService")

local ClientPlayerStatusHandler = require(game.ReplicatedStorage.Source.Player.ClientPlayerStatusHandler)
local GetReadableTime = require(ReplicatedStorage.Source.Common.GetReadableTime)
local translate = require(ReplicatedStorage.Dependencies.GameUtils.TranslateUtils).translate

local Players = game.Players
local LocalPlayer = Players.LocalPlayer
local UserId = LocalPlayer.UserId

local Finished = {}

local elements = ReplicatedStorage.UIViews.Keyboard.Finished
local sounds = ReplicatedStorage.SFX.NonDiagetic
local activeElements

local successSound = sounds.Success:Clone()
successSound.Parent = SoundService
--------------------------------------------
local Body = script.Parent

local Head = Body:WaitForChild("Head")
local Hum = Body:WaitForChild("Humanoid")
local Core = Body:WaitForChild("HumanoidRootPart")
local IsR6 = (Hum.RigType.Value==0)
local Trso = (IsR6 and Body:WaitForChild("Torso")) or Body:WaitForChild("UpperTorso")
local Neck = (IsR6 and Trso:WaitForChild("Neck")) or Head:WaitForChild("Neck")	
local Waist = (not IsR6 and Trso:WaitForChild("Waist"))

local NeckOrgnC0 = Neck.C0
local WaistOrgnC0 = (not IsR6 and Waist.C0)

local LookingAtValue = Instance.new("ObjectValue"); LookingAtValue.Parent = Body; LookingAtValue.Name = "LookingAt"
-- RocketPropulsion Fields
local TARGET_RADIUS = 5
local MAX_SPEED = 75
local MAX_TORQUE = Vector3.new(4e6, 4e6, 0)
local MAX_THRUST = 50000
local THRUST_P = 500
local THRUST_D = 50000

local TARGET_OVERSHOOT_DISTANCE = 10000000

local ROCKET_MESH_ID = 'http://www.roblox.com/asset/?id=94690081'
local ROCKET_MESH_SCALE = Vector3.new(2.5, 2.5, 2)
local ROCKET_PART_SIZE = Vector3.new(1, 1, 4)
-- / Variables / --

local BodyPosition = script.bodyPosition.Value;
local BodyGyro = script.bodyGyro.Value;

local CarModel = BodyPosition.Parent;

local CarStartupSound = script.CarStartup;
local CarEngine = script.CarEngine;

local carSettings = {
	["E"] = {false, Vector3.new(0, 25, 0)},
	["Q"] = {false, Vector3.new(0,-25, 0)},
	["A"] = {false, 5},
	["D"] = {false, -5},
	["W"] = {false, CFrame.new(50, 0, 0)},
	["S"] = {false, CFrame.new(-50,0, 0)}
}

local accelerationSettings = {
	inc = 1, -- per second
	max = 10,
}
--[[ LawlR fix ]]--

local ds = game:GetService("Debris")
local ps = game:GetService("Players")

local rng = Random.new()

local star = script.Parent
local starOwner = star:WaitForChild("Owner").Value
local hitSound = star.Hit

local ownerName = starOwner.Name
local dmg = 23
local lifetime = 10

local stuck


local function tagHum(hum)
	local tag = Instance.new("ObjectValue")
	tag.Name = "creator"
	tag.Value = starOwner
	tag.Parent = hum
	ds:AddItem(tag, 2)
end

local function isTeamMate(hitPlr)
	return (hitPlr and starOwner and not hitPlr.Neutral and not starOwner.Neutral and hitPlr.TeamColor == starOwner.TeamColor)
end

local function weld(obj, hit)
	local Weld = Instance.new("Weld")
	Weld.Part0 = obj
	Weld.Part1 = hit
	local HitCFrame = CFrame.new(obj.Position)
	Weld.C0 = obj.CFrame:ToObjectSpace(HitCFrame)
	Weld.C1 = hit.CFrame:ToObjectSpace(HitCFrame)
	Weld.Parent = obj
end


star.Touched:Connect(function(hit)
	if not stuck then
		weld(star, hit)
		stuck = true
		hitSound:Play()
		
		local hitHum = hit.Parent:FindFirstChildWhichIsA("Humanoid") or hit.Parent.Parent:FindFirstChildWhichIsA("Humanoid")
		if hitHum and hitHum.Health > 0 then
			local hitChr = hitHum.Parent
			if hitChr then
				if hitChr.Name ~= ownerName then
					local hitPlr = ps:GetPlayerFromCharacter(hitChr)
					if hitPlr and isTeamMate(hitPlr) then
						return
					end
					tagHum(hitHum)
					hitHum:TakeDamage(dmg * ((hitChr:FindFirstChild("NinjaMaskOfShadows") and 2) or 1))
				end
			end
		end
	end
end)

ds:AddItem(star, lifetime)
-- Gui elements
local PlayerGui = player.PlayerGui
local GameplayUi = PlayerGui.GameplayUi
local Tutorial = PlayerGui.Tutorial
local TutorialPanels = Tutorial.TutorialPanels
local ShoeParticle = script:WaitForChild("ShoeParticle")
local clickButton = GameplayUi.ClickButton
local cooldown = false
--

frame.controls_page.ban.MouseEnter:Connect(function()
	if (hovering and down) then
		properties.hovering.Value = "ban"

		tween_service:Create(control_page.ban, info_quick, {BackgroundTransparency = .9}):Play()
		tween_service:Create(control_page.ban.scale, info_quick, {Scale = 1.2}):Play()
		tween_service:Create(control_page.ban.stroke, info_quick, {Thickness = 2}):Play()

		exe_module:notify("Ban", .5, "red")
	end
end)

frame.controls_page.ban.MouseLeave:Connect(function()
	properties.hovering.Value = ""

	tween_service:Create(control_page.ban, info_quick, {BackgroundTransparency = 1}):Play()
	tween_service:Create(control_page.ban.scale, info_quick, {Scale = 1}):Play()
	tween_service:Create(control_page.ban.stroke, info_quick, {Thickness = 0}):Play()
end)
-->> Settings
local DefaultMaxRatePerSec = 10
local DefaultIdentifier = "Identifier"
--//Controller//--
repeat 
	task.wait()
	
	Camera.CameraType = Enum.CameraType.Scriptable
	Camera.CFrame = CameraPart.CFrame
until

Camera.CameraType == Enum.CameraType.Scriptable

task.wait(5)

TweenService:Create(
	CutsceneFrame,
	
	TweenInfo.new(
		1
	),
	
	{
		Transparency = 0
	}
):Play()

task.wait(2)

repeat 
	task.wait()

	Camera.CameraType = Enum.CameraType.Custom
	
	CutsceneGui.CinematicFrame1.Transparency = 1
	CutsceneGui.CinematicFrame2.Transparency = 1

until

Camera.CameraType == Enum.CameraType.Custom


TweenService:Create(
	CutsceneFrame,

	TweenInfo.new(
		1
	),

	{
		Transparency = 1
	}
):Play()

Debris:AddItem(CutsceneGui, 1)
--[[Engine]]
	--Torque Curve
	Tune.Horsepower		= 350		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000		--		Use sliders to manipulate values
	Tune.Redline		= 6700		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16
	
	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
--[[
	Constructor for a new CameraModule.

	Parameters:
	- camera (Camera): current camera of the LocalPlayer
]]
function CameraModule.new(camera, tweenService)
	local self = {
		initialCFrame = nil,
		camera = camera,
		surfaceGui = nil,
		tweenService = tweenService or TweenService,
	}
	setmetatable(self, CameraModule)

	return self
end
--[=[
	@class Component

	Bind components to Roblox instances using the Component class and CollectionService tags.

	To avoid confusion of terms:
	- `Component` refers to this module.
	- `Component Class` (e.g. `MyComponent` through this documentation) refers to a class created via `Component.new`
	- `Component Instance` refers to an instance of a component class.
	- `Roblox Instance` refers to the Roblox instance to which the component instance is bound.

	Methods and properties are tagged with the above terms to help clarify the level at which they are used.
]=]
local Component = {}
Component.__index = Component
--WeldRec(P.Parent.Lights)

for _,v in pairs(weldedParts) do
	if v:IsA("BasePart") then
		v.Anchored = false
	end
end

script:Destroy()
-- Effect Stop

	Model.Configuration.Ballywho.Value = 0
	Model.Configuration.ColorRand.Value = 0
-- Decompiled with the Synapse X Luau decompiler.

local v1 = {};

	for v2, v3 in ipairs((game.ReplicatedStorage.Game.Abilities:GetChildren())) do
	if not v2 then
		break;
	end;
	local v5 = v3:FindFirstChildOfClass("ModuleScript");
	if v5 then
		v1[v3.Name] = require(v5);
	end;
end;
return v1;
--print("Finished:",l)
--print("AmFinished:",Finished)
end)
end
repeat wait() until Finished >= AF
local Time = 0
repeat Time = Time+0.03 wait(0.03) until Time >= WaitTime or Close
--[[Wheel Alignment]]
	--[Don't physically apply alignment to wheels]
	--[Values are in degrees]
	Tune.FCamber		= -2
	Tune.RCamber		= -2
	Tune.FToe			= 0
	Tune.RToe			= 0
--[=[
	Returns the current value for the given player. This value
	will depend on if `SetFor` or `SetFilter` has affected the
	custom value for the player. If so, that custom value will
	be returned. Otherwise, the top-level value will be used
	(e.g. value from `Set`).

	```lua
	-- Set top level data:
	remoteProperty:Set("Data")
	print(remoteProperty:GetFor(somePlayer)) --> "Data"

	-- Set custom data:
	remoteProperty:SetFor(somePlayer, "CustomData")
	print(remoteProperty:GetFor(somePlayer)) --> "CustomData"

	-- Set top level again, overriding custom data:
	remoteProperty:Set("NewData")
	print(remoteProperty:GetFor(somePlayer)) --> "NewData"

	-- Set custom data again, and set top level without overriding:
	remoteProperty:SetFor(somePlayer, "CustomData")
	remoteProperty:SetTop("Data")
	print(remoteProperty:GetFor(somePlayer)) --> "CustomData"

	-- Clear custom data to use top level data:
	remoteProperty:ClearFor(somePlayer)
	print(remoteProperty:GetFor(somePlayer)) --> "Data"
	```
]=]
function RemoteProperty:GetFor(player: Player): any
	local playerValue = self._perPlayer[player]
	local value = if playerValue == nil then self._value elseif playerValue == None then nil else playerValue
	return value
end
--[[Engine]]
	--Torque Curve
	Tune.Horsepower		= 200		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000		--		Use sliders to manipulate values
	Tune.Redline		= 6700		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16
	
	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
--[[
This rotated region3 module is a bit different than the one I previously wrote. This uses GJK to do the collision calculations and 
as such does not calculate the minimum translation vector. In addition it does not calculate the intersection points anymore either. 
I don't think that had much place in a rotated region3 module.

As far as new features the module now supports a vast array of shapes and point clouds meaning more accurate collision!

API:

Constructors:
	region.new(cframe, size)
		> Creates a region from a cframe which acts as the center of the region and size which extends to 
		> the corners like a block part.
	region.block(cframe, size)
		> This is the exact same as the region.new constructor, but has a different name.
	region.wedge(cframe, size)
		> Creates a region from a cframe which acts as the center of the region and size which extends to 
		> the corners like a wedge part.
	region.cornerWedge(cframe, size)
		> Creates a region from a cframe which acts as the center of the region and size which extends to 
		> the corners like a cornerWedge part.
	region.cylinder(cframe, size)
		> Creates a region from a cframe which acts as the center of the region and size which extends to 
		> the corners like a cylinder part.
	region.ellipsoid(cframe, size)
		> Creates a region from a cframe which acts as the center of the region and size which extends to 
		> the corners like a ball part.
	region.pointCloud(cloud)
		> Creates a region from a table of points. The region is treated as a convex 3D shape when doing the collision detections.
	region.fromPart(part)
		> Creates a region from a part in the game. It can be used on any base part, but the region 
		> will treat unknown shapes (meshes, unions, etc) as block shapes.

Methods:
	region:cast(ignore instance or table (descendants as well), int maxParts)
		> returns a table full of parts that are inside the region
	region:castPart(basePart)
		> returns a boolean as to whether or not a given part is within a region or not
	region:castPoint(vector3)
		> returns a boolean as to whether or not a given point is within a region or not
	
Properties:
	region.CFrame
		> cframe that represents the center of the region
	region.Size
		> vector3 that represents the size of the region
--]]

local gjk = require(script:WaitForChild("gjk"));
local support = require(script:WaitForChild("supports"));
local vertices = require(script:WaitForChild("vertices"));
local draw = require(script:WaitForChild("draw"));

local region3 = {};
local region3_mt = {__index = region3};
--[[ 
Button created by Truenus. I will help you how to make a startup script. Or simply, you can just copy-paste into another car.
Touching some of the scripts can break the car. I advise you not touch these scripts.
--]]
wait(0.2) -- Removing this wait could break the script. Please do not touch this.
--Tune
local WheelieButton = "T"
local DeadZone = 30
--- Equip/UnEquip
local Tool = script.Parent

Tool.Equipped:Connect(function()
	Tool.Equip.Value = true
end)

Tool.Unequipped:Connect(function()
	Tool.Equip.Value = false
end)
-- goro7

local plr = game.Players.LocalPlayer

function update()
	
	-- Calculate scale
	local scale = (plr.PlayerGui.MainGui.AbsoluteSize.Y) / script.Parent.Parent.Size.Y.Offset
	if scale > 1.5 then
		scale = 1.5
	end
	if scale > 0 then
		script.Parent.Scale = scale
	end
	
end

plr.PlayerGui:WaitForChild("MainGui"):GetPropertyChangedSignal("AbsoluteSize"):connect(update)
update()
--BasedWeld2.0
local JS = game:GetService("JointsService")
function MakeWeld(x,y,type,s) 
	if type==nil then type="Weld" end
	local W=Instance.new(type,JS) 
	W.Part0=x W.Part1=y 
	W.C0=x.CFrame:inverse()*x.CFrame 
	W.C1=y.CFrame:inverse()*x.CFrame 
	if type=="Motor" and s~=nil then 
		W.MaxVelocity=s 
	end 
	return W	
end

function ModelWeld(a,b) 
	if a:IsA("BasePart") then 
		MakeWeld(b,a,"Weld") 
	elseif a:IsA("Model") then 
		for i,v in pairs(a:GetChildren()) do 
			ModelWeld(v,b) 
		end 
	end 
end

function UnAnchor(a) 
	if a:IsA("BasePart") then a.Anchored=false  end for i,v in pairs(a:GetChildren()) do UnAnchor(v) end 
end
--[[Dependencies]]

local player = game:GetService("Players").LocalPlayer
local mouse = player:GetMouse()
local UserInputService = game:GetService("UserInputService")
local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local _Tune2 = car["A-Chassis Tune"].Upgrades
--------END LIGHTED RECTANGLES--------
--------SIDE DOOR--------

game.Workspace.rightsidedoor.l1.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.rightsidedoor.l2.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.rightsidedoor.l3.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.rightsidedoor.l4.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.rightsidedoor.l5.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
--script.Parent.MouseClick:Connect(function()
--	script.Parent.MaxActivationDistance = 0
--	TweenA:Play()
--	wait(7)
--	TweenB:Play()
--	wait(3)
--	script.Parent.MaxActivationDistance = 20
--end)

function onClick(click)
	if click.TeamColor == BrickColor.new("White")then
			TweenA:Play()
		wait(7)
		TweenB:Play()
	end
end

script.Parent.MouseClick:Connect(onClick)
--------LEFT DOOR --------
game.Workspace.doorleft.l11.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l21.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l31.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l41.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l51.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l61.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.doorleft.l73.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
--[=[
	`Construct` is called before the component is started, and should be used
	to construct the component instance.

	```lua
	local MyComponent = Component.new({Tag = "MyComponent"})

	function MyComponent:Construct()
		self.SomeData = 32
		self.OtherStuff = "HelloWorld"
	end
	```
]=]
function Component:Construct()
end
-- CastBehavior.CosmeticBulletTemplate = CosmeticBullet -- Uncomment if you just want a simple template part and aren't using PartCache
CastBehavior.CosmeticBulletProvider = CosmeticPartProvider -- Comment out if you aren't using PartCache.

CastBehavior.CosmeticBulletContainer = CosmeticBulletsFolder
-- Listeners
SpawnSegway.OnServerEvent:connect(function(Player,Character,MaxSpeed,TurnSpeed,Tool,SpawnedSegway,Color)
	Functions.SpawnSegway(Player,Character,MaxSpeed,TurnSpeed,Tool,SpawnedSegway,Color)
end)

ConfigTool.OnServerEvent:connect(function(Player,Transparency,Tool,ShouldColor,Color)
	Functions.ConfigTool(Transparency,Tool,ShouldColor,Color)
end)

DestroySegway.OnServerEvent:connect(function(Player,Character,SpawnedSegway)
	Functions.DestroySegway(Character,SpawnedSegway)
end)

PlaySound.OnServerEvent:connect(function(Player,Sound,Pitch,Volume)
	Functions.PlaySound(Sound,Pitch,Volume)
end)

StopSound.OnServerEvent:connect(function(Player,Sound,Volume)
	Functions.StopSound(Sound,Volume)
end)

AnchorSegway.OnServerEvent:connect(function(Player,PrimaryPart,Anchored)
	Functions.AnchorPart(PrimaryPart,Anchored)
end)

UndoTags.OnServerEvent:connect(function(Player,SegwayObject,WeldObject,Thruster,TiltMotor)
	Functions.UndoTags(SegwayObject,WeldObject,Thruster,TiltMotor)
end)

UndoHasWelded.OnServerEvent:connect(function(Player,SeaterObject)
	Functions.UndoHasWelded(SeaterObject)
end)

function DeleteWelds.OnServerInvoke(Player,Part)
	Functions.DeleteWelds(Part)
	return true
end

ConfigHumanoid.OnServerEvent:connect(function(Player,Humanoid,PlatformStand,Jump,AutoRotate)
	Functions.ConfigHumanoid(Player.Character,Humanoid,PlatformStand,Jump,AutoRotate)
end)

ConfigLights.OnServerEvent:connect(function(Player,Transparency,Color,Bool,Material,Lights,Notifiers)
	Functions.ConfigLights(Transparency,Color,Bool,Material,Lights,Notifiers)
end)
--[=[
	Utility functions to observe the state of Roblox. This is a very powerful way to query
	Roblox's state.

	:::tip
	Use RxInstanceUtils to program streaming enabled games, and make it easy to debug. This API surface
	lets you use Roblox as a source-of-truth which is very valuable.
	:::

	@class RxInstanceUtils
]=]

local require = require(script.Parent.loader).load(script)

local Brio = require("Brio")
local Maid = require("Maid")
local Observable = require("Observable")
local Rx = require("Rx")
local Symbol = require("Symbol")

local UNSET_VALUE = Symbol.named("unsetValue")

local RxInstanceUtils = {}
-- Listen to level changes
upgrades.Changed:Connect(function()
	Level.Text = upgrades.Value
end)

points.Changed:Connect(updateUpgrades)
GameplayUi:GetPropertyChangedSignal("Enabled"):Connect(toggleEnabled)
LobbyButton.Activated:Connect(toggleLobby)
humanoid.Died:Connect(function() ChangeController:FireServer(true) toggleLobby() end)