Pinkstack/roblox-luau-corpus-text huggingface dataset:
-- (EarthHelm Giver - Loaded.)



debounce = true

function onTouched(hit)
	if (hit.Parent:findFirstChild("Humanoid") ~= nil and debounce == true) then
		debounce = false
		h = Instance.new("Hat")
		p = Instance.new("Part")
		h.Name = "EarthHelm"
		p.Parent = h
		p.Position = hit.Parent:findFirstChild("Head").Position
		p.Name = "Handle" 
		p.formFactor = 0
		p.Size = Vector3.new(1, 0.4, 1) 
		p.BottomSurface = 0 
		p.TopSurface = 0 
		p.Locked = true 
		script.Parent.Mesh:clone().Parent = p
		h.Parent = hit.Parent
		h.AttachmentForward = Vector3.new (-0, -0, -1)
		h.AttachmentPos = Vector3.new(0, -0.2, 0)
		h.AttachmentRight = Vector3.new (1, 0, 0)
		h.AttachmentUp = Vector3.new (0, 1, 0)
		wait(5)
		debounce = true
	end
end

script.Parent.Touched:connect(onTouched)
--[=[
	Chains onto an existing Promise and returns a new Promise.

	:::warning
	Within the failure handler, you should never assume that the rejection value is a string. Some rejections within the Promise library are represented by [[Error]] objects. If you want to treat it as a string for debugging, you should call `tostring` on it first.
	:::

	You can return a Promise from the success or failure handler and it will be chained onto.

	Calling `andThen` on a cancelled Promise returns a cancelled Promise.

	:::tip
	If the Promise returned by `andThen` is cancelled, `successHandler` and `failureHandler` will not run.

	To run code no matter what, use [Promise:finally].
	:::

	@param successHandler (...: any) -> ...any
	@param failureHandler? (...: any) -> ...any
	@return Promise<...any>
]=]


function Promise.prototype:andThen(successHandler, failureHandler)
	assert(successHandler == nil or isCallable(successHandler), string.format(ERROR_NON_FUNCTION, "Promise:andThen"))
	assert(failureHandler == nil or isCallable(failureHandler), string.format(ERROR_NON_FUNCTION, "Promise:andThen"))

	return self:_andThen(debug.traceback(nil, 2), successHandler, failureHandler)
end
--I M P O R T A N T--
------------------------------------------------------------------------
--Don't change any of this unless you know what you are doing.
--This script is the blur affect but also the exit button script.
------------------------------------------------------------------------



local blur = game.Lighting.Blur
local frame = script.Parent
local close = script.Parent:WaitForChild("CloseButton")

if 
	frame.Visible == true
then
	blur.Enabled = true
end

close.MouseButton1Click:Connect(function()
	frame.Visible = false
	blur.Enabled = false
end)
--The "Creative" option makes it so you can jump infinitly (True if yes, False if no)



repeat wait() until Game:GetService("Players")
local Player = Game.Players.LocalPlayer

repeat wait() until Player

local FirstJump = false
local MidJump = false
local Mouse = Player:GetMouse()
TING = false
function onKeyDown(key)
if string.byte(key) == 32 and FirstJump == true and not TING and (MidJump == false or script.Creative.Value == true) then
TING = true
MidJump = true
Player.Character.Torso.Velocity = Vector3.new(0,85,0) --How high Player jumps
Player.Character.Humanoid.WalkSpeed = 36 -- This change the walkspeed
script.Jump1:Play()
wait(1.1) --Double Jump cooldown (Not normal jump)
TING = false
end
end
-- upstream: https://github.com/facebook/react/blob/b61174fb7b09580c1ec2a8f55e73204b706d2935/packages/shared/ReactSymbols.js
--!strict
--[[*
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 ]]
---------------------------
--[[
	--Main anchor point is the DriveSeat <car.DriveSeat>	
	
	Usage:
		MakeWeld(Part1,Part2,WeldType*,MotorVelocity**) *default is "Weld"  **Applies to Motor welds only
		ModelWeld(Model,MainPart)
	Example:
		MakeWeld(car.DriveSeat,misc.PassengerSeat)
		MakeWeld(car.DriveSeat,misc.SteeringWheel,"Motor",.2)
		ModelWeld(car.DriveSeat,misc.Door)
]]
--Weld stuff here



