diff --git a/src/p_user.c b/src/p_user.c index 67e47d295..80d16e30b 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9756,12 +9756,14 @@ void P_PlayerThink(player_t *player) case CR_PLAYER: player->drawangle = (player->mo->tracer->player ? player->mo->tracer->player->drawangle : player->mo->tracer->angle); break; - /* -- in case we wanted to have the camera freely movable during zoom tube style stuff - case CR_ZOOMTUBE: + /* -- in case we wanted to have the camera freely movable during zoom tubes + case CR_ZOOMTUBE:*/ case CR_ROPEHANG: - player->drawangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy); - break; - */ + if (player->mo->momx || player->mo->momy) + { + player->drawangle = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy); + break; + } default: player->drawangle = player->mo->angle; break; @@ -9831,6 +9833,9 @@ void P_PlayerThink(player_t *player) if (!currentlyonground) acceleration /= 2; + if (player->mo->movefactor != FRACUNIT) // Friction-scaled acceleration... + acceleration = FixedMul(acceleration<mo->movefactor)>>FRACBITS; + P_Thrust(player->mo, moveAngle, -acceleration); } @@ -9847,6 +9852,7 @@ void P_PlayerThink(player_t *player) if (player->powers[pw_pushing]) player->powers[pw_pushing]--; + player->mo->movefactor = FRACUNIT; // We're not going to do any more with this, so let's change it back for the next frame. // Unset statis flags after moving.