Then try something like this:

Code:
function attachToGround()
{
	vec_set(target,my.x);
	target.z -= 1000;
	
	result = c_trace(my.x,target,IGNORE_PASSABLE | IGNORE_ME | USE_BOX);
	
	if(result + my.min_z > 0)
	{
		if(result + my.min_z > 10)	// play with this value
		{
			my.z -= 15 * time_step;	// play with this value
		}
		else
		{
			my.z -= result + my.min_z;
		}
	}
}



I don't know about the "progressive acceleration" smile