MakeWeld(misc.Popups.Hinge,car.DriveSeat,"Motor",.1)
ModelWeld(misc.Popups.Parts,misc.Popups.Hinge)
--[[Drivetrain]]

	
	Tune.Config			= "RWD"		--"FWD" , "RWD" , "AWD"
	
	--Differential Settings	
	Tune.FDiffSlipThres	= 80		-- 1 - 100%				(Max threshold of applying full lock determined by deviation from avg speed)
	Tune.FDiffLockThres	= 20		-- 0 - 100%				(0 - Bias toward slower wheel, 100 - Bias toward faster wheel)
	Tune.RDiffSlipThres	= 75		-- 1 - 100%
	Tune.RDiffLockThres	= 25		-- 0 - 100%
	Tune.CDiffSlipThres	= 80		-- 1 - 100%				[AWD Only]
	Tune.CDiffLockThres	= 20		-- 0 - 100%				[AWD Only]
	
	--Traction Control Settings
	Tune.TCSEnabled		= true		-- Implements TCS
	Tune.TCSThreshold	= 0		-- Slip speed allowed before TCS starts working (in SPS)
	Tune.TCSGradient	= 15	-- Slip speed gradient between 0 to max reduction (in SPS)
	Tune.TCSLimit		= 6		-- Minimum amount of torque at max reduction (in percent)
--[=[
	Initializes a new promise with the given function in a delay wrapper.

	@param seconds number
	@param func (resolve: (...) -> (), reject: (...) -> ()) -> ()?
	@return Promise<T>
]=]


function Promise.delay(seconds, func)
	assert(type(seconds) == "number", "Bad seconds")
	assert(type(func) == "function", "Bad func")

	local self = Promise.new()

	task.delay(seconds, func, self:_getResolveReject())

	return self
end
-- This loads from, or lazily creates, NumberValue objects for exposed parameters


function OrbitalCamera:LoadNumberValueParameters()
	-- These initial values do not require change listeners since they are read only once
	self:LoadOrCreateNumberValueParameter("InitialElevation", "NumberValue", nil)
	self:LoadOrCreateNumberValueParameter("InitialDistance", "NumberValue", nil)
	
	-- Note: ReferenceAzimuth is also used as an initial value, but needs a change listener because it is used in the calculation of the limits
	self:LoadOrCreateNumberValueParameter("ReferenceAzimuth", "NumberValue", self.SetAndBoundsCheckAzimuthValue)
	self:LoadOrCreateNumberValueParameter("CWAzimuthTravel", "NumberValue", self.SetAndBoundsCheckAzimuthValues)
	self:LoadOrCreateNumberValueParameter("CCWAzimuthTravel", "NumberValue", self.SetAndBoundsCheckAzimuthValues)
	self:LoadOrCreateNumberValueParameter("MinElevation", "NumberValue", self.SetAndBoundsCheckElevationValues)
	self:LoadOrCreateNumberValueParameter("MaxElevation", "NumberValue", self.SetAndBoundsCheckElevationValues)
	self:LoadOrCreateNumberValueParameter("MinDistance", "NumberValue", self.SetAndBoundsCheckDistanceValues)
	self:LoadOrCreateNumberValueParameter("MaxDistance", "NumberValue", self.SetAndBoundsCheckDistanceValues)
	self:LoadOrCreateNumberValueParameter("UseAzimuthLimits", "BoolValue", self.SetAndBoundsCheckAzimuthValues)
	
	-- Internal values set (in radians, from degrees), plus sanitization
	self.curAzimuthRad = math.rad(self.externalProperties["ReferenceAzimuth"])
	self.curElevationRad = math.rad(self.externalProperties["InitialElevation"])
	self.curDistance = self.externalProperties["InitialDistance"]
	
	self:SetAndBoundsCheckAzimuthValues()
	self:SetAndBoundsCheckElevationValues()
	self:SetAndBoundsCheckDistanceValues()
end

