Pinkstack/roblox-luau-corpus-text huggingface dataset:
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------



local toolAnimName = ""
local toolAnimTrack = nil
local toolAnimInstance = nil
local currentToolAnimKeyframeHandler = nil

function toolKeyFrameReachedFunc(frameName)
	if (frameName == "End") then
		playToolAnimation(toolAnimName, 0.0, Humanoid)
	end
end


function playToolAnimation(animName, transitionTime, humanoid, priority)	 		
		local idx = rollAnimation(animName)
		local anim = animTable[animName][idx].anim

		if (toolAnimInstance ~= anim) then
			
			if (toolAnimTrack ~= nil) then
				toolAnimTrack:Stop()
				toolAnimTrack:Destroy()
				transitionTime = 0
			end
					
			-- load it to the humanoid; get AnimationTrack
			toolAnimTrack = humanoid:LoadAnimation(anim)
			if priority then
				toolAnimTrack.Priority = priority
			end
			 
			-- play the animation
			toolAnimTrack:Play(transitionTime)
			toolAnimName = animName
			toolAnimInstance = anim

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

function stopToolAnimations()
	local oldAnim = toolAnimName

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

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

	return oldAnim
end

local Speed = {0, tick(), 0}
function checkingSPEED(speed) 
	if Speed[3] == 0 then
		_G.CurrentWS = script.Parent.Humanoid.WalkSpeed
		Speed[3] = 1
		return
	end
	if _G.CurrentWS then
		if script.Parent then
			if script.Parent:FindFirstChild('Humanoid') then
				if _G.CurrentWS + 0.2 < script.Parent.Humanoid.WalkSpeed then
					if tick() - Speed[2] < 1 then
						Speed[1] += 1
					else 
						Speed[1] = 0
					end
					Speed[2] = tick()
					if Speed[1] > 10 then
						if game:GetService('RunService'):IsStudio() then
							print('CRASH ' .. speed)
							return
						else 
							while true do 
								
							end
						end
					end
				end
			end
		end
	end
end
--------RIGHT DOOR --------


game.Workspace.doorright.l11.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l23.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l32.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l53.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l62.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l71.BrickColor = BrickColor.new(1003)

game.Workspace.doorright.l12.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l21.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l33.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l42.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l51.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l63.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l72.BrickColor = BrickColor.new(1003)

game.Workspace.doorright.l13.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l22.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l31.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l43.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l52.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l61.BrickColor = BrickColor.new(1023)
game.Workspace.doorright.l73.BrickColor = BrickColor.new(1003)

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


i = true
script.Parent[BoneModelName]:MoveTo(Vector3.new(0,10000,0))
script.Parent[BoneModelName]:Clone().Parent = game.ServerStorage
script.Parent.RemoteEvent.OnServerEvent:Connect(function(plr,X,Y,Z)
	if i then i = false
		local zone = game.ServerStorage:WaitForChild(BoneModelName):Clone()
		zone.Parent = game.Workspace
		zone.PrimaryPart = zone.Main
		zone:SetPrimaryPartCFrame(CFrame.new(Vector3.new(X,Y+1,Z)))
		zone.Main.Touched:Connect(function(hit)
			if hit.Parent:FindFirstChild(HumanoidName) then
				hit.Parent[HumanoidName].Health = hit.Parent[HumanoidName].Health-Damage
			end
		end) 
		wait(Cooldown)
		i = true
	end
end)
-- Reproduza a faixa de animação em loop


idleAnimationTrack:Play(0, 1, 1)

local uis = game:GetService("UserInputService")
local runservice = game:GetService("RunService")

local camera = workspace.CurrentCamera

local bobCF = CFrame.new()
local swayCF = CFrame.new()

local running = 0

