diff --git a/src/p_mobj.c b/src/p_mobj.c
index ccb810bf9b09756d48045730c5fece84e6fd2743..4fe37026ed1d81729b4ec03cd86b468452129fce 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -9339,7 +9339,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
 		if (leveltime % 180 == 0)
 			S_StartSound(mobj, sfx_s3kbfl);
 
-		if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer) && mobj->tracer->player)
+		if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer) && mobj->tracer->tracer == mobj && mobj->tracer->player && mobj->tracer->player->carry == CR_TRAPBUBBLE)
 		{
 			player_t *player = mobj->tracer->player;
 			fixed_t destx, desty, curfz, destfz;