diff --git a/src/p_user.c b/src/p_user.c
index 4db4197b8a3e4be771b3517200ad3b96ddab2a8e..24b5477868d5cc2ef4b15e44dfbeccf31cd34b1a 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -6570,17 +6570,15 @@ static void P_MovePlayer(player_t *player)
 		P_SetPlayerMobjState(player->mo, S_PLAY_STND);
 	}
 
-	if (!(player->charability == CA_GLIDEANDCLIMB) || player->gotflag) // If you can't glide, then why the heck would you be gliding?
+	if ((!(player->charability == CA_GLIDEANDCLIMB) || player->gotflag) // If you can't glide, then why the heck would you be gliding?
+		&& (player->pflags & PF_GLIDING || player->climbing))
 	{
-		if (player->pflags & PF_GLIDING || player->climbing)
+		if (onground)
+			P_SetPlayerMobjState(player->mo, S_PLAY_WALK);
+		else
 		{
-			if (onground)
-				P_SetPlayerMobjState(player->mo, S_PLAY_WALK);
-			else
-			{
-				player->pflags |= PF_JUMPED;
-				P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
-			}
+			player->pflags |= PF_JUMPED;
+			P_SetPlayerMobjState(player->mo, S_PLAY_JUMP);
 		}
 		player->pflags &= ~PF_GLIDING;
 		player->glidetime = 0;