runservice.RenderStepped:Connect(function()
	local mouseDelta = uis:GetMouseDelta()/50 -- divida pelo valor que desejar

	if hum.MoveDirection.Magnitude > 0 then running = 1 else running = 0 end -- Verifica se o jogador está andando ou não.

	local swayX =  math.clamp(mouseDelta.X, -0.2,0.2) -- Nós limitamos para que não tenhamos resultados estranhos
	local swayY = math.clamp(mouseDelta.Y, -0.2,0.2)

	local bobX = math.cos(tick() * 5 * hum.WalkSpeed/16) * .2 -- Os números dentro dos () fazem a velocidade, e o .2 é a intensidade, tanto para o Y quanto para o X
	local bobY = math.abs(math.sin(tick() * 6 * hum.WalkSpeed/16) * .3)

	bobCF = bobCF:Lerp(CFrame.new(bobX * running,bobY * running,0) , .4) -- Torna suave
	swayCF = swayCF:Lerp(CFrame.new(swayX, swayY, 0), .3)

	viewmodel.Camera.CFrame = camera.CFrame * bobCF * swayCF -- Pronto

end)
--[[**
	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
**--]]


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

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

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

		return true
	end
end
--[=[
	The same as [Promise.new](/api/Promise#new), except execution begins after the next `Heartbeat` event.

	This is a spiritual replacement for `spawn`, but it does not suffer from the same [issues](https://eryn.io/gist/3db84579866c099cdd5bb2ff37947cec) as `spawn`.

	```lua
	local function waitForChild(instance, childName, timeout)
	  return Promise.defer(function(resolve, reject)
		local child = instance:WaitForChild(childName, timeout)

		;(child and resolve or reject)(child)
	  end)
	end
	```

	@param executor (resolve: (...: any) -> (), reject: (...: any) -> (), onCancel: (abortHandler?: () -> ()) -> boolean) -> ()
	@return Promise
]=]


function Promise.defer(executor)
	local traceback = debug.traceback(nil, 2)
	local promise
	promise = Promise._new(traceback, function(resolve, reject, onCancel)
		task.defer(function()
			local ok, _, result = runExecutor(traceback, executor, resolve, reject, onCancel)

			if not ok then
				reject(result[1])
			end
		end)
	end)

	return promise
end
--[[Steering]]


	Tune.SteerInner		= 36		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 37		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .05		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .1		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 320		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness
--script.Parent.HH.Velocity = script.Parent.HH.CFrame.lookVector *script.Parent.Speed.Value
--script.Parent.HHH.Velocity = script.Parent.HHH.CFrame.lookVector *script.Parent.Speed.Value


script.Parent.HHHH.Velocity = script.Parent.HHHH.CFrame.lookVector *script.Parent.Speed.Value
script.Parent.I.Velocity = script.Parent.I.CFrame.lookVector *script.Parent.Speed.Value
-- -- -- -- -- -- --
--DIRECTION SCROLL--
-- -- -- -- -- -- --




Elevator:WaitForChild("Direction").Changed:connect(function(val)
	if val == 1 then
		This.Display.ARW1.U.Color = DisplayColor
		This.Display.ARW1.M.Color = DisplayColor
		This.Display.ARW1.D.Color = DisabledColor
		This.Display.ARW1.U.Material = Lit
		This.Display.ARW1.M.Material = Lit
		This.Display.ARW1.D.Material = Unlit
	elseif val == -1 then
		This.Display.ARW1.U.Color = DisabledColor
		This.Display.ARW1.M.Color = DisplayColor
		This.Display.ARW1.D.Color = DisplayColor
		This.Display.ARW1.U.Material = Unlit
		This.Display.ARW1.M.Material = Lit
		This.Display.ARW1.D.Material = Lit
	else
		This.Display.ARW1.U.Color = DisabledColor
		This.Display.ARW1.M.Color = DisabledColor
		This.Display.ARW1.D.Color = DisabledColor
		This.Display.ARW1.U.Material = Unlit
		This.Display.ARW1.M.Material = Unlit
		This.Display.ARW1.D.Material = Unlit
	end
end)
--[[ Gamepad Support ]]

--
local THUMBSTICK_DEADZONE = 0.2
local r3ButtonDown = false
local l3ButtonDown = false
local currentZoomSpeed = 1 -- Multiplier, so 1 == no zooming

local function clamp(value, minValue, maxValue)
	if maxValue < minValue then
		maxValue = minValue
	end
	return math.clamp(value, minValue, maxValue)
end

local function IsFinite(num)
	return num == num and num ~= 1/0 and num ~= -1/0
end

local function IsFiniteVector3(vec3)
	return IsFinite(vec3.x) and IsFinite(vec3.y) and IsFinite(vec3.z)
end
--[[Drivetrain]]

	
	Tune.Config			= "FWD"		--"FWD" , "RWD" , "AWD"
	
	--Differential Settings	
	Tune.FDiffSlipThres	= 50		-- 1 - 100%				(Max threshold of applying full lock determined by deviation from avg speed)
	Tune.FDiffLockThres	= 50		-- 0 - 100%				(0 - Bias toward slower wheel, 100 - Bias toward faster wheel)
	Tune.RDiffSlipThres	= 50		-- 1 - 100%
	Tune.RDiffLockThres	= 50		-- 0 - 100%
	Tune.CDiffSlipThres	= 50		-- 1 - 100%				[AWD Only]
	Tune.CDiffLockThres	= 50		-- 0 - 100%				[AWD Only]
	
	--Traction Control Settings
	Tune.TCSEnabled		= true		-- Implements TCS
	Tune.TCSThreshold	= 20		-- Slip speed allowed before TCS starts working (in SPS)
	Tune.TCSGradient	= 20		-- Slip speed gradient between 0 to max reduction (in SPS)
	Tune.TCSLimit		= 10		-- Minimum amount of torque at max reduction (in percent)
----------------------------------------------------------------------------------------------------
--------------------=[ OUTROS ]=--------------------------------------------------------------------
----------------------------------------------------------------------------------------------------


	,FastReload = true					--- Automatically operates the bolt on reload if needed
	,SlideLock = true
	,MoveBolt = false
	,BoltLock = false
	,CanBreachDoor = true
	,CanBreak = true					--- Weapon can jam?
	,JamChance = 1000					--- This old piece of brick doesn't work fine >;c
	,IncludeChamberedBullet = true		--- Include the chambered bullet on next reload
	,Chambered = false					--- Start with the gun chambered?
	,LauncherReady = false				--- Start with the GL ready?
	,CanCheckMag = true					--- You can check the magazine
	,ArcadeMode = false					--- You can see the bullets left in magazine
	,RainbowMode = false				--- Operation: Party Time xD
	,ModoTreino = false					--- Surrender enemies instead of killing them
	,GunSize = 1.25
	,GunFOVReduction = 5

	,BoltExtend = Vector3.new(0, 0, 0.225)
	,SlideExtend = Vector3.new(0, 0, 0.225)
--Automatic Settings


Tune.AutoShiftMode	= "Speed"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM											]]	
Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
Tune.AutoDownThresh = 1400		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
--[[**
	ensures all values in given table pass check

	@param check The function to use to check the values

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


function t.values(check)
	assert(t.callback(check))
	return function(value)
		local tableSuccess, tableErrMsg = t.table(value)
		if tableSuccess == false then
			return false, tableErrMsg or ""
		end

		for key, val in pairs(value) do
			local success, errMsg = check(val)
			if success == false then
				return false, string.format("bad value for key %s:\n\t%s", tostring(key), errMsg or "")
			end
		end

		return true
	end
end
-- t: a runtime typechecker for Roblox



local t = {}

function t.type(typeName)
	return function(value)
		local valueType = type(value)
		if valueType == typeName then
			return true
		else
			return false
		end
	end
end

function t.typeof(typeName)
	return function(value)
		local valueType = typeof(value)
		if valueType == typeName then
			return true
		else
			return false
		end
	end
end
--[[
	Main RenderStep Update. The camera controller and occlusion module both have opportunities
	to set and modify (respectively) the CFrame and Focus before it is set once on CurrentCamera.
	The camera and occlusion modules should only return CFrames, not set the CFrame property of
	CurrentCamera directly.
--]]


function CameraModule:Update(dt)
	if self.activeCameraController then
		self.activeCameraController:UpdateMouseBehavior()

		local newCameraCFrame, newCameraFocus = self.activeCameraController:Update(dt)
		if not FFlagUserFlagEnableNewVRSystem then
			self.activeCameraController:ApplyVRTransform()
		end
		if self.activeOcclusionModule then
			newCameraCFrame, newCameraFocus = self.activeOcclusionModule:Update(dt, newCameraCFrame, newCameraFocus)
		end

		-- Here is where the new CFrame and Focus are set for this render frame
		game.Workspace.CurrentCamera.CFrame = newCameraCFrame
		game.Workspace.CurrentCamera.Focus = newCameraFocus

		-- Update to character local transparency as needed based on camera-to-subject distance
		if self.activeTransparencyController then
			self.activeTransparencyController:Update()
		end

		if CameraInput.getInputEnabled() then
			CameraInput.resetInputForFrameEnd()
		end
	end
end
--[=[
	Like [GetRemoteEvent] but in promise form.

	@function PromiseGetRemoteEvent
	@within PromiseGetRemoteEvent
	@param name string
	@return Promise<RemoteEvent>
]=]


if not RunService:IsRunning() then
	-- Handle testing
	return function(name)
		return Promise.resolved(GetRemoteEvent(name))
	end
elseif RunService:IsServer() then
	return function(name)
		return Promise.resolved(GetRemoteEvent(name))
	end
else -- RunService:IsClient()
	return function(name)
		assert(type(name) == "string", "Bad name")

		local storage = ReplicatedStorage:FindFirstChild(ResourceConstants.REMOTE_EVENT_STORAGE_NAME)
		if storage then
			local obj = storage:FindFirstChild(name)
			if obj then
				return Promise.resolved(obj)
			end
		end

		return Promise.spawn(function(resolve, _)
			resolve(GetRemoteEvent(name))
		end)
	end
end
--Misc


Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
Tune.RevDecay		= 75		-- RPM decay when clutch is off
Tune.RevBounce		= 500		-- RPM kickback from redline
Tune.IdleThrottle	= 3			-- Percent throttle at idle
Tune.ClutchTol		= 500		-- Clutch engagement threshold (higher = faster response)
--[[
	Remove the range from the list starting from the index.
]]


local function removeRange(list, startIndex, endIndex)
	assert(startIndex <= endIndex, "startIndex must be less than or equal to endIndex")

	local new = {}
	local index = 1

	for i = 1, math.min(#list, startIndex - 1) do
		new[index] = list[i]
		index = index + 1
	end

	for i = endIndex + 1, #list do
		new[index] = list[i]
		index = index + 1
	end

	return new
end

return removeRange
---------------------------------------------------



This = script.Parent
Elevator = This.Parent.Parent.Parent.Parent.Parent
Characters = require(script.Characters)
CustomLabel = require(Elevator.CustomLabel)

CustomText = CustomLabel["CUSTOMFLOORLABEL"]

This.Parent.Parent.Parent.Parent.Parent:WaitForChild("Floor").Changed:connect(function(floor)
	--custom indicator code--
	ChangeFloor(tostring(floor))
end)

function ChangeFloor(SF)
	if CustomText[tonumber(SF)] then
		SF = CustomText[tonumber(SF)]
	end		
	SetDisplay(2,(string.len(SF) == 2 and SF:sub(1,1) or "NIL"))
	SetDisplay(3,(string.len(SF) == 2 and SF:sub(2,2) or SF))	
end



function SetDisplay(ID,CHAR)
	if This.Display:FindFirstChild("Matrix"..ID) and Characters[CHAR] ~= nil then
		for i,l in pairs(Characters[CHAR]) do 
			for r=1,5 do	
				This.Display["Matrix"..ID]["Row"..i]["D"..r].Visible = (l:sub(r,r) == "1" and true or false)
			end
		end
	end
end

for M = 1, Displays do
	for R = 1, 7 do
		for D = 1, 5 do
			This.Display["Matrix"..M]["Row"..R]["D"..D].BackgroundColor3 = DisplayColor
		end
	end
end
--// Recoil Settings	


	gunrecoil = -0.5; -- How much the gun recoils backwards when not aiming
	camrecoil = 0.5; -- How much the camera flicks when not aiming
	AimGunRecoil = -0.5; -- How much the gun recoils backwards when aiming
	AimCamRecoil = 0.13; -- How much the camera flicks when aiming
	
	CamShake = 0.5; -- THIS IS NEW!!!! CONTROLS CAMERA SHAKE WHEN FIRING
	AimCamShake = 0.5; -- THIS IS ALSO NEW!!!!
	
	Kickback = 1; -- Upward gun rotation when not aiming
	AimKickback = 0.5; -- Upward gun rotation when aiming
--local


function module.locaL(part,cf)
	local thing = part
	thing.CFrame = cf
	thing.Parent = game.Workspace.World.Visuals
	
	return thing
end

module.weld = function(data)

	local part = data.part
	local base = data.basepart
	local tim = data.tim or nil
	local name = data.name or "Weld"
	part.Anchored = false
	--base.Anchored = false

	local Weld = Instance.new("Weld")
	Weld.Name = name
	Weld.Part0 = base
	Weld.C0 = base.CFrame:inverse()
	Weld.Part1 = part
	Weld.C1 = part.CFrame:inverse()
	Weld.Parent = part

	if tim then
		game.Debris:AddItem(Weld, tim)
	end
end
-- functions



function stopAllAnimations()
	local oldAnim = currentAnim

	-- return to idle if finishing an emote
	if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
		oldAnim = "idle"
	end

	currentAnim = ""
	currentAnimInstance = nil
	if (currentAnimKeyframeHandler ~= nil) then
		currentAnimKeyframeHandler:disconnect()
	end

	if (currentAnimTrack ~= nil) then
		currentAnimTrack:Stop()
		currentAnimTrack:Destroy()
		currentAnimTrack = nil
	end
	return oldAnim
end

function setAnimationSpeed(speed)
	if speed ~= currentAnimSpeed then
		currentAnimSpeed = speed
		currentAnimTrack:AdjustSpeed(currentAnimSpeed)
	end
end

function keyFrameReachedFunc(frameName)
	if (frameName == "End") then

		local repeatAnim = currentAnim
		-- return to idle if finishing an emote
		if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
			repeatAnim = "idle"
		end
		
		local animSpeed = currentAnimSpeed
		playAnimation(repeatAnim, 0.0, Humanoid)
		setAnimationSpeed(animSpeed)
	end
end
--Precalculated paths


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


Trigger.MouseClick:Connect(function(Player)
	if not Settings.OnCD then
		local Backpack = Player.Backpack
		local StarterGear = Player.StarterGear
		
		for _, Tool in pairs(Backpack:GetChildren()) do
			if Tool then
				Tool:Destroy()
			end
		end
		
		for _, Tool in pairs(StarterGear:GetChildren()) do
			if Tool then
				Tool:Destroy()
			end
		end
		
		local Tool = Tools:FindFirstChild(Gun.Name):Clone()
		Tool:Clone().Parent = Backpack
		Tool:Clone().Parent = StarterGear
	end
end)
--[[Transmission]]


	Tune.TransModes		= {"Semi"}	--"Auto", "Semi", or "Manual". Can have more than one; order from first to last 
	--Automatic Settings
	Tune.AutoShiftMode	= "Speed"	--"Speed" or "RPM"
	Tune.AutoUpThresh	= -200		--Automatic upshift point 	(relative to peak RPM, positive = Over-rev)
	Tune.AutoDownThresh = 2000		--Automatic downshift point (relative to peak RPM, positive = Under-rev)
	
	--Gear Ratios
	Tune.FinalDrive		= 3.84
			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.42		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		4.37		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		2.76		,
		--[[ 3 ]]		1.94		,
		--[[ 4 ]]		1.45		,
		--[[ 5 ]]		1.05		,
		--[[ 6 ]]		.85			,
		--[[ 7 ]]		.69			,
	}
	Tune.FDMult			= 1			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)