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

Response:
local v1 = require(game.Players.LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule")):GetControls();
local v2 = game["Run Service"];
local l__UserInputService__3 = game:GetService("UserInputService");
local l__TweenService__4 = game:GetService("TweenService");
local l__ProximityPromptService__5 = game:GetService("ProximityPromptService");
local v6 = script:FindFirstAncestor("MainUI");
local l__Highlight__7 = script:WaitForChild("Highlight");
local u1 = require(script.Parent);
local l__HintFrame__2 = v6:WaitForChild("MainFrame"):WaitForChild("HintFrame");
local l__TextService__3 = game:GetService("TextService");
local u4 = require(script:WaitForChild("MouseIcons"));
local u5 = require(script:WaitForChild("Hint"));
local u6 = require(script:WaitForChild("HintConsole"));
local u7 = nil;
function update(p1, p2)
	task.spawn(function()
		if u1.platform == "mobile" then
			return;
		end;
		if p1.ObjectText == "Hint" then
			local v8 = l__HintFrame__2:Clone();
			v8.Parent = l__HintFrame__2.Parent;
			v8.Title.Text = p1.ObjectText;
			v8.Desc.Text = p1.ActionText;
			v8.Key.Text = p1.KeyboardKeyCode.Name;
			v8.Bar.Bar.Size = UDim2.new(0, 0, 1, 0);
			v8.Bar.Bar:TweenSize(UDim2.new(0, 0, 1, 0), "Out", "Sine", 0.1, true);
			local v9 = UDim.new(0.85, -10);
			local v10 = l__TextService__3:GetTextSize(v8.Desc.Text, v8.Desc.AbsoluteSize.Y, Enum.Font.GothamBold, v8.Desc.AbsoluteSize);
			local l__X__11 = v8.Key.AbsoluteSize.X;
			v8.CenterImage.Image = u4.getIcon(p1.ObjectText);
			if p1.KeyboardKeyCode.Name == "RightMeta" then
				if u5[p1.ActionText] == nil then
					v8.Title.Visible = false;
					v8.Back.Size = UDim2.new(0.05, math.max(v8.Desc.TextBounds.X + l__X__11, v8.Title.TextBounds.X), 0.1, 0);
					v8.Key.Text = " ";
					v8.Key.Position = UDim2.new(0.5, -(v10.X / 2) + l__X__11 / 4, v9.Scale, v9.Offset);
					v8.Desc.Position = UDim2.new(0.5, 0, v9.Scale, v9.Offset);
					v8.Key.Visible = false;
				else
					v8.Title.Visible = false;
					v8.Back.Size = UDim2.new(0.05, math.max(v8.Desc.TextBounds.X + l__X__11 + l__X__11, v8.Title.TextBounds.X), 0.1, 0);
					v8.Key.Text = u5[p1.ActionText];
					v8.Key.Position = UDim2.new(0.5, -(v10.X / 2) + l__X__11 / 4, v9.Scale, v9.Offset);
					v8.Desc.Position = UDim2.new(0.5, l__X__11 / 2 + l__X__11 / 4, v9.Scale, v9.Offset);
					v8.Key.Visible = true;
				end;
			else
				v8.Title.Visible = false;
				v8.Back.Size = UDim2.new(0.05, math.max(v8.Desc.TextBounds.X + l__X__11 + l__X__11, v8.Title.TextBounds.X), 0.1, 0);
				v8.Key.Text = u5[p1.ActionText];
				v8.Key.Position = UDim2.new(0.5, -(v10.X / 2) + l__X__11 / 4, v9.Scale, v9.Offset);
				v8.Desc.Position = UDim2.new(0.5, l__X__11 / 2 + l__X__11 / 4, v9.Scale, v9.Offset);
				v8.Key.Visible = true;
			end;
			if u1.platform == "console" then
				v8.Key.Visible = false;
				v8.KeyXbox.Image = u6[p1.ActionText];
				v8.KeyXbox.Size = v8.Key.Size;
				v8.KeyXbox.Position = v8.Key.Position;
				v8.KeyXbox.Visible = true;
			else
				v8.KeyXbox.Visible = false;
			end;
			({}).BackgroundColor3 = Color3.fromRGB(0, 0, 0);
			if 0 < p1.HoldDuration then
				v8.Bar.Visible = true;
			else
				v8.Bar.Visible = false;
			end;
			script.Holding:Stop();
			local l__CurrentCamera__12 = workspace.CurrentCamera;
			local l__Position__13 = l__CurrentCamera__12.CFrame.Position;
			local l__Parent__14 = p1.Parent;
			local v15 = false;
			local l__Position__16
			if l__Parent__14 then
				if not l__Parent__14:IsA("BasePart") then
					if l__Parent__14:IsA("Model") then
						l__Position__16 = l__Parent__14:GetPivot().Position;
						v15 = true;
					elseif l__Parent__14:IsA("Attachment") then
						local l__WorldPosition__17 = l__Parent__14.WorldPosition;
					end;
				else
					l__Position__16 = l__Parent__14:GetPivot().Position;
					v15 = true;
				end;
				v8.Visible = true;
				v8.Position = UDim2.new(0.5, 0, 0.5, 0);
				local v18 = 1 - 1;
				local v19
				local v20, v21 = l__CurrentCamera__12:WorldToScreenPoint(Vector3.new(0,0.2,0));
				if not l__Parent__14:IsA("BasePart") then
					if not l__Parent__14:IsA("Model") then
						if l__Parent__14:IsA("Attachment") then
							while true do
								if p1 then

								else
									v8.Visible = false;
									break;
								end;
								if u7 == u7 then

								else
									v8.Visible = false;
									break;
								end;
								if u7 then

								else
									v8.Visible = false;
									break;
								end;
								if u7.Connected then

								else
									v8.Visible = false;
									break;
								end;
								if v15 then
									v19 = l__Parent__14:GetPivot().Position;
								else
									v19 = l__Parent__14.WorldPosition;
								end;
								if v21 then
									v8.Visible = true;
									v8.Position = UDim2.new(0, math.clamp(v20.X, 80, v6.AbsoluteSize.X - 80), 0, math.clamp(v20.Y, 80, v6.AbsoluteSize.Y - 80));
								else
									v8.Visible = false;
								end;
								task.wait();
								if 0 <= 1 then
									if v18 < 100000000 then

									else
										break;
									end;
								elseif 100000000 < v18 then

								else
									break;
								end;
								v18 = v18 + 1;
							end;
						end;
					else
						v18 = 1 - 1;
						while true do
							if p1 then

							else
								v8.Visible = false;
								break;
							end;
							if u7 == u7 then

							else
								v8.Visible = false;
								break;
							end;
							if u7 then

							else
								v8.Visible = false;
								break;
							end;
							if u7.Connected then

							else
								v8.Visible = false;
								break;
							end;
							if v15 then
								v19 = l__Parent__14:GetPivot().Position;
							else
								v19 = l__Parent__14.WorldPosition;
							end;
							v20, v21 = l__CurrentCamera__12:WorldToScreenPoint(v19 - Vector3.new(0, 0.2, 0));
							if v21 then
								v8.Visible = true;
								v8.Position = UDim2.new(0, math.clamp(v20.X, 80, v6.AbsoluteSize.X - 80), 0, math.clamp(v20.Y, 80, v6.AbsoluteSize.Y - 80));
							else
								v8.Visible = false;
							end;
							task.wait();
							if 0 <= 1 then
								if v18 < 100000000 then

								else
									break;
								end;
							elseif 100000000 < v18 then

							else
								break;
							end;
							v18 = v18 + 1;
						end;
					end;
				else
					v18 = 1 - 1;
					while true do
						if p1 then

						else
							v8.Visible = false;
							break;
						end;
						if u7 == u7 then

						else
							v8.Visible = false;
							break;
						end;
						if u7 then

						else
							v8.Visible = false;
							break;
						end;
						if u7.Connected then

						else
							v8.Visible = false;
							break;
						end;
						if v15 then
							v19 = l__Parent__14:GetPivot().Position;
						else
							v19 = l__Parent__14.WorldPosition;
						end;
						v20, v21 = l__CurrentCamera__12:WorldToScreenPoint(v19 - Vector3.new(0, 0.2, 0));
						if v21 then
							v8.Visible = true;
							v8.Position = UDim2.new(0, math.clamp(v20.X, 80, v6.AbsoluteSize.X - 80), 0, math.clamp(v20.Y, 80, v6.AbsoluteSize.Y - 80));
						else
							v8.Visible = false;
						end;
						task.wait();
						if 0 <= 1 then
							if v18 < 100000000 then

							else
								break;
							end;
						elseif 100000000 < v18 then

						else
							break;
						end;
						v18 = v18 + 1;
					end;
				end;
			end;
			v8.Visible = false;
			v8:Destroy();
		end;
	end);
end;
l__ProximityPromptService__5.PromptShown:Connect(function(p3)
	if p3.ObjectText == "Hint" then
		u7 = p3.Changed:Connect(function()
			update(p3);
		end);
		update(p3);
	end;
end);
l__ProximityPromptService__5.PromptHidden:Connect(function(p4)
	if p4.ObjectText == "Hint" then
		pcall(function()
			u7:Disconnect();
		end);
	end;
end);
l__ProximityPromptService__5.PromptTriggered:Connect(function(p5)
	if p5.ObjectText == "Hint" then
		update(p5, true);
	end;
end);
l__ProximityPromptService__5.PromptButtonHoldBegan:Connect(function(p6)
	if p6.ObjectText == "Hint" then
		update(p6);
	end;
end);
l__ProximityPromptService__5.PromptButtonHoldEnded:Connect(function(p7)
	if p7.ObjectText == "Hint" then
		update(p7);
	end;
end);


Prompt: -- Directories

Response: SharedModules = ReplicatedStorage:WaitForChild("SharedModules")


Prompt: -- theObj : (variant) the table with values to print

Response:
return function(theObj)
	local pathToObject = theObj.Name

	local currentObj = theObj
	while currentObj.Parent ~= nil do
		pathToObject = string.format("%s.%s", currentObj.Parent.Name, pathToObject)
		currentObj = currentObj.Parent
	end

	return pathToObject
end


Prompt: -------- OMG HAX

Response:
r = game:service("RunService")

Tool = script.Parent

local equalizingForce = 236 / 1.2 -- amount of force required to levitate a mass
local gravity = 0.75 -- things float at > 1

local ghostEffect = nil
local massCon1 = nil
local massCon2 = nil

local head = nil
function recursiveGetLift(node)
	local m = 0
	local c = node:GetChildren()
	if (node:FindFirstChild("Head") ~= nil) then head = node:FindFirstChild("Head") end -- nasty hack to detect when your parts get blown off

	for i=1,#c do
		if c[i].className == "Part" then
			if (head ~= nil and (c[i].Position - head.Position).magnitude < 10) then -- GROSS
				if c[i].Name == "Handle" then
					m = m + (c[i]:GetMass() * equalizingForce * 1) -- hack that makes hats weightless, so different hats don't change your jump height
				else
					m = m + (c[i]:GetMass() * equalizingForce * gravity)
				end
			end
		end
		m = m + recursiveGetLift(c[i])
	end
	return m
end

function onMassChanged(child, char)
	if (ghostEffect ~= nil) then
		ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
	end
end

function UpdateGhostState(isUnequipping)

	if isUnequipping == true then
		ghostEffect:Remove()
		ghostEffect = nil
		massCon1:disconnect()
		massCon2:disconnect()
	else
		if ghostEffect == nil then
			local char = Tool.Parent
			if char == nil then return end
			ghostEffect = Instance.new("BodyForce")
			ghostEffect.Name = "GravityCoilEffect"
			ghostEffect.force = Vector3.new(0, recursiveGetLift(char) ,0)
			ghostEffect.Parent = char.Head
			ghostChar = char
			massCon1 = char.ChildAdded:connect(function(child)  onMassChanged(child, char) end)
			massCon2 = char.ChildRemoved:connect(function(child)  onMassChanged(child, char) end)
		end
	end

end

function onEquipped()
	Tool.Handle.CoilSound:Play()
	UpdateGhostState(false)
end

function onUnequipped()
	UpdateGhostState(true)
end

script.Parent.Equipped:connect(onEquipped)
script.Parent.Unequipped:connect(onUnequipped)


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

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

math.randomseed(tick())


Prompt: -- options -------------------------

Response:
setupmode = "Auto" -- Manual or Auto (if you want to pick what plugins you have yourself or you want it to be automated)
soundplugin = "StockSound"	-- StockSound, SoundSuite or 1.5 Sound (no others are supported, sorry!) (MANUAL ONLY)
camkey = "v" -- the key you use for first person camera
level = 32 -- 0% - 100%
exceptions = {"Engine","Ignition","Smoke","Horn"} -- put names of audios to ignore here (AUTO ONLY)


Prompt:
--[[Utilities.tweenFoV = function(FOV,step)
	coroutine.resume(coroutine.create(function()
   		local fv0 = cam.FieldOfView
    	for i = 0,90,step do
        	local r = ((math.sin(math.rad(i))+1)/2)
        	cam.FieldOfView = (Vector3.new(fv0,0,0):Lerp(Vector3.new(FOV,0,0),r).X)
        	rs:wait()
    	end
	end))
end]]

Response:
--

Utilities.tweenFoV = function(goal, frames)
	if not _G.tweeningFov then
		coroutine.resume(coroutine.create(function()
			SFn = SFn and SFn + 1 or 0
			local SFn_S = SFn
			for i = 1, frames do
				if SFn ~= SFn_S then break end
					cam.FieldOfView = cam.FieldOfView + (goal - cam.FieldOfView) * (i / frames)
					game:GetService("RunService").RenderStepped:wait()
					--_G.tweeningFov = true
				end
			--_G.tweeningFov = false
		end))
	end
end

Utilities.tweenRoll = function(Roll,step)
	coroutine.resume(coroutine.create(function()
   		local r0 = cam:GetRoll()
    	for i = -90,90,step do
        	local r = ((math.sin(math.rad(i))+1)/2)
        	cam:SetRoll(Vector3.new(r0,0,0):Lerp(Vector3.new(Roll,0,0),r).X)
        	rs:wait()
    	end
	end))
end

Utilities.Fade = function(target, goal, frames, IsGui)
	coroutine.resume(coroutine.create(function()
		for i = 1, frames do
			if IsGui == true then
				target.TextTransparency = target.TextTransparency + (goal - target.TextTransparency) * (i / frames)
				rs:wait()
			elseif IsGui == false then
				target.Size = target.Size + (goal - target.Size) * (i / frames)
				rs:wait()
			end
		end
	end))
end

Utilities.FixCam = function()
	cam.CameraSubject = player.Character.Humanoid
	cam.CameraType = "Custom"
	player.Character.Humanoid.WalkSpeed = 32.5
end

Utilities.SpawnCam = function(Target)
	cam.CameraType = "Attach"
	cam.CameraSubject = Target
	wait(.05)
	cam.CoordinateFrame = Target.CFrame
	cam.CameraType = "Scriptable"
	player.Character.Humanoid.WalkSpeed = 32.5
end

Utilities.tweenCam = function(CO, t)
 coroutine.resume(coroutine.create(function()
  COn = COn and COn + 1 or 0 local COn_S = COn
  for i = 1, t do
   if COn ~= COn_S then break end
   char.Humanoid.CameraOffset = char.Humanoid.CameraOffset + (CO - char.Humanoid.CameraOffset) * (i / t)
   rs:wait()
  end
 end))
end

Utilities.TweenJoint = function(Joint, newC0, newC1, Alpha, Duration)
	spawn(function()
		local newCode = math.random(-1e9, 1e9) --This creates a random code between -1000000000 and 1000000000
		local tweenIndicator = nil
		if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
			tweenIndicator = Instance.new("IntValue")
			tweenIndicator.Name = "tweenCode"
			tweenIndicator.Value = newCode
			tweenIndicator.Parent = Joint
		else
			tweenIndicator = Joint.tweenCode
			tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
		end
		if Duration <= 0 then --If the duration is less than or equal to 0 then there's no need for a tweening loop
			if newC0 then Joint.C0 = newC0 end
			if newC1 then Joint.C1 = newC1 end
		else
			local Increment = 1.5 / Duration --Calculate the increment here so it doesn't need to be calculated in the loop
			local startC0 = Joint.C0
			local startC1 = Joint.C1
			local X = 0
			while true do
				rs:wait() --This makes the for loop step every 1/60th of a second
				local newX = X + Increment
				X = (newX > 90 and 90 or newX) --Makes sure the X never goes above 90
				if tweenIndicator.Value ~= newCode then break end --This makes sure that another tween wasn't called on the same joint
				if newC0 then Joint.C0 = startC0:lerp(newC0, Alpha(X)) end
				if newC1 then Joint.C1 = startC1:lerp(newC1, Alpha(X)) end
				if X == 90 then break end --If the tweening is done...
			end
		end
		if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
			tweenIndicator:Destroy()
		end
	end)
end

Utilities.Weld = function(p1, p2, c0)
	local w = Instance.new("Motor6D", p1)
	w.Part0 = p1
	w.Part1 = p2
	w.Name = p1.Name
	w.C0 = c0 or p1.CFrame:inverse() * p2.CFrame
	return w
end

return Utilities


Prompt: -- constants

Response: local EFFECTS	= Workspace:WaitForChild("Effects")


Prompt: -- local placeID_Premium = 2514752346	-- плейс куда телепортируемся

Response:
local function onTeleporterTouch(otherPart)
	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if not player then return end

	-- If the user already has Premium, teleport them to the Premium-only place
	if player.MembershipType == Enum.MembershipType.Premium then


Prompt: -- 2xy0x

Response:
local Character

repeat wait() until script.Parent:FindFirstChild("Humanoid")

Character = script.Parent

local Humanoid = Character:WaitForChild("Humanoid")
local HRP = Character:WaitForChild("HumanoidRootPart")
local Values = require(script.Values)

local function CalculateDamage(Magnitude)
	-- Calculates the amount of damage the player will take from the fall.
	local afterminus100;
	local totaldamage;
	afterminus100 = Magnitude - Values.MinimumFallDamageStuds
	if afterminus100 >= 0 then
		totaldamage = Magnitude*Values.DamageMultiplication + 10
	else
		totaldamage = 0
	end

	return totaldamage
end

Humanoid.StateChanged:Connect(function(oldstate,newstate)
	local magnitude;
	local total;
	if newstate == Enum.HumanoidStateType.Landed then -- Tells when the player landed
		--print('landed')
		Values.DontUpdateYet = true;
		magnitude = (Values.LastStandingPos - HRP.Position).magnitude -- measures the y position of where they fell from, and the Y position they have after they touched the ground.

		total = CalculateDamage(magnitude)

		-- Here, the script checks if the total is greater than 0. If it is, then it damages the player and plays the sound.
		if total > 0 then
			Humanoid.Health = Humanoid.Health - total
			script.DamageSound:Play()
		end

		Values.DontUpdateYet = false;
	end
end)


Prompt: --// SProtect by Itzt: V1.0

Response:
local M = require(script.Settings)
local RS = game:GetService("RunService")

local locked = true

function count()
	local z = 0
	if M.onlyme then
		local v = M.owners[1]
		if game.Players:FindFirstChild(v) then
			z += 1
		else
			if tonumber(v) ~= nil then
				if game.Players:GetPlayerByUserId(v) then
					z += 1
				end
			end
		end
	else
		for i,v in pairs(M.owners) do
			if game.Players:FindFirstChild(v) then
				z += 1
			else
				if tonumber(v) ~= nil then
					if game.Players:GetPlayerByUserId(v) then
						z += 1
					end
				end
			end
		end
	end
	return z
end

function search(t,p)
	local x = string.lower(p.Name)
	if table.find(t,x) or table.find(t,p.UserId) then
		return true
	else
		return false
	end
end

game.Players.PlayerAdded:connect(function(x)
	if search(M.owners,x) then
		--print("Owner of car granted permissions")
		x.Chatted:connect(function(z)
			if string.lower(z) == string.lower(M.delmsg) then
				script.Parent:Destroy()
			elseif string.lower(z) == string.lower(M.carname.." "..M.unlock) then
				locked = false
			elseif string.lower(z) == string.lower(M.carname.." "..M.lock) then
				locked = true
			end
		end)
	end
end)

wait(2)

for i,x in pairs(game.Players:GetChildren()) do
	if search(M.owners,x) then
		--print("Owner of car granted permissions")
		x.Chatted:connect(function(z)
			if string.lower(z) == string.lower(M.delmsg) then
				script.Parent:Destroy()
			elseif string.lower(z) == string.lower(M.carname.." "..M.unlock) then
				locked = false
			elseif string.lower(z) == string.lower(M.carname.." "..M.lock) then
				locked = true
			end
		end)
	end
end

if (RS:IsStudio() and M.studioperms) then
	warn("studio detected, car will not lock")
elseif count() == 0 then
	warn("no owners found, deleting")
	script.Parent:Destroy()
	script:Destroy()
end

game.Players.PlayerRemoving:connect(function(x)
	if count() == 0 then
		script.Parent:Destroy()
	end
end)

script.Parent.DriveSeat.ChildAdded:connect(function(child)
	if child.Name == "SeatWeld" then
		if child.Part1.Name == "HumanoidRootPart" then
			local x = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if search(M.owners,x) or (RS:IsStudio() and M.studioperms) or (locked==false) then
			else
				wait() --prevent the car from becoming unusable
				child:Destroy()
				if M.lethal then
				x.Character.Humanoid.Health -= x.Character.Humanoid.Health
				else
					x:LoadCharacter()
				end
			end
		end
	end
end)


Prompt:
--[[
	A limited, simple implementation of a Signal.

	Handlers are fired in order, and (dis)connections are properly handled when
	executing an event.
]]

Response:
local function immutableAppend(list, ...)
	local new = {}
	local len = #list

	for key = 1, len do
		new[key] = list[key]
	end

	for i = 1, select("#", ...) do
		new[len + i] = select(i, ...)
	end

	return new
end

local function immutableRemoveValue(list, removeValue)
	local new = {}

	for i = 1, #list do
		if list[i] ~= removeValue then
			table.insert(new, list[i])
		end
	end

	return new
end

local Signal = {}

Signal.__index = Signal

function Signal.new(store)
	local self = {
		_listeners = {},
		_store = store
	}

	setmetatable(self, Signal)

	return self
end

function Signal:connect(callback)
	if typeof(callback) ~= "function" then
		error("Expected the listener to be a function.")
	end

	if self._store and self._store._isDispatching then
		error(
			'You may not call store.changed:connect() while the reducer is executing. ' ..
				'If you would like to be notified after the store has been updated, subscribe from a ' ..
				'component and invoke store:getState() in the callback to access the latest state. '
		)
	end

	local listener = {
		callback = callback,
		disconnected = false,
		connectTraceback = debug.traceback(),
		disconnectTraceback = nil
	}

	self._listeners = immutableAppend(self._listeners, listener)

	local function disconnect()
		if listener.disconnected then
			error((
				"Listener connected at: \n%s\n" ..
				"was already disconnected at: \n%s\n"
			):format(
				tostring(listener.connectTraceback),
				tostring(listener.disconnectTraceback)
			))
		end

		if self._store and self._store._isDispatching then
			error("You may not unsubscribe from a store listener while the reducer is executing.")
		end

		listener.disconnected = true
		listener.disconnectTraceback = debug.traceback()
		self._listeners = immutableRemoveValue(self._listeners, listener)
	end

	return {
		disconnect = disconnect
	}
end

function Signal:fire(...)
	for _, listener in ipairs(self._listeners) do
		if not listener.disconnected then
			listener.callback(...)
		end
	end
end

return Signal


Prompt: --[[Install Function]]

Response:
--

function install(asset, directory)
	if asset and directory then
		asset.Parent = directory
	else
		warn("Failed to install '"..dir.Name.."'; Specified asset to install or directory does not exist.")
	end
end


Prompt: --Made by Luckymaxer

Response:
Tool = script.Parent
Handle = Tool:WaitForChild("Handle")

Sounds = {}
for i, v in pairs(Handle:GetChildren()) do
	if v:IsA("Sound") then
		table.insert(Sounds, v)
	end
end

function Activated()
	if not Tool.Enabled then
		return
	end
	Tool.Enabled = false
	Sounds[math.random(1, #Sounds)]:Play()
	wait(1)
	Tool.Enabled = true
end

Tool.Activated:connect(Activated)


Prompt:
--										if human.Health <= 0 then
--											torso.Velocity = (torso.Position - position).unit * 10;
--											print("Dead");
--										end

Response:
										print("Took "..(100-(distance-radius)*(100/radius)).." Damage")
									end
								end


Prompt:
--[=[
	@return boolean
	Returns `true` if the property object is ready to be
	used. In other words, it has successfully gained
	connection to the server-side version and has synced
	in the initial value.

	```lua
	if clientRemoteProperty:IsReady() then
		local value = clientRemoteProperty:Get()
	end
	```
]=]

Response:
function ClientRemoteProperty:IsReady(): boolean
	return self._ready
end


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

Response:
local autoscaling	= false					--Estimates top speed

local UNITS	= {								--Click on speed to change units
											--First unit is default
	{
		units			= "MPH"				,
		scaling			= (10/12) * (60/88)	, -- 1 stud : 10 inches | ft/s to MPH
		maxSpeed		= 180				,
		spInc			= 20				, -- Increment between labelled notches
	},

	{
		units			= "KM/H"			,
		scaling			= (10/12) * 1.09728	, -- 1 stud : 10 inches | ft/s to KP/H
		maxSpeed		= 300				,
		spInc			= 20				, -- Increment between labelled notches
	},

	{
		units			= "SPS"				,
		scaling			= 1					, -- Roblox standard
		maxSpeed		= 330				,
		spInc			= 30				, -- Increment between labelled notches
	}
}


Prompt: --Precalculated paths

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


Prompt: --[[ END OF SERVICES ]]

Response:
local LocalPlayer = PlayersService.LocalPlayer
while LocalPlayer == nil do
	PlayersService.ChildAdded:wait()
	LocalPlayer = PlayersService.LocalPlayer
end

local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

local okShouldClipInGameChat, valueShouldClipInGameChat = pcall(function() return UserSettings():IsUserFeatureEnabled("UserShouldClipInGameChat") end)
local shouldClipInGameChat = okShouldClipInGameChat and valueShouldClipInGameChat

local success, UserShouldLocalizeGameChatBubble = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserShouldLocalizeGameChatBubble")
end)
local UserShouldLocalizeGameChatBubble = success and UserShouldLocalizeGameChatBubble


Prompt:
--[[
	Commands.DebugLoadstring = {
		Prefix = ":";
		Commands = {"debugloadstring";};
		Args = {"code";};
		Description = "DEBUG LOADSTRING";
		Hidden = true;
		NoFilter = true;
		AdminLevel = "Creators";
		Function = function(plr: Player, args: {string})
			--error("Disabled", 0)
			local ans = Remote.GetGui(plr, "YesNoPrompt", {
				Icon = server.MatIcons.Warning;
				Question = "Are you sure you want to load this script into the server env?";
				Title = "Adonis DebugLoadstring";
				Delay = 5;
			})
			if ans == "Yes" then
				local func,err = Core.Loadstring(args[1],GetEnv())
				if func then
					func()
				else
					logError("DEBUG",err)
					Functions.Hint(err,{plr})
				end
			end
		end
	};
--]]

Response:
	Logs:AddLog("Script", "Debug Module Loaded");
end;


Prompt: -- Helper methods:

Response:
local ignoreEmitterList = { Emitter }

local raycastFunctions = {
	[CollisionMode.None] = function(ray, ignoreCharacter)
		return workspace:FindPartOnRayWithIgnoreList(ray, ignoreCharacter and {Emitter, Players.LocalPlayer and Players.LocalPlayer.Character} or ignoreEmitterList)
	end;
	[CollisionMode.Blacklist] = function(ray)
		return workspace:FindPartOnRayWithIgnoreList(ray, collisionList)
	end;
	[CollisionMode.Whitelist] = function(ray)
		return workspace:FindPartOnRayWithWhitelist(ray, collisionList)
	end;
	[CollisionMode.Function] = function(ray)
		local destination = ray.Origin + ray.Direction
		-- draw multiple raycasts concatenated to each other until no hit / valid hit found
		while ray.Direction.magnitude > 0.001 do
			local part, pos, norm, mat = workspace:FindPartOnRayWithIgnoreList(ray, ignoreEmitterList)
			if not part or collisionFunc(part) then
				return part, pos, norm, mat
			end
			local start = pos + ray.Direction.Unit * 0.001
			ray = Ray.new(start, destination - start)
		end
	end;
}
local raycast = raycastFunctions[collisionMode]

local function connectLoop()

	local rand = Random.new()

	local inside = true					-- Whether camera is currently in a spot occluded from the sky
	local frame = RAIN_UPDATE_PERIOD	-- Frame counter, and force update cycle right now

	-- Update Emitter on RenderStepped since it needs to be synced to Camera
	table.insert(connections, RunService.RenderStepped:connect(function()

		-- Check if camera is outside or inside
		local part, position = raycast(Ray.new(workspace.CurrentCamera.CFrame.p, -rainDirection * RAIN_SCANHEIGHT), true)

		if (not currentCeiling or workspace.CurrentCamera.CFrame.p.y <= currentCeiling) and not part then

			-- Camera is outside and under ceiling

			if volumeTarget < 1 and not disabled then
				volumeTarget = 1
				TweenService:Create(Sound, TweenInfo.new(.5), {Volume = 1}):Play()
			end

			frame = RAIN_UPDATE_PERIOD

			local t = math.abs(workspace.CurrentCamera.CFrame.lookVector:Dot(rainDirection))

			local center = workspace.CurrentCamera.CFrame.p
			local right = workspace.CurrentCamera.CFrame.lookVector:Cross(-rainDirection)
			right = right.magnitude > 0.001 and right.unit or -rainDirection
			local forward = rainDirection:Cross(right).unit

			Emitter.Size = v3(
				RAIN_EMITTER_DIM_DEFAULT,
				RAIN_EMITTER_DIM_DEFAULT,
				RAIN_EMITTER_DIM_DEFAULT + (1 - t)*(RAIN_EMITTER_DIM_MAXFORWARD - RAIN_EMITTER_DIM_DEFAULT)
			)

			Emitter.CFrame =
				CFrame.new(
					center.x, center.y, center.z,
					right.x, -rainDirection.x, forward.x,
					right.y, -rainDirection.y, forward.y,
					right.z, -rainDirection.z, forward.z
				)
				+ (1 - t) * workspace.CurrentCamera.CFrame.lookVector * Emitter.Size.Z/3
				- t * rainDirection * RAIN_EMITTER_UP_MODIFIER

			Emitter.RainStraight.Enabled = true
			Emitter.RainTopDown.Enabled = true

			inside = false

		else

			-- Camera is inside / above ceiling

			Emitter.RainStraight.Enabled = false
			Emitter.RainTopDown.Enabled = false

			inside = true

		end

	end))

	-- Do the other effects on Stepped
	local signal = RunService:IsRunning() and RunService.Stepped or RunService.RenderStepped
	table.insert(connections, signal:connect(function()

		frame = frame + 1

		-- Only do some updates once every few frames
		if frame >= RAIN_UPDATE_PERIOD then

			-- Measure of how much camera is facing down (0-1)
			local t = math.abs(workspace.CurrentCamera.CFrame.lookVector:Dot(rainDirection))

			-- More looking down = see straight particles less and see top-down particles more
			local straightSequence = NumberSequence.new {
				NSK010;
				NumberSequenceKeypoint.new(RAIN_TRANSPARENCY_T1, (1 - t)*straightLowAlpha + t, 0);
				NumberSequenceKeypoint.new(RAIN_TRANSPARENCY_T2, (1 - t)*straightLowAlpha + t, 0);
				NSK110;
			}
			local topdownSequence = NumberSequence.new {
				NSK010;
				NumberSequenceKeypoint.new(RAIN_TRANSPARENCY_T1, t*topdownLowAlpha + (1 - t), 0);
				NumberSequenceKeypoint.new(RAIN_TRANSPARENCY_T2, t*topdownLowAlpha + (1 - t), 0);
				NSK110;
			}

			-- Find desired rotation for the straight rain particles
			local mapped = workspace.Camera.CFrame:inverse() * (workspace.Camera.CFrame.p - rainDirection)
			local straightRotation = NumberRange.new(math.deg(math.atan2(-mapped.x, mapped.y)))

			if inside then

				-- Update emitter properties
				for _,v in pairs(rainAttachments) do
					v.RainStraight.Transparency = straightSequence
					v.RainStraight.Rotation = straightRotation
					v.RainTopDown.Transparency = topdownSequence
				end

				if not disabled then

					-- Only do occluded volume check if not moving towards disabled state

					local volume = 0

					if (not currentCeiling or workspace.CurrentCamera.CFrame.p.y <= currentCeiling) then

						-- Check how far away camera is from a space open to the sky using volume scan grid

						local minDistance = RAIN_VOLUME_SCAN_RADIUS
						local rayDirection = -rainDirection * RAIN_SCANHEIGHT

						for i = 1, #volumeScanGrid do -- In order, so first hit is closest
							if not raycast(Ray.new(workspace.CurrentCamera.CFrame * volumeScanGrid[i], rayDirection), true) then
								minDistance = volumeScanGrid[i].magnitude
								break
							end
						end

						-- Volume is inversely proportionate to minimum distance
						volume = 1 - minDistance / RAIN_VOLUME_SCAN_RADIUS

					end

					if math.abs(volume - volumeTarget) > .01 then
						-- Value is sufficiently different from previous target, overwrite it
						volumeTarget = volume
						TweenService:Create(Sound, TweenInfo.new(1), {Volume = volumeTarget}):Play()
					end

				end

			else

				-- Update emitter properties
				Emitter.RainStraight.Transparency = straightSequence
				Emitter.RainStraight.Rotation = straightRotation
				Emitter.RainTopDown.Transparency = topdownSequence

			end

			-- Reset frame counter
			frame = 0

		end

		local center = workspace.CurrentCamera.CFrame.p
		local right = workspace.CurrentCamera.CFrame.lookVector:Cross(-rainDirection)
		right = right.magnitude > 0.001 and right.unit or -rainDirection
		local forward = rainDirection:Cross(right).unit
		local transform = CFrame.new(
			center.x, center.y, center.z,
			right.x, -rainDirection.x, forward.x,
			right.y, -rainDirection.y, forward.y,
			right.z, -rainDirection.z, forward.z
		)
		local rayDirection = rainDirection * RAIN_OCCLUDECHECK_SCAN_Y

		-- Splash and occlusion effects
		for i = 1, numSplashes do

			local splashAttachment = splashAttachments[i]
			local rainAttachment = rainAttachments[i]

			-- Sample random splash position
			local x = rand:NextNumber(RAIN_OCCLUDECHECK_OFFSET_XZ_MIN, RAIN_OCCLUDECHECK_OFFSET_XZ_MAX)
			local z = rand:NextNumber(RAIN_OCCLUDECHECK_OFFSET_XZ_MIN, RAIN_OCCLUDECHECK_OFFSET_XZ_MAX)
			local part, position, normal = raycast(Ray.new(transform * v3(x, RAIN_OCCLUDECHECK_OFFSET_Y, z), rayDirection))

			if part then

				-- Draw a splash at hit
				splashAttachment.Position = position + normal * RAIN_SPLASH_CORRECTION_Y
				splashAttachment.RainSplash:Emit(1)

				if inside then

					-- Draw occlusion rain particles a little bit above the splash position
					local corrected = position - rainDirection * RAIN_SPLASH_STRAIGHT_OFFSET_Y
					if currentCeiling and corrected.Y > currentCeiling and rainDirection.Y < 0 then
						corrected = corrected + rainDirection * (currentCeiling - corrected.Y) / rainDirection.Y
					end
					rainAttachment.CFrame = transform - transform.p + corrected
					rainAttachment.RainStraight:Emit(intensityOccludedRain)
					rainAttachment.RainTopDown:Emit(intensityOccludedRain)

				end

			elseif inside then

				-- Draw occlusion rain particles on the XZ-position at around the camera's height
				local corrected = transform * v3(x, rand:NextNumber(RAIN_NOSPLASH_STRAIGHT_OFFSET_Y_MIN, RAIN_NOSPLASH_STRAIGHT_OFFSET_Y_MAX), z)
				if currentCeiling and corrected.Y > currentCeiling and rainDirection.Y < 0 then
					corrected = corrected + rainDirection * (currentCeiling - corrected.Y) / rainDirection.Y
				end
				rainAttachment.CFrame = transform - transform.p + corrected
				rainAttachment.RainStraight:Emit(intensityOccludedRain)
				rainAttachment.RainTopDown:Emit(intensityOccludedRain)

			end

		end

	end))

end

local function disconnectLoop()
	-- If present, disconnect all RunService connections
	if #connections > 0 then
		for _,v in pairs(connections) do
			v:disconnect()
		end
		connections = {}
	end
end

local function disableSound(tweenInfo)

	-- Tween the rain sound to be mute over a given easing function
	volumeTarget = 0
	local tween = TweenService:Create(Sound, tweenInfo, {Volume = 0})
	tween.Completed:connect(function(state)
		if state == Enum.PlaybackState.Completed then
			Sound:Stop()
		end
		tween:Destroy()
	end)
	tween:Play()

end

local function disable()

	disconnectLoop()

	-- Hide Emitter
	Emitter.RainStraight.Enabled = false
	Emitter.RainTopDown.Enabled = false
	Emitter.Size = MIN_SIZE

	-- Disable sound now if not tweened into disabled state beforehand
	if not disabled then
		disableSound(TweenInfo.new(RAIN_SOUND_FADEOUT_TIME))
	end

end


Prompt:
----[RETURNS THE PREVIEW COLOR FOR A GIVEN COLOR PICKER]----
--[[Use these 2 lines to get the Color3 Value
local ColorPickerModule = require(script.Parent.ColorPicker)
local PreviewColor3 = ColorPickerModule.ReturnPreviewColor("DropShadow")
]]

Response:
function ColorPickerModule.ReturnPreviewColor(ColorPicker)
	for i = 1, #FeaturesWithColorPickers do
		if FeaturesWithColorPickers[i] == ColorPicker then
			return PreviewColor[i].BackgroundColor3
		end
	end
end

return ColorPickerModule


Prompt:
--[[
	Utility function to log a Fusion-specific warning.
]]

Response:
local Package = script.Parent.Parent
local messages = require(Package.Logging.messages)

local function logWarn(template, ...)
	local formatString = messages[template]

	if formatString == nil then
		template = "unknownMessage"
		formatString = messages[template]
	end

	warn(string.format("[Fusion] " .. formatString .. "\n(ID: " .. template .. ")", ...))
end

return logWarn


Prompt:
--[=[
	Destroy the keyboard input capturer.
]=]

Response:
function Keyboard:Destroy()
	self._trove:Destroy()
end

return Keyboard


Prompt: --Hover and select home buttons

Response:
local hovering = nil
for a,b in pairs(pages.Home:GetChildren()) do
	if b:IsA("TextButton") then
		local fade = b.Fade
		local function pressButton()
			if guiDe then
				guiDe = false
				local pageIn = pages:FindFirstChild(b.Name)
				if pageIn then
					tweenPages(UDim2.new(-1,0,0,0), pageIn)
				end
				guiDe = true
			end
		end
		if main.device == "Mobile" then
			b.MouseButton1Up:Connect(function()
				pressButton()
			end)
		else
			b.MouseButton1Down:Connect(function()
				pressButton()
			end)
		end
		b.InputBegan:Connect(function(input)
			if not b.RankBlocker.Visible then
				main.tweenService:Create(fade, TweenInfo.new(0.2), {BackgroundTransparency = 0.8}):Play()
			end
		end)
		b.InputEnded:Connect(function(input)
			main.tweenService:Create(fade, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play()
		end)
	end
end


Prompt: --Front

Response:
local axle2 = Instance.new("Part", bike.FrontSection)
axle2.Anchored = true
axle2.CanCollide = false
if _Tune.AxlesVisible or _Tune.Debug then axle2.Transparency = .75 else axle2.Transparency = 1 end
axle2.Name = "Axle"
axle2.Position = fWheel.Position
axle2.Orientation = fWheel.Orientation
axle2.Size = Vector3.new(_Tune.AxleSize,_Tune.AxleSize,_Tune.AxleSize)
axle2.CustomPhysicalProperties = PhysicalProperties.new(_Tune.AxleDensity,0,0,100,100)

local fgyro = Instance.new("BodyGyro",axle2)
fgyro.Name="Stabilizer"
fgyro.MaxTorque = Vector3.new(1,0,1)
fgyro.P=0
fgyro.D=_Tune.FGyroDamp


Prompt:
--[=[
	Cleans up all objects in the Janitor. This is
	similar to calling `Remove` on each object
	within the Janitor.
]=]

Response:
function Janitor:Clean()
	for _,obj in ipairs(self._objects) do
		self:_cleanupObject(obj[1], obj[2])
	end
	table.clear(self._objects)
end

function Janitor:_cleanupObject(object, cleanupMethod)
	if cleanupMethod == FN_MARKER then
		object()
	else
		object[cleanupMethod](object)
	end
end


Prompt: --[[Transmission]]

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

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

	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]
	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)

	--Gear Ratios
	Tune.FinalDrive		= 3.23			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.30		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		4.71		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		3.14		,
		--[[ 3 ]]		2.11		,
		--[[ 4 ]]		1.67		,
		--[[ 5 ]]		1.29		,
		--[[ 6 ]]		1.00		,
		--[[ 7 ]]		0.84		,
		--[[ 8 ]]		0.67		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)