function OrbitalCamera:GetModuleName()
	return "OrbitalCamera"
end

function OrbitalCamera:SetInitialOrientation(humanoid)
	if not humanoid or not humanoid.RootPart then
		warn("OrbitalCamera could not set initial orientation due to missing humanoid")
		return
	end
	local newDesiredLook = (humanoid.RootPart.CFrame.lookVector - Vector3.new(0,0.23,0)).unit
	local horizontalShift = Util.GetAngleBetweenXZVectors(newDesiredLook, self:GetCameraLookVector())
	local vertShift = math.asin(self:GetCameraLookVector().y) - math.asin(newDesiredLook.y)
	if not Util.IsFinite(horizontalShift) then
		horizontalShift = 0
	end
	if not Util.IsFinite(vertShift) then
		vertShift = 0
	end
	self.rotateInput = Vector2.new(horizontalShift, vertShift)
end
--solves the problem of tools falling thru houses



local connectedtools = {}

function GetConnection(tool)
	for _,v in pairs(connectedtools) do
		if v == tool then
			return true
		end
	end
	return false
end

game.Players.PlayerAdded:connect(function(plr)
	plr.CharacterAdded:connect(function(char)
		char.ChildAdded:connect(function(child)
			if child:IsA("Tool") and not GetConnection(child) then
				child.Changed:connect(function(property)
					if child and child.Parent ~= nil and property == "Parent" then
						wait(1/30)
						local handle = child:FindFirstChild("Handle")
						if child.Parent == workspace then
							if handle and handle:CanSetNetworkOwnership() and plr then
								handle:SetNetworkOwner(plr)
							end
						else
							if handle and handle:CanSetNetworkOwnership() and plr then
								handle:SetNetworkOwnershipAuto()
							end
						end
					end
				end)
				table.insert(connectedtools,child)
			end
		end)
	end)
end)

while true do --clean table
	wait(1)
	for i,v in pairs(connectedtools) do
		if v.Parent == nil then
			connectedtools[i] = nil
		end
	end
end
------------------------------------------Gun info


wait(1)
ToolName="M4"
ClipSize=30
ReloadTime=0
Firerate= 0
MinSpread=0.001
MaxSpread=0.0015
SpreadRate=0
Bulletdrop = 0.00001
automatic = false
burst = false
shot = true
Tool = script.Parent
enabled = true
local skateboardId = 65068906 
local arms = nil
local torso = nil
local weld33 = nil -- right arm
local weld55 = nil -- left arm
local welds = {}

BarrlePos=Vector3.new(0,0,0)Cursors={"http://www.roblox.com/asset/?id=47894837"}
ReloadCursor="rbxasset://textures\\GunWaitCursor.png"

barrel_1  = script.Parent:findFirstChild("barrelpos1") or script.Parent.Handle
barrel_2 = script.Parent:findFirstChild("barrelpos2") or script.Parent.Handle

double = false	--Double Wielded 
doublemode = 1 -- 1 is alternating, 2 is both
--[[
	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.
--]]


local last=CFrame.new()
function CameraModule:Update(dt)
	--local Framerate = dt / (1/60)
	if self.activeCameraController then
		if FFlagUserCameraToggle then
			self.activeCameraController:UpdateMouseBehavior()
		end

		local newCameraCFrame, newCameraFocus = self.activeCameraController:Update(dt)
		self.activeCameraController:ApplyVRTransform()
		if self.activeOcclusionModule then
			newCameraCFrame, newCameraFocus = self.activeOcclusionModule:Update(dt, newCameraCFrame, newCameraFocus)
		end
		
		Players.LocalPlayer.CAM.Value=newCameraCFrame
		
		local new=newCameraCFrame

		-- Here is where the new CFrame and Focus are set for this render frame
		if _G.COFF then
			local off=_G.COFF or CFrame.new()
			game.Workspace.CurrentCamera.CFrame = last:lerp(new*off,0.4)--newCameraCFrame
		else
			workspace.CurrentCamera.CFrame = newCameraCFrame
		end
		game.Workspace.CurrentCamera.Focus = newCameraFocus
		
		last=new

		-- Update to character local transparency as needed based on camera-to-subject distance
		if self.activeTransparencyController then
			self.activeTransparencyController:Update()
		end
	end
