Roblox/luau_corpus huggingface dataset:
----------------------/-/- Tow Buttons -\-\----------------------

gui.Up.MouseButton1Down:Connect(function() BedEvent:FireServer("Up") end)
gui.Down.MouseButton1Down:Connect(function() BedEvent:FireServer("Down") end)

gui.Attach.MouseButton1Down:Connect(function() gui.Parent.CancelInfo.Visible = true attachMode = true end)
gui.Detach.MouseButton1Down:Connect(function() WinchEvent:FireServer("Detach") end)

gui.Weld.MouseButton1Down:Connect(function() WinchEvent:FireServer("Weld") end)
gui.Release.MouseButton1Down:Connect(function() WinchEvent:FireServer("Release") end)

gui.In.MouseButton1Down:Connect(function() WinchEvent:FireServer("In start") end)
gui.Stop.MouseButton1Down:Connect(function() WinchEvent:FireServer("In stop") end)
--Made by Stickmasterluke

local TweenService = game:GetService("TweenService")

local camera = game.Workspace.CurrentCamera

sp = script.Parent

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

local WalkFov = 60
local SprintFov = 100
local FovTime = 0.3

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

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

if smokepart~=nil then
	smokepart:Destroy()
end
script:Destroy()
--[=[
	Locks the mouse in the center of the screen. Call `mouse:Unlock()`
	to unlock the mouse.

	:::caution Must explicitly unlock
	See cautionary in `Lock` method above.
]=]
function Mouse:LockCenter()
	UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
end
-- Set up the click event handlers for each button
for _, button in ipairs(dock:GetChildren()) do
	if button:IsA("ImageButton") then
		button.MouseButton1Click:Connect(function()
			-- Create the jump tween
			local Click = script.Click
			Click:Play()
		end)
	end
end
-------------------------
function onClicked()
Car.BodyVelocity.velocity = Vector3.new(0, 0, 0)
end
script.Parent.ClickDetector.MouseClick:connect(onClicked)
--[[ This HelpButton Theme displays by default the headshot of the LocalPlayer.
   Modes: {
          "HEADSHOT" -- LocalPlayer Headshot Thumb
          "CUSTOM" -- Loads from Settings
          }
--]]
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 toggle1 = service.New("Frame", gui)

	local round = Instance.new("UICorner")
	round.CornerRadius = UDim.new(0, 6)
	round.Parent = toggle1

	local round1 = Instance.new("UICorner")
	round1.CornerRadius = UDim.new(0, 6)
	round1.Parent = toggle

	local gTable = client.UI.Register(gui)

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

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

	toggle.Name = "Toggle"
	toggle1.Name = "RoundFrame"
	toggle1.BackgroundColor3 = Color3.fromRGB(17, 17, 17)
	toggle.BackgroundTransparency = 1
	toggle1.Position = UDim2.new(1, -45, 1, -45)
	toggle.Position = UDim2.new(1, -42, 1, -38)
	toggle.Size = UDim2.new(0, 33, 0, 33) --33
	toggle.ZIndex = 67
	toggle1.Size = UDim2.new(0, 40, 0, 40)
		toggle.Image =
			`https://www.roblox.com/headshot-thumbnail/image?userId={localplayer.UserId}&width=420&height=420&format=png`



	toggle.ImageTransparency = 0

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

	toggle.MouseButton1Down:Connect(
		function()
			local found = client.UI.Get("UserPanel", nil, true)
			if found then
				found.Object:Destroy()
			else
				client.UI.Make("UserPanel", {})
			end
		end
	)

	gTable:Ready()
end
-- Functions
function DisplayManager:StartIntermission(player)
	if player then
		DisplayIntermission:FireClient(player, true)
	else
		DisplayIntermission:FireAllClients(true)
	end
end

function DisplayManager:StopIntermission(player)
	if player then
		DisplayIntermission:FireClient(player, false)
	else
		DisplayIntermission:FireAllClients(false)
	end
end

function DisplayManager:UpdateTimerInfo(isIntermission, waitingForPlayers)
	DisplayTimerInfo:FireAllClients(isIntermission, waitingForPlayers)