Prompt: -- Nominal distance, set by dollying in and out with the mouse wheel or equivalent, not measured distance

Response:
function VRBaseCamera:GetCameraToSubjectDistance(): number
	return self.currentSubjectDistance
end


Prompt: -- Piggy "Stun" Script

Response:
local debounce = false

local Gamemode = game.ReplicatedStorage.Mode

game.ReplicatedStorage.Stun.OnServerEvent:Connect(function(plr,target)
	if target then
		if target:FindFirstAncestorOfClass("Model") then
			-- Check to see if clicked model is a real player
			local piggy = target:FindFirstAncestorOfClass("Model")

			if piggy then
				if piggy:FindFirstChild("Bear") then -- Check to see if it is actually Piggy or just another contestant
					if not debounce then

						local stunTag = Instance.new("BoolValue")
						stunTag.Name = "Stunned"
						stunTag.Parent = piggy

						game.ReplicatedStorage.Announcement:FireAllClients("Piggy is gone for 20 seconds")
						piggy.Torso.Script.Disabled = true
						if piggy:FindFirstChild("UpperTorso") then
							local anim = piggy:FindFirstChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.StunnedR15)
							debounce = true
							-- Freeze piggy by setting walkspeed to 0
							piggy.Humanoid.WalkSpeed = 0
							piggy.Humanoid.JumpPower = 0
							anim:Play()
							wait(20) -- wait 20 sec before enabling walkspeed again to 14 and then setting debounce to false so
							-- that the piggy can be stunned again
							anim:Stop()
							piggy.Humanoid.WalkSpeed = 14
							piggy.Humanoid.JumpPower = 20
							piggy.Torso.Script.Disabled = false
							debounce = false
						else
							local anim = piggy:FindFirstChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.Stunned)
							debounce = true
							-- Freeze piggy by setting walkspeed to 0
							piggy.HumanoidRootPart.Anchored = true
							piggy.Animate.Disabled = true
							piggy.Humanoid.WalkSpeed = 0
							piggy.Humanoid.JumpPower = 0
							anim:Play()
							wait(20) -- wait 20 sec before enabling walkspeed again to 14 and then setting debounce to false so
							-- that the piggy can be stunned again
							piggy.HumanoidRootPart.Anchored = false
							piggy.Animate.Disabled = false
							anim:Stop()
							piggy.Humanoid.WalkSpeed = 14
							piggy.Humanoid.JumpPower = 20
							piggy.Torso.Script.Disabled = false
							debounce = false
						end
						-- Enable debounce so stun effect cannot be applied again for 20 seconds

						piggy:FindFirstChild("Stunned"):Destroy() -- Delete stunned tag so we can tell from other scripts that the
						-- piggy is no longer stunned.
					end
				end
			end
		end
	end
