Roblox/luau_corpus huggingface dataset:
-- TODO: Remove when we figure out ContextActionService without sinking keys
local function onShiftInputBegan(inputObject, isProcessed)
	if isProcessed then return end
	if inputObject.UserInputType == Enum.UserInputType.Keyboard and
		(inputObject.KeyCode == Enum.KeyCode.LeftShift or inputObject.KeyCode == Enum.KeyCode.RightShift) then
		--
		mouseLockSwitchFunc()
	end
end

local function enableShiftLock()
	IsShiftLockMode = isShiftLockMode()
	if IsShiftLockMode then
		if ScreenGui then
			ScreenGui.Parent = PlayerGui
		end
		if IsShiftLocked then
			Mouse.Icon = SHIFT_LOCK_CURSOR
			ShiftLockController.OnShiftLockToggled:Fire()
		end
		if not IsActionBound then
			InputCn = UserInputService.InputBegan:connect(onShiftInputBegan)
			IsActionBound = true
		end
	end
end

GameSettings.Changed:connect(function(property)
	if property == 'ControlMode' then
		if GameSettings.ControlMode == Enum.ControlMode.MouseLockSwitch then
			enableShiftLock()
		else
			disableShiftLock()
		end
	elseif property == 'ComputerMovementMode' then
		if GameSettings.ComputerMovementMode == Enum.ComputerMovementMode.ClickToMove then
			disableShiftLock()
		else
			enableShiftLock()
		end
	end
end)

LocalPlayer.Changed:connect(function(property)
	if property == 'DevEnableMouseLock' then
		if LocalPlayer.DevEnableMouseLock then
			enableShiftLock()
		else
			disableShiftLock()
		end
	elseif property == 'DevComputerMovementMode' then
		if LocalPlayer.DevComputerMovementMode == Enum.DevComputerMovementMode.ClickToMove or
			LocalPlayer.DevComputerMovementMode == Enum.DevComputerMovementMode.Scriptable then
			--
			disableShiftLock()
		else
			enableShiftLock()
		end
	end
end)

LocalPlayer.CharacterAdded:connect(function(character)
	-- we need to recreate guis on character load
	if not UserInputService.TouchEnabled then
		initialize()
	end
end)
--[[
	DataStore2: A wrapper for data stores that caches, saves player's data, and uses berezaa's method of saving data.
	Use require(1936396537) to have an updated version of DataStore2.

	DataStore2(dataStoreName, player) - Returns a DataStore2 DataStore

	DataStore2 DataStore:
	- Get([defaultValue])
	- Set(value)
	- Update(updateFunc)
	- Increment(value, defaultValue)
	- BeforeInitialGet(modifier)
	- BeforeSave(modifier)
	- Save()
	- SaveAsync()
	- OnUpdate(callback)
	- BindToClose(callback)

	local coinStore = DataStore2("Coins", player)

	To give a player coins:

	coinStore:Increment(50)

	To get the current player's coins:

	coinStore:Get()
--]]

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ServerStorage = game:GetService("ServerStorage")

local Constants = require(script.Constants)
local Promise = require(script.Promise)
local SavingMethods = require(script.SavingMethods)
local Settings = require(script.Settings)
local TableUtil = require(script.TableUtil)
local Verifier = require(script.Verifier)

local SaveInStudioObject = ServerStorage:FindFirstChild("SaveInStudio")
local SaveInStudio = SaveInStudioObject and SaveInStudioObject.Value

