Prompt:
--[[
	REFERENCE:
		command_full_name: The name of a command (e.g. :cmds)

	[command_full_name] = {
		Player = 0;
		Server = 0;
		Cross = 0;
	}
]]

Response:
}

settings.HttpWait = 60					-- How long things that use the HttpService will wait before updating again
settings.Trello_Enabled = false			-- Are the Trello features enabled?
settings.Trello_Primary = ""			-- Primary Trello board
settings.Trello_Secondary = {}			-- Secondary Trello boards (read-only)		Format: {"BoardID";"BoardID2","etc"}
settings.Trello_AppKey = ""				-- Your Trello AppKey						  	Link: https://trello.com/app-key
settings.Trello_Token = ""				-- Trello token (DON'T SHARE WITH ANYONE!)    Link: https://trello.com/1/connect?name=Trello_API_Module&response_type=token&expires=never&scope=read,write&key=YOUR_APP_KEY_HERE
settings.Trello_HideRanks = false		-- If true, Trello-assigned ranks won't be shown in the admins list UI (accessed via :admins)

settings.G_API = true					-- If true allows other server scripts to access certain functions described in the API module through _G.Adonis
settings.G_Access = false				-- If enabled allows other scripts to access Adonis using _G.Adonis.Access; Scripts will still be able to do things like _G.Adonis.CheckAdmin(player)
settings.G_Access_Key = "Example_Key"	-- Key required to use the _G access API; Example_Key will not work for obvious reasons
settings.G_Access_Perms = "Read" 		-- Access perms
settings.Allowed_API_Calls = {
	Client = false;				-- Allow access to the Client (not recommended)
	Settings = false;			-- Allow access to settings (not recommended)
	DataStore = false;			-- Allow access to the DataStore (not recommended)
	Core = false;				-- Allow access to the script's core table (REALLY not recommended)
	Service = false;			-- Allow access to the script's service metatable
	Remote = false;				-- Communication table
	HTTP = false; 				-- HTTP related things like Trello functions
	Anti = false;				-- Anti-Exploit table
	Logs = false;
	UI = false;					-- Client UI table
	Admin = false;				-- Admin related functions
	Functions = false;			-- Functions table (contains functions used by the script that don't have a subcategory)
	Variables = true;			-- Variables table
	API_Specific = true;		-- API Specific functions
}

settings.FunCommands = true				-- Are fun commands enabled?
settings.PlayerCommands = true			-- Are player-level utility commands enabled?
settings.CommandFeedback = false		-- Should players be notified when commands with non-obvious effects are run on them?
settings.CrossServerCommands = true		-- Are commands which affect more than one server enabled?
settings.ChatCommands = true			-- If false you will not be able to run commands via the chat; Instead you MUST use the console or you will be unable to run commands
settings.CreatorPowers = true			-- Gives me creator level admin; This is strictly used for debugging; I can't debug without full access to the script
settings.CodeExecution = true			-- Enables the use of code execution in Adonis; Scripting related (such as :s) and a few other commands require this
settings.SilentCommandDenials = false	-- If true, there will be no differences between the error messages shown when a user enters an invalid command and when they have insufficient permissions for the command

settings.BanMessage = "Banned"				-- Message shown to banned users upon kick
settings.LockMessage = "Not Whitelisted"	-- Message shown to people when they are kicked while the game is :slocked
settings.SystemTitle = "System Message"		-- Title to display in :sm and :bc

settings.MaxLogs = 5000			-- Maximum logs to save before deleting the oldest
settings.SaveCommandLogs = true	-- If command logs are saved to the datastores
settings.Notification = true	-- Whether or not to show the "You're an admin" and "Updated" notifications
settings.SongHint = true		-- Display a hint with the current song name and ID when a song is played via :music
settings.TopBarShift = false	-- By default hints and notifs will appear from the top edge of the window, this is acheived by offsetting them by -35 into the transparent region where roblox buttons menu/chat/leaderstat buttons are. Set this to true if you don't want hints/notifs to appear in that region.
settings.Messages = {}			-- A list of notification messages to show HeadAdmins and above on join
settings.AutoClean = false		-- Will auto clean workspace of things like hats and tools
settings.AutoCleanDelay = 60	-- Time between auto cleans
settings.AutoBackup = false 	-- (not recommended) Run a map backup command when the server starts, this is mostly useless as clients cannot modify the server. To restore the map run :restoremap

settings.Console = true				-- Whether the command console is enabled
settings.Console_AdminsOnly = false -- If true, only admins will be able to access the console

settings.HelpSystem = true		-- Allows players to call admins for help using !help
settings.HelpButton = true		-- Shows a little help button in the bottom right corner.
settings.HelpButtonImage = "rbxassetid://357249130" -- Change this to change the help button's image

settings.DonorCapes = true 		-- Donors get to show off their capes; Not disruptive :)
settings.DonorCommands = true	-- Show your support for the script and let donors use harmless commands like !sparkles
settings.LocalCapes = false	 	-- Makes Donor capes local so only the donors see their cape [All players can still disable capes locally]

settings.Detection = true			-- Attempts to detect certain known exploits
settings.CheckClients = true		-- Checks clients every minute or two to make sure they are still active

settings.ExploitNotifications = true	-- Notify all moderators and higher ups when a player is kicked or crashed from the AntiExploit
settings.CharacterCheckLogs = false		-- If the character checks appear in exploit logs and exploit notifications
settings.AntiNoclip = false				-- Attempts to detect noclipping and kills the player if found
settings.AntiRootJointDeletion = false	-- Attempts to detect paranoid and kills the player if found
settings.AntiHumanoidDeletion = false	-- (Very important) Prevents invalid humanoid deletion. Un-does the deletion and kills the player
settings.AntiMultiTool = false			-- Prevents multitooling and because of that many other exploits
settings.AntiGod = false				-- If a player does not respawn when they should have they get respawned
settings.AntiSpeed = true				-- (Client-Sided) Attempts to detect speed exploits
settings.AntiBuildingTools = false		-- (Client-Sided) Attempts to detect any HopperBin(s)/Building Tools added to the client
settings.AntiClientIdle = false 		-- (Client-Sided) Kick the player if they are using an anti-idle exploit
settings.ProtectHats = false 			-- Prevents hats from being un-welded from their characters through unnormal means


Prompt: -- Function that gets called when change in player's locale ID is detected

Response:
local function OnLocaleIdChanged()
	print("Translator has changed to: " .. translator.LocaleId)
	-- You should re-translate any assets translated with Localization APIs to the player's new language here
end


Prompt:
-- Extra padding to pull the camera further back from the viewport object.
--
-- We use the getDepthToFitObject() function to get an accurate depth to push
-- the camera back to fit the object, however this only works at 90 degree
-- rotations.
--
-- Since the camera is constantly rotating around the object, this is just some
-- extra padding to pull the camera back even further so the sides of the object
-- don't clip.

Response:
local DEPTH_PADDING = 2 -- studs

local PINCH_DELTA_TO_ZOOM_DELTA = 0.1


Prompt:
--[=[
	@param obj any
	Throws an error if `obj` is not an Option.
]=]

Response:
function Option.Assert(obj)
	assert(Option.Is(obj), "Result was not of type Option")
end


Prompt:
--print(speed/1.298)
--print(carSeat.Parent.Parent.Wheels.FL.Wheel.RotVelocity.Magnitude)

Response:
	--print("Speed: "..speed)
	--print("Wheels: "..math.abs(orderch))

if carSeat.Storage.Automatic.Value == true and currentgear.Value > 2 and script.Parent.Active.CC.Value == false then --hpatt cant be automatic
if rpm.Value <= redline.Value*0.2 and currentgear.Value > 3 then
	script.Parent.Functions.ShiftDownRequested.Value = true

elseif rpm.Value >= redline.Value*0.9*mode and script.Parent.Storage.Throttle.Throttle.Value > 0.1 and currentgear.Value ~= script.Parent.Storage.AmountOfGears.Value +2 and shf == true then
	script.Parent.Functions.ShiftUpRequested.Value = true

elseif x1x*trans.Value <= redline.Value*0.8*mode and x1x*trans.Value < redline.Value*0.9*mode and currentgear.Value > 3 and script.Parent.Storage.Throttle.Throttle.Value > 0.6 then
	if currentgear.Value > 3 then
	script.Parent.Functions.ShiftDownRequested.Value = true
	end

end
end

if currentgear.Value == 1 then
	park = 0
else
	park = 1
end

if carSeat.Throttle ~= -1 and carSeat.Storage.Handbrake.Value ~= true then
if script.Parent.Functions.ShiftDownRequested.Value ~= true and script.Parent.Functions.ShiftUpRequested.Value ~= true then
	if rpm.Value > redline.Value then else
		FL.MotorMaxAcceleration = 10+(((0.001*(m*2))*rpm.Value)+((46*m)*convert)*(low*6.5))*four*throttle.Value
		FR.MotorMaxAcceleration = 10+(((0.001*(m*2))*rpm.Value)+((46*m)*convert)*(low*6.5))*four*throttle.Value
		RL.MotorMaxAcceleration = 10+(((0.001*(m*2))*rpm.Value)+((46*m)*convert)*(low*6.5))*four*throttle.Value
		RR.MotorMaxAcceleration = 10+(((0.001*(m*2))*rpm.Value)+((46*m)*convert)*(low*6.5))*four*throttle.Value
	end

		if currentgear.Value ~= 1 and carSeat.Throttle ~= -1 then
	if throttle.Value ~= 0 then
if script.Parent.Storage.EngineType.Value == "Petrol" then tL = (0.45*vt)*TC
	if rpm.Value < 2000*convert then
		FL.MotorMaxTorque = b*((((((rpm.Value * (1.035*((xans/1.4)/900)))*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70))*mid*ft)*ovo*checkcluch)/ch)*tL*xi
		FR.MotorMaxTorque = b*((((((rpm.Value * (1.035*((xans/1.4)/900)))*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70))*mid*ft)*ovo*checkcluch)/ch)*tL*xi
		RL.MotorMaxTorque = b*((((((rpm.Value * (1.035*((xans/1.4)/900)))*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70))*mid*rt)*ovo*checkcluch)/ch)*tL*xi
		RR.MotorMaxTorque = b*((((((rpm.Value * (1.035*((xans/1.4)/900)))*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70))*mid*rt)*ovo*checkcluch)/ch)*tL *xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > 2000*convert and rpm.Value < 6000*convert then
		FL.MotorMaxTorque = b*(((((rpm.Value * (0.488*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo*checkcluch)*tL*xi script.lp.Value = false
		FR.MotorMaxTorque = b*(((((rpm.Value * (0.488*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo*checkcluch)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (0.488*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo*checkcluch)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (0.488*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo*checkcluch)*tL *xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park script.lp.Value = true
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > 6000*convert then
		FL.MotorMaxTorque = b*(((((rpm.Value * (-0.214*((xans/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*checkcluch)*tL*xi
		FR.MotorMaxTorque = b*(((((rpm.Value * (-0.214*((xans/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*checkcluch)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (-0.214*((xans/1.4)/900)))+6000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*checkcluch)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (-0.214*((xans/1.4)/900)))+6000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*checkcluch)*tL *xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > redline.Value then
		FL.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		FR.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		RL.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		RR.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		FL.AngularVelocity = 0
		FR.AngularVelocity = 0
		RL.AngularVelocity = 0
		RR.AngularVelocity = 0
		FL.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*ft)*ovo+xt)*2
		FR.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*ft)*ovo+xt)*2
		RL.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*((torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*rt)*ovo+xt)*2
		RR.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*((torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*rt)*ovo+xt)*2
	end
end

if script.Parent.Storage.EngineType.Value == "Diesel" then tL = (0.475*vt)*TC
	if rpm.Value < 2000*convert then
		FL.MotorMaxTorque = b*(((((rpm.Value * (1.679*((xans/1.4)/900)))*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)/ch)*tL*xi
		FR.MotorMaxTorque = b*(((((rpm.Value * (1.679*((xans/1.4)/900)))*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)/ch)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (1.679*((xans/1.4)/900)))*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)/ch)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (1.679*((xans/1.4)/900)))*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)/ch)*tL*xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > 2000*convert and rpm.Value < 4500*convert then
		FL.MotorMaxTorque = b*(((((rpm.Value * (0.880*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		FR.MotorMaxTorque = b*(((((rpm.Value * (0.880*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (0.880*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (0.880*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > 4500*convert then
		FL.MotorMaxTorque = b*(((((rpm.Value * (-0.204*((xans/1.4)/900)))+4500)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		FR.MotorMaxTorque = b*(((((rpm.Value * (-0.204*((xans/1.4)/900)))+4600)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (-0.204*((xans/1.4)/900)))+4500)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (-0.204*((xans/1.4)/900)))+4500)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		FL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		FR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RL.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
		RR.AngularVelocity = 2500*clutch.Clutch.Value*direction*park
	end

	if rpm.Value > redline.Value then
		FL.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		FR.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		RL.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		RR.MotorMaxAcceleration = ((((120/(convert*7000))*rpm.Value)*(hp.Value/70)*conf)+25)*5
		FL.AngularVelocity = 0
		FR.AngularVelocity = 0
		RL.AngularVelocity = 0
		RR.AngularVelocity = 0
		FL.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*ft)*ovo+xt)*2
		FR.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*(1-(torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*ft)*ovo+xt)*2
		RL.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*((torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*rt)*ovo+xt)*2
		RR.MotorMaxTorque = (((((rpm.Value * (-0.214*((2000/1.4)/900)))+6000)*((torquesplit.Value/100))*1*CT)*(hp.Value/70)*mid*rt)*ovo+xt)*2
	end
end

if script.Parent.Storage.EngineType.Value == "Electric" then
		FL.MotorMaxTorque = b*(((((rpm.Value * (-0.04*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		FR.MotorMaxTorque = b*(((((rpm.Value * (-0.04*((xans/1.4)/900)))+2000)*(1-(torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*ft)*ovo)*tL*xi
		RL.MotorMaxTorque = b*(((((rpm.Value * (-0.04*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		RR.MotorMaxTorque = b*(((((rpm.Value * (-0.04*((xans/1.4)/900)))+2000)*((torquesplit.Value/100))*throttle.Value*CT)*(hp.Value/70)*mid*rt)*ovo)*tL*xi
		FL.AngularVelocity = 2500*direction*park
		FR.AngularVelocity = 2500*direction*park
		RL.AngularVelocity = 2500*direction*park
		RR.AngularVelocity = 2500*direction*park

	end
	else

		if carSeat.Throttle ~= -1 and carSeat.Storage.Handbrake.Value ~= true then
		--guava = (redline.Value/1000)-(rpm.Value/1000)
		FL.MotorMaxTorque = 200 * (displacement.Value/2000)*clutch.Clutch.Value*(1-script.Parent.Storage.Brake.Value)*(1-(torquesplit.Value/100))
		FR.MotorMaxTorque = 200 * (displacement.Value/2000)*clutch.Clutch.Value*(1-script.Parent.Storage.Brake.Value)*(1-(torquesplit.Value/100))
		RL.MotorMaxTorque = 200 * (displacement.Value/2000)*clutch.Clutch.Value*(1-script.Parent.Storage.Brake.Value)*((torquesplit.Value/100))
		RR.MotorMaxTorque = 200 * (displacement.Value/2000)*clutch.Clutch.Value*(1-script.Parent.Storage.Brake.Value)*((torquesplit.Value/100))
		FL.AngularVelocity = coast/four  ------------^MULTIPLY THIS BY THE INVESE OF THE RPM [SCALE]^^^^^^^^^
		FR.AngularVelocity = coast/four  --------< MULTIPLY THIS BY GEAR (THE VALUE SHOULD BE UP THERE SOMEWHERE^^^)
		RL.AngularVelocity = coast/four
		RR.AngularVelocity = coast/four  else  end

		if script.Parent.Storage.EngineType.Value ~= "Electric" then
		FL.MotorMaxAcceleration = 150
		FR.MotorMaxAcceleration = 150
		RL.MotorMaxAcceleration = 150
		RR.MotorMaxAcceleration = 150
		end
 end end end

		end

elseif currentgear.Value == 1 or carSeat.Throttle == -1 or script.Parent.Functions.Engine.Value == false then

		carSeat.Parent.Transmission.Reverse.Pitch = 0
		carSeat.Parent.Differential.Idle.Pitch = 0
		carSeat.Parent.Differential.Engine.Pitch = 0
		carSeat.Parent.Engine.Intake.Pitch = 0
		--carSeat.Parent.Engine.Blowoff.Pitch = 0
		if rpm.Value > 0 then
		rpm.Value = rpm.Value - decay.Value
		else
			rpm.Value = 0

	end
end
end


Prompt: -- CONSTANTS

Response:
local CONSTANTS = require(script.Parent:WaitForChild("CONSTANTS"))
local Triangle = require(script.Parent:WaitForChild("Triangle"))

local PI2 = math.pi/2
local TAU = CONSTANTS.TAU

local GAP = CONSTANTS.GAP
local PART_PER_UNIT = CONSTANTS.PART_PER_UNIT

local CENTER = CONSTANTS.CENTER
local EXTERIOR_RADIUS = CONSTANTS.EXTERIOR_RADIUS
local EX_OFFSET = CONSTANTS.EX_OFFSET
local G_OFFSET = CONSTANTS.G_OFFSET

local VPF = Instance.new("ViewportFrame")
VPF.Ambient = Color3.new(1, 1, 1)
VPF.LightColor = Color3.new(1, 1, 1)
VPF.LightDirection = Vector3.new(0, 0, -1)
VPF.BackgroundTransparency = 1
VPF.Size = UDim2.new(1, 0, 1, 0)

local CAMERA = Instance.new("Camera")
CAMERA.CameraType = Enum.CameraType.Scriptable
CAMERA.CFrame = CFrame.new()
CAMERA.FieldOfView = CONSTANTS.FOV


Prompt: --		print(obj.Name)

Response: if (obj:IsA("Folder")) then


Prompt: --!strict

Response:
local LocalPlayer: Player = game:GetService("Players").LocalPlayer
local RunService = game:GetService("RunService")

local fmt = string.format

local OPT_AXIS_ATTRIBUTE = "Axis"
local OPT_AXIS = "Z"
local OPT_DEGREES_ATTRIBUTE = "Degrees"
local OPT_DEGREES = 1
local OPT_MIN_DISTANCE_ATTRIBUTE = "MinDistance"
local OPT_MIN_DISTANCE = 48

local ERR_NOT_MODEL = "Rotate expects a Model, but got %q (%s)"

local Obstacle = {}

Obstacle.__index = Obstacle

function Obstacle.new(model: Model)
	assert(model:IsA("Model"), fmt(ERR_NOT_MODEL, model:GetFullName(), model.ClassName))

	local self = setmetatable({}, Obstacle)
	self._events = {}

	self._model = model

	self._distance = model:GetAttribute(OPT_MIN_DISTANCE_ATTRIBUTE) or
		math.max(model:GetModelSize().Magnitude * 2, OPT_MIN_DISTANCE)

	self._axis = model:GetAttribute(OPT_AXIS_ATTRIBUTE) or OPT_AXIS
	self._degrees = model:GetAttribute(OPT_DEGREES_ATTRIBUTE) or OPT_DEGREES

	-- TODO: Defer render to global handler
	table.insert(self._events, RunService.RenderStepped:Connect(function()
		self:RenderUpdate()
	end))

	return self
end

function Obstacle:IsLocalPlayerNearby(): boolean
	if self._distance == 0 then
		return true
	end

	local distance = LocalPlayer:DistanceFromCharacter(self._model:GetPrimaryPartCFrame().Position)
	return distance < self._distance
end

function Obstacle:GetRotationCFrame(): CFrame
	local degrees = math.rad(self._degrees)

	if self._axis == "X" then
		return CFrame.Angles(degrees, 0, 0)
	elseif self._axis == "Y" then
		return CFrame.Angles(0, degrees, 0)
	end

	return CFrame.Angles(0, 0, degrees)
end

function Obstacle:RenderUpdate()
	if not self:IsLocalPlayerNearby() then
		return
	end

	local cframe = self._model:GetPrimaryPartCFrame()
	local angles = self:GetRotationCFrame()

	self._model:SetPrimaryPartCFrame(cframe * angles)
end

function Obstacle:Destroy()
	for _, event: RBXScriptConnection in ipairs(self._events) do
		event:Disconnect()
	end
end

return Obstacle


Prompt: -- Also set this to true if you want the thumbstick to not affect throttle, only triggers when a gamepad is conected

Response:
local onlyTriggersForThrottle = false
local ZERO_VECTOR3 = Vector3.new(0,0,0)

local betterHandlingInputStatesFlagExists, betterHandlingInputStatesFlagEnabled = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserBetterHandlingVehicleInputStates")
end)
local FFlagBetterHandlingVehicleInputStates = betterHandlingInputStatesFlagExists and betterHandlingInputStatesFlagEnabled

local AUTO_PILOT_DEFAULT_MAX_STEERING_ANGLE = 35


Prompt:
----------------------
---define variables---
----------------------

Response:
local pathfinding=game:GetService("PathfindingService");--the service used to compute paths
local AI=script.Parent;--the AI
local humanoid=AI:WaitForChild("Humanoid");--the Humanoid object
local torso=AI:WaitForChild("Torso");--the Torso object


Response:
local popupsAreOpen = script.Parent.Parent.PopupsAreOpen

local clickedPlayButton = script.ClickedPlayButton
local characterDied = game.ReplicatedStorage.CharacterDied

local configuration = script.Parent.Parent.Settings
local spawnItems = game.Workspace.SpawnItems
local Sounds = script.Sounds


Prompt: --Airflow = script.Parent.Parent.ChopperNB

Response:
ChopperNB = script.Parent.Parent.ChopperNB
MuteNB = ChopperNB.Mute
LoadWeight = script.LoadWeight
MVal = script.MuteVal
RotorMotor = script.Parent.Parent.Parent.Motor.Motor.HingeConstraint
LoadWeight.Value = LoadWeight.NoBlowerW.Value

script.Parent.BlowerOn.Changed:Connect(function()
	if script.Parent.BlowerOn.Value == false then
		--Airflow.HighAir.Disabled = true
		--Airflow.LowAir.Disabled = false
		local ts = game:GetService("TweenService")
		local t = ts:Create(script.Parent,TweenInfo.new(5),{Volume = 0})
		local t3 = ts:Create(MVal,TweenInfo.new(4.4),{Value = 0})
		local t2 = ts:Create(script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch,TweenInfo.new(1),{Value = 0.1})
		local t4 = ts:Create(LoadWeight,TweenInfo.new(3),{Value = LoadWeight.NoBlowerW.Value})
		--print("o1")
		t:Play()
		t2:Play()
		t3:Play()
		t4:Play()
	else
		--Airflow.HighAir.Disabled = false
		--Airflow.LowAir.Disabled = true
		local ts = game:GetService("TweenService")
		local t = ts:Create(script.Parent,TweenInfo.new(.85),{Volume = 4.5})
		local t3 = ts:Create(MVal,TweenInfo.new(5),{Value = -80})
		local t2 = ts:Create(script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch,TweenInfo.new(2),{Value = 0})
		local t4 = ts:Create(LoadWeight,TweenInfo.new(.85),{Value = LoadWeight.BlowerW.Value})
		--print("o2")
		t:Play()
		t2:Play()
		t3:Play()
		t4:Play()
	end
end)

function getChopperLevelPitch(pitch)
	return 0
	--math.clamp((pitch-0.1)/script.Parent,0,1)
end

script.Parent.PlaybackSpeed = 0

CompletelyStopped = true

script.Parent.On.Changed:Connect(function()
	if CompletelyStopped == true and script.Parent.On.Value == true then
		repeat game:GetService("RunService").Heartbeat:wait()

			CompletelyStopped = false
			script.Stopped.Value = false

			RotorMotor.AngularVelocity = script.Parent.PlaybackSpeed/0.00335

			ChopperNB.PlaybackSpeed = script.Parent.PlaybackSpeed --/0.6801
			ChopperNB.Volume = script.Parent.PlaybackSpeed/.9
			MuteNB.HighGain = MVal.Value
			MuteNB.LowGain = MuteNB.HighGain
			MuteNB.MidGain = MuteNB.HighGain

			script.Parent.RollOffMaxDistance = script.RollOffMax.Value *script.Parent.Volume --7000
			script.Parent.RollOffMinDistance = script.RollOffMin.Value *script.Parent.Volume --7000

			if script.Parent.On.Value == true and script.Parent.PlaybackSpeed < script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+BlowerAddress.BeltSet.Sound.Pitch/7 then
				if script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value < 1 then
					if script.Parent.SoundComponents.NonAdjustable.NormalSound.Value < math.abs(script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value-1) then
						script.Parent.SoundComponents.NonAdjustable.NormalSound.Value = math.abs(script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value-1)
					end
				end
				local clampval = math.clamp(math.ceil(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value),0,1)
				local pitch = script.Parent.SoundComponents.NonAdjustable.NormalSound.Value
				local formula = math.clamp(math.log(pitch+0.001,0.65)/320,0.00007,0.02)--pitch+0.001,0.75)/320,0.00007,0.02
				--print(script.Parent.PlaybackSpeed)
				--print(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value)
				script.Parent.SoundComponents.NonAdjustable.NormalSound.Value = math.clamp(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value + formula,0,2)
				script.Parent.PlaybackSpeed = (script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value+((BlowerAddress.BeltSet.Sound.Pitch/7)*clampval)))-1
			elseif script.Parent.On.Value == false and script.Parent.PlaybackSpeed > 0 then
				if script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value < 1 then
					if script.Parent.SoundComponents.NonAdjustable.NormalSound.Value < math.abs(script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value-1) then
						script.Parent.SoundComponents.NonAdjustable.NormalSound.Value = 0
					end
				end
				local pitch = script.Parent.SoundComponents.NonAdjustable.NormalSound.Value
				--local formula = math.clamp(math.log(math.abs(pitch-1)+0.0001,0.06)/300,0.0004,0.07)
				local formula = math.clamp(math.log(math.abs(pitch-1)+0.0001,0.05)/LoadWeight.Value,0.0004,0.02)
				local clampval = math.clamp(math.ceil(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value),0,1)
				--print(formula)
				script.Parent.SoundComponents.NonAdjustable.NormalSound.Value = math.clamp(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value - formula,0,2)
				--+(script.Parent.Shift.Octave*math.clamp(0,1,math.ceil(math.abs(formula))))
				script.Parent.PlaybackSpeed = ((script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value+((BlowerAddress.BeltSet.Sound.Pitch/7)*clampval))-1)*clampval)
			else
				local clampval = math.clamp(math.ceil(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value),0,1)
				script.Parent.PlaybackSpeed = ((script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+(script.Parent.SoundComponents.NonAdjustable.NormalSound.Value+((BlowerAddress.BeltSet.Sound.Pitch/7)*clampval))-1)*clampval)
			end
	--[[	if script.Parent.On.Value == true then

		--((math.clamp((incerment+0.001)-script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value/2,0,1) * 30))
		if script.Parent.PlaybackSpeed >= script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value then

		else
			--math.abs((((script.Parent.SoundComponents.NonAdjustable.ChopperLevelCurrent.Value-4)/20)+1
			formula = (script.Parent.SoundComponents.NonAdjustable.StaticVoltage.Value*(1))/(70000*math.sqrt((script.Parent.SoundComponents.NonAdjustable.LoadWeight.Value*((script.Parent.PlaybackSpeed+0.0001)/(script.Parent.SoundComponents.Configuration.ChopperLevel.Value-(script.Parent.PlaybackSpeed*(5-(math.abs(script.Parent.SoundComponents.Configuration.ChopperLevel.Value-4.6)))))))))
			--formula = (((script.Parent.SoundComponents.NonAdjustable.StaticVoltage.Value+script.Parent.SoundComponents.NonAdjustable.ChopperLevelCurrent.Value)/(incerment+0.01))*script.Parent.SoundComponents.NonAdjustable.Horsepower.Value)/(80000*math.sqrt((script.Parent.SoundComponents.NonAdjustable.LoadWeight.Value)*(script.Parent.SoundComponents.NonAdjustable.Horsepower.Value)))
		end
	else
		if script.Parent.PlaybackSpeed <= 0 then

		else
			formula = (incerment+0.001)/(((500/(incerment+0.001))+math.sqrt(script.Parent.SoundComponents.NonAdjustable.LoadWeight.Value)))
		end
	end
	--print(formula)
	--+math.sqrt(script.Parent.SoundComponents.NonAdjustable.LoadWeight.Value)
	--print((incerment+0.001)/(((500/(incerment+0.001))+math.sqrt(script.Parent.SoundComponents.NonAdjustable.LoadWeight.Value))))
	if script.Parent.On.Value == true then
		if script.Parent.PlaybackSpeed >= script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch.Value then
			if script.Parent.PlaybackSpeed >= script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value then
				if script.Parent.PlaybackSpeed <= script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value then

				else
					script.Parent.PlaybackSpeed =  math.clamp(script.Parent.PlaybackSpeed - math.clamp(formula,0.000005,0.001),0,script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch.Value)
				end
			end
		else
			script.Parent.PlaybackSpeed = math.clamp(script.Parent.PlaybackSpeed + formula,0,script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch.Value)
		end
	else
		if script.Parent.PlaybackSpeed <= 0 then

		else
			script.Parent.PlaybackSpeed =  math.clamp(script.Parent.PlaybackSpeed - math.clamp(formula,0.000005,0.001),0,script.Parent.SoundComponents.NonAdjustable.MaxPitch.Value+script.Parent.SoundComponents.NonAdjustable.BlowerOffsetPitch.Value)
		end
	end
	--]]

		until script.Parent.SoundComponents.NonAdjustable.NormalSound.Value <= 0
		CompletelyStopped = true
		RotorMotor.AngularVelocity = 0
		script.Parent.PlaybackSpeed = 0
		ChopperNB.PlaybackSpeed = 0

		if BlowerAddress.Components.BlowerOn.Value == false then
			script.Parent.Volume = 0
		end
		script.Stopped.Value = true
	end
end)

script.Parent.BlowerOn.Changed:Connect(function()
	if script.Parent.BlowerOn.Value == false and CompletelyStopped == true then
		script.Parent.Volume = 0
	end
end)


Prompt:
--[[
		___      _______                _
	   / _ |____/ ___/ /  ___ ____ ___ (_)__
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]

Response:
local FE = workspace.FilteringEnabled
local car = script.Parent.Car.Value
local _Tune = require(car["A-Chassis Tune"])
local on = 0

script:WaitForChild("Rev")

if not FE then
	for i,v in pairs(car.DriveSeat:GetChildren()) do
		for _,a in pairs(script:GetChildren()) do
			if v.Name==a.Name then v:Stop() wait() v:Destroy() end
		end
	end
	for i,v in pairs(script:GetChildren()) do
		v.Parent=car.DriveSeat
	end

	car.DriveSeat.Rev:Play()

	while wait() do
		local _RPM = script.Parent.Values.RPM.Value

		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		car.DriveSeat.Rev.Pitch = (car.DriveSeat.Rev.SetPitch.Value + car.DriveSeat.Rev.SetRev.Value*_RPM/_Tune.Redline)*on^2
	end
else
	local handler = car.CarSound
	handler:FireServer("newSound","Rev",car.DriveSeat,script.Rev.SoundId,0,script.Rev.Volume,true)
	handler:FireServer("playSound","Rev")
	local pitch=0
	while wait() do
		local _RPM = script.Parent.Values.RPM.Value

		if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end
		pitch = (script.Rev.SetPitch.Value + script.Rev.SetRev.Value*_RPM/_Tune.Redline)*on^2
		handler:FireServer("updateSound","Rev",script.Rev.SoundId,pitch,script.Rev.Volume)
	end
end


Prompt: --character:WaitForChild("Humanoid").Died:connect(function()

Response:
	local camera = workspace.CurrentCamera
	if camera.CameraSubject == character.Humanoid then--If developer isn't controlling camera
		camera.CameraSubject = character.UpperTorso
	end

	--Make it so ragdoll can't collide with invisible HRP, but don't let HRP fall through map and be destroyed in process
	character.HumanoidRootPart.Anchored = true
	character.HumanoidRootPart.CanCollide = false

	--Helps to fix constraint spasms
	recurse(character, function(_,v)
		if v:IsA("Attachment") then
			v.Axis = Vector3.new(0, 1, 0)
			v.SecondaryAxis = Vector3.new(0, 0, 1)
			v.Rotation = Vector3.new(0, 0, 0)
		end
	end)

	--Re-attach hats
	for _,child in next,character:GetChildren() do
		if child:IsA("Accoutrement") then
			--Loop through all parts instead of only checking for one to be forwards-compatible in the event
			--ROBLOX implements multi-part accessories
			for _,part in next,child:GetChildren() do
				if part:IsA("BasePart") then
					local attachment1 = part:FindFirstChildOfClass("Attachment")
					local attachment0 = getAttachment0(attachment1.Name)
					if attachment0 and attachment1 then
						--Shouldn't use constraints for this, but have to because of a ROBLOX idiosyncrasy where
						--joints connecting a character are perpetually deleted while the character is dead
						local constraint = Instance.new("HingeConstraint")
						constraint.Attachment0 = attachment0
						constraint.Attachment1 = attachment1
						constraint.LimitsEnabled = true
						constraint.UpperAngle = 0 --Simulate weld by making it difficult for constraint to move
						constraint.LowerAngle = 0
						constraint.Parent = character
					end
				end
			end
		end
	end

	ragdollJoint(character.LowerTorso, character.UpperTorso, "Waist", "BallSocket", {
		{"LimitsEnabled",true};
		{"UpperAngle",5};
	})
	--[[ragdollJoint(character.UpperTorso, character.Head, "Neck", "BallSocket", {
		{"LimitsEnabled",true};
		{"UpperAngle",15};
	})]]

	local handProperties = {
		{"LimitsEnabled", true};
		{"UpperAngle",0};
		{"LowerAngle",0};
	}
	ragdollJoint(character.LeftLowerArm, character.LeftHand, "LeftWrist", "Hinge", handProperties)
	ragdollJoint(character.RightLowerArm, character.RightHand, "RightWrist", "Hinge", handProperties)

	local shinProperties = {
		{"LimitsEnabled", true};
		{"UpperAngle", 0};
		{"LowerAngle", -75};
	}
	ragdollJoint(character.LeftUpperLeg, character.LeftLowerLeg, "LeftKnee", "Hinge", shinProperties)
	ragdollJoint(character.RightUpperLeg, character.RightLowerLeg, "RightKnee", "Hinge", shinProperties)

	local footProperties = {
		{"LimitsEnabled", true};
		{"UpperAngle", 15};
		{"LowerAngle", -45};
	}
	ragdollJoint(character.LeftLowerLeg, character.LeftFoot, "LeftAnkle", "Hinge", footProperties)
	ragdollJoint(character.RightLowerLeg, character.RightFoot, "RightAnkle", "Hinge", footProperties)

	--TODO fix ability for socket to turn backwards whenn ConeConstraints are shipped
	ragdollJoint(character.UpperTorso, character.LeftUpperArm, "LeftShoulder", "BallSocket")
	ragdollJoint(character.LeftUpperArm, character.LeftLowerArm, "LeftElbow", "BallSocket")
	ragdollJoint(character.UpperTorso, character.RightUpperArm, "RightShoulder", "BallSocket")
	ragdollJoint(character.RightUpperArm, character.RightLowerArm, "RightElbow", "BallSocket")
	ragdollJoint(character.LowerTorso, character.LeftUpperLeg, "LeftHip", "BallSocket")
	ragdollJoint(character.LowerTorso, character.RightUpperLeg, "RightHip", "BallSocket")


Prompt: -- O(n!)

Response:
local function createCurve(t, points)
	if SETTINGS.Debug == true then
		for _, point in points do
			newInstance("Part", {
				Position = point,
				Anchored = true,
				CanCollide = false,
				Size = Vector3.one,
				Color = Color3.fromRGB(0,255,0),
				Transparency = .5,
				Parent = workspace.Debris
			})
		end
	end

	-- could use recursion, but lua doesn't have optimized tail calls.
	while #points > 1 do
		local tempPoints = points
		points = {}

		for i = 1, #tempPoints - 1 do
			local p1 = tempPoints[i]
			local p2 = tempPoints[i + 1]

			table.insert(points, lerp(p1, p2, t))
		end
	end

	if SETTINGS.Debug == true then
		newInstance("Part", {
			Position = points[1],
			Anchored = true,
			CanCollide = false,
			Size = Vector3.one,
			Color = Color3.fromRGB(255,0,0),
			Transparency = .5,
			Parent = workspace.Debris
		})
	end

	-- points[1] will contain the correct position at time 't'
	return points[1]
end

return createCurve


Prompt: -- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote

Response:
local emoteNames = { wave = false, point = false, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}

math.randomseed(tick())

function configureAnimationSet(name, fileList)
	if (animTable[name] ~= nil) then
		for _, connection in pairs(animTable[name].connections) do
			connection:disconnect()
		end
	end
	animTable[name] = {}
	animTable[name].count = 0
	animTable[name].totalWeight = 0
	animTable[name].connections = {}

	local allowCustomAnimations = true
	local AllowDisableCustomAnimsUserFlag = false

	local success, msg = pcall(function()
		AllowDisableCustomAnimsUserFlag = UserSettings():IsUserFeatureEnabled("UserAllowDisableCustomAnims2")
	end)

	if (AllowDisableCustomAnimsUserFlag) then
		allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations
	end

	-- check for config values
	local config = script:FindFirstChild(name)
	if (allowCustomAnimations and config ~= nil) then
		table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
		table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
		local idx = 1
		for _, childPart in pairs(config:GetChildren()) do
			if (childPart:IsA("Animation")) then
				table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
				animTable[name][idx] = {}
				animTable[name][idx].anim = childPart
				local weightObject = childPart:FindFirstChild("Weight")
				if (weightObject == nil) then
					animTable[name][idx].weight = 1
				else
					animTable[name][idx].weight = weightObject.Value
				end
				animTable[name].count = animTable[name].count + 1
				animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
				idx = idx + 1
			end
		end
	end

	-- fallback to defaults
	if (animTable[name].count <= 0) then
		for idx, anim in pairs(fileList) do
			animTable[name][idx] = {}
			animTable[name][idx].anim = Instance.new("Animation")
			animTable[name][idx].anim.Name = name
			animTable[name][idx].anim.AnimationId = anim.id
			animTable[name][idx].weight = anim.weight
			animTable[name].count = animTable[name].count + 1
			animTable[name].totalWeight = animTable[name].totalWeight + anim.weight


Prompt: -- @Return RecoilSimulator

Response:
function WeaponRuntimeData:GetRecoilSimulator()
	return self.recoilSimulator
end


Prompt: -- assume we are in the character, let's check

Response:
function sepuku()
	script.Parent = nil
end

local h = script.Parent:FindFirstChild("Humanoid")

if (h == nil) then sepuku() end

local oldSpeed = h.WalkSpeed
h.WalkSpeed = 47

local torso = script.Parent:FindFirstChild("HumanoidRootPart")

if (torso == nil) then sepuku() end

local head = script.Parent:FindFirstChild("Head")
if (head == nil) then head = torso end

local s = Instance.new("Sparkles")
s.Color = Color3.new(.8, 0, .8)
s.Parent = torso

wait(7)

h.WalkSpeed = oldSpeed
s:Remove()

script.Parent = nil


Prompt: --Torque Converter:

Response: Tune.TQLock 		= false		-- Torque converter starts locking at a certain RPM (see below if set to true)


Prompt: --[[Brakes]]

Response:
	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS)

	Tune.FBrakeForce	= 30000		-- Front brake force
	Tune.RBrakeForce	= 30000		-- Rear brake force
	Tune.PBrakeForce	= 30000		-- Handbrake force

	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]


Prompt: -- Will apply a body part given the r15Folder and the r6Folder for that body part.

Response:
local function applyBodyPart(character, r15Folder, r6Folder)
    local humanoid = character:FindFirstChild("Humanoid")
    if humanoid.RigType == Enum.HumanoidRigType.R15 then
		for _, part in pairs(r15Folder:GetChildren()) do
            local oldPart = character:FindFirstChild(part.Name)
			if (oldPart) then
	            part:Clone().Parent = character
	            oldPart.Name = ""
	            oldPart:Destroy()
			end
        end
        -- Rebuild the rig
        -- Note: if applying many body parts at once it is more efficient to call this after applying them all
        buildRigFromAttachments(nil, character.HumanoidRootPart)
    else
        for _, characterMesh in pairs(r6Folder:GetChildren()) do
            local oldCharacterMesh = getOldCharacterMesh(character, characterMesh)
            if oldCharacterMesh then
                oldCharacterMesh:Destroy()
            end
            characterMesh.Parent = character
        end
    end
end

local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")

function DressCharacter(character, packageId, allowTools)
	local PackageIds = AssetService:GetAssetIdsForPackage(packageId)
	local Humanoid = character:FindFirstChild("Humanoid")
	allowTools = (allowTools or false)

	for _,AssetId in pairs(PackageIds) do
		local Insert = InsertService:LoadAsset(AssetId)

		for _,Object in pairs(Insert:GetChildren()) do
			if (Object:IsA("Folder") and Object.Name == "R15") then
				applyBodyPart(character, Object, nil)
			elseif (Object:IsA("Tool") and allowTools) then
				Humanoid:EquipTool(Object)
			elseif (Object:IsA("Accessory") or Object:IsA("Hat")) then
				Humanoid:AddAccessory(Object)
			end
		end

		Insert:Destroy()
	end

	return true
end

return DressCharacter


Prompt:
--[[
	SERVER PLUGINS' NAMES MUST START WITH "Server: "
	CLIENT PLUGINS' NAMES MUST START WITH "Client: "

	Plugins have full access to the server/client tables and most variables.

	You can use the MakePluginEvent to use the script instead of setting up an event.
	PlayerChatted will get chats from the custom chat and nil players.
	PlayerJoined will fire after the player finishes initial loading
	CharacterAdded will also fire after the player is loaded, it does not use the CharacterAdded event.

	service.HookEvent('PlayerChatted',function(msg,plr)
		print(msg..' from '..plr.Name..' Example Plugin')
	end)

	service.HookEvent('PlayerJoined',function(p)
		print(p.Name..' Joined! Example Plugin')
	end)

	service.HookEvent('CharacterAdded',function(plr)
		server.RunCommand('name',plr.Name,'BobTest Example Plugin')
	end)

--]]

Response:
server = nil -- Mutes warnings about unknown globals
service = nil
return function()
	server.Commands.ExampleCommand = {
		Prefix = server.Settings.Prefix;	-- Prefix to use for command
		Commands = {"example"};	-- Commands
		Args = {"arg1"};	-- Command arguments
		Description = "Example command";	-- Command Description
		Hidden = true; -- Is it hidden from the command list?
		Fun = false;	-- Is it fun?
		AdminLevel = "Players";	    -- Admin level; If using settings.CustomRanks set this to the custom rank name (eg. "Baristas")
		Function = function(plr,args)    -- Function to run for command
			print("HELLO WORLD FROM AN EXAMPLE COMMAND :)")
			print("Player supplied args[1] "..tostring(args[1]))
		end
	}
end


Prompt: -- Replace the humanoid with an animationcontroller

Response:
local humanoid = npcModel:FindFirstChildOfClass("Humanoid")
humanoid:Destroy()
local animationController = Instance.new("AnimationController")
animationController.Parent = npcModel


Prompt:
--[=[
	@class BounceTemplateUtils
	@private
]=]

Response:
local BounceTemplate = script.Parent.BounceTemplate

local CREATE_ONLY_LINK = false

local BounceTemplateUtils = {}

function BounceTemplateUtils.isBounceTemplate(instance)
	return instance:GetAttribute("IsBounceTemplate", true) == true
end

function BounceTemplateUtils.getTarget(instance)
	if not BounceTemplateUtils.isBounceTemplate(instance) then
		return nil
	end

	if instance:IsA("ObjectValue") then
		return instance.Value
	else
		local found = instance:FindFirstChild("BounceTarget")
		if found then
			return found.Value
		else
			warn("[BounceTemplateUtils.getTarget] - Bounce template without BounceTarget")
			return nil
		end
	end
end

function BounceTemplateUtils.create(target, linkName)
	assert(typeof(target) == "Instance", "Bad target")
	assert(type(linkName) == "string", "Bad linkName")

	if CREATE_ONLY_LINK then
		return BounceTemplateUtils.createLink(target, linkName)
	end

	local copy = BounceTemplate:Clone()
	copy:SetAttribute("IsBounceTemplate", true)
	copy.Name = linkName

	local objectValue = Instance.new("ObjectValue")
	objectValue.Name = "BounceTarget"
	objectValue.Value = target
	objectValue.Parent = copy

	return copy
end

function BounceTemplateUtils.createLink(target, linkName)
	assert(typeof(target) == "Instance", "Bad target")
	assert(type(linkName) == "string", "Bad linkName")

	local objectValue = Instance.new("ObjectValue")
	objectValue.Name = linkName
	objectValue.Value = target
	objectValue:SetAttribute("IsBounceTemplate", true)

	return objectValue
end

return BounceTemplateUtils


Prompt: --FR

Response:
fSprings[2].Thickness = Settings[1]
fSprings[2].MaxLength = Settings[2]
fSprings[2].MinLength = Settings[3]
fSprings[2].Damping = Settings[4]
fSprings[2].FreeLength = Settings[5]
fSprings[2].LimitsEnabled = Settings[6]
fSprings[2].MaxForce = Settings[7]
fSprings[2].Stiffness = Settings[8]


Prompt: -- Call the module on the SlotsFolder

Response: EquippedVal = require(script.InvSystem)(SlotsFolder)


Prompt:
--[=[
	@within Ser
	@prop Classes table

	A dictionary of classes along with a Serialize and Deserialize function.
	For instance, the default class added is the Option class, which looks
	like the following:

	```lua
	Ser.Classes.Option = {
		Serialize = function(opt) return opt:Serialize() end;
		Deserialize = Option.Deserialize;
	}
	```

	Add to this table in order to extend what classes are automatically
	serialized/deserialized.

	The Ser library checks every object's `ClassName` field in both serialized
	and deserialized data in order to map it to the correct function within
	the Classes table.
]=]

Response:
Ser.Classes = {
	Option = {
		Serialize = function(opt) return opt:Serialize() end;
		Deserialize = Option.Deserialize;
	};
}


Prompt: -- Decompiled with the Synapse X Luau decompiler.

Response:
local l__LocalPlayer__1 = game.Players.LocalPlayer;
local l__TweenService__2 = game:GetService("TweenService");
local l__TextService__3 = game:GetService("TextService");
local v4 = require(game:GetService("ReplicatedStorage"):WaitForChild("ClientModules"):WaitForChild("NumberConvert"));
local v5 = require(game:GetService("ReplicatedStorage"):WaitForChild("ClientModules"):WaitForChild("GetPlatform"));
if game:GetService("ReplicatedStorage"):WaitForChild("GameData"):WaitForChild("InGame").Value == false then
	script.Parent:WaitForChild("UIPadding").PaddingRight = UDim.new(0, 72);
end;
for v6, v7 in pairs(script:WaitForChild("StatModules"):GetChildren()) do
	local v8 = Instance.new("IntValue");
	v8.Name = v7.Name .. "Val";
	v8.Parent = v7;
	v8.Value = 0;
	local u1 = require(v7);
	local u2 = 0;
	local u3 = script.Parent:FindFirstChild(v7.Name);
	local function v9(p1)
		if p1 ~= nil then
			p1 = tonumber(p1);
		else
			p1 = u1.value;
		end;
		if type(p1) ~= "number" then
			return;
		end;
		if v5() == "console" then
			script.Parent.UIScale.Scale = 1.5;
		end;
		if not u2 then
			return;
		end;
		u2 = p1;
		u3.Size = UDim2.new(0, l__TextService__3:GetTextSize(tostring(p1), 40, "Oswald", Vector2.new(999, 999)).X, 1.5, 0);
		u3.TextSize = 40;
		if u2 < p1 then
			u3.TextColor3 = u3:GetAttribute("FadeIncrease");
			u3.SoundIncrease:Play();
		elseif p1 < u2 then
			u3.TextColor3 = u3:GetAttribute("FadeDecrease");
			u3.SoundDecrease:Play();
			if v7.Name == "Boosts" then
				script.Parent.BoostActive.Visible = true;
				u3.Visible = false;
			end;
		end;
		l__TweenService__2:Create(u3, TweenInfo.new(0.7, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut), {
			Size = UDim2.new(0, l__TextService__3:GetTextSize(tostring(p1), 30, "Oswald", Vector2.new(999, 999)).X, 1, 0),
			TextSize = 30,
			TextColor3 = Color3.new(1, 1, 1)
		}):Play();
		l__TweenService__2:Create(u3, TweenInfo.new(0.7, Enum.EasingStyle.Quart, Enum.EasingDirection.InOut), {
			TextColor3 = Color3.new(1, 1, 1)
		}):Play();
		l__TweenService__2:Create(v8, TweenInfo.new(0.4, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {
			Value = tonumber(p1)
		}):Play();
		if p1 <= 0 then
			task.delay(0.4, function()
				u3.Visible = false;
			end);
		else
			u3.Visible = true;
			task.delay(0.41, function()
				u3.Visible = true;
			end);
		end;
		if v7.Name == "Boosts" and p1 < u2 then
			script.Parent.BoostActive.Visible = true;
			task.delay(0.5, function()
				u3.Visible = false;
			end);
		end;
	end;
	v8.Changed:Connect(function(p2)
		u3.Text = v4(p2);
	end);
	if v7.Name == "Gold" then
		local u4 = tick();
		game:GetService("ReplicatedStorage"):WaitForChild("Bricks"):WaitForChild("GetGold").OnClientEvent:Connect(function(p3)
			u4 = tick() + 0.5;
			local v10, v11 = workspace.CurrentCamera:WorldToScreenPoint(p3);
			local v12 = script.Parent.Parent.Gold:Clone();
			v12.Visible = true;
			v12.Name = "GoldLive";
			v12.Position = UDim2.new(0, v10.X, 0, v10.Y);
			v12.Parent = script.Parent.Parent;
			game.Debris:AddItem(v12, 0.5);
			u3.Visible = true;
			local l__AbsolutePosition__13 = u3.Icon.AbsolutePosition;
			local l__AbsoluteSize__14 = u3.Icon.AbsoluteSize;
			l__TweenService__2:Create(v12, TweenInfo.new(0.5, Enum.EasingStyle.Quart, Enum.EasingDirection.In), {
				Size = UDim2.new(0, l__AbsoluteSize__14.X, 0, l__AbsoluteSize__14.Y),
				Position = UDim2.new(0, l__AbsolutePosition__13.X + l__AbsoluteSize__14.X / 2, 0, l__AbsolutePosition__13.Y + l__AbsoluteSize__14.Y / 2)
			}):Play();
		end);
		u1.event.Event:Connect(function(p4)
			task.wait(0.2);
			task.wait((math.max(u4 - tick(), 0)));
			if u4 ~= u4 then
				return;
			end;
			v9();
		end);
	else
		u1.event.Event:Connect(v9);
	end;
	v9();
end;


Prompt: --// Variables

Response:
local L_1_ = script.Parent
local L_2_ = L_1_.Parent.Parent
local L_3_ = L_2_:WaitForChild('Required')
local L_4_ = L_2_:WaitForChild('BodyKit')

local L_5_ = L_2_:WaitForChild('Networking')
local L_6_ = L_2_:WaitForChild('Vals')
local L_7_ = L_6_:WaitForChild('Owner')

local L_8_ = require(L_2_:WaitForChild('Modules'):WaitForChild('Config_Module'))

local L_9_ = L_3_:WaitForChild('Rotor')
local L_10_
if L_3_:FindFirstChild('Rotor2') then
	L_10_ = L_3_.Rotor2
end
local L_11_ = L_9_:WaitForChild('Top'):WaitForChild('Rotor')
local L_12_ = L_9_:WaitForChild('Bottom'):WaitForChild('Rotor')
local L_13_
local L_14_
if L_10_ then
	L_13_ = L_10_:WaitForChild('Top'):WaitForChild('Rotor')
	L_14_ = L_10_:WaitForChild('Bottom'):WaitForChild('Rotor')
end

local L_15_
local L_16_, L_17_

local L_18_ = false
local L_19_ = L_2_:WaitForChild('FX')

local L_20_ = game.ReplicatedStorage:FindFirstChild('[WB] Leaderstat Network') or nil

local L_21_ = {
	L_2_
}


Prompt: --Put this script in a mob to make it drop item. Don't forget to enable this script!

Response:
local item = Game.ReplicatedStorage.ITEMS:FindFirstChild(script.Item.Value):Clone()
local Humanoid = script.Parent.Human
function PwntX_X()
local tag = Humanoid:FindFirstChild("creator")
	if tag ~= nil then
		if tag.Value ~= nil then
			if math.random(1, 100) <= script.DropChance.Value then
				local Leaderstats = tag.Value:FindFirstChild("StarterGear")
				local ll = tag.Value:FindFirstChild("Backpack")
				if Leaderstats ~= nil and ll~= nil then
					if script.KeptOnDeath.Value == true then
						item:Clone().Parent = Leaderstats
						item:Clone().Parent = ll
					else
						item:Clone().Parent = ll
					end
					wait(0.1)
					script:Remove()
				end
			end
		end
	end
end

Humanoid.Died:connect(PwntX_X)


Prompt: --Wheelie tune

Response:
local WheelieD = 2
local WheelieTq = 85
local WheelieP = 10
local WheelieMultiplier = 1.5
local WheelieDivider = 2


Prompt: -- Set up the click event handlers for each button

Response:
for _, button in ipairs(dock:GetChildren()) do
	if button:IsA("ImageButton") then
		button.MouseButton1Click:Connect(function()
			-- Create the jump tween
			local Click = script.Click
			local jumpTweenInfo = TweenInfo.new(jumpDuration, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
			local jumpTween = game:GetService("TweenService"):Create(button, jumpTweenInfo, {
				Size = UDim2.new(button.Size.X.Scale * jumpScale, button.Size.X.Offset,
					button.Size.Y.Scale * jumpScale, button.Size.Y.Offset),
				Position = UDim2.new(button.Position.X.Scale - ((jumpScale - 1) / 2),
					button.Position.X.Offset, button.Position.Y.Scale - ((jumpScale - 1) / 2),
					button.Position.Y.Offset)
			})

			-- Play the jump tween
			jumpTween:Play()
			Click:Play()

			-- Reset the button's size and position after the jump is complete
			jumpTween.Completed:Connect(function()
				button.Size = UDim2.new(button.Size.X.Scale / jumpScale, button.Size.X.Offset,
					button.Size.Y.Scale / jumpScale, button.Size.Y.Offset)
				button.Position = UDim2.new(button.Position.X.Scale + ((jumpScale - 1) / 2),
					button.Position.X.Offset, button.Position.Y.Scale + ((jumpScale - 1) / 2),
					button.Position.Y.Offset)
			end)
		end)
	end
end


Prompt:
-- Sets the mass of the specified part by adjusting its density so that all
-- speeders will have the same mass (using static _DENSITY and _VOLUME)

Response:
local function SetMass(part)
	local volume = part.Size.X * part.Size.Y * part.Size.Z
	local newDensity = _DENSITY * _VOLUME / volume

	-- Defaults except newDensity (density, friction, elasticity)
	part.CustomPhysicalProperties = PhysicalProperties.new(newDensity, 0.3, 0.5)
end -- SetMass()

local function HandleCollision(collidedPart, part, self)
	local RaceTrack = workspace:FindFirstChild("Racetrack")
	local EnvironmentAssets = workspace:FindFirstChild("Environment Assets")
	local Plants = EnvironmentAssets:FindFirstChild("Plants")

	if not collidedPart:IsDescendantOf(self.speeder) and not collidedPart:IsDescendantOf(RaceTrack)
	 and not collidedPart:IsDescendantOf(Plants) and not (collidedPart == workspace.SpeederSpawnLocation) then
		-- Create particle effect
		local particle = Explosion:Clone()
		particle.CFrame = part.CFrame
		particle.Parent = workspace

		character:Destroy()
		ExplosionSound:Play()

		local planeGui = PlayerGui:FindFirstChild("DesktopGui") or
			PlayerGui:FindFirstChild("ConsoleGui") or
			PlayerGui:FindFirstChild("MobileGui")
		if planeGui then
			planeGui.Enabled = false
		end

		local emitterChildren = particle:GetChildren()

		for _, child in pairs(emitterChildren) do
			-- If the child is a particle, then cause it to emit
			if child:IsA("ParticleEmitter") then
				child:Emit(10)
			end
		end

		-- Destroy particle after PARTICLE_DURATION seconds
		spawn(function()
			wait(PARTICLE_DURATION)
			particle:Destroy()
		end)
		-- Convert speeder to player
		spawn(function()
			wait(2)
			PlayerConverter:SpeederToPlayer(false)
		end)
	end
end -- handleCollisions()

local function SetupCollisionDetection(parent, self)
	for _,part in pairs(parent:GetChildren()) do
		if (part:IsA("BasePart") or part:IsA("MeshPart")) and part.Name ~= "Head" and
			part.Name ~= "UpperTorso" and part.Name ~= "Arrow" then
			part.Touched:Connect(function(collidedPart) HandleCollision(collidedPart, part, self) end)
			SetupCollisionDetection(part, self)
		end
	end
end -- setupCollisionDetection()


Response:
local function EnterFreecam()
	ToggleGui(false)
	--UIS.MouseIconEnabled = false
	Maid:Mark(UIS.InputBegan:Connect(function(input, processed)
		if input.UserInputType == Enum.UserInputType.MouseButton2 then
			UIS.MouseBehavior = Enum.MouseBehavior.LockCurrentPosition
			local conn = UIS.InputChanged:Connect(Panned)
			repeat
				input = UIS.InputEnded:wait()
			until input.UserInputType == Enum.UserInputType.MouseButton2 or not freeCamEnabled
			panDeltaMouse = Vector2.new()
			panDeltaGamepad = Vector2.new()
			conn:Disconnect()
			if freeCamEnabled then
				UIS.MouseBehavior = Enum.MouseBehavior.Default
			end
		elseif input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then
			SpeedModifier = 0.5
		end
	end))

	Maid:Mark(UIS.InputEnded:Connect(function(input, processed)
		if input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then
			SpeedModifier = 1
		end
	end))

	camera.CameraType = Enum.CameraType.Scriptable

	local hum, hrp = GetChar()
	if hrp then
		hrp.Anchored = true
	end
	if hum then
		hum.WalkSpeed = 0
		Maid:Mark(hum.Jumping:Connect(function(active)
			if active then
				hum.Jumping = false
			end
		end))
	end

	velSpring.t, velSpring.v, velSpring.x = Vector3.new(), Vector3.new(), Vector3.new()
	rotSpring.t, rotSpring.v, rotSpring.x = Vector2.new(), Vector2.new(), Vector2.new()
	fovSpring.t, fovSpring.v, fovSpring.x = camera.FieldOfView, 0, camera.FieldOfView

	local camCFrame = camera.CFrame
	local lookVector = camCFrame.lookVector.unit

	stateRot = Vector2.new(
		math.asin(lookVector.y),
		math.atan2(-lookVector.z, lookVector.x) - math.pi/2
	)
	panDeltaMouse = Vector2.new()

	local playerGui = player:WaitForChild("PlayerGui")
	for _, obj in next, playerGui:GetChildren() do
		if obj:IsA("ScreenGui") and obj.Enabled then
			obj.Enabled = false
			screenGuis[obj] = true
		end
	end
	if LETTERBOX then
		letterbox.Enabled = true
	end
	RS:BindToRenderStep("Freecam", Enum.RenderPriority.Camera.Value, UpdateFreecam)
	freeCamEnabled = true
end

local function ExitFreecam()
	freeCamEnabled = false
	if LETTERBOX then
		letterbox.Enabled = false
	end
	--UIS.MouseIconEnabled = true
	UIS.MouseBehavior = Enum.MouseBehavior.Default
	Maid:Sweep()
	RS:UnbindFromRenderStep("Freecam")
	local hum, hrp = GetChar()
	if hum then
		hum.WalkSpeed = 16
	end
	if hrp then
		hrp.Anchored = false
	end
	camera.FieldOfView = DEF_FOV
	camera.CameraType = Enum.CameraType.Custom
	for obj in next, screenGuis do
		obj.Enabled = true
	end
	screenGuis = {}
	ToggleGui(true)
end

script.Parent.RightFrame.Button.Activated:Connect(function()
	task.wait(0.05)
	if Debounce then
		script.Parent.RightFrame.Button.Point:TweenPosition(UDim2.new(0.07, 0,0.108, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Linear, 0.15)
		TweenService:Create(script.Parent.RightFrame.Button, TweenInfo.new(0.35, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
			BackgroundColor3 = Color3.fromRGB(95, 95, 95)
		}):Play()
		ExitFreecam()
		Debounce = not Debounce
	else
		script.Parent.RightFrame.Button.Point:TweenPosition(UDim2.new(0.57, 0,0.108, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Linear, 0.15)
		TweenService:Create(script.Parent.RightFrame.Button, TweenInfo.new(0.35, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut), {
			BackgroundColor3 = Color3.fromRGB(255, 85, 0)
		}):Play()
		EnterFreecam()
		Players.LocalPlayer.PlayerGui.ContentCreator.Enabled = true
		Debounce = not Debounce
	end
end)


Prompt: -- ONLY WHEN FROM "Profile.GlobalUpdates":

Response:
function GlobalUpdates:ListenToNewActiveUpdate(listener) --> [ScriptConnection] listener(update_id, update_data)
	if type(listener) ~= "function" then
		error("[ProfileService]: Only a function can be set as listener in GlobalUpdates:ListenToNewActiveUpdate()")
	end
	local profile = self._profile
	if self._update_handler_mode == true then
		error("[ProfileService]: Can't listen to new global updates in ProfileStore:GlobalUpdateProfileAsync()")
	elseif self._new_active_update_listeners == nil then
		error("[ProfileService]: Can't listen to new global updates in view mode")
	elseif profile:IsActive() == false then -- Check if profile is expired
		return { -- Do not connect listener if the profile is expired
			Disconnect = function() end,
		}
	end
	-- Connect listener:
	return self._new_active_update_listeners:Connect(listener)
end

function GlobalUpdates:ListenToNewLockedUpdate(listener) --> [ScriptConnection] listener(update_id, update_data)
	if type(listener) ~= "function" then
		error("[ProfileService]: Only a function can be set as listener in GlobalUpdates:ListenToNewLockedUpdate()")
	end
	local profile = self._profile
	if self._update_handler_mode == true then
		error("[ProfileService]: Can't listen to new global updates in ProfileStore:GlobalUpdateProfileAsync()")
	elseif self._new_locked_update_listeners == nil then
		error("[ProfileService]: Can't listen to new global updates in view mode")
	elseif profile:IsActive() == false then -- Check if profile is expired
		return { -- Do not connect listener if the profile is expired
			Disconnect = function() end,
		}
	end
	-- Connect listener:
	return self._new_locked_update_listeners:Connect(listener)
end

function GlobalUpdates:LockActiveUpdate(update_id)
	if type(update_id) ~= "number" then
		error("[ProfileService]: Invalid update_id")
	end
	local profile = self._profile
	if self._update_handler_mode == true then
		error("[ProfileService]: Can't lock active global updates in ProfileStore:GlobalUpdateProfileAsync()")
	elseif self._pending_update_lock == nil then
		error("[ProfileService]: Can't lock active global updates in view mode")
	elseif profile:IsActive() == false then -- Check if profile is expired
		error("[ProfileService]: PROFILE EXPIRED - Can't lock active global updates")
	end
	-- Check if global update exists with given update_id
	local global_update_exists = nil
	for _, global_update in ipairs(self._updates_latest[2]) do
		if global_update[1] == update_id then
			global_update_exists = global_update
			break
		end
	end
	if global_update_exists ~= nil then
		local is_pending_lock = false
		for _, lock_update_id in ipairs(self._pending_update_lock) do
			if update_id == lock_update_id then
				is_pending_lock = true -- Exclude global updates pending to be locked
				break
			end
		end
		if is_pending_lock == false and global_update_exists[3] == false then -- Avoid id duplicates in _pending_update_lock
			table.insert(self._pending_update_lock, update_id)
		end
	else
		error("[ProfileService]: Passed non-existant update_id")
	end
end

function GlobalUpdates:ClearLockedUpdate(update_id)
	if type(update_id) ~= "number" then
		error("[ProfileService]: Invalid update_id")
	end
	local profile = self._profile
	if self._update_handler_mode == true then
		error("[ProfileService]: Can't clear locked global updates in ProfileStore:GlobalUpdateProfileAsync()")
	elseif self._pending_update_clear == nil then
		error("[ProfileService]: Can't clear locked global updates in view mode")
	elseif profile:IsActive() == false then -- Check if profile is expired
		error("[ProfileService]: PROFILE EXPIRED - Can't clear locked global updates")
	end
	-- Check if global update exists with given update_id
	local global_update_exists = nil
	for _, global_update in ipairs(self._updates_latest[2]) do
		if global_update[1] == update_id then
			global_update_exists = global_update
			break
		end
	end
	if global_update_exists ~= nil then
		local is_pending_clear = false
		for _, clear_update_id in ipairs(self._pending_update_clear) do
			if update_id == clear_update_id then
				is_pending_clear = true -- Exclude global updates pending to be cleared
				break
			end
		end
		if is_pending_clear == false and global_update_exists[3] == true then -- Avoid id duplicates in _pending_update_clear
			table.insert(self._pending_update_clear, update_id)
		end
	else
		error("[ProfileService]: Passed non-existant update_id")
	end
end


Prompt: --Misc

Response:
Tune.RevAccel		= 155		-- RPM acceleration when clutch is off
Tune.RevDecay		= 35		-- RPM decay when clutch is off
Tune.RevBounce		= 400		-- RPM kickback from redline
Tune.IdleThrottle	= 5			-- Percent throttle at idle
Tune.ClutchTol		= 5			-- Clutch engagement threshold (higher = faster response, lower = more stable RPM)


Prompt:
--[[*
 * POSIX Bracket Regex
 ]]

Response:
local POSIX_REGEX_SOURCE = {
	alnum = "a-zA-Z0-9",
	alpha = "a-zA-Z",
	ascii = "\\x00-\\x7F",
	blank = " \\t",
	cntrl = "\\x00-\\x1F\\x7F",
	digit = "0-9",
	graph = "\\x21-\\x7E",
	lower = "a-z",
	print = "\\x20-\\x7E ",
	punct = "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",
	space = " \\t\\r\\n\\v\\f",
	upper = "A-Z",
	word = "A-Za-z0-9_",
	xdigit = "A-Fa-f0-9",
}

return {
	MAX_LENGTH = 1024 * 64,
	POSIX_REGEX_SOURCE = POSIX_REGEX_SOURCE,

	-- regular expressions
	-- ROBLOX TODO: no "g" flag supported yet
	-- REGEX_BACKSLASH = RegExp("\\\\(?![*+?^${}(|)[\\]])", "g"),
	REGEX_NON_SPECIAL_CHARS = "^[^@![%].,$*+?^{}()|\\/]+",
	REGEX_SPECIAL_CHARS = "[-*+?.^${}(|)[%]]",
	-- ROBLOX TODO START: no "g" flag supported yet
	REGEX_SPECIAL_CHARS_BACKREF = RegExp("(\\\\?)((\\W)(\\3*))"),
	-- REGEX_SPECIAL_CHARS_GLOBAL = RegExp("([-*+?.^${}(|)[\\]])", "g"),
	-- REGEX_REMOVE_BACKSLASH = RegExp("(?:\\[.*?[^\\\\]\\]|\\\\(?=.))", "g"),
	-- ROBLOX TODO END

	-- Replace globs with equivalent patterns to reduce parsing time.
	REPLACEMENTS = {
		["***"] = "*",
		["**/**"] = "**",
		["**/**/**"] = "**",
	},

	-- Digits
	CHAR_0 = 48, --[[ 0 ]]
	CHAR_9 = 57, --[[ 9 ]]

	-- Alphabet chars.
	CHAR_UPPERCASE_A = 65, --[[ A ]]
	CHAR_LOWERCASE_A = 97, --[[ a ]]
	CHAR_UPPERCASE_Z = 90, --[[ Z ]]
	CHAR_LOWERCASE_Z = 122, --[[ z ]]
	CHAR_LEFT_PARENTHESES = 40, --[[ ( ]]
	CHAR_RIGHT_PARENTHESES = 41, --[[ ) ]]
	CHAR_ASTERISK = 42, --[[ * ]]

	-- Non-alphabetic chars.
	CHAR_AMPERSAND = 38, --[[ & ]]
	CHAR_AT = 64, --[[ @ ]]
	CHAR_BACKWARD_SLASH = 92, --[[ \ ]]
	CHAR_CARRIAGE_RETURN = 13, --[[ \r ]]
	CHAR_CIRCUMFLEX_ACCENT = 94, --[[ ^ ]]
	CHAR_COLON = 58, --[[ : ]]
	CHAR_COMMA = 44, --[[ , ]]
	CHAR_DOT = 46, --[[ . ]]
	CHAR_DOUBLE_QUOTE = 34, --[[ " ]]
	CHAR_EQUAL = 61, --[[ = ]]
	CHAR_EXCLAMATION_MARK = 33, --[[ ! ]]
	CHAR_FORM_FEED = 12, --[[ \f ]]
	CHAR_FORWARD_SLASH = 47, --[[ / ]]
	CHAR_GRAVE_ACCENT = 96, --[[ ` ]]
	CHAR_HASH = 35, --[[ # ]]
	CHAR_HYPHEN_MINUS = 45, --[[ - ]]
	CHAR_LEFT_ANGLE_BRACKET = 60, --[[ < ]]
	CHAR_LEFT_CURLY_BRACE = 123, --[[ { ]]
	CHAR_LEFT_SQUARE_BRACKET = 91, --[[ [ ]]
	CHAR_LINE_FEED = 10, --[[ \n ]]
	CHAR_NO_BREAK_SPACE = 160, --[[ \u00A0 ]]
	CHAR_PERCENT = 37, --[[ % ]]
	CHAR_PLUS = 43, --[[ + ]]
	CHAR_QUESTION_MARK = 63, --[[ ? ]]
	CHAR_RIGHT_ANGLE_BRACKET = 62, --[[ > ]]
	CHAR_RIGHT_CURLY_BRACE = 125, --[[ } ]]
	CHAR_RIGHT_SQUARE_BRACKET = 93, --[[ ] ]]
	CHAR_SEMICOLON = 59, --[[ ; ]]
	CHAR_SINGLE_QUOTE = 39, --[[ ' ]]
	CHAR_SPACE = 32, --[[   ]]
	CHAR_TAB = 9, --[[ \t ]]
	CHAR_UNDERSCORE = 95, --[[ _ ]]
	CHAR_VERTICAL_LINE = 124, --[[ | ]]
	CHAR_ZERO_WIDTH_NOBREAK_SPACE = 65279, --[[ \uFEFF ]]

	-- ROBLOX FIXME
	SEP = "/", -- path.sep,

	--[[*
	 * Create EXTGLOB_CHARS
	]]

	extglobChars = function(chars)
		return {
			["!"] = { type = "negate", open = "(?:(?!(?:", close = ("))%s)"):format(chars.STAR) },
			["?"] = { type = "qmark", open = "(?:", close = ")?" },
			["+"] = { type = "plus", open = "(?:", close = ")+" },
			["*"] = { type = "star", open = "(?:", close = ")*" },
			["@"] = { type = "at", open = "(?:", close = ")" },
		}
	end,

	--[[*
	 * Create GLOB_CHARS
	]]

	globChars = function(win32)
		return if win32 == true then WINDOWS_CHARS else POSIX_CHARS
	end,
}


Prompt: -- Client remotes

Response:
replicatedStorage.ClientRemotes.EnemyDied.OnClientEvent:Connect(function(enemy)
	local function GetPlayerRootPart()
		if players.LocalPlayer.Character then
			return players.LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
		end
	end
	wait(0.5)
	for _,part in pairs(enemy:GetDescendants()) do
		if part:IsA("BasePart") or part.ClassName == "Decal" then
			game:GetService("TweenService"):Create(part, TweenInfo.new(1), {Transparency = 1}):Play()
		end
	end
	if enemy:FindFirstChild("LootTags") and enemy.LootTags:FindFirstChild(players.LocalPlayer.Name) and replicatedStorage.ServerSettings.XPCollectEffect.Value == true then
		-- XP effect
		local rootPart = enemy:FindFirstChild("HumanoidRootPart")
		if rootPart then
			local orbs = {}
			for _ = 1,math.random(4,8) do
				local orb = script:WaitForChild("XPOrb"):Clone()
				orb.CFrame = rootPart.CFrame + Vector3.new(math.random(-3, 3), 0, math.random(-3, 3))
				orb.Parent = workspace
				table.insert(orbs, orb)
			end
			wait(1)
			for _,orb in pairs(orbs) do
				if orb and orb.Parent then
					local playerRootPart = GetPlayerRootPart()
					if playerRootPart then
						require(playSoundEffect)("XP")
						orb.Anchored = true
						orb.CanCollide = false
						game:GetService("TweenService"):Create(orb, TweenInfo.new(0.1), {CFrame = playerRootPart.CFrame}):Play()
						wait(0.1)
					end
					orb:Destroy()
				end
			end
		end
	end
end)

replicatedStorage.ClientRemotes.DamageDone.OnClientEvent:Connect(function(enemy, damage)
	local tool = FindToolInHand()
	if enemy:FindFirstChild("HumanoidRootPart") and enemy:FindFirstChild("EnemyHumanoid") and tool then
		require(updateEnvironment).PlaySoundInCharacter(tool.DamageSound.Value)
		local indicator = Instance.new("BillboardGui")
		indicator.LightInfluence = 0
		indicator.AlwaysOnTop = true
		indicator.MaxDistance = 30
		indicator.Size = UDim2.new(5, 0, 1, 0)
		indicator.Parent = enemy.HumanoidRootPart
		local label = Instance.new("TextLabel")
		label.Font = Enum.Font.SourceSansBold
		label.BackgroundTransparency = 1
		label.TextScaled = true
		label.Size = UDim2.new(1, 0, 1, 0)
		label.TextColor3 = Color3.fromRGB(255, 255, 255)
		label.Text = damage
		label.Parent = indicator
		if damage > enemy.EnemyHumanoid.MaxHealth / 3 then -- really good damage
			label.TextColor3 = Color3.fromRGB(255, 0, 0)
		elseif damage > enemy.EnemyHumanoid.MaxHealth / 6 then -- pretty good damage
			label.TextColor3 = Color3.fromRGB(255, 255, 0)
		end
		game:GetService("TweenService"):Create(indicator, TweenInfo.new(0.5), {StudsOffset = Vector3.new(0, 1, 0)}):Play()
		local bodyParts = {}
		for _,part in pairs(enemy:GetDescendants()) do
			if part:IsA("BasePart") then
				table.insert(bodyParts, {part, part.Material, part.Color})
				part.Material = Enum.Material.Neon
				part.Color = Color3.fromRGB(255, 0, 0)
			end
		end
		wait(0.2)
		for _,part in pairs(bodyParts) do
			if part[1] and part[1].Parent then
				part[1].Material = part[2]
				part[1].Color = part[3]
			end
		end
		wait(0.3)
		game:GetService("TweenService"):Create(label, TweenInfo.new(1, Enum.EasingStyle.Linear), {TextTransparency = 1}):Play()
		game:GetService("Debris"):AddItem(indicator, 1)
	end
end)

replicatedStorage.ClientRemotes.TeleportToArea.OnClientEvent:Connect(function(areaName)
	require(updateEnvironment).LoadArea(areaName)
end)


Response:
local realDataStoreService = game:GetService("DataStoreService")
local allStores = {}

if (game:GetService("Players").LocalPlayer) then
	warn("Mocked DataStoreService is functioning on the client: The real DataStoreService will not work on the client")
end


Prompt:
-- Replacements for RootCamera:RotateCamera() which did not actually rotate the camera
-- suppliedLookVector is not normally passed in, it's used only by Watch camera

Response:
function BaseCamera:CalculateNewLookCFrame(suppliedLookVector)
	local currLookVector = suppliedLookVector or self:GetCameraLookVector()
	local currPitchAngle = math.asin(currLookVector.y)
	local yTheta = math.clamp(self.rotateInput.y, -MAX_Y + currPitchAngle, -MIN_Y + currPitchAngle)
	local constrainedRotateInput = Vector2.new(self.rotateInput.x, yTheta)
	local startCFrame = CFrame.new(ZERO_VECTOR3, currLookVector)
	local newLookCFrame = CFrame.Angles(0, -constrainedRotateInput.x, 0) * startCFrame * CFrame.Angles(-constrainedRotateInput.y,0,0)
	return newLookCFrame
end
function BaseCamera:CalculateNewLookVector(suppliedLookVector)
	local newLookCFrame = self:CalculateNewLookCFrame(suppliedLookVector)
	return newLookCFrame.lookVector
end

function BaseCamera:CalculateNewLookVectorVR()
	local subjectPosition = self:GetSubjectPosition()
	local vecToSubject = (subjectPosition - game.Workspace.CurrentCamera.CFrame.p)
	local currLookVector = (vecToSubject * X1_Y0_Z1).unit
	local vrRotateInput = Vector2.new(self.rotateInput.x, 0)
	local startCFrame = CFrame.new(ZERO_VECTOR3, currLookVector)
	local yawRotatedVector = (CFrame.Angles(0, -vrRotateInput.x, 0) * startCFrame * CFrame.Angles(-vrRotateInput.y,0,0)).lookVector
	return (yawRotatedVector * X1_Y0_Z1).unit
end

function BaseCamera:GetHumanoid()
	local character = player and player.Character
	if character then
		local resultHumanoid = self.humanoidCache[player]
		if resultHumanoid and resultHumanoid.Parent == character then
			return resultHumanoid
		else
			self.humanoidCache[player] = nil -- Bust Old Cache
			local humanoid = character:FindFirstChildOfClass("Humanoid")
			if humanoid then
				self.humanoidCache[player] = humanoid
			end
			return humanoid
		end
	end
	return nil
end

function BaseCamera:GetHumanoidPartToFollow(humanoid, humanoidStateType)
	if humanoidStateType == Enum.HumanoidStateType.Dead then
		local character = humanoid.Parent
		if character then
			return character:FindFirstChild("Head") or humanoid.Torso
		else
			return humanoid.Torso
		end
	else
		return humanoid.Torso
	end
end

function BaseCamera:UpdateGamepad()
	local gamepadPan = self.gamepadPanningCamera
	if gamepadPan and (self.hasGameLoaded or not VRService.VREnabled) then
		gamepadPan = Util.GamepadLinearToCurve(gamepadPan)
		local currentTime = tick()
		if gamepadPan.X ~= 0 or gamepadPan.Y ~= 0 then
			self.userPanningTheCamera = true
		elseif gamepadPan == ZERO_VECTOR2 then
			self.userPanningTheCamera = false
			self.lastThumbstickRotate = nil
			if self.lastThumbstickPos == ZERO_VECTOR2 then
				self.currentSpeed = 0
			end
		end

		local finalConstant = 0

		if self.lastThumbstickRotate then
			if VRService.VREnabled then
				self.currentSpeed = self.vrMaxSpeed
			else
				local elapsedTime = (currentTime - self.lastThumbstickRotate) * 10
				self.currentSpeed = self.currentSpeed + (self.maxSpeed * ((elapsedTime*elapsedTime)/self.numOfSeconds))

				if self.currentSpeed > self.maxSpeed then self.currentSpeed = self.maxSpeed end

				if self.lastVelocity then
					local velocity = (gamepadPan - self.lastThumbstickPos)/(currentTime - self.lastThumbstickRotate)
					local velocityDeltaMag = (velocity - self.lastVelocity).magnitude

					if velocityDeltaMag > 12 then
						self.currentSpeed = self.currentSpeed * (20/velocityDeltaMag)
						if self.currentSpeed > self.maxSpeed then self.currentSpeed = self.maxSpeed end
					end
				end
			end

			finalConstant = UserGameSettings.GamepadCameraSensitivity * self.currentSpeed
			self.lastVelocity = (gamepadPan - self.lastThumbstickPos)/(currentTime - self.lastThumbstickRotate)
		end

		self.lastThumbstickPos = gamepadPan
		self.lastThumbstickRotate = currentTime

		return Vector2.new( gamepadPan.X * finalConstant, gamepadPan.Y * finalConstant * self.ySensitivity * UserGameSettings:GetCameraYInvertValue())
	end

	return ZERO_VECTOR2
end


Prompt: --Settings:

Response:
ANGLE		= 7.5	--Angle of the shifter in degrees
INVERTED	= false	--Inverts the sequential shifter motion
SHIFT_TIME	= 0.1	--Time it takes to shift between all parts (Clutch pedal, Paddle shifter, Shifter


Prompt:
--[[
	MarketplaceService does not expose a type for the result of GetProductInfo,
	so we have to do it ourselves.

	See the GetProductInfo method for more info:
	https://developer.roblox.com/en-us/api-reference/function/MarketplaceService/GetProductInfo
]]

Response:
export type ProductInfo = {
	Name: string,
	Description: string,
	PriceInRobux: number,
	Created: string,
	Updated: string,
	ContentRatingTypeId: number,
	MinimumMembershipLevel: number,
	IsPublicDomain: boolean,

	-- Creator Information
	Creator: {
		CreatorType: string,
		CreatorTargetId: number,
		Name: string,
		Id: number,
	},

	-- Assets
	AssetId: number,
	AssetTypeId: number,
	IsForSale: boolean,
	IsLimited: boolean,
	IsLimitedUnique: boolean,
	IsNew: boolean,
	Remaining: number,
	Sales: number,
	SaleAvailabilityLocations: Enum.ProductLocationRestriction,
	CanBeSoldInThisGame: boolean,
	ProductType: string,

	-- Developer Products and Game Passes
	ProductId: number,
	IconImageAssetId: number,
}


Prompt: -- GET --

Response:
function API:GetPlayerBoothText(TargetId)

	local Data = table.find(BoothText, TargetId)

	if not Data then

		return nil

	end

	table.remove(BoothText, TargetId)

	return Data

end

function API:GetPlayerSingText(TargetId)

	local Data = table.find(SingText, TargetId)

	if not Data then

		return nil

	end

	table.remove(SingText, TargetId)

	return Data

end

function API:GetPlayerBooth(TargetId)

	local Data = table.find(CurrentBooth, TargetId)

	if not Data then

		return nil

	end

	table.remove(CurrentBooth, TargetId)

	return Data

end

return API


Prompt: -- Extracted out of jasmine 2.5.2

Response:
type Tester = (any, any) -> any

local equals = RobloxShared.expect.equals


Prompt: -- Thread/Yield storage

Response:
local threads = {}
local n_threads = 0

RunService.Stepped:Connect(function(_, delta_time)
	-- Do not execute if no yields are present
	if (n_threads == 0) then return end

	-- Get the [current_time]
	local current_time = os.clock()

	-- Loop through all the running yields
	local thread_index = 1
	while (thread_index < n_threads) do
		-- Fetch the [thread] and its [resume_time]
		local resume_time_index = (thread_index + 1)

		local thread, resume_time = threads[thread_index], threads[resume_time_index]

		-- If the current [index] is nil then break out of the loop
		if (not thread) then break end

		-- Time elapsed since the current yield was started
		local difference = (resume_time - current_time)

		-- If the yield has been completed
		if (difference <= 0) then
			-- Remove it from [threads] table
			if (resume_time_index ~= n_threads) then
				threads[thread_index] = threads[n_threads - 1]
				threads[resume_time_index] = threads[n_threads]

				threads[n_threads - 1] = nil
				threads[n_threads] = nil

				n_threads -= 2

				-- Resume the [thread] (stop the yield)
				coroutine.resume(thread, current_time)

				continue
			else
				threads[thread_index] = nil
				threads[resume_time_index] = nil

				n_threads -= 2

				-- Resume the [thread] (stop the yield)
				coroutine.resume(thread, current_time)
			end
		end
		thread_index += 2
	end
end)


Prompt: -- Setup animation objects

Response:
function scriptChildModified(child)
	local fileList = animNames[child.Name]
	if (fileList ~= nil) then
		configureAnimationSet(child.Name, fileList)
	end
end

script.ChildAdded:connect(scriptChildModified)
script.ChildRemoved:connect(scriptChildModified)

for name, fileList in pairs(animNames) do
	configureAnimationSet(name, fileList)
end


Prompt:
--[=[
	Makes a brio that is limited by the lifetime of its parent (but could be shorter)
	and has the new values given at the beginning of the result

	@since 3.6.0
	@param brio Brio<U>
	@param ... T
	@return Brio<T>
]=]

Response:
function BrioUtils.prepend(brio, ...)
	if brio:IsDead() then
		return Brio.DEAD
	end

	local values = brio._values
	local current = {}
	local otherValues = table.pack(...)
	for i=1, otherValues.n do
		current[i] = otherValues[i]
	end
	for i=1, values.n do
		current[otherValues.n+i] = values[i]
	end

	local maid = Maid.new()
	local newBrio = Brio.new(unpack(current, 1, values.n + otherValues.n))

	maid:GiveTask(brio:GetDiedSignal():Connect(function()
		newBrio:Kill()
	end))

	maid:GiveTask(newBrio:GetDiedSignal():Connect(function()
		maid:DoCleaning()
	end))

	return newBrio
end


Prompt: --------------------) Settings

Response:
Damage = 0 -- the ammout of health the player or mob will take

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

ZoneModelName = "LB blaster rise zone 4" -- name the zone model

MobHumanoidName = "Humanoid"-- the name of player or mob u want to damage


Prompt: --Power Front Wheels

Response:
if _Tune.Config == "FWD" or _Tune.Config == "AWD" then
	for i,v in pairs(car.Wheels:GetChildren()) do
		if v.Name=="FL" or v.Name=="FR" or v.Name=="F" then
			table.insert(Drive,v)
		end
	end
end


Prompt: --[[ The Module ]]

Response:
--
local BaseCamera = require(script.Parent:WaitForChild("BaseCamera"))
local LegacyCamera = setmetatable({}, BaseCamera)
LegacyCamera.__index = LegacyCamera

function LegacyCamera.new()
	local self = setmetatable(BaseCamera.new(), LegacyCamera)

	self.cameraType = Enum.CameraType.Fixed
	self.lastUpdate = tick()
	self.lastDistanceToSubject = nil

	return self
end

function LegacyCamera:GetModuleName()
	return "LegacyCamera"
end

function LegacyCamera:Test()
	print("LegacyCamera:Test()")
end


Prompt: -- Lock the view:

Response:
function CamLock.Lock(p)
	cam.CameraType = Enum.CameraType.Scriptable
	plane = p
	seat = plane:WaitForChild("Functional"):WaitForChild("PilotSeat")
	currentView = views[currentViewIndex]
end


Prompt: --------|    Variables    |--------

Response: local cachedGamepassInfo = {}


Prompt:
--		elseif key == "j" then --Window controls
--		 if pal == false then
--			palpal.Visible = true
--			pal = true
--		 else pal = false
--			palpal.Visible = false
--		 end

Response:
		elseif key == "[" then -- volume down
			if carSeat.Parent.Body.MP.Sound.Volume > 0 then
				handler:FireServer('updateVolume', -0.2)
			end
		elseif key == "]" then -- volume up
			if carSeat.Parent.Body.MP.Sound.Volume < 10 then
				handler:FireServer('updateVolume', 0.2)
			end
	end
end)

HUB.Limiter.MouseButton1Click:connect(function() --Ignition
 if carSeat.IsOn.Value == false then
	carSeat.IsOn.Value = true
	carSeat.Startup:Play()
	wait(1)
else
	carSeat.IsOn.Value = false
end
end)

TR.SN.MouseButton1Click:connect(function() --Show tracker names
	script.Parent.Names.Value = true
end)

TR.HN.MouseButton1Click:connect(function() --Hide tracker names
	script.Parent.Names.Value = false
end)

winfob.mg.Play.MouseButton1Click:connect(function() --Play the next song
	handler:FireServer('updateSong', winfob.mg.Input.Text)
end)

carSeat.Indicator.Changed:connect(function()
	if carSeat.Indicator.Value == true then
		script.Parent.Indicator:Play()
	else
		script.Parent.Indicator2:Play()
	end
end)

carSeat.LI.Changed:connect(function()
	if carSeat.LI.Value == true then
		carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Left.Visible = true
		script.Parent.HUB.Left.Visible = true
	else
		carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Left.Visible = false
		script.Parent.HUB.Left.Visible = false
	end
end)

carSeat.RI.Changed:connect(function()
	if carSeat.RI.Value == true then
		carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Right.Visible = true
		script.Parent.HUB.Right.Visible = true
	else
		carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Right.Visible = false
		script.Parent.HUB.Right.Visible = false
	end
end)

for i,v in pairs(script.Parent:getChildren()) do
	if v:IsA('TextButton') then
		v.MouseButton1Click:connect(function()
			if carSeat.Windows:FindFirstChild(v.Name) then
				local v = carSeat.Windows:FindFirstChild(v.Name)
				if v.Value == true then
					handler:FireServer('updateWindows', v.Name, false)
				else
					handler:FireServer('updateWindows', v.Name, true)
				end
			end
		end)
	end
end

while wait() do
	carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Time.Text = game.Lighting.TimeOfDay
	carSeat.Parent.Body.Dash.Screen.SurfaceGui.Time.Text = game.Lighting.TimeOfDay
	carSeat.Parent.Body.Dash.Screen2.SurfaceGui.Frame.Speed.Text = math.floor(carSeat.Velocity.magnitude*((10/12) * (60/88)))
end


Prompt:
--[[
	Function called when leaving the state
]]

Response:
function PlayerPreGame.leave(stateMachine)
end

return PlayerPreGame


Prompt: --Precalculated paths

Response:
local t,f,n=true,false,{}
local r={
[58]={{44,28,29,31,32,34,35,39,41,30,56,58},t},
[49]={{44,45,49},t},
[16]={n,f},
[19]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19},t},
[59]={{44,28,29,31,32,34,35,39,41,59},t},
[63]={{44,28,29,31,32,34,35,39,41,30,56,58,23,62,63},t},
[34]={{44,28,29,31,32,34},t},
[21]={{44,28,29,31,32,34,35,39,41,30,56,58,20,21},t},
[48]={{44,45,49,48},t},
[27]={{44,28,27},t},
[14]={n,f},
[31]={{44,28,29,31},t},
[56]={{44,28,29,31,32,34,35,39,41,30,56},t},
[29]={{44,28,29},t},
[13]={n,f},
[47]={{44,45,49,48,47},t},
[12]={n,f},
[45]={{44,45},t},
[57]={{44,28,29,31,32,34,35,39,41,30,56,57},t},
[36]={{44,28,29,31,32,33,36},t},
[25]={{44,28,27,26,25},t},
[71]={{44,28,29,31,32,34,35,39,41,59,61,71},t},
[20]={{44,28,29,31,32,34,35,39,41,30,56,58,20},t},
[60]={{44,28,29,31,32,34,35,39,41,60},t},
[8]={n,f},
[4]={n,f},
[75]={{44,28,29,31,32,34,35,39,41,59,61,71,72,76,73,75},t},
[22]={{44,28,29,31,32,34,35,39,41,30,56,58,20,21,22},t},
[74]={{44,28,29,31,32,34,35,39,41,59,61,71,72,76,73,74},t},
[62]={{44,28,29,31,32,34,35,39,41,30,56,58,23,62},t},
[1]={n,f},
[6]={n,f},
[11]={n,f},
[15]={n,f},
[37]={{44,28,29,31,32,33,36,37},t},
[2]={n,f},
[35]={{44,28,29,31,32,34,35},t},
[53]={{44,45,49,48,47,52,53},t},
[73]={{44,28,29,31,32,34,35,39,41,59,61,71,72,76,73},t},
[72]={{44,28,29,31,32,34,35,39,41,59,61,71,72},t},
[33]={{44,28,29,31,32,33},t},
[69]={{44,28,29,31,32,34,35,39,41,60,69},t},
[65]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19,66,64,65},t},
[26]={{44,28,27,26},t},
[68]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19,66,64,67,68},t},
[76]={{44,28,29,31,32,34,35,39,41,59,61,71,72,76},t},
[50]={{44,45,49,48,47,50},t},
[66]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19,66},t},
[10]={n,f},
[24]={{44,28,27,26,25,24},t},
[23]={{44,28,29,31,32,34,35,39,41,30,56,58,23},t},
[44]={{44},t},
[39]={{44,28,29,31,32,34,35,39},t},
[32]={{44,28,29,31,32},t},
[3]={n,f},
[30]={{44,28,29,31,32,34,35,39,41,30},t},
[51]={{44,45,49,48,47,50,51},t},
[18]={n,f},
[67]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19,66,64,67},t},
[61]={{44,28,29,31,32,34,35,39,41,59,61},t},
[55]={{44,45,49,48,47,52,53,54,55},t},
[46]={{44,45,49,48,47,46},t},
[42]={{44,28,29,31,32,34,35,38,42},t},
[40]={{44,28,29,31,32,34,35,40},t},
[52]={{44,45,49,48,47,52},t},
[54]={{44,45,49,48,47,52,53,54},t},
[43]={n,f},
[7]={n,f},
[9]={n,f},
[41]={{44,28,29,31,32,34,35,39,41},t},
[17]={n,f},
[38]={{44,28,29,31,32,34,35,38},t},
[28]={{44,28},t},
[5]={n,f},
[64]={{44,28,29,31,32,34,35,39,41,30,56,58,20,19,66,64},t},
}
return r


Prompt:
--- Returns the store with the given name
-- Used for commands that require persistent state, like bind or ban

Response:
function Registry:GetStore(name)
	return self.Stores[name]
end


Prompt:
--[[**
	<description>
	Run this once to combine all keys provided into one "main key".
	Internally, this means that data will be stored in a table with the key mainKey.
	This is used to get around the 2-DataStore2 reliability caveat.
	</description>

	<parameter name = "mainKey">
	The key that will be used to house the table.
	</parameter>

	<parameter name = "...">
	All the keys to combine under one table.
	</parameter>
**--]]

Response:
function DataStore2.Combine(mainKey, ...)
	for _, name in pairs({...}) do
		combinedDataStoreInfo[name] = mainKey
	end
end

function DataStore2.ClearCache()
	DataStoreCache = {}
end

function DataStore2:__call(dataStoreName, player)
	assert(typeof(dataStoreName) == "string" and typeof(player) == "Instance", ("DataStore2() API call expected {string dataStoreName, Instance player}, got {%s, %s}"):format(typeof(dataStoreName), typeof(player)))
	if DataStoreCache[player] and DataStoreCache[player][dataStoreName] then
		return DataStoreCache[player][dataStoreName]
	elseif combinedDataStoreInfo[dataStoreName] then
		local dataStore = DataStore2(combinedDataStoreInfo[dataStoreName], player)

		dataStore:BeforeSave(function(combinedData)
			for key in pairs(combinedData) do
				if combinedDataStoreInfo[key] then
					local combinedStore = DataStore2(key, player)
					local value = combinedStore:Get(nil, true)
					if value ~= nil then
						if combinedStore.combinedBeforeSave then
							value = combinedStore.combinedBeforeSave(clone(value))
						end
						combinedData[key] = value
					end
				end
			end

			return combinedData
		end)

		local combinedStore = setmetatable({
			combinedName = dataStoreName,
			combinedStore = dataStore
		}, {
			__index = function(self, key)
				return CombinedDataStore[key] or dataStore[key]
			end
		})

		if not DataStoreCache[player] then
			DataStoreCache[player] = {}
		end

		DataStoreCache[player][dataStoreName] = combinedStore
		return combinedStore
	end

	local dataStore = {}

	dataStore.Name = dataStoreName
	dataStore.UserId = player.UserId

	dataStore.callbacks = {}
	dataStore.beforeInitialGet = {}
	dataStore.afterSave = {}
	dataStore.bindToClose = {}
	dataStore.savingMethod = SavingMethods.OrderedBackups.new(dataStore)

	setmetatable(dataStore, DataStoreMetatable)

	local event, fired = Instance.new("BindableEvent"), false

	game:BindToClose(function()
		if not fired then
			event.Event:wait()
		end

		local value = dataStore:Get(nil, true)

		for _, bindToClose in pairs(dataStore.bindToClose) do
			bindToClose(player, value)
		end
	end)

	local playerLeavingConnection
	playerLeavingConnection = player.AncestryChanged:Connect(function()
		if player:IsDescendantOf(game) then return end
		playerLeavingConnection:Disconnect()
		dataStore:Save()
		event:Fire()
		fired = true

		task.delay(40, function() --Give a long delay for people who haven't figured out the cache :^(
			DataStoreCache[player] = nil
		end)
	end)

	if not DataStoreCache[player] then
		DataStoreCache[player] = {}
	end

	DataStoreCache[player][dataStoreName] = dataStore

	return dataStore
end

return setmetatable(DataStore2, DataStore2)


Prompt: --------------| SYSTEM SETTINGS |--------------

Response:
Prefix				= ",";			-- The character you use before every command (e.g. ';jump me').
SplitKey 			= " ";			-- The character inbetween command arguments (e.g. setting it to '/' would change ';jump me' to ';jump/me').
BatchKey 			= "";			-- The character inbetween batch commands (e.g. setting it to '|' would change ';jump me ;fire me ;smoke me' to ';jump me | ;fire me | ;smoke me'
QualifierBatchKey 	= ",";			-- The character used to split up qualifiers (e.g. ;jump player1,player2,player3)

Theme				= "Blue";		-- The default UI theme.
NoticeSoundId		= 2865227271;	-- The SoundId for notices.
NoticeVolume		= 0.1;			-- The Volume for notices.
NoticePitch			= 1;			-- The Pitch/PlaybackSpeed for notices.
ErrorSoundId		= 2865228021;	-- The SoundId for error notifications.
ErrorVolume			= 0.1;			-- The Volume for error notifications.
ErrorPitch			= 1;			-- The Pitch/PlaybackSpeed for error notifications.
AlertSoundId		= 3140355872;	-- The SoundId for alerts.
AlertVolume			= 0.5;			-- The Volume for alerts.
AlertPitch			= 1;			-- The Pitch/PlaybackSpeed for alerts.

WelcomeBadgeId		= 0;			-- Award new players a badge, such as 'Welcome to the game!'. Set to 0 for no badge.

CommandDebounce		= true;			-- Wait until the command effect is over to use again. Helps to limit abuse & lag. Set to 'false' to disable.
SaveRank			= true;			-- Saves a player's rank in the server they received it. (e.g. ;rank plrName rank). Use ';permRank plrName rank' to permanently save a rank. Set to 'false' to disable.
LoopCommands		= 3;			-- The minimum rank required to use LoopCommands.
MusicList 			= {505757009,};	-- Songs which automatically appear in a user's radio. Type '!radio' to display the radio.

ThemeColors = {						-- The colours players can set their HD Admin UI (in the 'Settings' menu). | Format: {ThemeName, ThemeColor3Value};
	{"Red", 	Color3.fromRGB(150, 0, 0),		};
	{"Orange", 	Color3.fromRGB(150, 75, 0),		};
	{"Brown", 	Color3.fromRGB(120, 80, 30),	};
	{"Yellow", 	Color3.fromRGB(130, 120, 0),	};
	{"Green", 	Color3.fromRGB(0, 120, 0),		};
	{"Blue", 	Color3.fromRGB(0, 100, 150),	};
	{"Purple", 	Color3.fromRGB(100, 0, 150),	};
	{"Pink",	Color3.fromRGB(150, 0, 100),	};
	{"Black", 	Color3.fromRGB(60, 60, 60),		};
};

Colors = {							-- The colours for ChatColors and command arguments. | Format: {"ShortName", "FullName", Color3Value};
	{"r", 		"Red",		 		Color3.fromRGB(255, 0, 0)		};
	{"o", 		"Orange",	 		Color3.fromRGB(250, 100, 0)		};
	{"y", 		"Yellow",			Color3.fromRGB(255, 255, 0)		};
	{"g", 		"Green"	,			Color3.fromRGB(0, 255, 0)		};
	{"dg", 		"DarkGreen"	, 		Color3.fromRGB(0, 125, 0)		};
	{"b", 		"Blue",		 		Color3.fromRGB(0, 255, 255)		};
	{"db", 		"DarkBlue",			Color3.fromRGB(0, 50, 255)		};
	{"p", 		"Purple",	 		Color3.fromRGB(150, 0, 255)		};
	{"pk",		"Pink",		 		Color3.fromRGB(255, 85, 185)	};
	{"bk",		"Black",		 	Color3.fromRGB(0, 0, 0)			};
	{"w",		"White",	 		Color3.fromRGB(255, 255, 255)	};
};
ChatColors = {						-- The colour a player's chat will appear depending on their rank. '["Owner"] = "Yellow";' makes the owner's chat yellow.
	[5] 		= "Yellow";
};

Cmdbar						= 1;			-- The minimum rank required to use the Cmdbar.
Cmdbar2						= 3;			-- The minimum rank required to use the Cmdbar2.
ViewBanland					= 3;			-- The minimum rank required to view the banland.
OnlyShowUsableCommands		= false;		-- Only display commands equal to or below the user's rank on the Commands page.
RankRequiredToViewPage		= {				-- || The pages on the main menu ||
	["Commands"]		= 0;
	["Admin"]			= 0;
	["Settings"]		= 0;
};
RankRequiredToViewRank		= {				-- || The rank categories on the 'Ranks' subPage under Admin ||
	["Owner"]			= 0;
	["HeadAdmin"]		= 0;
	["Admin"]			= 0;
	["Mod"]				= 0;
	["VIP"]				= 0;
};
RankRequiredToViewRankType	= {				-- || The collection of loader-rank-rewarders on the 'Ranks' subPage under Admin ||
	["Owner"]			= 0;
	["SpecificUsers"]	= 5;
	["Gamepasses"] 		= 0;
	["Assets"] 			= 0;
	["Groups"] 			= 0;
	["Friends"] 		= 0;
	["FreeAdmin"] 		= 0;
	["VipServerOwner"] 	= 0;
};

WelcomeRankNotice			= true;			-- The 'You're a [rankName]' notice that appears when you join the game. Set to false to disable.
WelcomeDonorNotice			= true;			-- The 'You're a Donor' notice that appears when you join the game. Set to false to disable.
WarnIncorrectPrefix			= true;			-- Warn the user if using the wrong prefix | "Invalid prefix! Try using [correctPrefix][commandName] instead!"
DisableAllNotices			= false;		-- Set to true to disable all HD Admin notices.

ScaleLimit					= 4;			-- The maximum size players with a rank lower than 'IgnoreScaleLimit' can scale theirself. For example, players will be limited to ;size me 4 (if limit is 4) - any number above is blocked.
IgnoreScaleLimit			= 3;			-- Any ranks equal or above this value will ignore 'ScaleLimit'

VIPServerCommandBlacklist	= {"permRank", "permBan", "globalAnnouncement"};	-- Commands players are probihited from using in VIP Servers.
GearBlacklist				= {67798397};	-- The IDs of gear items to block when using the ;gear command.
IgnoreGearBlacklist			= 4;			-- The minimum rank required to ignore the gear blacklist.

PlayerDataStoreVersion		= "V1.0";		-- Data about the player (i.e. permRanks, custom settings, etc). Changing the Version name will reset all PlayerData.
SystemDataStoreVersion		= "V1.0";		-- Data about the game (i.e. the banland, universal message system, etc). Changing the Version name will reset all SystemData.

CoreNotices					= {				-- Modify core notices. You can find a table of all CoreNotices under [MainModule > Client > SharedModules > CoreNotices]
	--NoticeName = NoticeDetails;
};


Prompt:
--[=[
	@within Plasma
	@function highlight
	@param adornee Instance
	@param options? HighlightOptions

	Creates a highlight over an instance with the specified options, using the Roblox [Highlight] instance
]=]

Response:
return Runtime.widget(function(adornee, options)
	options = options or {}

	local refs = Runtime.useInstance(function(ref)
		return create("Highlight", {
			[ref] = "highlight",
		})
	end)

	refs.highlight.Adornee = adornee

	Runtime.useEffect(function()
		refs.highlight.OutlineColor = options.outlineColor or Color3.new(1, 1, 1)
		refs.highlight.FillColor = options.fillColor or Color3.new(1, 0, 0)
	end, options.fillColor, options.outlineColor)

	refs.highlight.FillTransparency = options.fillTransparency or 0.5
	refs.highlight.OutlineTransparency = options.outlineTransparency or 0
	refs.highlight.DepthMode = options.depthMode or Enum.HighlightDepthMode.AlwaysOnTop
end)


Prompt:
--[=[
	Constructs a new Spring at the position and target specified, of type T.

	```lua
	-- Linear spring
	local linearSpring = Spring.new(0)

	-- Vector2 spring
	local vector2Spring = Spring.new(Vector2.new(0, 0))

	-- Vector3 spring
	local vector3Spring = Spring.new(Vector3.new(0, 0, 0))
	```

	@param initial T -- The initial parameter is a number or Vector3 (anything with * number and addition/subtraction).
	@param clock? () -> number -- The clock function is optional, and is used to update the spring
	@return Spring<T>
]=]

Response:
function Spring.new(initial, clock)
	local target = initial or 0
	clock = clock or os.clock
	return setmetatable({
		_clock = clock;
		_time0 = clock();
		_position0 = target;
		_velocity0 = 0*target;
		_target = target;
		_damper = 1;
		_speed = 1;
	}, Spring)
end