Prompt: --Made by Luckymaxer

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

Players = game:GetService("Players")
RunService = game:GetService("RunService")
UserInputService = game:GetService("UserInputService")

InputCheck = Instance.new("ScreenGui")
InputCheck.Name = "InputCheck"
InputButton = Instance.new("Frame")
InputButton.Name = "InputMonitor"
InputButton.BackgroundTransparency = 1
InputButton.Size = UDim2.new(1, 0, 1, 0)
InputButton.Parent = InputCheck

Animations = {}
LocalObjects = {}

ServerControl = Tool:WaitForChild("ServerControl")
ClientControl = Tool:WaitForChild("ClientControl")

ToolEquipped = false

function SetAnimation(mode, value)
	if not ToolEquipped or not CheckIfAlive() then
		return
	end
	if mode == "PlayAnimation" and value and ToolEquipped and Humanoid then
		for i, v in pairs(Animations) do
			if v.Animation == value.Animation then
				v.AnimationTrack:Stop()
				table.remove(Animations, i)
			end
		end
		local AnimationTrack = Humanoid:LoadAnimation(value.Animation)
		table.insert(Animations, {Animation = value.Animation, AnimationTrack = AnimationTrack})
		AnimationTrack:Play(value.FadeTime, value.Weight, value.Speed)
	elseif mode == "StopAnimation" and value then
		for i, v in pairs(Animations) do
			if v.Animation == value.Animation then
				v.AnimationTrack:Stop(value.FadeTime)
				table.remove(Animations, i)
			end
		end
	end
end

function DisableJump(Boolean)
	if PreventJump then
		PreventJump:disconnect()
	end
	if Boolean then
		PreventJump = Humanoid.Changed:connect(function(Property)
			if Property ==  "Jump" then
				Humanoid.Jump = false
			end
		end)
	end
end

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

function Equipped(Mouse)
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChild("Humanoid")
	Head = Character:FindFirstChild("Head")
	ToolEquipped = true
	if not CheckIfAlive() then
		return
	end
	PlayerMouse = Mouse
	Mouse.KeyDown:connect(function(Key)
		InvokeServer("KeyPress", {Key = Key, Down = true})
	end)
	Mouse.KeyUp:connect(function(Key)
		InvokeServer("KeyPress", {Key = Key, Down = false})
	end)
	Mouse.Button1Down:connect(function()
		InvokeServer("Button1Click", {Down = true})
	end)
	Mouse.Button1Up:connect(function()
		InvokeServer("Button1Click", {Down = false})
	end)
	local PlayerGui = Player:FindFirstChild("PlayerGui")
	if PlayerGui then
		if UserInputService.TouchEnabled then
			InputCheckClone = InputCheck:Clone()
			InputCheckClone.InputMonitor.InputBegan:connect(function()
				InvokeServer("Button1Click", {Down = true})
			end)
			InputCheckClone.InputMonitor.InputEnded:connect(function()
				InvokeServer("Button1Click", {Down = false})
			end)
			InputCheckClone.Parent = PlayerGui
		end
	end
end

function Unequipped()
	ToolEquipped = false
	if InputCheckClone and InputCheckClone.Parent then
		InputCheckClone:Destroy()
	end
	for i, v in pairs(Animations) do
		if v and v.AnimationTrack then
			v.AnimationTrack:Stop()
		end
	end
	for i, v in pairs(LocalObjects) do
		if v.Object then
			v.Object.LocalTransparencyModifier = 0
		end
	end
	for i, v in pairs({PreventJump, ObjectLocalTransparencyModifier}) do
		if v then
			v:disconnect()
		end
	end
	Animations = {}
	LocalObjects = {}
end

function InvokeServer(mode, value)
	local ServerReturn
	pcall(function()
		ServerReturn = ServerControl:InvokeServer(mode, value)
	end)
	return ServerReturn
end

function OnClientInvoke(mode, value)
	if not ToolEquipped or not CheckIfAlive() or not mode then
		return
	end
	if mode == "PlayAnimation" and value then
		SetAnimation("PlayAnimation", value)
	elseif mode == "StopAnimation" and value then
		SetAnimation("StopAnimation", value)
	elseif mode == "PlaySound" and value then
		value:Play()
	elseif mode == "StopSound" and value then
		value:Stop()
	elseif mode == "MouseData" then
		return {Position = PlayerMouse.Hit.p, Target = PlayerMouse.Target}
	elseif mode == "DisableJump" then
		DisableJump(value)
	elseif mode == "SetLocalTransparencyModifier" and value then
		pcall(function()
			local ObjectFound = false
			for i, v in pairs(LocalObjects) do
				if v == value then
					ObjectFound = true
				end
			end
			if not ObjectFound then
				table.insert(LocalObjects, value)
				if ObjectLocalTransparencyModifier then
					ObjectLocalTransparencyModifier:disconnect()
				end
				ObjectLocalTransparencyModifier = RunService.RenderStepped:connect(function()
					local Camera = game:GetService("Workspace").CurrentCamera
					for i, v in pairs(LocalObjects) do
						if v.Object and v.Object.Parent then
							local CurrentTransparency = v.Object.LocalTransparencyModifier
							local ViewDistance = (Camera.CoordinateFrame.p - Head.Position).Magnitude
							if ((not v.AutoUpdate and (CurrentTransparency == 1 or CurrentTransparency == 0)) or v.AutoUpdate) then
								if ((v.Distance and ViewDistance <= v.Distance) or not v.Distance) then
									v.Object.LocalTransparencyModifier = v.Transparency
								else
									v.Object.LocalTransparencyModifier = 0
								end
							end
						else
							table.remove(LocalObjects, i)
						end
					end
				end)
			end
		end)
	end
end

ClientControl.OnClientInvoke = OnClientInvoke
Tool.Equipped:connect(Equipped)
Tool.Unequipped:connect(Unequipped)


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

Response:
local v1 = {};
v1.__index = v1;
v1.CameraShakeState = {
	FadingIn = 0,
	FadingOut = 1,
	Sustained = 2,
	Inactive = 3
};
local l__Vector3_new__1 = Vector3.new;
function v1.new(p1, p2, p3, p4)
	if p3 == nil then
		p3 = 0;
	end;
	if p4 == nil then
		p4 = 0;
	end;
	assert(type(p1) == "number", "Magnitude must be a number");
	assert(type(p2) == "number", "Roughness must be a number");
	assert(type(p3) == "number", "FadeInTime must be a number");
	assert(type(p4) == "number", "FadeOutTime must be a number");
	local v2 = {
		Magnitude = p1,
		Roughness = p2,
		PositionInfluence = l__Vector3_new__1(),
		RotationInfluence = l__Vector3_new__1(),
		DeleteOnInactive = true,
		roughMod = 1,
		magnMod = 1,
		fadeOutDuration = p4,
		fadeInDuration = p3,
		sustain = p3 > 0
	};
	local v3
	if p3 > 0 then
		v3 = 0;
	else
		v3 = 1;
	end;
	v2.currentFadeTime = v3;
	v2.tick = Random.new():NextNumber(-100, 100);
	v2._camShakeInstance = true;
	return setmetatable(v2, v1);
end;
local l__math_noise__2 = math.noise;
function v1.UpdateShake(p5, p6)
	local l__tick__4 = p5.tick;
	local v5 = p5.currentFadeTime;
	if p5.fadeInDuration > 0 and p5.sustain then
		if v5 < 1 then
			v5 = v5 + p6 / p5.fadeInDuration;
		elseif p5.fadeOutDuration > 0 then
			p5.sustain = false;
		end;
	end;
	if not p5.sustain then
		v5 = v5 - p6 / p5.fadeOutDuration;
	end;
	if p5.sustain then
		p5.tick = l__tick__4 + p6 * p5.Roughness * p5.roughMod;
	else
		p5.tick = l__tick__4 + p6 * p5.Roughness * p5.roughMod * v5;
	end;
	p5.currentFadeTime = v5;
	return l__Vector3_new__1(l__math_noise__2(l__tick__4, 0) * 0.5, l__math_noise__2(0, l__tick__4) * 0.5, l__math_noise__2(l__tick__4, l__tick__4) * 0.5) * p5.Magnitude * p5.magnMod * v5;
end;
function v1.StartFadeOut(p7, p8)
	if p8 == 0 then
		p7.currentFadeTime = 0;
	end;
	p7.fadeOutDuration = p8;
	p7.fadeInDuration = 0;
	p7.sustain = false;
end;
function v1.StartFadeIn(p9, p10)
	if p10 == 0 then
		p9.currentFadeTime = 1;
	end;
	p9.fadeInDuration = p10 or p9.fadeInDuration;
	p9.fadeOutDuration = 0;
	p9.sustain = true;
end;
function v1.GetScaleRoughness(p11)
	return p11.roughMod;
end;
function v1.SetScaleRoughness(p12, p13)
	p12.roughMod = p13;
end;
function v1.GetScaleMagnitude(p14)
	return p14.magnMod;
end;
function v1.SetScaleMagnitude(p15, p16)
	p15.magnMod = p16;
end;
function v1.GetNormalizedFadeTime(p17)
	return p17.currentFadeTime;
end;
function v1.IsShaking(p18)
	local v6 = true;
	if not (p18.currentFadeTime > 0) then
		v6 = p18.sustain;
	end;
	return v6;
end;
function v1.IsFadingOut(p19)
	return not p19.sustain and p19.currentFadeTime > 0;
end;
function v1.IsFadingIn(p20)
	local v7 = false;
	if p20.currentFadeTime < 1 then
		v7 = p20.sustain and p20.fadeInDuration > 0;
	end;
	return v7;
end;
function v1.GetState(p21)
	if p21:IsFadingIn() then
		return v1.CameraShakeState.FadingIn;
	end;
	if p21:IsFadingOut() then
		return v1.CameraShakeState.FadingOut;
	end;
	if p21:IsShaking() then
		return v1.CameraShakeState.Sustained;
	end;
	return v1.CameraShakeState.Inactive;
end;
return v1;


Prompt:
--- Add a task to clean up
-- @usage
-- Maid[key] = (function)         Adds a task to perform
-- Maid[key] = (event connection) Manages an event connection
-- Maid[key] = (Maid)             Maids can act as an event connection, allowing a Maid to have other maids to clean up.
-- Maid[key] = (Object)           Maids can cleanup objects with a `Destroy` method
-- Maid[key] = nil                Removes a named task. If the task is an event, it is disconnected. If it is an object,
--                                it is destroyed.

Response:
function Maid:__newindex(index, newTask)
	if (Maid[index] ~= nil) then
		error(("'%s' is reserved"):format(tostring(index)), 2)
	end

	local tasks = self._tasks
	local oldTask = tasks[index]
	tasks[index] = newTask

	if (oldTask) then
		if (type(oldTask) == "function") then
			oldTask()
		elseif (typeof(oldTask) == "RBXScriptConnection") then
			oldTask:Disconnect()
		elseif (oldTask.Destroy) then
			oldTask:Destroy()
		elseif (Promise.Is(oldTask)) then
			oldTask:Cancel()
		end
	end
end


Prompt: --// Recoil Settings

Response:
	gunrecoil = -0.75; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.26; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.75; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.23; -- How much the camera flicks when aiming

	CamShake = 8; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 6; -- THIS IS ALSO NEW!!!!

	Kickback = 10.2; -- Upward gun rotation when not aiming
	AimKickback = 9.11; -- Upward gun rotation when aiming


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

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

		-- load it to the humanoid; get AnimationTrack
		currentAnimTrack = humanoid:LoadAnimation(anim)

		-- play the animation
		if animName == "walk" then
			currentAnimTrack:Play(nil,nil,2)
		else
			currentAnimTrack:Play(transitionTime)
		end
		currentAnim = animName

		-- set up keyframe name triggers
		if (currentAnimKeyframeHandler ~= nil) then
			currentAnimKeyframeHandler:disconnect()
		end
		currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
	end
end


Prompt: --Do not change anything besides the lines mentioned below.

Response:
model = script.Parent.Parent--Indicates that the script interacts with the model the button is grouped with.
messageText = "Regen"--If you want a message to appear upon pressing, type it here.

message = Instance.new("Message")
message.Text = messageText
backup = model:clone()
enabled = true

function regenerate()
	message.Parent = game.Workspace
	model:remove()

	wait(2)--Change this number to display the regen message as long as you want in seconds.

	model = backup:clone()
	model.Parent = game.Workspace
	model:makeJoints()
	message.Parent = nil

	script.Disabled = true
	script.Parent.BrickColor = BrickColor.new(69)
	wait(10)--Change this number to change the time in between regenerations via the button, in seconds..
	script.Parent.BrickColor = BrickColor.new(197)
	script.Disabled = false
end

function onHit(hit)
	if (hit.Parent:FindFirstChild("Humanoid") ~= nil) and enabled then
		regenerate()
	end
end

script.Parent.Touched:connect(onHit)


Prompt: --unfreeze the character

