of course, you're modyfing your bounding box because of sticking problems. that does not make sense at all because why should a smaller bounding box _not_ stick with your faulty code?
That's not true. Read the discussion of clone45, damocles and jcl. It indeed makes much sense to let the box _not_ touch the ground, because it prevents the collision system from unnecessary computings.
sorry for that, it must be my english. i wanted to express that it doesn't matter how big your collision hull is because you're already letting it flow 2 quants from the ground, that's why i said:
the point is that you're checking the height for numbers higher than two.
if your model begins at zero in model space then you can indeed add some number to your bounding box min_z value.
nevertheless, try changing the following line:
move = accelerate(speed, (key_w - key_s) * 10, friction) * clamp(vec_dot(normal, vector(0, 0, 1))*2-1, 0, 1);