end)


Prompt: -- Libraries

Response:
local Libraries = Tool:WaitForChild 'Libraries'
local Signal = require(Libraries:WaitForChild 'Signal')
local Maid = require(Libraries:WaitForChild 'Maid')


Prompt: ------//Patrol Animations

Response:
self.RightPatrol = CFrame.new(-1, 1.1, -0.5) * CFrame.Angles(math.rad(-30), math.rad(0), math.rad(0));
self.LeftPatrol = CFrame.new(1,1,-0.9) * CFrame.Angles(math.rad(-30),math.rad(35),math.rad(-25));

self.RightElbowPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
self.LeftElbowPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));

self.RightWristPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
self.LeftWristPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));


Prompt: -- Call this from a function bound to Renderstep with Input Priority

Response:
function VehicleController:Update(moveVector, cameraRelative, usingGamepad)
	if self.vehicleSeat then
		if cameraRelative then
			-- This is the default steering mode
			moveVector = moveVector + Vector3.new(self.steer, 0, self.throttle)
			if usingGamepad and onlyTriggersForThrottle and useTriggersForThrottle then
				self.vehicleSeat.ThrottleFloat = -self.throttle
			else
				self.vehicleSeat.ThrottleFloat = -moveVector.Z
			end
			self.vehicleSeat.SteerFloat = moveVector.X

			return moveVector, true
		else
			-- This is the path following mode
			local localMoveVector = self.vehicleSeat.Occupant.RootPart.CFrame:VectorToObjectSpace(moveVector)

			self.vehicleSeat.ThrottleFloat = self:ComputeThrottle(localMoveVector)
			self.vehicleSeat.SteerFloat = self:ComputeSteer(localMoveVector)

			return ZERO_VECTOR3, true
		end
	end
	return moveVector, false