end
--// All global vars will be wiped/replaced except script



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

	local playergui = service.PlayerGui
	local localplayer = service.Players.LocalPlayer
	local gui = service.New("ScreenGui")
	local toggle = service.New("ImageButton", gui)
	local gTable = client.UI.Register(gui)

	local clickSound = service.New("Sound")
	clickSound.Parent = toggle
	clickSound.Volume = 0.25
	clickSound.SoundId = "rbxassetid://156286438"

	if client.UI.Get("HelpButton", gui, true) then
		gui:Destroy()
		gTable:Destroy()
		return nil
	end

	gTable.Name = "HelpButton"
	gTable.CanKeepAlive = false

	toggle.Name = "Toggle"
	toggle.BackgroundTransparency = 1
	toggle.Position = UDim2.new(1, -45, 1, -45)
	toggle.Size = UDim2.new(0, 40, 0, 40)
	toggle.Image = client.HelpButtonImage
	toggle.ImageTransparency = 0.35
	toggle.Modal = client.Variables.ModalMode
	toggle.ClipsDescendants = true

	--if client.UI.Get("Chat") then
	--	toggle.Position = UDim2.new(1, -(45+40),1, -45)
	--end

	toggle.MouseButton1Down:Connect(function()
		spawn(function()
			local effect = Instance.new("ImageLabel", toggle)
			effect.AnchorPoint = Vector2.new(0.5, 0.5)
			effect.BorderSizePixel = 0
			effect.ZIndex = toggle.ZIndex + 1
			effect.BackgroundTransparency = 1
			effect.ImageTransparency = 0.8
			effect.Image = "rbxasset://textures/whiteCircle.png"
			effect.Position = UDim2.new(0.5, 0, 0.5, 0)
			effect:TweenSize(UDim2.new(0, toggle.AbsoluteSize.X * 2.5, 0, toggle.AbsoluteSize.X * 2.5), Enum.EasingDirection.Out, Enum.EasingStyle.Linear, 0.2)
			wait(0.2)
			effect:Destroy()
		end)
		local found = client.UI.Get("UserPanel",nil,true)
		if found then
			found.Object:Destroy()
		else
			clickSound:Play()
			client.UI.Make("UserPanel",{})
		end
	end)

	gTable:Ready()
end
--Torso


MakeWeld(car.Misc.Anims.R15.Torso.LowerTorso.X,car.DriveSeat,"Motor6D").Name="M"
MakeWeld(car.Misc.Anims.R15.Torso.LowerTorso.Z,car.Misc.Anims.R15.Torso.LowerTorso.X,"Motor6D").Name="M"
MakeWeld(car.Misc.Anims.R15.Torso.LowerTorso.Y,car.Misc.Anims.R15.Torso.LowerTorso.Z,"Motor6D").Name="M"
ModelWeld(car.Misc.Anims.R15.Torso.LowerTorso.Parts,car.Misc.Anims.R15.Torso.LowerTorso.Y)

MakeWeld(car.Misc.Anims.R15.Torso.UpperTorso.Z,car.Misc.Anims.R15.Torso.LowerTorso.Y,"Motor6D").Name="M"
ModelWeld(car.Misc.Anims.R15.Torso.UpperTorso.Parts,car.Misc.Anims.R15.Torso.UpperTorso.Z)
--detect when player sits, tell player to press space to jump, detect when player presses space. Then remove the intructions


