The for loop in this code prints the same set of items from the workspace even when different items are added or when the items are removed.
The code takes all of the parts attached to the handle and all of the parts attached to those and so on and puts them under the tool, this only happens with parts initially attached and not to parts attached after the game has loaded.
--on click: check all parts --check if parts are anchored --check if part is locked --check if part is welded to handle either directly or remoteley --if all is true put it under the tool local Tool = script.Parent local Handle = script.Parent.Handle function CheckWelded(part) for _,i in pairs(game.Workspace:GetChildren())do if i.ClassName == "Part" then print("part") if i.Anchored == false then print("anchor") if i.Locked == false then print("lock") if i:FindFirstChild("Weld") then print ("weld?") print (i.Weld.Part1) if i.Weld.Part1 == part then print ("welded") i.Parent = script.Parent CheckWelded(i) end end end end end end end Handle.ClickDetector.MouseClick:Connect(function() CheckWelded(script.Parent.Handle) end)