end

function VehicleController:ComputeThrottle(localMoveVector)
	if localMoveVector ~= ZERO_VECTOR3 then
		local throttle = -localMoveVector.Z
		return throttle
	else
		return 0.0
	end
end

function VehicleController:ComputeSteer(localMoveVector)
	if localMoveVector ~= ZERO_VECTOR3 then
		local steerAngle = -math.atan2(-localMoveVector.x, -localMoveVector.z) * (180 / math.pi)
		return steerAngle / self.autoPilot.MaxSteeringAngle
	else
		return 0.0
	end
end

function VehicleController:SetupAutoPilot()
	-- Setup default
	self.autoPilot.MaxSpeed = self.vehicleSeat.MaxSpeed
	self.autoPilot.MaxSteeringAngle = AUTO_PILOT_DEFAULT_MAX_STEERING_ANGLE

	-- VehicleSeat should have a MaxSteeringAngle as well.
	-- Or we could look for a child "AutoPilotConfigModule" to find these values
	-- Or allow developer to set them through the API as like the CLickToMove customization API
end

return VehicleController


Prompt:
--[[                                           <<DO NOT DELETE THIS MODULE>>
   ___      _______                _
  / _ |____/ ___/ /  ___ ____ ___ (_)__
 / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
/_/ |_|   \___/_//_/\_,_/___/___/_/___/	Build 6.43S
				SecondLogic @ Inspare

>>Manual

Basically...everything you can and would ever want to touch is in the tuning module. EVERYTHING

Torque Curve Tune Visualizer:
https://www.desmos.com/calculator/2uo3hqwdhf

Basic Tips:
--Installation
	>Everything is built-in (assembly, welding, suspension, gyros), so all you have to worry about is placing the wheels and the seat.
	>Body parts go in the "Body" section.
	>Wheel parts such as 3D rims and brake disks go in the "Parts" section of the wheel.
	>Suspension-Anchored parts such as suspension wishbones and linkages go in the "SuspensionFixed" section.
	>Axle-Anchored parts such as calipers go in the "WheelFixed" section.
	>You can add or remove wheels. To add a wheel, simply copy one of the wheels and make sure it's named one of the following: "F","FL","FR","R","RL","RR".
	>Wheels need to be aligned with the axes of the seat. Don't rotate the seat relative to the wheels as it may cause welding problems.
	>All wheel offsets are applied in the tuning module. Do NOT manually add offset to the wheels. Steering axis is centered on the wheel part by default.
	>Seat offset can be adjusted in the "MiscWeld" module under "Initialize".
	>Use the "Misc" section for scripted/moving parts and apply welding using the "MiscWeld" module under "Initialize".

--Tuning
	>Reduce weight(density) if setup is lacking torque. Increase density if setup has too much torque.
	>Add downforce manually if setup is lacking grip or use a downforce plugin.
	>Dialing in ratios used in real cars is an easy way to have a realisticly tuned transmission.
	>Modifying the "Drive" script may affect the integrity of the system.
	>Custom scripts should be put in the "Plugins" folder. Using plugins made by other users is encouraged.
	>When writing custom plugins, you can reference the values within the "Values" folder inside the A-Chassis Interface.
	>It is a good practice to make plugins compatible with any setup and providing a usage manual if a plugin is released.
	>You can remove/change the default plugins that come with the kit. The drive system will still work perfectly with or without them.

--Updates
	>To update, simply just replace the entire "A-Chassis Tune" module of an existing car with a newer version of the module.
	>You may want to copy the tune values and plugins from the old module, but dont simply overwrite the tune module as new values may be added.

>>Changelog
	[5/23/17 : Build 6.43S] - STUFF
		[Added Tune Values]
		-Added WBVisible to set weight brick visibility

		[Independent Camera Handling]
		-Separated camera handling from Drive script
		-Mouse camera is now handled by a plugin
		-Custom camera plugin support is now easier

		[Stock Plugins Update]
		-Added Dynamic Friction as a stock plugin
		-Dynamic friction can be tuned within the Simulated script
		-Updated default sound plugin
		-Added mouse-steer camera plugin

		[Code Fixes]
		-Fixed missing operation within torque curve
		-Slight optimizations during runtime

	[5/20/17 : Build 6.42S] - ABS and PGS Standardization

		[Added ABS]
		-Modulates brakes when locking
		-Added threshold value for slip allowance
		-Added control toggles for ABS
		-Added ABS indicator and control mapping to stock UI

		[Split Density Tuning for PGS and Legacy]
		-Added standardized weight scaling values to tune
		-Default weight tuning set to 1 cubic stud : 50 lbs for PGS
		-Default weight tuning set to 1 cubic stud : 10 lbs for Legacy
		-Split front and rear density to PGS and Legacy
		-Split brake force tuning to PGS and Legacy

		[Added Tune Values]
		-TCSEnabled: Sets whether or not the car will have TCS
		-ABSEnabled: Sets whether or not the car will have ABS
		-LoadDelay: Sets a delay time before initializing car

		[Bug Fix: Axle Size Initialization]
		-Car applies proper axle size
		-Added AxleDensity value which sets axle density
		-Fixed miscelaneous wheel part welding

		[Added Changable Stock Gauge Units]
		-Added units system for stock gauges
		-Added default units: MPH [1 stud : 10 in], KP/H [1 stud : 10 in], SPS
		-Custom units can be added or removed
		-Click on speed to change between units
		-Moved Controls button to middle for better visibility

		[Code Documentation]
		-Extensive documentation and commenting within scripts for better readability
		-Improved warning message for oversized mass condition

	[5/4/17 : Build 6.41S] - Standardized Weight

		[Added automatic weight system]
		-Added tune values for car weight, center of gravity, and wheel density
		-Weight standard: 100 lbs = 1 cubic stud mass
		-Applies weight at initialization

		[Scaled Down Power Delivery]
		-Horsepower output now at 1/10 because of lighter weight standard
		-Added FDMult value in transmission for gear ratio scaling without having to change Final Drive (useful for low HP tunes)

		[Optimized value for Anchor Offset]
		-Changed "SusOffset" to "Anchor Offset"
		-New anchor offset is now based off of wishbone length and wishbone angle.
		-Anchor offset now labelled for forward, lateral, and vertical offsets.

		[Split some tune values to F/R]
		-Suspension values for front and rear are now independently tunable.
		-Front and rear brakes can be tuned independently.

		[Tune Module Housekeeping]
		-Rearranged and documented several of the values within the tune module.
		-Removed GyroP and GyroMaxTorque for simplicity. Dampening values are still present.
		-Changed some decimal values to percent values

	[1/2/17 : Build 6.40S] - Suspension
		"S" Build number identifies suspension build

		[Added suspension system for PGS Physics Solver]
		-Suspension uses ROBLOX constraints and is automatically generated with the chassis
		-Added tune values for suspension
		-Temporarily removed caster tuning

		[Steering Fix]
		-Added tune value 'ReturnSpeed' which determines how fast wheels return to default orientation

		[New Torque Curve Equation]
		-New equation gives more control over the shape of the torque curve
		-Engine values have been replaced with the new equation's variables
		-Added link to desmos graph for the torque curve visualization

	[10/31/16 : Build 6.33] - Semi-Automatic

		[Added semi-automatic transmission mode]
		-'TransModes' now accepts "Semi" value for semi-automatic.
		-Updated AC6_Stock_Gauges to include semi-automatic mode.

		[Fixed disengaging p-brake]
		-P-Brake now remains engaged if player gets into then vehicle.

		[Fixed FE Support for AC6_Stock_Sound]
		-Sounds should now work properly with Filtering Enabled.

	[8/5/16 : Build 6.32] - Differential System

		[Implemented differential system]
		-Differential controls torque distibution between wheels that are spinning at different rates
		-Added tune values 'FDiffSlipThres', 'FDiffLockThres', 'RDiffSlipThres', 'RDiffLockThres', 'CDiffSlipThres', and 'CDiffLockThres'.
		-'DiffSlipThres' determine the threshold of the speed difference between the wheels. Full lock applies at max threshold.
		-A lower slip threshold value will make the diff more aggressive.
		-'DiffLockThres' determines the bias of the differential.
		-A lock threshold value more than 50 puts more torque into the slipping wheel (moving towards an open diff).
		-A lock threshold value less than 50 puts more torque into the grounded wheel (moving towards a locked diff).

		[Fixed multiple wheel support]
		-The chassis can now use more than just the default 4 set of wheels. Just copy an existing wheel and place accordingly.
		-Differential works with auxiliary wheels.

	[7/13/16 : Build 6.31] - Peripheral Settings

		[Added peripheral adjustment values]
		-Moved controller and mouse deadzone values to the "Controls" section of the tune.
		-Split controller deadzone into left and right input.
		-Moved mouse control width to "Conrols" secton. This value now operates based off of % of screed width.

		[Updated stock Controls Module]
		-Added sliders for controller and mouse deadzone values.
		-Added slider for mouse control width.

	[6/15/16 : Build 6.3] - Motercisly

		[Better motorcycle system support]
		-Added wheel configurations "F" and "R" for single wheel settup.
		-"F" and "R" wheels will have axle parts on both sides for better balance.
		-These wheel configurations will ignore outor rotation value and will rotated based off of the inner rotation value only.
		-Camber and Toe cannot be applied to these wheel configurations. Caster will still be applied as normal.

		[Bug fixes]
		-Caster now applies after wheel part rotations so wheel parts dont rotate with caster.
		-Fixed Clutch re-engaging automatically when shifting out of neutral.

	[6/4/16 : Build 6.21] - AC6 Official Public Kit Release

		[Plugin FilteringEnabled compatability made easier]
		-System now detects if there is a RemoteEvent or RemoteFunction inside a plugin. These will be parented directly under the car.
		-The RemoteEvent/RemoteFunction needs to be a direct child of the plugin for it to be detected.
		-Scripts inside the RemoteEvent/RemoteFunction should be disabled. They will be enabled after initialization.
		-Be careful as this system is suceptible to name collisions. Name your RemoteEvents/RemoteFunctions uniquely.
		-Stock AC6 Sound plugin is now FE compatible.

		[Controls Panel now a plugin instead of integrated]
		-Separated controls panel from Drive script. The controls panel is now a plugin.
		-The "Controls" folder appears inside the interface on Drive startup. Use this folder to reference button mapping values for custom controls plugins.
		-"ControlsOpen" value added. This is a safety toggle when changing control values. This value can be manipulated by plugins.

		[New tune values]
		-Added 'AutoFlip' tune value. This determines if the car automatically flips itself over when upside down.
		-Added 'StAxisOffset' tune value. This offsets the center of the steering axis. Positive value = offset outward.
		-Added 'SteerD', 'SteerMaxTorque', and 'SteerP' values which set the steering axle gyro properties.

		[MiscWeld streamlining]
		-Added "Misc" section to the main sections. This should contain scripted/moving parts.
		-Parts in this section are NOT WELDED AUTOMATICALLY. Use the "MiscWeld" module to weld these parts. The "Misc" section is pre-referenced as 'misc'.

		[Bug fixes]
		-Fixed flip gyro not resetting when gyro is active and driver leaves car.
		-Fixed issue with switching transmission modes.
--]]