end

function DisplayManager:DisplayVictory(winningTeam)
	DisplayVictory:FireAllClients(winningTeam)
end

function DisplayManager:UpdateScore(team, score)
	DisplayScore:FireAllClients(team, score)
end

return DisplayManager
--[=[
	@class Comm
	Remote communication library.

	This exposes the raw functions that are used by the `ServerComm` and `ClientComm` classes.
	Those two classes should be preferred over accessing the functions directly through this
	Comm library.
]=]
local Comm = {Server = {}, Client = {}}
-- Wether or not we should use some even worse temp hacks than the rest of the temp hacks to avoid RobloxSecurity APIs

return true
---[[ Window Settings ]]
module.MinimumWindowSize = UDim2.new(0.25, 0, 0.25, 0)
module.MaximumWindowSize = UDim2.new(1, 0, 1, 0) -- if you change this to be greater than full screen size, weird things start to happen with size/position bounds checking.
module.DefaultWindowPosition = UDim2.new(0, 0, .45, 0)
local extraOffset = (7 * 2) + (5 * 2) -- Extra chatbar vertical offset
module.DefaultWindowSizePhone = UDim2.new(0.5, 0, 0.5, extraOffset)
module.DefaultWindowSizeTablet = UDim2.new(0.4, 0, 0.3, extraOffset)
module.DefaultWindowSizeDesktop = UDim2.new(0.25, 0, 0.25, extraOffset)
--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
--DO NOT CHANGE ANYTHING INSIDE OF THIS SCRIPT BESIDES WHAT YOU ARE TOLD TO UNLESS YOU KNOW WHAT YOU'RE DOING OR THE SCRIPT WILL NOT WORK!!
local hitPart = script.Parent
local debounce = true
local tool = game.ServerStorage.Rose -- Change "Sword" to the name of your tool, make sure your tool is in ServerStorage

hitPart.Touched:Connect(function(hit)
	if debounce == true then
		if hit.Parent:FindFirstChild("Humanoid") then
			local plr = game.Players:FindFirstChild(hit.Parent.Name)
			if plr then
				debounce = false
				hitPart.BrickColor = BrickColor.new("Bright red")
				tool:Clone().Parent = plr.Backpack
				wait(3) -- Change "3" to however long you want the player to have to wait before they can get the tool again
				debounce = true
				hitPart.BrickColor = BrickColor.new("Bright green")
			end
		end
	end
end)
--Camera bobbing
-- Shakes the camera when the player is walking

local runService = game:GetService("RunService")

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")

function updateBobbleEffect()
	local currentTime = tick()
	if humanoid.MoveDirection.Magnitude > 0 then
		local bobbleX = math.cos(currentTime * 10) * .25
		local bobbleY = math.abs(math.sin(currentTime * 10)) * .25        

		local bobble = Vector3.new(bobbleX, bobbleY, 0)

		humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, .200)
	else 
		humanoid.CameraOffset = humanoid.CameraOffset * .75
	end
end

runService.RenderStepped:Connect(updateBobbleEffect)
--------LEFT DOOR --------
game.Workspace.doorleft.l11.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l21.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l31.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l41.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l51.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l61.BrickColor = BrickColor.new(106)
game.Workspace.doorleft.l73.BrickColor = BrickColor.new(1003)
-- ============================================
-- Falling Objects

local burningRock =
{
    MODEL = ServerStorage["Burning Rock"],
    DAMAGE = 20,
    NUMBER_PER_MINUTE = 20,
    CLEANUP_DELAY_IN_SECONDS = 5
}