Response:
for i = 1, #iceParts do
	local C = iceParts[i]:GetChildren()
    for ii = 1,#C do
        if C[ii].className == "Weld" then
            C[ii]:Destroy()
        end
    end
	local dir = (iceParts[i].Position-iceParts[i].CFrame.p+Vector3.new(0, 1, 0)).unit
	iceParts[i].Velocity = (dir+Vector3.new(math.random()-.5, 1, math.random()-.5))*20
	iceParts[i].RotVelocity = (dir+Vector3.new(math.random()-.5, math.random()-.5, math.random()-.5))*10
	local force = Instance.new("BodyForce")
	force.Force = dir * 50 * iceParts[i]:GetMass()
	force.Parent = iceParts[i]
	delay(.25, function() force:Destroy() end)
end

for i = 1, #iceParts2 do
	local C = iceParts2[i]:GetChildren()
    for ii = 1,#C do
        if C[ii].className == "Weld" then
            C[ii]:Destroy()
        end
    end
	local dir = (iceParts2[i].Position-iceParts2[i].CFrame.p+Vector3.new(0, 1, 0)).unit
	iceParts2[i].Velocity = (dir+Vector3.new(math.random()-.5, 1, math.random()-.5))*20
	iceParts2[i].RotVelocity = (dir+Vector3.new(math.random()-.5, math.random()-.5, math.random()-.5))*10
	local force = Instance.new("BodyForce")
	force.Force = dir * 50 * iceParts2[i]:GetMass()
	force.Parent = iceParts2[i]
	delay(.25, function() force:Destroy() end)
end

EnableMove()