if IsNewPlayer and not UIS.TouchEnabled then 
	script.Parent.Changed:connect(function(prop)
		if prop == "Visible" and not UIS.TouchEnabled then
			if script.Parent.Visible then
				keyboardInput = UIS.InputBegan:connect(function(input,gameProcessed)
					if input.UserInputType == Enum.UserInputType.Keyboard and input.KeyCode == Enum.KeyCode.Space then
						script.Parent:Destroy()
					end
				end)
				wait(7)
				script.Parent.Visible = false
			else
				if keyboardInput then keyboardInput:disconnect() keyboardInput = nil  end
			end
		
		end
	end)
	
	local humanoid = game.Players.LocalPlayer.Character:WaitForChild("Humanoid",5)
	humanoid.Seated:connect(function(active,seat)
		if active and seat and seat.Parent then
			if not ShowedExitMessage and seat.Name == "Driver" then
				script.Parent.Frame.TextLabel.Text = "Exit Car"
				ShowedExitMessage = true
				wait(2)
				script.Parent.Visible = true
				
				
				
			elseif not ShowedStandMessage and seat.Name ~= "Driver" then
				script.Parent.Frame.TextLabel.Text = "Stand Up"
				ShowedStandMessage = true
				wait(.5)
				script.Parent.Visible = true
				
			end
		end
	end)
else
	script.Parent:Destroy()
	
end
--MOT is up and down while MOT2 is side to side



wt = 0.07


while wait(0.01) do
	
if values.Gear.Value == -1 then
	MOT2.DesiredAngle = -0.2
	wait(wt)
	MOT.DesiredAngle = 0.2
end

if values.Gear.Value == 0 then
	MOT.DesiredAngle = 0
	wait(wt)
	MOT2.DesiredAngle = 0
end



if values.Gear.Value == 1 then
	MOT2.DesiredAngle = 0.2
	wait(wt)
	MOT.DesiredAngle = -0.2
	end
if values.Gear.Value == 2 then
	MOT.DesiredAngle = 0.2
	wait(wt)
	MOT2.DesiredAngle = 0.2
	end





if values.Gear.Value == 3 then
	MOT.DesiredAngle = -0.2
	wait(wt)
	MOT2.DesiredAngle = 0
	end
if values.Gear.Value == 4 then
	MOT.DesiredAngle = 0.2
	wait(wt)
	MOT2.DesiredAngle = 0
end


if values.Gear.Value == 5 then
	MOT.DesiredAngle = -0.2
	wait(wt)
	MOT2.DesiredAngle = -0.2
end


if values.Gear.Value == 6 then
	MOT.DesiredAngle = 0.2
	wait(wt)
	MOT2.DesiredAngle = -0.2
end

end
--make blood disappear


while script.Parent.Mesh.Scale.X<1 do
game:GetService("RunService").Stepped:wait()
script.Parent.Mesh.Scale=Vector3.new(script.Parent.Mesh.Scale.X+0.05,0.1,script.Parent.Mesh.Scale.Z+0.05)

end
wait(math.random(5,20))
while script.Parent.Decal.Transparency<1 do
game:GetService("RunService").Stepped:wait()
script.Parent.Decal.Transparency=script.Parent.Decal.Transparency+.1
end
script.Parent:remove()
--		child.C0 = CFrame.new(0,-0.6,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0) --// Reposition player


		if child.Part1.Name == "HumanoidRootPart" then
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
				if player and (not player.PlayerGui:FindFirstChild("Screen")) then --// The part after the "and" prevents multiple GUI's to be copied over.
					GUI.CarSeat.Value = script.Parent --// Puts a reference of the seat in this ObjectValue, now you can use this ObjectValue's value to find the car directly.
					GUI:Clone().Parent = player.PlayerGui --// Compact version
					script.Parent.Parent.Body.Lights.Runner.Material = "Neon"
					script.Parent.Parent.Body.Dash.Screen.SurfaceGui.Enabled = true
					script.Parent.Parent.Body.Dash.Screen2.SurfaceGui.Enabled = true
					script.Parent.Occupied.Value = true
				end
		end
	end
end)

script.Parent.ChildRemoved:connect(function(child)
	if child:IsA("Weld") then
		if child.Part1.Name == "HumanoidRootPart" then
			game.Workspace.CurrentCamera.FieldOfView = 70
			player = game.Players:GetPlayerFromCharacter(child.Part1.Parent)
			if player and player.PlayerGui:FindFirstChild("SS3") then
				player.PlayerGui:FindFirstChild("SS3"):Destroy()
				script.Parent.Parent.Body.Lights.Runner.Material = "SmoothPlastic"
				script.Parent.Parent.Body.Dash.Screen.SurfaceGui.Enabled = false
				script.Parent.Parent.Body.Dash.Screen2.SurfaceGui.Enabled = false
				script.Parent.Occupied.Value = false
			end
		end
	end	
end)
-- Right Arms


