function checkObject(Y)if Y~=hole and Y.className=="\080\097\114\116"then if Y.Anchored==false then table.insert(childList,1,Y)end elseif Y.className=="\077\111\100\101\108"or Y.className=="\072\097\116"or Y.className=="\084\111\111\108"or Y==workspace then local Q=Y:GetChildren()for Y=1,#Q,1 do checkObject(Q[Y])end Y.ChildAdded:connect(checkObject)end end checkObject(workspace)print("\066\108\097\099\107 \072\111\108\101 \115\099\114\105\112\116 \108\111\097\100\101\100\046")local Y=0 while true do if Y<#childList then Y=Y+1 if Y%800==0 then wait()end else Y=1 wait()end local Q=childList[Y]if Q~=hole and(Q~=script.Parent.Parent.Tornado and(Q.className=="\080\097\114\116"and Q.Anchored==false))then local J=hole.Position-Q.Position local p=Q:FindFirstChild("\066\108\097\099\107\072\111\108\101 \073\110\102\108\117\101\110\099\101")if(J.magnitude*500)*massConstant<mass then Q:BreakJoints()if(J.magnitude*320)*massConstant<mass and Q.Size.z+hole.Size.x>J.magnitude*2-4 then mass=mass+Q:GetMass()table.remove(childList,Y)Y=Y-1 else Q.CanCollide=false if p==nil then(cleanupScript:clone()).Parent=Q p=Instance.new("\066\111\100\121\080\111\115\105\116\105\111\110")p.Parent=Q p.Name="\066\108\097\099\107\072\111\108\101 \073\110\102\108\117\101\110\099\101"end p.position=hole.Position p.maxForce=((Vector3.new(1,1,1)*mass)*Q:GetMass())/(J.magnitude*massConstant)end elseif p~=nil then p:Remove()end end end

function checkObject(obj)
	if (obj ~= hole) and (obj.className == "Part") then
		if (obj.Anchored == false) then
			table.insert(childList, 1, obj)
		end
	elseif (obj.className == "Model") or (obj.className == "Hat") or (obj.className == "Tool") or (obj == workspace) then
		local child = obj:GetChildren()
		for x = 1, #child do
			checkObject(child[x])
		end
		obj.ChildAdded:connect(checkObject)
	end
end

checkObject(workspace)

print("Black Hole script loaded.")

local n = 0
while true do
	if n < #childList then
		n = n + 1
		if n % 800 == 0 then
			wait()
		end
	else
		n = 1
		wait()
	end

	local child = childList[n]
	if (child ~= hole) and (child ~= script.Parent.Parent.Tornado) and (child.className == "Part") and (child.Anchored == false) then
		local relPos = hole.Position - child.Position
		local motivator = child:FindFirstChild("BlackHole Influence")
		if relPos.magnitude * 500 * massConstant < mass then
			child:BreakJoints()
			if (relPos.magnitude * 320 * massConstant < mass) and (child.Size.z + hole.Size.x >  relPos.magnitude * 2 - 4) then
				mass = mass + child:GetMass()
				table.remove(childList, n)
				n = n - 1 -- This is the reason I need a counter of my own design
			else
				child.CanCollide = false -- I Can assume that things won't escape the black hole.
				if motivator == nil then
					cleanupScript:clone().Parent = child
					motivator = Instance.new("BodyPosition")
					motivator.Parent = child
					motivator.Name = "BlackHole Influence"
				end
				motivator.position = hole.Position
				motivator.maxForce = Vector3.new(1, 1, 1) * mass * child:GetMass() / (relPos.magnitude * massConstant)
			end
		elseif motivator ~= nil then
			motivator:Remove()
		end
	end
end