Response: return "6.43S"


Prompt: --[[Weight and CG]]

Response:
	Tune.Weight			=3100	-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		14		}
	Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
	Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
	Tune.WBVisible		= false		-- Makes the weight brick visible

	--Unsprung Weight
	Tune.FWheelDensity	= .1		-- Front Wheel Density
	Tune.RWheelDensity	= .1		-- Rear Wheel Density
	Tune.FWLgcyDensity	= 1			-- Front Wheel Density [PGS OFF]
	Tune.RWLgcyDensity	= 1			-- Rear Wheel Density [PGS OFF]

	Tune.AxleSize		= 2			-- Size of structural members (larger = more stable/carry more weight)
	Tune.AxleDensity	= .1		-- Density of structural members


Prompt:
----------------------------------
------------FUNCTIONS-------------
----------------------------------

Response:
local TweenService = game:GetService("TweenService")
function Tween(obj,Goal,Time,...)
    local TwInfo = TweenInfo.new(Time,...)
    local twn = TweenService:Create(obj, TwInfo, Goal)
    twn:Play()
    twn.Completed:wait()
end

function UnDigify(digit)
	if digit < 1 or digit > 61 then
		return ""
	elseif digit == 1 then
		return "1"
	elseif digit == 2 then
		return "!"
	elseif digit == 3 then
		return "2"
	elseif digit == 4 then
		return "@"
	elseif digit == 5 then
		return "3"
	elseif digit == 6 then
		return "4"
	elseif digit == 7 then
		return "$"
	elseif digit == 8 then
		return "5"
	elseif digit == 9 then
		return "%"
	elseif digit == 10 then
		return "6"
	elseif digit == 11 then
		return "^"
	elseif digit == 12 then
		return "7"
	elseif digit == 13 then
		return "8"
	elseif digit == 14 then
		return "*"
	elseif digit == 15 then
		return "9"
	elseif digit == 16 then
		return "("
	elseif digit == 17 then
		return "0"
	elseif digit == 18 then
		return "q"
	elseif digit == 19 then
		return "Q"
	elseif digit == 20 then
		return "w"
	elseif digit == 21 then
		return "W"
	elseif digit == 22 then
		return "e"
	elseif digit == 23 then
		return "E"
	elseif digit == 24 then
		return "r"
	elseif digit == 25 then
		return "t"
	elseif digit == 26 then
		return "T"
	elseif digit == 27 then
		return "y"
	elseif digit == 28 then
		return "Y"
	elseif digit == 29 then
		return "u"
	elseif digit == 30 then
		return "i"
	elseif digit == 31 then
		return "I"
	elseif digit == 32 then
		return "o"
	elseif digit == 33 then
		return "O"
	elseif digit == 34 then
		return "p"
	elseif digit == 35 then
		return "P"
	elseif digit == 36 then
		return "a"
	elseif digit == 37 then
		return "s"
	elseif digit == 38 then
		return "S"
	elseif digit == 39 then
		return "d"
	elseif digit == 40 then
		return "D"
	elseif digit == 41 then
		return "f"
	elseif digit == 42 then
		return "g"
	elseif digit == 43 then
		return "G"
	elseif digit == 44 then
		return "h"
	elseif digit == 45 then
		return "H"
	elseif digit == 46 then
		return "j"
	elseif digit == 47 then
		return "J"
	elseif digit == 48 then
		return "k"
	elseif digit == 49 then
		return "l"
	elseif digit == 50 then
		return "L"
	elseif digit == 51 then
		return "z"
	elseif digit == 52 then
		return "Z"
	elseif digit == 53 then
		return "x"
	elseif digit == 54 then
		return "c"
	elseif digit == 55 then
		return "C"
	elseif digit == 56 then
		return "v"
	elseif digit == 57 then
		return "V"
	elseif digit == 58 then
		return "b"
	elseif digit == 59 then
		return "B"
	elseif digit == 60 then
		return "n"
	elseif digit == 61 then
		return "m"
  	else
    	return "?"
	end
end
function IsBlack(note)
	if note%12 == 2 or note%12 == 4 or note%12 == 7 or note%12 == 9 or note%12 == 11 then
		return true
	end
end

