diff --git a/src/p_map.c b/src/p_map.c
index 8f6bd3577374db5ba78615ac9bcf7e43e171ce1a..b8123fc0c1a6f9babfe09b67258967dcbe887008 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -443,7 +443,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
 			return true; // underneath
 		if (thing->type == MT_SPIKE)
 		{
-			S_StartSound(tmthing, thing->info->deathsound);
+			if (thing->flags & MF_SOLID)
+				S_StartSound(tmthing, thing->info->deathsound);
 			for (thing = thing->subsector->sector->thinglist; thing; thing = thing->snext)
 				if (thing->type == MT_SPIKE && thing->health > 0 && thing->flags & MF_SOLID && P_AproxDistance(thing->x - tmthing->x, thing->y - tmthing->y) < FixedMul(56*FRACUNIT, thing->scale))
 					P_KillMobj(thing, tmthing, tmthing, 0);
@@ -476,7 +477,8 @@ static boolean PIT_CheckThing(mobj_t *thing)
 			return true; // underneath
 		if (thing->type == MT_SPIKE)
 		{
-			S_StartSound(tmthing, thing->info->deathsound);
+			if (thing->flags & MF_SOLID)
+				S_StartSound(tmthing, thing->info->deathsound);
 			for (thing = thing->subsector->sector->thinglist; thing; thing = thing->snext)
 				if (thing->type == MT_SPIKE && thing->health > 0 && thing->flags & MF_SOLID && P_AproxDistance(thing->x - tmthing->x, thing->y - tmthing->y) < FixedMul(56*FRACUNIT, thing->scale))
 					P_KillMobj(thing, tmthing, tmthing, 0);