local healingWater =
{
	MODEL = ServerStorage["Healing Water"],
	DAMAGE= -20,
	NUMBER_PER_MINUTE = 20,
	CLEANUP_DELAY_IN_SECONDS = 5
	
}
table.insert(fallingStuffTable, burningRock)
table.insert(fallingStuffTable,healingWater)
-- Get references to the DockShelf and its children
local dockShelf = script.Parent.Parent.Parent.Parent.Parent.DockShelf
local aFinderButton = dockShelf.BClippsly
local Minimalise = script.Parent
local window = script.Parent.Parent.Parent
--[[Weight and CG]]
	Tune.Weight			= 3214		-- Total weight (in pounds)
	Tune.WeightBSize	= {			-- Size of weight brick (dimmensions in studs ; larger = more stable)
	 --[[Width]]		6		,
	 --[[Height]]		3.5		,
	 --[[Length]]		15		}
	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
--// Bullet Physics
	BulletPhysics = Vector3.new(0,55,0); -- Drop fixation: Lower number = more drop
	BulletSpeed = 2000; -- Bullet Speed
	BulletSpread = 1; -- How much spread the bullet has
	
	ExploPhysics = Vector3.new(0,20,0); -- Drop for explosive rounds
	ExploSpeed = 600; -- Speed for explosive rounds
	
	BulletDecay = 10000; -- How far the bullet travels before slowing down and being deleted (BUGGY)
--	
	script.Parent.Handle3.Hinge1.Transparency = 1
	script.Parent.Handle3.Interactive1.Transparency = 1
	script.Parent.Handle3.Part1.Transparency = 1
	wait(0.03)
	script.Parent.Handle1.Hinge1.Transparency = 1
	script.Parent.Handle1.Interactive1.Transparency = 1
	script.Parent.Handle1.Part1.Transparency = 1
-- NOTE: This function is radically different from the engine's implementation
local walkVelocityVector = Vector3_new(1,1,1)
local function calcDesiredWalkVelocity()
	-- TEMP
	return walkVelocityVector
end

local function preStepSimulatorSide(dt)
	if getAutoJump() and enableAutoJump() then
		local desiredWalkVelocity = calcDesiredWalkVelocity();
		if (not vec3IsZero(desiredWalkVelocity)) then
			doAutoJump();
		end
	end
end

local function AutoJumper()
	local this = {}
	local running = false
	local runRoutine = nil

	function this:Run()
		running = true
		local thisRoutine = nil
		thisRoutine = coroutine.create(function()
			while running and thisRoutine == runRoutine do
				this:Step()
				task.wait()
			end
		end)
		runRoutine = thisRoutine
		coroutine.resume(thisRoutine)
	end

	function this:Stop()
		running = false
	end

	function this:Step()
		preStepSimulatorSide()
	end

	return this
end
--Automatic Settings
Tune.AutoShiftMode	= "RPM"												--[[
	[Modes]
		"Speed"		: Shifts based on wheel speed
		"RPM"		: Shifts based on RPM										]]
Tune.AutoShiftType	= "DCT"												--[[
	[Types]
		"Rev"		: Clutch engages fully once RPM reached			
		"DCT"		: Clutch engages after a set time has passed				]]
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)
--User Settings

Speed_Units = "MPH"	--MPH/KMH/SPS
--[[
    configure(config: table): nil

    Overrides default configuration keys to change how the Dev Module behaves.

    Throws when trying to set a configuration key that does not exist.

    The possible keys and their default values for the `config` table are:

    	-- Toggle the "body orientation" feature through this parameter
    	useBodyOrientation = true,
    	
    	-- Body orientation uses a mix of waist and neck rotation, use this parameter to determine which of the two is
    	-- prevalent. It should be a number between 0 and 1: 1 means that only the waist rotates, 0 means that only the neck
    	-- rotates. A value of 0.5 performs an even mix of waist and neck rotation.
    	waistOrientationWeight = 0.5,
    	
    	-- Toggle the "chat-triggered emotes" feature through this parameter
    	useChatAnimations = true,
    	
    	-- "Chat emotes" comes with a default list of trigger words. Use this parameter to turn them off if you would rather
    	-- provide your own.
    	 useDefaultTriggerWordsForChatEmotes = true,
]]
-- Example: configures "body orientation" to make waist rotation more pronounced, and disable the "chat emotes" feature
SocialInteractions.configure({
	waistOrientationWeight = 0.75,
	useChatAnimations = false,
})
--[[for x = 1, 50 do
s.Pitch = s.Pitch + 0.01
s:play()
wait(0.04)
end]]
for x = 100, 170 do
s:play()
wait(0.04)
end
for x = 100, 210 do
s.Pitch = s.Pitch - 0.0031
s:play()
wait(0.04)
end
wait()
end
--[[**
	ensures Roblox FloatCurveKey type

	@param value The value to check against

	@returns True iff the condition is satisfied, false otherwise
**--]]
t.FloatCurveKey = t.typeof("FloatCurveKey")
--[[Shutdown]]


	car.DriveSeat.ChildRemoved:connect(function(child)
		if child.Name=="SeatWeld" and child:IsA("Weld") then
			script.Parent:Destroy()
		end
	end)
