Prompt: -- Container for temporary connections (disconnected automatically)

Response:
local Connections = {};

function MeshTool.Equip()
	-- Enables the tool's equipped functionality

	-- Start up our interface
	ShowUI();

end;

function MeshTool.Unequip()
	-- Disables the tool's equipped functionality

	-- Clear unnecessary resources
	HideUI();
	ClearConnections();

end;

function ClearConnections()
	-- Clears out temporary connections

	for ConnectionKey, Connection in pairs(Connections) do
		Connection:disconnect();
		Connections[ConnectionKey] = nil;
	end;

end;

function ShowUI()
	-- Creates and reveals the UI

	-- Reveal UI if already created
	if MeshTool.UI then

		-- Reveal the UI
		MeshTool.UI.Visible = true;

		-- Update the UI every 0.1 seconds
		UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

		-- Skip UI creation
		return;

	end;

	-- Create the UI
	MeshTool.UI = Core.Tool.Interfaces.BTMeshToolGUI:Clone();
	MeshTool.UI.Parent = Core.UI;
	MeshTool.UI.Visible = true;

	local AddButton = MeshTool.UI.AddButton;
	local RemoveButton = MeshTool.UI.RemoveButton;

	local MeshIdInput = MeshTool.UI.MeshIdOption.TextBox;
	local TextureIdInput = MeshTool.UI.TextureIdOption.TextBox;
	local VertexColorInput = MeshTool.UI.TintOption.HSVPicker;

	MeshTypes = {
		Block = Enum.MeshType.Brick,
		Cylinder = Enum.MeshType.Cylinder,
		File = Enum.MeshType.FileMesh,
		Head = Enum.MeshType.Head,
		Sphere = Enum.MeshType.Sphere,
		Trapezoid = Enum.MeshType.Torso,
		Wedge = Enum.MeshType.Wedge
	};

	-- Sort the mesh types
	SortedMeshTypes = Support.Keys(MeshTypes);
	table.sort(SortedMeshTypes);

	-- Create the mesh type dropdown
	TypeDropdown = Core.Cheer(MeshTool.UI.TypeOption.Dropdown).Start(SortedMeshTypes, '', function (Type)
		SetProperty('MeshType', MeshTypes[Type]);
	end);

	-- Enable the scale inputs
	local XScaleInput = MeshTool.UI.ScaleOption.XInput.TextBox;
	local YScaleInput = MeshTool.UI.ScaleOption.YInput.TextBox;
	local ZScaleInput = MeshTool.UI.ScaleOption.ZInput.TextBox;
	XScaleInput.FocusLost:connect(function (EnterPressed)
		local NewScale = tonumber(XScaleInput.Text);
		SetAxisScale('X', NewScale);
	end);
	YScaleInput.FocusLost:connect(function (EnterPressed)
		local NewScale = tonumber(YScaleInput.Text);
		SetAxisScale('Y', NewScale);
	end);
	ZScaleInput.FocusLost:connect(function (EnterPressed)
		local NewScale = tonumber(ZScaleInput.Text);
		SetAxisScale('Z', NewScale);
	end);

	-- Enable the offset inputs
	local XOffsetInput = MeshTool.UI.OffsetOption.XInput.TextBox;
	local YOffsetInput = MeshTool.UI.OffsetOption.YInput.TextBox;
	local ZOffsetInput = MeshTool.UI.OffsetOption.ZInput.TextBox;
	XOffsetInput.FocusLost:connect(function (EnterPressed)
		local NewOffset = tonumber(XOffsetInput.Text);
		SetAxisOffset('X', NewOffset);
	end);
	YOffsetInput.FocusLost:connect(function (EnterPressed)
		local NewOffset = tonumber(YOffsetInput.Text);
		SetAxisOffset('Y', NewOffset);
	end);
	ZOffsetInput.FocusLost:connect(function (EnterPressed)
		local NewOffset = tonumber(ZOffsetInput.Text);
		SetAxisOffset('Z', NewOffset);
	end);

	-- Enable the mesh ID input
	MeshIdInput.FocusLost:connect(function (EnterPressed)
		SetMeshId(ParseAssetId(MeshIdInput.Text));
	end);

	-- Enable the texture ID input
	TextureIdInput.FocusLost:connect(function (EnterPressed)
		SetTextureId(ParseAssetId(TextureIdInput.Text));
	end);

	-- Enable the vertex color/tint option
	VertexColorInput.MouseButton1Click:connect(function ()
		Core.Cheer(Core.Tool.Interfaces.BTHSVColorPicker, Core.UI).Start(
			VectorToColor(Support.IdentifyCommonProperty(GetMeshes(), 'VertexColor')) or Color3.new(1, 1, 1),
			function (Color) SetProperty('VertexColor', ColorToVector(Color)) end,
			Core.Targeting.CancelSelecting
		);
	end);

	-- Enable the mesh adding button
	AddButton.Button.MouseButton1Click:connect(function ()
		AddMeshes();
	end);
	RemoveButton.Button.MouseButton1Click:connect(function ()
		RemoveMeshes();
	end);

	-- Update the UI every 0.1 seconds
	UIUpdater = Support.ScheduleRecurringTask(UpdateUI, 0.1);

end;

function UpdateUI()
	-- Updates information on the UI

	-- Make sure the UI's on
	if not MeshTool.UI then
		return;
	end;

	-- Get all meshes
	local Meshes = GetMeshes();

	-- Identify all common properties
	local MeshType = Support.IdentifyCommonProperty(Meshes, 'MeshType');
	local MeshId = Support.IdentifyCommonProperty(Meshes, 'MeshId');
	local TextureId = Support.IdentifyCommonProperty(Meshes, 'TextureId');
	local VertexColor = VectorToColor(Support.IdentifyCommonProperty(Meshes, 'VertexColor'));

	-- Check if there's a file mesh in the selection
	local FileMeshInSelection = false;
	for _, Mesh in pairs(GetMeshes()) do
		if Mesh.MeshType == Enum.MeshType.FileMesh then
			FileMeshInSelection = true;
			break;
		end;
	end;

	-- Identify common scales and offsets across axes
	local XScaleVariations, YScaleVariations, ZScaleVariations = {}, {}, {};
	local XOffsetVariations, YOffsetVariations, ZOffsetVariations = {}, {}, {};
	for _, Mesh in pairs(GetMeshes()) do
		table.insert(XScaleVariations, Support.Round(Mesh.Scale.X, 3));
		table.insert(YScaleVariations, Support.Round(Mesh.Scale.Y, 3));
		table.insert(ZScaleVariations, Support.Round(Mesh.Scale.Z, 3));
		table.insert(XOffsetVariations, Support.Round(Mesh.Offset.X, 3));
		table.insert(YOffsetVariations, Support.Round(Mesh.Offset.Y, 3));
		table.insert(ZOffsetVariations, Support.Round(Mesh.Offset.Z, 3));
	end;
	local CommonXScale = Support.IdentifyCommonItem(XScaleVariations);
	local CommonYScale = Support.IdentifyCommonItem(YScaleVariations);
	local CommonZScale = Support.IdentifyCommonItem(ZScaleVariations);
	local CommonXOffset = Support.IdentifyCommonItem(XOffsetVariations);
	local CommonYOffset = Support.IdentifyCommonItem(YOffsetVariations);
	local CommonZOffset = Support.IdentifyCommonItem(ZOffsetVariations);

	-- Shortcuts to updating UI elements
	local AddButton = MeshTool.UI.AddButton;
	local RemoveButton = MeshTool.UI.RemoveButton;
	local MeshTypeDropdown = MeshTool.UI.TypeOption.Dropdown;
	local MeshIdInput = MeshTool.UI.MeshIdOption.TextBox;
	local TextureIdInput = MeshTool.UI.TextureIdOption.TextBox;
	local VertexColorIndicator = MeshTool.UI.TintOption.Indicator;
	local XScaleInput = MeshTool.UI.ScaleOption.XInput.TextBox;
	local YScaleInput = MeshTool.UI.ScaleOption.YInput.TextBox;
	local ZScaleInput = MeshTool.UI.ScaleOption.ZInput.TextBox;
	local XOffsetInput = MeshTool.UI.OffsetOption.XInput.TextBox;
	local YOffsetInput = MeshTool.UI.OffsetOption.YInput.TextBox;
	local ZOffsetInput = MeshTool.UI.OffsetOption.ZInput.TextBox;

	-- Update the inputs
	UpdateDataInputs {
		[MeshIdInput] = MeshId and ParseAssetId(MeshId) or MeshId or '*';
		[TextureIdInput] = TextureId and ParseAssetId(TextureId) or TextureId or '*';
		[XScaleInput] = CommonXScale or '*';
		[YScaleInput] = CommonYScale or '*';
		[ZScaleInput] = CommonZScale or '*';
		[XOffsetInput] = CommonXOffset or '*';
		[YOffsetInput] = CommonYOffset or '*';
		[ZOffsetInput] = CommonZOffset or '*';
	};
	UpdateColorIndicator(VertexColorIndicator, VertexColor);

	local MeshTypeLabel = Support.FindTableOccurrence(MeshTypes, MeshType);
	TypeDropdown.SetOption(MeshTypeLabel and MeshTypeLabel or '*');

	AddButton.Visible = false;
	RemoveButton.Visible = false;
	MeshTool.UI.TypeOption.Visible = false;
	MeshIdInput.Parent.Visible = false;
	TextureIdInput.Parent.Visible = false;
	VertexColorIndicator.Parent.Visible = false;
	MeshTool.UI.ScaleOption.Visible = false;
	MeshTool.UI.OffsetOption.Visible = false;

	-- Update the UI to display options depending on the mesh type
	local DisplayedItems;
	if #Meshes == 0 then
		DisplayedItems = { AddButton };

	-- Each selected part has a mesh, including a file mesh
	elseif #Meshes == #Selection.Items and FileMeshInSelection then
		DisplayedItems = { MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, MeshIdInput.Parent, TextureIdInput.Parent, VertexColorIndicator.Parent, RemoveButton };

	-- Each selected part has a mesh
	elseif #Meshes == #Selection.Items and not FileMeshInSelection then
		DisplayedItems = { MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, RemoveButton };

	-- Only some selected parts have meshes, including a file mesh
	elseif #Meshes ~= #Selection.Items and FileMeshInSelection then
		DisplayedItems = { AddButton, MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, MeshIdInput.Parent, TextureIdInput.Parent, VertexColorIndicator.Parent, RemoveButton };

	-- Only some selected parts have meshes
	elseif #Meshes ~= #Selection.Items and not FileMeshInSelection then
		DisplayedItems = { AddButton, MeshTool.UI.TypeOption, MeshTool.UI.ScaleOption, MeshTool.UI.OffsetOption, RemoveButton };

	end;

	-- Display the relevant UI elements
	DisplayLinearLayout(DisplayedItems, MeshTool.UI, UDim2.new(0, 0, 0, 20), 10);

end;

function HideUI()
	-- Hides the tool UI

	-- Make sure there's a UI
	if not MeshTool.UI then
		return;
	end;

	-- Hide the UI
	MeshTool.UI.Visible = false;

	-- Stop updating the UI
	UIUpdater:Stop();

end;

function GetMeshes()
	-- Returns all the meshes in the selection

	local Meshes = {};

	-- Get any meshes from any selected parts
	for _, Part in pairs(Selection.Items) do
		table.insert(Meshes, Support.GetChildOfClass(Part, 'SpecialMesh'));
	end;

	-- Return the meshes
	return Meshes;
end;

function ParseAssetId(Input)
	-- Returns the intended asset ID for the given input

	-- Get the ID number from the input
	local Id = tonumber(Input)
		or tonumber(Input:lower():match('%?id=([0-9]+)'))
		or tonumber(Input:match('/([0-9]+)/'))
		or tonumber(Input:lower():match('rbxassetid://([0-9]+)'));

	-- Return the ID
	return Id;
end;

function VectorToColor(Vector)
	-- Returns the Color3 with the values in the given Vector3

	-- Make sure that the given Vector3 is valid
	if not Vector then return end;

	-- Return the Color3
	return Color3.new(Vector.X, Vector.Y, Vector.Z);
end;

function ColorToVector(Color)
	-- Returns the Vector3 with the values in the given Color3

	-- Make sure that the given Color3 is valid
	if not Color then return end;

	-- Return the Vector3
	return Vector3.new(Color.r, Color.g, Color.b);
end;

function UpdateDataInputs(Data)
	-- Updates the data in the given TextBoxes when the user isn't typing in them

	-- Go through the inputs and data
	for Input, UpdatedValue in pairs(Data) do

		-- Makwe sure the user isn't typing into the input
		if not Input:IsFocused() then

			-- Set the input's value
			Input.Text = tostring(UpdatedValue);

		end;

	end;

end;

function UpdateColorIndicator(Indicator, Color)
	-- Updates the given color indicator

	-- If there is a single color, just display it
	if Color then
		Indicator.BackgroundColor3 = Color;
		Indicator.Varies.Text = '';

	-- If the colors vary, display a * on a gray background
	else
		Indicator.BackgroundColor3 = Color3.new(222/255, 222/255, 222/255);
		Indicator.Varies.Text = '*';
	end;

end;

function DisplayLinearLayout(Items, Container, StartPosition, Padding)

	-- Keep track of the total vertical extents of all items
	local Sum = 0;

	-- Go through each item
	for ItemIndex, Item in ipairs(Items) do

		-- Make the item visible
		Item.Visible = true;

		-- Position this item underneath the past items
		Item.Position = StartPosition + UDim2.new(
			Item.Position.X.Scale,
			Item.Position.X.Offset,
			0,
			Sum + Padding
		);

		-- Update the sum of item heights
		Sum = Sum + Padding + Item.AbsoluteSize.Y;

	end;

	-- Resize the container to fit the new layout
	Container.Size = UDim2.new(0, 200, 0, 30 + Sum);

