So I made a detain script but for some reason I either can't jump or my character loses its entire walkspeed to jump. Any fixes?

Server script:

local remote = game.ReplicatedStorage.DetainEvent
remote.OnServerEvent:Connect(function(plr, target)
	if plr.Backpack:FindFirstChild("Detain") or plr.Character:FindFirstChild("Detain") then
		local Target = game.Players:GetPlayerFromCharacter(target)
		if Target.Character:FindFirstChild("Detain") then
			Target.Character.Detain:Destroy()
			for i,v in pairs(TargetParts) do
				if v:IsA("Part") then
					v.Massless = false
				end
			end
		else
			local Weld = Instance.new("Weld")
			TargetParts = Target.Character:GetChildren()
		Weld.Name = "Detain"
		Target.Character.Torso.CFrame = plr.Character.Torso.CFrame * CFrame.new(0,0.5,-5)
		Weld.Part0 = plr.Character.Torso
		Weld.Part1 = Target.Character.Torso
		Weld.C0 = plr.Character.Torso.CFrame:Inverse()
		Weld.C1 = Target.Character.Torso.CFrame:Inverse()
		Target.Character.HumanoidRootPart.Massless = true
			Weld.Parent = Target.Character
			for i,v in pairs(TargetParts) do
				if v:IsA("Part") then
					v.Massless = true
				end
			end
		end
		
		
	end
end)