-- Create component
local ImageButton = Roact.PureComponent:extend 'ImageButton'
--[[			
	@param 	Number 		Range			The radius for which we will search for players (characters).
--]]
function Ownership:WaitForPlayerInRange(Range)
	-- Check if there are actually players in game - if not, wait for a player to join
	if #Players:GetPlayers() == 0 then 
		Players.PlayerAdded:Wait() 
	end
	
	local Player;
	repeat
		for _, player in pairs(Players:GetPlayers()) do
			if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
				if (player.Character.HumanoidRootPart.Position - self.Model.PrimaryPart.Position).Magnitude <= Range then
					Player = player
					break
				end
			end
		end
		wait(0.1)
	until Player or #Players:GetPlayers() == 0
	-- The loop waits until either a Player has been found or there are no more players left in the game.
	
	-- If no player was found, it means the other condition (no players in game) was triggered.
	if not Player then
		-- We (re-)call this method to make use of PlayerAdded:Wait() instead of a repeat-loop, for efficiency.
		self:WaitForPlayerInRange(Range)
	else
		self:SetOwner(Player)
	end
end
--Updates the speedo
val.Velocity.Changed:connect(function()
	
	Guages.Speed.Text = tostring(math.floor(val.Velocity.Value.Magnitude * StudsToKilo))
	
end)
--//Setup//--
local Buttons = script.Parent

local Floor = Buttons.Parent
local FloorConfiguration = Floor.Configuration
--Brake particles
bp1 = script.Parent.BrakeParticles1.ParticleEmitter
bp2 = script.Parent.BrakeParticles2.ParticleEmitter
bs = script.Parent.Mover.Sound --brake sound

while true do
	wait(0.1)
	--dir & speed
	if dir.Value == 0 then
		script.Parent.Mover.BodyVelocity.Velocity = Vector3.new(0, 0, 0)
	elseif dir.Value >= 0.5 then
		script.Parent.Mover.BodyVelocity.velocity= script.Parent.Mover.CFrame.lookVector*rsp.Value
	elseif dir.Value <= -0.5 then
		script.Parent.Mover.BodyVelocity.velocity= script.Parent.Mover.CFrame.lookVector*-rsp.Value
	end
	--Brake effects
	if brk.Value >= 0 and csp.Value >= 0.5 then
		bp1.Enabled = true
		bp2.Enabled = true
		bs.Volume = brk.Value / bmax.Value --this trick doesn't let the sound hurt your ears 
		                             	   --even when the maximum brake value is 10000000
	else 
		bp1.Enabled = false
		bp2.Enabled = false
		bs.Volume = 0
	end
end
-- Decompiled with the Synapse X Luau decompiler.