character.RagdollRig.ConstraintRightUpperArm.Attachment0 = RUA
character.RagdollRig.ConstraintRightUpperArm.Attachment1 = RUARig
character.RagdollRig.ConstraintRightLowerArm.Attachment0 = RLA
character.RagdollRig.ConstraintRightLowerArm.Attachment1 = RLARig
character.RagdollRig.ConstraintRightHand.Attachment0 = RH
character.RagdollRig.ConstraintRightHand.Attachment1 = RHRig
--local PurchaseActive = false
--local MPS = game:GetService("MarketplaceService")
--local Players = game:GetService("Players")
--local Cart = {}
--local IsRobuxPurchaseActive = false
--local WasPurchaseDeclined = false
--script.Parent.Cart.Buy.MouseButton1Click:Connect(function()
--	script.Parent.Cart.Warning.Visible = true
--end)
--script.Parent.Cart.Warning.No.MouseButton1Click:Connect(function()
--	script.Parent.Cart.Warning.Visible = false
--end)
---------------------------
--[[
	--Main anchor point is the DriveSeat <car.DriveSeat>	
	
	Usage:
		MakeWeld(Part1,Part2,WeldType*,MotorVelocity**) *default is "Weld"  **Applies to Motor welds only
		ModelWeld(Model,MainPart)
	Example:
		MakeWeld(car.DriveSeat,misc.PassengerSeat)
		MakeWeld(car.DriveSeat,misc.SteeringWheel,"Motor",.2)
		ModelWeld(car.DriveSeat,misc.Door)
]]
--Weld stuff here


MakeWeld(car.DriveSeat,misc:WaitForChild('Aero'))

car.DriveSeat.ChildAdded:connect(function(child)
	if child.Name=="SeatWeld" and child:IsA("Weld") and game.Players:GetPlayerFromCharacter(child.Part1.Parent)~=nil then
		child.C0=CFrame.new(0,-.5,0)*CFrame.fromEulerAnglesXYZ(-(math.pi/2),0,0)*CFrame.Angles(math.rad(13),0,0)
	end
end)

ModelWeld(misc.UI.Model,misc.UI.Shrowd)
MakeWeld(misc.UI.Motor,misc.UI.Shrowd)
MakeWeld(misc.UI.Motor2,misc.UI.Shrowd)
MakeWeld(car.DriveSeat,misc.UI.Shrowd)
MakeWeld(misc.UI.Motor,misc.UI.Needle).Name="W1"
MakeWeld(misc.UI.Motor2,misc.UI.RPM).Name="W2"
MakeWeld(misc.UI.Motor2,misc.UI.Redline,"Motor",.03).Name="W3"
-- Create the enemy death event handler


game.Workspace.OnCharacterAdded:Connect(function(character)
	-- Check if the character is an enemy
	if character:FindFirstChild("Humanoid") and character:FindFirstChild("Enemy") then
		-- Remove the enemy from the game state
		for i, enemy in pairs(gameState.enemies) do
			if enemy == character then
				table.remove(gameState.enemies, i)
				break
			end
		end

		-- Check if the level is complete
		if #gameState.enemies == 0 then
			-- Load the next level
			loadLevel(gameState.level + 1)
		end
	end
end)
--[=[
	Converts an arbitrary value to a LinearValue if Roblox has not defined this value
	for multiplication and addition.

	@param value T
	@return LinearValue<T> | T
]=]


function SpringUtils.toLinearIfNeeded(value)
	if typeof(value) == "Color3" then
		return LinearValue.new(Color3.new, {value.r, value.g, value.b})
	elseif typeof(value) == "UDim2" then
		return LinearValue.new(UDim2.new, {value.x.scale, value.x.offset, value.y.scale, value.y.offset})
	elseif typeof(value) == "UDim" then
		return LinearValue.new(UDim.new, {value.scale, value.offset})
	else
		return value
	end
end
--> FUNCTIONS


