diff --git a/src/p_inter.c b/src/p_inter.c
index 750e9cc34c77149e3bee699b19d725c27e5eec82..bd3c15a456f06d61978ec7aadf95de70d5c6b1ee 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -796,6 +796,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 			{
 				mobj_t *spark = NULL;
 				boolean prevCollected;
+				const boolean isServer = ((player - players) == serverplayer);
 
 				if (!P_CanPickupEmblem(player, special->health - 1))
 				{
@@ -804,13 +805,13 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
 
 				prevCollected = P_EmblemWasCollected(special->health - 1);
 
-				if (((player - players) == serverplayer) || shareEmblems)
+				if (isServer || shareEmblems)
 				{
 					serverGamedata->collected[special->health-1] = true;
 					M_SilentUpdateUnlockablesAndEmblems(serverGamedata);
 				}
 
-				if (P_IsLocalPlayer(player) /*|| shareEmblems*/)
+				if (P_IsLocalPlayer(player) || (isServer && shareEmblems))
 				{
 					clientGamedata->collected[special->health-1] = true;
 					M_UpdateUnlockablesAndExtraEmblems(clientGamedata);