diff --git a/src/p_map.c b/src/p_map.c
index ca9b10aa3c3d13b7a495a29d7f265713c4409c7b..d17982c8a4bcd6d91f24e12f2724f5024bb5627f 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -321,7 +321,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
 		I_Assert(tmthing->player);
 
 		// we only care about monitors, springs, enemies, and bosses - things we can bounce off of.
-		if (!(thing->flags & (MF_SOLID|MF_MONITOR|MF_SPRING|MF_ENEMY|MF_BOSS)) && thing->type != MT_FAN && thing->type != MT_STEAM)
+		if (!(thing->flags & (MF_SOLID|MF_MONITOR|MF_SPRING|MF_ENEMY|MF_BOSS)) && thing->type != MT_FAN && thing->type != MT_STEAM && thing->type != MT_FLINGRING)
 			return true;
 
 		blockdist = thing->radius + tmthing->radius;
@@ -332,7 +332,12 @@ static boolean PIT_CheckThing(mobj_t *thing)
 		if (thing->z + thing->height < tmthing->z)
 			return true; // underneath
 
-		if (thing->type == MT_FAN || thing->type == MT_STEAM)
+		if (thing->type == MT_FLINGRING && P_CanPickupItem(tmthing->player, false))
+		{
+			P_KillMobj(thing, NULL, NULL, 0);
+			return true;
+		}
+		else if (thing->type == MT_FAN || thing->type == MT_STEAM)
 			P_DoFanAndGasJet(thing, tmthing);
 		else if (thing->flags & MF_SPRING)
 		{