Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision d3efa1a76ce44000e55c5b1d6a4dadefb3fe8f04)
+++ server/server.cpp	(revision ffadc8e64f8e16737b07e64d8cad0fc9c14d6f8a)
@@ -159,14 +159,16 @@
          for (it = mapPlayers.begin(); it != mapPlayers.end(); it++)
          {
+            Player* p = it->second;
+
             // check if it's time to revive dead players
-            if (it->second->isDead)
+            if (p->isDead)
             {
-               if (getCurrentMillis() - it->second->timeDied >= 10000)
-               {
-                  it->second->isDead = false;
+               if (getCurrentMillis() - p->timeDied >= 10000)
+               {
+                  p->isDead = false;
 
                   POSITION spawnPos;
  
-                  switch (it->second->team)
+                  switch (p->team)
                   {
                   case 0:// blue team
@@ -186,32 +188,35 @@
                   spawnPos.y = spawnPos.y * 25 + 12;
 
-                  it->second->pos = spawnPos.toFloat();
-                  it->second->target = spawnPos;
-                  it->second->health = it->second->maxHealth;
+                  p->pos = spawnPos.toFloat();
+                  p->target = spawnPos;
+                  p->health = p->maxHealth;
 
                   serverMsg.type = MSG_TYPE_PLAYER;
-                  it->second->serialize(serverMsg.buffer);
+                  p->serialize(serverMsg.buffer);
 
                   map<unsigned int, Player*>::iterator it2;
                   for (it2 = mapPlayers.begin(); it2 != mapPlayers.end(); it2++)
+                  {
+                     if ( msgProcessor.sendMessage(&serverMsg, sock, &(p->addr), &outputLog) < 0 )
+                        error("sendMessage");
+                  }
+               }
+
+               continue;
+            }
+
+            if (p->currentGame != NULL) {
+               map<unsigned int, Player*> playersInGame = p->currentGame->getPlayers();
+               if (p->updateTarget(playersInGame))
+               {
+                  serverMsg.type = MSG_TYPE_PLAYER;
+                  p->serialize(serverMsg.buffer);
+
+                  map<unsigned int, Player*>::iterator it2;
+                  for (it2 = playersInGame.begin(); it2 != playersInGame.end(); it2++)
                   {
                      if ( msgProcessor.sendMessage(&serverMsg, sock, &(it2->second->addr), &outputLog) < 0 )
                         error("sendMessage");
                   }
-               }
-
-               continue;
-            }
-
-            if (it->second->updateTarget(mapPlayers))
-            {
-               serverMsg.type = MSG_TYPE_PLAYER;
-               it->second->serialize(serverMsg.buffer);
-
-               map<unsigned int, Player*>::iterator it2;
-               for (it2 = mapPlayers.begin(); it2 != mapPlayers.end(); it2++)
-               {
-                  if ( msgProcessor.sendMessage(&serverMsg, sock, &(it2->second->addr), &outputLog) < 0 )
-                     error("sendMessage");
                }
             }
@@ -936,4 +941,6 @@
          memcpy(&targetId, clientMsg.buffer+4, 4);
 
+         // need to make sure the target is in the sender's game
+
          Player* source = mapPlayers[id];
          source->targetPlayer = targetId;