client = nil;
service = nil;
return function(p1)
	local l__Time__1 = p1.Time;
	local v2 = service.New("Sound");
	v2.Volume = 0.25;
	v2.Looped = false;
	v2.SoundId = "http://www.roblox.com/asset/?id=151715959";
	local v3 = service.New("Sound");
	v3.Volume = 0.25;
	v3.Looped = false;
	v3.SoundId = "http://www.roblox.com/asset/?id=267883066";
	local v4 = {
		Name = "Countdown", 
		Title = "Countdown", 
		Size = { 300, 150 }, 
		Position = UDim2.new(0, 10, 1, -160)
	};
	function v4.OnClose()
		v2:Stop();
		v3:Stop();
		v2:Destroy();
		v3:Destroy();
	end;
	local v5 = client.UI.Make("Window", v4);
	local v6 = v5:Add("TextLabel", {
		Text = l__Time__1, 
		BackgroundTransparency = 1, 
		TextScaled = true
	});
	local v7 = {
		Text = ""
	};
	local u1 = false;
	local u2 = nil;
	function v7.OnClick()
		if u1 then
			v2.Volume = 0.25;
			v3.Volume = 0.25;
			u2.Image = "rbxassetid://1638551696";
			u1 = false;
			return;
		end;
		v2.Volume = 0;
		v3.Volume = 0;
		u2.Image = "rbxassetid://1638584675";
		u1 = true;
	end;
	u2 = v5:AddTitleButton(v7):Add("ImageLabel", {
		Size = UDim2.new(0, 20, 0, 20), 
		Position = UDim2.new(0, 5, 0, 0), 
		Image = "rbxassetid://1638551696", 
		BackgroundTransparency = 1
	});
	v2.Parent = v6;
	v3.Parent = v6;
	local l__gTable__8 = v5.gTable;
	l__gTable__8:Ready();
	for v9 = l__Time__1, 0, -1 do
		if not l__gTable__8.Active then
			break;
		end;
		v2:Play();
		v6.Text = v9;
		wait(1);
	end;
	v3:Play();
	for v10 = 0, 3 do
		v3:Play();
		for v11 = 1, 0, -0.1 do
			v6.TextTransparency = v11;
			wait(0.05);
		end;
		for v12 = 0, 1, 0.1 do
			v6.TextTransparency = v12;
			wait(0.05);
		end;
	end;
	v5:Close();
end;
-- Settings
local Configuration = Home:WaitForChild("Configuration")
local SwingPower = Configuration:WaitForChild("SwingPower")

local function SetPhysicalProperties(Part,Density)
	if Part then
		Part.CustomPhysicalProperties = PhysicalProperties.new(Density,Part.Friction,Part.Elasticity)
	end
end

GetAllDescendants = function(instance, func)
	func(instance)
	for _, child in next, instance:GetChildren() do
		GetAllDescendants(child, func)
	end
end

local function SetCharacterToWeight(ToDensity,Char)
	GetAllDescendants(Char,function(d)
		if d and d.Parent and d:IsA("BasePart") then
			SetPhysicalProperties(d,density)
		end
	end)
end

local function OnSeatChange(Seat)
	if Seat.Occupant then
		local CurrentThrottle = Seat.Throttle
		local BodyForce = Seat:WaitForChild("BodyForce")
		
		-- Adjust swing when interacted
		if CurrentThrottle == 1 then
			BodyForce.Force = Seat.CFrame.lookVector * SwingPower.Value * 100
		elseif CurrentThrottle == -1 then
			BodyForce.Force = Seat.CFrame.lookVector * SwingPower.Value * -100
		else
			BodyForce.Force = Vector3New()
		end
		
		delay(0.2,function()
			BodyForce.Force = Vector3New()
		end)
		
		-- Make the character weightless for the swing to behave correctly
		if CurrentOccupant == nil then
			CurrentOccupant = Seat.Occupant
			SetCharacterToWeight(0,CurrentOccupant.Parent)
		end
		
	elseif CurrentOccupant then
		-- Set the character's weight back
		SetCharacterToWeight(0.7,CurrentOccupant.Parent)
		CurrentOccupant = nil
	end
end

SwingSeat1.Changed:connect(function()
	OnSeatChange(SwingSeat1)
end)

SwingSeat2.Changed:connect(function()
	OnSeatChange(SwingSeat2)
end)
--[[
	Implementation
]]

local singleton = nil

local GameStageHandler = {}
GameStageHandler.__index = GameStageHandler

