Nice, but I am pretty sure you should use C_Move. That could make your movement much more compatible (and polygon based) then just altering X, Y, and Z. Even ent_move would be a good idea. And couldn't your player end up in the floor and then have to correct itself by increments of 2? That seems to me like it is pretty inefficient.