Roblox/luau_corpus huggingface dataset:
-- make a splat
	for i=1,3 do
		local s = Instance.new("Part")
		s.Shape = 1 -- block
		s.formFactor = 2 -- plate
		s.Size = Vector3.new(1,.4,1)
		s.BrickColor = col
		local v = Vector3.new(math.random(-1,1), math.random(0,1), math.random(-1,1))
		s.Velocity = 15 * v
		s.CFrame = CFrame.new(ball.Position + v, v)
		ball.BrickCleanup:clone().Parent = s
		s.BrickCleanup.Disabled = false
		s.Parent = game.Workspace
	end
	
	if humanoid then
		if game.Players:FindFirstChild(humanoid.Parent.Name).TeamColor~=ball.BrickColor then
			tagHumanoid(humanoid)
			humanoid:TakeDamage(damage)
			wait(2)
			untagHumanoid(humanoid)
		end
	end

	connection:disconnect()
	ball.Parent = nil
end

function tagHumanoid(humanoid)
	-- todo: make tag expire
	local tag = ball:findFirstChild("creator")
	if tag ~= nil then
		local new_tag = tag:clone()
		new_tag.Parent = humanoid
	end
end


function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end

connection = ball.Touched:connect(onTouched)

wait(8)
ball.Parent = nil
--	elseif key == "u" then --Window controls
--		windows = not windows
--		rad(windows)
	elseif key == "[" then -- volume down
		if st then
			carSeat.CCS.Value = carSeat.CCS.Value-1
		else
			handler:FireServer('updateVolume', -0.5)
		end
	elseif key == "g" then -- volume up
		handler:FireServer('sr')
	elseif key == "]" then -- volume up
		if st then
			carSeat.CCS.Value = carSeat.CCS.Value+1
		else
			handler:FireServer('updateVolume', 0.5)
		end
	elseif key == "u" then --Mode Screen Switch
		swap()
	elseif key:byte() == 48 then -- CC
		st = true
	end
end)

mouse.KeyUp:connect(function (key)
    key = string.lower(key)
	if key:byte() == 48 then --Camera controls
		st = false
	end
end)

for i,v in pairs(HB:GetChildren()) do
	if v:IsA('ImageButton') then
		v.MouseButton1Click:connect(function()
			if carSeat.Windows:FindFirstChild(v.Name) then
				local v = carSeat.Windows:FindFirstChild(v.Name)
				if v.Value == true then
					handler:FireServer('updateWindows', v.Name, false)
				else
					handler:FireServer('updateWindows', v.Name, true)
				end
			end
		end)
	end
end

for i,v in pairs(HUB.Windows:GetChildren()) do
	if v:IsA('ImageButton') then
		v.MouseButton1Click:connect(function()
			if carSeat.Windows:FindFirstChild(v.Name) then
				local v = carSeat.Windows:FindFirstChild(v.Name)
				if v.Value == true then
					handler:FireServer('updateWindows', v.Name, false)
				else
					handler:FireServer('updateWindows', v.Name, true)
				end
			end
		end)
	end
end

HUB.Misc.CC.MouseButton1Click:connect(function()
	carSeat.CC.Value = not carSeat.CC.Value
	carSeat.CCS.Value = math.floor(carSeat.Velocity.Magnitude*mph)
end)

HUB.Misc.W.MouseButton1Click:connect(function()
	handler:FireServer('wws',carSeat.WS.Value,st)
	handler:FireServer('wwr',carSeat.WS.Value,st)
end)

