Pinkstack/roblox-luau-corpus-text huggingface dataset:
--[[
	A limited, simple implementation of a Signal.

	Handlers are fired in order, and (dis)connections are properly handled when
	executing an event.
]]


local function immutableAppend(list, ...)
	local new = {}
	local len = #list

	for key = 1, len do
		new[key] = list[key]
	end

	for i = 1, select("#", ...) do
		new[len + i] = select(i, ...)
	end

	return new
end

local function immutableRemoveValue(list, removeValue)
	local new = {}

	for i = 1, #list do
		if list[i] ~= removeValue then
			table.insert(new, list[i])
		end
	end

	return new
end

local Signal = {}

Signal.__index = Signal

function Signal.new(store)
	local self = {
		_listeners = {},
		_store = store
	}

	setmetatable(self, Signal)

	return self
end

function Signal:connect(callback)
	if typeof(callback) ~= "function" then
		error("Expected the listener to be a function.")
	end

	if self._store and self._store._isDispatching then
		error(
			'You may not call store.changed:connect() while the reducer is executing. ' ..
				'If you would like to be notified after the store has been updated, subscribe from a ' ..
				'component and invoke store:getState() in the callback to access the latest state. '
		)
	end

	local listener = {
		callback = callback,
		disconnected = false,
		connectTraceback = debug.traceback(),
		disconnectTraceback = nil
	}

	self._listeners = immutableAppend(self._listeners, listener)

	local function disconnect()
		if listener.disconnected then
			error((
				"Listener connected at: \n%s\n" ..
				"was already disconnected at: \n%s\n"
			):format(
				tostring(listener.connectTraceback),
				tostring(listener.disconnectTraceback)
			))
		end

		if self._store and self._store._isDispatching then
			error("You may not unsubscribe from a store listener while the reducer is executing.")
		end

		listener.disconnected = true
		listener.disconnectTraceback = debug.traceback()
		self._listeners = immutableRemoveValue(self._listeners, listener)
	end

	return {
		disconnect = disconnect
	}
end

function Signal:fire(...)
	for _, listener in ipairs(self._listeners) do
		if not listener.disconnected then
			listener.callback(...)
		end
	end
end

return Signal
--Made by Luckymaxer



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

Sounds = {}
for i, v in pairs(Handle:GetChildren()) do
	if v:IsA("Sound") then
		table.insert(Sounds, v)
	end
end

