diff --git a/src/d_enet.c b/src/d_enet.c
index 335c9fb6466e9cb63b1c37a133d27e589978b3c2..4b405c8bc661b0fd50da870b128a148236297639 100644
--- a/src/d_enet.c
+++ b/src/d_enet.c
@@ -275,7 +275,12 @@ static void ClientHandlePacket(UINT8 node, DataWrap data)
 
 		mobj->state = &states[DW_ReadUINT16(data)];
 		mobj->sprite = mobj->state->sprite;
-		mobj->frame = mobj->state->frame;
+		if (mobj->sprite == SPR_PLAY) {
+			mobj->sprite2 = mobj->state->frame;
+			mobj->frame = DW_ReadUINT8(data);
+		}
+		else
+			mobj->frame = mobj->state->frame;
 		mobj->tics = -1;
 		break;
 	}
@@ -715,6 +720,8 @@ static void Net_MovePlayers(void)
 		WRITEINT16(buf, players[i].mo->momz >> 8);
 		WRITEUINT8(buf, players[i].mo->angle >> 24);
 		WRITEUINT16(buf, players[i].mo->state - states);
+		if (players[i].mo->sprite == SPR_PLAY)
+			WRITEUINT8(buf, players[i].mo->frame);
 
 		packet = enet_packet_create(data, buf-data, 0);
 		enet_host_broadcast(ServerHost, CHANNEL_MOVE, packet);