Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision ff2133aee0f65c9b2661b1823a42193172c15167)
+++ common/Player.cpp	(revision 5b1e31e39f3ea0090e0c657ccf06a11efeedd5de)
@@ -142,4 +142,5 @@
    memcpy(buffer+44, &this->hasBlueFlag, 1);
    memcpy(buffer+45, &this->hasRedFlag, 1);
+   memcpy(buffer+46, &this->range, 4);
 
    strcpy(buffer+46, this->name.c_str());
@@ -162,4 +163,5 @@
    memcpy(&this->hasBlueFlag, buffer+44, 1);
    memcpy(&this->hasRedFlag, buffer+45, 1);
+   memcpy(&this->range, buffer+46, 4);
 
    this->name.assign(buffer+46);
@@ -192,5 +194,5 @@
 }
 
-void Player::updateTarget(map<unsigned int, Player>& mapPlayers) {
+bool Player::updateTarget(map<unsigned int, Player>& mapPlayers) {
    if (this->isChasing) {
       this->target.x = mapPlayers[this->targetPlayer].pos.x;
@@ -204,5 +206,9 @@
          this->isAttacking = true;
          this->timeAttackStarted = getCurrentMillis();
+
+         return true;
       }
    }
-}
+
+   return false;
+}
Index: common/Player.h
===================================================================
--- common/Player.h	(revision ff2133aee0f65c9b2661b1823a42193172c15167)
+++ common/Player.h	(revision 5b1e31e39f3ea0090e0c657ccf06a11efeedd5de)
@@ -47,5 +47,5 @@
    void deserialize(char* buffer);
 
-   void updateTarget(map<unsigned int, Player>& mapPlayers);
+   bool updateTarget(map<unsigned int, Player>& mapPlayers);
    bool move(WorldMap *map);
 
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision ff2133aee0f65c9b2661b1823a42193172c15167)
+++ server/server.cpp	(revision 5b1e31e39f3ea0090e0c657ccf06a11efeedd5de)
@@ -119,5 +119,6 @@
 
    sock = socket(AF_INET, SOCK_DGRAM, 0);
-   if (sock < 0) error("Opening socket");
+   if (sock < 0)
+      error("Opening socket");
    length = sizeof(server);
    bzero(&server,length);
@@ -149,22 +150,15 @@
          // set targets for all chasing players (or make them attack if they're close enough)
          for (it = mapPlayers.begin(); it != mapPlayers.end(); it++) {
-            //Player* p = &it->second;
-            it->second.updateTarget(mapPlayers);
-
-            /*
-            if (p->isChasing) {
-               p->target.x = mapPlayers[p->targetPlayer].pos.x;
-               p->target.y = mapPlayers[p->targetPlayer].pos.y;
-
-               if (posDistance(p->pos, p->target.toFloat()) <= p->range) {
-                  p->target.x = p->pos.x;
-                  p->target.y = p->pos.y;
-
-                  p->isChasing = false;
-                  p->isAttacking = true;
-                  p->timeAttackStarted = getCurrentMillis();
-               }
-            }
-            */
+            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 ( sendMessage(&serverMsg, sock, &(it2->second.addr)) < 0 )
+                     error("sendMessage");
+               }
+            }
          }
 
@@ -187,4 +181,5 @@
                      it->second.target.x = it->second.pos.x;
                      it->second.target.y = it->second.pos.y;
+                     it->second.isChasing = false;
                      broadcastMove = true;
                      break;
@@ -689,4 +684,7 @@
                mapPlayers[id].target.y = y;
 
+               mapPlayers[id].isChasing = false;
+               mapPlayers[id].isAttacking = false;
+
                serverMsg.type = MSG_TYPE_PLAYER_MOVE;
                