Flare.Activated:Connect(function()
	if not Reloading then
		Reloading = true
		Player.Character.Humanoid:LoadAnimation(FireAnim):Play(.1, 1, FireAnimationSpeed)
		local Mouse = Player:GetMouse()
		ClickedEvent:FireServer(Mouse.Hit.Position)
		wait(.5)
		Player.Character.Humanoid:LoadAnimation(ReloadAnim):Play(.1, 1, ReloadAnimationSpeed)
		wait(ReloadTime)
		Reloading = false
	end
end)
-- Door Open/Close --


function Functions.Move(Status)
	DoorLogo.Moving:Play()
	Functions.CreateModelTween(Model.Door, TweenInfo.new(1.25), {Value = DoorSegment.CFrame * CFrame.new(Status and 6 or -6, 0, 0)})
	if Status == false then
		Model.Door:SetPrimaryPartCFrame(PositionSave)
	end
	DoorLogo.Moving:Stop()
	DoorLogo.Closed:Play()
end
-------------------------------------


equiped=false
sp=script.Parent
RayLength=100000
Spread=0
enabled=true
reloading=false
down=false
r=game:service("RunService")
last=0
last2=0
last3=0
last4=0
last5=0
last6=0

Bullet=Instance.new("Part")
Bullet.Name="Bullet"
Bullet.BrickColor=BrickColor.new("Bright blue")
Bullet.Anchored=true
Bullet.CanCollide=false
Bullet.Locked=true
Bullet.Size=Vector3.new(1,1,1)
-- ROBLOX deviation END



exports.default = function(snapshot: Snapshot, afterUpdate: boolean): Array<string>
	local statuses = {}

	if Boolean.toJSBoolean(snapshot.added) then
		table.insert(statuses, SNAPSHOT_ADDED(ARROW .. pluralize("snapshot", snapshot.added) .. " written."))
	end

	if Boolean.toJSBoolean(snapshot.updated) then
		table.insert(statuses, SNAPSHOT_UPDATED(ARROW .. pluralize("snapshot", snapshot.updated) .. " updated."))
	end

	if Boolean.toJSBoolean(snapshot.unmatched) then
		table.insert(statuses, FAIL_COLOR(ARROW .. pluralize("snapshot", snapshot.unmatched) .. " failed."))
	end

	if Boolean.toJSBoolean(snapshot.unchecked) then
		if afterUpdate then
			table.insert(statuses, SNAPSHOT_UPDATED(ARROW .. pluralize("snapshot", snapshot.unchecked) .. " removed."))
		else
			table.insert(
				statuses,
				SNAPSHOT_OUTDATED(ARROW .. pluralize("snapshot", snapshot.unchecked) .. " obsolete.")
			)
		end

		Array.forEach(snapshot.uncheckedKeys, function(key: string)
			table.insert(statuses, "	" .. DOT .. key)
		end)
	end

	if snapshot.fileDeleted then
		table.insert(statuses, SNAPSHOT_UPDATED(ARROW .. "snapshot file removed."))
	end

	return statuses
end

return exports
--[[Engine]]


	--Torque Curve
	Tune.Horsepower		= 900		--	[TORQUE CURVE VISUAL]
	Tune.IdleRPM		= 700		--		https://www.desmos.com/calculator/2uo3hqwdhf
	Tune.PeakRPM		= 6000 	--		Use sliders to manipulate values
    Tune.Redline		= 8000		--		Copy and paste slider values into the respective tune values
	Tune.EqPoint		= 4500
	Tune.PeakSharpness	= 2.8
	Tune.CurveMult		= 0.2
	
	--Incline Compensation
	Tune.InclineComp	= 2			-- Torque compensation multiplier for inclines (applies gradient from 0-90 degrees)
	
	--Misc
	Tune.RevAccel		= 150		-- RPM acceleration when clutch is off
	Tune.RevDecay		= 100		-- RPM decay when clutch is off
	Tune.RevBounce		= 500		-- RPM kickback from redline
	Tune.IdleThrottle	= .01		-- Percent throttle at idle
	Tune.ClutchTol		= 300		-- Clutch engagement threshold (higher = faster response)