end;

function AddMeshes()

	-- Prepare the change request for the server
	local Changes = {};

	-- Go through the selection
	for _, Part in pairs(Selection.Items) do

		-- Make sure this part doesn't already have a mesh
		if not Support.GetChildOfClass(Part, 'SpecialMesh') then

			-- Queue a mesh to be created for this part
			table.insert(Changes, { Part = Part });

		end;

	end;

	-- Send the change request to the server
	local Meshes = Core.SyncAPI:Invoke('CreateMeshes', Changes);

	-- Put together the history record
	local HistoryRecord = {
		Meshes = Meshes;

		Unapply = function (HistoryRecord)
			-- Reverts this change

			-- Select changed parts
			Selection.Replace(Support.GetListMembers(HistoryRecord.Meshes, 'Parent'));

			-- Remove the meshes
			Core.SyncAPI:Invoke('Remove', HistoryRecord.Meshes);

		end;

		Apply = function (HistoryRecord)
			-- Reapplies this change

			-- Restore the meshes
			Core.SyncAPI:Invoke('UndoRemove', HistoryRecord.Meshes);

			-- Select changed parts
			Selection.Replace(Support.GetListMembers(HistoryRecord.Meshes, 'Parent'));

		end;

	};

	-- Register the history record
	Core.History.Add(HistoryRecord);

end;

function RemoveMeshes()

	-- Get all the meshes in the selection
	local Meshes = GetMeshes();

	-- Create the history record
	local HistoryRecord = {
		Meshes = Meshes;

		Unapply = function (HistoryRecord)
			-- Reverts this change

			-- Restore the meshes
			Core.SyncAPI:Invoke('UndoRemove', HistoryRecord.Meshes);

			-- Select changed parts
			Selection.Replace(Support.GetListMembers(HistoryRecord.Meshes, 'Parent'));

		end;

		Apply = function (HistoryRecord)
			-- Reapplies this change

			-- Select changed parts
			Selection.Replace(Support.GetListMembers(HistoryRecord.Meshes, 'Parent'));

			-- Remove the meshes
			Core.SyncAPI:Invoke('Remove', HistoryRecord.Meshes);

		end;

	};

	-- Send the removal request
	Core.SyncAPI:Invoke('Remove', Meshes);

	-- Register the history record
	Core.History.Add(HistoryRecord);

end;

function SetProperty(Property, Value)

	-- Make sure the given value is valid
	if not Value then
		return;
	end;

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, [Property] = Mesh[Property] });

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, [Property] = Value });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetAxisScale(Axis, Scale)
	-- Sets the selection's scale on axis `Axis` to `Scale`

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, Scale = Mesh.Scale });

		-- Put together the changed scale
		local Scale = Vector3.new(
			Axis == 'X' and Scale or Mesh.Scale.X,
			Axis == 'Y' and Scale or Mesh.Scale.Y,
			Axis == 'Z' and Scale or Mesh.Scale.Z
		);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, Scale = Scale });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetAxisOffset(Axis, Offset)
	-- Sets the selection's offset on axis `Axis` to `Offset`

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, { Part = Mesh.Parent, Offset = Mesh.Offset });

		-- Put together the changed scale
		local Offset = Vector3.new(
			Axis == 'X' and Offset or Mesh.Offset.X,
			Axis == 'Y' and Offset or Mesh.Offset.Y,
			Axis == 'Z' and Offset or Mesh.Offset.Z
		);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, { Part = Mesh.Parent, Offset = Offset });

	end;

	-- Register the changes
	RegisterChange();

end;

function SetMeshId(AssetId)
	-- Sets the meshes in the selection's mesh ID to the intended, given mesh asset

	-- Make sure the given asset ID is valid
	if not AssetId then
		return;
	end;

	-- Prepare the change request
	local Changes = {
		MeshId = 'rbxassetid://' .. AssetId;
	};

	-- Attempt a mesh extraction on the given asset
	Core.Try(Core.SyncAPI.Invoke, Core.SyncAPI, 'ExtractMeshFromAsset', AssetId)
		:Then(function (ExtractionData)

			-- Ensure extraction succeeded
			assert(ExtractionData.success, 'Extraction failed');

			-- Apply any mesh found
			local MeshId = ExtractionData.meshID;
			if MeshId then
				Changes.MeshId = 'rbxassetid://' .. MeshId;
			end;

			-- Apply any texture found
			local TextureId = ExtractionData.textureID;
			if TextureId then
				Changes.TextureId = 'rbxassetid://' .. TextureId;
			end;

			-- Apply any vertex color found
			local VertexColor = ExtractionData.tint;
			if VertexColor then
				Changes.VertexColor = Vector3.new(VertexColor.x, VertexColor.y, VertexColor.z);
			end;

			-- Apply any scale found
			local Scale = ExtractionData.scale;
			if Scale then
				Changes.Scale = Vector3.new(Scale.x, Scale.y, Scale.z);
			end;

		end);

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Create the history change requests for this mesh
		local Before, After = { Part = Mesh.Parent }, { Part = Mesh.Parent };

		-- Gather change information to finish up the history change requests
		for Property, Value in pairs(Changes) do
			Before[Property] = Mesh[Property];
			After[Property] = Value;
		end;

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, Before);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, After);

	end;

	-- Register the changes
	RegisterChange();

end;

function SetTextureId(AssetId)
	-- Sets the meshes in the selection's texture ID to the intended, given image asset

	-- Make sure the given asset ID is valid
	if not AssetId then
		return;
	end;

	-- Prepare the change request
	local Changes = {
		TextureId = 'rbxassetid://' .. AssetId;
	};

	-- Attempt an image extraction on the given asset
	Core.Try(Core.SyncAPI.Invoke, Core.SyncAPI, 'ExtractImageFromDecal', AssetId)
		:Then(function (ExtractedImage)
			Changes.TextureId = 'rbxassetid://' .. ExtractedImage;
		end);

	-- Start a history record
	TrackChange();

	-- Go through each mesh
	for _, Mesh in pairs(GetMeshes()) do

		-- Create the history change requests for this mesh
		local Before, After = { Part = Mesh.Parent }, { Part = Mesh.Parent };

		-- Gather change information to finish up the history change requests
		for Property, Value in pairs(Changes) do
			Before[Property] = Mesh[Property];
			After[Property] = Value;
		end;

		-- Store the state of the mesh before modification
		table.insert(HistoryRecord.Before, Before);

		-- Create the change request for this mesh
		table.insert(HistoryRecord.After, After);

	end;

	-- Register the changes
	RegisterChange();

end;

function TrackChange()

	-- Start the record
	HistoryRecord = {
		Before = {};
		After = {};

		Unapply = function (Record)
			-- Reverts this change

			-- Select the changed parts
			Selection.Replace(Support.GetListMembers(Record.Before, 'Part'));

			-- Send the change request
			Core.SyncAPI:Invoke('SyncMesh', Record.Before);

		end;

		Apply = function (Record)
			-- Applies this change

			-- Select the changed parts
			Selection.Replace(Support.GetListMembers(Record.After, 'Part'));

			-- Send the change request
			Core.SyncAPI:Invoke('SyncMesh', Record.After);

		end;

	};

end;

function RegisterChange()
	-- Finishes creating the history record and registers it

	-- Make sure there's an in-progress history record
	if not HistoryRecord then
		return;
	end;

	-- Send the change to the server
	Core.SyncAPI:Invoke('SyncMesh', HistoryRecord.After);

	-- Register the record and clear the staging
	Core.History.Add(HistoryRecord);
	HistoryRecord = nil;

end;


Prompt:
--			if Xdir > 0 then -- if going ?North? then ignore, else (?South?); Jump
--				Hit = nil  -- ignore
--			elseif Xdir == 0 then -- else swerve (only while in logic).

Response:
			if Xdir == 0 then
				Hit = Aitorso-- this should result in Hit = true-but-don't-attemp-a-jump, so swerve; doesn't check floor!


Response:
game.Workspace.djbacklight.l1.BrickColor = BrickColor.new(game.Workspace.Lighting.cyandj.Value)
game.Workspace.djbacklight.l2.BrickColor = BrickColor.new(game.Workspace.Lighting.cyandj.Value)
game.Workspace.djbacklight.l3.BrickColor = BrickColor.new(game.Workspace.Lighting.cyandj.Value)
game.Workspace.djbacklight.l4.BrickColor = BrickColor.new(game.Workspace.Lighting.cyandj.Value)


Response:
	if hit.Parent:findFirstChild("Humanoid") ~= nil then
		local target1 = "LeftLowerLeg"
		local target2 = "LeftLowerLeg2"
		if hit.Parent:findFirstChild(target2) == nil then
			local g = script.Parent.Parent[target2]:clone()
			g.Parent = hit.Parent
			local C = g:GetChildren()
			for i=1, #C do
				if C[i].className == "UnionOperation" or C[i].className =="Part" or C[i].className == "WedgePart" or C[i].className == "MeshPart" then
					local W = Instance.new("Weld")
					W.Part0 = g.Middle
					W.Part1 = C[i]
					local CJ = CFrame.new(g.Middle.Position)
					local C0 = g.Middle.CFrame:inverse()*CJ
					local C1 = C[i].CFrame:inverse()*CJ
					W.C0 = C0
					W.C1 = C1
					W.Parent = g.Middle
				end
				local Y = Instance.new("Weld")
				Y.Part0 = hit.Parent[target1]
				Y.Part1 = g.Middle
				Y.C0 = CFrame.new(0, 0, 0)
				Y.Parent = Y.Part0
			end

		local h = g:GetChildren()
		for i = 1, # h do
			h[i].Anchored = false
			h[i].CanCollide = false
		end
	end
	end


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

Response:
local v1, v2 = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserFlagRemoveMessageFromMessageLog");
end);
local v3 = {};
local l__ClientChatModules__4 = game:GetService("Chat"):WaitForChild("ClientChatModules");
local l__Parent__5 = script.Parent;
local v6 = {};
v6.__index = v6;
function v6.Destroy(p1)
	p1.Destroyed = true;
end;
function v6.SetActive(p2, p3)
	if p3 == p2.Active then
		return;
	end;
	if p3 == false then
		p2.MessageLogDisplay:Clear();
	else
		p2.MessageLogDisplay:SetCurrentChannelName(p2.Name);
		for v7 = 1, #p2.MessageLog do
			p2.MessageLogDisplay:AddMessage(p2.MessageLog[v7]);
		end;
	end;
	p2.Active = p3;
end;
local u1 = v1 or v2;
function v6.UpdateMessageFiltered(p4, p5)
	local v8 = 1;
	local l__MessageLog__9 = p4.MessageLog;
	local v10 = nil;
	while v8 <= #l__MessageLog__9 do
		local v11 = l__MessageLog__9[v8];
		if v11.ID == p5.ID then
			v10 = v11;
			break;
		end;
		v8 = v8 + 1;
	end;
	if v10 then
		v10.Message = p5.Message;
		v10.IsFiltered = true;
		if not p4.Active then
			return;
		end;
	else
		p4:AddMessageToChannelByTimeStamp(p5);
		return;
	end;
	if u1 and v10.Message == "" then
		table.remove(p4.MessageLog, v8);
	end;
	p4.MessageLogDisplay:UpdateMessageFiltered(v10);
end;
local u2 = require(l__ClientChatModules__4:WaitForChild("ChatSettings"));
function v6.AddMessageToChannel(p6, p7)
	table.insert(p6.MessageLog, p7);
	if p6.Active then
		p6.MessageLogDisplay:AddMessage(p7);
	end;
	if u2.MessageHistoryLengthPerChannel < #p6.MessageLog then
		p6:RemoveLastMessageFromChannel();
	end;
end;
function v6.InternalAddMessageAtTimeStamp(p8, p9)
	for v12 = 1, #p8.MessageLog do
		if p9.Time < p8.MessageLog[v12].Time then
			table.insert(p8.MessageLog, v12, p9);
			return;
		end;
	end;
	table.insert(p8.MessageLog, p9);
end;
function v6.AddMessagesToChannelByTimeStamp(p10, p11, p12)
	for v13 = p12, #p11 do
		p10:InternalAddMessageAtTimeStamp(p11[v13]);
	end;
	while u2.MessageHistoryLengthPerChannel < #p10.MessageLog do
		table.remove(p10.MessageLog, 1);
	end;
	if p10.Active then
		p10.MessageLogDisplay:Clear();
		for v14 = 1, #p10.MessageLog do
			p10.MessageLogDisplay:AddMessage(p10.MessageLog[v14]);
		end;
	end;
