Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision b8cb03fd8d81b67718e4a90047ae0b543a71a99e)
+++ common/Player.cpp	(revision df79cfd232648969b6baacef4ffcf8f810cdf87e)
@@ -31,7 +31,7 @@
    this->target.y = p.target.y;
    this->addr = p.addr;
-      this->team = 0;   // blue team by default
-   this->hasBlueFlag = false;
-   this->hasRedFlag = false;
+   this->team = p.team;
+   this->hasBlueFlag = p.hasBlueFlag;
+   this->hasRedFlag = p.hasRedFlag;
 }
 
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision b8cb03fd8d81b67718e4a90047ae0b543a71a99e)
+++ server/server.cpp	(revision df79cfd232648969b6baacef4ffcf8f810cdf87e)
@@ -305,8 +305,11 @@
             serverMsg.type = MSG_TYPE_PLAYER;
 
-            p->setAddr(from);
             updateUnusedId(unusedId, mapPlayers);
             p->id = unusedId;
             cout << "new player id: " << p->id << endl;
+            p->setAddr(from);
+
+            // choose a random team (either 0 or 1)
+            p->team = rand() % 2;
 
             // tell the new player about all the existing players