HUB.Misc.SS.MouseButton1Click:connect(function()
	carSeat.SST.Value = not carSeat.SST.Value
end)
--script.Parent.CanCollide = true
function onTouched(hit)


	local humanoid = hit.Parent:findFirstChild("Humanoid")
	if humanoid~=nil then
		tagHumanoid(humanoid)
		humanoid.Health = humanoid.Health - 10
		untagHumanoid(humanoid)
		connection:disconnect()
	else
		damage = damage / 2
		if damage < 2 then
			connection:disconnect()
			ball.Parent = nil
		end
	end

	if math.random(1,1) == 1 then
		explosion = Instance.new("Explosion")
		explosion.BlastRadius = 5
		explosion.BlastPressure = 50000 -- these are really wussy units
		explosion.Position = script.Parent.Position
		explosion.Parent = game.Workspace
		connection:disconnect()
		ball.Parent = nil

	end

end

function tagHumanoid(humanoid)
	-- todo: make tag expire
	local tag = ball:findFirstChild("creator")
	if tag ~= nil then
		local new_tag = tag:clone()
		new_tag.Parent = humanoid
	end
end


function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end

connection = ball.Touched:connect(onTouched)

r = game:service("RunService")
t, s = r.Stepped:wait()
d = t + 5.0 - s
while t < d do
	t = r.Stepped:wait()
end

ball.Parent = nil
-- MODULES --
--local fallService = require(script.Parent:WaitForChild("FallService"))
local miscModule = require(Modules:WaitForChild("Misc"))
--// Event Connections
L_118_.OnClientEvent:connect(function(L_332_arg1, L_333_arg2)
	if L_332_arg1 ~= L_2_ then
		local L_334_ = L_332_arg1.Character
		local L_335_ = L_334_.AnimBase.AnimBaseW
		local L_336_ = L_335_.C1
		if L_333_arg2 then
			L_133_(L_335_,  nil , L_334_.Head.CFrame, function(L_337_arg1)
				return math.sin(math.rad(L_337_arg1))
			end, 0.25)
		elseif not L_333_arg2 then
			L_133_(L_335_,  nil , L_336_, function(L_338_arg1)
				return math.sin(math.rad(L_338_arg1))
			end, 0.25)
		end
	end
end)

L_121_.OnClientEvent:connect(function(L_339_arg1, L_340_arg2)
	if L_42_ and L_340_arg2 ~= L_2_ and L_24_.CanCallout then
		if (L_3_.HumanoidRootPart.Position - L_339_arg1).magnitude <= 10 then
			L_41_.Visible = true
			local L_341_ = ScreamCalculation()
			if L_341_ then
				if L_7_:FindFirstChild('AHH') and not L_7_.AHH.IsPlaying then
					L_122_:FireServer(L_7_.AHH, L_100_[math.random(0, 21)])
				end
			end
			L_14_:Create(L_41_, TweenInfo.new(0.1), {
				BackgroundTransparency = 0.4
			}):Play()
			delay(0.1, function()
				L_14_:Create(L_41_, TweenInfo.new(3), {
					BackgroundTransparency = 1
				}):Play()
			end)
		end
	end
end)
-- @moduledescription Manage all the player, if they are ready or not
local module = {}
local System = require(game.ReplicatedStorage.System) :: any

module.OnReady = System.Signal.new()

function module.Init()
	
	System.Remotes.ConnectEvent("Ready", function(plr)
		print(plr, "is ready!")
		
		local Player = System.Player.Get(plr)
		Player.Ready = true
		System.Entity.ReplicateToNewPlayer(plr)
		Player:OnDeath(true)
		
	end)
	
	game.Players.PlayerRemoving:Connect(function(p)
		local plr = System.Player.Get(p)
		if not plr then return end
		
		print(plr:ToString(), "Left")
		plr:Destroy()
	end)
end

return module
-- Class

local MaidClass = {}
MaidClass.__index = MaidClass
MaidClass.__type = "Maid"

function MaidClass:__tostring()
	return MaidClass.__type
end
-- Check when player is typing in chat or typing in general (this was originally setting _L.Typing instead of _L.Variables.Typing for 2 years LMFAO oops)


