diff --git a/src/p_user.c b/src/p_user.c
index ea42a2c360b86449c688133c33631d8508b44e77..292bad2af1a1b46039e45538aba99d82af3628c2 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -347,6 +347,11 @@ void P_GiveEmerald(boolean spawnObj)
 				continue;
 			P_SetTarget(&emmo->target, players[i].mo);
 			P_SetMobjState(emmo, mobjinfo[MT_GOTEMERALD].meleestate + em);
+			
+			// Make sure we're not being carried before our tracer is changed
+			if (players[i].powers[pw_carry] != CR_NONE)
+				players[i].powers[pw_carry] = CR_NONE;
+			
 			P_SetTarget(&players[i].mo->tracer, emmo);
 
 			if (pnum == 255)