Prompt: -- Tools --

Response:
function Tools:RotateVector(Vector : Vector3, Rotation : Vector3 | CFrame)

	if typeof(Rotation) == 'Vector3' then
		Rotation = Tools:Vector3ToCFrameAngles(Rotation)
	end

	local RotatedVector = Rotation:VectorToWorldSpace(Vector)

	return RotatedVector
end
function Tools:GetObjectByAddress(Address, StartInput)
	local Current
	if StartInput then
		Current = StartInput
	else
		Current = game
	end
	for i, k in pairs(Address) do
		Current = Current:FindFirstChild(k)
		if Current == nil then return end
	end
	return Current
end
function Tools:Waitf(frames : number)

	if frames == 0 then
		return 0
	end
	local start = os.clock()
	--Tools:SuperWait(frames / 60)
	task.wait(frames / 60)
	return os.clock() - start
end
function Tools:Vector3ToCFrameAngles(vector3)
	return CFrame.Angles(math.rad(vector3.X), math.rad(vector3.Y), math.rad(vector3.Z))
end
function Tools:GetCFrameOrientation(c : CFrame)
	local Orientation = Vector3.new(c:ToOrientation())

	Orientation = Tools:Vector3InDegrees(Orientation)

	return Orientation
end

local AvailableAnimations = {}
local LoadedAnimations = {}

function Tools:PlayAnim(
	Character : Model,
	Animation : string | number | Animation,
	PlayArguments : {fadeTime : number, weight : number, speed : number}
)
	local Humanoid = Character:FindFirstChildWhichIsA('Humanoid')
	if Animation == nil then return end
	if Humanoid:IsAncestorOf(workspace) == nil then warn('No animation argument') return end

	local Animator : Animator = Humanoid:FindFirstChild('Animator') or Instance.new('Animator', Humanoid)

	if typeof(Animation) == 'Animation' then
		-- shouldn't need to do anything for this

	elseif typeof(Animation) == 'string' then
		local AnimationInstance = Instance.new('Animation', Animator)
		AnimationInstance.Name = Animation
		AnimationInstance.AnimationId = Animation
		Animation = AnimationInstance
	elseif typeof(Animation) == 'number' then
		local AnimationInstance = Instance.new('Animation', Animator)
		AnimationInstance.Name = Animation
		AnimationInstance.AnimationId = 'rbxassetid://'.. tostring(Animation)
		Animation = AnimationInstance

	end

	local Anim : AnimationTrack
	local AnimatorLoadedAnimations = LoadedAnimations[Animator]
	if AnimatorLoadedAnimations == nil then
		LoadedAnimations[Animator] = {}
		AnimatorLoadedAnimations = LoadedAnimations[Animator]

		local KillCheck
		KillCheck = Humanoid.StateChanged:Connect(function(old, new)
			if new == Enum.HumanoidStateType.Dead then
				LoadedAnimations[Animator] = nil
				KillCheck:Disconnect()
			end
		end)
	end

	Anim = Animator:LoadAnimation(Animation)
	Animation:Destroy()
	table.insert(LoadedAnimations[Animator], Anim)

	if PlayArguments then
		Anim:Play(table.unpack(PlayArguments))
	else
		Anim:AdjustWeight(0)
		Anim:Play()
	end
	local Ended, Destroyed

	Ended = Anim.Ended:Once(function()
		Ended:Disconnect()
		Anim:Destroy()
	end)

	Destroyed = Anim.Destroying:Once(function()
		Ended:Disconnect()
	end)
	return Anim
end
function Tools:GetPlayerByRig(rig)
	local PotentialPlayer = Players:FindFirstChild(rig.Name)
	if PotentialPlayer then
		if PotentialPlayer.Character == rig then
			return PotentialPlayer
		end
	end
	return nil
end
function Tools:Vector3InRadians(v)
	return Vector3.new(math.rad(v.x), math.rad(v.y), math.rad(v.z))
end
function Tools:Vector3InDegrees(vector3)

	return Vector3.new(
		math.deg(vector3.x),
		math.deg(vector3.y),
		math.deg(vector3.z)
	)

end
function Tools:SuperWait(sec)
	local Start = time()

	repeat
		task.desynchronize()
		task.synchronize()
	until time() - Start >= sec

end
function Tools:DictionaryConcat(a1 : {}, a2 : {})
	local new = a1
	for i, k in pairs(a2) do
		new[i] = k
	end
	return new
end
function Tools:GetChildrenNames(instance : Instance)
	local Children = instance:GetChildren()
	for i, k in ipairs(Children) do
		table.insert(Children, i, k.Name)
		table.remove(Children, i + 1)
	end
	return Children
end

function Tools:GetCameraAimAngle()
	local Player = Players.LocalPlayer
	local Character = Player.Character
	local Mouse = Player:GetMouse()
	local Camera = workspace.CurrentCamera

	local CameraAngle
	if UserInputService.MouseBehavior == Enum.MouseBehavior.LockCenter then
		-- if in shiftlock
		CameraAngle = Camera.CFrame.Rotation

	else
		-- if not in shiftlock
		local RootPart = Character:FindFirstChild('HumanoidRootPart')

		if RootPart == nil then return nil end
		CameraAngle = CFrame.lookAt(RootPart.Position, Mouse.Hit.Position).Rotation
	end

	return CameraAngle
end

function Tools:WaitUntilAnimationTrackLoaded(Animator : Animator, AnimationTrackId : string | number)
	if typeof(AnimationTrackId) == 'number' then
		AnimationTrackId = 'rbxassetid://'.. tostring(AnimationTrackId)
	end

	local AnimationLoaded = false
	local Animation = nil

	local function CheckIfInAnimator()

		local InAnimator = false
		for i, AnimationTrack : AnimationTrack in ipairs(Animator:GetPlayingAnimationTracks()) do

			if AnimationTrack.Animation.AnimationId == AnimationTrackId then
				Animation = AnimationTrack
				InAnimator = true
				break
			end
		end

		return InAnimator
	end

	AnimationLoaded = CheckIfInAnimator()

	if not AnimationLoaded then
		repeat
			task.wait(0)

			AnimationLoaded = CheckIfInAnimator()
		until AnimationLoaded
	end

	if Animation.Length > 0 then return end
	repeat
		task.wait(0)

	until Animation.Length > 0
end

function Tools:BeamArc(Angle : number, Radius : number)

	local BeamPart = Instance.new('Part', workspace)
	BeamPart.Transparency = 1
	BeamPart.CanCollide = false
	BeamPart.CanTouch = false
	BeamPart.CanQuery = false
	BeamPart.Size = Vector3.one
	BeamPart.Anchored = true

	local Attachment0 = Instance.new('Attachment', BeamPart)
	Attachment0.Name = 'Attachment0'
	Attachment0.CFrame = CFrame.new(0, 0, Radius)

	local Attachment1 = Instance.new('Attachment', BeamPart)
	Attachment1.Name = 'Attachment1'
	Attachment1.CFrame = (CFrame.Angles(0, math.rad(Angle), 0) * CFrame.new(0, 0, Radius))
	Attachment1.CFrame *= CFrame.Angles(0, math.rad(180), 0)

	local Beam = Instance.new('Beam', BeamPart)
	Beam.Attachment0 = Attachment0
	Beam.Attachment1 = Attachment1
	Beam.CurveSize0 = (4/3) * math.tan(math.pi/8) * Radius * (Angle / 90)
	Beam.CurveSize1 = -Beam.CurveSize0

	return BeamPart

end

function Tools:DeepCopy(Original)
	local Copy = {}
	for k, v in pairs(Original) do
		if type(v) == "table" then
			v = Tools:DeepCopy(v)
		end
		Copy[k] = v
	end
	return Copy
end
return Tools


Prompt: -- Variables for Module Scripts

Response:
local screenSpace = require(Tool:WaitForChild("ScreenSpace"))

local connection


Prompt:
--[[
	Handles the PurchasingSeed stage during the First Time User Experience,
	which waits for the player to purchase a seed
--]]

Response:
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local FarmManagerServer = require(ServerStorage.Source.Farm.FarmManagerServer)
local Market = require(ServerStorage.Source.Market)
local FtueStage = require(ReplicatedStorage.Source.SharedConstants.FtueStage)
local ItemCategory = require(ReplicatedStorage.Source.SharedConstants.ItemCategory)

local PurchasingSeedFtueStage = {}

function PurchasingSeedFtueStage.handleAsync(player: Player): FtueStage.EnumType?
	local farm = FarmManagerServer.getFarmForPlayer(player)
	farm:openDoor()

	repeat
		local playerWhoBought, _, itemCategory = Market.itemsPurchased:Wait()
	until playerWhoBought == player and itemCategory == ItemCategory.Seeds

	return FtueStage.PurchasingPot
end

return PurchasingSeedFtueStage


Prompt: --[[Transmission]]

Response:
	Tune.Clutch			= true		-- Implements a realistic clutch, change to "false" for the chassis to act like AC6.81T.

	Tune.TransModes		= {"Semi","Manual","Auto"}												--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch

		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}
	>First mode is default mode													]]

	Tune.ClutchMode		= "New"												--[[
	[Modes]
		"New"		: Speed controls clutch engagement			(AC6C V1.2)
		"Old"		: Speed and RPM control clutch engagement	(AC6C V1.1)		]]

	Tune.ClutchType 	= "Clutch"										--[[
	[Types]
		"Clutch"			: Standard clutch, recommended
		"TorqueConverter"	: Torque converter, keeps RPM up
		"CVT"				: CVT, found in scooters
																		]]
	--[[Transmission]]
	--Transmission Settings
	Tune.Stall			= true		-- Stalling, enables the car to stall. An ignition plugin would be necessary. Disables if Tune.Clutch is false.
	Tune.ClutchRel		= false		-- If true, the driver must let off the gas before shifting to a higher gear. Recommended false for beginners.
	Tune.ClutchEngage	= 10		-- How fast engagement is (0 = instant, 99 = super slow)
	Tune.SpeedEngage 	= 20		-- Speed the clutch fully engages at (Based on SPS)

	--Clutch Kick (STANDARDIZED DO NOT TOUCH UNLESS YOU KNOW WHAT YOU'RE DOING)
	Tune.ClutchKick			= false	-- Enables clutch kicking, true or false
	Tune.KickMult			= 5		-- Torque multiplier on launch
	Tune.KickSpeedThreshold = 20	-- Speed limit on launch (SPS)
	Tune.KickRPMThreshold 	= 2000	-- RPM limit on launch, range is created below redline

	--Clutch: "Old" mode
	Tune.ClutchRPMMult	= 1.0		-- Clutch RPM multiplier, recommended to leave at 1.0

	--Torque Converter:
	Tune.TQLock 		= false		-- Torque converter starts locking at a certain RPM

	--Torque Converter and CVT:
	Tune.RPMEngage 		= 3500		-- Keeps RPMs to this level until passed

	--Neutral Rev Limiter (Avxnturador)
	Tune.NeutralLimit	= false		-- Enables a different redline RPM for when the car is in neutral
	Tune.NeutralRevRPM	= 5000		-- The rev limiter when the car is in neutral
	Tune.LimitClutch	= false		-- Will also limit RPMs while the clutch is pressed down

	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM										]]
	Tune.AutoShiftType	= "DCT"												--[[
	[Types]
		"Rev"		: Clutch engages fully once RPM reached			(AC6C V1)
		"DCT"		: Clutch engages after a set time has passed	(AC6.81T)	]]
	Tune.AutoShiftVers	= "New"												--[[
	[Versions]
		"New"		: Shift from Reverse, Neutral, and Drive		(AC6.81T)
		"Old"		: Auto shifts into R or D when stopped.			(AC6.52S2)	]]
	Tune.AutoUpThresh	= -200		-- Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		-- Automatic downshift point (relative to peak RPM, positive = Under-rev)

	--Automatic: Revmatching
	Tune.ShiftThrot		= 100		-- Throttle level when shifting down to revmatch, 0 - 100%

	--Automatic: DCT
	Tune.ShiftUpTime	= 0.25		-- Time required to shift into next gear, from a lower gear to a higher one.
	Tune.ShiftDnTime	= 0.125		-- Time required to shift into next gear, from a higher gear to a lower one.

	--Gear Ratios

	Tune.FinalDrive		= 3.545
	Tune.Ratios			= {
		--[[Reverse]]	3.28		,
		--[[Neutral]]	0			,
		--[[ 1 ]]		3.827		,
		--[[ 2 ]]		2.36		,
		--[[ 3 ]]		1.685		,
		--[[ 4 ]]		1.313		,
		--[[ 5 ]]		1			,
		--[[ 6 ]]		.793		,
	}
	Tune.FDMult			= 1			-- Ratio multiplier (keep this at 1 if car is not struggling with torque)


