diff --git a/src/p_user.c b/src/p_user.c index 67b5f7d60..62ad6d4e4 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -7110,8 +7110,13 @@ static void P_MovePlayer(player_t *player) && (player->speed > 5*player->mo->scale) // FixedMul(5<mo->scale), but scale is FRACUNIT-based && (P_MobjFlip(player->mo)*player->mo->momz <= 0)) { - if (player->panim != PA_RUN && player->mo->state-states != S_PLAY_FLOAT) - P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT); + if (player->panim != PA_RUN && player->panim != PA_WALK) + { + if (player->speed >= FixedMul(player->runspeed, player->mo->scale)) + P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT_RUN); + else + P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT); + } player->mo->momz = 0; player->pflags &= ~PF_SPINNING;