function GameStageHandler.new()
	local self = setmetatable({
		currentStage = nil,
		currentStageClassName = nil,
		timeStageStarted = nil,
	}, GameStageHandler)

	self.gameStageChanged = Signal.new()

	getGameStage.OnServerInvoke = function(player)
		return self.currentStageClassName
	end

	singleton = self

	return self
end

function GameStageHandler.getInstance()
	return singleton
end

function GameStageHandler:nextStage()
	-- Destroy the previous stage
	self.currentStage:destroy()

	-- Figure out what the next stage will be
	local nextStageName = nil
	for index, value in ipairs(Conf.stages) do
		if value == self.currentStageClassName then
			nextStageName = Conf.stages[index + 1]
			break
		end
	end

	self:_initializeStage(nextStageName)
end

function GameStageHandler:start()
	self:_initializeStage(Conf.stages[1])
end

function GameStageHandler:destroy()
	self.gameStageChanged = nil

	if self.currentStage then
		self.currentStage:destroy()
	end
end

function GameStageHandler:_initializeStage(stageName)
	if not stageName then
		return
	end

	print(string.format("Initilizing Stage: %s", stageName))

	-- Initialize the next stage, if there is one
	local nextStage = stageFolder:FindFirstChild(stageName)

	assert(nextStage, string.format("Failed to initialize stage \"%s\", stage does not exist", stageName))

	self.currentStage = require(nextStage).new(self)
	self.currentStageClassName = stageName
	self.timeStageStarted = tick()

	self.currentStage:initialize()

	-- Fire local event
	self.gameStageChanged:fire(stageName)

	-- Notify clients of the stage change
	gameStageChanged:FireAllClients(stageName)
	Broadcast.fireRemote("GAME_STAGE_CHANGE", stageName)
end

return GameStageHandler
--// general sound making function
function module.MakeSound(ID : string, parent : Instance, playing : boolean?, pitch : number?, volume : number?, looped : boolean?)
	local MadeSound = Instance.new("Sound")
	MadeSound.Parent = parent
	MadeSound.SoundId = ID
	MadeSound.Playing = playing
	MadeSound.PlaybackSpeed = pitch
	MadeSound.Volume = volume
	MadeSound.Looped = looped
	return MadeSound
end
-- this module script determines who is banned (if you want to ban people just like that, place this in server storage. then input the userid.)
-- also DONT RENAME THIS MODULE SCRIPT
local module = {
	
	Banned = {},
	
	

		

	
	
	
	
	
	
	
	
	
}

return module
--Rebirth formula secreta de las cangreRebirths :V:V:V:V:V 
Button.Activated:Connect(function()
	local FormulaUpdate = RebirthFormule.Value + (RebirthFormule.Value * Multiplier.Value)
	RebirthEvent:FireServer()
	if Points.Value >= FormulaUpdate then
		--Info for tween
	local TweenRotationInfo = TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut)
		local Tween1 = TweenService:Create(Icon, TweenRotationInfo, {Rotation = 15})
		Tween1:Play()
		Tween1.Completed:Connect(function()
			local Tween2 = TweenService:Create(Icon, TweenRotationInfo, {Rotation = -10})
			Tween2:Play()
			Tween2.Completed:Connect(function()
				local Tween3 = TweenService:Create(Icon, TweenRotationInfo, {Rotation = 0})
				Tween3:Play()
			end)
		end)
		
	end
end)
-- initialize to idle
playAnimation("idle", 0.1, Enemy)
pose = "Standing"

while Figure.Parent~=nil do
	local _, time = wait(0.1)
	move(time)
end
--//Weight//--
VehicleWeight = 1700 --{Weight of vehicle in KG}
WeightDistribution = 60 --{To the rear}
--!strict
return {
	isFinite = require(script.isFinite),
	isInteger = require(script.isInteger),
	isNaN = require(script.isNaN),
	isSafeInteger = require(script.isSafeInteger),
	MAX_SAFE_INTEGER = require(script.MAX_SAFE_INTEGER),
	MIN_SAFE_INTEGER = require(script.MIN_SAFE_INTEGER),
	NaN = 0 / 0,
	toExponential = require(script.toExponential),
}