function Activated()
	if not Tool.Enabled then
		return
	end
	Tool.Enabled = false
	Sounds[math.random(1, #Sounds)]:Play()
	wait(1)
	Tool.Enabled = true
end

Tool.Activated:connect(Activated)
--[=[
	@return boolean
	Returns `true` if the property object is ready to be
	used. In other words, it has successfully gained
	connection to the server-side version and has synced
	in the initial value.

	```lua
	if clientRemoteProperty:IsReady() then
		local value = clientRemoteProperty:Get()
	end
	```
]=]


function ClientRemoteProperty:IsReady(): boolean
	return self._ready
end
--[[
		___      _______                _     
	   / _ |____/ ___/ /  ___ ____ ___ (_)__ 
	  / __ /___/ /__/ _ \/ _ `(_-<(_-</ (_-<
	 /_/ |_|   \___/_//_/\_,_/___/___/_/___/
 						SecondLogic @ Inspare
]]




local autoscaling	= false					--Estimates top speed

local UNITS	= {								--Click on speed to change units
											--First unit is default	
	{
		units			= "MPH"				,
		scaling			= (10/12) * (60/88)	, -- 1 stud : 10 inches | ft/s to MPH
		maxSpeed		= 180				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "KM/H"			,
		scaling			= (10/12) * 1.09728	, -- 1 stud : 10 inches | ft/s to KP/H
		maxSpeed		= 300				,
		spInc			= 20				, -- Increment between labelled notches
	},
	
	{
		units			= "SPS"				,
		scaling			= 1					, -- Roblox standard
		maxSpeed		= 330				,
		spInc			= 30				, -- Increment between labelled notches
	}
}
--Precalculated paths


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



local LocalPlayer = PlayersService.LocalPlayer
while LocalPlayer == nil do
	PlayersService.ChildAdded:wait()
	LocalPlayer = PlayersService.LocalPlayer
end

local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

local okShouldClipInGameChat, valueShouldClipInGameChat = pcall(function() return UserSettings():IsUserFeatureEnabled("UserShouldClipInGameChat") end)
local shouldClipInGameChat = okShouldClipInGameChat and valueShouldClipInGameChat

local success, UserShouldLocalizeGameChatBubble = pcall(function()
	return UserSettings():IsUserFeatureEnabled("UserShouldLocalizeGameChatBubble")
end)
local UserShouldLocalizeGameChatBubble = success and UserShouldLocalizeGameChatBubble
--[[
	Commands.DebugLoadstring = {
		Prefix = ":";
		Commands = {"debugloadstring";};
		Args = {"code";};
		Description = "DEBUG LOADSTRING";
		Hidden = true;
		NoFilter = true;
		AdminLevel = "Creators";
		Function = function(plr: Player, args: {string})
			--error("Disabled", 0)
			local ans = Remote.GetGui(plr, "YesNoPrompt", {
				Icon = server.MatIcons.Warning;
				Question = "Are you sure you want to load this script into the server env?";
				Title = "Adonis DebugLoadstring";
				Delay = 5;
			})
			if ans == "Yes" then
				local func,err = Core.Loadstring(args[1],GetEnv())
				if func then
					func()
				else
					logError("DEBUG",err)
					Functions.Hint(err,{plr})
				end
			end
		end
	};
--]]


	Logs:AddLog("Script", "Debug Module Loaded");
end;
----[RETURNS THE PREVIEW COLOR FOR A GIVEN COLOR PICKER]----
--[[Use these 2 lines to get the Color3 Value
local ColorPickerModule = require(script.Parent.ColorPicker)
local PreviewColor3 = ColorPickerModule.ReturnPreviewColor("DropShadow")
]]


function ColorPickerModule.ReturnPreviewColor(ColorPicker)
	for i = 1, #FeaturesWithColorPickers do
		if FeaturesWithColorPickers[i] == ColorPicker then
			return PreviewColor[i].BackgroundColor3
		end
	end
end

return ColorPickerModule
--[[
	Utility function to log a Fusion-specific warning.
]]



local Package = script.Parent.Parent
local messages = require(Package.Logging.messages)

local function logWarn(template, ...)
	local formatString = messages[template]

	if formatString == nil then
		template = "unknownMessage"
		formatString = messages[template]
	end

	warn(string.format("[Fusion] " .. formatString .. "\n(ID: " .. template .. ")", ...))
end

return logWarn
--Hover and select home buttons


local hovering = nil
for a,b in pairs(pages.Home:GetChildren()) do
	if b:IsA("TextButton") then
		local fade = b.Fade
		local function pressButton()
			if guiDe then
				guiDe = false
				local pageIn = pages:FindFirstChild(b.Name)
				if pageIn then
					tweenPages(UDim2.new(-1,0,0,0), pageIn)
				end
				guiDe = true
			end
		end
		if main.device == "Mobile" then
			b.MouseButton1Up:Connect(function()
				pressButton()
			end)
		else
			b.MouseButton1Down:Connect(function()
				pressButton()
			end)
		end
		b.InputBegan:Connect(function(input)
			if not b.RankBlocker.Visible then
				main.tweenService:Create(fade, TweenInfo.new(0.2), {BackgroundTransparency = 0.8}):Play()
			end
		end)
		b.InputEnded:Connect(function(input)
			main.tweenService:Create(fade, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play()
		end)
	end
end
--Front


local axle2 = Instance.new("Part", bike.FrontSection)
axle2.Anchored = true
axle2.CanCollide = false
if _Tune.AxlesVisible or _Tune.Debug then axle2.Transparency = .75 else axle2.Transparency = 1 end
axle2.Name = "Axle"
axle2.Position = fWheel.Position
axle2.Orientation = fWheel.Orientation
axle2.Size = Vector3.new(_Tune.AxleSize,_Tune.AxleSize,_Tune.AxleSize)
axle2.CustomPhysicalProperties = PhysicalProperties.new(_Tune.AxleDensity,0,0,100,100)

local fgyro = Instance.new("BodyGyro",axle2)
fgyro.Name="Stabilizer"
fgyro.MaxTorque = Vector3.new(1,0,1)
fgyro.P=0
fgyro.D=_Tune.FGyroDamp
--[=[
	Cleans up all objects in the Janitor. This is
	similar to calling `Remove` on each object
	within the Janitor.
]=]


function Janitor:Clean()
	for _,obj in ipairs(self._objects) do
		self:_cleanupObject(obj[1], obj[2])
	end
	table.clear(self._objects)
end


function Janitor:_cleanupObject(object, cleanupMethod)
	if cleanupMethod == FN_MARKER then
		object()
	else
		object[cleanupMethod](object)
	end
end
--[[Transmission]]


	Tune.TransModes		= {"Auto", "Semi", "Manual"}								--[[
	[Modes]
		"Auto"		: Automatic shifting
		"Semi"		: Clutchless manual shifting, dual clutch transmission
		"Manual"	: Manual shifting with clutch
		
		>Include within brackets
			eg: {"Semi"} or {"Auto", "Manual"}								
		>First mode is default mode													]]
	
	--Automatic Settings
	Tune.AutoShiftMode	= "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)
	
	--Gear Ratios
	Tune.FinalDrive		= 3.23			-- Gearing determines top speed and wheel torque
	Tune.Ratios			= {				-- Higher ratio = more torque, Lower ratio = higher top speed
		--[[Reverse]]	3.30		,	-- Copy and paste a ratio to add a gear
		--[[Neutral]]	0			,	-- Ratios can also be deleted
		--[[ 1 ]]		4.71		,	-- Reverse, Neutral, and 1st gear are required
		--[[ 2 ]]		3.14		,
		--[[ 3 ]]		2.11		,
		--[[ 4 ]]		1.67		,
		--[[ 5 ]]		1.29		,
		--[[ 6 ]]		1.00		,
		--[[ 7 ]]		0.84		,
		--[[ 8 ]]		0.67		,
	}
	Tune.FDMult			= 1.5			-- Ratio multiplier (Change this value instead of FinalDrive if car is struggling with torque ; Default = 1)
-- Piggy "Stun" Script



local debounce = false

local Gamemode = game.ReplicatedStorage.Mode

game.ReplicatedStorage.Stun.OnServerEvent:Connect(function(plr,target)
	if target then
		if target:FindFirstAncestorOfClass("Model") then
			-- Check to see if clicked model is a real player
			local piggy = target:FindFirstAncestorOfClass("Model")

			if piggy then
				if piggy:FindFirstChild("Bear") then -- Check to see if it is actually Piggy or just another contestant
					if not debounce then

						local stunTag = Instance.new("BoolValue")
						stunTag.Name = "Stunned"
						stunTag.Parent = piggy

						game.ReplicatedStorage.Announcement:FireAllClients("Piggy is gone for 20 seconds")
						piggy.Torso.Script.Disabled = true
						if piggy:FindFirstChild("UpperTorso") then
							local anim = piggy:FindFirstChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.StunnedR15)
							debounce = true
							-- Freeze piggy by setting walkspeed to 0
							piggy.Humanoid.WalkSpeed = 0
							piggy.Humanoid.JumpPower = 0
							anim:Play()
							wait(20) -- wait 20 sec before enabling walkspeed again to 14 and then setting debounce to false so
							-- that the piggy can be stunned again
							anim:Stop()
							piggy.Humanoid.WalkSpeed = 14
							piggy.Humanoid.JumpPower = 20
							piggy.Torso.Script.Disabled = false
							debounce = false
						else
							local anim = piggy:FindFirstChild("Humanoid"):LoadAnimation(game.ReplicatedStorage.Stunned)
							debounce = true
							-- Freeze piggy by setting walkspeed to 0
							piggy.HumanoidRootPart.Anchored = true
							piggy.Animate.Disabled = true
							piggy.Humanoid.WalkSpeed = 0
							piggy.Humanoid.JumpPower = 0
							anim:Play()
							wait(20) -- wait 20 sec before enabling walkspeed again to 14 and then setting debounce to false so
							-- that the piggy can be stunned again
							piggy.HumanoidRootPart.Anchored = false
							piggy.Animate.Disabled = false
							anim:Stop()
							piggy.Humanoid.WalkSpeed = 14
							piggy.Humanoid.JumpPower = 20
							piggy.Torso.Script.Disabled = false
							debounce = false	
						end
						-- Enable debounce so stun effect cannot be applied again for 20 seconds

						piggy:FindFirstChild("Stunned"):Destroy() -- Delete stunned tag so we can tell from other scripts that the
						-- piggy is no longer stunned.
					end
				end
			end		
		end
	end
end)
------//Patrol Animations


self.RightPatrol = CFrame.new(-1, 1.1, -0.5) * CFrame.Angles(math.rad(-30), math.rad(0), math.rad(0));
self.LeftPatrol = CFrame.new(1,1,-0.9) * CFrame.Angles(math.rad(-30),math.rad(35),math.rad(-25));

self.RightElbowPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
self.LeftElbowPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));

self.RightWristPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
self.LeftWristPatrol = CFrame.new(0,0,0)  * CFrame.Angles(math.rad(0), math.rad(0), math.rad(0));
-- Call this from a function bound to Renderstep with Input Priority


function VehicleController:Update(moveVector, cameraRelative, usingGamepad)
	if self.vehicleSeat then
		if cameraRelative then
			-- This is the default steering mode
			moveVector = moveVector + Vector3.new(self.steer, 0, self.throttle)
			if usingGamepad and onlyTriggersForThrottle and useTriggersForThrottle then
				self.vehicleSeat.ThrottleFloat = -self.throttle
			else
				self.vehicleSeat.ThrottleFloat = -moveVector.Z
			end
			self.vehicleSeat.SteerFloat = moveVector.X

			return moveVector, true
		else
			-- This is the path following mode
			local localMoveVector = self.vehicleSeat.Occupant.RootPart.CFrame:VectorToObjectSpace(moveVector)

			self.vehicleSeat.ThrottleFloat = self:ComputeThrottle(localMoveVector)
			self.vehicleSeat.SteerFloat = self:ComputeSteer(localMoveVector)

			return ZERO_VECTOR3, true
		end
	end
	return moveVector, false
end

function VehicleController:ComputeThrottle(localMoveVector)
	if localMoveVector ~= ZERO_VECTOR3 then
		local throttle = -localMoveVector.Z
		return throttle
	else
		return 0.0
	end
end

function VehicleController:ComputeSteer(localMoveVector)
	if localMoveVector ~= ZERO_VECTOR3 then
		local steerAngle = -math.atan2(-localMoveVector.x, -localMoveVector.z) * (180 / math.pi)
		return steerAngle / self.autoPilot.MaxSteeringAngle
	else
		return 0.0
	end
end

function VehicleController:SetupAutoPilot()
	-- Setup default
	self.autoPilot.MaxSpeed = self.vehicleSeat.MaxSpeed
	self.autoPilot.MaxSteeringAngle = AUTO_PILOT_DEFAULT_MAX_STEERING_ANGLE

	-- VehicleSeat should have a MaxSteeringAngle as well.
	-- Or we could look for a child "AutoPilotConfigModule" to find these values
	-- Or allow developer to set them through the API as like the CLickToMove customization API
end

return VehicleController
--[[Weight and CG]]


	Tune.Weight			=3100	-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		14		}
	Tune.WeightDist		= 50		-- Weight distribution (0 - on rear wheels, 100 - on front wheels, can be <0 or >100)
	Tune.CGHeight		= .8		-- Center of gravity height (studs relative to median of all wheels)
	Tune.WBVisible		= false		-- Makes the weight brick visible
	
	--Unsprung Weight
	Tune.FWheelDensity	= .1		-- Front Wheel Density
	Tune.RWheelDensity	= .1		-- Rear Wheel Density
	Tune.FWLgcyDensity	= 1			-- Front Wheel Density [PGS OFF]
	Tune.RWLgcyDensity	= 1			-- Rear Wheel Density [PGS OFF]
	
	Tune.AxleSize		= 2			-- Size of structural members (larger = more stable/carry more weight)
	Tune.AxleDensity	= .1		-- Density of structural members
--[=[
	Calls each Object's `MethodName` (or calls the Object if `MethodName == true`) and removes them from the Janitor. Also clears the namespace.
	This function is also called when you call a Janitor Object (so it can be used as a destructor callback).

	```lua
	Obliterator:Cleanup() -- Valid.
	Obliterator() -- Also valid.
	```

	```ts
	Obliterator.Cleanup()
	```
]=]


function Janitor:Cleanup()
	if not self.CurrentlyCleaning then
		self.CurrentlyCleaning = nil
		for Object, MethodName in pairs(self) do
			if Object == IndicesReference then
				continue
			end

			if MethodName == true then
				Object()
			else
				local ObjectMethod = Object[MethodName]
				if ObjectMethod then
					ObjectMethod(Object)
				end
			end

			self[Object] = nil
		end

		local This = self[IndicesReference]
		if This then
			table.clear(This)
			self[IndicesReference] = {}
		end

		self.CurrentlyCleaning = false
	end
end
---------------------



while true do
	script.Parent.Color = Color3.new(255/255,0/255,0/255)
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(255/255,i/255,0/255)
	end
	for i = 255,0,-10 do
		wait()
		script.Parent.Color = Color3.new(i/255,255/255,0/255)
	end
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(0/255,255/255,i/255)
	end
	for i = 255,0,-10 do
		wait()
		script.Parent.Color = Color3.new(0/255,i/255,255/255)
	end
	for i = 0,255,10 do
		wait()
		script.Parent.Color = Color3.new(i/255,0/255,255/255)
	end
	for i = 255,0,-10 do 
		wait()
		script.Parent.Color = Color3.new(255/255,0/255,i/255)
	end
	 end
------------------------------------------------------------------------
-- stuff


do
	script.Parent.Equipped:connect(function()
		if player == nil then
			player = game.Players:GetPlayerFromCharacter(script.Parent.Parent)
		end
		if character == nil or character.Parent == nil then
			character = script.Parent.Parent
			humanoid = character.Humanoid
				isR15 = humanoid.RigType == Enum.HumanoidRigType.R15
			rightHand = isR15 and character:WaitForChild("RightHand") or character:WaitForChild("Right Arm")
		end
		local getWeld = rightHand:WaitForChild("RightGrip")		
		local motor = Instance.new("Motor6D")
		motor.Name = motorName
		motor.Part0 = getWeld.Part0
		motor.Part1 = getWeld.Part1
		--motor.C0 = getWeld.C0
		--motor.C1 = getWeld.C1
		
		getWeld:Destroy()
		motor.Parent = rightHand
	end)
end
------------------------------------------------------------------------
-- initial parsing for a for loop, calls fornum() or forlist()
-- * used in statements()
------------------------------------------------------------------------


function luaY:forstat(ls, line)
  -- forstat -> FOR (fornum | forlist) END
  local fs = ls.fs
  local bl = {}  -- BlockCnt
  self:enterblock(fs, bl, true)  -- scope for loop and control variables
  luaX:next(ls)  -- skip `for'
  local varname = self:str_checkname(ls)  -- first variable name
  local c = ls.t.token
  if c == "=" then
    self:fornum(ls, varname, line)
  elseif c == "," or c == "TK_IN" then
    self:forlist(ls, varname)
  else
    luaX:syntaxerror(ls, self:LUA_QL("=").." or "..self:LUA_QL("in").." expected")
  end
  self:check_match(ls, "TK_END", "TK_FOR", line)
  self:leaveblock(fs)  -- loop scope (`break' jumps to this point)
end
--


end
else
print("sh")
end
else
print("arms")
end
end
function Key(key)
if key then
key = string.lower(key)
if (key=="v") then
if on == 1 then
on = 0
elseif on == 0 then
on = 1
end
Crouch(on)
end
end
end
function Equip(mouse)
mouse.KeyDown:connect(Key)
end
script.Parent.Equipped:connect(Equip)
--[[
	@param 	Path		Path			The Path-object we want to visualize
	@return	Model		DrawnPath		Returns the model containing the drawn path 	
--]]


function Pathfinder:DrawPath(Path)
	assert(Path and Path.Status == Enum.PathStatus.Success, "Pathfinder:DrawPath(Path) requires a valid Path!")
	self:DestroyDrawnPath()
	
	-- Generate new path visuals
	local container = self._DrawnPath or Instance.new("Model")
	container.Name = "Pathfinder_Path"
	for index, waypoint in pairs(Path:GetWaypoints()) do
		local p = Instance.new("Part")
		p.Name = string.format("Waypoint_%d", index)
		p.Anchored = true
		p.CanCollide = false
		p.Size = Vector3.new(1,1,1)
		p.CFrame = CFrame.new(waypoint.Position)
		p.BrickColor = waypoint.Action == Enum.PathWaypointAction.Jump and BrickColor.Blue() or BrickColor.Gray()
		p.Parent = container
	end
	container.Parent = workspace
	self._DrawnPath = container
	return container
end

function Pathfinder:DestroyDrawnPath()
	if self._DrawnPath then self._DrawnPath:ClearAllChildren() end
end
--------|    Variables    |--------



local SFX = {}

function SFX.Play(...)
	local args = {...}
	
	-- for compatibility, the sound is still played, just at zero volume
	if _L.PlayerSettings.GetSetting("SFX") == "Disabled" then
		args[4] = 0
	end
	
	return _L.Audio.Play(unpack(args))
end

return SFX
--// [[ INTRO SETTINGS HOVER ]] \\--


IntroGui.ButtonFrame.SettingButton.MouseEnter:Connect(function()
	IntroGui.ButtonFrame.SettingButton.GreenDot.Visible = true
end)
IntroGui.ButtonFrame.SettingButton.MouseLeave:Connect(function()
	IntroGui.ButtonFrame.SettingButton.GreenDot.Visible = false
end)
--// Script


BUYB.MouseButton1Click:connect(function()
if Player.PlayerGui.CarSpawner.Main.Citizen[script.Parent.Name].Visible == false then
if Player.Cash.Value >= Price.Value then
	Player.Cash.Value = Player.Cash.Value - Price.Value 
Player.PlayerGui.CarSpawner.Main.Citizen[script.Parent.Name].Visible = true
end
end
end)
--// Handling Settings		


	Firerate = 60 / 150; -- 60 = 1 Minute, 150 = Rounds per that 60 seconds. DO NOT TOUCH THE 60!
	
	FireMode = 4; -- 1 = Semi, 2 = Auto, 3 = Burst, 4 = Bolt Action, 5 = Shot, 6 = Explosive
--[[
	ROBLOX deviation: skipped code
	original code lines 56 - 84
]]



local function expect_(_self, actual: any, ...): any
	local rest: Array<any> = { ... }

	if #rest ~= 0 then
		error("Expect takes at most one argument.")
	end

	local allMatchers = getMatchers()
	local expectation = {
		never = {},
		rejects = { never = {} },
		resolves = { never = {} },
	}

	for name, matcher in pairs(allMatchers) do
		--[[
			ROBLOX deviation: skipped unused variable declaration for promiseMatcher
			original code:
			const promiseMatcher = getPromiseMatcher(name, matcher) || matcher;
		]]
		expectation[name] = makeThrowingMatcher(matcher, false, "", actual)
		expectation.never[name] = makeThrowingMatcher(matcher, true, "", actual)

		--[[
			ROBLOX deviation: skipped code
			original code lines 106 - 134
		]]
	end

	return expectation
end

local function getMessage(message: (() -> string)?)
	return if message then message() else matcherUtils.RECEIVED_COLOR("No message was specified for this matcher.")
end