end;
function v6.AddMessageToChannelByTimeStamp(p13, p14)
	if not (#p13.MessageLog >= 1) then
		p13:AddMessageToChannel(p14);
		return;
	end;
	if p14.Time < p13.MessageLog[1].Time then
		return;
	end;
	if p13.MessageLog[#p13.MessageLog].Time <= p14.Time then
		p13:AddMessageToChannel(p14);
		return;
	end;
	for v15 = 1, #p13.MessageLog do
		if p14.Time < p13.MessageLog[v15].Time then
			table.insert(p13.MessageLog, v15, p14);
			if u2.MessageHistoryLengthPerChannel < #p13.MessageLog then
				p13:RemoveLastMessageFromChannel();
			end;
			if p13.Active then
				p13.MessageLogDisplay:AddMessageAtIndex(p14, v15);
			end;
			return;
		end;
	end;
end;
function v6.RemoveLastMessageFromChannel(p15)
	table.remove(p15.MessageLog, 1);
	if p15.Active then
		p15.MessageLogDisplay:RemoveLastMessage();
	end;
end;
function v6.ClearMessageLog(p16)
	p16.MessageLog = {};
	if p16.Active then
		p16.MessageLogDisplay:Clear();
	end;
end;
function v6.RegisterChannelTab(p17, p18)
	p17.ChannelTab = p18;
end;
function v3.new(p19, p20)
	local v16 = setmetatable({}, v6);
	v16.Destroyed = false;
	v16.Active = false;
	v16.MessageLog = {};
	v16.MessageLogDisplay = p20;
	v16.ChannelTab = nil;
	v16.Name = p19;
	return v16;
end;
return v3;


Response:
function onRunning(speed)
    if speed>0.01 then
        if Figure and Humanoid and Humanoid.WalkSpeed<17 then
            playAnimation("walk", 0.1, Humanoid);
        elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
            playAnimation("run", 0.1, Humanoid);
        end;
        if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
            setAnimationSpeed(speed / 14.5)
        end
        pose = "Running"
    else
        playAnimation("idle", 0.1, Humanoid)
        pose = "Standing"
    end
end
function onDied()
    pose = "Dead"
end
function onJumping()
    playAnimation("jump", 0.1, Humanoid)
    jumpAnimTime = jumpAnimDuration
    pose = "Jumping"
end
function onClimbing(speed)
    playAnimation("climb", 0.1, Humanoid)
    setAnimationSpeed(speed / 12.0)
    pose = "Climbing"
end
function onGettingUp()
    pose = "GettingUp"
end
function onFreeFall()
    if (jumpAnimTime <= 0) then
        playAnimation("fall", fallTransitionTime, Humanoid)
    end
    pose = "FreeFall"
end
function onFallingDown()
    pose = "FallingDown"
end
function onSeated()
    pose = "Seated"
end
function onPlatformStanding()
    pose = "PlatformStanding"
end
function onSwimming(speed)
    if speed>0 then
        pose = "Running"
    else
        pose = "Standing"
    end
end

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

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

function animateTool()

    if (toolAnim == "None") then
        playToolAnimation("toolnone", toolTransitionTime, Humanoid)
        return
    end

    if (toolAnim == "Slash") then
        playToolAnimation("toolslash", 0, Humanoid)
        return
    end

    if (toolAnim == "Lunge") then
        playToolAnimation("toollunge", 0, Humanoid)
        return
    end
end

function moveSit()
    RightShoulder.MaxVelocity = 0.15
    LeftShoulder.MaxVelocity = 0.15
    RightShoulder:SetDesiredAngle(3.14 /2)
    LeftShoulder:SetDesiredAngle(-3.14 /2)
    RightHip:SetDesiredAngle(3.14 /2)
    LeftHip:SetDesiredAngle(-3.14 /2)
end

local lastTick = 0

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

    local climbFudge = 0
    local setAngles = false

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

    if (pose == "FreeFall" and jumpAnimTime <= 0) then
        playAnimation("fall", fallTransitionTime, Humanoid)
    elseif (pose == "Seated") then
        playAnimation("sit", 0.5, Humanoid)
        return
    elseif (pose == "Running") then
        if Figure and Humanoid and Humanoid.WalkSpeed<17 then
            playAnimation("walk", 0.1, Humanoid);
        elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
            playAnimation("run", 0.1, Humanoid);
        end;
    elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
        stopAllAnimations()
        amplitude = 0.1
        frequency = 1
        setAngles = true
    end
    if (setAngles) then
        local desiredAngle = amplitude * math.sin(time * frequency)
        RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
        LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
        RightHip:SetDesiredAngle(-desiredAngle)
        LeftHip:SetDesiredAngle(-desiredAngle)
    end
    -- Tool Animation handling
    local tool = getTool()
    if tool and tool:FindFirstChild("Handle") then
        local animStringValueObject = getToolAnim(tool)
        if animStringValueObject then
            toolAnim = animStringValueObject.Value
            -- message recieved, delete StringValue
            animStringValueObject.Parent = nil
            toolAnimTime = time + .3
        end
        if time > toolAnimTime then
            toolAnimTime = 0
            toolAnim = "None"
        end
        animateTool()
    else
        stopToolAnimations()
        toolAnim = "None"
        toolAnimInstance = nil
        toolAnimTime = 0
    end
end


Prompt: --For R15 avatars

Response:
Animations = {
	R15Slash = 522635514,
	R15Lunge = 522638767
}

Damage = DamageValues.BaseDamage

Grips = {
	Up = CFrame.new(0, 0, 0),
	Out = CFrame.new(0, 0, 0)
}

Sounds = {
	Slash = Handle:WaitForChild("SwordSlash"),
	Lunge = Handle:WaitForChild("SwordLunge"),
	Unsheath = Handle:WaitForChild("Unsheath")
}

ToolEquipped = false


Prompt:
--	====================
--	BASIC
--	A basic settings for the gun
--	====================

Response:
		UseCommonVisualEffects = true; --Enable to use default visual effect folder named "Common". Otherwise, use visual effect with specific tool name (ReplicatedStorage -> Miscs -> GunVisualEffects)
		AutoReload = true; --Reload automatically when you run out of mag; disabling it will make you reload manually

		PrimaryHandle = "Handle";
		SecondaryHandle = "Handle2"; --Check "DualWeldEnabled" for detail

		CustomGripEnabled = false; --NOTE: Must disable "RequiresHandle" first
		CustomGripName = "Handle";
		CustomGripPart0 = {"Character", "Left Arm"}; --Base
		CustomGripPart1 = {"Tool", "Handle"}; --Target
		AlignC0AndC1FromDefaultGrip = true;
		CustomGripCFrame = false;
		CustomGripC0 = CFrame.new(0, 0, 0);
		CustomGripC1 = CFrame.new(0, 0, 0);

		--CustomGripPart[0/1] = {Ancestor, InstanceName}
		--Supported ancestors: Tool, Character
		--NOTE: Don't set "CustomGripName" to "RightGrip"


Prompt: -- PRIVATE FUNCTIONS

Response:
function ZoneController._registerZone(zone)
   	registeredZones[zone] = true
	local registeredJanitor = zone.janitor:add(Janitor.new(), "destroy")
	zone._registeredJanitor = registeredJanitor
	registeredJanitor:add(zone.updated:Connect(function()
		ZoneController._updateZoneDetails()
	end), "Disconnect")
   ZoneController._updateZoneDetails()
end

function ZoneController._deregisterZone(zone)
	registeredZones[zone] = nil
	zone._registeredJanitor:destroy()
	zone._registeredJanitor = nil
	ZoneController._updateZoneDetails()
end

function ZoneController._registerConnection(registeredZone, registeredTriggerType)
	local originalItems = dictLength(registeredZone.activeTriggers)
	activeConnections += 1
	if originalItems == 0 then
		activeZones[registeredZone] = true
		ZoneController._updateZoneDetails()
	end
	local currentTriggerCount = activeTriggers[registeredTriggerType]
	activeTriggers[registeredTriggerType] = (currentTriggerCount and currentTriggerCount+1) or 1
	registeredZone.activeTriggers[registeredTriggerType] = true
	if registeredZone.touchedConnectionActions[registeredTriggerType] then
		registeredZone:_formTouchedConnection(registeredTriggerType)
	end
	if heartbeatActions[registeredTriggerType] then
		ZoneController._formHeartbeat(registeredTriggerType)
	end
end


Prompt: -- ROBLOX Services

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


Prompt: --Made by Luckymaxer

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

Players = game:GetService("Players")
Debris = game:GetService("Debris")

BaseUrl = "http://www.roblox.com/asset/?id="

FireParticles = script:WaitForChild("Particles")

HitScript = script:WaitForChild("HitScript")

Functions = require(script:WaitForChild("Functions"))

RbxUtility = LoadLibrary("RbxUtility")
Create = RbxUtility.Create

BasePart = Create("Part"){
	Shape = Enum.PartType.Block,
	Material = Enum.Material.Plastic,
	TopSurface = Enum.SurfaceType.Smooth,
	BottomSurface = Enum.SurfaceType.Smooth,
	FormFactor = Enum.FormFactor.Custom,
	Size = Vector3.new(0.2, 0.2, 0.2),
	CanCollide = true,
	Locked = true,
	Anchored = false,
}

Sounds = {
	Fire = Handle:WaitForChild("Fire")
}

Animations = {
	Cast = {Animation = Tool:WaitForChild("Cast"), FadeTime = nil, Weight = nil, Speed = 3.5, Duration = 0.25},
}

Remotes = Tool:WaitForChild("Remotes")
ServerControl = (Remotes:FindFirstChild("ServerControl") or Create("RemoteFunction"){
	Name = "ServerControl",
	Parent = Remotes,
})

ClientControl = (Remotes:FindFirstChild("ClientControl") or Create("RemoteFunction"){
	Name = "ClientControl",
	Parent = Remotes,
})

ReloadTime = 1

ToolEquipped = false

Handle.Transparency = 0
Tool.Enabled = true

function Activated()
	local MouseData = InvokeClient("MouseData")
	if not MouseData or not MouseData.Position then
		return
	end
	if not Tool.Enabled or not CheckIfAlive() or not ToolEquipped then
		return
	end
	Tool.Enabled = false
	local CurrentlyEquipped = true
	if ToolUnequipped then
		ToolUnequipped:disconnect()
	end
	ToolUnequipped = Tool.Unequipped:connect(function()
		CurrentlyEquipped = false
	end)
	local Animation = Animations.Cast
	Spawn(function()
		InvokeClient("PlayAnimation", Animation)
	end)
	wait(Animation.Duration / 1)
	if ToolUnequipped then
		ToolUnequipped:disconnect()
	end
	if not ToolEquipped or not CurrentlyEquipped then
		Tool.Enabled = true
		return
	end
	Sounds.Fire:Play()
	local Fireball = BasePart:Clone()
	Fireball.Name = "Projectile"
	Fireball.Transparency = 0.9
	Fireball.BrickColor = BrickColor.new("Deep orange")
	Fireball.Material = Enum.Material.SmoothPlastic
	Fireball.Shape = Enum.PartType.Ball
	Fireball.Size = Vector3.new(2, 2, 2)
	Fireball.CanCollide = false
	for i = 1, 10 do
		local Fire = FireParticles:Clone()
		Fire.LockedToPart = false
		Fire.Enabled = true
		Fire.Parent = Fireball
	end
	local Values = {
		{Name = "Creator", Class = "ObjectValue", Value = Player},
		{Name = "Damage", Class = "NumberValue", Value = math.random(25, 45)},
	}
	for i, v in pairs(Values) do
		local Value = Create(v.Class){
			Name = v.Name,
			Value = v.Value,
			Parent = Fireball,
		}
	end
	local HitScriptCopy = HitScript:Clone()
	HitScriptCopy.Disabled = false
	HitScriptCopy.Parent = Fireball
	local MousePos = MouseData.Position
	local Direction = CFrame.new(Handle.Position, MousePos).lookVector
	local Gravity = 196.20
	local Weight = (Fireball:GetMass() * Gravity)
	local Speed = 125
	local Velocity = (Direction * Speed)
	local BodyVelocity = Create("BodyVelocity"){
		Name = "BodyVelocity",
		maxForce = Vector3.new(Weight, Weight, Weight),
		velocity = Velocity,
		Parent = Fireball,
	}
	Fireball.Velocity = Velocity
	Fireball.CFrame = Handle.CFrame
	Debris:AddItem(Fireball, 5)
	Fireball.Parent = game:GetService("Workspace")
	wait(ReloadTime)
	Tool.Enabled = true
end

function CheckIfAlive()
	return (((Player and Player.Parent and Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0) and true) or false)
end

function Equipped()
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChild("Humanoid")
	if not CheckIfAlive() then
		return
	end
	ToolEquipped = true
end

function Unequipped()
	ToolEquipped = false
end

function InvokeClient(Mode, Value)
	local ClientReturn = nil
	pcall(function()
		ClientReturn = ClientControl:InvokeClient(Player, Mode, Value)
	end)
	return ClientReturn
end

function OnServerInvoke(player, Mode, Value)
	if player ~= Player or not ToolEquipped or not CheckIfAlive() or not Mode or not Value then
		return
	end
end

ServerControl.OnServerInvoke = OnServerInvoke

Tool.Activated:connect(Activated)
Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)


Response:
local RootPart = char:WaitForChild("HumanoidRootPart")
local RootJoint = RootPart.RootJoint
RootJoint.C0 = CFrame.new()
RootJoint.C1 = CFrame.new()

local Aiming = false

local ZoomDistance = 40

local NV

local L_150_ = {}

local L_153_ = {}
L_153_.cornerPeek = SpringMod.new(0)
L_153_.cornerPeek.d = 0.8
L_153_.cornerPeek.s = 16
L_153_.peekFactor = math.rad(-15)
L_153_.dirPeek = 0


Prompt: --[[ SCRIPT VARIABLES ]]

Response:
local CHAT_BUBBLE_FONT = Enum.Font.SourceSans
local CHAT_BUBBLE_FONT_SIZE = Enum.FontSize.Size24 -- if you change CHAT_BUBBLE_FONT_SIZE_INT please change this to match
local CHAT_BUBBLE_FONT_SIZE_INT = 24 -- if you change CHAT_BUBBLE_FONT_SIZE please change this to match
local CHAT_BUBBLE_LINE_HEIGHT = CHAT_BUBBLE_FONT_SIZE_INT + 12
local CHAT_BUBBLE_TAIL_HEIGHT = 14
local CHAT_BUBBLE_WIDTH_PADDING = 30
local CHAT_BUBBLE_PADDING = 12
local CHAT_BUBBLE_FADE_SPEED = 1.5

local BILLBOARD_MAX_WIDTH = 400
local BILLBOARD_MAX_HEIGHT = 250	--This limits the number of bubble chats that you see above characters

local ELIPSES = "..."
local MaxChatMessageLength = 128 -- max chat message length, including null terminator and elipses.
local MaxChatMessageLengthExclusive = MaxChatMessageLength - getMessageLength(ELIPSES) - 1

local NEAR_BUBBLE_DISTANCE = 65	--previously 45
local MAX_BUBBLE_DISTANCE = 100	--previously 80


Prompt:
-- EasyConfiguration.lua
-- @author Quenty
-- Last Modified February 3rd, 2014

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

local lib = {}

local function Modify(Instance, Values)
	-- Modifies an Instance by using a table.

	assert(type(Values) == "table", "Values is not a table");

	for Index, Value in next, Values do
		if type(Index) == "number" then
			Value.Parent = Instance
		else
			Instance[Index] = Value
		end
	end
	return Instance
end

local function Make(ClassType, Properties)
	-- Using a syntax hack to create a nice way to Make new items.

	return Modify(Instance.new(ClassType), Properties)
end

local AcceptableTypes = { -- Anything in here has a .Value property.
	["StringValue"]         = true;
	["IntValue"]            = true;
	["NumberValue"]         = true;
	["BrickColorValue"]     = true;
	["BoolValue"]           = true;
	["Color3Value"]         = true;
	["Vector3Value"]        = true;
	["IntConstrainedValue"] = true;
}

local function TypeIsAcceptable(TypeName)
	return AcceptableTypes[TypeName]
end
lib.TypeIsAcceptable = TypeIsAcceptable;
lib.typeIsAcceptable = TypeIsAcceptable

local function AddSubDataLayer(DataName, Parent)
	-- For organization of data. Adds another configuration with the name "DataName", if one can't be found, and then returns it.

	local DataContainer = Parent:FindFirstChild(DataName) or Make("Configuration", {
		Name = DataName;
		Parent = Parent;
		Archivable = true;
	})

	return DataContainer
end
lib.AddSubDataLayer = AddSubDataLayer
lib.addSubDataLayer = AddSubDataLayer

local EasyConfigCache = {}
setmetatable(EasyConfigCache, {__mode = "k"})

local function MakeEasyConfiguration(Configuration)
	if EasyConfigCache[Configuration] then
		return EasyConfigCache[Configuration]
	else
		local NewConfiguration = {}

		local function Get(ObjectName)
			return Configuration:FindFirstChild(ObjectName)
		end

		setmetatable(NewConfiguration, {
			__index = function(_, value)

				if not type(value) == "string" then
					error("Only Indexing with strings is supported with easyConfiguration", 2)
				end

				local loweredValue = value:lower()

				if loweredValue == "add" or loweredValue == "addvalue" then
					--[[
					So they can do stuff like... Config.AddValue('IntValue', {
						Name = "PizzaEaten"
						Value = 0;
					})

					--]]
					return function(valueType, values)
						local Object

						if values and values.Name and type(values.Name) == "string" then
							Object = Get(values.Name)
							if Object and Object.ClassName ~= valueType then
								print("[EasyConfiguration] - Invalid class '"..Object.ClassName.."' in configuration, being replaced by new data '"..valueType.."'");
								Object:Destroy()
								Object = nil;
							end
						else
							error("[EasyConfiguration] - No values received in the add method of easy configuration. Please give a table of default properties including the name. ", 2)
						end

						if not Object then
							local newInstance = Instance.new(valueType)
							Modify(newInstance, values)
							newInstance.Parent = Configuration
						end
					end
				elseif loweredValue == "get" or loweredValue == "getvalue" then
					return function(name)
						return Get(name)
					end
				elseif loweredValue == "getcontainer" then
					return function(name)
						return Get(name)
					end
				else
					local Object = Configuration:FindFirstChild(value)
					if Object and AcceptableTypes[Object.ClassName] then
						return Object.Value
					else
						error("[EasyConfiguration] - " .. (Object and "Object '"..value.."' was a "..Type.getType(Object).." value, and not acceptable, so no return was given" or "Could not find Object '"..value.."' in the configuration"), 2)
					end
				end
			end;
			__newindex = function(_, value, newValue)
				if type(value) == "string" then
					local Object = Get(value)
					if Object and AcceptableTypes[Object.ClassName] then
						Object.Value = newValue;
					else
						error("[EasyConfiguration] - Value '" .. value .. "' was not accepted, or wasn't in the configuration", 2);
					end
				else
					error("[EasyConfiguration] - Index with a string")
				end
			end;
		})

		EasyConfigCache[Configuration] = NewConfiguration
		return NewConfiguration;
	end
end
lib.Make = MakeEasyConfiguration;
lib.MakeEasyConfiguration = MakeEasyConfiguration;

return lib


Prompt: -- Create class

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


Prompt: -- ^ Returns a table (group of data) containing all of the stage blocks

Response:
for i, checkpoint in pairs(checkpoint) do -- Looping through each checkpoint block in that table

	-- Any code inside of here will repeat for each checkpoint

	checkpoint.TeamColor = game.Team:FindFirstChild(checkpoint.Name).TeamColor
	checkpoint.BrickColor = game.Team:FindFirstChild(checkpoint.Name).TeamColor
end


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

Response:
local v1 = require(game.ReplicatedStorage:WaitForChild("Resources"));
while not v1.Loaded do
	game:GetService("RunService").Heartbeat:Wait();
end;
local l__Main__1 = v1.GUI.Main;
local u2 = false;
local u3 = {};
local l__Format__4 = v1.Functions.Format;
function Update()
	local v2 = v1.StatService.Get();
	if not v2 then
		return;
	end;

		for v6, v7 in pairs(v1.Shared.Currency) do
		if v6 then

		else
			break;
		end;
		local v8 = v2[v6];
		local v9 = l__Main__1.Right:FindFirstChild(v6);
		if not v9 then
			v9 = v1.Assets.UI.Main.Currency:Clone();
			v9.Name = v6;
			v9.Icon.Image = v7.image;
			local l__gradient__10 = v7.gradient;
			l__gradient__10:Clone().Parent = v9.Amount;
			l__gradient__10:Clone().Parent = v9:FindFirstChild("UIStroke");
			v9.LayoutOrder = 99999 - v7.order;
			if v6 == "Gems" then
				v9.Add.Visible = true;
				v1.GFX.Button(v9.Add);
				v9.Add.Activated:Connect(function()
					if not u2 then
						u2 = true;
						v1.Signal.Fire("Exlusive Shop Tab", "Gems");
						u2 = false;
					end;
				end);
			end;
			v9.Parent = l__Main__1.Right;
		end;
		local v11 = u3[v6] or v8;
		if v11 < v8 then
			v1.Signal.Fire("Pop Up", v6, ("+%s %s"):format(l__Format__4.Short(v8 - v11), v6));
		end;
		u3[v6] = v8;
		if v9 then
			v9.Amount.Text = 1000000 < v8 and l__Format__4.Short(v8) or l__Format__4.Commas(v8);
		end;
	end;
end;

	for v12, v13 in ipairs(l__Main__1.Right:GetChildren()) do
	if not v12 then
		break;
	end;
	if v13.ClassName == "Frame" and v13:FindFirstChild("Amount") then
		v13:Destroy();
	end;
end;
Update();
v1.Signal.Fired("Stat Changed"):Connect(function(p1)
	if v1.Shared.Currency[p1] then
		Update();
	end;
end);


Prompt:
--[[
Prevents welds from breaking/transforming when player uses the tool
This recreates the EXACT weld every time
This also prevents lag build up by clearing old welds, the tradition weld script just keeps making new
ones, which can lead to weapons have crazy amounts of welds that dont work (I saw 6000 in a weapon once)
]]


Prompt: --{{SETTINGS}} : SET ACCORDING TO MODULE'S ORGANIZATION.

Response:
local RandomOffset, FadeOutTime, FadeInTime, IndicatorLength = Settings.RandomOffset, Settings.FadeOutTime, Settings.FadeInTime, Settings.IndicatorLength
local FadeOutInfo, FadeInInfo = Settings.FadeOutInfo, Settings.FadeInInfo
local Colors, Sizes = Settings.Colors, Settings.Sizes

return function (Victim : Model, Damage : NumberValue, Color : Color3, Size : UDim2, font : Enum.Font)

	if Victim then
		Color = Color or Color3.new(1)
		Size = Size or Sizes.Small
		Damage = tostring(Damage) or '0'
		font = font or script.Damage.Bill.T1.Font

		local DamageIndicator = script:WaitForChild("Damage"):Clone()
		DamageIndicator.Bill.Size = Size
		DamageIndicator.Parent, DamageIndicator.CFrame, DamageIndicator.Anchored = workspace, Victim:FindFirstChild("HumanoidRootPart").CFrame * CFrame.new(math.random(unpack(RandomOffset)), 0, 0), false
		DamageIndicator.Bill.T1.Text = ""..Damage; DamageIndicator.Bill.T1:FindFirstChild("Text").Text = ""..Damage

		DamageIndicator.Bill.T1.Font = font
		DamageIndicator.Bill.T1:WaitForChild("Text").Font = font

		local Tween = TweenService:Create(DamageIndicator.Bill.T1:FindFirstChild("Text"), TweenInfo.new(.5, FadeOutInfo.EasingStyle, FadeOutInfo.EasingDirection), {TextColor3 = Color})
		Tween:Play();
		Tween:Destroy();

		task.delay(IndicatorLength, function()
			local Tween = TweenService:Create(DamageIndicator.Bill.T1:FindFirstChild("Text"), TweenInfo.new(1, FadeInInfo.EasingStyle, FadeInInfo.EasingDirection), {TextColor3 = Color3.fromRGB(255,255,255)})
			Tween:Play();
			Tween:Destroy();
			task.delay(1, function()
				DamageIndicator:Destroy()
			end)
		end)

		local BodyVelocity = Instance.new("BodyVelocity")
		BodyVelocity.P = 10000
		BodyVelocity.MaxForce = Vector3.new(0,4e4,0)
		BodyVelocity.Velocity = Vector3.new(0,20,0)
		BodyVelocity.Parent = DamageIndicator
		task.delay(.1, function()
			BodyVelocity:Destroy()
		end)
	end
end


Prompt: -- Add a button to prompt the pruchase of a DevProduct used for donations

Response:
local function addProduct(productId)
	local success, productInfo = pcall(function()
		return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
	end)
	if not success then
		warn(`Failed to get info for product {productId}`)
		return
	end

	local icon = productInfo.IconImageAssetId
	local price = productInfo.PriceInRobux

	local button = instances.ProductButton:Clone()
	button.LayoutOrder = price
	button.ImageLabel.Image = ASSET_TEMPLATE:format(icon)
	button.RobuxLabel.Text = ROBUX_TEMPLATE:format(price)
	button.Parent = leaderboardGui.ProductList :: any

	button.MouseButton1Click:Connect(function()
		MarketplaceService:PromptProductPurchase(player, productId)
	end)
end

local function initialize()
	-- Parent the leaderboard GUI to playerGui so that buttons inside it can be interacted with
	local adornee = leaderboardGui.Parent
	leaderboardGui.Parent = playerGui :: any
	leaderboardGui.Adornee = adornee

	for _, productId in donationProducts do
		addProduct(productId)
	end
end

initialize()


Prompt:
--[[

	Boolean   Keyboard:IsDown(keyCode)
	Boolean   Keyboard:AreAllDown(keyCodes...)
	Boolean   Keyboard:AreAnyDown(keyCodes...)

	Keyboard.KeyDown(keyCode)
	Keyboard.KeyUp(keyCode)

--]]

Response:
local Keyboard = {}

local userInput = game:GetService("UserInputService")

function Keyboard:IsDown(keyCode)
	return userInput:IsKeyDown(keyCode)
end

function Keyboard:AreAllDown(...)
	for _,keyCode in pairs{...} do
		if (not userInput:IsKeyDown(keyCode)) then
			return false
		end
	end
	return true
end

function Keyboard:AreAnyDown(...)
	for _,keyCode in pairs{...} do
		if (userInput:IsKeyDown(keyCode)) then
			return true
		end
	end
	return false
end

function Keyboard:Start()

end

function Keyboard:Init()

	self.KeyDown = self.Shared.Event.new()
	self.KeyUp = self.Shared.Event.new()

	userInput.InputBegan:Connect(function(input, processed)
		if (processed) then return end
		if (input.UserInputType == Enum.UserInputType.Keyboard) then
			self.KeyDown:Fire(input.KeyCode)
		end
	end)

	userInput.InputEnded:Connect(function(input, processed)
		if (processed) then return end
		if (input.UserInputType == Enum.UserInputType.Keyboard) then
			self.KeyUp:Fire(input.KeyCode)
		end
	end)

end

return Keyboard


Prompt:
--// Hash: 35f867b00ea4ec34de0d47ea57231f2627f6d8eb2eec73edba6e9942300cf40838ab64f3a9b52cb729efa52d211b7cc2
-- Decompiled with the Synapse X Luau decompiler.

Response:
local v1 = {};
local v2 = game:GetService("ReplicatedStorage").Misc.Eyes:GetChildren();
v1.module_events = require(script.Parent.Parent.Module_Events);
local l__TweenService__1 = game:GetService("TweenService");
function v1.stuff(p1, p2, p3)
	local u2 = p3;
	spawn(function()
		if p1.dead == true then
			return;
		end;
		if not u2 then
			u2 = math.random(1, 500);
		end;
		u2 = Random.new(u2);
		p1.camShaker:ShakeOnce(4, 15, 0.4, 1);
		p1.camShaker:ShakeOnce(2, 6, 0.6, 1);
		p1.camShaker:ShakeOnce(18, 0.5, 5, 20);
		p1.camShaker:ShakeOnce(3, 12, 5, 20);
		script.Music:Play();
		l__TweenService__1:Create(game:GetService("Lighting"), TweenInfo.new(0.5, Enum.EasingStyle.Sine, Enum.EasingDirection.In), {
			FogEnd = 0,
			FogStart = 0,
			FogColor = Color3.new(0, 0.1, 0.1),
			Ambient = Color3.new(0, 0.219608, 0.243137)
		}):Play();
		wait(1);
		p1.hideplayers = 1;
		game:GetService("Lighting").Ambience_Shade.Enabled = true;
		l__TweenService__1:Create(game:GetService("Lighting"), TweenInfo.new(5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {
			FogEnd = 60,
			FogStart = 15,
			FogColor = Color3.new(0, 0, 0)
		}):Play();
		local l__LocalPlayer__3 = game.Players.LocalPlayer;
		local l__Character__4 = l__LocalPlayer__3.Character;
		local l__PrimaryPart__5 = l__Character__4.PrimaryPart;
		local l__LookVector__6 = p2.RoomStart.CFrame.LookVector;
		local v7 = Ray.new(p2.RoomStart.Position + Vector3.new(0, 1, 0), l__LookVector__6);
		local l__Jumpscare_Shade__8 = l__LocalPlayer__3.PlayerGui.MainUI.Jumpscare_Shade;
		l__Jumpscare_Shade__8.Visible = true;
		l__LocalPlayer__3.Character:SetPrimaryPartCFrame(CFrame.new(p2.RoomStart.CFrame.Position + l__LookVector__6 * 10, p2.RoomStart.CFrame.Position + l__LookVector__6 * 20));
		wait(0.5);
		local v9 = game:GetService("ReplicatedStorage").Entities:WaitForChild("Shade"):Clone();
		v9.CFrame = p1.cam.CFrame + Vector3.new(0, 1000, 0);
		local u3 = l__LookVector__6;
		local u4 = tick() + 4;
		task.delay(2, function()
			local u5 = nil;
			spawn(function()
				if u5 then
					game:GetService("ReplicatedStorage"):FindFirstChild("Bricks"):FindFirstChild("ShadeResult"):FireServer(u5);
				end;
				if u3 == l__LookVector__6 then
					u4 = tick() + math.random(30, 70) / 10;
					script.Sound.Pitch = math.random(100, 130) / 100;
					v9.WhisperWeird.Pitch = math.random(50, 70) / 100;
				else
					u4 = tick() + math.random(20, 40) / 10;
					script.Sound.Pitch = math.random(50, 70) / 100;
					v9.WhisperWeird.Pitch = math.random(100, 120) / 100;
				end;
				script.Sound.TimePosition = 0.2;
				script.Sound:Play();
				u3 = -u3;
				local v10 = v7:ClosestPoint(l__LocalPlayer__3.Character.PrimaryPart.Position + Vector3.new(0, 2, 0) + u3 * 45);
				if v9.Parent == p1.cam then
					v9.BodyPosition.Position = v9.Position + Vector3.new(0, 100, 0);
					wait(0.5);
					v9.CFrame = CFrame.new(v10 + Vector3.new(0, 50, 0));
				else
					v9.CFrame = CFrame.new(v10 + Vector3.new(0, 50, 0));
				end;
				local v11 = 40 / (u4 - tick());
				v9.BodyVelocity.Velocity = Vector3.new(0, 0, 0);
				v9.BodyPosition.Position = v10;
				wait(0.5);
				v9.BodyVelocity.Velocity = u3 * -v11;
			end);
		end);
		v9.Parent = p1.cam;
		for v12, v13 in pairs(v9:GetChildren()) do
			if v13:IsA("Sound") then
				v13:Play();
			end;
		end;
		local u6 = false;
		local u7 = nil;
		u7 = l__LocalPlayer__3:GetAttributeChangedSignal("CurrentRoom"):Connect(function()
			u6 = true;
			u7:Disconnect();
		end);
		while true do
			task.wait(0.016666666666666666);
			local l__Magnitude__14 = (v9.Position - l__PrimaryPart__5.Position).Magnitude;
			local l__Magnitude__15 = (l__PrimaryPart__5.Position - p2.RoomEnd.Position).Magnitude;
			local l__Magnitude__16 = (l__PrimaryPart__5.Position - p2.RoomEnd.Position).Magnitude;
			l__Jumpscare_Shade__8.Static.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
			l__Jumpscare_Shade__8.Static.Rotation = 180 * math.random(0, 1);
			if math.random(1, 2) == 2 then
				local v17 = "rbxassetid://8681113503";
			else
				v17 = "rbxassetid://8681113666";
			end;
			l__Jumpscare_Shade__8.Static.Image = v17;
			l__Jumpscare_Shade__8.Static.ImageTransparency = 0.6 + l__Magnitude__14 / 80;
			l__Jumpscare_Shade__8.Eyes.Visible = false;
			l__Jumpscare_Shade__8.Overlay.Visible = false;
			if u6 then
				break;
			end;
			if l__Character__4.Humanoid.health < 0.1 then
				break;
			end;
			if l__Magnitude__14 < 30 then
				if math.random(1, 55) == 5 then
					l__Jumpscare_Shade__8.Overlay.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
					l__Jumpscare_Shade__8.Overlay.Visible = true;
				else
					l__Jumpscare_Shade__8.Overlay.Visible = false;
				end;
				if math.random(1, 45) == 5 then
					l__Jumpscare_Shade__8.Eyes.Position = UDim2.new(math.random(450, 550) / 1000, 0, math.random(450, 550) / 1000, 0);
					l__Jumpscare_Shade__8.Eyes.Visible = true;
				else
					l__Jumpscare_Shade__8.Eyes.Visible = false;
				end;
			end;
			if l__Magnitude__14 < 8 then
				v9.CFrame = v9.CFrame + Vector3.new(0, 50, 0);
				local u8 = true;
				spawn(function()
					if u8 then
						game:GetService("ReplicatedStorage"):FindFirstChild("Bricks"):FindFirstChild("ShadeResult"):FireServer(u8);
					end;
					if u3 == l__LookVector__6 then
						u4 = tick() + math.random(30, 70) / 10;
						script.Sound.Pitch = math.random(100, 130) / 100;
						v9.WhisperWeird.Pitch = math.random(50, 70) / 100;
					else
						u4 = tick() + math.random(20, 40) / 10;
						script.Sound.Pitch = math.random(50, 70) / 100;
						v9.WhisperWeird.Pitch = math.random(100, 120) / 100;
					end;
					script.Sound.TimePosition = 0.2;
					script.Sound:Play();
					u3 = -u3;
					local v18 = v7:ClosestPoint(l__LocalPlayer__3.Character.PrimaryPart.Position + Vector3.new(0, 2, 0) + u3 * 45);
					if v9.Parent == p1.cam then
						v9.BodyPosition.Position = v9.Position + Vector3.new(0, 100, 0);
						wait(0.5);
						v9.CFrame = CFrame.new(v18 + Vector3.new(0, 50, 0));
					else
						v9.CFrame = CFrame.new(v18 + Vector3.new(0, 50, 0));
					end;
					local v19 = 40 / (u4 - tick());
					v9.BodyVelocity.Velocity = Vector3.new(0, 0, 0);
					v9.BodyPosition.Position = v18;
					wait(0.5);
					v9.BodyVelocity.Velocity = u3 * -v19;
				end);
				script.SoundHurt:Play();
				u8 = 1;
				for u8 = u8, 15 do
					task.wait(0.05);
					l__Jumpscare_Shade__8.Overlay.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
					l__Jumpscare_Shade__8.Overlay.Visible = true;
					l__Jumpscare_Shade__8.Static.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
					l__Jumpscare_Shade__8.Static.Rotation = 180 * math.random(0, 1);
					if math.random(1, 2) == 2 then
						local v20 = "rbxassetid://8681113503";
					else
						v20 = "rbxassetid://8681113666";
					end;
					l__Jumpscare_Shade__8.Static.Image = v20;
					l__Jumpscare_Shade__8.Static.ImageTransparency = math.random(1, 5) / 10;
					l__Jumpscare_Shade__8.Eyes.Visible = true;
					if math.random(1, 2) == 2 then
						l__Jumpscare_Shade__8.Eyes.Position = UDim2.new(math.random(450, 550) / 1000, 0, math.random(450, 550) / 1000, 0);
					end;
				end;
				l__Jumpscare_Shade__8.Eyes.Visible = false;
				l__Jumpscare_Shade__8.Overlay.Visible = false;
			elseif u4 <= tick() then
				local u9 = false;
				spawn(function()
					if u9 then
						game:GetService("ReplicatedStorage"):FindFirstChild("Bricks"):FindFirstChild("ShadeResult"):FireServer(u9);
					end;
					if u3 == l__LookVector__6 then
						u4 = tick() + math.random(30, 70) / 10;
						script.Sound.Pitch = math.random(100, 130) / 100;
						v9.WhisperWeird.Pitch = math.random(50, 70) / 100;
					else
						u4 = tick() + math.random(20, 40) / 10;
						script.Sound.Pitch = math.random(50, 70) / 100;
						v9.WhisperWeird.Pitch = math.random(100, 120) / 100;
					end;
					script.Sound.TimePosition = 0.2;
					script.Sound:Play();
					u3 = -u3;
					local v21 = v7:ClosestPoint(l__LocalPlayer__3.Character.PrimaryPart.Position + Vector3.new(0, 2, 0) + u3 * 45);
					if v9.Parent == p1.cam then
						v9.BodyPosition.Position = v9.Position + Vector3.new(0, 100, 0);
						wait(0.5);
						v9.CFrame = CFrame.new(v21 + Vector3.new(0, 50, 0));
					else
						v9.CFrame = CFrame.new(v21 + Vector3.new(0, 50, 0));
					end;
					local v22 = 40 / (u4 - tick());
					v9.BodyVelocity.Velocity = Vector3.new(0, 0, 0);
					v9.BodyPosition.Position = v21;
					wait(0.5);
					v9.BodyVelocity.Velocity = u3 * -v22;
				end);
				u9 = 1;
				for u9 = u9, 4 do
					task.wait(0.05);
					l__Jumpscare_Shade__8.OverlayTurn.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
					l__Jumpscare_Shade__8.OverlayTurn.Visible = true;
					l__Jumpscare_Shade__8.Static.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
					l__Jumpscare_Shade__8.Static.Rotation = 180 * math.random(0, 1);
					if math.random(1, 2) == 2 then
						local v23 = "rbxassetid://8681113503";
					else
						v23 = "rbxassetid://8681113666";
					end;
					l__Jumpscare_Shade__8.Static.Image = v23;
					l__Jumpscare_Shade__8.Static.ImageTransparency = 0.4;
					if math.random(1, 4) == 2 then
						l__Jumpscare_Shade__8.Eyes.Position = UDim2.new(math.random(450, 550) / 1000, 0, math.random(450, 550) / 1000, 0);
						l__Jumpscare_Shade__8.Eyes.Visible = true;
					else
						l__Jumpscare_Shade__8.Eyes.Visible = false;
					end;
				end;
				l__Jumpscare_Shade__8.Eyes.Visible = false;
				l__Jumpscare_Shade__8.Overlay.Visible = false;
				l__Jumpscare_Shade__8.OverlayTurn.Visible = false;
			end;
		end;
		p1.hideplayers = 0;
		script.Music:Stop();
		script.Sound.Pitch = math.random(150, 170) / 100;
		script.Sound.TimePosition = 0.2;
		script.Sound:Play();
		for v24 = 1, 2 do
			task.wait(0.05);
			l__Jumpscare_Shade__8.Overlay.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
			l__Jumpscare_Shade__8.Overlay.Visible = true;
			l__Jumpscare_Shade__8.Static.Position = UDim2.new(math.random(0, 1000) / 1000, 0, math.random(0, 1000) / 1000, 0);
			l__Jumpscare_Shade__8.Static.Rotation = 180 * math.random(0, 1);
			if math.random(1, 2) == 2 then
				local v25 = "rbxassetid://8681113503";
			else
				v25 = "rbxassetid://8681113666";
			end;
			l__Jumpscare_Shade__8.Static.Image = v25;
			l__Jumpscare_Shade__8.Static.ImageTransparency = math.random(1, 5) / 10;
			l__Jumpscare_Shade__8.Eyes.Visible = true;
			l__Jumpscare_Shade__8.Eyes.Position = UDim2.new(math.random(450, 550) / 1000, 0, math.random(450, 550) / 1000, 0);
		end;
		l__Jumpscare_Shade__8.Eyes.Visible = false;
		l__Jumpscare_Shade__8.Overlay.Visible = false;
		l__Jumpscare_Shade__8.Visible = false;
		v9:Destroy();
		l__TweenService__1:Create(game:GetService("Lighting"), TweenInfo.new(5, Enum.EasingStyle.Exponential, Enum.EasingDirection.Out), {
			FogEnd = 2000,
			FogStart = 50
		}):Play();
		game:GetService("Lighting").Ambience_Shade.Enabled = false;
	end);
end;
return v1;


Prompt: -- RCM Settings V

Response:
self.WeaponWeight		= 4 -- Weapon weight must be enabled in the Config module

self.ShellEjectionMod	= true

self.Holster			= true
self.HolsterPoint		= "Torso"
self.HolsterCFrame		= CFrame.new(0.65,0.1,-0.8) * CFrame.Angles(math.rad(-90),math.rad(15),math.rad(75))

self.FlashChance = 4 -- 0 = no muzzle flash, 10 = Always muzzle flash

return self


Prompt: -- ROBLOX deviation: no annotation for "..." args

Response:
function getLabelPrinter(...): PrintLabel
	local strings: Array<string> = { ... }

	local maxLength = Array.reduce(strings, function(max, string_)
		return math.max(#string_, max)
	end, 0)

	return function(string_: string): string
		-- ROBLOX deviation: We need to throw an error since string.rep called for
		-- a negative repetition doesn't actually throw whereas upstream
		-- would throw
		if #string_ > maxLength then
			error("Cannot print label for string with length larger than the max allowed of " .. maxLength)
		end
		return string.format("%s: %s", string_, string.rep(" ", maxLength - #string_))
	end
end

function matcherErrorMessage(
	hint: string, -- assertion returned from call to matcherHint
	generic: string, -- condition which correct value must fulfill
	specific: string? -- incorrect value returned from call to printWithType
): string
	if typeof(specific) == "string" then
		return string.format("%s\n\n%s: %s%s", hint, BOLD_WEIGHT("Matcher error"), generic, "\n\n" .. specific)
	else
		return string.format("%s\n\n%s: %s%s", hint, BOLD_WEIGHT("Matcher error"), generic, "")
	end
end


Prompt: -- find player's head pos

Response:
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)

	local head = vCharacter:findFirstChild("Head")
	if head == nil then return end

	Tool.Handle.Fire:Play()
	local launch = head.Position + 10 * v

	local missile = Pellet:clone()
	missile.CFrame = CFrame.new(launch,shootDirect)
	missile.Position = launch
	missile.Velocity = v * 200

	local force = Instance.new("BodyForce")
	force.force = Vector3.new(0,98,0)
	force.Parent = missile

	missile.SnowballScript.Disabled = false

	missile.Parent = game.Workspace

end

function gunUp()
	Tool.GripPos = Vector3.new(0,0,0.8)
end

function gunOut()
	Tool.GripPos = Vector3.new(0,0,1)
end

function onEquipped()

	Tool.Handle.Fire:Stop()

end

function onUnequipped()

	Tool.Handle.Fire:Stop()

end

Tool.Equipped:connect(onEquipped)
Tool.Unequipped:connect(onUnequipped)

enabled = true
function onActivated()
	if not enabled  then
		return
	end

	enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return
	end

	local targetPos = humanoid.TargetPoint
	local lookAt = (targetPos - character.Head.Position).unit
	shootDirect = targetPos

	local reload = 0.1

	gunUp()
	fire(lookAt, shootDirect)
	wait(reload)
	gunOut()
	wait(reload)

	enabled = true

end

script.Parent.Activated:connect(onActivated)


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

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

return Keyboard


Prompt:
--local colors = {Color3.fromRGB(168,100,253), Color3.fromRGB(41,205,255), Color3.fromRGB(120,255,68), Color3.fromRGB(255,113,141), Color3.fromRGB(253,255,106)};
-- Module.

Response: local _Confetti = {}; _Confetti.__index = _Confetti;


Prompt: -- Make indexing nil enums error

Response:
getmetatable( Enums ).__index = function( self, index )
    error( string.format("%s is not a valid member of %s", index, script:GetFullName()) )
end


Prompt: -- Function to play an audio asset

Response:
AudioPlayer.playAudio = function(assetName)
	local audio = SoundService:FindFirstChild(assetName)
	if not audio then
		warn("Could not find audio asset: " .. assetName)
		return
	end
	if not audio.IsLoaded then
		audio.Loaded:Wait()
	end

	-- Setup a tween so the track starts quiet and then fades in to a normal volume
	audio.Volume = 0
	audio.Looped = true

	local fadeTween = TweenService:Create(audio, TweenInfo.new(10), {Volume = .5})

	audio:Play()

	-- Fade in the audio track
	fadeTween:Play()
	fadeTween.Completed:Connect(function(State)
		if State == Enum.PlaybackState.Completed then
			fadeTween:Destroy()
		end
	end)
end

return AudioPlayer


Prompt:
-- Gathers up all the scripts in the DevModule. We use the resulting array to
-- enable all scripts in one step.

Response:
local function getDevModuleScripts(devModule: Instance): { BaseScript }
	local scripts = {}
	for _, descendant in ipairs(devModule:GetDescendants()) do
		if descendant.Parent == devModule then
			continue
		end

		if descendant:IsA("Script") or descendant:IsA("LocalScript") then
			table.insert(scripts, descendant)
		end
	end
	return scripts
end


Prompt: --- SonOfSevenless

Response:
local COOLDOWN = 0
local MP = 0

bin = script.Parent

function TryToCast(player)
	-- returns true if player may cast this spell

	-- make sure this player has the wizard board stats
	local stats = player:findFirstChild("leaderstats")
	if stats == nil then return false end
	local mana = stats:findFirstChild("Mana")
	local level = stats:findFirstChild("Level")
	if mana == nil or level == nil then return false end

	if (mana.Value >= MP) then
		mana.Value = mana.Value - MP
		return true
	end

	return false
end

function teleportPlayer(pos)

	local player = game.Players.LocalPlayer
	if player == nil or player.Character == nil then return end

	local char = player.Character.HumanoidRootPart

	sound = Instance.new("Sound")
	sound.SoundId = ""
	sound.Parent = char
	sound.PlayOnRemove = true
	sound:remove()

	char.CFrame = CFrame.new(Vector3.new(pos.x, pos.y + 7, pos.z))

	sound = Instance.new("Sound")
	sound.SoundId = ""
	sound.Parent = char
	sound.PlayOnRemove = true
	sound:remove()

end

enabled = true
function onButton1Down(mouse)
	if not enabled then
		return
	end

	local player = game.Players.LocalPlayer
	if player == nil then return end
	--if TryToCast(player) == false then return end

	enabled = false
	mouse.Icon = "rbxasset://textures\\ArrowFarCursor.png"

	-- find the best cf
	local cf = mouse.Hit
	local v = cf.lookVector

	teleportPlayer(cf.p)

	wait(COOLDOWN)
	mouse.Icon = "rbxasset://textures\\ArrowCursor.png"
	enabled = true

end

function onSelected(mouse)
	mouse.Icon = "rbxasset://textures\\ArrowCursor.png"
	mouse.Button1Down:connect(function() onButton1Down(mouse) end)
end

bin.Selected:connect(onSelected)


Response:
local _WHEELTUNE = {
																		--[[
			SS6 Presets
	[Eco]
		WearSpeed = 1,
		TargetFriction = .7,
		MinFriction = .1,
	[Road]
		WearSpeed = 2,
		TargetFriction = .7,
		MinFriction = .1,
	[Sport]
		WearSpeed = 3,
		TargetFriction = .79,
		MinFriction = .1,											]]

	TireWearOn 		= true	,

	--Friction and Wear
	FWearSpeed		= 0.50	,
	FTargetFriction	= .79	,
	FMinFriction 	= .1	,

	RWearSpeed		= 0.50	,
	RTargetFriction	= .79	,
	RMinFriction	= .1	,

	--Tire Slip
	TCSOffRatio		= 3/4	,
	WheelLockRatio	= 1/1.2	,	--SS6 Default = 1/4
	WheelspinRatio	= 1/1.15	,	--SS6 Default = 1/1.2

	--Wheel Properties
	FFrictionWeight	= 100		,	--SS6 Default = 1
	RFrictionWeight	= 100		,	--SS6 Default = 1
	FLgcyFrWeight	= 100	,
	RLgcyFrWeight	= 100	,

	FElasticity		= 0		,	--SS6 Default = .5
	RElasticity		= 0		,	--SS6 Default = .5
	FLgcyElasticity	= 0		,
	RLgcyElasticity	= 0		,

	FElastWeight	= 0		,	--SS6 Default = 1
	RElastWeight	= 0		,	--SS6 Default = 1
	FLgcyElWeight	= 0	,
	RLgcyElWeight	= 0	,

	--Wear Regen
	RegenSpeed		= 3.6		--SS6 Default = 3.6
}


Prompt:
--	====================
--	BASIC
--	A basic settings for the gun
--	====================

Response:
		Auto = false;
		MuzzleOffset = Vector3.new(0, 0.625, 1.25);
		BaseDamage = 26;
		FireRate = 0.10 ; --In second
		ReloadTime = 2; --In second
		AmmoPerClip = 30; --Put "math.huge" to make this gun has infinite ammo and never reload
		Spread = 1.25; --In degree
		HeadshotEnabled = true; --Enable the gun to do extra damage on headshot
		HeadshotDamageMultiplier = 4;
		MouseIconID = "316279304";
		HitSoundIDs = {186809061,186809249,186809250,186809252};
		IdleAnimationID = 94242777; --Set to "nil" if you don't want to animate
		IdleAnimationSpeed = 1;
		FireAnimationID = 94332152; --Set to "nil" if you don't want to animate
		FireAnimationSpeed = 6;
		ReloadAnimationID = 95384819;
		ReloadAnimationSpeed = 3;


Prompt: -- Variables

Response:
local damageHeight = getSetting("Damaging height") or 5 -- The height at which the player will start getting damaged at
local lethalHeight = getSetting("Lethal height") or 14 -- The height at which the player will get killed

game:GetService("Players").PlayerAdded:Connect(function (plr)
	plr.CharacterAdded:Connect(function (char)

		local root = char:WaitForChild("HumanoidRootPart")
		local humanoid = char:WaitForChild("Humanoid")

		if humanoid and root then

			local headHeight

			wait(3) -- Prevent the player from dying on spawn
			humanoid.FreeFalling:Connect(function (state)
				if state then
					headHeight = root.Position.Y
				elseif not state and headHeight ~= nil then
					pcall(function ()

						local fell = headHeight - root.Position.Y

						if fell >= lethalHeight then
							humanoid.Health = 0
						elseif fell >= damageHeight then
							humanoid.Health = humanoid.Health - math.floor(fell)
						end
					end)
				end
			end)
		end
	end)
end)


Prompt:
-- BEHAVIOUR
--Controller support

Response:
coroutine.wrap(function()

	-- Create PC 'Enter Controller Mode' Icon
	runService.Heartbeat:Wait() -- This is required to prevent an infinite recursion
	local Icon = require(script.Parent)
	local controllerOptionIcon = Icon.new()
		:setName("_TopbarControllerOption")
		:setOrder(100)
		:setImage("rbxassetid://5278150942")
		:setRight()
		:setEnabled(false)
		:setTip("Controller mode")
	controllerOptionIcon.deselectWhenOtherIconSelected = false

	-- This decides what controller widgets and displays to show based upon their connected inputs
	-- For example, if on PC with a controller, give the player the option to enable controller mode with a toggle
	-- While if using a console (no mouse, but controller) then bypass the toggle and automatically enable controller mode
	local function determineDisplay()
		local mouseEnabled = userInputService.MouseEnabled
		local controllerEnabled = userInputService.GamepadEnabled
		local iconIsSelected = controllerOptionIcon.isSelected
		if mouseEnabled and controllerEnabled then
			-- Show icon
			controllerOptionIcon:setEnabled(true)
		elseif mouseEnabled and not controllerEnabled then
			-- Hide icon, disableControllerMode
			controllerOptionIcon:setEnabled(false)
			IconController._enableControllerMode(false)
			controllerOptionIcon:deselect()
		elseif not mouseEnabled and controllerEnabled then
			-- Hide icon, _enableControllerMode
			controllerOptionIcon:setEnabled(false)
			IconController._enableControllerMode(true)
		end
	end
	userInputService:GetPropertyChangedSignal("MouseEnabled"):Connect(determineDisplay)
	userInputService.GamepadConnected:Connect(determineDisplay)
	userInputService.GamepadDisconnected:Connect(determineDisplay)
	determineDisplay()

	-- Enable/Disable Controller Mode when icon clicked
	local function iconClicked()
		local isSelected = controllerOptionIcon.isSelected
		local iconTip = (isSelected and "Normal mode") or "Controller mode"
		controllerOptionIcon:setTip(iconTip)
		IconController._enableControllerMode(isSelected)
	end
	controllerOptionIcon.selected:Connect(iconClicked)
	controllerOptionIcon.deselected:Connect(iconClicked)

	-- Hide/show topbar when indicator action selected in controller mode
	userInputService.InputBegan:Connect(function(input,gpe)
		if not IconController.controllerModeEnabled then return end
		if input.KeyCode == Enum.KeyCode.DPadDown then
			if not guiService.SelectedObject and checkTopbarEnabled() then
				IconController.setTopbarEnabled(true,false)
			end
		elseif input.KeyCode == Enum.KeyCode.ButtonB then
			IconController._previousSelectedObject = guiService.SelectedObject
			IconController._setControllerSelectedObject(nil)
			IconController.setTopbarEnabled(false,false)
		end
		input:Destroy()
	end)

	-- Setup overflow icons
	for alignment, detail in pairs(alignmentDetails) do
		if alignment ~= "mid" then
			local overflowName = "_overflowIcon-"..alignment
			local overflowIcon = Icon.new()
				:setImage(6069276526)
				:setName(overflowName)
				:setEnabled(false)
			detail.overflowIcon = overflowIcon
			overflowIcon.accountForWhenDisabled = true
			if alignment == "left" then
				overflowIcon:setOrder(math.huge)
				overflowIcon:setLeft()
				overflowIcon:set("dropdownAlignment", "right")
			elseif alignment == "right" then
				overflowIcon:setOrder(-math.huge)
				overflowIcon:setRight()
				overflowIcon:set("dropdownAlignment", "left")
			end
			overflowIcon.lockedSettings = {
				["iconImage"] = true,
				["order"] = true,
				["alignment"] = true,
			}
		end
	end
end)()


Prompt:
--[=[
	@within TableUtil
	@function Zip
	@param ... table
	@return (iter: (t: table, k: any) -> (key: any?, values: table?), tbl: table, startIndex: any?)

	Returns an iterator that can scan through multiple tables at the same time side-by-side, matching
	against shared keys/indices.

	```lua
	local t1 = {10, 20, 30, 40, 50}
	local t2 = {60, 70, 80, 90, 100}

	for key,values in TableUtil.Zip(t1, t2) do
		print(key, values)
	end

	--[[
		Outputs:
		1 {10, 60}
		2 {20, 70}
		3 {30, 80}
		4 {40, 90}
		5 {50, 100}
	--]]
	```
]=]

Response:
local function Zip(...: { [any]: any }): ((t: { any }, k: any) -> (any, any), { any }, any)
	assert(select("#", ...) > 0, "Must supply at least 1 table")
	local function ZipIteratorArray(all: { any }, k: number): (number?, { any }?)
		k += 1
		local values = {}
		for i, t in all do
			local v = t[k]
			if v ~= nil then
				values[i] = v
			else
				return nil, nil
			end
		end
		return k, values
	end
	local function ZipIteratorMap(all: { [any]: any }, k: any): (number?, { any }?)
		local values = {}
		for i, t in all do
			local v = next(t, k)
			if v ~= nil then
				values[i] = v
			else
				return nil, nil
			end
		end
		return k, values
	end
	local all = { ... }
	if #all[1] > 0 then
		return ZipIteratorArray, all, 0
	else
		return ZipIteratorMap, all, nil
	end
end


Prompt: -- Função 2

Response:
Playing:GetPropertyChangedSignal("Value"):Connect(function()
	if Playing.Value == true then
		LightService.Atmosphere.Density = 0.6
	end
end)


Prompt: -- Generic Roblox DataType lerp function.

Response:
local function RobloxLerp(V0, V1)
	return function(Alpha)
		return V0:Lerp(V1, Alpha)
	end
end

local function Lerp(Start, Finish, Alpha)
	return Start + Alpha * (Finish - Start)
end

local function SortByTime(A, B)
	return A.Time < B.Time
end

local function Color3Lerp(C0, C1)
	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

	return function(Alpha)
		local L = (1 - Alpha) * L0 + Alpha * L1
		if L < 0.0197955 then
			return BLACK_COLOR3
		end

		local U = ((1 - Alpha) * U0 + Alpha * U1) / L + 0.19783
		local V = ((1 - Alpha) * V0 + Alpha * V1) / L + 0.46832

		local Y = (L + 16) / 116
		Y = Y > 0.206896551724137931 and Y * Y * Y or 0.12841854934601665 * Y - 0.01771290335807126
		local X = Y * U / V
		local Z = Y * ((3 - 0.75 * U) / V - 5)

		local R = 7.2914074 * X - 1.5372080 * Y - 0.4986286 * Z
		local G = -2.1800940 * X + 1.8757561 * Y + 0.0415175 * Z
		local B = 0.1253477 * X - 0.2040211 * Y + 1.0569959 * Z

		if R < 0 and R < G and R < B then
			R, G, B = 0, G - R, B - R
		elseif G < 0 and G < B then
			R, G, B = R - G, 0, B - G
		elseif B < 0 then
			R, G, B = R - B, G - B, 0
		end

		R = R < 3.1306684425E-3 and 12.92 * R or 1.055 * R ^ (1 / 2.4) - 0.055 -- 3.1306684425E-3
		G = G < 3.1306684425E-3 and 12.92 * G or 1.055 * G ^ (1 / 2.4) - 0.055
		B = B < 3.1306684425E-3 and 12.92 * B or 1.055 * B ^ (1 / 2.4) - 0.055

		R = R > 1 and 1 or R < 0 and 0 or R
		G = G > 1 and 1 or G < 0 and 0 or G
		B = B > 1 and 1 or B < 0 and 0 or B

		return Color3.new(R, G, B)
	end
end

local Lerps = setmetatable({
	boolean = function(V0, V1)
		return function(Alpha)
			if Alpha < 0.5 then
				return V0
			else
				return V1
			end
		end
	end;

	number = function(V0, V1)
		local Delta = V1 - V0
		return function(Alpha)
			return V0 + Delta * Alpha
		end
	end;

	string = function(V0, V1)
		local RegularString = false

		local N0, D do
			local Sign0, H0, M0, S0 = string.match(V0, "^([+-]?)(%d*):[+-]?(%d*):[+-]?(%d*)$")
			local Sign1, H1, M1, S1 = string.match(V1, "^([+-]?)(%d*):[+-]?(%d*):[+-]?(%d*)$")
			if Sign0 and Sign1 then
				N0 = 3600 * (tonumber(H0) or 0) + 60 * (tonumber(M0) or 0) + (tonumber(S0) or 0)
				local N1 = 3600 * (tonumber(H1) or 0) + 60 * (tonumber(M1) or 0) + (tonumber(S1) or 0)
				if Sign0 == "-" then
					N0 = -N0
				end

				D = (43200 + (Sign1 ~= "-" and N1 or -N1) - N0) % 86400 - 43200
			else
				RegularString = true
			end
		end

		if RegularString then
			local Length = #V1
			return function(Alpha)
				Alpha = 1 + Length * Alpha
				return string.sub(V1, 1, Alpha < Length and Alpha or Length)
			end
		else
			return function(Alpha)
				local FS = (N0 + D * Alpha) % 86400
				local S = math.abs(FS)
				return string.format(
					FS < 0 and "-%.2u:%.2u:%.2u" or "%.2u:%.2u:%.2u",
					(S - S % 3600) / 3600,
					(S % 3600 - S % 60) / 60,
					S % 60
				)
			end
		end
	end;

	CFrame = RobloxLerp;
	Color3 = Color3Lerp;
	NumberRange = function(V0, V1)
		local Min0, Max0 = V0.Min, V0.Max
		local DeltaMin, DeltaMax = V1.Min - Min0, V1.Max - Max0

		return function(Alpha)
			return NumberRange.new(Min0 + Alpha * DeltaMin, Max0 + Alpha * DeltaMax)
		end
	end;

	NumberSequenceKeypoint = function(V0, V1)
		local T0, Value0, E0 = V0.Time, V0.Value, V0.Envelope
		local DT, DV, DE = V1.Time - T0, V1.Value - Value0, V1.Envelope - E0

		return function(Alpha)
			return NumberSequenceKeypoint.new(T0 + Alpha * DT, Value0 + Alpha * DV, E0 + Alpha * DE)
		end
	end;

	PhysicalProperties = function(V0, V1)
		local D0, E0, EW0, F0, FW0 =
			V0.Density, V0.Elasticity,
		V0.ElasticityWeight, V0.Friction,
		V0.FrictionWeight

		local DD, DE, DEW, DF, DFW =
			V1.Density - D0, V1.Elasticity - E0,
		V1.ElasticityWeight - EW0, V1.Friction - F0,
		V1.FrictionWeight - FW0

		return function(Alpha)
			return PhysicalProperties.new(
				D0 + Alpha * DD,
				E0 + Alpha * DE, EW0 + Alpha * DEW,
				F0 + Alpha * DF, FW0 + Alpha * DFW
			)
		end
	end;

	Ray = function(V0, V1)
		local O0, D0, O1, D1 = V0.Origin, V0.Direction, V1.Origin, V1.Direction
		local OX0, OY0, OZ0, DX0, DY0, DZ0 = O0.X, O0.Y, O0.Z, D0.X, D0.Y, D0.Z
		local DOX, DOY, DOZ, DDX, DDY, DDZ = O1.X - OX0, O1.Y - OY0, O1.Z - OZ0, D1.X - DX0, D1.Y - DY0, D1.Z - DZ0

		return function(Alpha)
			return Ray.new(
				Vector3.new(OX0 + Alpha * DOX, OY0 + Alpha * DOY, OZ0 + Alpha * DOZ),
				Vector3.new(DX0 + Alpha * DDX, DY0 + Alpha * DDY, DZ0 + Alpha * DDZ)
			)
		end
	end;

	UDim = function(V0, V1)
		local SC, OF = V0.Scale, V0.Offset
		local DSC, DOF = V1.Scale - SC, V1.Offset - OF

		return function(Alpha)
			return UDim.new(SC + Alpha * DSC, OF + Alpha * DOF)
		end
	end;

	UDim2 = RobloxLerp;
	Vector2 = RobloxLerp;
	Vector3 = RobloxLerp;
	Rect = function(V0, V1)
		return function(Alpha)
			return Rect.new(
				V0.Min.X + Alpha * (V1.Min.X - V0.Min.X), V0.Min.Y + Alpha * (V1.Min.Y - V0.Min.Y),
				V0.Max.X + Alpha * (V1.Max.X - V0.Max.X), V0.Max.Y + Alpha * (V1.Max.Y - V0.Max.Y)
			)
		end
	end;

	Region3 = function(V0, V1)
		return function(Alpha)
			local imin = Lerp(V0.CFrame * (-V0.Size / 2), V1.CFrame * (-V1.Size / 2), Alpha)
			local imax = Lerp(V0.CFrame * (V0.Size / 2), V1.CFrame * (V1.Size / 2), Alpha)

			local iminx = imin.X
			local imaxx = imax.X
			local iminy = imin.Y
			local imaxy = imax.Y
			local iminz = imin.Z
			local imaxz = imax.Z

			return Region3.new(
				Vector3.new(iminx < imaxx and iminx or imaxx, iminy < imaxy and iminy or imaxy, iminz < imaxz and iminz or imaxz),
				Vector3.new(iminx > imaxx and iminx or imaxx, iminy > imaxy and iminy or imaxy, iminz > imaxz and iminz or imaxz)
			)
		end
	end;

	NumberSequence = function(V0, V1)
		return function(Alpha)
			local keypoints = {}
			local addedTimes = {}
			local keylength = 0

			for _, ap in ipairs(V0.Keypoints) do
				local closestAbove, closestBelow

				for _, bp in ipairs(V1.Keypoints) do
					if bp.Time == ap.Time then
						closestAbove, closestBelow = bp, bp
						break
					elseif bp.Time < ap.Time and (closestBelow == nil or bp.Time > closestBelow.Time) then
						closestBelow = bp
					elseif bp.Time > ap.Time and (closestAbove == nil or bp.Time < closestAbove.Time) then
						closestAbove = bp
					end
				end

				local bValue, bEnvelope
				if closestAbove == closestBelow then
					bValue, bEnvelope = closestAbove.Value, closestAbove.Envelope
				else
					local p = (ap.Time - closestBelow.Time) / (closestAbove.Time - closestBelow.Time)
					bValue = (closestAbove.Value - closestBelow.Value) * p + closestBelow.Value
					bEnvelope = (closestAbove.Envelope - closestBelow.Envelope) * p + closestBelow.Envelope
				end

				keylength += 1
				keypoints[keylength] = NumberSequenceKeypoint.new(ap.Time, (bValue - ap.Value) * Alpha + ap.Value, (bEnvelope - ap.Envelope) * Alpha + ap.Envelope)
				addedTimes[ap.Time] = true
			end

			for _, bp in ipairs(V1.Keypoints) do
				if not addedTimes[bp.Time] then
					local closestAbove, closestBelow

					for _, ap in ipairs(V0.Keypoints) do
						if ap.Time == bp.Time then
							closestAbove, closestBelow = ap, ap
							break
						elseif ap.Time < bp.Time and (closestBelow == nil or ap.Time > closestBelow.Time) then
							closestBelow = ap
						elseif ap.Time > bp.Time and (closestAbove == nil or ap.Time < closestAbove.Time) then
							closestAbove = ap
						end
					end

					local aValue, aEnvelope
					if closestAbove == closestBelow then
						aValue, aEnvelope = closestAbove.Value, closestAbove.Envelope
					else
						local p = (bp.Time - closestBelow.Time) / (closestAbove.Time - closestBelow.Time)
						aValue = (closestAbove.Value - closestBelow.Value) * p + closestBelow.Value
						aEnvelope = (closestAbove.Envelope - closestBelow.Envelope) * p + closestBelow.Envelope
					end

					keylength += 1
					keypoints[keylength] = NumberSequenceKeypoint.new(bp.Time, (bp.Value - aValue) * Alpha + aValue, (bp.Envelope - aEnvelope) * Alpha + aEnvelope)
				end
			end

			table.sort(keypoints, SortByTime)
			return NumberSequence.new(keypoints)
		end
	end;

	ColorSequence = function(V0, V1)
		return function(Alpha)
			local keypoints = {}
			local addedTimes = {}
			local keylength = 0

			for _, ap in ipairs(V0.Keypoints) do
				local closestAbove, closestBelow

				for _, bp in ipairs(V1.Keypoints) do
					if bp.Time == ap.Time then
						closestAbove, closestBelow = bp, bp
						break
					elseif bp.Time < ap.Time and (closestBelow == nil or bp.Time > closestBelow.Time) then
						closestBelow = bp
					elseif bp.Time > ap.Time and (closestAbove == nil or bp.Time < closestAbove.Time) then
						closestAbove = bp
					end
				end

				local bValue
				if closestAbove == closestBelow then
					bValue = closestAbove.Value
				else
					bValue = Color3Lerp(closestBelow.Value, closestAbove.Value)((ap.Time - closestBelow.Time) / (closestAbove.Time - closestBelow.Time))
				end

				keylength += 1
				keypoints[keylength] = ColorSequenceKeypoint.new(ap.Time, Color3Lerp(ap.Value, bValue)(Alpha))
				addedTimes[ap.Time] = true
			end

			for _, bp in ipairs(V1.Keypoints) do
				if not addedTimes[bp.Time] then
					local closestAbove, closestBelow

					for _, ap in ipairs(V0.Keypoints) do
						if ap.Time == bp.Time then
							closestAbove, closestBelow = ap, ap
							break
						elseif ap.Time < bp.Time and (closestBelow == nil or ap.Time > closestBelow.Time) then
							closestBelow = ap
						elseif ap.Time > bp.Time and (closestAbove == nil or ap.Time < closestAbove.Time) then
							closestAbove = ap
						end
					end

					local aValue
					if closestAbove == closestBelow then
						aValue = closestAbove.Value
					else
						aValue = Color3Lerp(closestBelow.Value, closestAbove.Value)((bp.Time - closestBelow.Time) / (closestAbove.Time - closestBelow.Time))
					end

					keylength += 1
					keypoints[keylength] = ColorSequenceKeypoint.new(bp.Time, Color3Lerp(bp.Value, aValue)(Alpha))
				end
			end

			table.sort(keypoints, SortByTime)
			return ColorSequence.new(keypoints)
		end
	end;
}, {
	__index = function(_, Index)
		error("No lerp function is defined for type " .. tostring(Index) .. ".", 4)
	end;

	__newindex = function(_, Index)
		error("No lerp function is defined for type " .. tostring(Index) .. ".", 4)
	end;
})

return Lerps


Prompt: --Basically checks if the toucher of the button is a player, then adds money to that player.


Prompt: -- Place in backpack if was equipped

Response:
if wasEquipped then
	script.Parent.Parent = plr.Backpack
end


Prompt:
--[=[
	Loads a folder into a localization table.

	@param tableName string -- Used for source
	@param folder Folder -- A Roblox folder with StringValues containing JSON, named with the localization in mind
]=]

Response:
function JsonToLocalizationTable.loadFolder(tableName, folder)
	assert(type(tableName) == "string", "Bad tableName")

	local localizationTable = JsonToLocalizationTable.getOrCreateLocalizationTable()

	for _, item in pairs(folder:GetDescendants()) do
		if item:IsA("StringValue") then
			local localeId = JsonToLocalizationTable.localeFromName(item.Name)
			JsonToLocalizationTable.addJsonToTable(localizationTable, localeId, item.Value, tableName)
		elseif item:IsA("ModuleScript") then
			local localeId = JsonToLocalizationTable.localeFromName(item.Name)
			recurseAdd(localizationTable, localeId, "", require(item), tableName)
		end
	end
	return localizationTable
end


Prompt:
--[=[
	Constructs a new Touch input capturer.
]=]

Response:
function Touch.new()

	local self = setmetatable({}, Touch)

	self._trove = Trove.new()

	self.TouchTapInWorld = self._trove:Add(Signal.Wrap(UserInputService.TouchTapInWorld))
	self.TouchPan = self._trove:Add(Signal.Wrap(UserInputService.TouchPan))
	self.TouchPinch = self._trove:Add(Signal.Wrap(UserInputService.TouchPinch))

	return self

end


Prompt:
--[[
	Breaks the window, visually modifying it, and breaching associate room if not already
]]

Response:
function Window:breach()
	self._state = Constants.State.Window.Breached

	local glass = self._model:FindFirstChild("Glass")
	glass.CanCollide = false
	glass.Material = Enum.Material.ForceField
	glass.Color = Color3.fromRGB(252, 0, 0)

	spawn(
		function()
			while self:_isBreached() do
				glass.Transparency = 1

				wait(1)

				glass.Transparency = 0

				wait(1)
			end
		end
	)

	local room = self._associatedRoom

	if not room:isBreached() then
		room:breachRoom(self._model.Glass)
	end

	CreateWindowMarker:FireAllClients(glass)
end


Prompt: -- regeneration

Response:
while true do
	local s = wait(4)
	local health = Humanoid.Health
	if health > 0 and health < Humanoid.MaxHealth then
		health = health + 0.08 * s * Humanoid.MaxHealth
		if health * .95 < Humanoid.MaxHealth then
			Humanoid.Health = health
		else
			Humanoid.Health = Humanoid.MaxHealth
		end
	end
end


Prompt: --{{TYPES}} : COLORS, SIZES, AND MORE!

Response:
Settings.Colors = {
	["1"] = Color3.fromRGB(255, 0, 0); -- {{DAMAGED}}
	["2"] = Color3.fromRGB(0, 255, 0); -- {{HEALED}}
}

Settings.Sizes = {
	Small = UDim2.new(1.8, 0, 1.8, 0); -- {{SMALL SIZE, IM SURE IT HAS A GOOD PERSONALITY THOUGH}}
}

return Settings


Prompt: -- [ BASIC ] --

Response:
local LookAtPlayerRange = 10 -- Distance away that NPC can looks
local LookAtNonPlayer = false -- Looks at other humanoid that isn't player


Prompt: -- Attack configuration

Response:
local ATTACK_MODE = getValueFromConfig("AttackMode")
local ATTACK_RADIUS = getValueFromConfig("AttackRadius")
local ATTACK_DAMAGE = getValueFromConfig("AttackDamage")
local ATTACK_DELAY = getValueFromConfig("AttackDelay")
local RELOAD_DELAY = getValueFromConfig("ReloadDelay")
local CLIP_CAPACITY = getValueFromConfig("ClipCapacity")


Prompt:
--!strict
-- upstream: https://github.com/facebook/react/blob/55cb0b7eeb0e539d89858b8ed69beabf7fe2fb46/packages/shared/checkPropTypes.js
--[[*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 ]]

Response:
local Packages = script.Parent.Parent
local LuauPolyfill = require(Packages.LuauPolyfill)
local Error = LuauPolyfill.Error
type Object = LuauPolyfill.Object
type Function = (...any) -> ...any


Prompt: ---Converts a number with you know K and stuff

Response:
function module:ConvertNumber(Number)
	local NumberedNum = tonumber(Number)
	local FinalNum = NumberedNum

	---Checking for phase 1 template: 100k
	if NumberedNum > 999999 then
		local Cached_Num = NumberedNum / 1000
		Cached_Num = math.floor(Cached_Num)
		FinalNum = Cached_Num..("K")

	---Checking for phase 2 template: 10.0k
	elseif NumberedNum > 9999 then
		local Cached_Num = NumberedNum / 100
		Cached_Num = math.floor(Cached_Num)
		FinalNum = Cached_Num / 10 ..("K")
	end

	return FinalNum
end

return module


Prompt: -- Looking for how exactly to set up your background music? Open the Readme/Instructions script!

Response:
local settings = {}

settings.UseGlobalBackgroundMusic = false  -- If you want to play Global Background Music for everyone in your game, set this to true.

settings.UseMusicZones = true  -- If you are using the Background Music Zones to play specific music in certain areas, set this to true.


Prompt: --tool = script.Parent.Pistol

Response:
function Die()
	--if tool ~= nil then tool:remove() end
	wait(10)
	script.Parent:remove()
end

human.Died:connect(Die)


Prompt: -- Every time you load an animation to a variable, it inserts a new Animation instance in the Humanoid to be played. Kind of like "holding" an animation in the Humanoid.


Prompt: -- State

Response: local state = require(script.Parent.state)


Prompt:
-- ================================================================================
-- PUBLIC FUNCTIONS
-- ================================================================================

Response:
function PlayerConverter:PlayerToSpeeder(selection, racing)
	if racing == nil then racing = false end

	-- Fire RemoteEvent to handle conversion server-side
	LoadSpeeder:FireServer(selection, racing)
end -- PlayerConverter:PlayerToSpeeder()

function PlayerConverter:PlayerToSpeederClient(racing)
	if racing == nil then racing = false end

	local Players = game:GetService("Players")
	local player = Players.LocalPlayer
	local PlayerGui = player:FindFirstChild("PlayerGui")

	-- Get player's character
	local character = player.Character or player.CharacterAdded():wait()
	local humanoidRootPart = character:FindFirstChild("HumanoidRootPart")
	local head = character:FindFirstChild("Head")

	-- Move HumanoidRotPart out of range of interaction NPC
	if humanoidRootPart then
		humanoidRootPart.Position = humanoidRootPart.Position + Vector3.new(0, 40, 0)
	end
	if head then
		head.Position = head.Position + Vector3.new(0, 40, 0)
	end

	-- Lock/Center and hide mouse
	UserInputService.MouseIconEnabled = false
	UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
	UserInputService.MouseIconEnabled = false

	-- Disable touch control GUIs on mobile devices
	if IS_MOBILE then
		local TouchGui = PlayerGui:WaitForChild("TouchGui")
		TouchGui.Enabled = false
	end

	if racing then
		local countdownGui = PlayerGui:WaitForChild("CountdownGui")
		countdownGui.TimerFrame.Visible = false
	end
end -- PlayerConverter:PlayerToSpeederClient()

function PlayerConverter:PlayerToSpeederServer(player, selection, racing)
	if racing == nil then racing = false end

	-- Get player's character
	local character = player.Character or player.CharacterAdded:wait()

	-- Anchor and make limbs transparent
	setModelAnchored(character, true)
	setModelCanCollide(character, false)
	setModelTransparency(character, 1)

	-- Remove limbs and unecessay character parts
	removeLimbsAndThings(character)

	-- Clone selected speeder
	local speeder = selection:clone()

	-- Set character's PrimaryPart to speeder's PrimaryPart
	local body = speeder:FindFirstChild("Body")
	assert(body, "All speeders must have a part named Body. It will be used as the PrimaryPart")
	speeder.PrimaryPart = body
	character.PrimaryPart = body
	character.PrimaryPart.Name = "HumanoidRootPart"

	-- Set collision group so that players cannot collide when they are speeders
	setCollisionGroup(speeder, _SPEEDEROBJECTSCOLLISIONGROUP)

	-- Unanchor speeder
	setModelAnchored(speeder, false)

	-- Insert speeder model into character
	insertModelIntoCharacter(character,speeder)

	-- Clone speeder scripts into player
	local controller = Controller:clone()
	controller.Parent = character

	-- Move player to SpeederSpawnLocation
	character:SetPrimaryPartCFrame(SpeederSpawnLocation.CFrame)

	LoadSpeeder:FireClient(player, racing)
end -- PlayerConverter:PlayerToSpeederServer()


Prompt: -- создание таблицы лидеров

Response:
local function onPlayerJoin(player)
	-- создаём таблицу лидстата
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	-- добавление хранилища данных
	local stageStore = DataStore2("stage", player)

	-- создаём переменную этапа
	local stage = Instance.new("IntValue")
	stage.Name = "Stage"
	stage.Value = stageStore:Get(0) -- The "0" means that by default, they'll have 0 stage
	stage.Parent = leaderstats

	stageStore:OnUpdate(function(newstage)
		-- This function runs every time the value inside the data store changes.
		stage.Value = newstage
	end)
end


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

Response:
local v1 = require(game.ReplicatedStorage:WaitForChild("Resources"));
while not v1.Loaded do
	game:GetService("RunService").Heartbeat:Wait();
end;
local l__StarterPlayer__2 = v1.StarterPlayer;
local l__CollectionService__3 = v1.CollectionService;
local l__Hoverboards__1 = v1.Directory.Hoverboards;
local u2 = nil;
function Create(p1)
	local l____HOVERBOARD__4 = v1.PlayerModule.Get("Character", p1):FindFirstChild("__HOVERBOARD");
	if l____HOVERBOARD__4 then
		l____HOVERBOARD__4:Destroy();
	end;
	local v5 = v1.StatService.Get(p1);
	if v5 then
		if not v5.Hoverboard then
			return;
		end;
	else
		return;
	end;
	local v6 = l__Hoverboards__1[v5.Hoverboard];
	if not v6 then
		return;
	end;
	local v7 = v1.PlayerModule.Get("Humanoid");
	local v8 = v1.PlayerModule.Get("RootPart");
	if v7 then
		if v8 then
			u2 = v7.HipHeight;
			v8.CFrame = v8.CFrame + Vector3.new(0, v7.HipHeight - v6.HipHeight, 0);
			v7.HipHeight = v6.HipHeight;
			v7.AutoJumpEnabled = false;
		end;
	end;
end;
local l__LocalPlayer__3 = v1.LocalPlayer;
function Remove(p2)
	local v9 = v1.PlayerModule.Get("Humanoid");
	local v10 = v1.PlayerModule.Get("RootPart");
	if v9 then
		if v10 then
			if p2 == l__LocalPlayer__3 then
				v10.Velocity = Vector3.new();
			end;
			if u2 then
				v9.HipHeight = u2;
				u2 = nil;
			end;
			v9.AutoJumpEnabled = true;
		end;
	end;
end;
function UpdatePlayer(p3, p4)
	local v11 = v1.PlayerModule.Get("Character", p3);
	if p4 then
		if not v11:FindFirstChild("__HOVERBOARD") then
			return Create(p3);
		end;
	end;
	if not p4 then
		if v11:FindFirstChild("__HOVERBOARD") then
			Remove(p3);
		end;
	end;
end;
function Toggle()
	v1.Variables.UsingHoverboard = not v1.Variables.UsingHoverboard;
	if not v1.Variables.UsingHoverboard then
		Remove(l__LocalPlayer__3);
	else
		Create(l__LocalPlayer__3);
	end;
	v1.Network.Fire("Update Hoverboard State", v1.Variables.UsingHoverboard);
end;
l__CollectionService__3:GetInstanceAddedSignal("UsingHoverboard"):Connect(function(p5)
	UpdatePlayer(p5, true);
end);
l__CollectionService__3:GetInstanceRemovedSignal("UsingHoverboard"):Connect(function(p6)
	UpdatePlayer(p6, false);
end);
task.defer(function()
	while v1.Variables.LoadingWorld do
		v1.Heartbeat();
	end;

		for v12, v13 in ipairs((l__CollectionService__3:GetTagged("UsingHoverboard"))) do
		if not v12 then
			break;
		end;
		coroutine.wrap(UpdatePlayer)(v13, true);
	end;
end);
v1.Signal.Fired("Stat Changed"):Connect(function(p7)

end);
v1.Signal.Fired("Changed Platform"):Connect(function()

end);
v1.Signal.Fired("World Changed"):Connect(function()
	if v1.Variables.UsingHoverboard then
		Toggle();
	end;
end);


Prompt: --Variables

Response:
local Seats = {}
local EnterKeyDown = false
local AdornedSeat = nil

local currentHumanoid = nil
local AnimationTracks = {}