diff --git a/src/p_mobj.c b/src/p_mobj.c
index 9fb0063d941f5ea05dea85013634edff352cf16f..808ff6355634ca54a5607405aaceec1292a45f2e 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -3169,7 +3169,7 @@ static void P_PlayerZMovement(mobj_t *mo)
 					{
 						if (mo->player->cmomx || mo->player->cmomy)
 						{
-							if (mo->player->dashmode >= 3*TICRATE && mo->player->panim != PA_PEEL)
+							if (mo->player->charability == CA_DASHMODE && mo->player->dashmode >= 3*TICRATE && mo->player->panim != PA_PEEL)
 								P_SetPlayerMobjState(mo, S_PLAY_PEEL);
 							else if (mo->player->speed >= FixedMul(mo->player->runspeed, mo->scale) && mo->player->panim != PA_RUN)
 								P_SetPlayerMobjState(mo, S_PLAY_RUN);
@@ -3180,7 +3180,7 @@ static void P_PlayerZMovement(mobj_t *mo)
 						}
 						else
 						{
-							if (mo->player->dashmode >= 3*TICRATE && mo->player->panim != PA_PEEL)
+							if (mo->player->charability == CA_DASHMODE && mo->player->dashmode >= 3*TICRATE && mo->player->panim != PA_PEEL)
 								P_SetPlayerMobjState(mo, S_PLAY_PEEL);
 							if (mo->player->speed >= FixedMul(mo->player->runspeed, mo->scale) && mo->player->panim != PA_RUN)
 								P_SetPlayerMobjState(mo, S_PLAY_RUN);
diff --git a/src/p_user.c b/src/p_user.c
index 8c58838d1e43d4e8dec9103059053eb29efee2f9..4db4197b8a3e4be771b3517200ad3b96ddab2a8e 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -6528,7 +6528,7 @@ static void P_MovePlayer(player_t *player)
 
 	// If your peelout animation is playing, and you're
 	// going too slow, switch back to the run.
-	if (player->panim == PA_PEEL && player->dashmode < 3*TICRATE)
+	if (player->charability == CA_DASHMODE && player->panim == PA_PEEL && player->dashmode < 3*TICRATE)
 		P_SetPlayerMobjState(player->mo, S_PLAY_RUN);
 
 	// If your running animation is playing, and you're