Prompt: --Position

Response:
local MoneyPX = MoneyBag.Position.X.Scale
local MoneyPY = MoneyBag.Position.Y.Scale


Prompt: ----[UPDATE SLIDERS WHEN GUI SIZE X CHANGES]----

Response:
local function ResizeSlider()
	if PluginGui.AbsoluteSize.X ~= PreviousSizeX then
		PreviousSizeX = Plugin.AbsoluteSize.X
		for i = 1,	#ColorPickers do
			UpdateRGBSliders(i)
		end
	end
end
PluginGui.Changed:Connect(ResizeSlider)


Prompt: -- Functions

Response:
local function sprint(Type)

	if Type == "Begin" then
		isSprinting = true

		humanoid.WalkSpeed *= 2
	elseif Type == "Ended" then
		isSprinting = false

		humanoid.WalkSpeed = 16
	end

end


Prompt: --// EDIT THIS SECTION IF DESIRED

Response:
local sens = 0.5 --sensitivity (changes Gs too)

local min = 0.15 --min Gs for it to work

local max = 1 --max Gs, will NOT exceed this number


Prompt:
-- Lewin4 2020/10/20
-- last edited 2020/10/20

Response:
local vat = script.Parent
local teles = game.workspace.teles

local function steppedOn(part)
	local parent = part.Parent
	if game.Players:GetPlayerFromCharacter(parent) then

		wait(0.5)

		parent.HumanoidRootPart.Position = vat.Position

		parent.HumanoidRootPart.Position = teles.tele1.Position
	end

end

vat.Touched:connect(steppedOn)


Prompt: --Signals----------

Response: ReplicatedStorage.Signals.Functions.RequestPlacement.OnServerInvoke = Place


Prompt: --// Services

Response:
local L_98_ = game:GetService('RunService').RenderStepped
local L_99_ = game:GetService('UserInputService')


Prompt: --DO NOT CHANGE ANYTHING INSIDE OF THIS SCRIPT BESIDES WHAT YOU ARE TOLD TO UNLESS YOU KNOW WHAT YOU'RE DOING OR THE SCRIPT WILL NOT WORK!!

Response:
local hitPart = script.Parent
local debounce = true
local tool = game.ServerStorage.Stick


Prompt: -- Create smoke for specified part (being destroyed)

Response:
local function createSmoke(targetPart)
	local pos = Vector3.new(0, 0, 0)
	local size = 3
	if targetPart:IsA("Model") and targetPart.PrimaryPart then
		--local plate = targetPart:FindFirstChild("Plate", true)
		local plate = targetPart.PrimaryPart
		pos = plate.Position
		size = 1*plate.Size.X
	else
		pos = targetPart.Position
		size = 1*targetPart.Size.X
	end

	local smokePart = Instance.new("Part")
	smokePart.Name = "SmokePart"
	smokePart.Transparency = 1
	smokePart.CanCollide = false
	smokePart.Anchored = true
	--smokePart.Position = getPositionRelativetoBase(smokePart, pos) + Vector3.new(0, 1, 0)
	smokePart.Position = pos + Vector3.new(0, 1, 0)
	smokePart.Size = Vector3.new(1, 1, 1)
	smokePart.Parent = mapManager.getMap()

	local crushSound
	local randomNum = math.random(1,3)
	if randomNum == 1 then
		crushSound = ServerStorage.CrushSound1:Clone()
	elseif randomNum == 2 then
		crushSound = ServerStorage.CrushSound2:Clone()
	elseif randomNum == 3 then
		crushSound = ServerStorage.CrushSound3:Clone()
	end
	crushSound.Parent = smokePart
	if not crushSound.IsLoaded then
		crushSound.Loaded:wait()
	end
	crushSound:Play()

	local smoke = Instance.new("Smoke")
	smoke.Parent = smokePart
	smoke.RiseVelocity = 0
	smoke.Size = size

	DebrisService:AddItem(smokePart, 2)
end


Prompt: --// Renders

Response:
local L_161_

