diff --git a/src/p_user.c b/src/p_user.c
index a9194fbb258d1e580db5f2a4feeeec13bd8e4f87..c1b11965b7e47713cfedb44b2c34c05624fcc5f2 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -1135,7 +1135,8 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing)
 		return true;
 
 	// Spinning.
-	if (player->pflags & PF_SPINNING)
+	if ((player->pflags & PF_SPINNING)
+	&& !((player->pflags & PF_JUMPED) && (player->pflags & PF_NOJUMPDAMAGE)))
 		return true;
 
 	if (player->dashmode >= DASHMODE_THRESHOLD && (player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE))
@@ -4524,7 +4525,6 @@ void P_DoJump(player_t *player, boolean soundandstate)
 	player->mo->eflags &= ~MFE_APPLYPMOMZ;
 
 	player->pflags |= P_GetJumpFlags(player);;
-	player->pflags &= ~PF_SPINNING;
 
 	if (soundandstate)
 	{