diff --git a/src/p_map.c b/src/p_map.c
index c534ee137c67d03ad3e8e722dc9959571b5ce93a..65a5fefabdd16c487bd8e564666d6c480980231e 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -448,9 +448,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
 		return true;
 	}
 
-	// Dashmode users destroy spikes and monitors.
-	if ((tmthing->player) && (tmthing->player->charability == CA_DASHMODE) && (tmthing->player->dashmode >= 3*TICRATE)
-	&& (thing->flags & (MF_MONITOR) || thing->type == MT_SPIKE))
+	// CA_DASHMODE users destroy spikes and monitors, CA_TWINSPIN users destroy spikes.
+	if ((tmthing->player)
+		&& (((tmthing->player->charability == CA_DASHMODE) && (tmthing->player->dashmode >= 3*TICRATE)
+		&& (thing->flags & (MF_MONITOR) || thing->type == MT_SPIKE))
+	|| ((tmthing->player->charability == CA_TWINSPIN) && (tmthing->player->panim == PA_ABILITY)
+		&& (thing->type == MT_SPIKE))))
 	{
 		if ((thing->flags & (MF_MONITOR)) && (thing->health <= 0 || !(thing->flags & MF_SHOOTABLE)))
 			return true;