IceShatter = Instance.new("Sound")
IceShatter.Name = "IceShatter"
IceShatter.SoundId = "rbxassetid://"..shatterSounds[math.random(1,#shatterSounds)]
IceShatter.Parent = Head
IceShatter.PlaybackSpeed = 1
IceShatter.Volume = 1.5
game.Debris:AddItem(IceShatter, 10)
delay(0, function() IceShatter:Play() end)
IceShatter.Ended:connect(function()
	if script then
		script:Destroy()
	end
end)


Prompt:
-- Version 3
-- Last updated: 31/07/2020

Response:
local Module = {}

DebugEnabled = false

Debris = game:GetService("Debris")

function Module.FracturePart(PartToFracture)

	local BreakingPointAttachment = PartToFracture:FindFirstChild("BreakingPoint")

	-- Settings
	local Configuration = PartToFracture:FindFirstChild("Configuration")

	local DebrisDespawn = false
	local DebrisDespawnDelay = 0
	local WeldDebris = false
	local AnchorDebris = false

	if DebugEnabled then
		local DebugPart = Instance.new("Part")
		DebugPart.Shape = "Ball"
		DebugPart.CanCollide = false
		DebugPart.Anchored = true
		DebugPart.Size = Vector3.new(0.5, 0.5, 0.5)
		DebugPart.Color = Color3.fromRGB(255, 0, 0)
		DebugPart.Position = BreakingPointAttachment.WorldPosition
		DebugPart.Parent = workspace
	end

	local BreakSound = PartToFracture:FindFirstChild("BreakSound")

	if BreakSound then
		local SoundPart = Instance.new("Part")
		SoundPart.Size = Vector3.new(0.2, 0.2, 0.2)
		SoundPart.Position = PartToFracture.Position
		SoundPart.Name = "TemporarySoundEmitter"
		SoundPart.Anchored = true
		SoundPart.CanCollide = false
		SoundPart.Transparency = 1
		local Sound = BreakSound:Clone()
		Sound.Parent = SoundPart
		SoundPart.Parent = workspace
		Sound:Play()
		Debris:AddItem(SoundPart, Sound.PlaybackSpeed)
	end

	if Configuration then
		DebrisDespawn = Configuration.DebrisDespawn.Value
		DebrisDespawnDelay = Configuration.DebrisDespawnDelay.Value
		WeldDebris = Configuration.WeldDebris.Value
		AnchorDebris = Configuration.AnchorDebris.Value
	else
		warn("The 'Configuration' is not a valid member of " .. PartToFracture.Name .. ". Please insert a 'Configuration' with the following values; 'DebrisDespawn' (bool), 'WeldDebris' (bool), 'DebrisDespawnDelay' (number/int)")
	end

	if not BreakingPointAttachment then
		warn("The 'BreakingPoint' attachment is not a valid member of " .. PartToFracture.Name .. ". Please insert an attachment named 'BreakingPoint'")
	end

	local BreakingPointY = BreakingPointAttachment.Position.Y
	local BreakingPointZ = BreakingPointAttachment.Position.Z

	local ShardBottomLeft = Instance.new("WedgePart")
	local ShardBottomRight = Instance.new("WedgePart")
	local ShardTopLeft = Instance.new("WedgePart")
	local ShardTopRight = Instance.new("WedgePart")

	local BreakSound = PartToFracture:FindFirstChild("BreakSound")

	-- Bottom Left
	ShardBottomLeft.Material = PartToFracture.Material
	ShardBottomLeft.Color = PartToFracture.Color
	ShardBottomLeft.CanCollide = false
	ShardBottomLeft.Transparency = PartToFracture.Transparency
	ShardBottomLeft.Size = PartToFracture.Size - Vector3.new(0, (PartToFracture.Size.Y / 2) - BreakingPointY, (PartToFracture.Size.Z / 2) + BreakingPointZ)
	local OldSizeY = ShardBottomLeft.Size.Y
	local OldSizeZ = ShardBottomLeft.Size.Z
	ShardBottomLeft.CFrame = PartToFracture.CFrame * CFrame.new(0, BreakingPointY - (ShardBottomLeft.Size.Y / 2), BreakingPointZ + (ShardBottomLeft.Size.Z / 2))
	ShardBottomLeft.CFrame = ShardBottomLeft.CFrame * CFrame.Angles(math.rad(90), 0, 0)
	ShardBottomLeft.Size = Vector3.new(ShardBottomLeft.Size.X, OldSizeZ, OldSizeY)
	local ShardBottomLeft2 = ShardBottomLeft:Clone()
	ShardBottomLeft2.CFrame = ShardBottomLeft2.CFrame * CFrame.Angles(math.rad(180), 0, 0)

	-- Bottom Right
	ShardBottomRight.Material = PartToFracture.Material
	ShardBottomRight.Color = PartToFracture.Color
	ShardBottomLeft.CanCollide = false
	ShardBottomRight.Transparency = PartToFracture.Transparency
	ShardBottomRight.Size = PartToFracture.Size - Vector3.new(0, (PartToFracture.Size.Y / 2) + BreakingPointY, (PartToFracture.Size.Z / 2) + BreakingPointZ)
	ShardBottomRight.CFrame = PartToFracture.CFrame * CFrame.new(0, BreakingPointY + (ShardBottomRight.Size.Y / 2), BreakingPointZ + (ShardBottomRight.Size.Z / 2))
	local ShardBottomRight2 = ShardBottomRight:Clone()
	ShardBottomRight2.CFrame = ShardBottomRight2.CFrame * CFrame.Angles(math.rad(180), 0, 0)

	-- Top Left
	ShardTopLeft.Material = PartToFracture.Material
	ShardTopLeft.Color = PartToFracture.Color
	ShardBottomLeft.CanCollide = false
	ShardTopLeft.Transparency = PartToFracture.Transparency
	ShardTopLeft.Size = PartToFracture.Size - Vector3.new(0, (PartToFracture.Size.Y / 2) + BreakingPointY, (PartToFracture.Size.Z / 2) - BreakingPointZ)
	local OldSizeY = ShardTopLeft.Size.Y
	local OldSizeZ = ShardTopLeft.Size.Z
	ShardTopLeft.CFrame = PartToFracture.CFrame * CFrame.new(0, BreakingPointY + (ShardTopLeft.Size.Y / 2), BreakingPointZ - (ShardTopLeft.Size.Z / 2))
	ShardTopLeft.CFrame = ShardTopLeft.CFrame * CFrame.Angles(math.rad(90), 0, 0)
	ShardTopLeft.Size = Vector3.new(ShardTopLeft.Size.X, OldSizeZ, OldSizeY)
	local ShardTopLeft2 = ShardTopLeft:Clone()
	ShardTopLeft2.CFrame = ShardTopLeft2.CFrame * CFrame.Angles(math.rad(180), 0, 0)

	-- Top Right
	ShardTopRight.Material = PartToFracture.Material
	ShardTopRight.Color = PartToFracture.Color
	ShardBottomLeft.CanCollide = false
	ShardTopRight.Transparency = PartToFracture.Transparency
	ShardTopRight.Size = PartToFracture.Size - Vector3.new(0, (PartToFracture.Size.Y / 2) - BreakingPointY, (PartToFracture.Size.Z / 2) - BreakingPointZ)
	ShardTopRight.CFrame = PartToFracture.CFrame * CFrame.new(0, BreakingPointY - (ShardTopRight.Size.Y / 2), BreakingPointZ - (ShardTopRight.Size.Z / 2))
	local ShardTopRight2 = ShardTopRight:Clone()
	ShardTopRight2.CFrame = ShardTopRight2.CFrame * CFrame.Angles(math.rad(180), 0, 0)

	local ShardDictionary = {ShardBottomLeft, ShardBottomLeft2, ShardBottomRight, ShardBottomRight2, ShardTopLeft, ShardTopLeft2, ShardTopRight, ShardTopRight2}

	local FirstShard = nil
	for Index, Shard in ipairs(ShardDictionary) do
		if not FirstShard then
			FirstShard = Shard
		end
		Shard.Anchored = AnchorDebris
		if not AnchorDebris then
			Shard.Velocity = PartToFracture.Velocity
			Shard.RotVelocity = PartToFracture.RotVelocity
		end
		if WeldDebris and FirstShard then
			local Weld = Instance.new("WeldConstraint")
			Weld.Name = "ShardWeld"
			Weld.Part0 = FirstShard
			Weld.Part1 = Shard
			Weld.Parent = Shard
		end
		Shard.Name = "Shard"
		Shard.Parent = PartToFracture.Parent
		if DebrisDespawn then
			Debris:AddItem(Shard, DebrisDespawnDelay)
		end
	end
	PartToFracture:Destroy()

end

return Module


Prompt:
--[[

	Creates a (perfectly centered) host part for particles. Pretty tight use-case. Returns (part, attachment).

	Functions.CreateParticleHost(
		CFrame/Vector3   		<-- |REQ|	As stated
	)

--]]

Response:
return function(pos)
	--- Create host part for particles
	local part = Instance.new("Part")
	part.Anchored = true
	part.CanCollide = false
	part.Transparency = 1
	part.Material = Enum.Material.SmoothPlastic
	part.CastShadow = false
	part.Size = Vector3.new()
	part.CFrame = typeof(pos) == "Vector3" and CFrame.new(pos) or pos
	part.Name = "host"

	--- Create attachment to center particles on point
	local attachment = Instance.new("Attachment")
	attachment.Parent = part

	--- Parent
	part.Parent = game.Workspace.TG_w9YYRt8Eb1AkGy

	--
	return part, attachment
end


Prompt:
--[[
	Package link auto-generated by Rotriever
]]

Response:
local PackageIndex = script.Parent.Parent.Parent._Index

local Package = require(PackageIndex["Picomatch"]["Picomatch"])

return Package


Prompt:
---------------------------------------------------------------|
------// SETTINGS //-------------------------------------------|
---------------------------------------------------------------|

Response:
local FireRate = 600

local LimbsDamage = {52,54}
local TorsoDamage = {70,86}
local HeadDamage = {140,145}
local FallOfDamage = 1
local BulletPenetration = 75

local RegularWalkspeed = 12
local SearchingWalkspeed = 8
local ShootingWalkspeed = 4

local Spread = 6

local MinDistance = 100
local MaxInc = 16

local Mode = 2

local Tracer = true
local TracerColor = Color3.fromRGB(255,255,255)

local BulletFlare = false
local BulletFlareColor = Color3.fromRGB(255,255,255)


Prompt: -- How many times per second the gun can fire

Response: local FireRate = .4


Prompt: --[[Chassis Spawning]]

Response:
--
local fWheel = bike.FrontSection.Wheel
local rWheel = bike.RearSection.Wheel


Prompt:
--[[

TODO: Double tap directional key to run

]]


Prompt:
--[=[
	Unpacks the observables value if a table is received
	@param observable Observable<{T}>
	@return Observable<T>
]=]

Response:
function Rx.unpacked(observable)
	assert(Observable.isObservable(observable), "Bad observable")

	return Observable.new(function(sub)
		return observable:Subscribe(function(value)
			if type(value) == "table" then
				sub:Fire(unpack(value))
			else
				warn(("[Rx.unpacked] - Observable didn't return a table got type %q")
					:format(type(value)))
			end
		end, sub:GetFailComplete())
	end)
end


Prompt: --[[[Default Controls]]

Response:
	--Peripheral Deadzones
	Tune.Peripherals = {
		MSteerWidth				= 67		,	-- Mouse steering control width	(0 - 100% of screen width)
		MSteerDZone				= 10		,	-- Mouse steering deadzone (0 - 100%)

		ControlLDZone			= 5			,	-- Controller steering L-deadzone (0 - 100%)
		ControlRDZone			= 5			,	-- Controller steering R-deadzone (0 - 100%)
	}

	--Control Mapping
	Tune.Controls = {

	--Keyboard Controls
		--Mode Toggles
		ToggleTransMode			= Enum.KeyCode.M					,

		--Primary Controls
		Throttle				= Enum.KeyCode.Up					,
		Brake					= Enum.KeyCode.Down					,
		SteerLeft				= Enum.KeyCode.Left					,
		SteerRight				= Enum.KeyCode.Right				,

		--Secondary Controls
		Throttle2				= Enum.KeyCode.W					,
		Brake2					= Enum.KeyCode.S					,
		SteerLeft2				= Enum.KeyCode.A					,
		SteerRight2				= Enum.KeyCode.D					,

		--Manual Transmission
		ShiftUp					= Enum.KeyCode.E					,
		ShiftDown				= Enum.KeyCode.Q					,
		Clutch					= Enum.KeyCode.LeftShift			,

		--Handbrake
		PBrake					= Enum.KeyCode.P					,

	--Mouse Controls
		MouseThrottle			= Enum.UserInputType.MouseButton1	,
		MouseBrake				= Enum.UserInputType.MouseButton2	,
		MouseClutch				= Enum.KeyCode.W					,
		MouseShiftUp			= Enum.KeyCode.E					,
		MouseShiftDown			= Enum.KeyCode.Q					,
		MousePBrake				= Enum.KeyCode.LeftShift			,

	--Controller Mapping
		ContlrThrottle			= Enum.KeyCode.ButtonR2				,
		ContlrBrake				= Enum.KeyCode.ButtonL2				,
		ContlrSteer				= Enum.KeyCode.Thumbstick1			,
		ContlrShiftUp			= Enum.KeyCode.ButtonY				,
		ContlrShiftDown			= Enum.KeyCode.ButtonX				,
		ContlrClutch			= Enum.KeyCode.ButtonR1				,
		ContlrPBrake			= Enum.KeyCode.ButtonL1				,
		ContlrToggleTMode		= Enum.KeyCode.DPadUp				,
		ContlrToggleTCS			= Enum.KeyCode.DPadDown				,
		ContlrToggleABS			= Enum.KeyCode.DPadRight			,
	}


Prompt: --//Setup//--

Response:
local WindLines = require(script.WindLines)
local WindShake = require(script.WindShake)

local WindSpeed = 20

local WindShakeSettings = {
	WindPower = 0.75,
	WindSpeed = WindSpeed,
	WindDirection = Vector3.new(5, 0, 5)
}

local WindLinesSettings = {
	WindDirection = Vector3.new(5, 0, 5),
	WindSpeed = WindSpeed,
	LifeTime = 9,
	SpawnRate = 15
}

local ShakableObjects = {
	"Leaf",
	"Leaves",
	"Bush"
}


Response:
if setupmode == "Manual" then

if soundplugin == "StockSound" then

mouse.KeyDown:connect(function(key)
	if key == camkey and enabled == false then
		enabled = true
		local sound = car.DriveSeat.Rev
				local effect = script.soundeffect:Clone()
				effect.Name = "soundeffectCop"

		effect.Parent = sound

	elseif key == camkey and enabled == true then
		enabled = false
		local sound = car.DriveSeat.Rev

			sound.soundeffectCop:Destroy()

	end
end)

car.DriveSeat.ChildRemoved:Connect(function(child)

	if child.Name == "SeatWeld" then
		local sound = car.DriveSeat.Rev

		sound.soundeffectCop:Destroy()
	end
	end)

elseif soundplugin == "SoundSuite" then

	mouse.KeyDown:connect(function(key)
		if key == camkey and enabled == false then
			enabled = true
			local descendants = car.Body.Exh:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
						local effect = script.soundeffect:Clone()
						effect.Name = "soundeffectCop"
					effect.Parent = descendant
				end
			end

		elseif key == camkey and enabled == true then
			enabled = false
			local descendants = car.Body.Exh:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
					descendant.soundeffectCop:Destroy()
				end
			end
		end
	end)

	car.DriveSeat.ChildRemoved:Connect(function(child)

		if child.Name == "SeatWeld" then
			local descendants = car.Body.Exh:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
					descendant.soundeffectCop:Destroy()
				end
			end
		end
	end)
elseif soundplugin == "1.5 Sound" then

	mouse.KeyDown:connect(function(key)
		if key == camkey and enabled == false then
			enabled = true
			local descendants = car.Body.Engine:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
					local effect = script.soundeffect:Clone()
					effect.Name = "soundeffectCop"
					effect.Parent = descendant
				end
			end
				local descendants = car.Body.Exhaust:GetDescendants()

				for index, descendant in pairs(descendants) do
					if descendant:IsA("Sound") then
						local effect = script.soundeffect:Clone()
						effect.Name = "soundeffectCop"
						effect.Parent = descendant
					end
				end

		elseif key == camkey and enabled == true then
			enabled = false
			local descendants = car.Body.Engine:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
					descendant.soundeffectCop:Destroy()
				end
			end
				local descendants = car.Body.Exhaust:GetDescendants()

				for index, descendant in pairs(descendants) do
					if descendant:IsA("Sound") then
						descendant.soundeffectCop:Destroy()
		end
	end
end
	car.DriveSeat.ChildRemoved:Connect(function(child)

		if child.Name == "SeatWeld" then
			local descendants = car.Body.Engine:GetDescendants()

			for index, descendant in pairs(descendants) do
				if descendant:IsA("Sound") then
					descendant.soundeffectCop:Destroy()
				end
			end
				local descendants = car.Body.Exhaust:GetDescendants()

				for index, descendant in pairs(descendants) do
					if descendant:IsA("Sound") then
						descendant.soundeffectCop:Destroy()
					end
				end
			end
		end)
	end)
end


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

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

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

	local allowCustomAnimations = true
	local AllowDisableCustomAnimsUserFlag = false

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

	if (AllowDisableCustomAnimsUserFlag) then
		local success, msg = pcall(function() allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations end)
		if not success then
			allowCustomAnimations = true
		end
	end

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

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


Prompt: --activeBullets, rPly, realHitObj, bulletId, fallOff

Response:
function BulletServerModule.validateClientBulletHit(activeBullets, rPly, realHitObj, bulletId, fallOff, waitTime)
	if not activeBullets or not rPly or not realHitObj or not bulletId or not fallOff then return end
	if not string.find(bulletId, tostring(rPly.UserId)) then return end

	local bulletObj = activeBullets[bulletId]
	local startTime = tick()
	while not bulletObj and tick() - startTime <= 0.5 do
		bulletObj = activeBullets[bulletId]
		task.wait(waitTime or 0.05)
	end
	if not bulletObj then return end	--This player has above 500 ms most likely, so we can ignore them

	local serverDir = (realHitObj.Position - bulletObj.ORIGIN).unit
	if bulletObj.DIRECTION:Dot(serverDir) < 0.5 then return end

	return true
end

return BulletServerModule


Prompt: ---- Services ----

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


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

Response:
while true do
	wait();
	local l__LocalPlayer__1 = game.Players.LocalPlayer;
	local l__Human__2 = l__LocalPlayer__1.Character:WaitForChild("Human");
	local l__Infected__3 = l__LocalPlayer__1.Character:WaitForChild("Infected");
	local l__Day__4 = l__LocalPlayer__1.PlayerGui:FindFirstChild("Day");
	local l__Night__5 = l__LocalPlayer__1.PlayerGui:FindFirstChild("Night");
	if l__Human__2.Value == true and game.Workspace.Events.event.Value == false then
		game.Lighting.FogStart = 10;
		game.Lighting.FogEnd = 120;
		game.Lighting.FogColor = Color3.new(0, 0, 0);
		game.Lighting.TimeOfDay = "00:00";
	elseif l__Infected__3.Value == true and game.Workspace.Events.event.Value == false then
		game.Lighting.FogStart = 10;
		game.Lighting.FogEnd = 300;
		game.Lighting.FogColor = Color3.new(0, 0, 0);
		game.Lighting.TimeOfDay = "00:00";
	elseif game.Workspace.Events.event.Value == true and l__Human__2.Value == true then
		game.Lighting.FogStart = 10;
		game.Lighting.FogEnd = 35;
		game.Lighting.FogColor = Color3.new(0, 0, 0);
		game.Lighting.TimeOfDay = "00:00";
	elseif game.Workspace.Events.event.Value == true and l__Infected__3.Value == true then
		game.Lighting.FogStart = 10;
		game.Lighting.FogEnd = 80;
		game.Lighting.FogColor = Color3.new(0, 0, 0);
		game.Lighting.TimeOfDay = "00:00";
	end;
end;


Prompt: -- WorldSize + ScreenSize -> Depth needed

Response:
function ScreenSpace.GetDepthForWidth(screenWidth, worldWidth)
	local aspectRatio = ScreenSpace.AspectRatio()
	local hfactor = math.tan(math.rad(Workspace.CurrentCamera.FieldOfView)/2)
	local wfactor = aspectRatio*hfactor
	local sx, sy = ScreenSpace.ViewSizeX(), ScreenSpace.ViewSizeY()
	--
	return -(sx * worldWidth) / (screenWidth * 2 * wfactor)
end
function ScreenSpace.GetDepthForHeight(screenHeight, worldHeight)
	local hfactor = math.tan(math.rad(Workspace.CurrentCamera.FieldOfView)/2)
	local sy = ScreenSpace.ViewSizeY()
	--
	return -(sy * worldHeight) / (screenHeight * 2 * hfactor)
end


Prompt: -- Public Constructors

Response:
function GJK.new(SetA, SetB, CentroidA, CentroidB, SupportA, SupportB)
	local self = setmetatable({}, GJK)

	self.SetA = SetA
	self.SetB = SetB
	self.CentroidA = CentroidA
	self.CentroidB = CentroidB
	self.SupportA = SupportA
	self.SupportB = SupportB

	return self
end


Prompt:
-- @Description Retrieve a random element from a table, %Random is an optional Random Object.
-- @Arg1 Table
-- @Arg2 Random

Response:
function Basic.GetTableRandom(Tbl, rng)
	if type(Tbl) ~= "table" then return Tbl end

	local Rng = rng or System.Random
	if Tbl.Min and Tbl.Max then
		return Rng:NextNumber(Tbl.Min, Tbl.Max)
	end

	local Array = Basic.TableToArray(Tbl)
	return Array[Rng:NextInteger(1, #Array)]
end


Prompt:
--[[local camera = workspace.Camera

local player = game.Players.LocalPlayer
repeat wait() until player.Character
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")

game:GetService("RunService").RenderStepped:Connect(function()
	local rx, ry, rz = camera.CFrame:ToOrientation()
	ry = math.rad( math.clamp(math.deg(ry), -60, 60) )

	if humanoid.Sit == true then
		camera.CFrame = camera.CFrame:Lerp(CFrame.new(character.PrimaryPart.Position) *
			CFrame.Angles(0, ry, 0) * -- limited Y rotation
			CFrame.Angles(rx, 0, rz), 0.3) -- retain X and Z rotation
	end
end)]]

Response:
--

local camera = workspace.Camera

local player = game.Players.LocalPlayer
repeat wait() until player.Character
local character = player.Character
local humanoid = character:WaitForChild("Humanoid")

game:GetService("RunService").RenderStepped:Connect(function()
	local rx, ry, rz = camera.CFrame:ToOrientation()
	ry = math.rad( math.clamp(math.deg(ry), -60, 60) )

	if humanoid.Sit == true then
		camera.CFrame = camera.CFrame:Lerp(CFrame.new(character.PrimaryPart.Position) *
			CFrame.Angles(0, ry, 0) * CFrame.Angles(rx, 0, rz), 0.3) -- limited Y rotation
	end
end)


Prompt:
--	if math.floor(v) < 75 then
--		carSeat.Parent.Body.MP.Sound.RollOffMode = "LinearSquare"
--	else
--		carSeat.Parent.Body.MP.Sound.RollOffMode = "Inverse"
--	end

Response:
end

F.volumeup = function(VolUp)
	carSeat.Parent.Body.MP.Sound.Volume = carSeat.Parent.Body.MP.Sound.Volume + 1
	scg.Radio.VOLMENU.VolumeText.Text = "VOLUME: "..carSeat.Parent.Body.MP.Sound.Volume
end

local m = 0

F.IMode = function()
	if m == 0 then
		scg.Weather.Visible = false
		scg.Blank.Visible = true
		scg.Radio.Visible = false
		m = 1
	elseif m == 1 then
		scg.Weather.Visible = true
		scg.Blank.Visible = false
		scg.Radio.Visible = false
		m = 2
	else
		scg.Weather.Visible = false
		scg.Blank.Visible = false
		scg.Radio.Visible = true
		m = 0
	end
end

F.updateSong = function(Song)
	carSeat.Parent.Body.MP.Sound:Stop()
	wait()
	carSeat.Parent.Body.MP.Sound.SoundId = "rbxassetid://"..Song
	wait()
	carSeat.Parent.Body.MP.Sound:Play()
end

F.lg = function(n)
	carSeat.Parent.Body.MP.Sound.ES.HighGain = n
end

F.mg = function(n)
	carSeat.Parent.Body.MP.Sound.ES.HighGain = n
end

F.hg = function(n)
	carSeat.Parent.Body.MP.Sound.ES.HighGain = n
end

F.eq = function(n)
	carSeat.Parent.Body.MP.Sound.ES.Enabled = n
end

F.updateVolume = function(Vol)
	carSeat.Parent.Body.MP.Sound.Volume = carSeat.Parent.Body.MP.Sound.Volume + Vol
	scg.Radio.VOLMENU.VolumeText.Text = "VOLUME: "..carSeat.Parent.Body.MP.Sound.Volume
end


Prompt: -- Directions of movement for each handle's dragged face

Response:
local AxisMultipliers = {
	[Enum.NormalId.Top] = Vector3.new(0, 1, 0);
	[Enum.NormalId.Bottom] = Vector3.new(0, -1, 0);
	[Enum.NormalId.Front] = Vector3.new(0, 0, -1);
	[Enum.NormalId.Back] = Vector3.new(0, 0, 1);
	[Enum.NormalId.Left] = Vector3.new(-1, 0, 0);
	[Enum.NormalId.Right] = Vector3.new(1, 0, 0);
}

function HandleDragging.new(Tool)
    local self = {
		Tool = Tool;

		-- Handle state
		IsHandleDragging = false;
		Handles = nil;

		-- Selection state
		InitialExtentsSize = nil;
		InitialExtentsCFrame = nil;
		InitialState = nil;
		InitialFocusCFrame = nil;
    }

    return setmetatable(self, HandleDragging)
end

function HandleDragging:AttachHandles(Part, Autofocus)
	-- Creates and attaches handles to `Part`, and optionally automatically attaches to the focused part

	-- Enable autofocus if requested and not already on
	if Autofocus and not self.Tool.Maid.AutofocusHandle then
		self.Tool.Maid.AutofocusHandle = Selection.FocusChanged:Connect(function ()
			self:AttachHandles(Selection.Focus, true)
		end)

	-- Disable autofocus if not requested and on
	elseif not Autofocus and self.Tool.Maid.AutofocusHandle then
		self.Tool.Maid.AutofocusHandle = nil
	end

	-- Just attach and show the handles if they already exist
	if self.Handles then
		self.Handles:BlacklistObstacle(BoundingBox.GetBoundingBox())
		self.Handles:SetAdornee(Part)
		return
	end

	local AreaPermissions
	local function OnHandleDragStart()
		-- Prepare for moving parts when the handle is clicked

		-- Prevent selection
		Core.Targeting.CancelSelecting()

		-- Indicate dragging via handles
		self.IsHandleDragging = true

		-- Freeze bounding box extents while dragging
		if BoundingBox.GetBoundingBox() then
			local InitialExtentsSize, InitialExtentsCFrame =
				BoundingBox.CalculateExtents(Selection.Parts, BoundingBox.StaticExtents)
			self.InitialExtentsSize = InitialExtentsSize
			self.InitialExtentsCFrame = InitialExtentsCFrame
			BoundingBox.PauseMonitoring()
		end

		-- Stop parts from moving, and capture the initial state of the parts
		local InitialPartStates, InitialModelStates, InitialFocusCFrame = self.Tool:PrepareSelectionForDragging()
		self.InitialPartStates = InitialPartStates
		self.InitialModelStates = InitialModelStates
		self.InitialFocusCFrame = InitialFocusCFrame

		-- Track the change
		self.Tool:TrackChange()

		-- Cache area permissions information
		if Core.Mode == 'Tool' then
			AreaPermissions = Security.GetPermissions(Security.GetSelectionAreas(Selection.Parts), Core.Player)
		end

	end

	local function OnHandleDrag(Face, Distance)
		-- Update parts when the handles are moved

		-- Only drag if handle is enabled
		if not self.IsHandleDragging then
			return
		end

		-- Calculate the increment-aligned drag distance
		Distance = MoveUtil.GetIncrementMultiple(Distance, self.Tool.Increment)

		-- Move the parts along the selected axes by the calculated distance
		self.Tool:MovePartsAlongAxesByFace(Face, Distance, self.InitialPartStates, self.InitialModelStates, self.InitialFocusCFrame)

		-- Make sure we're not entering any unauthorized private areas
		if Core.Mode == 'Tool' and Security.ArePartsViolatingAreas(Selection.Parts, Core.Player, false, AreaPermissions) then
			local Part, InitialPartState = next(self.InitialPartStates)
			Part.CFrame = InitialPartState.CFrame
			MoveUtil.TranslatePartsRelativeToPart(Part, self.InitialPartStates, self.InitialModelStates)
			Distance = 0
		end

		-- Signal out change in dragged distance
		self.Tool.DragChanged:Fire(Distance)

		-- Update bounding box if enabled in global axes movements
		if self.Tool.Axes == 'Global' and BoundingBox.GetBoundingBox() then
			BoundingBox.GetBoundingBox().CFrame = self.InitialExtentsCFrame + (AxisMultipliers[Face] * Distance)
		end

	end

	local function OnHandleDragEnd()
		if not self.IsHandleDragging then
			return
		end

		-- Disable dragging
		self.IsHandleDragging = false

		-- Make joints, restore original anchor and collision states
		for Part, State in pairs(self.InitialPartStates) do
			Part:MakeJoints()
			Core.RestoreJoints(State.Joints)
			Part.CanCollide = State.CanCollide
			Part.Anchored = State.Anchored
		end

		-- Register change
		self.Tool:RegisterChange()

		-- Resume bounding box updates
		BoundingBox.RecalculateStaticExtents()
		BoundingBox.ResumeMonitoring()
	end

	-- Create the handles
	local Handles = require(Libraries:WaitForChild 'Handles')
	self.Handles = Handles.new({
		Color = self.Tool.Color.Color,
		Parent = Core.UIContainer,
		Adornee = Part,
		ObstacleBlacklist = { BoundingBox.GetBoundingBox() },
		OnDragStart = OnHandleDragStart,
		OnDrag = OnHandleDrag,
		OnDragEnd = OnHandleDragEnd
	})

end

function HandleDragging:HideHandles()
	-- Hides the resizing handles

	-- Make sure handles exist and are visible
	if not self.Handles then
		return
	end

	-- Hide the handles
	self.Handles = self.Handles:Destroy()

	-- Disable handle autofocus
	self.Tool.Maid.AutofocusHandle = nil

end

return HandleDragging


Prompt:
--while true do
--	wait(0.5)
--	script.Parent.Parent.Name=script.Parent.Owner.Value .. "'s Ship"
--end

Response: seat.ChildAdded:connect(onChildAdded)


Prompt:
--[=[
	Constructs a new Observable

	```lua
	local function observeAllChildren(parent)
		return Observable.new(function(sub)
			local maid = Maid.new()

			for _, item in pairs(parent:GetChildren()) do
				sub:Fire(item)
			end
			maid:GiveTask(parent.ChildAdded:Connect(function(child)
				sub:Fire(child)
			end))

			return maid
		end)
	end

	-- Prints out all current children, and whenever a new
	-- child is added to workspace
	local maid = Maid.new()
	maid:GiveTask(observeAllChildren(workspace):Subscribe(print))
	```

	@param onSubscribe (subscription: Subscription<T>) -> MaidTask
	@return Observable<T>
]=]

Response:
function Observable.new(onSubscribe)
	assert(type(onSubscribe) == "function", "Bad onSubscribe")

	return setmetatable({
		_source = ENABLE_STACK_TRACING and debug.traceback() or "";
		_onSubscribe = onSubscribe;
	}, Observable)
end


Prompt:
--[[**
	ensures value is an enum of the correct type

	@param enum The enum to check

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

Response:
function t.enum(enum)
	assert(t.Enum(enum))
	return function(value)
		local enumItemSuccess = t.EnumItem(value)
		if not enumItemSuccess then
			return false
		end

		if value.EnumType == enum then
			return true
		else
			return false
		end
	end
end

do
	local checkWrap = t.tuple(t.callback, t.callback)


Prompt: -- << Functions >> --

Response:
UserInputService.MouseIconEnabled = true

function lerp(a, b, c)
	return a + (b - a) * c
end

bobbing = game:GetService("RunService").RenderStepped:Connect(function(deltaTime)
	deltaTime = deltaTime * 60
	if Humanoid.Health <= 0 then
		bobbing:Disconnect()
		return
	end
	local rootMagnitude = Humanoid.RootPart and Vector3.new(Humanoid.RootPart.Velocity.X, 0, Humanoid.RootPart.Velocity.Z).Magnitude or 0
	local calcRootMagnitude = math.min(rootMagnitude, 50)
	if deltaTime > 3 then
		func1 = 0
		func2 = 0
	else
		func1 = lerp(func1, math.cos(tick() * 0.5 * math.random(10, 15)) * (math.random(5, 20) / 200) * deltaTime, 0.05 * deltaTime)
		func2 = lerp(func2, math.cos(tick() * 0.5 * math.random(5, 10)) * (math.random(2, 10) / 200) * deltaTime, 0.05 * deltaTime)
	end
	Camera.CFrame = Camera.CFrame * (CFrame.fromEulerAnglesXYZ(0, 0, math.rad(func3)) * CFrame.fromEulerAnglesXYZ(math.rad(func4 * deltaTime), math.rad(val * deltaTime), val2) * CFrame.Angles(0, 0, math.rad(func4 * deltaTime * (calcRootMagnitude / 5))) * CFrame.fromEulerAnglesXYZ(math.rad(func1), math.rad(func2), math.rad(func2 * 10)))
	val2 = math.clamp(lerp(val2, -Camera.CFrame:VectorToObjectSpace((Humanoid.RootPart and Humanoid.RootPart.Velocity or Vector3.new()) / math.max(Humanoid.WalkSpeed, 0.01)).X * 0.08, 0.1 * deltaTime), -0.35, 0.2)
	func3 = lerp(func3, math.clamp(UserInputService:GetMouseDelta().X, -5, 5), 0.25 * deltaTime)
	func4 = lerp(func4, math.sin(tick() * int) / 5 * math.min(1, int2 / 10), 0.25 * deltaTime)
	if rootMagnitude > 1 then
		val = lerp(val, math.cos(tick() * 0.5 * math.floor(int)) * (int / 200), 0.25 * deltaTime)
	else
		val = lerp(val, 0, 0.05 * deltaTime)
	end
	if rootMagnitude > 12 then
		int = 20
		int2 = 18
	elseif rootMagnitude > 0.1 then
		int = 12
		int2 = 14
	else
		int2 = 0
	end
	Player.CameraMaxZoomDistance = 0.5
	Player.CameraMinZoomDistance = 0.5
	vect3 = lerp(vect3, Camera.CFrame.LookVector, 0.125 * deltaTime)
end)


Prompt:
-- Any arguments passed into Tree:run() can be received after the first parameter, obj
-- Example: Tree:run(deltaTime) - > task:start(obj,deltaTime)

Response:
function task:start(obj)
	--[[
		(optional) this function is called directly before the run method
  		is called. It allows you to setup things before starting to run
  		Beware: if task is resumed after calling running(), start is not called.
	--]]

end
function task:finish(obj)
	--[[
		(optional) this function is called directly after the run method
		is completed with either success() or fail(). It allows you to clean up
		things, after you run the task.
	--]]

end
function task:run(obj)
	--[[
		This is the meat of your task. The run method does everything you want it to do.

  	 	Finish it with one of these method calls:
  		success() - The task did run successfully
  		fail()    - The task did fail
  		running() - The task is still running and will be called directly from parent node
	--]]
	--obj:print("Run Enemy Sequence")
	local Type = obj.Model.HostileType.Value
	local TypeFolder = game.ServerScriptService.Source.HostileNPCs.NPCs.HostileTypes:FindFirstChild(Type)
	if TypeFolder then
		local treeType = TypeFolder[Node].Value
		local tree = TreeCreator:Create(obj,treeType..Node)
		tree:run()
	end

	self:success();
	return
end
return task;


Prompt:
-- Rapid Flash Rates
-- 120 flashes/min -> wait(.25) (Canadian protected turns)
-- 150 flashes/min -> wait(.2) (Canadian protected turns)

Response:
FlashRate = script.Parent.Parent.Configuration.BasicSettings.FlashRate.Value
RapidFlashRate = script.Parent.Parent.Configuration.BasicSettings.FlashRate.RapidFlashRate.Value
RapidFlashRateCheck = script.Parent.Parent.Configuration.BasicSettings.FlashRate.EnableRapidFlashRate.Value

while true do
	script.Parent.Value = true
	wait(FlashRate)
	script.Parent.Value = false
	if RapidFlashRateCheck == true then
		wait(RapidFlashRate)
	elseif RapidFlashRateCheck == false then
		wait(FlashRate)
		end
end


Prompt: -- Event binding

Response:
Players.PlayerAdded:connect(OnPlayerAdded)
Players.PlayerRemoving:connect(OnPlayerRemoving)

return PlayerManager


Prompt: --[[Engine]]

Response:
	--		[TORQUE CURVE VISUAL]
	--		https://www.desmos.com/calculator/nap6stpjqf
	--		Use sliders to manipulate values
	--		Edit everything as if your car is NATURALLY aspirated, or as if it lacks a turbo.

	Tune.Horsepower		= 270		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 5800
	Tune.Redline		= 6500
	Tune.EqPoint		= 5250
	Tune.PeakSharpness	= 3.5
	Tune.CurveMult		= 0.02

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

	--Turbo Settings
	Tune.Aspiration		= "Single"												--[[
	[Aspiration]
		"Natural"		: N/A, Naturally aspirated engine
		"Single"		: Single turbocharger
		"Double"		: Twin turbocharger											]]

	Tune.Boost			= 6		--Max PSI per turbo (If you have two turbos and this is 15, the PSI will be 30)
	Tune.TurboSize		= 45		--Turbo size; the bigger it is, the more lag it has.
	Tune.CompressRatio	= 4.6			--The compression ratio (look it up)

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


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

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

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

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

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

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

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

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

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

ScaleLimit					= 4;			-- The maximum size players with a rank lower than 'IgnoreScaleLimit' can scale theirself. For example, players will be limited to ;size me 4 (if limit is 4) - any number above is blocked.
IgnoreScaleLimit			= 3;			-- Any ranks equal or above this value will ignore 'ScaleLimit'
CommandLimits				= {				-- Enables you to set limits for commands which have a number argument. Ranks equal to or higher than 'IgnoreLimit' will not be affected by Limit.
	["fly"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["fly2"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["noclip"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["noclip2"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["speed"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
	["jumpPower"]	= {
		Limit 				= 10000;
		IgnoreLimit 		= 3;
	};
};

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

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

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


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

function Triangle.new(parent)
	local self = setmetatable({}, Triangle)

	self.a = nil
	self.b = nil
	self.c = nil

	self.Beam = BEAM:Clone()
	self.Attachment0 = ATTACHMENT:Clone()
	self.Attachment1 = ATTACHMENT:Clone()
	self.Parent = nil

	self.Beam.Attachment0 = self.Attachment0
	self.Beam.Attachment1 = self.Attachment1

	self:SetParent(parent)

	return self
end


Response:
local  Paint = false

script.Parent.MouseButton1Click:connect(function()
	Paint = not Paint
	handler:FireServer("Lightblue",Paint)
end)


Response:
local  Paint = false

script.Parent.MouseButton1Click:connect(function()
	Paint = not Paint
	handler:FireServer("Mauve",Paint)
end)


Prompt: -- copied from `expect` - should be shared

Response:
export type ExpectationResult = {
	pass: boolean,
	message: () -> string,
}

return {}


Prompt: --//Shifting//-

Response:
if key == "k" then
		 carSeat.DriveSeat.Idle.Volume = .5
			carSeat.DriveSeat.Idle.MaxDistance = 250
			carSeat.DriveSeat.Idle.EmitterSize = 5

		 carSeat.DriveSeat.Rev.Volume = .5
			carSeat.DriveSeat.Rev.MaxDistance = 250
			carSeat.DriveSeat.Rev.EmitterSize = 5
	  carSeat.DriveSeat.Rev2.Volume = .4
			carSeat.DriveSeat.Rev2.MaxDistance = 250
			carSeat.DriveSeat.Rev2.EmitterSize = 5
	  carSeat.DriveSeat.Rev3.Volume = .5
			carSeat.DriveSeat.Rev3.MaxDistance = 250
			carSeat.DriveSeat.Rev3.EmitterSize = 5

	  carSeat.DriveSeat.Start2.Volume = .5
			carSeat.DriveSeat.Start2.MaxDistance = 250
			carSeat.DriveSeat.Start2.EmitterSize = 5

	  carSeat.Body.RipEars.Rev.Volume = 2
			carSeat.Body.RipEars.Rev.MaxDistance = 250
			carSeat.Body.RipEars.Rev.EmitterSize = 5
elseif key == "l" then
	  carSeat.DriveSeat.Idle.Volume = 5.5
			carSeat.DriveSeat.Idle.MaxDistance = 450

		 carSeat.DriveSeat.Rev.Volume = 1
			carSeat.DriveSeat.Rev.MaxDistance = 450
	  carSeat.DriveSeat.Rev2.Volume = 0.8
			carSeat.DriveSeat.Rev2.MaxDistance = 450
		 carSeat.DriveSeat.Rev3.Volume = 1
			carSeat.DriveSeat.Rev3.MaxDistance = 450

	 carSeat.DriveSeat.Start2.Volume = 8.5
			carSeat.DriveSeat.Start2.MaxDistance = 450

		 carSeat.Body.RipEars.Rev.Volume = 10
			carSeat.Body.RipEars.Rev.MaxDistance = 450
			carSeat.Body.RipEars.Rev.EmitterSize = 10
	end
end)


Prompt: --// F key, Horn

Response:
mouse.KeyDown:connect(function(key)
	if key=="f" then
		veh.Lightbar.middle.Airhorn:Play()
	end
end)


Prompt:
--[[
TODO: Delete
@param int amount
]]

Response:
function Cell:SetNeighbours(amount)
	self.Neighbours = amount
	self.Label.Text = amount
end


Prompt: --Made by Stickmasterluke

Response:
sp = script.Parent

speedboost = 1		--100% speed bonus
speedforsmoke = math.huge	--smoke apears when character running >= 10 studs/second.

local tooltag = script:WaitForChild("ToolTag",2)

if tooltag~=nil then
	local tool=tooltag.Value
	local h=sp:FindFirstChild("Humanoid")
	if h~=nil then
		h.WalkSpeed=16+16*speedboost
		local hrp = sp:FindFirstChild("HumanoidRootPart")
		if hrp ~= nil then
			smokepart=Instance.new("Part")
			smokepart.FormFactor="Custom"
			smokepart.Size=Vector3.new(0,0,0)
			smokepart.TopSurface="Smooth"
			smokepart.BottomSurface="Smooth"
			smokepart.CanCollide=false
			smokepart.Transparency=1
			local weld=Instance.new("Weld")
			weld.Name="SmokePartWeld"
			weld.Part0 = hrp
			weld.Part1=smokepart
			weld.C0=CFrame.new(0,-3.5,0)*CFrame.Angles(math.pi/4,0,0)
			weld.Parent=smokepart
			smokepart.Parent=sp
			smoke=Instance.new("Smoke")
			smoke.Enabled = hrp.Velocity.magnitude>speedforsmoke
			smoke.RiseVelocity=2
			smoke.Opacity=0
			smoke.Size=0
			smoke.Parent=smokepart
			h.Running:connect(function(speed)
				if smoke and smoke~=nil then
					smoke.Enabled=speed>speedforsmoke
				end
			end)
		end
	end
	while tool~=nil and tool.Parent==sp and h~=nil do
		sp.ChildRemoved:wait()
	end
	local h=sp:FindFirstChild("Humanoid")
	if h~=nil then
		h.WalkSpeed=16
	end
end

if smokepart~=nil then
	smokepart:Destroy()
end
script:Destroy()


Prompt: --[[Steering]]

Response:
	Tune.SteerInner		= 34		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 34		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .06		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .06		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 330		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree

	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness


Response:
local  Paint = false

script.Parent.MouseButton1Click:connect(function()
	Paint = not Paint
	handler:FireServer("Mint",Paint)
end)


Prompt: -- Get player control module

Response:
function GuiController:_getPlayerControls()
	if not self._playerControls then
		pcall(function()
			self._playerControls = require(self.player.PlayerScripts.PlayerModule):GetControls()
		end)
	end
	return self._playerControls
end


Prompt: -- May return NaN or inf or -inf

Response:
local function findAngleBetweenXZVectors(vec2, vec1)
	-- This is a way of finding the angle between the two vectors:
	return math.atan2(vec1.X*vec2.Z-vec1.Z*vec2.X, vec1.X*vec2.X + vec1.Z*vec2.Z)
end


Prompt:
--// Use the below table to define "pre-set" command aliases
--// Command aliases; Format: {[":alias <arg1> <arg2> ..."] = ":command <arg1> <arg2> ..."}

Response:
settings.Aliases = {
	[":examplealias <player> <fireColor>"] = ":ff <player> | :fling <player> | :fire <player> <fireColor>" --// Order arguments appear in alias string determines their required order in the command message when ran later
};

settings.Banned = {}		-- List of people banned from the game 		  Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID"; "GamePass:GamePassID";}
settings.Muted = {}			-- List of people muted (cannot send chat messages)				 		  Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID"; "GamePass:GamePassID";}
settings.Blacklist = {}		-- List of people banned from running commands 	  Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID"; "GamePass:GamePassID";}
settings.Whitelist = {}		-- People who can join if whitelist enabled	  Format: {"Username"; "Username:UserId"; UserId; "Group:GroupId:GroupRank"; "Group:GroupId"; "Item:ItemID"; "GamePass:GamePassID";}

settings.MusicList = {} 	-- List of songs to appear in the :musiclist	  Format: {{Name = "somesong", ID = 1234567}, {Name = "anotherone", ID = 1243562}}
settings.CapeList = {}		-- List of capes							  Format: {{Name = "somecape", Material = "Fabric", Color = "Bright yellow", ID = 12345567, Reflectance = 1}; {etc more stuff here}}
settings.InsertList = {} 	-- List of models to appear in the :insertlist and can be inserted using ':insert <name>'	  Format: {{Name = "somemodel", ID = 1234567}; {Name = "anotherone", ID = 1243562}}

settings.OnStartup = {}		-- List of commands ran at server start								Format: {":notif TestNotif"}
settings.OnJoin = {}		-- List of commands ran as player on join (ignores adminlevel)		Format: {":cmds"}
settings.OnSpawn = {}		-- List off commands ran as player on spawn (ignores adminlevel)	Format: {"!fire Really red",":ff me"}

settings.SaveAdmins = true		  -- If true anyone you :admin or :headadmin in-game will save
settings.LoadAdminsFromDS = true  -- If false, any admins saved in your DataStores will not load
settings.WhitelistEnabled = false -- If true enables the whitelist/server lock; Only lets admins & whitelisted users join

settings.Prefix = ":"				-- The : in :kill me
settings.PlayerPrefix = "!"			-- The ! in !donate; Mainly used for commands that any player can run; Do not make it the same as settings.Prefix
settings.SpecialPrefix = ""			-- Used for things like "all", "me" and "others" (If changed to ! you would do :kill !me)
settings.SplitKey = " "				-- The space in :kill me (eg if you change it to / :kill me would be :kill/me)
settings.BatchKey = "|"				-- :kill me | :ff bob | :explode scel
settings.ConsoleKeyCode = "Quote"	-- Keybind to open the console; Rebindable per player in userpanel; KeyCodes: https://developer.roblox.com/en-us/api-reference/enum/KeyCode


Prompt: --// Requst

Response: local CameraModule = require(rp.Shared['Camera'])


Prompt:
--[[
	Runs the given TestPlan and returns a TestResults object representing the
	results of the run.
]]

Response:
function TestRunner.runPlan(plan)
	local session = TestSession.new(plan)
	local lifecycleHooks = LifecycleHooks.new()

	local exclusiveNodes = plan:findNodes(function(node)
		return node.modifier == TestEnum.NodeModifier.Focus
	end)

	session.hasFocusNodes = #exclusiveNodes > 0

	TestRunner.runPlanNode(session, plan, lifecycleHooks)

	return session:finalize()
end


Prompt: --[[Transmission]]

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

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

	--Automatic Settings
	Tune.AutoShiftMode	= "RPM"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)

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


Prompt: --Loop For Making Rays For The Bullet's Trajectory

Response:
for i = 1, 30 do
	local thisOffset = offset + Vector3.new(0, yOffset*(i-1), 0)
	local travelRay = Ray.new(point1,thisOffset)
	local hit, position = workspace:FindPartOnRay(travelRay, parts.Parent)

	local distance 		= (position - point1).magnitude
	round.Size				= Vector3.new(1, distance, 1)
	round.CFrame			= CFrame.new(position, point1)
								* CFrame.new(0, 0, -distance/2)
								* CFrame.Angles(math.rad(90),0,0)
	round.Parent			= workspace
	point1					= point1 + thisOffset

	if hit then
		round:remove()
		local e = Instance.new("Explosion")
		e.BlastRadius = 4
		e.ExplosionType = "NoCraters"
		e.BlastPressure = 1
		e.Position = position
		e.Parent = workspace

		local players = game.Players:getChildren()
		for i = 1, #players do

			if players[i].TeamColor ~= script.Parent.Parent.Tank.Value then --if he's not an ally
				character = players[i].Character
				if character then
					torso = character:findFirstChild'Torso'
					if torso then

						torsoPos = torso.Position
						origPos = round.Position

						local ray = Ray.new(origPos, torsoPos-origPos)
						local hit, position = game.Workspace:FindPartOnRayWithIgnoreList(ray,ignoreList)
						if hit then
							if hit.Parent == character then
								human = hit.Parent:findFirstChild("Humanoid")
								if human then
									distance = (position-origPos).magnitude


Prompt: -- SAVE --

Response:
function API:SavePlayerBoothText(TargetId, Text)

	rawset(BoothText, TargetId, Text)

end

function API:SavePlayerSingText(TargetId, Text)

	rawset(SingText, TargetId, Text)

end

function API:SavePlayerBooth(TargetId, Id)

	rawset(CurrentBooth, TargetId, Id)

end


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

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

local damage = 5

local slash_damage = 8
local lunge_damage = 12

sword = script.Parent.Handle
Tool = script.Parent

local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "rbxasset://sounds\\swordslash.wav"
SlashSound.Parent = sword
SlashSound.Volume = .7

local LungeSound = Instance.new("Sound")
LungeSound.SoundId = "rbxasset://sounds\\swordlunge.wav"
LungeSound.Parent = sword
LungeSound.Volume = .6

local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "rbxasset://sounds\\unsheath.wav"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1

function blow(hit)
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
	if humanoid~=nil and humanoid ~= hum and hum ~= nil then
		-- final check, make sure sword is in-hand

		local right_arm = vCharacter:FindFirstChild("Right Arm")
		if (right_arm ~= nil) then
			local joint = right_arm:FindFirstChild("RightGrip")
			if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
				tagHumanoid(humanoid, vPlayer)
				humanoid:TakeDamage(damage)
				wait(1)
				untagHumanoid(humanoid)
			end
		end

	end
end

function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end

function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end

function lunge()
	damage = lunge_damage

	LungeSound:play()

	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Lunge"
	anim.Parent = Tool

	force = Instance.new("BodyVelocity")
	force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80
	force.Parent = Tool.Parent.Torso
	wait(.2)
	swordOut()
	wait(.2)
	force.Parent = nil
	wait(.4)
	swordUp()

	damage = slash_damage
end

function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(1,0,0)
end

function swordAcross()
	-- parry
end

Tool.Enabled = true
local last_attack = 0
function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

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

	t = r.Stepped:wait()

	if (t - last_attack < .2) then
		lunge()
	else
		attack()
	end

	last_attack = t

	--wait(.5)

	Tool.Enabled = true
end

function onEquipped()
	UnsheathSound:play()
end

script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)

connection = sword.Touched:connect(blow)


Prompt: --// Connections

Response:
L_1_.Equipped:connect(function()
	local L_39_ = L_3_:FindFirstChild('Torso')
	local L_40_ = L_3_:FindFirstChild('Head')
	local L_41_ = L_3_:FindFirstChild('HumanoidRootPart')

	L_14_ = Instance.new("Motor6D", L_39_)
	L_14_.Parent = L_39_
	L_14_.Name = "Clone"
	L_14_.Part0 = L_41_
	L_14_.Part1 = L_40_
	L_14_.C0 = L_39_:WaitForChild("Neck").C0
	L_14_.C1 = L_39_:WaitForChild("Neck").C1


Prompt: -- Settings

Response:
local Universal 	= true
local BulletType 	= "Universal"
local Infinite 		= true
local Stored 		= script.Stored

if not Infinite then
	script.Parent.ObjectText = BulletType.." | "..Stored.Value
else
	script.Parent.ObjectText = BulletType
end


Prompt: -- Local Functions

Response:
local function toggleNonTutorialGui(isEnabled)
	local PlayerGui = player.PlayerGui

	for _, child in ipairs(PlayerGui:GetChildren()) do
		if child:IsA("GuiObject") and child.Name ~= "Tutorial" then
			child.Enabled = isEnabled
		end
	end
end

local function startTutorial()
	toggleNonTutorialGui(false)

	Panels.Visible = true
	Panel1.Visible = true
	Panel2.Visible = false
end

local function nextPanel(input, gameProcessed)
	if Panel1.Visible == true then
		Panel1.Visible = false
		Panel2.Visible = true
		NextButton.ButtonLabel.Text = "GOT IT"
	elseif Panel2.Visible == true then
		Panel2.Visible = false

		-- Disable tutorial
		Panels.Visible = false

		-- Enable other gui
		toggleNonTutorialGui(true)

		if not IS_MOBILE then
			-- Show and tween arrow over move button until player earns
			-- 10 points
			Arrow.Visible = true
			local arrowThread = coroutine.create(
				function()
					local goal = totalPoints.Value + 10
					local startPos = Arrow.Position

					repeat
						Arrow:TweenPosition(UDim2.new(startPos.X.Scale, 0, startPos.Y.Scale, -20),
							Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1, true)
						wait(1)
						Arrow:TweenPosition(UDim2.new(startPos.X.Scale, 0, startPos.Y.Scale, 0),
								Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1, true)
						wait(1)
					until totalPoints.Value >= goal

					Arrow.Visible = false
				end)
			coroutine.resume(arrowThread)
		end
	end
end


Prompt:
--// All global vars will be wiped/replaced except script
--// All guis are autonamed client.Variables.CodeName..gui.Name
--// Be sure to update the console gui's code if you change stuff

Response:
return function(data, env)
	if env then
		setfenv(1, env)
	end

	local Title,Message = data.Title,data.Message
	if not Title or not Message then return end

	local gTable = data.gTable
	local baseClip = script.Parent.Parent.BaseClip
	local messageTemplate = baseClip.Frame
	local messageClone = messageTemplate
	messageClone.Size = UDim2.new(1,0,0,baseClip.AbsoluteSize.Y)
	messageClone.Position = UDim2.new(0,0,-1,0)
	messageClone.Parent = baseClip
	messageClone.Visible = true
	local closeButton = messageClone:WaitForChild('TextButton')
	local Top = messageClone:WaitForChild('Top')
	local Body = messageClone:WaitForChild('Body')
	local topTitle = Top:WaitForChild('Title')
	local bodyText = Body:WaitForChild('To Name Later')
	local Left = Top:WaitForChild('Left')
	local tim = data.Time
	topTitle.Text = Title
	bodyText.Text = Message
	local bodyBounds_Y = bodyText.TextBounds.Y
	if bodyBounds_Y < 30 then
		bodyBounds_Y = 30
	else
		bodyBounds_Y = bodyBounds_Y + 15
	end
	local titleSize_Y = Top.Size.Y.Offset
	messageClone.Size = UDim2.new(1,0,0,bodyBounds_Y+titleSize_Y)

	local function Resize()
		local toDisconnect
		local Success, Message = pcall(function()
			toDisconnect = gTable.BindEvent(baseClip.Changed, function(Prop)
				if Prop == "AbsoluteSize" then
					messageClone.Size = UDim2.new(1,0,0,baseClip.AbsoluteSize.Y)
					local bodyBounds_Y = bodyText.TextBounds.Y
					if bodyBounds_Y < 30 then
						bodyBounds_Y = 30
					else
						bodyBounds_Y = bodyBounds_Y + 15
					end
					local titleSize_Y = Top.Size.Y.Offset
					messageClone.Size = UDim2.new(1,0,0,bodyBounds_Y+titleSize_Y)
					if messageClone ~= nil and messageClone.Parent == baseClip then
						messageClone:TweenPosition(UDim2.new(0,0,0.5,-messageClone.Size.Y.Offset/2),'Out','Quint',0.5,true)
					else
						if toDisconnect then
							toDisconnect:Disconnect()
						end
						return
					end
				end
			end)
		end)
		if Message and toDisconnect then
			toDisconnect:Disconnect()
			return
		end
	end

	gTable.CustomDestroy = function()
		gTable.CustomDestroy = nil
		gTable.ClearEvents()

		pcall(function()
			messageClone:TweenPosition(UDim2.new(0,0,1,0),'Out','Quint',0.3,true,function(Done)
				if Done == Enum.TweenStatus.Completed and messageClone then
					messageClone:Destroy()
				elseif Done == Enum.TweenStatus.Canceled and messageClone then
					messageClone:Destroy()
				end
			end)
			wait(0.3)
		end)

		return gTable.Destroy()
	end

	gTable:Ready()
	messageClone:TweenPosition(UDim2.new(0,0,0.5,-messageClone.Size.Y.Offset/2),'Out','Quint',0.5,true,function(Status)
		if Status == Enum.TweenStatus.Completed then
			Resize()
		end
	end)

	gTable.BindEvent(closeButton.MouseButton1Click, function()
		pcall(function()
			messageClone:TweenPosition(UDim2.new(0,0,1,0),'Out','Quint',0.3,true,function(Done)
				if Done == Enum.TweenStatus.Completed and messageClone then
					messageClone:Destroy()
					gTable:Destroy()
				elseif Done == Enum.TweenStatus.Canceled and messageClone then
					messageClone:Destroy()
					gTable:Destroy()
				end
			end)
		end)
	end)

	local waitTime = tim or (#bodyText.Text*0.1)+1
	local Position_1,Position_2 = string.find(waitTime,"%p")
	if Position_1 and Position_2 then
		local followingNumbers = tonumber(string.sub(waitTime,Position_1))
		if followingNumbers >= 0.5 then
			waitTime = tonumber(string.sub(waitTime,1,Position_1))+1
		else
			waitTime = tonumber(string.sub(waitTime,1,Position_1))
		end
	end
	--[[if waitTime > 15 then
		waitTime = 15
	elseif waitTime <= 1 then
		waitTime = 2
	end]]--
	Left.Text = `{waitTime}.00`
	for i=waitTime,1,-1 do
		if not Left then break end
		Left.Text = `{i}.00`
		wait(1)
	end
	Left.Text = "Closing.."
	wait(0.3)
	if messageClone then
		pcall(function()
			messageClone:TweenPosition(UDim2.new(0,0,1,0),'Out','Quint',0.3,true,function(Done)
				if Done == Enum.TweenStatus.Completed and messageClone then
					messageClone:Destroy()
					gTable:Destroy()
				elseif Done == Enum.TweenStatus.Canceled and messageClone then
					messageClone:Destroy()
					gTable:Destroy()
				end
			end)
		end)
	end
end


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

Response:
local l__Players__1 = game:GetService("Players");
local l__ReplicatedStorage__2 = game:GetService("ReplicatedStorage");
local l__Chat__3 = game:GetService("Chat");
local l__TextService__4 = game:GetService("TextService");
local v5 = l__Players__1.LocalPlayer;
while v5 == nil do
	l__Players__1.ChildAdded:wait();
	v5 = l__Players__1.LocalPlayer;
end;
local l__PlayerGui__6 = v5:WaitForChild("PlayerGui");
local v7, v8 = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserShouldLocalizeGameChatBubble");
end);
local v9, v10 = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserFixBubbleChatText");
end);
local v11, v12 = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserRoactBubbleChatBeta");
end);
local v13, v14 = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserPreventOldBubbleChatOverlap");
end);
local v15 = 128 - utf8.len(utf8.nfcnormalize("...")) - 1;
local v16 = Instance.new("ScreenGui");
v16.Name = "BubbleChat";
v16.ResetOnSpawn = false;
v16.Parent = l__PlayerGui__6;
local function u1()
	local v17 = {
		data = {}
	};
	local v18 = Instance.new("BindableEvent");
	v17.Emptied = v18.Event;
	function v17.Size(p1)
		return #v17.data;
	end;
	function v17.Empty(p2)
		return v17:Size() <= 0;
	end;
	function v17.PopFront(p3)
		table.remove(v17.data, 1);
		if v17:Empty() then
			v18:Fire();
		end;
	end;
	function v17.Front(p4)
		return v17.data[1];
	end;
	function v17.Get(p5, p6)
		return v17.data[p6];
	end;
	function v17.PushBack(p7, p8)
		table.insert(v17.data, p8);
	end;
	function v17.GetData(p9)
		return v17.data;
	end;
	return v17;
end;
local function u2(p10, p11, p12)
	local v19 = {
		ComputeBubbleLifetime = function(p13, p14, p15)
			if p15 then
				return 8 + 7 * math.min(utf8.len(utf8.nfcnormalize(p14)) / 75, 1);
			end;
			return 12 + 8 * math.min(utf8.len(utf8.nfcnormalize(p14)) / 75, 1);
		end,
		Origin = nil,
		RenderBubble = nil,
		Message = p10
	};
	v19.BubbleDieDelay = v19:ComputeBubbleLifetime(p10, p12);
	v19.BubbleColor = p11;
	v19.IsLocalPlayer = p12;
	return v19;
end;
local u3 = {
	WHITE = "dub",
	BLUE = "blu",
	GREEN = "gre",
	RED = "red"
};
function createChatBubbleMain(p16, p17)
	local v20 = Instance.new("ImageLabel");
	v20.Name = "ChatBubble";
	v20.ScaleType = Enum.ScaleType.Slice;
	v20.SliceCenter = p17;
	v20.Image = "rbxasset://textures/" .. tostring(p16) .. ".png";
	v20.BackgroundTransparency = 1;
	v20.BorderSizePixel = 0;
	v20.Size = UDim2.new(1, 0, 1, 0);
	v20.Position = UDim2.new(0, 0, 0, 0);
	return v20;
end;
function createChatBubbleTail(p18, p19)
	local v21 = Instance.new("ImageLabel");
	v21.Name = "ChatBubbleTail";
	v21.Image = "rbxasset://textures/ui/dialog_tail.png";
	v21.BackgroundTransparency = 1;
	v21.BorderSizePixel = 0;
	v21.Position = p18;
	v21.Size = p19;
	return v21;
end;
function createChatBubbleWithTail(p20, p21, p22, p23)
	local v22 = createChatBubbleMain(p20, p23);
	createChatBubbleTail(p21, p22).Parent = v22;
	return v22;
end;
function createScaledChatBubbleWithTail(p24, p25, p26, p27)
	local v23 = createChatBubbleMain(p24, p27);
	local v24 = Instance.new("Frame");
	v24.Name = "ChatBubbleTailFrame";
	v24.BackgroundTransparency = 1;
	v24.SizeConstraint = Enum.SizeConstraint.RelativeXX;
	v24.Position = UDim2.new(0.5, 0, 1, 0);
	v24.Size = UDim2.new(p25, 0, p25, 0);
	v24.Parent = v23;
	createChatBubbleTail(p26, UDim2.new(1, 0, 0.5, 0)).Parent = v24;
	return v23;
end;
function createChatImposter(p28, p29, p30)
	local v25 = Instance.new("ImageLabel");
	v25.Name = "DialogPlaceholder";
	v25.Image = "rbxasset://textures/" .. tostring(p28) .. ".png";
	v25.BackgroundTransparency = 1;
	v25.BorderSizePixel = 0;
	v25.Position = UDim2.new(0, 0, -1.25, 0);
	v25.Size = UDim2.new(1, 0, 1, 0);
	local v26 = Instance.new("ImageLabel");
	v26.Name = "DotDotDot";
	v26.Image = "rbxasset://textures/" .. tostring(p29) .. ".png";
	v26.BackgroundTransparency = 1;
	v26.BorderSizePixel = 0;
	v26.Position = UDim2.new(0.001, 0, p30, 0);
	v26.Size = UDim2.new(1, 0, 0.7, 0);
	v26.Parent = v25;
	return v25;
end;
local u4 = {
	ChatBubble = {},
	ChatBubbleWithTail = {},
	ScalingChatBubbleWithTail = {},
	CharacterSortedMsg = (function()
		local v27 = {
			data = {}
		};
		local u5 = 0;
		function v27.Size(p31)
			return u5;
		end;
		function v27.Erase(p32, p33)
			if v27.data[p33] then
				u5 = u5 - 1;
			end;
			v27.data[p33] = nil;
		end;
		function v27.Set(p34, p35, p36)
			v27.data[p35] = p36;
			if p36 then
				u5 = u5 + 1;
			end;
		end;
		function v27.Get(p37, p38)
			if not p38 then
				return;
			end;
			if not v27.data[p38] then
				v27.data[p38] = {
					Fifo = u1(),
					BillboardGui = nil
				};
				local u6 = nil;
				u6 = v27.data[p38].Fifo.Emptied:connect(function()
					u6:disconnect();
					v27:Erase(p38);
				end);
			end;
			return v27.data[p38];
		end;
		function v27.GetData(p39)
			return v27.data;
		end;
		return v27;
	end)()
};
local function v28(p40, p41, p42, p43, p44)
	u4.ChatBubble[p40] = createChatBubbleMain(p41, p44);
	if p43 then
		local v29 = -1;
	else
		v29 = 0;
	end;
	u4.ChatBubbleWithTail[p40] = createChatBubbleWithTail(p41, UDim2.new(0.5, -14, 1, v29), UDim2.new(0, 30, 0, 14), p44);
	if p43 then
		local v30 = -1;
	else
		v30 = 0;
	end;
	u4.ScalingChatBubbleWithTail[p40] = createScaledChatBubbleWithTail(p41, 0.5, UDim2.new(-0.5, 0, 0, v30), p44);
end;
v28(u3.WHITE, "ui/dialog_white", "ui/chatBubble_white_notify_bkg", false, Rect.new(5, 5, 15, 15));
v28(u3.BLUE, "ui/dialog_blue", "ui/chatBubble_blue_notify_bkg", true, Rect.new(7, 7, 33, 33));
v28(u3.RED, "ui/dialog_red", "ui/chatBubble_red_notify_bkg", true, Rect.new(7, 7, 33, 33));
v28(u3.GREEN, "ui/dialog_green", "ui/chatBubble_green_notify_bkg", true, Rect.new(7, 7, 33, 33));
function u4.SanitizeChatLine(p45, p46)
	if not (v15 < utf8.len(utf8.nfcnormalize(p46))) then
		return p46;
	end;
	return string.sub(p46, 1, utf8.offset(p46, v15 + utf8.len(utf8.nfcnormalize("...")) + 1) - 1);
end;
local function u7(p47)
	local v31 = Instance.new("BillboardGui");
	v31.Adornee = p47;
	v31.Size = UDim2.new(0, 400, 0, 250);
	v31.StudsOffset = Vector3.new(0, 1.5, 2);
	v31.Parent = v16;
	local v32 = Instance.new("Frame");
	v32.Name = "BillboardFrame";
	v32.Size = UDim2.new(1, 0, 1, 0);
	v32.Position = UDim2.new(0, 0, -0.5, 0);
	v32.BackgroundTransparency = 1;
	v32.Parent = v31;
	local u8 = nil;
	u8 = v32.ChildRemoved:connect(function()
		if #v32:GetChildren() <= 1 then
			u8:disconnect();
			v31:Destroy();
		end;
	end);
	u4:CreateSmallTalkBubble(u3.WHITE).Parent = v32;
	return v31;
end;
function u4.CreateBillboardGuiHelper(p48, p49, p50)
	if p49 and not u4.CharacterSortedMsg:Get(p49).BillboardGui then
		if not p50 and p49:IsA("BasePart") then
			u4.CharacterSortedMsg:Get(p49).BillboardGui = u7(p49);
			return;
		end;
		if p49:IsA("Model") then
			local l__Head__33 = p49:FindFirstChild("Head");
			if l__Head__33 and l__Head__33:IsA("BasePart") then
				u4.CharacterSortedMsg:Get(p49).BillboardGui = u7(l__Head__33);
			end;
		end;
	end;
end;
function u4.SetBillboardLODNear(p51, p52)
	local l__Adornee__34 = p52.Adornee;
	if l__Adornee__34 and l__Players__1.LocalPlayer.Character then
		local v35 = l__Adornee__34:IsDescendantOf(l__Players__1.LocalPlayer.Character);
	else
		v35 = nil;
	end;
	p52.Size = UDim2.new(0, 400, 0, 250);
	if v35 then
		local v36 = 1.5;
	else
		v36 = 2.5;
	end;
	if v35 then
		local v37 = 2;
	else
		v37 = 0.1;
	end;
	p52.StudsOffset = Vector3.new(0, v36, v37);
	p52.Enabled = true;
	local v38 = p52.BillboardFrame:GetChildren();
	for v39 = 1, #v38 do
		v38[v39].Visible = true;
	end;
	p52.BillboardFrame.SmallTalkBubble.Visible = false;
end;
function u4.SetBillboardLODDistant(p53, p54)
	local l__Adornee__40 = p54.Adornee;
	if l__Adornee__40 and l__Players__1.LocalPlayer.Character then
		local v41 = l__Adornee__40:IsDescendantOf(l__Players__1.LocalPlayer.Character);
	else
		v41 = nil;
	end;
	p54.Size = UDim2.new(4, 0, 3, 0);
	if v41 then
		local v42 = 2;
	else
		v42 = 0.1;
	end;
	p54.StudsOffset = Vector3.new(0, 3, v42);
	p54.Enabled = true;
	local v43 = p54.BillboardFrame:GetChildren();
	for v44 = 1, #v43 do
		v43[v44].Visible = false;
	end;
	p54.BillboardFrame.SmallTalkBubble.Visible = true;
end;
function u4.SetBillboardLODVeryFar(p55, p56)
	p56.Enabled = false;
end;
function u4.SetBillboardGuiLOD(p57, p58, p59)
	if not p59 then
		return;
	end;
	if p59:IsA("Model") then
		local l__Head__45 = p59:FindFirstChild("Head");
		if not l__Head__45 then
			p59 = p59.PrimaryPart;
		else
			p59 = l__Head__45;
		end;
	end;
	if not p59 then
		local v46 = 100000;
	else
		v46 = (p59.Position - game.Workspace.CurrentCamera.CoordinateFrame.Position).magnitude;
	end;
	if v46 < 65 then
		u4:SetBillboardLODNear(p58);
		return;
	end;
	if v46 >= 65 and v46 < 100 then
		u4:SetBillboardLODDistant(p58);
		return;
	end;
	u4:SetBillboardLODVeryFar(p58);
end;
function u4.CameraCFrameChanged(p60)
	for v47, v48 in pairs(u4.CharacterSortedMsg:GetData()) do
		local l__BillboardGui__49 = v48.BillboardGui;
		if l__BillboardGui__49 then
			u4:SetBillboardGuiLOD(l__BillboardGui__49, v47);
		end;
	end;
end;
local u9 = v9 or v10;
local l__Enum_Font_SourceSans__10 = Enum.Font.SourceSans;
local l__Enum_FontSize_Size24__11 = Enum.FontSize.Size24;
function u4.CreateBubbleText(p61, p62, p63)
	local v50 = Instance.new("TextLabel");
	v50.Name = "BubbleText";
	v50.BackgroundTransparency = 1;
	if u9 then
		v50.Size = UDim2.fromScale(1, 1);
	else
		v50.Position = UDim2.new(0, 15, 0, 0);
		v50.Size = UDim2.new(1, -30, 1, 0);
	end;
	v50.Font = l__Enum_Font_SourceSans__10;
	v50.ClipsDescendants = true;
	v50.TextWrapped = true;
	v50.FontSize = l__Enum_FontSize_Size24__11;
	v50.Text = p62;
	v50.Visible = false;
	v50.AutoLocalize = p63;
	if u9 then
		local v51 = Instance.new("UIPadding");
		v51.PaddingTop = UDim.new(0, 12);
		v51.PaddingRight = UDim.new(0, 12);
		v51.PaddingBottom = UDim.new(0, 12);
		v51.PaddingLeft = UDim.new(0, 12);
		v51.Parent = v50;
	end;
	return v50;
end;
function u4.CreateSmallTalkBubble(p64, p65)
	local v52 = u4.ScalingChatBubbleWithTail[p65]:Clone();
	v52.Name = "SmallTalkBubble";
	v52.AnchorPoint = Vector2.new(0, 0.5);
	v52.Position = UDim2.new(0, 0, 0.5, 0);
	v52.Visible = false;
	local v53 = u4:CreateBubbleText("...");
	v53.TextScaled = true;
	v53.TextWrapped = false;
	v53.Visible = true;
	v53.Parent = v52;
	return v52;
end;
function u4.UpdateChatLinesForOrigin(p66, p67, p68)
	local l__Fifo__54 = u4.CharacterSortedMsg:Get(p67).Fifo;
	local v55 = l__Fifo__54:Size();
	local v56 = l__Fifo__54:GetData();
	if #v56 <= 1 then
		return;
	end;
	for v57 = #v56 - 1, 1, -1 do
		local l__RenderBubble__58 = v56[v57].RenderBubble;
		if not l__RenderBubble__58 then
			return;
		end;
		if v55 - v57 + 1 > 1 then
			local l__ChatBubbleTail__59 = l__RenderBubble__58:FindFirstChild("ChatBubbleTail");
			if l__ChatBubbleTail__59 then
				l__ChatBubbleTail__59:Destroy();
			end;
			local l__BubbleText__60 = l__RenderBubble__58:FindFirstChild("BubbleText");
			if l__BubbleText__60 then
				l__BubbleText__60.TextTransparency = 0.5;
			end;
		end;
		l__RenderBubble__58:TweenPosition(UDim2.new(l__RenderBubble__58.Position.X.Scale, l__RenderBubble__58.Position.X.Offset, 1, p68 - l__RenderBubble__58.Size.Y.Offset - 14), Enum.EasingDirection.Out, Enum.EasingStyle.Bounce, 0.1, true);
		p68 = p68 - l__RenderBubble__58.Size.Y.Offset - 14;
	end;
end;
function u4.DestroyBubble(p69, p70, p71)
	if not p70 then
		return;
	end;
	if p70:Empty() then
		return;
	end;
	local l__RenderBubble__61 = p70:Front().RenderBubble;
	if l__RenderBubble__61 then
		local u12 = l__RenderBubble__61;
		spawn(function()
			while p70:Front().RenderBubble ~= p71 do
				wait();
			end;
			u12 = p70:Front().RenderBubble;
			local l__BubbleText__62 = u12:FindFirstChild("BubbleText");
			local l__ChatBubbleTail__63 = u12:FindFirstChild("ChatBubbleTail");
			while u12 and u12.ImageTransparency < 1 do
				local v64 = wait();
				if u12 then
					local v65 = v64 * 1.5;
					u12.ImageTransparency = u12.ImageTransparency + v65;
					if l__BubbleText__62 then
						l__BubbleText__62.TextTransparency = l__BubbleText__62.TextTransparency + v65;
					end;
					if l__ChatBubbleTail__63 then
						l__ChatBubbleTail__63.ImageTransparency = l__ChatBubbleTail__63.ImageTransparency + v65;
					end;
				end;
			end;
			if u12 then
				u12:Destroy();
				p70:PopFront();
			end;
		end);
		return;
	end;
	p70:PopFront();
end;
function u4.CreateChatLineRender(p72, p73, p74, p75, p76, p77)
	if not p73 then
		return;
	end;
	if not u4.CharacterSortedMsg:Get(p73).BillboardGui then
		u4:CreateBillboardGuiHelper(p73, p75);
	end;
	local l__BillboardGui__66 = u4.CharacterSortedMsg:Get(p73).BillboardGui;
	if l__BillboardGui__66 then
		local v67 = nil;
		local v68 = u4.ChatBubbleWithTail[p74.BubbleColor]:Clone();
		v68.Visible = false;
		local v69 = u4:CreateBubbleText(p74.Message, p77);
		v69.Parent = v68;
		v68.Parent = l__BillboardGui__66.BillboardFrame;
		p74.RenderBubble = v68;
		local v70 = l__TextService__4:GetTextSize(v69.Text, 24, l__Enum_Font_SourceSans__10, Vector2.new(400, 250));
		v67 = v70.Y / 24;
		if u9 then
			local v71 = math.ceil(v70.X + 24);
			local v72 = v67 * 34;
			v68.Size = UDim2.fromOffset(0, 0);
			v68.Position = UDim2.fromScale(0.5, 1);
			v68:TweenSizeAndPosition(UDim2.fromOffset(v71, v72), UDim2.new(0.5, -v71 / 2, 1, -v72), Enum.EasingDirection.Out, Enum.EasingStyle.Elastic, 0.1, true, function()
				v69.Visible = true;
			end);
			u4:SetBillboardGuiLOD(l__BillboardGui__66, p74.Origin);
			u4:UpdateChatLinesForOrigin(p74.Origin, -v72);
		else
			local v73 = math.max((v70.X + 30) / 400, 0.1);
			v68.Size = UDim2.new(0, 0, 0, 0);
			v68.Position = UDim2.new(0.5, 0, 1, 0);
			local v74 = v67 * 34;
			v68:TweenSizeAndPosition(UDim2.new(v73, 0, 0, v74), UDim2.new((1 - v73) / 2, 0, 1, -v74), Enum.EasingDirection.Out, Enum.EasingStyle.Elastic, 0.1, true, function()
				v69.Visible = true;
			end);
			u4:SetBillboardGuiLOD(l__BillboardGui__66, p74.Origin);
			u4:UpdateChatLinesForOrigin(p74.Origin, -v74);
		end;
		delay(p74.BubbleDieDelay, function()
			u4:DestroyBubble(p76, v68);
		end);
	end;
end;
function u4.OnPlayerChatMessage(p78, p79, p80, p81)
	if not u4:BubbleChatEnabled() then
		return;
	end;
	local l__LocalPlayer__75 = l__Players__1.LocalPlayer;
	local v76 = false;
	if l__LocalPlayer__75 ~= nil then
		v76 = p79 ~= l__LocalPlayer__75;
	end;
	local v77 = u2(u4:SanitizeChatLine(p80), u3.WHITE, not v76);
	if p79 then
		v77.User = p79.Name;
		v77.Origin = p79.Character;
	end;
	if p79 and v77.Origin then
		local l__Fifo__78 = u4.CharacterSortedMsg:Get(v77.Origin).Fifo;
		l__Fifo__78:PushBack(v77);
		u4:CreateChatLineRender(p79.Character, v77, true, l__Fifo__78, false);
	end;
end;
local u13 = v11 or v12;
local u14 = v13 or v14;
local u15 = v7 or v8;
function u4.OnGameChatMessage(p82, p83, p84, p85)
	if u13 or u14 and l__Chat__3.BubbleChatEnabled then
		return;
	end;
	local l__LocalPlayer__79 = l__Players__1.LocalPlayer;
	local v80 = false;
	if l__LocalPlayer__79 ~= nil then
		v80 = l__LocalPlayer__79.Character ~= p83;
	end;
	local v81 = u3.WHITE;
	if p85 == Enum.ChatColor.Blue then
		v81 = u3.BLUE;
	elseif p85 == Enum.ChatColor.Green then
		v81 = u3.GREEN;
	elseif p85 == Enum.ChatColor.Red then
		v81 = u3.RED;
	end;
	local v82 = u2(u4:SanitizeChatLine(p84), v81, not v80);
	v82.Origin = p83;
	u4.CharacterSortedMsg:Get(v82.Origin).Fifo:PushBack(v82);
	if u15 then
		u4:CreateChatLineRender(p83, v82, false, u4.CharacterSortedMsg:Get(v82.Origin).Fifo, true);
		return;
	end;
	u4:CreateChatLineRender(p83, v82, false, u4.CharacterSortedMsg:Get(v82.Origin).Fifo, false);
end;
function u4.BubbleChatEnabled(p86)
	if u13 or u14 and l__Chat__3.BubbleChatEnabled then
		return false;
	end;
	local l__ClientChatModules__83 = l__Chat__3:FindFirstChild("ClientChatModules");
	if l__ClientChatModules__83 then
		local l__ChatSettings__84 = l__ClientChatModules__83:FindFirstChild("ChatSettings");
		if l__ChatSettings__84 then
			local v85 = require(l__ChatSettings__84);
			if v85.BubbleChatEnabled ~= nil then
				return v85.BubbleChatEnabled;
			end;
		end;
	end;
	return l__Players__1.BubbleChat;
end;
function u4.ShowOwnFilteredMessage(p87)
	local v86 = nil;
	local l__ClientChatModules__87 = l__Chat__3:FindFirstChild("ClientChatModules");
	if l__ClientChatModules__87 then
		v86 = l__ClientChatModules__87:FindFirstChild("ChatSettings");
		if not v86 then
			return false;
		end;
	else
		return false;
	end;
	return require(v86).ShowUserOwnFilteredMessage;
end;
function findPlayer(p88)
	local v88, v89, v90 = pairs(l__Players__1:GetPlayers());
	while true do
		local v91, v92 = v88(v89, v90);
		if v91 then

		else
			break;
		end;
		v90 = v91;
		if v92.Name == p88 then
			return v92;
		end;
	end;
end;
l__Chat__3.Chatted:connect(function(p89, p90, p91)
	u4:OnGameChatMessage(p89, p90, p91);
end);
local v93 = nil;
if game.Workspace.CurrentCamera then
	v93 = game.Workspace.CurrentCamera:GetPropertyChangedSignal("CFrame"):Connect(function(p92)
		u4:CameraCFrameChanged();
	end);
end;
local u16 = v93;
game.Workspace.Changed:Connect(function(p93)
	if p93 == "CurrentCamera" then
		if u16 then
			u16:disconnect();
		end;
		if game.Workspace.CurrentCamera then
			u16 = game.Workspace.CurrentCamera:GetPropertyChangedSignal("CFrame"):Connect(function(p94)
				u4:CameraCFrameChanged();
			end);
		end;
	end;
end);
local u17 = nil;
function getAllowedMessageTypes()
	if u17 then
		return u17;
	end;
	local l__ClientChatModules__94 = l__Chat__3:FindFirstChild("ClientChatModules");
	if l__ClientChatModules__94 then

	else
		return { "Message", "Whisper" };
	end;
	local l__ChatSettings__95 = l__ClientChatModules__94:FindFirstChild("ChatSettings");
	if l__ChatSettings__95 then
		local v96 = require(l__ChatSettings__95);
		if v96.BubbleChatMessageTypes then
			u17 = v96.BubbleChatMessageTypes;
			return u17;
		end;
	end;
	local l__ChatConstants__97 = l__ClientChatModules__94:FindFirstChild("ChatConstants");
	if l__ChatConstants__97 then
		local v98 = require(l__ChatConstants__97);
		u17 = { v98.MessageTypeDefault, v98.MessageTypeWhisper };
	end;
	return u17;
end;
function checkAllowedMessageType(p95)
	local v99 = getAllowedMessageTypes();
	local v100 = #v99;
	local v101 = 1 - 1;
	while true do
		if v99[v101] == p95.MessageType then
			return true;
		end;
		if 0 <= 1 then
			if v101 < v100 then

			else
				break;
			end;
		elseif v100 < v101 then

		else
			break;
		end;
		v101 = v101 + 1;
	end;
	return false;
end;
local v102 = l__ReplicatedStorage__2:WaitForChild("DefaultChatSystemChatEvents");
local l__OnMessageDoneFiltering__103 = v102:WaitForChild("OnMessageDoneFiltering");
v102:WaitForChild("OnNewMessage").OnClientEvent:connect(function(p96, p97)
	if not checkAllowedMessageType(p96) then
		return;
	end;
	local v104 = findPlayer(p96.FromSpeaker);
	if not v104 then
		return;
	end;
	if (not p96.IsFiltered or p96.FromSpeaker == v5.Name) and (p96.FromSpeaker ~= v5.Name or u4:ShowOwnFilteredMessage()) then
		return;
	end;
	u4:OnPlayerChatMessage(v104, p96.Message, nil);
end);
l__OnMessageDoneFiltering__103.OnClientEvent:connect(function(p98, p99)
	if not checkAllowedMessageType(p98) then
		return;
	end;
	local v105 = findPlayer(p98.FromSpeaker);
	if not v105 then
		return;
	end;
	if p98.FromSpeaker == v5.Name and not u4:ShowOwnFilteredMessage() then
		return;
	end;
	u4:OnPlayerChatMessage(v105, p98.Message, nil);
end);


Prompt: --lights

Response:
local Red1 = script.Parent.Red1
local Red2 = script.Parent.Red2
local RL = script.Parent.RL
local RR = script.Parent.RR
local FL = script.Parent.FL
local FR = script.Parent.FR
local f1 = script.Parent.WhiteFront
local f2 = script.Parent.WhiteFront2
local r1 = script.Parent.WhiteBack
local r2 = script.Parent.WhiteBack2
local B1 = script.Parent.Brake
local B2 = script.Parent.Brake2

local lgt = script.Parent.Lighting.Light

function lightson()
	f1.Material = "Neon"
	f2.Material = "Neon"
	Red1.Material = "Neon"
	Red2.Material = "Neon"

	lgt.Enabled = true
end
function lightsoff()
	f1.Material = "SmoothPlastic"
	f2.Material = "SmoothPlastic"
	Red1.Material = "SmoothPlastic"
	Red2.Material = "SmoothPlastic"

	lgt.Enabled = false
end
function reverse()
	r1.Material = "Neon"
	r2.Material = "Neon"
end
function unreverse()
	r1.Material = "SmoothPlastic"
	r2.Material = "SmoothPlastic"
end
function brake()
	B1.Material = "Neon"
	B2.Material = "Neon"
end
function unbrake()
	B1.Material = "SmoothPlastic"
	B2.Material = "SmoothPlastic"
end


Prompt: -- Helper function for Determinant of 3x3

Response:
local function Det3x3(a,b,c,d,e,f,g,h,i)
	return (a*(e*i-f*h)-b*(d*i-f*g)+c*(d*h-e*g))
end


Prompt: --[[Drivetrain]]

Response: Tune.Config			= "RWD"		--"FWD" , "RWD" , "AWD"


Prompt: -- Define the text button and frames

Response:
local textButton = script.Parent
local frame1 = script.Parent.Parent.Phone
local comps = script.Parent.Parent.Components
local apl = comps.cPhonePurchased
local sud = script.Parent.Sound


Prompt: --Traction Control Settings

Response:
Tune.TCSEnabled		= true		-- Implements TCS
Tune.TCSThreshold	= 20		-- Slip speed allowed before TCS starts working (in SPS)
Tune.TCSGradient	= 20		-- Slip speed gradient between 0 to max reduction (in SPS)
Tune.TCSLimit		= 10		-- Minimum amount of torque at max reduction (in percent)


Prompt: --Make New Model For Rays If Enabled

Response:
if makeRays then
	m = Instance.new("Model")
	m.Name = "Rays"
	m.Parent = Workspace
end


Prompt: --Variables

Response: local filteringFunction = game.ReplicatedStorage.FilteringFunction


Prompt:
-- HOW TO DO --
-- 1. Insert a ScreenGui then drag it into the StarterGui
-- 2. Insert a Frame
-- 3. Insert TextButton
-- 4. Insert a Local Script inside the TextButton


Prompt: -- Infinitely update the target position for the tank

Response:
currentElev = 0;
currentRot = 0;
while wait() do
	if (myMouse) then
		-- Position of mouse in world
		mousePoint = myMouse.Hit.p;

		-- Vector from tank to mouse point
		targetVector = (mousePoint - parts.GunBase.CFrame.p).unit;

		-- Determine where the gun should point
		targetRotations = determineNewDirections(targetVector);

		-- For each time we do all that math to determine the angle, we will smoothly rotate the gun towards it in 4 increments
		-- This means less lag (fewer calculations) but it's still smooth
		for i = 1, 4 do
			newRotations = getSmoothRotation(targetRotations);
			TFE:FireServer('RotateTurret',parts,currentElev, currentRot)
			wait();
		end
	end
end