So I am working on a hockey game. When a player touches the square that puts then in a faceoff position, it is supposed to freeze them in place. However after the first faceoff, it seems that part of the code is simply skipped over (and I have placed a print statement that does print but does not seem to execute the code before it).

Script:

function FunctionFO()
	count.Text = 31
	if #shared.hometeam:GetPlayers() > 0 then
		hFO = wFO.Parent["FO Home"].Touched:Connect(function(hit)
			if hFOt then hFO:Disconnect() return end
			if hit:FindFirstAncestor("Stick") then
				if game.Players:GetPlayerFromCharacter(hit:FindFirstAncestor("Stick").Parent).Team == shared.hometeam then
					hit:FindFirstAncestor("Stick").Parent:SetPrimaryPartCFrame(wFO.Parent["FO Home"].CFrame - Vector3.new(0,wFO.Parent["FO Home"].Position.Y,0) + Vector3.new(0,hit:FindFirstAncestor("Stick").Parent.HumanoidRootPart.Position.Y+1.5,0))
					hit:FindFirstAncestor("Stick").Parent.HumanoidRootPart.Anchored = true
					hit:FindFirstAncestor("Stick").Parent.Humanoid.WalkSpeed = 0
					print("True") -- Prints true but doesn't anchor the HumanoidRootPart
					hFOt = true
					repeat wait() until not workspace.Puck.Anchored
					hit:FindFirstAncestor("Stick").Parent.HumanoidRootPart.Anchored = false
					hit:FindFirstAncestor("Stick").Parent.Humanoid.WalkSpeed = 20
				end
			end
		end)
		spawn(function()
			repeat wait() until hFOt
			hFO:Disconnect()
		end)
	end