function Startup()
	blocker.Transparency = .9
	blocker.CanCollide = true
	local Display = Important.Display
	local Properties = {}
	Properties.Color = Color3.fromRGB(230, 230, 230)
	Tween(Display,Properties,1,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	Properties = {}
	Properties.Color = Color3.fromRGB(103, 130, 147)
	Tween(Display,Properties,.5,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	Properties = {}
	Properties.Transparency = 0
	for i,v in pairs(SynthesiaKeys) do
		coroutine.resume(coroutine.create(Tween),v,Properties,.5,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	end
	Properties = {}
	return
end

function Shutdown()
	blocker.Transparency = 1
	blocker.CanCollide = false
	local Display = Important.Display
	local Properties = {}
	Properties.Transparency = 1
	for i,v in pairs(SynthesiaKeys) do
		coroutine.resume(coroutine.create(Tween),v,Properties,.4,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	end
	Properties = {}
	Properties.Color = Color3.fromRGB(88, 88, 88)
	Tween(Display,Properties,.4,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	Properties = {}
	return
end

function SynthesiaSend(note1)
	local Properties = {}
	local Sending
	local Key
	if IsBlack(note1) then
		Sending = Piano.Case.BlackModel:Clone()
	else
		Sending = Piano.Case.WhiteModel:Clone()
	end
	Sending.Transparency = 0
	Key = Piano.Keys.Keys:FindFirstChild(note1)
	Sending.Position = Key.Position
	Sending.Orientation = Key.Orientation
	Sending.Parent = Piano.Keys
	Properties.Position = Sending.Position + Vector3.new(0,4.9,0)
	Tween(Sending,Properties,.7,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
	Properties = {}
	Sending:Destroy()
	return
end

function HighlightPianoKey(note1,transpose)
	if not Settings.KeyAesthetics then return end
	local octave = math.ceil(note1/12)
	local note2 = (note1 - 1)%12 + 1
	local KeyboardKeys = Important.KeyboardKeys

	coroutine.resume(coroutine.create(SynthesiaSend),note1)

	local key = UnDigify(note1)
	if not string.match(key,"%a") and not string.match(key,"%d") then
		if key == "!" then
			key = "1"
		elseif key == "@" then
			key = "2"
		elseif key == "$" then
			key = "4"
		elseif key == "%" then
			key = "5"
		elseif key == "^" then
			key = "6"
		elseif key == "*" then
			key = "8"
		elseif key == "(" then
			key = "9"
		end
	elseif string.match(key,"%a") then
		key = string.upper(key)
	end
	if KeyboardKeys:FindFirstChild(key) then
		key = KeyboardKeys:FindFirstChild(key)
		local Properties = {}
		if IsBlack(note1) then
			Properties.Color = Color3.fromRGB(170, 243, 136)
			Tween(key,Properties,.15,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
			Properties = {}
		else
			Properties.Color = Color3.fromRGB(131, 238, 243)
			Tween(key,Properties,.15,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
			Properties = {}

		end
		Properties.Color = Color3.fromRGB(237, 234, 234) --goes back to white
		Tween(key,Properties,.15,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false)
		Properties = {}
	end
	return
end


Prompt:
--[=[
	Calls each Object's `MethodName` (or calls the Object if `MethodName == true`) and removes them from the Janitor. Also clears the namespace.
	This function is also called when you call a Janitor Object (so it can be used as a destructor callback).

	```lua
	Obliterator:Cleanup() -- Valid.
	Obliterator() -- Also valid.
	```

	```ts
	Obliterator.Cleanup()
	```
]=]

Response:
function Janitor:Cleanup()
	if not self.CurrentlyCleaning then
		self.CurrentlyCleaning = nil
		for Object, MethodName in pairs(self) do
			if Object == IndicesReference then
				continue
			end

			if MethodName == true then
				Object()
			else
				local ObjectMethod = Object[MethodName]
				if ObjectMethod then
					ObjectMethod(Object)
				end
			end

			self[Object] = nil
		end

		local This = self[IndicesReference]
		if This then
			table.clear(This)
			self[IndicesReference] = {}
		end

		self.CurrentlyCleaning = false
	end
end


Response:
while true do
	script.Parent.Color = Color3.new(255/255,0/255,0/255)
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(255/255,i/255,0/255)
	end
	for i = 255,0,-10 do
		wait()
		script.Parent.Color = Color3.new(i/255,255/255,0/255)
	end
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(0/255,255/255,i/255)
	end
	for i = 255,0,-10 do
		wait()
		script.Parent.Color = Color3.new(0/255,i/255,255/255)
	end
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(i/255,0/255,255/255)
	end
	for i = 255,0,-10 do
		wait()
		script.Parent.Color = Color3.new(255/255,0/255,i/255)
	end
	 end


Prompt:
------------------------------------------------------------------------
-- stuff

Response:
do
	script.Parent.Equipped:connect(function()
		if player == nil then
			player = game.Players:GetPlayerFromCharacter(script.Parent.Parent)
		end
		if character == nil or character.Parent == nil then
			character = script.Parent.Parent
			humanoid = character.Humanoid
				isR15 = humanoid.RigType == Enum.HumanoidRigType.R15
			rightHand = isR15 and character:WaitForChild("RightHand") or character:WaitForChild("Right Arm")
		end
		local getWeld = rightHand:WaitForChild("RightGrip")
		local motor = Instance.new("Motor6D")
		motor.Name = motorName
		motor.Part0 = getWeld.Part0
		motor.Part1 = getWeld.Part1
		--motor.C0 = getWeld.C0
		--motor.C1 = getWeld.C1

		getWeld:Destroy()
		motor.Parent = rightHand
	end)
end


Prompt: -- declarations

Response:
local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("NPC")
local regening = false


Prompt:
------------------------------------------------------------------------
-- initial parsing for a for loop, calls fornum() or forlist()
-- * used in statements()
------------------------------------------------------------------------

Response:
function luaY:forstat(ls, line)
  -- forstat -> FOR (fornum | forlist) END
  local fs = ls.fs
  local bl = {}  -- BlockCnt
  self:enterblock(fs, bl, true)  -- scope for loop and control variables
  luaX:next(ls)  -- skip `for'
  local varname = self:str_checkname(ls)  -- first variable name
  local c = ls.t.token
  if c == "=" then
    self:fornum(ls, varname, line)
  elseif c == "," or c == "TK_IN" then
    self:forlist(ls, varname)
  else
    luaX:syntaxerror(ls, self:LUA_QL("=").." or "..self:LUA_QL("in").." expected")
  end
  self:check_match(ls, "TK_END", "TK_FOR", line)
  self:leaveblock(fs)  -- loop scope (`break' jumps to this point)
end


Response:
end
else
print("sh")
end
else
print("arms")
end
end
function Key(key)
if key then
key = string.lower(key)
if (key=="v") then
if on == 1 then
on = 0
elseif on == 0 then
on = 1
end
Crouch(on)
end
end
end
function Equip(mouse)
mouse.KeyDown:connect(Key)
end
script.Parent.Equipped:connect(Equip)


Prompt:
--[[
	@param 	Path		Path			The Path-object we want to visualize
	@return	Model		DrawnPath		Returns the model containing the drawn path
--]]

Response:
function Pathfinder:DrawPath(Path)
	assert(Path and Path.Status == Enum.PathStatus.Success, "Pathfinder:DrawPath(Path) requires a valid Path!")
	self:DestroyDrawnPath()

	-- Generate new path visuals
	local container = self._DrawnPath or Instance.new("Model")
	container.Name = "Pathfinder_Path"
	for index, waypoint in pairs(Path:GetWaypoints()) do
		local p = Instance.new("Part")
		p.Name = string.format("Waypoint_%d", index)
		p.Anchored = true
		p.CanCollide = false
		p.Size = Vector3.new(1,1,1)
		p.CFrame = CFrame.new(waypoint.Position)
		p.BrickColor = waypoint.Action == Enum.PathWaypointAction.Jump and BrickColor.Blue() or BrickColor.Gray()
		p.Parent = container
	end
	container.Parent = workspace
	self._DrawnPath = container
	return container
end

function Pathfinder:DestroyDrawnPath()
	if self._DrawnPath then self._DrawnPath:ClearAllChildren() end
end


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

Response:
local SFX = {}

function SFX.Play(...)
	local args = {...}

	-- for compatibility, the sound is still played, just at zero volume
	if _L.PlayerSettings.GetSetting("SFX") == "Disabled" then
		args[4] = 0
	end

	return _L.Audio.Play(unpack(args))
end

return SFX


Prompt: --// [[ INTRO SETTINGS HOVER ]] \\--

Response:
IntroGui.ButtonFrame.SettingButton.MouseEnter:Connect(function()
	IntroGui.ButtonFrame.SettingButton.GreenDot.Visible = true
end)
IntroGui.ButtonFrame.SettingButton.MouseLeave:Connect(function()
	IntroGui.ButtonFrame.SettingButton.GreenDot.Visible = false
end)


Prompt: ---Basic Variables

Response:
local player=game.Players.LocalPlayer
local mouse=player:GetMouse()
local car=script.Parent.Car.Value
local run=game:GetService("RunService")
local Binded={}
local GMode=0


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

Response:
Health_Bar = false;
Player_List = false;
Tool_Bar = false;
Chat = false;
if Health_Bar == true then
	game.StarterGui:SetCoreGuiEnabled(1, true);
elseif Health_Bar == false then
	game.StarterGui:SetCoreGuiEnabled(1, false);
end;
if Player_List == true then
	game.StarterGui:SetCoreGuiEnabled(0, true);
elseif Player_List == false then
	game.StarterGui:SetCoreGuiEnabled(0, false);
end;
if Tool_Bar == true then
	game.StarterGui:SetCoreGuiEnabled(2, true);
elseif Tool_Bar == false then
	game.StarterGui:SetCoreGuiEnabled(2, false);
end;
if Chat == true then
	game.StarterGui:SetCoreGuiEnabled(3, true);
	return;
end;
if Chat == false then
	game.StarterGui:SetCoreGuiEnabled(3, false);
end;


Prompt: --SynapseX Decompiler

Response:
local Opened = false
script.Parent.Activated:Connect(function()
	if not Opened then
		Opened = true
		script.Parent.Parent:TweenPosition(UDim2.new(0, 0, 0.65, 0), "Out", "Quad", 1, true)
	else
		Opened = false
		script.Parent.Parent:TweenPosition(UDim2.new(-0.195, 0, 0.65, 0), "Out", "Quad", 1, true)
	end
end)


Prompt: --this garbage script was made by falling, go ahead toad, yell at me for not putting it in the main script. Hell, idk how i even do that... im a builder, okay??


Prompt: --// Script

Response:
BUYB.MouseButton1Click:connect(function()
if Player.PlayerGui.CarSpawner.Main.Citizen[script.Parent.Name].Visible == false then
if Player.Cash.Value >= Price.Value then
	Player.Cash.Value = Player.Cash.Value - Price.Value
Player.PlayerGui.CarSpawner.Main.Citizen[script.Parent.Name].Visible = true
end
end
end)


Prompt: -- @specs https://design.firefox.com/photon/motion/duration-and-easing.html

Response:
local MozillaCurve = Bezier(0.07, 0.95, 0, 1)

local function Smooth(T)
	return T * T * (3 - 2 * T)
end

local function Smoother(T)
	return T * T * T * (T * (6 * T - 15) + 10)
end

local function RidiculousWiggle(T)
	return math.sin(math.sin(T * 3.1415926535898) * 1.5707963267949)
end

local function Spring(T)
	return 1 + (-math.exp(-6.9 * T) * math.cos(-20.106192982975 * T))
end

local function SoftSpring(T)
	return 1 + (-math.exp(-7.5 * T) * math.cos(-10.053096491487 * T))
end

local function OutBounce(T)
	if T < 0.36363636363636 then
		return 7.5625 * T * T
	elseif T < 0.72727272727273 then
		return 3 + T * (11 * T - 12) * 0.6875
	elseif T < 0.090909090909091 then
		return 6 + T * (11 * T - 18) * 0.6875
	else
		return 7.875 + T * (11 * T - 21) * 0.6875
	end
end

local function InBounce(T)
	if T > 0.63636363636364 then
		T = T - 1
		return 1 - T * T * 7.5625
	elseif T > 0.272727272727273 then
		return (11 * T - 7) * (11 * T - 3) / -16
	elseif T > 0.090909090909091 then
		return (11 * (4 - 11 * T) * T - 3) / 16
	else
		return T * (11 * T - 1) * -0.6875
	end
end

local EasingFunctions = setmetatable({
	InLinear = Linear;
	OutLinear = Linear;
	InOutLinear = Linear;

	OutSmooth = Smooth;
	InSmooth = Smooth;
	InOutSmooth = Smooth;

	OutSmoother = Smoother;
	InSmoother = Smoother;
	InOutSmoother = Smoother;

	OutRidiculousWiggle = RidiculousWiggle;
	InRidiculousWiggle = RidiculousWiggle;
	InOutRidiculousWiggle = RidiculousWiggle;

	OutRevBack = RevBack;
	InRevBack = RevBack;
	InOutRevBack = RevBack;

	OutSpring = Spring;
	InSpring = Spring;
	InOutSpring = Spring;

	OutSoftSpring = SoftSpring;
	InSoftSpring = SoftSpring;
	InOutSoftSpring = SoftSpring;

	InSharp = Sharp;
	InOutSharp = Sharp;
	OutSharp = Sharp;

	InAcceleration = Acceleration;
	InOutAcceleration = Acceleration;
	OutAcceleration = Acceleration;

	InStandard = Standard;
	InOutStandard = Standard;
	OutStandard = Standard;

	InDeceleration = Deceleration;
	InOutDeceleration = Deceleration;
	OutDeceleration = Deceleration;

	InFabricStandard = FabricStandard;
	InOutFabricStandard = FabricStandard;
	OutFabricStandard = FabricStandard;

	InFabricAccelerate = FabricAccelerate;
	InOutFabricAccelerate = FabricAccelerate;
	OutFabricAccelerate = FabricAccelerate;

	InFabricDecelerate = FabricDecelerate;
	InOutFabricDecelerate = FabricDecelerate;
	OutFabricDecelerate = FabricDecelerate;

	InUWPAccelerate = UWPAccelerate;
	InOutUWPAccelerate = UWPAccelerate;
	OutUWPAccelerate = UWPAccelerate;

	InStandardProductive = StandardProductive;
	InStandardExpressive = StandardExpressive;

	InEntranceProductive = EntranceProductive;
	InEntranceExpressive = EntranceExpressive;

	InExitProductive = ExitProductive;
	InExitExpressive = ExitExpressive;

	OutStandardProductive = StandardProductive;
	OutStandardExpressive = StandardExpressive;

	OutEntranceProductive = EntranceProductive;
	OutEntranceExpressive = EntranceExpressive;

	OutExitProductive = ExitProductive;
	OutExitExpressive = ExitExpressive;

	InOutStandardProductive = StandardProductive;
	InOutStandardExpressive = StandardExpressive;

	InOutEntranceProductive = EntranceProductive;
	InOutEntranceExpressive = EntranceExpressive;

	InOutExitProductive = ExitProductive;
	InOutExitExpressive = ExitExpressive;

	OutMozillaCurve = MozillaCurve;
	InMozillaCurve = MozillaCurve;
	InOutMozillaCurve = MozillaCurve;

	InQuad = function(T)
		return T * T
	end;

	OutQuad = function(T)
		return T * (2 - T)
	end;

	InOutQuad = function(T)
		if T < 0.5 then
			return 2 * T * T
		else
			return 2 * (2 - T) * T - 1
		end
	end;

	InCubic = function(T)
		return T * T * T
	end;

	OutCubic = function(T)
		return 1 - (1 - T) * (1 - T) * (1 - T)
	end;

	InOutCubic = function(T)
		if T < 0.5 then
			return 4 * T * T * T
		else
			T = T - 1
			return 1 + 4 * T * T * T
		end
	end;

	InQuart = function(T)
		return T * T * T * T
	end;

	OutQuart = function(T)
		T = T - 1
		return 1 - T * T * T * T
	end;

	InOutQuart = function(T)
		if T < 0.5 then
			T = T * T
			return 8 * T * T
		else
			T = T - 1
			return 1 - 8 * T * T * T * T
		end;
	end;

	InQuint = function(T)
		return T * T * T * T * T
	end;

	OutQuint = function(T)
		T = T - 1
		return T * T * T * T * T + 1
	end;

	InOutQuint = function(T)
		if T < 0.5 then
			return 16 * T * T * T * T * T
		else
			T = T - 1
			return 16 * T * T * T * T * T + 1
		end;
	end;

	InBack = function(T)
		return T * T * (3 * T - 2)
	end;

	OutBack = function(T)
		return (T - 1) * (T - 1) * (T * 2 + T - 1) + 1
	end;

	InOutBack = function(T)
		if T < 0.5 then
			return 2 * T * T * (2 * 3 * T - 2)
		else
			return 1 + 2 * (T - 1) * (T - 1) * (2 * 3 * T - 2 - 2)
		end
	end;

	InSine = function(T)
		return 1 - math.cos(T * 1.5707963267949)
	end;

	OutSine = function(T)
		return math.sin(T * 1.5707963267949)
	end;

	InOutSine = function(T)
		return (1 - math.cos(3.1415926535898 * T)) / 2
	end;

	OutBounce = OutBounce;
	InBounce = InBounce;

	InOutBounce = function(T)
		if T < 0.5 then
			return InBounce(2 * T) / 2
		else
			return OutBounce(2 * T - 1) / 2 + 0.5
		end
	end;

	InElastic = function(T)
		return math.exp((T * 0.96380736418812 - 1) * 8) * T * 0.96380736418812 * math.sin(4 * T * 0.96380736418812) * 1.8752275007429
	end;

	OutElastic = function(T)
		return 1 + (math.exp(8 * (0.96380736418812 - 0.96380736418812 * T - 1)) * 0.96380736418812 * (T - 1) * math.sin(4 * 0.96380736418812 * (1 - T))) * 1.8752275007429
	end;

	InOutElastic = function(T)
		if T < 0.5 then
			return (math.exp(8 * (2 * 0.96380736418812 * T - 1)) * 0.96380736418812 * T * math.sin(2 * 4 * 0.96380736418812 * T)) * 1.8752275007429
		else
			return 1 + (math.exp(8 * (0.96380736418812 * (2 - 2 * T) - 1)) * 0.96380736418812 * (T - 1) * math.sin(4 * 0.96380736418812 * (2 - 2 * T))) * 1.8752275007429
		end
	end;

	InExpo = function(T)
		return T * T * math.exp(4 * (T - 1))
	end;

	OutExpo = function(T)
		return 1 - (1 - T) * (1 - T) / math.exp(4 * T)
	end;

	InOutExpo = function(T)
		if T < 0.5 then
			return 2 * T * T * math.exp(4 * (2 * T - 1))
		else
			return 1 - 2 * (T - 1) * (T - 1) * math.exp(4 * (1 - 2 * T))
		end
	end;

	InCirc = function(T)
		return -(math.sqrt(1 - T * T) - 1)
	end;

	OutCirc = function(T)
		T = T - 1
		return math.sqrt(1 - T * T)
	end;

	InOutCirc = function(T)
		T = T * 2
		if T < 1 then
			return -(math.sqrt(1 - T * T) - 1) / 2
		else
			T = T - 2
			return (math.sqrt(1 - T * T) - 1) / 2
		end
	end;
}, {
	__index = function(_, Index)
		error(tostring(Index) .. " is not a valid easing function.", 2)
	end;

	__newindex = function(_, Index)
		error(tostring(Index) .. " is not a valid easing function.", 2)
	end;
})

return EasingFunctions


Prompt: --// Handling Settings

Response:
	Firerate = 60 / 150; -- 60 = 1 Minute, 150 = Rounds per that 60 seconds. DO NOT TOUCH THE 60!

	FireMode = 4; -- 1 = Semi, 2 = Auto, 3 = Burst, 4 = Bolt Action, 5 = Shot, 6 = Explosive


Prompt:
--WalkedAway
--* called when the player gets too far away from the dialogue
--* that they are currently speaking with.

Response:
function Interface.WalkedAway()

end


Prompt:
--[[
	ROBLOX deviation: skipped code
	original code lines 56 - 84
]]

Response:
local function expect_(_self, actual: any, ...): any
	local rest: Array<any> = { ... }

	if #rest ~= 0 then
		error("Expect takes at most one argument.")
	end

	local allMatchers = getMatchers()
	local expectation = {
		never = {},
		rejects = { never = {} },
		resolves = { never = {} },
	}

	for name, matcher in pairs(allMatchers) do
		--[[
			ROBLOX deviation: skipped unused variable declaration for promiseMatcher
			original code:
			const promiseMatcher = getPromiseMatcher(name, matcher) || matcher;
		]]
		expectation[name] = makeThrowingMatcher(matcher, false, "", actual)
		expectation.never[name] = makeThrowingMatcher(matcher, true, "", actual)

		--[[
			ROBLOX deviation: skipped code
			original code lines 106 - 134
		]]
	end

	return expectation
end

local function getMessage(message: (() -> string)?)
	return if message then message() else matcherUtils.RECEIVED_COLOR("No message was specified for this matcher.")
end


Prompt:
-- StreamableUtil
-- Stephen Leitnick
-- March 03, 2021

Response:
local Trove = require(script.Parent.Parent.Trove)
local _Streamable = require(script.Parent.Streamable)

type Streamables = {_Streamable.Streamable}
type CompoundHandler = (Streamables, any) -> nil


Prompt: -- gets the BezierPoint of the Bezier at the index

Response:
function Bezier:GetPoint(i: number): Vector3?

	-- checks for type
	local points = self.Points
	if points[i] then
		return typeof(points[i].Point) == "Vector3" and points[i].Point or points[i].Point.Position
	else
		error("Did not find a BezierPoint at index " .. tostring(i) .. "!")
	end
end


Prompt: --		local throttleNeeded =

Response:
		local stallLine = ((stallSpeed/math.floor(currentSpeed+0.5))*(stallSpeed/max))
		stallLine = (stallLine > 1 and 1 or stallLine)
		panel.Throttle.Bar.StallLine.Position = UDim2.new(stallLine,0,0,0)
		panel.Throttle.Bar.StallLine.BackgroundColor3 = (stallLine > panel.Throttle.Bar.Amount.Size.X.Scale and Color3.new(1,0,0) or Color3.new(0,0,0))
		if (change == 1) then
			currentSpeed = (currentSpeed > desiredSpeed and desiredSpeed or currentSpeed)	-- Reduce "glitchy" speed
		else
			currentSpeed = (currentSpeed < desiredSpeed and desiredSpeed or currentSpeed)
		end
		local tax,stl = taxi(),stall()
		if ((lastStall) and (not stl) and (not tax)) then	-- Recovering from a stall:
			if ((realSpeed > -10000) and (realSpeed < 10000)) then
				currentSpeed = realSpeed
			else
				currentSpeed = (stallSpeed+1)
			end
		end
		lastStall = stl
		move.velocity = (main.CFrame.lookVector*currentSpeed)		-- Set speed to aircraft
		local bank = ((((m.ViewSizeX/2)-m.X)/(m.ViewSizeX/2))*maxBank)	-- My special equation to calculate the banking of the plane. It's pretty simple actually
		bank = (bank < -maxBank and -maxBank or bank > maxBank and maxBank or bank)
		if (tax) then
			if (currentSpeed < 2) then	-- Stop plane from moving/turning when idled on ground
				move.maxForce = Vector3.new(0,0,0)
				gyro.maxTorque = Vector3.new(0,0,0)
			else
				move.maxForce = Vector3.new(math.huge,0,math.huge)	-- Taxi
				gyro.maxTorque = Vector3.new(0,math.huge,0)
				gyro.cframe = CFrame.new(main.Position,m.Hit.p)
			end
		elseif (stl) then
			move.maxForce = Vector3.new(0,0,0)	-- Stall
			gyro.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
			gyro.cframe = (m.Hit*CFrame.Angles(0,0,math.rad(bank)))
		else
			move.maxForce = Vector3.new(math.huge,math.huge,math.huge)	-- Fly
			gyro.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
			gyro.cframe = (m.Hit*CFrame.Angles(0,0,math.rad(bank)))
		end
		if ((altRestrict) and (main.Position.y < altMin)) then	-- If you have altitude restrictions and are below the minimun altitude, then make the plane explode
			plane.AutoCrash.Value = true
		end
		updateGui(tax,stl)	-- Keep the pilot informed!
		main.Throttle.Value = throttle
		wait()
	end
end

script.Parent.Selected:connect(function(m)	-- Initial setup
	selected,script.Parent.CurrentSelect.Value = true,true
	mouseSave = m
	game.Workspace.CurrentCamera.CameraType = Enum.CameraType.Attach
	m.Icon = "http://www.roblox.com/asset/?id=48801855"	-- Mouse icon used in Perilous Skies
	gui.Parent = player.PlayerGui
	delay(0,function() fly(m) end)	-- Basically a coroutine
	m.KeyDown:connect(function(k)
		if (not flying) then return end
		k = k:lower()
		if (k == keys.engine.key) then
			on = (not on)
			main.On.Value = true
			if (not on) then throttle = 0
			main.On.Value = false
			end
		elseif (k == keys.landing.key) then
			changeGear()
		elseif (k:byte() == keys.spdup.byte) then
			keys.spdup.down = true
			delay(0,function()
				while ((keys.spdup.down) and (on) and (flying)) do
					throttle = (throttle+throttleInc)
					throttle = (throttle > 1 and 1 or throttle)
					wait()
				end
			end)
		elseif (k:byte() == keys.spddwn.byte) then
			keys.spddwn.down = true
			delay(0,function()
				while ((keys.spddwn.down) and (on) and (flying)) do
					throttle = (throttle-throttleInc)
					throttle = (throttle < 0 and 0 or throttle)
					wait()
				end
			end)
		end
	end)
	m.KeyUp:connect(function(k)
		if (k:byte() == keys.spdup.byte) then
			keys.spdup.down = false
		elseif (k:byte() == keys.spddwn.byte) then
			keys.spddwn.down = false
		end
	end)
end)

function deselected(forced)
	selected,script.Parent.CurrentSelect.Value = false,false
	game.Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
	gui.Parent = nil
	flying = false
	pcall(function()
		move.maxForce = Vector3.new(0,0,0)
		if (taxi()) then
			gyro.maxTorque = Vector3.new(0,0,0)
		else
			plane.Dead.Value = true
		end
	end)
	if (forced) then
		if (mouseSave) then
			mouseSave.Icon = "rbxasset://textures\\ArrowCursor.png"	-- If you remove a tool without the actual deselect event, the icon will not go back to normal. This helps simulate it at the least
			wait()
		end
		script.Parent.Deselect1.Value = true	-- When this is triggered, the Handling script knows it is safe to remove the tool from the player
	end
end

script.Parent.Deselected:connect(deselected)
script.Parent.Deselect0.Changed:connect(function()	-- When you get out of the seat while the tool is selected, Deselect0 is triggered to True
	if (script.Parent.Deselect0.Value) then
		deselected(true)
	end
end)


Prompt:
--[[**
	ensures value is a number where min <= value <= max

	@param min The minimum to use
	@param max The maximum to use

	@returns A function that will return true iff the condition is passed
**--]]

Response:
function t.numberConstrained(min, max)
	assert(t.number(min))
	assert(t.number(max))
	local minCheck = t.numberMin(min)
	local maxCheck = t.numberMax(max)

	return function(value)
		local minSuccess, minErrMsg = minCheck(value)
		if not minSuccess then
			return false, minErrMsg or ""
		end

		local maxSuccess, maxErrMsg = maxCheck(value)
		if not maxSuccess then
			return false, maxErrMsg or ""
		end

		return true
	end
end


Prompt:
---------------------------------------------------------------------------------------------------------------
-- Do not edit past here or you will be risking breaking the script!!!! --
---------------------------------------------------------------------------------------------------------------

Response:
	-- VERY UGLY HACK
	-- Will this leak threads?
	-- Is the problem even what I think it is (player arrived before character)?

	while true do
		if newPlayer.Character ~= nil then break end
		wait(5)
	end

	local humanoid = newPlayer.Character.Humanoid

	humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end )

	-- start to listen for new humanoid
	newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )

	stats.Parent = newPlayer

end

function Send_DB_Event_Died(victim, killer)
	-- killer may be nil
	local killername = "unknown"
	if killer ~= nil then killername = killer.Name end
	print(victim.Name, " was killed by ", killername)

	if shared["deaths"] ~= nil then
		shared["deaths"](victim, killer)
		print("Death event sent.")
	end
end

function Send_DB_Event_Kill(killer, victim)
	print(killer.Name, " killed ", victim.Name)
	if shared["kills"] ~= nil then
		shared["kills"](killer, victim)
		print("Kill event sent.")
	end
end

function onHumanoidDied(humanoid, player)
	local stats = player:findFirstChild("leaderstats")
	if stats ~= nil then
		local deaths = stats:findFirstChild("Deaths")
		deaths.Value = deaths.Value + 1

		-- do short dance to try and find the killer

		local killer = getKillerOfHumanoidIfStillInGame(humanoid)

		Send_DB_Event_Died(player, killer)
		handleKillCount(humanoid, player)
	end
end

function onPlayerRespawn(property, player)
	-- need to connect to new humanoid

	if property == "Character" and player.Character ~= nil then
		local humanoid = player.Character.Humanoid
			local p = player
			local h = humanoid
			humanoid.Died:connect(function() onHumanoidDied(h, p) end )
	end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
	-- returns the player object that killed this humanoid
	-- returns nil if the killer is no longer in the game

	-- check for kill tag on humanoid - may be more than one - todo: deal with this
	local tag = humanoid:findFirstChild("creator")

	-- find player with name on tag
	if tag ~= nil then

		local killer = tag.Value
		if killer.Parent ~= nil then -- killer still in game
			return killer
		end
	end

	return nil
end

function handleKillCount(humanoid, player)
	local killer = getKillerOfHumanoidIfStillInGame(humanoid)
	if killer ~= nil then
		local stats = killer:findFirstChild("leaderstats")
		if stats ~= nil then
			local kills = stats:findFirstChild("Kills")
		   local cash = stats:findFirstChild("Money")
         local xp = stats:findFirstChild("XP")
			if killer ~= player then
				kills.Value = kills.Value + 1
            cash.Value = cash.Value + 50
            xp.Value = xp.Value + 3

			else
				kills.Value = kills.Value - 0

			end
			Send_DB_Event_Kill(killer, player)
		end
	end
end

game.Players.ChildAdded:connect(onPlayerEntered)


Prompt:
--[[
while wait() do
		Dummy.HumanoidRootPart.BodyGyro.cframe = CFrame.new(rotatingPart.Position,torso.Position) --To make bodygyro face player
end
--]]


Prompt:
--- Cleans up all tasks.
-- @alias Destroy

Response:
function Maid:DoCleaning()
	local tasks = self._tasks

	-- Disconnect all events first as we know this is safe
	for index, task in pairs(tasks) do
		if (typeof(task) == "RBXScriptConnection") then
			tasks[index] = nil
			task:Disconnect()
		end
	end

	-- Clear out tasks table completely, even if clean up tasks add more tasks to the maid
	local index, task = next(tasks)
	while (task ~= nil) do
		tasks[index] = nil
		if (type(task) == "function") then
			task()
		elseif (typeof(task) == "RBXScriptConnection") then
			task:Disconnect()
		elseif (task.Destroy) then
			task:Destroy()
		end
		index, task = next(tasks)
	end
end

function Maid:Init()
	Promise = self.Shared.Promise
end


Response:
print 'Creating a Source of Audio'
local music = Instance.new("Sound") -- This creates the sound. Since this is an Independent Variable, You should not change it at all.
music.Archivable = true -- This MUST be true or you may have some problems.
print 'Inspecting the Configurable Variables'


Prompt: -- enumName, enumValue, additionalProperty

Response:
return {
	{"Automatic", 1}, -- ZonePlus will dynamically switch between 'WholeBody' and 'Centre' depending upon the number of players in a server (this typically only occurs for servers with 100+ players when volume checks begin to exceed 0.5% in script performance).
	{"Centre", 2}, -- A tiny lightweight Region3 check will be casted at the centre of the player of part
	{"WholeBody", 3}, -- A RotatedRegion3 check will be casted over a player or parts entire body
}


Prompt: -- Water and sounds --

Response:
local water = p.Water.Mesh
local drainSound = p.Water.WaterDrainSound
local bathSound = p.Tap.BathSound
local showerSound = p.ShowerHead.Spout.ShowerSound


Prompt: -- deviation: preemptively declare function

Response: local clearCaughtError


Prompt: -- Wait until the PlayerGui has loaded

Response:
while not player.PlayerGui do
	wait()
end


Prompt: -- local kphConversion = 1.008 -- using the same conversion rate, but if you prefer KPH, replace mphConversion with kphConversion wherever it appears in the code


Prompt: --[[Transmission]]

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

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

	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]
	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)

	--Gear Ratios
	Tune.FinalDrive		= 3.9			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.70		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		3.53		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		2.04		,
		--[[ 3 ]]		1.38		,
		--[[ 4 ]]		1.03		,
		--[[ 5 ]]		0.81		,
		--[[ 6 ]]		0.64		,
		--[[ 7 ]]		0.50		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)


Prompt: --		debug.profilebegin("COLOR3_LERP_START")

Response:
		local L0, U0, V0
		local R0, G0, B0 = C0.R, C0.G, C0.B
		R0 = R0 < 0.0404482362771076 and R0 / 12.92 or 0.87941546140213 * (R0 + 0.055) ^ 2.4
		G0 = G0 < 0.0404482362771076 and G0 / 12.92 or 0.87941546140213 * (G0 + 0.055) ^ 2.4
		B0 = B0 < 0.0404482362771076 and B0 / 12.92 or 0.87941546140213 * (B0 + 0.055) ^ 2.4

		local Y0 = 0.2125862307855956 * R0 + 0.71517030370341085 * G0 + 0.0722004986433362 * B0
		local Z0 = 3.6590806972265883 * R0 + 11.4426895800574232 * G0 + 4.1149915024264843 * B0
		local _L0 = Y0 > 0.008856451679035631 and 116 * Y0 ^ (1 / 3) - 16 or 903.296296296296 * Y0

		if Z0 > 1E-15 then
			local X = 0.9257063972951867 * R0 - 0.8333736323779866 * G0 - 0.09209820666085898 * B0
			L0, U0, V0 = _L0, _L0 * X / Z0, _L0 * (9 * Y0 / Z0 - 0.46832)
		else
			L0, U0, V0 = _L0, -0.19783 * _L0, -0.46832 * _L0
		end

		local L1, U1, V1
		local R1, G1, B1 = C1.R, C1.G, C1.B
		R1 = R1 < 0.0404482362771076 and R1 / 12.92 or 0.87941546140213 * (R1 + 0.055) ^ 2.4
		G1 = G1 < 0.0404482362771076 and G1 / 12.92 or 0.87941546140213 * (G1 + 0.055) ^ 2.4
		B1 = B1 < 0.0404482362771076 and B1 / 12.92 or 0.87941546140213 * (B1 + 0.055) ^ 2.4

		local Y1 = 0.2125862307855956 * R1 + 0.71517030370341085 * G1 + 0.0722004986433362 * B1
		local Z1 = 3.6590806972265883 * R1 + 11.4426895800574232 * G1 + 4.1149915024264843 * B1
		local _L1 = Y1 > 0.008856451679035631 and 116 * Y1 ^ (1 / 3) - 16 or 903.296296296296 * Y1

		if Z1 > 1E-15 then
			local X = 0.9257063972951867 * R1 - 0.8333736323779866 * G1 - 0.09209820666085898 * B1
			L1, U1, V1 = _L1, _L1 * X / Z1, _L1 * (9 * Y1 / Z1 - 0.46832)
		else
			L1, U1, V1 = _L1, -0.19783 * _L1, -0.46832 * _L1
		end


Prompt: -- EASING FUNCTIONS --

Response:
local function quadIn(t,b,c,d) t=t/d; return c*t*t+b; end;
local function quadOut(t,b,c,d) t=t/d; return -c*t*(t-2)+b; end;
local function Quad(obj,val,ease,d)
	local t,f,con,nt,st,sd=tick()
	Tweens[obj]=t -- Set identifier
	st=obj.Size.Y.Scale -- Start Value
	sd=val-st -- Change in Value
	f=ease=='In' and quadIn or quadOut -- Choose between Out/In
	con = game:GetService'RunService'.RenderStepped:connect(function() nt=tick()-t
		if Tweens[obj]~=t then -- Check for override
			con:disconnect()
			return
		end
		local nv=math.max(.05,f(math.min(d,nt),st,sd,d)) -- New Value
		obj.Size = UDim2.new(0.1,-3,nv,0)
		obj.BackgroundColor3=Color3.new(.7,.3,1):lerp(Color3.new(.3,1,.7),nv/Height)
		if nt>d then -- Easing done?
			con:disconnect()
			if ease~='In' then
				Quad(obj,.05,'In',.3) -- Drop the bar
			end
		end
	end)
end


Prompt: ----  \/TakeDown\/

Response:
model = script.Parent
wait(0.5)
currentP = "Off"
script.Parent.Events.TakeDown.OnServerEvent:Connect( function(player, pattern)
	if script.Parent.Values.TakeDown.Value == true then
		script.Parent.Values.TakeDown.Value = false
	else
		script.Parent.Values.TakeDown.Value = true
	end
end)


Prompt: -- Keep a container for platform event connections

Response: Tools.NewPart.Listeners = {};


Prompt: --Weld stuff here

Response:
car.DriveSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game.Players:GetPlayerFromCharacter(child.Part1.Parent)~=nil then
		if child.Part1.Parent:FindFirstChild("Humanoid").RigType == Enum.HumanoidRigType.R15 then
			child.C0=CFrame.new(-.1,-.3,-.1)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)*CFrame.Angles(math.rad(5),0,0)
		else
			child.C0=CFrame.new(0,-.4,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)
		end
	end
end)


Prompt: --connection = script.Parent.Activated:connect(onActivated)


Prompt: --You can change the values below to suit your needs

Response:
local max_mode = 10 --The maximum amount of modes forwards. Set to 0 to disable forwards motion.

local min_mode = 0 --The minimum amount of modes backwards. Set to 0 to disable backwards motion.

local increment_speed = 0.1 --The amount in which the speed value increments with every mode.


Prompt:
--[[**
	ensures value is an integer

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]

Response:
function t.integer(value)
	local success, errMsg = t.number(value)
	if not success then
		return false, errMsg or ""
	end

	if value % 1 == 0 then
		return true
	else
		return false, string.format("integer expected, got %s", value)
	end
end


Prompt: -- Player Stats

Response:
local stats = player:WaitForChild("stats")
local totalPoints = stats:WaitForChild("Total"..GameSettings.pointsName)


Prompt: ---[[ Fade Out and In Settings ]]

Response:
module.ChatWindowBackgroundFadeOutTime = 3.5 --Chat background will fade out after this many seconds.
module.ChatWindowTextFadeOutTime = 30 --Chat text will fade out after this many seconds.
module.ChatDefaultFadeDuration = 0.8
module.ChatShouldFadeInFromNewInformation = false
module.ChatAnimationFPS = 40.0


Prompt: --"False" = Not Acceptable Keycard To Open. "True" = Acceptable Keycard To Open.--

Response:
local door = script.Parent
local CanOpen1 = true
local CanClose1 = false
local clearance = {
	["[SCP] Card-Omni"] = true,
	["[SCP] Card-L5"] = true,
	["[SCP] Card-L4"] = true,
	["[SCP] Card-L3"] = true,
	["[SCP] Card-L2"] = false,
	["[SCP] Card-L1"] = false
}

						--DO NOT EDIT PAST THIS LINE--
function openDoor()
	for i = 3,(door.Size.z / 0.15) do
		wait()
		door.CFrame = door.CFrame - (door.CFrame.lookVector * 0.15)
	end
end

function closeDoor()
	for i = 3,(door.Size.z / 0.15) do
		wait()
		door.CFrame = door.CFrame + (door.CFrame.lookVector * 0.15)
	end
end

script.Parent.Parent.KeycardReader1.touched:connect(function(touch)
	if touch.Name == "Handle" and clearance[touch.Parent.Name] and CanOpen1 == true then
		CanOpen1 = false
		wait(0.75)
		openDoor()
		wait(1)
		CanClose1 = true
	elseif touch.Name == "Handle" and clearance[touch.Parent.Name] and CanClose1 == true then
		CanClose1 = false
		wait(0.75)
		closeDoor()
		wait(1)
		CanOpen1 = true
	end
end)

script.Parent.Parent.KeycardReader2.touched:connect(function(touch)
	if touch.Name == "Handle" and clearance[touch.Parent.Name] and CanOpen1 == true then
		CanOpen1 = false
		wait(0.75)
		openDoor()
		wait(1)
		CanClose1 = true
	elseif touch.Name == "Handle" and clearance[touch.Parent.Name] and CanClose1 == true then
		CanClose1 = false
		wait(0.75)
		closeDoor()
		wait(1)
		CanOpen1 = true
	end
end)