_L.Services.UserInputService.TextBoxFocused:Connect(function(textBox)
	_L.Variables.Typing = true
	if textBox:IsDescendantOf(_L.Player.Chat) then
		_L.Variables.Chatting = true
	end
end)
	 
	
_L.Services.UserInputService.TextBoxFocusReleased:Connect(function(textBox)
	_L.Variables.Typing = false
	if textBox:IsDescendantOf(_L.Player.Chat) then
		_L.Variables.Chatting = false
	end
end)
-- NOTE: To me, this appears a bit 'hackish' so I can't
-- promise that it will always work!



local noJump = script.NoJump:Clone()
	script.NoJump:Destroy()


function CharacterSpawned(char)
	local noJ = noJump:Clone()
	noJ.Parent = char
	delay(0.2, function()
		noJ.Disabled = false
	end)
end

function PlayerEntered(player)
	player.CharacterAdded:connect(CharacterSpawned)
end

for _,v in pairs(game.Players:GetPlayers()) do PlayerEntered(v) end
game.Players.PlayerAdded:connect(PlayerEntered)
-- Every valid configuration value should be non-nil in the config table.
function Config.new(defaultConfig)
	local self = {}
	self.defaultConfig = defaultConfig
	self.defaultConfigKeys = {}

	for key in pairs(defaultConfig) do
		table.insert(self.defaultConfigKeys, key)
	end

	self._currentConfig = setmetatable({}, {
		__index = function(_, key)
			local message = (
				"Invalid global configuration key %q. Valid configuration keys are: %s"
			):format(
				tostring(key),
				table.concat(self.defaultConfigKeys, ", ")
			)

			error(message, 3)
		end
	})

	-- We manually bind these methods here so that the Config's methods can be
	-- used without passing in self, since they could get exposed on the
	-- root object.
	self.set = function(...)
		return Config.set(self, ...)
	end

	self.get = function(...)
		return Config.get(self, ...)
	end

	self.scoped = function(...)
		return Config.scoped(self, ...)
	end

	self.set(defaultConfig)

	return self
end

function Config:set(configValues)
	-- Validate values without changing any configuration.
	-- We only want to apply this configuration if it's valid!
	for key, value in pairs(configValues) do
		if self.defaultConfig[key] == nil then
			local message = (
				"Invalid global configuration key %q (type %s). Valid configuration keys are: %s"
			):format(
				tostring(key),
				typeof(key),
				table.concat(self.defaultConfigKeys, ", ")
			)

			error(message, 3)
		end

		-- Right now, all configuration values must be boolean.
		if typeof(value) ~= "boolean" then
			local message = (
				"Invalid value %q (type %s) for global configuration key %q. Valid values are: true, false"
			):format(
				tostring(value),
				typeof(value),
				tostring(key)
			)

			error(message, 3)
		end

		self._currentConfig[key] = value
	end
end

function Config:get()
	return self._currentConfig
end

return Config
--- Skill
local UIS = game:GetService("UserInputService")
local plr = game.Players.LocalPlayer
local Mouse = plr:GetMouse()
local Debounce = true
Player = game.Players.LocalPlayer

UIS.InputBegan:Connect(function(Input)
	if Input.KeyCode == Enum.KeyCode.V and Debounce == true and Tool.Equip.Value == true and Tool.Active.Value == "None" then
		Debounce = false
		Tool.Active.Value = "FireBomb"
		wait(0.1)
		Track1 = Player.Character.Humanoid:LoadAnimation(script.Anim01)
		Track1:Play()
		wait(0.15)
		script.Fire:FireServer(plr)
	local hum =  Player.Character.Humanoid
	for i = 1,30 do
		wait()
		hum.CameraOffset = Vector3.new(
			math.random(-1,1),
			math.random(-1,1),
			math.random(-1,1)
		)
	end
	hum.CameraOffset = Vector3.new(0,0,0)
	    wait(0.15)
		Tool.Active.Value = "None"
		wait(2)
		Debounce = true
	end
end)
---
if 	script.Parent.Parent.Parent.IsOn.Value then
	script.Parent.Parent:TweenPosition(UDim2.new(0, 0, 0, 0),Enum.EasingDirection.InOut,Enum.EasingStyle.Quad,1,true)