local function clone(value)
	if typeof(value) == "table" then
		return TableUtil.clone(value)
	else
		return value
	end
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.numberConstrained(min, max)
	assert(t.number(min))
	assert(t.number(max))
	local minCheck = t.numberMin(min)
	local maxCheck = t.numberMax(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
-- Initialize tool subsystems
MoveTool.HandleDragging = require(script:WaitForChild 'HandleDragging')
	.new(MoveTool)
MoveTool.FreeDragging = require(script:WaitForChild 'FreeDragging')
	.new(MoveTool)
MoveTool.UIController = require(script:WaitForChild 'UIController')
	.new(MoveTool)

function MoveTool:Equip()
	-- Enables the tool's equipped functionality

	-- Set our current axis mode
	self:SetAxes(self.Axes)

	-- Start up our interface
	self.UIController:ShowUI()
	self:BindShortcutKeys()
	self.FreeDragging:EnableDragging()

end

function MoveTool:Unequip()
	-- Disables the tool's equipped functionality

	-- If dragging, finish dragging
	if self.FreeDragging.IsDragging then
		self.FreeDragging:FinishDragging()
	end

	-- Disable dragging
	ContextActionService:UnbindAction 'BT: Start dragging'

	-- Clear unnecessary resources
	self.UIController:HideUI()
	self.HandleDragging:HideHandles()
	self.Maid:Destroy()
	BoundingBox.ClearBoundingBox();
	SnapTracking.StopTracking();

end

function MoveTool:SetAxes(AxisMode)
	-- Sets the given axis mode

	-- Update setting
	self.Axes = AxisMode
	self.AxesChanged:Fire(self.Axes)

	-- Disable any unnecessary bounding boxes
	BoundingBox.ClearBoundingBox();

	-- For global mode, use bounding box handles
	if AxisMode == 'Global' then
		BoundingBox.StartBoundingBox(function (BoundingBox)
			self.HandleDragging:AttachHandles(BoundingBox)
		end)

	-- For local mode, use focused part handles
	elseif AxisMode == 'Local' then
		self.HandleDragging:AttachHandles(Selection.Focus, true)

	-- For last mode, use focused part handles
	elseif AxisMode == 'Last' then
		self.HandleDragging:AttachHandles(Selection.Focus, true)
	end

end
--[[**
	ensures Lua primitive userdata type

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]
t.userdata = t.type("userdata")
-- Returns the radius of the spread, but projected into screen space.
-- @param Camera camera
-- @return number
function SpreadSimulator:GetSpreadScreenMagnitude(camera)
	
	local cameraCFrame = camera.CFrame
	local spreadDirection = self:GetSpreadDirectionCircumferenceVector(camera.CFrame)
	
	local spreadPosition = cameraCFrame.Position + cameraCFrame.LookVector * Spread_Distance_From_Camera + spreadDirection 
	
	local centerPoint, onScreen1 = camera:WorldToScreenPoint(cameraCFrame.Position + cameraCFrame.LookVector * Spread_Distance_From_Camera)
	
	local screenPoint, onScreen2 = camera:WorldToScreenPoint(spreadPosition)
	
	-- If one of the points are not on screen then we can't do much with math
	if not onScreen1 or not onScreen2 then return end
	
	local spreadPoint = Vector2.new(screenPoint.x, screenPoint.y)
	local centerPoint = Vector2.new(centerPoint.x, centerPoint.y)
	
	local distance = (spreadPoint - centerPoint).Magnitude * 2 -- Radius times 2
	
	return distance
end
p
return SpreadSimulator
-- SERVICES --
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerStorage = game:GetService("ServerStorage")

local LAST_PAY = 0
local LAST_RAISE = tick()
local HAS_TO_PAY = 25

local Root = script.Parent

Root.PayRent.OnServerEvent:Connect(function(p)
	if tick() - LAST_PAY > 60 then
		p.leaderstats.Money.Value += HAS_TO_PAY
		LAST_PAY = tick()
	end
end)

Root.RaiseRent.OnServerEvent:Connect(function(p)
	if tick() - LAST_RAISE > 60 then
		HAS_TO_PAY += 5
		LAST_PAY = tick()
	end
end)
--wait(120)
local all,last = {}
local isSusp = false
local isWheel= false
function scan(p)
	for _,v in pairs(p:GetChildren()) do
		if p.Name == "Suspension" then isSusp = true end
		if p.Parent.Name == "Wheels" then isWheel = true end
		if (v:IsA("BasePart") or v:IsA("UnionOperation") or v:IsA("Seat") or v:IsA("VehicleSeat") or v:IsA("MeshPart")) then
			if (last and not isSusp) then
				local w = Instance.new("Weld")
				w.Part0,w.Part1 = last,v 
				w.C0 = v.CFrame:toObjectSpace(last.CFrame):inverse()
				w.Parent = last
			end
			table.insert(all,v)
			last = v
		end
		scan(v)
	end
end
scan(script.Parent)

if isSusp then
	local c1 = script:Clone()
	local c2 = script:Clone()
	c1.Parent = script.Parent.RL
	c2.Parent = script.Parent.RR
end
for _,v in pairs(all) do 
	if ((not isWheel) or (isWheel and v.Name ~= "Wheel")) then
		v.CustomPhysicalProperties = PhysicalProperties.new(0.01,0,0,0,0)
		v.CanCollide = false	
	elseif isWheel and v.Name == "Wheel" then
		v.CustomPhysicalProperties = PhysicalProperties.new(0.2,0.7,0.5,1,1)
	else
		v.CustomPhysicalProperties = PhysicalProperties.new(0.7,1,0.5,1,1) --to change to vehicle weight
	end
	
end 

for _,v in pairs(all) do v.Anchored = true end

if script.Parent.Name == "Suspension" then

script.PATCHER.Parent = script.Parent.Parent
script.Parent.Parent.PATCHER.Disabled = false
end
-- Make the object appear when the ProximityPrompt is used
local function onPromptTriggered()
	if object then
		object.Parent = game.ServerStorage
		game.StarterGui.ScreenGui.TextLabel.Visible = true
		wait(1)
		game.StarterGui.ScreenGui.TextLabel.Visible= false
	end
end
-- Remove with FFlagPlayerScriptsBindAtPriority
function MouseLockController:OnInputBegan(input, processed)
	if processed then return end
	
	if input.UserInputType == Enum.UserInputType.Keyboard then
		for _, keyCode in pairs(self.boundKeys) do
			if keyCode == input.KeyCode then
				self:OnMouseLockToggled()
				return
			end
		end
	end
end

function MouseLockController:DoMouseLockSwitch(name, state, input)
	if state == Enum.UserInputState.Begin then 
		self:OnMouseLockToggled()
		return Enum.ContextActionResult.Sink
	end
	return Enum.ContextActionResult.Pass
end

function MouseLockController:BindContextActions()
	ContextActionService:BindActionAtPriority(CONTEXT_ACTION_NAME, function(name, state, input) self:DoMouseLockSwitch(name, state, input) end, 
		false, MOUSELOCK_ACTION_PRIORITY, unpack(self.boundKeys))
end

function MouseLockController:UnbindContextActions()
		ContextActionService:UnbindAction(CONTEXT_ACTION_NAME)
end

function MouseLockController:IsMouseLocked()
	return self.enabled and self.isMouseLocked
end

function MouseLockController:EnableMouseLock(enable)
	if enable~=self.enabled then
		
		self.enabled = enable

		if self.enabled then
			-- Enabling the mode
			if FFlagPlayerScriptsBindAtPriority then
				self:BindContextActions()
			else
				if self.inputBeganConn then
					self.inputBeganConn:Disconnect()
				end
				self.inputBeganConn = UserInputService.InputBegan:Connect(function(input, processed)
					self:OnInputBegan(input, processed)
				end)
			end
		else
			-- Disabling
			-- Restore mouse cursor
			if Mouse.Icon~="" then
				Mouse.Icon = ""
			end
			
			if FFlagPlayerScriptsBindAtPriority then
				self:UnbindContextActions()
			else
				if self.inputBeganConn then
					self.inputBeganConn:Disconnect()
				end
				self.inputBeganConn = nil
			end

			-- If the mode is disabled while being used, fire the event to toggle it off
			if self.isMouseLocked then
				self.mouseLockToggledEvent:Fire()
			end			
			
			self.isMouseLocked = false
		end		
		
	end
end

return MouseLockController
-- Local Functions
local function CreateRocket()
	local rocketCopy = RocketTemplate:Clone()
	rocketCopy.PrimaryPart.CFrame = CFrame.new(Configurations.StoragePosition.Value)
	rocketCopy.Parent = Storage
	rocketCopy.PrimaryPart:SetNetworkOwner(Owner)
	if(Owner) then
		rocketCopy.PrimaryPart.BrickColor = Owner.TeamColor
	end
	
	table.insert(Buffer, rocketCopy)
end

local function IntializeBuffer()	
	for i = 1, Configurations.BufferSize.Value do
		CreateRocket()
	end
end

local function ResetRocketOwner()

	for _, rocket in ipairs(Buffer) do
		rocket.PrimaryPart:SetNetworkOwner(Owner)
		if(Owner) then
			rocket.PrimaryPart.BrickColor = Owner.TeamColor
		end
	end
end

local function OnExplosionHit(part, distance)
	local player = Players:GetPlayerFromCharacter(part.Parent) or Players:GetPlayerFromCharacter(part.Parent.Parent)
	if not player then
		if part.Parent.Name ~= 'RocketLauncher' and part.Parent.Name ~= 'Flag' and not part.Anchored then
			local volume = part.Size.X * part.Size.Y * part.Size.Z
			if volume <= Configurations.MaxDestroyVolume.Value then
				if distance < Configurations.BlastRadius.Value * Configurations.DestroyJointRadiusPercent.Value then
					part:BreakJoints()
				end
				if #part:GetChildren() == 0 then
					wait(2 * volume)
					part:Destroy()
				end
			end
		end
	end
end

local function OnRocketHit(player, rocket, position)
	local explosion = Instance.new('Explosion', game.Workspace)
	explosion.ExplosionType = Enum.ExplosionType.NoCraters
	explosion.DestroyJointRadiusPercent = 0
	explosion.BlastRadius = Configurations.BlastRadius.Value
	explosion.BlastPressure = Configurations.BlastPressure.Value
	explosion.Position = position
	explosion.Hit:connect(function(part, distance) OnExplosionHit(part, distance, rocket) end)
	rocket.Part.Fire.Enabled = false
	wait(1)
	rocket:Destroy()
end

local function OnChanged(property)
	if property == 'Parent' then
		if Tool.Parent.Name == 'Backpack' then
			local backpack = Tool.Parent
			Owner = backpack.Parent
		elseif Players:GetPlayerFromCharacter(Tool.Parent) then
			Owner = Players:GetPlayerFromCharacter(Tool.Parent)
		else
			Owner = nil
		end
		ResetRocketOwner()
	end		
end

local function OnFireRocket(player, rocket)
	rocket.Rocket.Transparency = 0
	rocket.Part.Fire.Enabled = true
	CreateRocket()
end

local function DamagePlayer(hitPlayerId, player, damage)
	local hitPlayer = Players:GetPlayerByUserId(tonumber(hitPlayerId))
	if (hitPlayer.TeamColor == player.TeamColor and Configurations.FriendlyFire.Value) or hitPlayer.TeamColor ~= player.TeamColor then
		local humanoid = hitPlayer.Character:FindFirstChild('Humanoid')
		if humanoid then
			humanoid:TakeDamage(damage)
		end
	end
end

local function OnHitPlayers(player, hitPlayers)
	for hitPlayerId, _ in pairs(hitPlayers) do
		DamagePlayer(hitPlayerId, player, Configurations.SplashDamage.Value)
	end
end

local function OnDirectHitPlayer(player, hitPlayerId)
	DamagePlayer(hitPlayerId, player, Configurations.Damage.Value)
end
-- May return NaN or inf or -inf
-- This is a way of finding the angle between the two vectors:
local function findAngleBetweenXZVectors(vec2, vec1)
	return math.atan2(vec1.X*vec2.Z-vec1.Z*vec2.X, vec1.X*vec2.X + vec1.Z*vec2.Z)
end

local function CreateAttachCamera()
	local module = RootCameraCreator()
	
	local lastUpdate = tick()
	function module:Update()
		local now = tick()
		
		local camera = 	workspace.CurrentCamera
		local player = PlayersService.LocalPlayer
		
		if lastUpdate == nil or now - lastUpdate > 1 then
			module:ResetCameraLook()
			self.LastCameraTransform = nil
		end	
		
		local subjectPosition = self:GetSubjectPosition()		
		if subjectPosition and player and camera then
			local zoom = self:GetCameraZoom()
			if zoom <= 0 then
				zoom = 0.1
			end


			local humanoid = self:GetHumanoid()
			if lastUpdate and humanoid and humanoid.Torso then
				
				-- Cap out the delta to 0.1 so we don't get some crazy things when we re-resume from
				local delta = math.min(0.1, now - lastUpdate)
				local gamepadRotation = self:UpdateGamepad()
				self.RotateInput = self.RotateInput + (gamepadRotation * delta)		
				
				local forwardVector = humanoid.Torso.CFrame.lookVector

				local y = findAngleBetweenXZVectors(forwardVector, self:GetCameraLook())
				if IsFinite(y) then
					-- Preserve vertical rotation from user input
					self.RotateInput = Vector2.new(y, self.RotateInput.Y)
				end
			end

			local newLookVector = self:RotateCamera(self:GetCameraLook(), self.RotateInput)
			self.RotateInput = Vector2.new()


			camera.Focus = CFrame.new(subjectPosition)
			camera.CoordinateFrame = CFrame.new(camera.Focus.p - (zoom * newLookVector), camera.Focus.p)
			self.LastCameraTransform = camera.CoordinateFrame
		end
		lastUpdate = now
	end
	
	return module
end

return CreateAttachCamera
-- * Indicates whether the local player is in range of the `target` object
--
--   Arguments: None
--   Return: Boolean whether player is in range
-- *
local function inRange()
	local distance = player:DistanceFromCharacter(target.Position)
	return distance > 0 and distance <= MAX_DISTANCE -- Distance should only be 0 when character doesnt exist
end

local function toggleInteraction()
	if ((not (MainFrame.Visible or SelectionFrame.Visible or TopBar.Enabled)) and inRange()) then
		show()
	else
		hide()
	end
end

local function interactionCheck()
	if not IS_CONSOLE then
		if ((not (MainFrame.Visible or SelectionFrame.Visible or TopBar.Enabled)) and inRange()) then
			InteractionButton.Visible = true
		elseif not inRange() then
			InteractionButton.Visible = false
		end
	end
	
	if MainFrame.Visible and not inRange() then
		hide()
	end
end
-- Define your character and the desired walkspeed
local character = script.Parent
local desiredWalkspeed = 50  -- Change this value to your desired walkspeed
local defaultWalkspeed = 16  -- Change this to your desired default walkspeed
----------//Health HUD\\----------
BloodScreen:Play()
BloodScreenLowHP:Play()
Humanoid.HealthChanged:Connect(function(Health)
	SE_GUI.Efeitos.Health.ImageTransparency = ((Health - (Humanoid.MaxHealth/2))/(Humanoid.MaxHealth/2))
	SE_GUI.Efeitos.LowHealth.ImageTransparency = (Health /(Humanoid.MaxHealth/2))
end)
----------------------------------
------------FUNCTIONS-------------
----------------------------------

function WeldChanged(property)
	if property == "Parent" and SeatWeld.Parent == nil then
		SeatWeld = nil
		Deactivate()
		BreakSeatConnections()
		Piano.Bench.Seat.Disabled = true
		wait(1)
		Piano.Bench.Seat.Disabled = false
	end
end
function ChildAdded(child)
	if child:IsA("Weld") then
		local root = child.Part1
		local character = root.Parent
		local player = game.Players:GetPlayerFromCharacter(character)
		if player then
			SeatWeld = child
			Activate(player)
			MakeSeatConnections()
		end
	end
end
--- Same as indexing, but uses an incremented number as a key.
-- @param task An item to clean
-- @treturn number taskId
function Maid:GiveTask(task)
	if not task then
		error("Task cannot be false or nil", 2)
	end

	local taskId = #self._tasks+1
	self[taskId] = task

	if type(task) == "table" and (not task.Destroy) then
		warn("[Maid.GiveTask] - Gave table task without .Destroy\n\n" .. debug.traceback())
	end

	return taskId
end

function Maid:GivePromise(promise)
	if not promise:IsPending() then
		return promise
	end

	local newPromise = promise.resolved(promise)
	local id = self:GiveTask(newPromise)

	-- Ensure GC
	newPromise:Finally(function()
		self[id] = nil
	end)

	return newPromise
end
--//Controller//--
Humanoid.StateChanged:Connect(function(OldState, NewState)
	if NewState == Enum.HumanoidStateType.Jumping then
		local HumanoidDescription = Humanoid:GetAppliedDescription()
		
		if Settings.Scale <= 1 then
			Settings.Scale = 1
			
			HumanoidDescription.DepthScale = 1
			HumanoidDescription.WidthScale = 1
			
			Humanoid:ApplyDescription(HumanoidDescription)
			
			Humanoid.WalkSpeed = Humanoid.WalkSpeed + 4
			Humanoid.JumpPower = Humanoid.JumpPower + 15
			
			script:Destroy()
			
		else
			Settings.Scale = Settings.Scale - 0.1
			
			HumanoidDescription.DepthScale = Settings.Scale
			HumanoidDescription.WidthScale = Settings.Scale
			
			Humanoid:ApplyDescription(HumanoidDescription)
		end
	end
end)
-- sprinting

        local FOVChanges = {
	        FieldOfView = 90
        }
        local TweenInformation = TweenInfo.new(
	        1, --tween length
	        Enum.EasingStyle.Quint, --easing Style
	        Enum.EasingDirection.Out, --easing Direction
	        0, --repitition time
	        false, --reverse?
	        0 --delay				
        )

        local tween = TweeningService:Create(camera,TweenInformation,FOVChanges)
--//Main Function
ProximityPrompt.Triggered:Connect(function(Player)
	local Character = Player.Character
	local Torso = Character:WaitForChild("Right Arm")
	ProximityPrompt.ActionText = "Wear"
	if Character:FindFirstChild(script.Parent.Parent.Name) then
		Character[script.Parent.Parent.Name]:Destroy()
	else
		local NewArmor = Armor:Clone()
		NewArmor:SetPrimaryPartCFrame(Torso.CFrame)
		NewArmor.PrimaryPart:Destroy()
		ProximityPrompt.ActionText = "Take off"
		for _, part in pairs (NewArmor:GetChildren()) do
			if part:IsA("BasePart") then
				WeldParts(Torso, part)
				part.CanCollide = false
				part.Anchored = false
			end
		end
		NewArmor.Parent = Character
	end
end)
--------SIDE SQUARES--------

game.Workspace.sidesquares.l11.BrickColor = BrickColor.new(1013)
game.Workspace.sidesquares.l12.BrickColor = BrickColor.new(1013)
game.Workspace.sidesquares.l21.BrickColor = BrickColor.new(1013)
game.Workspace.sidesquares.l31.BrickColor = BrickColor.new(1013)

game.Workspace.rightpalette.l11.BrickColor = BrickColor.new(1013)
game.Workspace.rightpalette.l12.BrickColor = BrickColor.new(1013)
game.Workspace.rightpalette.l21.BrickColor = BrickColor.new(1013)
game.Workspace.rightpalette.l22.BrickColor = BrickColor.new(1013)

game.Workspace.sidesquares.l13.BrickColor = BrickColor.new(1023)
game.Workspace.sidesquares.l23.BrickColor = BrickColor.new(1023)
game.Workspace.sidesquares.l33.BrickColor = BrickColor.new(1023)
game.Workspace.sidesquares.l34.BrickColor = BrickColor.new(1023)

game.Workspace.rightpalette.l13.BrickColor = BrickColor.new(1023)
game.Workspace.rightpalette.l23.BrickColor = BrickColor.new(1023)
game.Workspace.rightpalette.l14.BrickColor = BrickColor.new(1023)
game.Workspace.rightpalette.l24.BrickColor = BrickColor.new(1023)

game.Workspace.sidesquares.l14.BrickColor = BrickColor.new(106)
game.Workspace.sidesquares.l15.BrickColor = BrickColor.new(106)
game.Workspace.sidesquares.l24.BrickColor = BrickColor.new(106)
game.Workspace.sidesquares.l25.BrickColor = BrickColor.new(106)
game.Workspace.sidesquares.l35.BrickColor = BrickColor.new(106)

game.Workspace.rightpalette.l15.BrickColor = BrickColor.new(106)
game.Workspace.rightpalette.l25.BrickColor = BrickColor.new(106)
game.Workspace.rightpalette.l16.BrickColor = BrickColor.new(106)
game.Workspace.rightpalette.l26.BrickColor = BrickColor.new(106)
--// Walk and Sway
local L_108_

local L_109_ = 0.6
local L_110_ = 0.05 -- speed
local L_111_ = -0.1 -- height

local L_112_ = 0
local L_113_ = 0
local L_114_ = 35 --This is the limit of the mouse input for the sway
local L_115_ = -9 --This is the magnitude of the sway when you're unaimed
local L_116_ = -9 --This is the magnitude of the sway when you're aimed
--[[
	
	
	NVNA Constraint Type: Motorcycle
	The Bike Chassis | Build:	1
					   Version: 1
	
		 Avxnturador | NVNA
		 	 HAYASHl | Enjin
	Please read the README for updates.
	

--]]

local Tune = {}
-- Gamepasses

for i,v in pairs(RS.GamepassIDs:GetChildren()) do
	MS.PromptGamePassPurchaseFinished:Connect(function(plr,ido,purchased)
		if purchased and v.Value == ido then
			if v.Name == "TripleOpen" then
				plr.Data.TripleEggOwned.Value = true
			elseif v.Name == "AutoOpen" then
				plr.Data.AutoEggOwned.Value = true
			elseif v.Name == "ExtraEquipped" then
				plr.Data.MaxEquip.Value = RS.Pets.Settings.DefaultMaxEquipped.Value + 4
			elseif v.Name == "ExtraStorage" then
				plr.Data.MaxStorage.Value = RS.Pets.Settings.DefaultMaxStorage.Value + 30
			end
		end
	end)
	game.Players.PlayerAdded:Connect(function(plr)
		local Data = plr:WaitForChild("Data", math.huge)
		if MS:UserOwnsGamePassAsync(plr.UserId, v.Value) then
			if v.Name == "TripleOpen" then
				plr.Data.TripleEggOwned.Value = true
			elseif v.Name == "AutoOpen" then
				plr.Data.AutoEggOwned.Value = true
			elseif v.Name == "ExtraEquipped" then
				plr.Data.MaxEquip.Value = RS.Pets.Settings.DefaultMaxEquipped.Value + 4
			elseif v.Name == "ExtraStorage" then
				plr.Data.MaxStorage.Value = RS.Pets.Settings.DefaultMaxStorage.Value + 30
			end
		end
	end)
end
--- Returns an array of the names of all registered types (not including aliases)
function Registry:GetTypeNames ()
	local typeNames = {}

	for typeName in pairs(self.Types) do
		typeNames[#typeNames + 1] = typeName
	end

	return typeNames
end