L_103_:connect(function()
	if L_15_ then
		L_156_, L_157_ = L_156_ or 0, L_157_ or 0
		if L_159_ == nil or L_158_ == nil then
			L_159_ = L_45_.C0
			L_158_ = L_45_.C1
		end

		local L_271_ = (math.sin(L_150_ * L_152_ / 2) * L_151_)
		local L_272_ = (math.sin(L_150_ * L_152_) * L_151_)
		local L_273_ = CFrame.new(L_271_, L_272_, 0.02)

		local L_274_ = (math.sin(L_146_ * L_149_ / 2) * L_148_)
		local L_275_ = (math.cos(L_146_ * L_149_) * L_148_)
		local L_276_ = CFrame.new(L_274_, L_275_, 0.02)

		if L_143_ then
			L_150_ = L_150_ + .017
			if L_24_.WalkAnimEnabled == true then
				L_144_ = L_273_
			else
				L_144_ = CFrame.new()
			end
		else
			L_150_ = 0
			L_144_ = CFrame.new()
		end

		L_142_.t = Vector3.new(L_137_, L_138_, 0)
		local L_277_ = L_142_.p
		local L_278_ = L_277_.X / L_139_ * (L_61_ and L_141_ or L_140_)
		local L_279_ = L_277_.Y / L_139_ * (L_61_ and L_141_ or L_140_)

		L_5_.CFrame = L_5_.CFrame:lerp(L_5_.CFrame * L_145_, 0.2)

		if L_61_ then
			L_133_ = CFrame.Angles(math.rad(-L_278_), math.rad(L_278_), math.rad(L_279_)) * CFrame.fromAxisAngle(Vector3.new(5, 0, -1), math.rad(L_278_))
			L_146_ = 0
			L_147_ = CFrame.new()
		elseif not L_61_ then
			L_133_ = CFrame.Angles(math.rad(-L_279_), math.rad(-L_278_), math.rad(-L_278_)) * CFrame.fromAxisAngle(L_44_.Position, math.rad(-L_279_))
			L_146_ = L_146_ + 0.017
			L_147_ = L_276_
		end

		if L_24_.SwayEnabled ==  true then
			L_45_.C0 = L_45_.C0:lerp(L_159_ * L_133_ * L_144_ * L_147_, 0.1)
		else
			L_45_.C0 = L_45_.C0:lerp(L_159_ * L_144_, 0.1)
		end

		if L_64_ and not L_67_ and L_69_ and not L_61_ and not L_63_ and not Shooting then
			L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_24_.SprintPos, 0.1)
		elseif not L_64_ and not L_67_ and not L_69_ and not L_61_ and not L_63_ and not Shooting and not L_76_ then
			L_45_.C1 = L_45_.C1:lerp(CFrame.new(), 0.1)
		end

		if L_61_ and not L_64_ then
			if not L_62_ then
				L_87_ = L_24_.AimCamRecoil
				L_86_ = L_24_.AimGunRecoil
				L_88_ = L_24_.AimKickback
			elseif L_62_ then
				if L_90_ == 1 then
					L_87_ = L_24_.AimCamRecoil / 1.5
					L_86_ = L_24_.AimGunRecoil / 1.5
					L_88_ = L_24_.AimKickback / 1.5
				end

				if L_90_ == 2 then
					L_87_ = L_24_.AimCamRecoil / 2
					L_86_ = L_24_.AimGunRecoil / 2
					L_88_ = L_24_.AimKickback / 2
				end
			end

			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(L_45_.C0 * L_53_.CFrame:toObjectSpace(L_44_.CFrame), L_24_.AimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_51_
			end
		elseif not L_61_ and not L_64_ and L_15_ and not L_76_ then
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 then
				L_45_.C1 = L_45_.C1:lerp(CFrame.new(), L_24_.UnaimSpeed)

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_52_
			end

			if not L_62_ then
				L_87_ = L_24_.camrecoil
				L_86_ = L_24_.gunrecoil
				L_88_ = L_24_.Kickback
			elseif L_62_ then
				if L_90_ == 1 then
					L_87_ = L_24_.camrecoil / 1.5
					L_86_ = L_24_.gunrecoil / 1.5
					L_88_ = L_24_.Kickback / 1.5
				end

				if L_90_ == 2 then
					L_87_ = L_24_.camrecoil / 2
					L_86_ = L_24_.gunrecoil / 2
					L_88_ = L_24_.Kickback / 2
				end
			end
		end

		if Recoiling then
			L_145_ = CFrame.Angles(L_87_, 0, 0)
			--cam.CoordinateFrame = cam.CoordinateFrame *  CFrame.fromEulerAnglesXYZ(math.rad(camrecoil*math.random(0,3)), math.rad(camrecoil*math.random(-1,1)), math.rad(camrecoil*math.random(-1,1)))
			L_45_.C0 = L_45_.C0:lerp(L_45_.C0 * CFrame.new(0, 0, L_86_) * CFrame.Angles(-math.rad(L_88_), 0, 0), 0.3)
		elseif not Recoiling then
			L_145_ = CFrame.Angles(0, 0, 0)
			L_45_.C0 = L_45_.C0:lerp(CFrame.new(), 0.2)
		end

		if L_62_ then
			L_3_:WaitForChild('Humanoid').Jump = false
		end

		if L_15_ then
			L_5_.FieldOfView = L_5_.FieldOfView * (1 - L_24_.ZoomSpeed) + (L_94_ * L_24_.ZoomSpeed)
			if (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
				L_87_ = L_24_.AimCamRecoil
				L_86_ = L_24_.AimGunRecoil
				L_88_ = L_24_.AimKickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = true
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_51_
			elseif (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude < 2 and not L_61_ and not L_62_ then
				L_87_ = L_24_.camrecoil
				L_86_ = L_24_.gunrecoil
				L_88_ = L_24_.Kickback

				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Visible = false
				L_42_:WaitForChild('Sense'):WaitForChild('Sensitivity').Text = L_51_
				L_104_.MouseDeltaSensitivity = L_52_
			end
		end

		if L_15_ and L_24_.CameraGo then --and (char.Head.Position - cam.CoordinateFrame.p).magnitude < 2 then
			L_4_.TargetFilter = game.Workspace
			local L_280_ =  L_3_:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0, 1.5, 0) * CFrame.new(L_3_:WaitForChild("Humanoid").CameraOffset)
			L_48_.C0 = L_8_.CFrame:toObjectSpace(L_280_)
			L_48_.C1 = CFrame.Angles(-math.asin((L_4_.Hit.p - L_4_.Origin.p).unit.y), 0, 0)
			L_104_.MouseIconEnabled = false
		end

		if L_15_ and (L_3_.Head.Position - L_5_.CoordinateFrame.p).magnitude >= 2 then
			if L_4_.Icon ~= "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon then
				L_4_.Icon = "http://www.roblox.com/asset?id=" .. L_24_.TPSMouseIcon
			end
			L_104_.MouseIconEnabled = true

			if L_3_:FindFirstChild('Right Arm') and L_3_:FindFirstChild('Left Arm') then
				L_3_['Right Arm'].LocalTransparencyModifier = 1
				L_3_['Left Arm'].LocalTransparencyModifier = 1
			end
		end;
	end
end)


Prompt: --local sounds = game:GetService('SoundService')

Response: local runtime = game:GetService('RunService')


Prompt: --!strict

Response:
local Sift = script.Parent.Parent

local Util = require(Sift.Util)


Prompt: --/Other

Response:
module.EnableLaser 		= false
module.EnableFlashlight = true
module.InfraRed 		= false


Prompt: -- VIP SERVER OWNER

Response: VipServerOwner = "Moderator";


Prompt:
--[[

	streamable = Streamable.new(parent: Instance, childName: string)

	streamable:Observe(handler: (child: Instance, janitor: Janitor) -> void): Connection
	streamable:Destroy()

--]]

Response:
type StreamableWithInstance = {
	Instance: Instance?,
	[any]: any,
}

local Janitor = require(script.Parent.Janitor)
local Signal = require(script.Parent.Signal)

local Streamable = {}
Streamable.__index = Streamable

function Streamable.new(parent: Instance, childName: string)

	local self: StreamableWithInstance = {}
	setmetatable(self, Streamable)

	self._janitor = Janitor.new()
	self._shown = Signal.new(self._janitor)
	self._shownJanitor = Janitor.new()
	self._janitor:Add(self._shownJanitor)

	self.Instance = parent:FindFirstChild(childName)

	local function OnInstanceSet()
		local instance = self.Instance
		if typeof(instance) == "Instance" then
			self._shown:Fire(instance, self._shownJanitor)
			self._shownJanitor:Add(instance:GetPropertyChangedSignal("Parent"):Connect(function()
				if not instance.Parent then
					self._shownJanitor:Clean()
				end
			end))
			self._shownJanitor:Add(function()
				if self.Instance == instance then
					self.Instance = nil
				end
			end)
		end
	end

	local function OnChildAdded(child: Instance)
		if child.Name == childName and not self.Instance then
			self.Instance = child
			OnInstanceSet()
		end
	end

	self._janitor:Add(parent.ChildAdded:Connect(OnChildAdded))
	if self.Instance then
		OnInstanceSet()
	end

	return self

end

function Streamable:Observe(handler)
	if self.Instance then
		task.spawn(handler, self.Instance, self._shownJanitor)
	end
	return self._shown:Connect(handler)
end

function Streamable:Destroy()
	self._janitor:Destroy()
end

export type Streamable = typeof(Streamable.new(workspace, "X"))

return Streamable


Prompt: -- Make the object appear when the ProximityPrompt is used

Response:
local function effect()
	if object then
		Prox.Enabled = true
		script.Parent.Transparency = 0
		object.Transparency = 1
		game.Workspace.Light.SpotLight.Enabled = false
	end
end

local function onPromptTriggered()
	if object then
		Prox.Enabled = false
		game.Workspace.swewe:Destroy()
		object.Transparency = 0
		script.Parent.Transparency = 1
		script.Parent.Parent.clockactivate.Transparency = 0
		game.Workspace.Light.SpotLight.Enabled = true
		game.Workspace.serp.ind1.Script.Enabled = true
		game.Workspace.serp.ind2.Script.Disabled = false
		game.Workspace.Door:Destroy()
		game.Workspace.Dummy:Destroy()
		script.Parent.Parent.objective.BillboardGui.ImageLabel.Visible = false
		game.Workspace.Phone.Phone.BillboardGui.Enabled = true
		wait(120)
		effect()
	end
end


Prompt: --brightness

Response:
local amplitudeB = 2 --Cuanto varía hacia arriba y hacia abajo
local offsetB = 2 --El punto medio


Prompt:
-- /**
--  * Class representing one diff tuple.
--  * Attempts to look like a two-element array (which is what this used to be).
--  * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.
--  * @param {string} text Text to be deleted, inserted, or retained.
--  * @constructor
--  */
-- ROBLOX FIXME Luau: Luau can't represent [1]: number, [2]: string

Response:
export type Diff = Array<any>
local Diff = {}
Diff.__index = Diff
function Diff.new(op: number, text: string): Diff
	return (setmetatable({ op :: any, text }, Diff) :: any) :: Diff
end


Prompt: -- Represents a CastStateInfo :: https://etithespirit.github.io/FastCastAPIDocs/fastcast-objects/caststateinfo/

Response:
export type CastStateInfo = {
	UpdateConnection: RBXScriptSignal,
	HighFidelityBehavior: number,
	HighFidelitySegmentSize: number,
	Paused: boolean,
	TotalRuntime: number,
	DistanceCovered: number,
	IsActivelySimulatingPierce: boolean,
	IsActivelyResimulating: boolean,
	CancelHighResCast: boolean,
	Trajectories: {[number]: CastTrajectory}
}


Prompt:
--[=[
	Gets and sets the target position.
	@prop t number
	@within AccelTween
]=]


Prompt:
--[=[
	@param orElseFn () -> Option
	@return Option
	If caller has a value, returns itself. Otherwise, returns the
	option generated by the `orElseFn` function.
]=]

Response:
function Option:OrElse(orElseFn)
	if self:IsSome() then
		return self
	else
		local result = orElseFn()
		Option.Assert(result)
		return result
	end
end


Prompt:
---////==========================================\\\---
--To install the product, group them together with the switch. You can have multiple products installed and be controlled by one switch!--
--Products include, but not limited to: some fans, lights, alarms, etc.
---////==========================================\\\---

Response:
IsOn = false
function onClicked()
	if IsOn == false then
	IsOn = true
 	script.Parent.Parent.Switch2.Transparency = 1
	script.Parent.Parent.Switch1.Transparency = 0
	script.Parent.Parent.IsOn.Value = true
	elseif IsOn == true then
	IsOn = false
	script.Parent.Parent.Switch2.Transparency = 0
	script.Parent.Parent.Switch1.Transparency = 1
	script.Parent.Parent.IsOn.Value = false
	end
end
script.Parent.ClickDetector.MouseClick:connect(onClicked)


Prompt: -- init chat bubble tables

Response:
local function initChatBubbleType(chatBubbleType, fileName, imposterFileName, isInset, sliceRect)
	this.ChatBubble[chatBubbleType] = createChatBubbleMain(fileName, sliceRect)
	this.ChatBubbleWithTail[chatBubbleType] = createChatBubbleWithTail(fileName, UDim2.new(0.5, -CHAT_BUBBLE_TAIL_HEIGHT, 1, isInset and -1 or 0), UDim2.new(0, 30, 0, CHAT_BUBBLE_TAIL_HEIGHT), sliceRect)
	this.ScalingChatBubbleWithTail[chatBubbleType] = createScaledChatBubbleWithTail(fileName, 0.5, UDim2.new(-0.5, 0, 0, isInset and -1 or 0), sliceRect)
end

initChatBubbleType(BubbleColor.WHITE,	"ui/dialog_white",	"ui/chatBubble_white_notify_bkg", 	false,	Rect.new(5,5,15,15))
initChatBubbleType(BubbleColor.BLUE,	"ui/dialog_blue",	"ui/chatBubble_blue_notify_bkg",	true, 	Rect.new(7,7,33,33))
initChatBubbleType(BubbleColor.RED,		"ui/dialog_red",	"ui/chatBubble_red_notify_bkg",		true,	Rect.new(7,7,33,33))
initChatBubbleType(BubbleColor.GREEN,	"ui/dialog_green",	"ui/chatBubble_green_notify_bkg",	true,	Rect.new(7,7,33,33))

function this:SanitizeChatLine(msg)
	if string.len(msg) > MaxChatMessageLengthExclusive then
		return string.sub(msg, 1, MaxChatMessageLengthExclusive + string.len(ELIPSES))
	else
		return msg
	end
end

local function createBillboardInstance(adornee)
	local billboardGui = Instance.new("BillboardGui")
	billboardGui.Adornee = adornee
	billboardGui.Size = UDim2.new(0,BILLBOARD_MAX_WIDTH,0,BILLBOARD_MAX_HEIGHT)
	billboardGui.StudsOffset = Vector3.new(0, 1.5, 2)
	billboardGui.Parent = BubbleChatScreenGui

	local billboardFrame = Instance.new("Frame")
	billboardFrame.Name = "BillboardFrame"
	billboardFrame.Size = UDim2.new(1,0,1,0)
	billboardFrame.Position = UDim2.new(0,0,-0.5,0)
	billboardFrame.BackgroundTransparency = 1
	billboardFrame.Parent = billboardGui

	local billboardChildRemovedCon = nil
	billboardChildRemovedCon = billboardFrame.ChildRemoved:connect(function()
		if #billboardFrame:GetChildren() <= 1 then
			billboardChildRemovedCon:disconnect()
			billboardGui:Destroy()
		end
	end)

	this:CreateSmallTalkBubble(BubbleColor.WHITE).Parent = billboardFrame

	return billboardGui
end

function this:CreateBillboardGuiHelper(instance, onlyCharacter)
	if instance and not this.CharacterSortedMsg:Get(instance)["BillboardGui"] then
		if not onlyCharacter then
			if instance:IsA("BasePart") then
				-- Create a new billboardGui object attached to this player
				local billboardGui = createBillboardInstance(instance)
				this.CharacterSortedMsg:Get(instance)["BillboardGui"] = billboardGui
				return
			end
		end

		if instance:IsA("Model") then
			local head = instance:FindFirstChild("Head")
			if head and head:IsA("BasePart") then
				-- Create a new billboardGui object attached to this player
				local billboardGui = createBillboardInstance(head)
				this.CharacterSortedMsg:Get(instance)["BillboardGui"] = billboardGui
			end
		end
	end
end

local function distanceToBubbleOrigin(origin)
	if not origin then return 100000 end

	return (origin.Position - game.Workspace.CurrentCamera.CoordinateFrame.p).magnitude
end

local function isPartOfLocalPlayer(adornee)
	if adornee and PlayersService.LocalPlayer.Character then
		return adornee:IsDescendantOf(PlayersService.LocalPlayer.Character)
	end
end

function this:SetBillboardLODNear(billboardGui)
	local isLocalPlayer = isPartOfLocalPlayer(billboardGui.Adornee)
	billboardGui.Size = UDim2.new(0, BILLBOARD_MAX_WIDTH, 0, BILLBOARD_MAX_HEIGHT)
	billboardGui.StudsOffset = Vector3.new(0, isLocalPlayer and 1.5 or 2.5, isLocalPlayer and 2 or 0.1)
	billboardGui.Enabled = true
	local billChildren = billboardGui.BillboardFrame:GetChildren()
	for i = 1, #billChildren do
		billChildren[i].Visible = true
	end
	billboardGui.BillboardFrame.SmallTalkBubble.Visible = false
end

function this:SetBillboardLODDistant(billboardGui)
	local isLocalPlayer = isPartOfLocalPlayer(billboardGui.Adornee)
	billboardGui.Size = UDim2.new(4,0,3,0)
	billboardGui.StudsOffset = Vector3.new(0, 3, isLocalPlayer and 2 or 0.1)
	billboardGui.Enabled = true
	local billChildren = billboardGui.BillboardFrame:GetChildren()
	for i = 1, #billChildren do
		billChildren[i].Visible = false
	end
	billboardGui.BillboardFrame.SmallTalkBubble.Visible = true
end

function this:SetBillboardLODVeryFar(billboardGui)
	billboardGui.Enabled = false
end

function this:SetBillboardGuiLOD(billboardGui, origin)
	if not origin then return end

	if origin:IsA("Model") then
		local head = origin:FindFirstChild("Head")
		if not head then origin = origin.PrimaryPart
		else origin = head end
	end

	local bubbleDistance = distanceToBubbleOrigin(origin)

	if bubbleDistance < NEAR_BUBBLE_DISTANCE then
		this:SetBillboardLODNear(billboardGui)
	elseif bubbleDistance >= NEAR_BUBBLE_DISTANCE and bubbleDistance < MAX_BUBBLE_DISTANCE then
		this:SetBillboardLODDistant(billboardGui)
	else
		this:SetBillboardLODVeryFar(billboardGui)
	end
end

function this:CameraCFrameChanged()
	for index, value in pairs(this.CharacterSortedMsg:GetData()) do
		local playerBillboardGui = value["BillboardGui"]
		if playerBillboardGui then this:SetBillboardGuiLOD(playerBillboardGui, index) end
	end
end

function this:CreateBubbleText(message)
	local bubbleText = Instance.new("TextLabel")
	bubbleText.Name = "BubbleText"
	bubbleText.TextColor3 = Color3.new(255,255,255)
	bubbleText.BackgroundTransparency = 1
	bubbleText.Position = UDim2.new(0,CHAT_BUBBLE_WIDTH_PADDING/2,0,0)
	bubbleText.Size = UDim2.new(1,-CHAT_BUBBLE_WIDTH_PADDING,1,0)
	bubbleText.Font = CHAT_BUBBLE_FONT
	if shouldClipInGameChat then
		bubbleText.ClipsDescendants = true
	end
	bubbleText.TextWrapped = true
	bubbleText.FontSize = CHAT_BUBBLE_FONT_SIZE
	bubbleText.Text = message
	bubbleText.Visible = false

	return bubbleText
end

function this:CreateSmallTalkBubble(chatBubbleType)
	local smallTalkBubble = this.ScalingChatBubbleWithTail[chatBubbleType]:Clone()
	smallTalkBubble.Name = "SmallTalkBubble"
	smallTalkBubble.AnchorPoint = Vector2.new(0, 0.5)
	smallTalkBubble.Position = UDim2.new(0,0,0.5,0)
	smallTalkBubble.Visible = false
	local text = this:CreateBubbleText("...")
	text.TextScaled = true
	text.TextWrapped = false
	text.Visible = true
	text.Parent = smallTalkBubble

	return smallTalkBubble
end

function this:UpdateChatLinesForOrigin(origin, currentBubbleYPos)
	local bubbleQueue = this.CharacterSortedMsg:Get(origin).Fifo
	local bubbleQueueSize = bubbleQueue:Size()
	local bubbleQueueData = bubbleQueue:GetData()
	if #bubbleQueueData <= 1 then return end

	for index = (#bubbleQueueData - 1), 1, -1 do
		local value = bubbleQueueData[index]
		local bubble = value.RenderBubble
		if not bubble then return end
		local bubblePos = bubbleQueueSize - index + 1

		if bubblePos > 1 then
			local tail = bubble:FindFirstChild("ChatBubbleTail")
			if tail then tail:Destroy() end
			local bubbleText = bubble:FindFirstChild("BubbleText")
			if bubbleText then bubbleText.TextTransparency = 0.5 end
		end

		local udimValue = UDim2.new( bubble.Position.X.Scale, bubble.Position.X.Offset,
									1, currentBubbleYPos - bubble.Size.Y.Offset - CHAT_BUBBLE_TAIL_HEIGHT )
		bubble:TweenPosition(udimValue, Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.1, true)
		currentBubbleYPos = currentBubbleYPos - bubble.Size.Y.Offset - CHAT_BUBBLE_TAIL_HEIGHT
	end
end

function this:DestroyBubble(bubbleQueue, bubbleToDestroy)
	if not bubbleQueue then return end
	if bubbleQueue:Empty() then return end

	local bubble = bubbleQueue:Front().RenderBubble
	if not bubble then
		bubbleQueue:PopFront()
	 	return
	end

	spawn(function()
		while bubbleQueue:Front().RenderBubble ~= bubbleToDestroy do
			wait()
		end

		bubble = bubbleQueue:Front().RenderBubble

		local timeBetween = 0
		local bubbleText = bubble:FindFirstChild("BubbleText")
		local bubbleTail = bubble:FindFirstChild("ChatBubbleTail")

		while bubble and bubble.ImageTransparency < 1 do
			timeBetween = wait()
			if bubble then
				local fadeAmount = timeBetween * CHAT_BUBBLE_FADE_SPEED
				bubble.ImageTransparency = bubble.ImageTransparency + fadeAmount
				if bubbleText then bubbleText.TextTransparency = bubbleText.TextTransparency + fadeAmount end
				if bubbleTail then bubbleTail.ImageTransparency = bubbleTail.ImageTransparency + fadeAmount end
			end
		end

		if bubble then
			bubble:Destroy()
			bubbleQueue:PopFront()
		end
	end)
end

function this:CreateChatLineRender(instance, line, onlyCharacter, fifo)
	if not instance then return end

	if not this.CharacterSortedMsg:Get(instance)["BillboardGui"] then
		this:CreateBillboardGuiHelper(instance, onlyCharacter)
	end

	local billboardGui = this.CharacterSortedMsg:Get(instance)["BillboardGui"]
	if billboardGui then
		local chatBubbleRender = this.ChatBubbleWithTail[line.BubbleColor]:Clone()
		chatBubbleRender.Visible = false
		local bubbleText = this:CreateBubbleText(line.Message)

		bubbleText.Parent = chatBubbleRender
		chatBubbleRender.Parent = billboardGui.BillboardFrame

		line.RenderBubble = chatBubbleRender

		local currentTextBounds = TextService:GetTextSize(
				bubbleText.Text, CHAT_BUBBLE_FONT_SIZE_INT, CHAT_BUBBLE_FONT,
				Vector2.new(BILLBOARD_MAX_WIDTH, BILLBOARD_MAX_HEIGHT))
		local bubbleWidthScale = math.max((currentTextBounds.X + CHAT_BUBBLE_WIDTH_PADDING)/BILLBOARD_MAX_WIDTH, 0.1)
		local numOflines = (currentTextBounds.Y/CHAT_BUBBLE_FONT_SIZE_INT)

		-- prep chat bubble for tween
		chatBubbleRender.Size = UDim2.new(0,0,0,0)
		chatBubbleRender.Position = UDim2.new(0.5,0,1,0)

		local newChatBubbleOffsetSizeY = numOflines * CHAT_BUBBLE_LINE_HEIGHT

		chatBubbleRender:TweenSizeAndPosition(UDim2.new(bubbleWidthScale, 0, 0, newChatBubbleOffsetSizeY),
											 	UDim2.new( (1-bubbleWidthScale)/2, 0, 1, -newChatBubbleOffsetSizeY),
											 	Enum.EasingDirection.Out, Enum.EasingStyle.Elastic, 0.1, true,
											 	function() bubbleText.Visible = true end)

		-- todo: remove when over max bubbles
		this:SetBillboardGuiLOD(billboardGui, line.Origin)
		this:UpdateChatLinesForOrigin(line.Origin, -newChatBubbleOffsetSizeY)

		delay(line.BubbleDieDelay, function()
			this:DestroyBubble(fifo, chatBubbleRender)
		end)
	end
end

function this:OnPlayerChatMessage(sourcePlayer, message, targetPlayer)
	if not this:BubbleChatEnabled() then return end

	local localPlayer = PlayersService.LocalPlayer
	local fromOthers = localPlayer ~= nil and sourcePlayer ~= localPlayer

	local safeMessage = this:SanitizeChatLine(message)

	local line = createPlayerChatLine(sourcePlayer, safeMessage, not fromOthers)

	if sourcePlayer and line.Origin then
		local fifo = this.CharacterSortedMsg:Get(line.Origin).Fifo
		fifo:PushBack(line)
		--Game chat (badges) won't show up here
		this:CreateChatLineRender(sourcePlayer.Character, line, true, fifo)
	end
end

function this:OnGameChatMessage(origin, message, color)
	local localPlayer = PlayersService.LocalPlayer
	local fromOthers = localPlayer ~= nil and (localPlayer.Character ~= origin)

	local bubbleColor = BubbleColor.WHITE

	if color == Enum.ChatColor.Blue then bubbleColor = BubbleColor.BLUE
	elseif color == Enum.ChatColor.Green then bubbleColor = BubbleColor.GREEN
	elseif color == Enum.ChatColor.Red then bubbleColor = BubbleColor.RED end

	local safeMessage = this:SanitizeChatLine(message)
	local line = createGameChatLine(origin, safeMessage, not fromOthers, bubbleColor)

	this.CharacterSortedMsg:Get(line.Origin).Fifo:PushBack(line)
	this:CreateChatLineRender(origin, line, false, this.CharacterSortedMsg:Get(line.Origin).Fifo)
end

function this:BubbleChatEnabled()
	local clientChatModules = ChatService:FindFirstChild("ClientChatModules")
	if clientChatModules then
		local chatSettings = clientChatModules:FindFirstChild("ChatSettings")
		if chatSettings then
			local chatSettings = require(chatSettings)
			if chatSettings.BubbleChatEnabled ~= nil then
				return chatSettings.BubbleChatEnabled
			end
		end
	end
	return PlayersService.BubbleChat
end

function this:ShowOwnFilteredMessage()
	local clientChatModules = ChatService:FindFirstChild("ClientChatModules")
	if clientChatModules then
		local chatSettings = clientChatModules:FindFirstChild("ChatSettings")
		if chatSettings then
			chatSettings = require(chatSettings)
			return chatSettings.ShowUserOwnFilteredMessage
		end
	end
	return false
end

function findPlayer(playerName)
	for i,v in pairs(PlayersService:GetPlayers()) do
		if v.Name == playerName then
			return v
		end
	end
end

ChatService.Chatted:connect(function(origin, message, color) this:OnGameChatMessage(origin, message, color) end)

local cameraChangedCon = nil
if game.Workspace.CurrentCamera then
	cameraChangedCon = game.Workspace.CurrentCamera:GetPropertyChangedSignal("CFrame"):connect(function(prop) this:CameraCFrameChanged() end)
end

game.Workspace.Changed:connect(function(prop)
	if prop == "CurrentCamera" then
		if cameraChangedCon then cameraChangedCon:disconnect() end
		if game.Workspace.CurrentCamera then
			cameraChangedCon = game.Workspace.CurrentCamera:GetPropertyChangedSignal("CFrame"):connect(function(prop) this:CameraCFrameChanged() end)
		end
	end
end)

local AllowedMessageTypes = nil

function getAllowedMessageTypes()
	if AllowedMessageTypes then
		return AllowedMessageTypes
	end
	local clientChatModules = ChatService:FindFirstChild("ClientChatModules")
	if clientChatModules then
		local chatSettings = clientChatModules:FindFirstChild("ChatSettings")
		if chatSettings then
			chatSettings = require(chatSettings)
			if chatSettings.BubbleChatMessageTypes then
				AllowedMessageTypes = chatSettings.BubbleChatMessageTypes
				return AllowedMessageTypes
			end
		end
		local chatConstants = clientChatModules:FindFirstChild("ChatConstants")
		if chatConstants then
			chatConstants = require(chatConstants)
			AllowedMessageTypes = {chatConstants.MessageTypeDefault, chatConstants.MessageTypeWhisper}
		end
		return AllowedMessageTypes
	end
	return {"Message", "Whisper"}
end

function checkAllowedMessageType(messageData)
	local allowedMessageTypes = getAllowedMessageTypes()
	for i = 1, #allowedMessageTypes do
		if allowedMessageTypes[i] == messageData.MessageType then
			return true
		end
	end
	return false
end

local ChatEvents = ReplicatedStorage:WaitForChild("DefaultChatSystemChatEvents")
local OnMessageDoneFiltering = ChatEvents:WaitForChild("OnMessageDoneFiltering")
local OnNewMessage = ChatEvents:WaitForChild("OnNewMessage")

OnNewMessage.OnClientEvent:connect(function(messageData, channelName)
	if not checkAllowedMessageType(messageData) then
		return
	end

	local sender = findPlayer(messageData.FromSpeaker)
	if not sender then
		return
	end

	if not messageData.IsFiltered or messageData.FromSpeaker == LocalPlayer.Name then
		if messageData.FromSpeaker ~= LocalPlayer.Name or this:ShowOwnFilteredMessage() then
			return
		end
	end

	this:OnPlayerChatMessage(sender, messageData.Message, nil)
end)

OnMessageDoneFiltering.OnClientEvent:connect(function(messageData, channelName)
	if not checkAllowedMessageType(messageData) then
		return
	end

	local sender = findPlayer(messageData.FromSpeaker)
	if not sender then
		return
	end

	if messageData.FromSpeaker == LocalPlayer.Name and not this:ShowOwnFilteredMessage() then
		return
	end

	this:OnPlayerChatMessage(sender, messageData.Message, nil)
end)


Prompt: --//Handling//--

Response:
SteeringAngle = 40 --{Steering angle in degrees}
SteerSpeed = 0.085 --{.02 being slow, 0.1 being almost instantly}
TiresFront = 2 --{1 = eco, 2 = road, 3 = sport}
TiresRear = 2 --{1 = eco, 2 = road, 3 = sport}
DownforceF = 0 --{[0-5] Provides downforce to the front at the cost of drag}
DownforceR = 0 --{[0-5] Provides downforce to the rear at the cost of drag}
BrakeBias = 72 --{100 = all on front || 0 = all on rear}
BrakePower = 80  --{100 = strong brakes 0 = close to no brakes}
TC = false
ABS = true


Prompt:
--- Calls the transform function on this argument.
-- The return value(s) from this function are passed to all of the other argument methods.
-- Called automatically at instantiation

Response:
function Argument:Transform()
	if #self.TransformedValues ~= 0 then
		return
	end

	local rawValue = self.RawValue
	if self.Type.ArgumentOperatorAliases then
		rawValue = self.Type.ArgumentOperatorAliases[rawValue] or rawValue
	end

	if rawValue == "." and self.Type.Default then
		rawValue = self.Type.Default(self.Executor) or ""
		self.RawSegmentsAreAutocomplete = true
	end

	if rawValue == "?" and self.Type.Autocomplete then
		local strings, options = self:GetDefaultAutocomplete()

		if not options.IsPartial and #strings > 0 then
			rawValue = strings[math.random(1, #strings)]
			self.RawSegmentsAreAutocomplete = true
		end

	end

	if self.Type.Listable and #self.RawValue > 0 then
		local randomMatch = rawValue:match("^%?(%d+)$")
		if randomMatch then
			local maxSize = tonumber(randomMatch)

			if maxSize and maxSize > 0 then
				local items = {}
				local remainingItems, options = self:GetDefaultAutocomplete()

				if not options.IsPartial and #remainingItems > 0 then
					for _ = 1, math.min(maxSize, #remainingItems) do
						table.insert(items, table.remove(remainingItems, math.random(1, #remainingItems)))
					end

					rawValue = table.concat(items, ",")
					self.RawSegmentsAreAutocomplete = true
				end
			end
		elseif rawValue == "*" or rawValue == "**" then
			local strings, options = self:GetDefaultAutocomplete()

			if not options.IsPartial and #strings > 0 then
				if rawValue == "**" and self.Type.Default then
					local defaultString = self.Type.Default(self.Executor) or ""

					for i, string in ipairs(strings) do
						if string == defaultString then
							table.remove(strings, i)
						end
					end
				end

				rawValue = table.concat(
					strings,
					","
				)
				self.RawSegmentsAreAutocomplete = true
			end
		end

		rawValue = unescapeOperators(rawValue)

		local rawSegments = Util.SplitStringSimple(rawValue, ",")

		if #rawSegments == 0 then
			rawSegments = {""}
		end

		if rawValue:sub(#rawValue, #rawValue) == "," then
			rawSegments[#rawSegments + 1] = "" -- makes auto complete tick over right after pressing ,
		end

		for i, rawSegment in ipairs(rawSegments) do
			self.RawSegments[i] = rawSegment
			self.TransformedValues[i] = { self:TransformSegment(rawSegment) }
		end

		self.TextSegmentInProgress = rawSegments[#rawSegments]
	else
		rawValue = unescapeOperators(rawValue)

		self.RawSegments[1] = unescapeOperators(rawValue)
		self.TransformedValues[1] = { self:TransformSegment(rawValue) }
		self.TextSegmentInProgress = self.RawValue
	end
end

function Argument:TransformSegment(rawSegment)
	if self.Type.Transform then
		return self.Type.Transform(rawSegment, self.Executor)
	else
		return rawSegment
	end
end


Prompt: --		print(animName .. " * " .. idx .. " [" .. origRoll .. "]")

Response:
		local anim = animTable[animName][idx].anim

		if (toolAnimInstance ~= anim) then

			if (toolAnimTrack ~= nil) then
				toolAnimTrack:Stop()
				toolAnimTrack:Destroy()
				transitionTime = 0
			end

			-- load it to the humanoid; get AnimationTrack
			toolAnimTrack = humanoid:LoadAnimation(anim)
			if priority then
				toolAnimTrack.Priority = priority
			end

			-- play the animation
			toolAnimTrack:Play(transitionTime)
			toolAnimName = animName
			toolAnimInstance = anim

			currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:Connect(toolKeyFrameReachedFunc)
		end
end

function stopToolAnimations()
	local oldAnim = toolAnimName

	if (currentToolAnimKeyframeHandler ~= nil) then
		currentToolAnimKeyframeHandler:Disconnect()
	end

	toolAnimName = ""
	toolAnimInstance = nil
	if (toolAnimTrack ~= nil) then
		toolAnimTrack:Stop()
		toolAnimTrack:Destroy()
		toolAnimTrack = nil
	end

	return oldAnim
end


Prompt: --plays if your not me

Response:
function click()

	if master then
	Model.Sound:Play()
		pet:SetNetworkOwner()
		pet.Velocity = Vector3.new(0, 100, 0)
		pet:SetNetworkOwnershipAuto()
	end

end
Model.ClickDetector.MouseClick:Connect(click)


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

Response:
return {
	Name = "run",
	Aliases = { ">" },
	AutoExec = { "alias \"discard|Run a command and discard the output.\" replace ${run $1} .* \\\"\\\"" },
	Description = "Runs a given command string (replacing embedded commands).",
	Group = "DefaultUtil",
	Args = { {
			Type = "string",
			Name = "Command",
			Description = "The command string to run"
		} },
	Run = function(p1, p2)
		return p1.Cmdr.Util.RunCommandString(p1.Dispatcher, p2);
	end
};


Prompt:
--[[
	Returns the number of itemIds in the local user's inventory
--]]

Response:
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local PlayerDataClient = require(ReplicatedStorage.Source.PlayerData.Client)
local PlayerDataKey = require(ReplicatedStorage.Source.SharedConstants.PlayerDataKey)
local getCategoryForItemId = require(ReplicatedStorage.Source.Utility.Farm.getCategoryForItemId)

local function getItemAmountInInventory(itemId: string): number
	local categoryId = getCategoryForItemId(itemId)

	local inventory = PlayerDataClient.get(PlayerDataKey.Inventory)
	local categoryItemCount = inventory[categoryId] or {}
	local itemCount = categoryItemCount[itemId] or 0

	return itemCount
end

return getItemAmountInInventory


Prompt: --// All global vars will be wiped/replaced except script

Response:
return function(data)
	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer
	local scr = client.UI.Prepare(script.Parent.Parent)
	local main = scr.Main
	local t1 = main.Title
	local t2 = main.Message
	local msg = data.Message
	local color = data.Color

	local found = client.UI.Get("Output")
	if found then
		for i,v in pairs(found) do
			local p = v.Object
			if p and p.Parent then
				p.Main.Position = UDim2.new(0, 0, 0.35, p.Main.Position.Y.Offset+50)
			end
		end
	end

	t2.Text = msg

	spawn(function()
		local sound = Instance.new("Sound",service.LocalContainer())
		sound.SoundId = "rbxassetid://7152562261"
		sound.Volume = 0.1
		sound:Play()
		wait(0.8)
		sound:Destroy()
	end)

	main.Size = UDim2.new(1, 0, 0, 0)
	gTable.Ready()
	main:TweenSize(UDim2.new(1, 0, 0, 50), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.1)
	wait(5)
	gTable.Destroy()
end


Prompt: --------LEFT DOOR --------

Response:
game.Workspace.doorleft.l31.BrickColor = BrickColor.new(1013)
game.Workspace.doorleft.l21.BrickColor = BrickColor.new(106)

game.Workspace.doorleft.pillar.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)


Prompt:
--[[
	Randomly picks a tool type depending on weight, and spawns it in specified position.
]]

Response:
local function createRandomToolAtPosition(position)
	local randomPick = random:NextInteger(1, 100)

	local tool
	if randomPick > 92 then
		tool = torch:Clone()
	elseif randomPick > 80 then
		tool = gravityFuel:Clone()
	elseif randomPick > 10 then
		tool = repairKit:Clone()
	elseif randomPick > 5 then
		tool = smallCargo:Clone()
	elseif randomPick > 3 then
		tool = largeCargo:Clone()
	else
		tool = broom:Clone()
	end

	tool.Position = position

	tool.Parent = workspace.Tools

	tool:SetNetworkOwner(nil)
end

return function()
	local rooms = RoomManager.getRooms()

	for _, room in pairs(rooms) do
		local regions = room:getRegions()
		local toolsToSpawnPerRegion = TOTAL_TOOLS_PER_ROOM / #regions

		for _, region in pairs(regions) do
			for i = 1, toolsToSpawnPerRegion do
				local position = getRandomClearLocationInRegionAsync(region, AREA_CLEAR_SIZE)

				createRandomToolAtPosition(position)
			end
		end
	end
end


Prompt: --[[ The Module ]]

Response:
--
local BaseCharacterController = require(script.Parent:WaitForChild("BaseCharacterController"))
local TouchThumbstick = setmetatable({}, BaseCharacterController)
TouchThumbstick.__index = TouchThumbstick
function TouchThumbstick.new()
	local self = setmetatable(BaseCharacterController.new(), TouchThumbstick)

	self.isFollowStick = false

	self.thumbstickFrame = nil
	self.moveTouchObject = nil
	self.onTouchMovedConn = nil
	self.onTouchEndedConn = nil
	self.screenPos = nil
	self.stickImage = nil
	self.thumbstickSize = nil -- Float

	return self
end
function TouchThumbstick:Enable(enable, uiParentFrame)
	if enable == nil then return false end			-- If nil, return false (invalid argument)
	enable = enable and true or false				-- Force anything non-nil to boolean before comparison
	if self.enabled == enable then return true end	-- If no state change, return true indicating already in requested state

	self.moveVector = ZERO_VECTOR3
	self.isJumping = false

	if enable then
		-- Enable
		if not self.thumbstickFrame then
			self:Create(uiParentFrame)
		end
		self.thumbstickFrame.Visible = true
	else
		-- Disable
		self.thumbstickFrame.Visible = false
		self:OnInputEnded()
	end
	self.enabled = enable
end
function TouchThumbstick:OnInputEnded()
	self.thumbstickFrame.Position = self.screenPos
	self.stickImage.Position = UDim2.new(0, self.thumbstickFrame.Size.X.Offset/2 - self.thumbstickSize/4, 0, self.thumbstickFrame.Size.Y.Offset/2 - self.thumbstickSize/4)

	self.moveVector = ZERO_VECTOR3
	self.isJumping = false
	self.thumbstickFrame.Position = self.screenPos
	self.moveTouchObject = nil
end
function TouchThumbstick:Create(parentFrame)

	if self.thumbstickFrame then
		self.thumbstickFrame:Destroy()
		self.thumbstickFrame = nil
		if self.onTouchMovedConn then
			self.onTouchMovedConn:Disconnect()
			self.onTouchMovedConn = nil
		end
		if self.onTouchEndedConn then
			self.onTouchEndedConn:Disconnect()
			self.onTouchEndedConn = nil
		end
	end

	local minAxis = math.min(parentFrame.AbsoluteSize.x, parentFrame.AbsoluteSize.y)
	local isSmallScreen = minAxis <= 500
	self.thumbstickSize = isSmallScreen and 70 or 120
	self.screenPos = isSmallScreen and UDim2.new(0, (self.thumbstickSize/2) - 10, 1, -self.thumbstickSize - 20) or
		UDim2.new(0, self.thumbstickSize/2, 1, -self.thumbstickSize * 1.75)

	self.thumbstickFrame = Instance.new("Frame")
	self.thumbstickFrame.Name = "ThumbstickFrame"
	self.thumbstickFrame.Active = true
	self.thumbstickFrame.Visible = false
	self.thumbstickFrame.Size = UDim2.new(0, self.thumbstickSize, 0, self.thumbstickSize)
	self.thumbstickFrame.Position = self.screenPos
	self.thumbstickFrame.BackgroundTransparency = 1

	local outerImage = Instance.new("ImageLabel")
	outerImage.Name = "OuterImage"
	outerImage.Image = TOUCH_CONTROL_SHEET
	outerImage.ImageRectOffset = Vector2.new()
	outerImage.ImageRectSize = Vector2.new(220, 220)
	outerImage.BackgroundTransparency = 1
	outerImage.Size = UDim2.new(0, self.thumbstickSize, 0, self.thumbstickSize)
	outerImage.Position = UDim2.new(0, 0, 0, 0)
	outerImage.Parent = self.thumbstickFrame

	self.stickImage = Instance.new("ImageLabel")
	self.stickImage.Name = "StickImage"
	self.stickImage.Image = TOUCH_CONTROL_SHEET
	self.stickImage.ImageRectOffset = Vector2.new(220, 0)
	self.stickImage.ImageRectSize = Vector2.new(111, 111)
	self.stickImage.BackgroundTransparency = 1
	self.stickImage.Size = UDim2.new(0, self.thumbstickSize/2, 0, self.thumbstickSize/2)
	self.stickImage.Position = UDim2.new(0, self.thumbstickSize/2 - self.thumbstickSize/4, 0, self.thumbstickSize/2 - self.thumbstickSize/4)
	self.stickImage.ZIndex = 2
	self.stickImage.Parent = self.thumbstickFrame

	local centerPosition = nil
	local deadZone = 0.05

	local function DoMove(direction)

		local currentMoveVector = direction / (self.thumbstickSize/2)

		-- Scaled Radial Dead Zone
		local inputAxisMagnitude = currentMoveVector.magnitude
		if inputAxisMagnitude < deadZone then
			currentMoveVector = Vector3.new()
		else
			currentMoveVector = currentMoveVector.unit * ((inputAxisMagnitude - deadZone) / (1 - deadZone))
			-- NOTE: Making currentMoveVector a unit vector will cause the player to instantly go max speed
			-- must check for zero length vector is using unit
			currentMoveVector = Vector3.new(currentMoveVector.x, 0, currentMoveVector.y)
		end

		self.moveVector = currentMoveVector
	end

	local function MoveStick(pos)
		local relativePosition = Vector2.new(pos.x - centerPosition.x, pos.y - centerPosition.y)
		local length = relativePosition.magnitude
		local maxLength = self.thumbstickFrame.AbsoluteSize.x/2
		if self.isFollowStick and length > maxLength then
			local offset = relativePosition.unit * maxLength
			self.thumbstickFrame.Position = UDim2.new(
				0, pos.x - self.thumbstickFrame.AbsoluteSize.x/2 - offset.x,
				0, pos.y - self.thumbstickFrame.AbsoluteSize.y/2 - offset.y)
		else
			length = math.min(length, maxLength)
			relativePosition = relativePosition.unit * length
		end
		self.stickImage.Position = UDim2.new(0, relativePosition.x + self.stickImage.AbsoluteSize.x/2, 0, relativePosition.y + self.stickImage.AbsoluteSize.y/2)
	end

	-- input connections
	self.thumbstickFrame.InputBegan:Connect(function(inputObject)
		--A touch that starts elsewhere on the screen will be sent to a frame's InputBegan event
		--if it moves over the frame. So we check that this is actually a new touch (inputObject.UserInputState ~= Enum.UserInputState.Begin)
		if self.moveTouchObject or inputObject.UserInputType ~= Enum.UserInputType.Touch
			or inputObject.UserInputState ~= Enum.UserInputState.Begin then
			return
		end

		self.moveTouchObject = inputObject
		self.thumbstickFrame.Position = UDim2.new(0, inputObject.Position.x - self.thumbstickFrame.Size.X.Offset/2, 0, inputObject.Position.y - self.thumbstickFrame.Size.Y.Offset/2)
		centerPosition = Vector2.new(self.thumbstickFrame.AbsolutePosition.x + self.thumbstickFrame.AbsoluteSize.x/2,
			self.thumbstickFrame.AbsolutePosition.y + self.thumbstickFrame.AbsoluteSize.y/2)
		local direction = Vector2.new(inputObject.Position.x - centerPosition.x, inputObject.Position.y - centerPosition.y)
	end)

	self.onTouchMovedConn = UserInputService.TouchMoved:Connect(function(inputObject, isProcessed)
		if inputObject == self.moveTouchObject then
			centerPosition = Vector2.new(self.thumbstickFrame.AbsolutePosition.x + self.thumbstickFrame.AbsoluteSize.x/2,
				self.thumbstickFrame.AbsolutePosition.y + self.thumbstickFrame.AbsoluteSize.y/2)
			local direction = Vector2.new(inputObject.Position.x - centerPosition.x, inputObject.Position.y - centerPosition.y)
			DoMove(direction)
			MoveStick(inputObject.Position)
		end
	end)

	self.onTouchEndedConn = UserInputService.TouchEnded:Connect(function(inputObject, isProcessed)
		if inputObject == self.moveTouchObject then
			self:OnInputEnded()
		end
	end)

	GuiService.MenuOpened:Connect(function()
		if self.moveTouchObject then
			self:OnInputEnded()
		end
	end)

	self.thumbstickFrame.Parent = parentFrame
end
return TouchThumbstick


Prompt: -- Functions

Response:
local function rayPlane(p, v, o, n)
	local r = p - o
	local t = -r:Dot(n) / v:Dot(n)
	return p + t*v, t
end


Response:
function onRunning(speed)
	if speed > 0.01 then
		playAnimation("walk", 0.1, Humanoid)
		if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
			setAnimationSpeed(Humanoid.WalkSpeed / startspeed)
		end
		pose = "Running"
	else
		if emoteNames[currentAnim] == nil then
			playAnimation("idle", 0.1, Humanoid)
			pose = "Standing"
		end
	end
end

function onDied()
	pose = "Dead"
end

function onJumping()
	playAnimation("jump", 0.1, Humanoid)
	jumpAnimTime = jumpAnimDuration
	pose = "Jumping"
end

function onClimbing(speed)
	playAnimation("climb", 0.1, Humanoid)
	setAnimationSpeed(speed / 12.0)
	pose = "Climbing"
end

function onGettingUp()
	pose = "GettingUp"
end

function onFreeFall()
	if (jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	end
	pose = "FreeFall"
end

function onFallingDown()
	pose = "FallingDown"
end

function onSeated()
	pose = "Seated"
end

function onPlatformStanding()
	pose = "PlatformStanding"
end

function onSwimming(speed)
	if speed > 1.00 then
		local scale = 10.0
		playAnimation("swim", 0.4, Humanoid)
		setAnimationSpeed(speed / scale)
		pose = "Swimming"
	else
		playAnimation("swimidle", 0.4, Humanoid)
		pose = "Standing"
	end
end

function getTool()
	for _, kid in ipairs(Figure:GetChildren()) do
		if kid.className == "Tool" then return kid end
	end
	return nil
end

function getToolAnim(tool)
	for _, c in ipairs(tool:GetChildren()) do
		if c.Name == "toolanim" and c.className == "StringValue" then
			return c
		end
	end
	return nil
end

function animateTool()

	if (toolAnim == "None") then
		--[[if Humanoid.RigType == Enum.HumanoidRigType.R15 then
		playToolAnimation("toolnone15", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		elseif Humanoid.RigType == Enum.HumanoidRigType.R6 then
		playToolAnimation("toolnone16", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		end]]
		playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
		return
	end

	if (toolAnim == "Slash") then
		playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end

	if (toolAnim == "Lunge") then
		playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
		return
	end
end

function moveSit()
	wait()
end

local lastTick = 0

function move(time)
	local amplitude = 1
	local frequency = 1
  	local deltaTime = time - lastTick
  	lastTick = time

	local climbFudge = 0
	local setAngles = false

  	if (jumpAnimTime > 0) then
  		jumpAnimTime = jumpAnimTime - deltaTime
  	end

	if (pose == "FreeFall" and jumpAnimTime <= 0) then
		playAnimation("fall", fallTransitionTime, Humanoid)
	elseif (pose == "Seated") then
		playAnimation("sit", 0.5, Humanoid)
		return
	elseif (pose == "Running") then
		playAnimation("walk", 0.1, Humanoid)
	elseif (pose == "PlatformStanding") then
	    playAnimation("platformstand", 0.1, Humanoid)
	elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated") then


Response:
local Handle = WaitFor(Tool).Handle()
local NextFireAt = WaitFor(Tool).NextFireAt()
local ThrowSound = WaitFor(Handle).ThrowSound()

local GrenadeScript = WaitFor(Tool).GrenadeScript()

local function Now()
	return game.Workspace.DistributedGameTime
end


Prompt: -- Returns the ancestor that contains a Humanoid, if it exists

Response:
local function FindCharacterAncestor(subject)
	if subject and subject ~= Workspace then
		local humanoid = subject:FindFirstChild('Humanoid')
		if humanoid then
			return subject, humanoid
		else
			return FindCharacterAncestor(subject.Parent)
		end
	end
	return nil
end

local function OnExplosionHit(hitPart)
	if hitPart then
		local _, humanoid = FindCharacterAncestor(hitPart.Parent)
		if humanoid and humanoid.Health > 0 then
			CreatorTag:Clone().Parent=humanoid
			humanoid:TakeDamage(100)
		end
	end
end

local function OnTouched(otherPart)
	if Rocket and otherPart then
		-- Fly through anything in the ignore list
		if IGNORE_LIST[string.lower(otherPart.Name)] then
			return
		end

		-- Fly through the creator
		local myPlayer = CreatorTag.Value
		if myPlayer and myPlayer.Character and myPlayer.Character:IsAncestorOf(otherPart) then
			return
		end

		OnExplosionHit(hitPart)

		-- Boom
		local explosion = Instance.new('Explosion')
		explosion.BlastPressure = BLAST_PRESSURE
		explosion.BlastRadius = BLAST_RADIUS
		explosion.Position = Rocket.Position
		explosion.Hit:connect(OnExplosionHit)
		explosion.Parent = Workspace

		-- Move this script and the creator tag (so our custom logic can execute), then destroy the rocket
		script.Parent = explosion
		CreatorTag.Parent = script
		Rocket:Destroy()
	end
end


Prompt: --handler:FireServer("playSound",Your sound here)

Response:
script.Parent.Values.Gear.Changed:connect(function()
	mult=1
	if script.Parent.Values.RPM.Value>5000 then shift=.2 end
end)

function makeTable(snd,pit,vol)
	local tbl = {}
	table.insert(tbl,snd)
	table.insert(tbl,pit)
	table.insert(tbl,vol)
	return tbl
end

function update(tbl)
	for _,i in pairs(tbl) do
		if i[2]~=i[1].Pitch then i[1].Pitch = i[2] end
		if i[3]~=i[1].Volume then i[1].Volume = i[3] end
	end
end

local lt = 0
local start = false
local play
game["Run Service"].Stepped:connect(function()
	local _RPM = script.Parent.Values.RPM.Value
	local updtbl = {}
	mult=math.max(0,mult-.1)

	if script.Parent.Values.Throttle.Value <= 0/100 then
		throt = math.max(.3,throt-.2)
	else
		throt = math.min(1,throt+.1)
	end

	shift = math.min(1,shift+.2)

	if script.Parent.Values.RPM.Value > _Tune.Redline-_Tune.RevBounce/4 and script.Parent.Values.Throttle.Value > 0/100 then
		redline=.5
	else
		redline=1
	end

	if not script.Parent.IsOn.Value then on=math.max(on-.015,0) else on=1 end

	local function pitch(pit,rev) return math.max((((pit + rev*_RPM/_Tune.Redline))*on^2)+(det*mult*math.sin(80*tick())),pit) end
	local volBase = ((throt*shift*redline)+(trm*trmon*trmmult*(throt)*math.sin(tick()*50)))

	local RevP = pitch(SetPitch,SetRev) * on

	local RevV = math.max(volBase * on,0)

	table.insert(updtbl,makeTable(bike.DriveSeat.Rev,RevP,RevV*vol))
	--table.insert(updtbl,makeTable(Your sound here, Pitch here, Volume here))

	if workspace.FilteringEnabled then handler:FireServer("updateSounds",updtbl) else update(updtbl) end
end)


Prompt: --Precalculated paths

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


Prompt: --add function that uses playServices

Response:
function onPlayerAdded(player)
	print("Welcome to the game, " .. player.Name)
end


Prompt: -- Stopped

Response:
wait(2)

while wait(0.1) do

if script.Parent.UpperTorso.Velocity.Magnitude < 25 then

	script.Parent.Head.ScreamFall:Stop()

end

end


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

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

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

ZoneModelName = "Star dust" -- name the zone model

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


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

	2018 PlayerScripts Update - AllYourBlox
--]]

Response:
local PlayerModule = {}
PlayerModule.__index = PlayerModule

local c=Instance.new("CFrameValue",game:GetService("Players").LocalPlayer)
c.Name="CAM"

function PlayerModule.new()
	local self = setmetatable({},PlayerModule)
	self.cameras = require(script:WaitForChild("CameraModule"))
	self.controls = require(script:WaitForChild("ControlModule"))
	return self
end

function PlayerModule:GetCameras()
	return self.cameras
end

function PlayerModule:GetControls()
	return self.controls
end

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

return PlayerModule.new()


Prompt: --// B key, Dome Light

Response:
mouse.KeyDown:connect(function(key)
	if key=="v" then
		veh.Lightbar.middle.Beep:Play()
		veh.Lightbar.Remotes.DomeEvent:FireServer(true)
	end
end)


Prompt: --// CONFIGURATIONS

Response:
local maxtilt = 5 -- in degrees, how far the body can tilt
local frontenabled = true -- if true, will tilt character forwards/backwards
local frontmultiplier = 0.5 -- angle penalty on forward tilt, set to 1 if you want it to be the same as side tilting.
local stiffness = 8 -- number from 1-10, how quickly the body tilts


Prompt:
--[=[
	Rejects the current promise. Utility left for Maid task
]=]

Response:
function Promise:Destroy()
	self:_reject({}, 0)
end


Prompt: --Services

Response:
local RunService = game:GetService("RunService")

return function(duration, callback, afterDone)
    local startTim = time()

    local con
    con = RunService.RenderStepped:Connect(function()
        local elapsed = time() - startTim
        local percentage = elapsed / duration

        if percentage >= 1 then
            percentage = 1
        end

        callback(percentage)

        if percentage == 1 then
            con:Disconnect()

            if afterDone then
                afterDone()
            end
        end
    end)
end


Prompt:
--[[
local obj = --object or gui or wahtever goes here
local Properties = {}
Properties.Size = UDim2.new()
Tween(obj,Properties,2,true,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
--Obj,Property,Time,wait,Easingstyle,EasingDirection,RepeatAmt,Reverse
]]

Response:
hum.Seated:connect(function(IsSeated,seat)
	if IsSeated and seat then
		local piano = seat.Parent.Parent
		local amt = 0
		camparts = {}
		for i,v in pairs(piano.Keys:GetChildren()) do
			if v and v:IsA("Part") and string.match(v.Name,"Camera") then
				if string.match(v.Name,"%d") then
					if string.match(v.Name,"2") then
						table.insert(camparts,2,v)
					elseif string.match(v.Name,"3") then
						table.insert(camparts,3,v)
					elseif string.match(v.Name,"4") then
						table.insert(camparts,4,v)
					elseif string.match(v.Name,"5") then
						table.insert(camparts,5,v)
					end
				else
					table.insert(camparts,1,v)
				end
				amt = amt + 1
			end
		end
		if amt > 1 then
			cam.CameraType = Enum.CameraType.Scriptable
			for i = 1,amt do
				gui.Frame["Cam"..i].Visible = true
			end
			gui.Frame.Cam1.BackgroundColor3 = selected
		end
	elseif not IsSeated then
		for i,v in pairs(gui.Frame:GetChildren()) do
			v.Visible = false
			v.BackgroundColor3 = idle
			cam.CameraType = Enum.CameraType.Custom
		end
	end
	wait(.1)
end)

plr.CharacterAdded:Connect(function(char)
	if char.Name == plr.Name then
		repeat hum = char:WaitForChild("Humanoid") wait() until hum
		hum.Seated:connect(function(IsSeated,seat)
			if IsSeated and seat then
				local piano = seat.Parent.Parent
				local amt = 0
				camparts = {}
				for i,v in pairs(piano.Keys:GetChildren()) do
					if v and v:IsA("Part") and string.match(v.Name,"Camera") then
						if string.match(v.Name,"%d") then
							if string.match(v.Name,"2") then
								table.insert(camparts,2,v)
							elseif string.match(v.Name,"3") then
								table.insert(camparts,3,v)
							elseif string.match(v.Name,"4") then
								table.insert(camparts,4,v)
							elseif string.match(v.Name,"5") then
								table.insert(camparts,5,v)
							end
						else
							table.insert(camparts,1,v)
						end
						amt = amt + 1
					end
				end
				if amt > 1 then
					cam.CameraType = Enum.CameraType.Scriptable
					for i = 1,amt do
						gui.Frame["Cam"..i].Visible = true
					end
					gui.Frame.Cam1.BackgroundColor3 = selected
				end
			elseif not IsSeated then
				for i,v in pairs(gui.Frame:GetChildren()) do
					v.Visible = false
					v.BackgroundColor3 = idle
					cam.CameraType = Enum.CameraType.Custom
				end
			end
			wait(.1)
		end)
		wait()
	end
end)

for i,v in pairs(gui.Frame:GetChildren()) do
	if v then
		v.MouseButton1Click:connect(function()
			if v.Visible then
				for a,b in pairs(gui.Frame:GetChildren()) do
					b.BackgroundColor3 = idle
				end
				local RealCam
				for a,b in pairs(guicams) do
					if b == v then
						RealCam = camparts[a]
					end
				end
				cam:Interpolate(RealCam.CFrame * CFrame.new(0, 0, 1),RealCam.CFrame,.5)
				v.BackgroundColor3 = selected
			end
		end)
	end
end


Prompt:
--!strict
--[=[
  @function map
  @within Dictionary

  @param dictionary {[K]: V} -- The dictionary to map.
  @param mapper (value: V, key: K, dictionary: {[K]: V}) -> (Y?, X?) -- The mapper function.
  @return {[X]: Y} -- The mapped dictionary.

  Maps the dictionary using the mapper function. The mapper function can
  return a value and a key. If the mapper function does not return a key,
  the original key will be used.

  ```lua
  local dictionary = { hello = 10, goodbye = 20 }

  local new = Map(dictionary, function(value, key)
    return value * 2, key .. "!"
  end) -- { ["hello!"] = 20, ["goodbye!"] = 40 }

  local new = Map(dictionary, function(value, key)
    return value * 10
  end) -- { hello = 100, goodbye = 200 }
  ```
]=]

Response:
local function map<K, V, X, Y>(
	dictionary: { [K]: V },
	mapper: (value: V, key: K, dictionary: { [K]: V }) -> (Y?, X?)
): { [X]: Y }
	local mapped = {}

	for key, value in pairs(dictionary) do
		local mappedValue, mappedKey = mapper(value, key, dictionary)
		mapped[mappedKey or key] = mappedValue
	end

	return mapped
end

return map


Prompt: -- Public Constructors

Response:
function TextMaskClass.new(textFrame)
	local self = setmetatable({}, TextMaskClass)

	self._Maid = Lazy.Utilities.Maid.new()
	self._MaskType = MASKS.String
	self._MaxLength = 230000

	self.Frame = textFrame

	init(self)

	return self
end


Prompt: --[[Engine]]

Response:
	--Torque Curve
	Tune.Horsepower		= 900		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 600		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000		--		Use sliders to manipulate values
	Tune.Redline		= 6700		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16

	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)

	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)


Prompt:
--[[local iceMesh = Instance.new("SpecialMesh", icePart)
iceMesh.Name = "IceMesh"
iceMesh.MeshType = "FileMesh"
iceMesh.MeshId = "http://www.roblox.com/asset/?id=1290033"
iceMesh.Scale = Vector3.new(0.675, 0.675, 0.675)]]

Response:
local function DisableMove()
	Humanoid.AutoRotate = false
	if(Humanoid.WalkSpeed~=0)then
		StoredValues = {Humanoid.WalkSpeed,Humanoid.JumpPower}
		Humanoid.WalkSpeed = 0
		Humanoid.JumpPower = 0
	end
    Humanoid:UnequipTools()
    PreventTools = character.ChildAdded:connect(function(Child)
	    wait()
	    if Child:IsA("Tool") and Child.Parent == character then
		    Humanoid:UnequipTools()
	    end
    end)
	DisableJump = Humanoid.Changed:connect(function(Property)
		if Property == "Jump" then
			Humanoid.Jump = false
		end
	end)
	Humanoid.PlatformStand = true
    --Humanoid:ChangeState(Enum.HumanoidStateType.Ragdoll)
end

local function EnableMove()
	Humanoid.AutoRotate = true
	Humanoid.WalkSpeed = StoredValues[1]
	Humanoid.JumpPower = StoredValues[2]
	for i, v in pairs({DisableJump, PreventTools}) do
		if v then
			v:disconnect()
		end
	end
	Humanoid.PlatformStand = false
    --Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp)
end


Prompt:
--[=[
	Initializes the value as needed

	@param parent Instance
	@param instanceType string
	@param name string
	@param defaultValue any?
	@return Instance
]=]

Response:
function ValueBaseUtils.getOrCreateValue(parent, instanceType, name, defaultValue)
	assert(typeof(parent) == "Instance", "Bad argument 'parent'")
	assert(type(instanceType) == "string", "Bad argument 'instanceType'")
	assert(type(name) == "string", "Bad argument 'name'")

	local foundChild = parent:FindFirstChild(name)
	if foundChild then
		if not foundChild:IsA(instanceType) then
			warn(("[ValueBaseUtils.getOrCreateValue] - Value of type %q of name %q is of type %q in %s instead")
				:format(instanceType, name, foundChild.ClassName, foundChild:GetFullName()))
		end

		return foundChild
	else
		local newChild = Instance.new(instanceType)
		newChild.Name = name
		newChild.Value = defaultValue
		newChild.Parent = parent

		return newChild
	end
end


Prompt: --global functions

Response:
ai.Move = function(loc, mustSee, humanoid)
	goalHumanoid = humanoid
	if goalPos then
		goalPos = loc
	else
		goalPos = loc
		Spawn(function()
			ai.State = "Tracking"
			local lastGoal
			local lastTime = time()
			while goalPos and ai.Humanoid do
				local gp = goalPos
				if pcall(function() return goalPos.X end) then
				elseif goalPos:IsA("BasePart") then
					gp = (ai.canSee(goalPos) or not mustSee) and goalPos.Position or nil
					lastTime = time()
				elseif goalPos:IsA("Model") then
					gp = nil
					for _, bodyPart in pairs(goalPos:GetChildren()) do
						if bodyPart:IsA("BasePart") and (ai.canSee(bodyPart) or not mustSee) then
							gp = goalPos:GetModelCFrame().p
							lastTime = time()
							break
						end
					end
				end
				lastGoal = gp and humanoid and gp + (gp - ai.Model.Torso.Position).unit * 10 or gp or lastGoal or ai.Model.Torso.Position
				if (goalHumanoid and goalHumanoid.Health <= 0) or (not goalHumanoid and (ai.Model.Torso.Position - lastGoal).magnitude < 3) or time() - lastTime > 3 then
					goalPos = nil
				else
					ai.Humanoid.Jump = objAhead(lastGoal)
					ai.Humanoid:MoveTo(lastGoal, workspace.Terrain)
					if goalHumanoid and ((ai.Model.Torso.Position - goalPos:GetModelCFrame().p) * Vector3.new(1,.5,1)).magnitude < 3 and time() - lastAttack > attackTime then
						attack(goalHumanoid)
					end
				end
				wait(.1)
			end
			if ai then
				ai.State = "Idle"
			end
		end)
	end
end


Prompt: --------BACKLIGHTS--------

Response:
game.Workspace.audiencebackleft1.Part1.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part2.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part3.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part4.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part5.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part6.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part7.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part8.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackleft1.Part9.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)

game.Workspace.audiencebackright1.Part1.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part2.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part3.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part4.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part5.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part6.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part7.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part8.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)
game.Workspace.audiencebackright1.Part9.BrickColor = BrickColor.new(game.Workspace.Lighting.cyan.Value)


Prompt:
-- float rd_flt_basic(byte f1..8)
-- @f1..4 - The 4 bytes composing a little endian float

Response:
local function rd_flt_basic(f1, f2, f3, f4)
	local sign = (-1) ^ bit.rshift(f4, 7)
	local exp = bit.rshift(f3, 7) + bit.lshift(bit.band(f4, 0x7F), 1)
	local frac = f1 + bit.lshift(f2, 8) + bit.lshift(bit.band(f3, 0x7F), 16)
	local normal = 1

	if exp == 0 then
		if frac == 0 then
			return sign * 0
		else
			normal = 0
			exp = 1
		end
	elseif exp == 0x7F then
		if frac == 0 then
			return sign * (1 / 0)
		else
			return sign * (0 / 0)
		end
	end

	return sign * 2 ^ (exp - 127) * (1 + normal / 2 ^ 23)
end


Prompt:
--[[
	Returns the scene with the given name in the given list of scenes.
	Returns nil if no scene with the given name was found.

	Parameters:
	ScenesList: {Folder} - An array of scenes
	SceneName: string - The name of the scene to find

	Returns:
	Folder? - The scene with the given name or nil if no scene matches the
	given name.
]]

Response:
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local CollectionService = game:GetService("CollectionService")

local function GetSceneByName(SceneName: string): Folder?
	local OrchestraScenes = ReplicatedStorage:FindFirstChild("SequencerScenes")
	if OrchestraScenes then
		for _, folder in ipairs(OrchestraScenes:GetChildren()) do
			if folder:IsA("Configuration") or folder:IsA("Folder") then
				if folder.Name == SceneName then
					return folder
				end
			end
		end
	end

	local ScenesList = CollectionService:GetTagged("SequencerScene")
	for _, SceneItem in ipairs(ScenesList) do
		if SceneItem.Name == SceneName then
			return SceneItem
		end
	end

	return nil
end

return GetSceneByName


Prompt: -- Create component

Response:
local Component = Cheer.CreateComponent('BTDock', View, true);

function Component.Start(Core)

	-- Show the view
	View.Visible = true;

	-- Store core API reference
	getfenv(1).Core = Core;

	-- Create selection buttons
	local UndoButton = Component.AddSelectionButton(Core.Assets.UndoInactiveDecal, 'UNDO\n(Shift + Z)');
	local RedoButton = Component.AddSelectionButton(Core.Assets.RedoInactiveDecal, 'REDO\n(Shift + Y)');
	local DeleteButton = Component.AddSelectionButton(Core.Assets.DeleteInactiveDecal, 'DELETE\n(Shift + X)');
	local ExportButton = Component.AddSelectionButton(Core.Assets.ExportInactiveDecal, 'EXPORT\n(Shift + P)');
	local CloneButton = Component.AddSelectionButton(Core.Assets.CloneInactiveDecal, 'CLONE\n(Shift + C)');

	-- Connect selection buttons to core systems
	Cheer.Bind(UndoButton, Core.History.Undo);
	Cheer.Bind(RedoButton, Core.History.Redo);
	Cheer.Bind(CloneButton, Core.CloneSelection);
	Cheer.Bind(DeleteButton, Core.DeleteSelection);
	Cheer.Bind(ExportButton, Core.ExportSelection);

	-- Highlight history selection buttons according to state
	Cheer.Bind(Core.History.Changed, function ()
		UndoButton.Image = (Core.History.Index == 0) and Core.Assets.UndoInactiveDecal or Core.Assets.UndoActiveDecal;
		RedoButton.Image = (Core.History.Index == #Core.History.Stack) and Core.Assets.RedoInactiveDecal or Core.Assets.RedoActiveDecal;
	end);

	-- Highlight clone/delete/export buttons according to selection state
	Cheer.Bind(Core.Selection.Changed, function ()
		CloneButton.Image = (#Core.Selection.Items == 0) and Core.Assets.CloneInactiveDecal or Core.Assets.CloneActiveDecal;
		DeleteButton.Image = (#Core.Selection.Items == 0) and Core.Assets.DeleteInactiveDecal or Core.Assets.DeleteActiveDecal;
		ExportButton.Image = (#Core.Selection.Items == 0) and Core.Assets.ExportInactiveDecal or Core.Assets.ExportActiveDecal;
	end);

	-- Highlight current tools
	Cheer.Bind(Core.ToolChanged, function ()
		for Tool, Button in pairs(Component.ToolButtons) do
			Button.BackgroundTransparency = (Tool == Core.CurrentTool) and 0 or 1;
		end;
	end);

	-- Toggle help section on help button click
	Cheer.Bind(View.InfoButtons.HelpButton, function ()
		Cheer(View.ToolInformation).HideCurrentSection();
		View.HelpInfo.Visible = not View.HelpInfo.Visible;
	end);

	-- Start tool information section manager
	Cheer(View.ToolInformation).Start(Core);

	-- Return component for chaining
	return Component;

end;

function Component.AddSelectionButton(InitialIcon, Tooltip)

	-- Create the button
	local Button = View.SelectionButton:Clone();
	local Index = #View.SelectionButtons:GetChildren();
	Button.Parent = View.SelectionButtons;
	Button.Image = InitialIcon;
	Button.Visible = true;

	-- Position the button
	Button.Position = UDim2.new(Index % 2 * 0.5, 0, 0, Button.AbsoluteSize.Y * math.floor(Index / 2));

	-- Add a tooltip to the button
	Cheer(View.Tooltip, Button).Start(Tooltip);

	-- Return the button
	return Button;

end;

Component.ToolButtons = {};

function Component.AddToolButton(Icon, Hotkey, Tool, InfoSection)

	-- Create the button
	local Button = View.ToolButton:Clone();
	local Index = #View.ToolButtons:GetChildren();
	Button.Parent = View.ToolButtons;
	Button.BackgroundColor3 = Tool.Color and Tool.Color.Color or Color3.new(0, 0, 0);
	Button.BackgroundTransparency = (Core.CurrentTool == Tool) and 0 or 1;
	Button.Image = Icon;
	Button.Visible = true;
	Button.Hotkey.Text = Hotkey;

	-- Register the button
	Component.ToolButtons[Tool] = Button;

	-- Trigger tool when button is pressed
	Cheer.Bind(Button, Support.Call(Core.EquipTool, Tool));

	-- Register information section
	Cheer(View.ToolInformation).RegisterSection(InfoSection);

	-- Trigger information section on interactions with button
	Support.AddGuiInputListener(Button, 'Began', {'MouseButton1'}, false, function ()
		Cheer(View.ToolInformation).ProcessClick(Tool, InfoSection)
	end)
	Support.AddGuiInputListener(Button, 'Began', {'MouseMovement'}, false, function ()
		Cheer(View.ToolInformation).ProcessHover(Tool, InfoSection)
	end)
	Support.AddGuiInputListener(Button, 'Ended', {'MouseMovement'}, true, function ()
		Cheer(View.ToolInformation).ProcessUnhover(Tool, InfoSection)
	end)

	-- Time how long each press on the button lasts
	local TouchStart = nil
	Support.AddGuiInputListener(Button, 'Began', {'Touch'}, false, function ()
		local Timestamp = tick()
		TouchStart = Timestamp
		wait(0.5)

		-- Trigger tool info if still touching after delay
		if TouchStart == Timestamp then
			Cheer(View.ToolInformation).ProcessClick(Tool, InfoSection)
		end
	end)
	Support.AddGuiInputListener(Button, 'Ended', {'Touch'}, true, function ()
		TouchStart = nil
	end)

	-- Position the button
	Button.Position = UDim2.new(Index % 2 * 0.5, 0, 0, Button.AbsoluteSize.Y * math.floor(Index / 2));

	-- Return the button
	return Button;

end;


Response:
function onClicked()
R.Function1.Disabled = true
R.Function2.Disabled = false
R.BrickColor = BrickColor.new("Institutional white")
N.Four1.BrickColor = BrickColor.new("Really black")
N.One2.BrickColor = BrickColor.new("Really black")
N.One4.BrickColor = BrickColor.new("Really black")
N.One8.BrickColor = BrickColor.new("Really black")
N.Three4.BrickColor = BrickColor.new("Really black")
N.Two1.BrickColor = BrickColor.new("Really black")
end
script.Parent.ClickDetector.MouseClick:connect(onClicked)


Prompt: -- Check if character is there

Response:
if script.Owner.Value.Character ~= nil and script.Owner.Value.Character:FindFirstChild("Humanoid") then

	-- Listen for invisibility activation
	local debounce = false
	local event = game.ReplicatedStorage.Interactions.Server.Perks.MakeInvisible.OnServerEvent:connect(function(plr)

		-- Make sure correct player
		if not debounce and script.Owner.Value.Character ~= nil and plr == script.Owner.Value then
			debounce = true

			-- Tell all playing players to make murderer invisible
			local playingPlrs = game.ServerScriptService.RoundManager.GetPlayersInGame:Invoke()
			for n, i in pairs(playingPlrs) do
				if i == script.Owner.Value then
					table.remove(playingPlrs, n)
					break
				end
			end
			for _, i in pairs(playingPlrs) do
				game.ReplicatedStorage.Interactions.Client.ChangeCharacterVisibility:FireClient(i, script.Owner.Value, true)
			end

			-- Tell everyone else to make murderer half-transparent
			for _, i in pairs(game.Players:GetPlayers()) do
				local playing = false
				for _, o in pairs(playingPlrs) do
					if o == i then
						playing = true
						break
					end
				end
				if not playing then
					game.ReplicatedStorage.Interactions.Client.ChangeCharacterVisibility:FireClient(i, script.Owner.Value, false)
				end
			end

			-- Wait cooldown
			wait(COOLDOWN)

			debounce = false
		end

	end)

	-- Connect character death
	script.Owner.Value.Character.Humanoid.Died:connect(function()
		event:disconnect()
		event = nil
	end)

	-- Activate perk for client
	game.ReplicatedStorage.Interactions.Client.Perks.UseInvisibility:FireClient(script.Owner.Value)

end


Prompt:
-- NOTICE: Player property names do not all match their StarterPlayer equivalents,
-- with the differences noted in the comments on the right

Response:
local PLAYER_CAMERA_PROPERTIES =
	{
		"CameraMinZoomDistance",
		"CameraMaxZoomDistance",
		"CameraMode",
		"DevCameraOcclusionMode",
		"DevComputerCameraMode",			-- Corresponds to StarterPlayer.DevComputerCameraMovementMode
		"DevTouchCameraMode",				-- Corresponds to StarterPlayer.DevTouchCameraMovementMode

		-- Character movement mode
		"DevComputerMovementMode",
		"DevTouchMovementMode",
		"DevEnableMouseLock",				-- Corresponds to StarterPlayer.EnableMouseLockOption
	}

local USER_GAME_SETTINGS_PROPERTIES =
	{
		"ComputerCameraMovementMode",
		"ComputerMovementMode",
		"ControlMode",
		"GamepadCameraSensitivity",
		"MouseSensitivity",
		"RotationType",
		"TouchCameraMovementMode",
		"TouchMovementMode",
	}


Prompt: --	[TORQUE CURVE VISUAL]

Response:
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000		--		Use sliders to manipulate values
	Tune.Redline		= 6700		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 5500
	Tune.PeakSharpness	= 7.5
	Tune.CurveMult		= 0.16

	--Incline Compensation
	Tune.InclineComp	= 1.7			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)

	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 75		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= 3			-- Percent throttle at idle
	Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)


Prompt:
--[[

# Explorer Panel

A GUI panel that displays the game hierarchy.

## Selection Bindables

- `Function GetSelection ( )`

	Returns an array of objects representing the objects currently
	selected in the panel.

- `Function SetSelection ( Objects selection )`

	Sets the objects that are selected in the panel. `selection` is an array
	of objects.

- `Event SelectionChanged ( )`

	Fired after the selection changes.

## Option Bindables

- `Function GetOption ( string optionName )`

	If `optionName` is given, returns the value of that option. Otherwise,
	returns a table of options and their current values.

- `Function SetOption ( string optionName, bool value )`

	Sets `optionName` to `value`.

	Options:

	- Modifiable

		Whether objects can be modified by the panel.

		Note that modifying objects depends on being able to select them. If
		Selectable is false, then Actions will not be available. Reparenting
		is still possible, but only for the dragged object.

	- Selectable

		Whether objects can be selected.

		If Modifiable is false, then left-clicking will perform a drag
		selection.

## Updates

- 2013-09-18
	- Fixed explorer icons to match studio explorer.

- 2013-09-14
	- Added GetOption and SetOption bindables.
		- Option: Modifiable; sets whether objects can be modified by the panel.
		- Option: Selectable; sets whether objects can be selected.
	- Slight modification to left-click selection behavior.
	- Improved layout and scaling.

- 2013-09-13
	- Added drag to reparent objects.
		- Left-click to select/deselect object.
		- Left-click and drag unselected object to reparent single object.
		- Left-click and drag selected object to move reparent entire selection.
		- Right-click while dragging to cancel.

- 2013-09-11
	- Added explorer panel header with actions.
		- Added Cut action.
		- Added Copy action.
		- Added Paste action.
		- Added Delete action.
	- Added drag selection.
		- Left-click: Add to selection on drag.
		- Right-click: Add to or remove from selection on drag.
	- Ensured SelectionChanged fires only when the selection actually changes.
	- Added documentation and change log.
	- Fixed thread issue.

- 2013-09-09
	- Added basic multi-selection.
		- Left-click to set selection.
		- Right-click to add to or remove from selection.
	- Removed "Selection" ObjectValue.
		- Added GetSelection BindableFunction.
		- Added SetSelection BindableFunction.
		- Added SelectionChanged BindableEvent.
	- Changed font to SourceSans.

- 2013-08-31
	- Improved GUI sizing based off of `GUI_SIZE` constant.
	- Automatic font size detection.

- 2013-08-27
	- Initial explorer panel.

## Todo

- Sorting
	- by ExplorerOrder
	- by children
	- by name
- Drag objects to reparent

]]

Response:
local ENTRY_SIZE = GUI_SIZE + ENTRY_PADDING*2
local ENTRY_BOUND = ENTRY_SIZE + ENTRY_MARGIN
local HEADER_SIZE = ENTRY_SIZE*2

local FONT = 'SourceSans'
local FONT_SIZE do
	local size = {8,9,10,11,12,14,18,24,36,48}
	local s
	local n = math.huge
	for i = 1,#size do
		if size[i] <= GUI_SIZE then
			FONT_SIZE = i - 1
		end
	end
end

local GuiColor = {
	Background      = Color3.new(233/255, 233/255, 233/255);
	Border          = Color3.new(149/255, 149/255, 149/255);
	Selected        = Color3.new( 96/255, 140/255, 211/255);
	BorderSelected  = Color3.new( 86/255, 125/255, 188/255);
	Text            = Color3.new(  0/255,   0/255,   0/255);
	TextDisabled    = Color3.new(128/255, 128/255, 128/255);
	TextSelected    = Color3.new(255/255, 255/255, 255/255);
	Button          = Color3.new(221/255, 221/255, 221/255);
	ButtonBorder    = Color3.new(149/255, 149/255, 149/255);
	ButtonSelected  = Color3.new(255/255,   0/255,   0/255);
	Field           = Color3.new(255/255, 255/255, 255/255);
	FieldBorder     = Color3.new(191/255, 191/255, 191/255);
	TitleBackground = Color3.new(178/255, 178/255, 178/255);
}