end

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

	local handler = car.Fogs
			
	script.Parent.MouseButton1Click:connect(function()
		if car.Body.Fogs.F.L.L.Enabled == false then
			handler:FireServer("Lights",1)
			script.Parent.BackgroundColor3 = Color3.new(0,255/255,0)
			script.Parent.TextStrokeColor3 = Color3.new(0,255/255,0)
			for index, child in pairs(car.Body.Fogs.F:GetChildren()) do
			child.Transparency = 0
			child.L.Enabled = true
			end
		elseif car.Body.Fogs.F.L.L.Enabled == true then
			handler:FireServer("Lights",0)
			script.Parent.BackgroundColor3 = Color3.new(0,0,0)
			script.Parent.TextStrokeColor3 = Color3.new(0,0,0)
			for index, child in pairs(car.Body.Fogs.F:GetChildren()) do
			child.Transparency = 1
			child.L.Enabled = false
			end
		end
	end)
-------------------------
 
mouse.KeyDown:connect(function (key)
    key = string.lower(key)
				if key == "k" then --Camera controls
				        if cam == ("car") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Custom")
							cam = ("freeplr")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(-0.14, 0.12, -0.2)
							limitButton.Text = "Free Camera"
							wait(3)
							limitButton.Text = ""
						elseif cam == ("freeplr") then
							Camera.CameraSubject = player.Character.Humanoid
							Camera.CameraType = ("Attach")
							cam = ("lockplr")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(-0.14, 0.12, -0.2)
							limitButton.Text = "FPV Camera"
							wait(3)
							limitButton.Text = ""
				        elseif cam == ("lockplr") then
							Camera.CameraSubject = carSeat
							Camera.CameraType = ("Custom")
							cam = ("car")
							Camera.FieldOfView = 70
							player.Character.Humanoid.CameraOffset = Vector3.new(0, 0, 0)
							limitButton.Text = "Standard Camera"
							wait(3)
							limitButton.Text = ""
				        end
			end
		end)
--Variable for the Camera you want for the menu
local pc = workspace.PlayCam -- change "playcam" to the object you want to use as the camera (make sure you know the front face)

wait(.001) --waits for .001 seconds, its required dont delete
--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.MintIceCream -- 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)
-- SETTINGS ----------------------------------------------------
local hasFire = false; -- Exhaust has fire?
local hasSmoke = true; -- Exhaust has smoke?
local lightColor_on = BrickColor.new("Institutional white")
local lightColor_off = headlights[1].BrickColor -- Grab your existing color (recommended)
local brakeColor_on = BrickColor.new("Really red")
local brakeColor_off = BrickColor.new("Reddish brown")
local tiltForce = 1000; -- Force to flip over vehicle
-------- OMG HAX

r = game:service("RunService")


local damage = 15


local slash_damage = 15


sword = script.Parent.Handle
Tool = script.Parent


local SlashSound = Instance.new("Sound")
SlashSound.SoundId = "http://www.roblox.com/asset/?id=10548112"
SlashSound.Parent = sword
SlashSound.Volume = 1


local UnsheathSound = Instance.new("Sound")
UnsheathSound.SoundId = "http://www.roblox.com/asset/?id=10548108"
UnsheathSound.Parent = sword
UnsheathSound.Volume = 1


function blow(hit)
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	local vCharacter = Tool.Parent
	local vPlayer = game.Players:playerFromCharacter(vCharacter)
	local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
	if humanoid~=nil and humanoid ~= hum and hum ~= nil then
		-- final check, make sure sword is in-hand

		local right_arm = vCharacter:FindFirstChild("Right Arm")
		if (right_arm ~= nil) then
			local joint = right_arm:FindFirstChild("RightGrip")
			if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then
				tagHumanoid(humanoid, vPlayer)
				humanoid:TakeDamage(damage)
				wait(1)
				untagHumanoid(humanoid)
			end
		end


	end
