diff --git a/src/p_user.c b/src/p_user.c
index 4b307fecaf9b5517cb7cde4db1abeed6f84f486d..034bab4988a6ed2cc2b3aa7798e0d7c9ddefb703 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -4079,13 +4079,19 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
 					{
 						// Catapult the player
 						fixed_t actionspd = player->actionspd;
+						
+						if (player->charability == CA_DASHMODE)
+							actionspd = max(player->normalspeed, FixedDiv(player->speed, player->mo->scale));
+						
 						if (player->mo->eflags & MFE_UNDERWATER)
 							actionspd >>= 1;
+						
 						if ((player->charability == CA_JUMPTHOK) && !(player->pflags & PF_THOKKED))
 						{
 							player->pflags &= ~PF_JUMPED;
 							P_DoJump(player, false);
 						}
+						
 						P_InstaThrust(player->mo, player->mo->angle, FixedMul(actionspd, player->mo->scale));
 
 						if (maptol & TOL_2D)