end


function tagHumanoid(humanoid, player)
	local creator_tag = Instance.new("ObjectValue")
	creator_tag.Value = player
	creator_tag.Name = "creator"
	creator_tag.Parent = humanoid
end

function untagHumanoid(humanoid)
	if humanoid ~= nil then
		local tag = humanoid:findFirstChild("creator")
		if tag ~= nil then
			tag.Parent = nil
		end
	end
end


function attack()
	damage = slash_damage
	SlashSound:play()
	local anim = Instance.new("StringValue")
	anim.Name = "toolanim"
	anim.Value = "Slash"
	anim.Parent = Tool
end


function swordUp()
	Tool.GripForward = Vector3.new(-1,0,0)
	Tool.GripRight = Vector3.new(0,1,0)
	Tool.GripUp = Vector3.new(0,0,1)
end

function swordOut()
	Tool.GripForward = Vector3.new(0,0,1)
	Tool.GripRight = Vector3.new(0,-1,0)
	Tool.GripUp = Vector3.new(-1,0,0)
end



Tool.Enabled = true

function onActivated()

	if not Tool.Enabled then
		return
	end

	Tool.Enabled = false

	local character = Tool.Parent;
	local humanoid = character.Humanoid
	if humanoid == nil then
		print("Humanoid not found")
		return 
	end

	

	attack()

	wait(1)

	Tool.Enabled = true
end


function onEquipped()
	UnsheathSound:play()
end


script.Parent.Activated:connect(onActivated)
script.Parent.Equipped:connect(onEquipped)


connection = sword.Touched:connect(blow)
-- Make all the Hotbar Slots
for i = 1, NumberOfHotbarSlots do
	local slot = MakeSlot(HotbarFrame, i)
	slot.Frame.Visible = false

	if not LowestEmptySlot then
		LowestEmptySlot = slot
	end
end

InventoryIcon.selected:Connect(function()
	if not GuiService.MenuIsOpen then
		CanHover = false
		BackpackScript.OpenClose()
	end
end)
InventoryIcon.deselected:Connect(function()
	if InventoryFrame.Visible then
		CanHover = true
		BackpackScript.OpenClose()
	end
end)

LeftBumperButton = NewGui('ImageLabel', 'LeftBumper')
LeftBumperButton.Size = UDim2.new(0, 40, 0, 40)
LeftBumperButton.Position = UDim2.new(0, -LeftBumperButton.Size.X.Offset, 0.5, -LeftBumperButton.Size.Y.Offset/2)

RightBumperButton = NewGui('ImageLabel', 'RightBumper')
RightBumperButton.Size = UDim2.new(0, 40, 0, 40)
RightBumperButton.Position = UDim2.new(1, 0, 0.5, -RightBumperButton.Size.Y.Offset/2)
--remove any of the following parts that say "(parts[i].className == [className])" if you want to exclude that particular className type from the Weld
	if ((parts[i].className == "Part") or (parts[i].className == "Handle") or (parts[i].className == "TrussPart") or (parts[i].className == "VehicleSeat") or (parts[i].className == "SkateboardPlatform")) then
		if (prev ~= nil) then
			local weld = Instance.new("Weld")
			weld.Part0 = prev
			weld.Part1 = parts[i]
			weld.C0 = prev.CFrame:inverse()
			weld.C1 = parts[i].CFrame:inverse()
			weld.Parent = prev
			parts[i].Anchored = false
		end
		prev = parts[i]
	end
end
wait(3)
-- Given the cameraCFrame and vertical mouse delta, a cframe will be returned to be used for recoiling the camera
-- @param CFrame
-- @Returns CFrame
function RecoilSimulator:GetRecoilCFrame(cameraCFrame)
	local verticalRecoil = self.weaponDefinition:GetVerticalRecoilVector()
	local randomVerticalSpray = self.rng:NextNumber(verticalRecoil.x,verticalRecoil.y) 
	
	local horizontalRecoil = self.weaponDefinition:GetHorizontalRecoilVector()
	local randomHorizontalSpray = self.rng:NextNumber(horizontalRecoil.x,horizontalRecoil.y) 
	
	return CFrame.fromEulerAnglesYXZ( math.rad(randomVerticalSpray), math.rad(randomHorizontalSpray), 0)
end
	
return RecoilSimulator
-- [[ENIIQZ' MOBILE SUPPORT]]

local Buttons = script.Parent:WaitForChild("Buttons")
local Left = Buttons:WaitForChild("Left")
local Right = Buttons:WaitForChild("Right")
local Brake = Buttons:WaitForChild("Brake")
local Gas = Buttons:WaitForChild("Gas")

if UserInputService.TouchEnabled then
	Buttons.Visible = true
end
local function LeftTurn(Touch, GPE)
	if Touch.UserInputState == Enum.UserInputState.Begin then
		_GSteerT = -1
		_SteerL = true
	else
		if _SteerR then
			_GSteerT = 1
		else
			_GSteerT = 0
		end
		_SteerL = false
	end
end
Left.InputBegan:Connect(LeftTurn)
Left.InputEnded:Connect(LeftTurn)
--Reset First
LeftHip.C1 = CFrame.new(3,0,0)
RightHip.C1 = CFrame.new(-3,0,0)

print("Completed")

while true do
	LeftHip.C1 = CFrame.new(3,0,0-5)
	RightHip.C1 = CFrame.new(-3,0,0+5)
	for i = 1,10 do
		LeftHip.C1 = LeftHip.C1 * CFrame.new(0,-0.5,0.5)
		RightHip.C1 = RightHip.C1 * CFrame.new(0,0.5,-0.5)
		sp.Parent.Waist.CFrame = sp.Parent.Waist.CFrame * CFrame.new(0,0.5,0)
		wait()
	end
	for i = 1,10 do
		LeftHip.C1 = LeftHip.C1 * CFrame.new(0,0.5,0.5)
		RightHip.C1 = RightHip.C1 * CFrame.new(0,-0.5,-0.5)
		sp.Parent.Waist.CFrame = sp.Parent.Waist.CFrame * CFrame.new(0,-0.5,0)
		wait()
	end
	for i = 1,10 do
		LeftHip.C1 = LeftHip.C1 * CFrame.new(0,0.5,-0.5)
		RightHip.C1 = RightHip.C1 * CFrame.new(0,-0.5,0.5)
		sp.Parent.Waist.CFrame = sp.Parent.Waist.CFrame * CFrame.new(0,0.5,0)
		wait()
	end
	for i = 1,10 do
		LeftHip.C1 = LeftHip.C1 * CFrame.new(0,-0.5,-0.5)
		RightHip.C1 = RightHip.C1 * CFrame.new(0,0.5,0.5)
		sp.Parent.Waist.CFrame = sp.Parent.Waist.CFrame * CFrame.new(0,-0.5,0)
		wait()
	end
end
-- Overrides Keyboard:UpdateMovement(inputState) to conditionally consider self.wasdEnabled and let OnRenderStepped handle the movement
function ClickToMove:UpdateMovement(inputState)
	if FFlagUserClickToMoveFollowPathRefactor then
		if inputState == Enum.UserInputState.Cancel then
			self.keyboardMoveVector = ZERO_VECTOR3
		elseif self.wasdEnabled then
			self.keyboardMoveVector = Vector3.new(self.leftValue + self.rightValue, 0, self.forwardValue + self.backwardValue)
		end
	else
		if inputState == Enum.UserInputState.Cancel then
			self.moveVector = ZERO_VECTOR3
		elseif self.wasdEnabled then
			self.moveVector = Vector3.new(self.leftValue + self.rightValue, 0, self.forwardValue + self.backwardValue)
			if self.moveVector.magnitude > 0 then
				CleanupPath()
				ClickToMoveDisplay.CancelFailureAnimation()
			end
		end
	end
end
-- NOTE: To use properly please make sure to reject the promise for proper GC if the object requiring
-- this value is GCed.
return function(instance, propertyName)
	assert(typeof(instance) == "Instance", "Bad instance")
	assert(type(propertyName) == "string", "Bad propertyName")

	local result = instance[propertyName]
	if result then
		return Promise.resolved(result)
	end

	local promise = Promise.new()

	local conn
	promise:Finally(function()
		if conn then
			conn:Disconnect()
		end
	end)

	conn = instance:GetPropertyChangedSignal(propertyName):Connect(function()
		if instance[propertyName] then
			promise:Resolve(instance[propertyName])
		end
	end)

	return promise
end
-- See if I have a tool
local spawner = script.Parent
local tool = nil
local region = Region3.new(Vector3.new(spawner.Position.X - spawner.Size.X/2, spawner.Position.Y + spawner.Size.Y/2, spawner.Position.Z - spawner.Size.Z/2),
   Vector3.new(spawner.Position.X + spawner.Size.X/2, spawner.Position.Y + 4, spawner.Position.Z + spawner.Size.Z/2))
local parts = game.Workspace:FindPartsInRegion3(region)
for _, part in pairs(parts) do
	if part and part.Parent and part.Parent:IsA("Tool") then
		tool = part.Parent
		break
	end
end

local configTable = spawner.Configurations
local configs = {}
local function loadConfig(configName, defaultValue)
	if configTable:FindFirstChild(configName) then
		configs[configName] = configTable:FindFirstChild(configName).Value
	else
		configs[configName] = defaultValue
	end
end

loadConfig("SpawnCooldown", 120)

if tool then
	tool.Parent = game.ServerStorage
	
	while true do
		-- put tool on pad
		local toolCopy = tool:Clone()
		local handle = toolCopy:FindFirstChild("Handle")
		toolCopy.Parent = game.Workspace
		local toolOnPad = true
		local parentConnection
		parentConnection = toolCopy.AncestryChanged:connect(function()
			if handle then handle.Anchored = false end
			toolOnPad = false
			parentConnection:disconnect()
		end)
		if handle then
			handle.CFrame = (spawner.CFrame + Vector3.new(0,handle.Size.Z/2 + 1,0)) * CFrame.Angles(-math.pi/2,0,0)
			handle.Anchored = true
		end
		-- wait for tool to be removed
		while toolOnPad do 
			if handle then
				handle.CFrame = handle.CFrame * CFrame.Angles(0,0,math.pi/60)
			end
			wait() 
		end
		
		-- wait for cooldown
		wait(configs["SpawnCooldown"])		
	end
	
end
--[[
Table of contents
WCR - Weld Creation
WPR - Weld Parents
WP0 - Weld Part 0
WP1 - Weld Part 1
WC1 - Weld C1
ASCII - Random ASCII art
--]]
bin = script.Parent
-- << SETUP >>
-- Donor Commands
local donorCommands = {}
for _, command in pairs(main.commandInfo) do
	if command.RankName == "Donor" then
		table.insert(donorCommands, command)
	end
end
-----------------------------------------------------------------------------------------------

script.Parent:WaitForChild("Speedo")
script.Parent:WaitForChild("Tach")
script.Parent:WaitForChild("ln")
script.Parent:WaitForChild("Gear")
script.Parent:WaitForChild("Speed")

local player=game.Players.LocalPlayer
local gauges = script.Parent
local values = script.Parent.Parent.Values
local mouse=player:GetMouse()

local car = script.Parent.Parent.Car.Value
car.DriveSeat.HeadsUpDisplay = false

local _Tune = require(car["A-Chassis Tune"])

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

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