Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision fbcfc352712a71a2fe77c0fa4146fac1ef437c72)
+++ server/server.cpp	(revision 8795a388ee52edfea5629ee787e54c686b3e4c57)
@@ -325,4 +325,5 @@
             if (it->second.isAttacking && it->second.timeAttackStarted+it->second.attackCooldown <= getCurrentMillis()) {
                it->second.isAttacking = false;
+               cout << "Attack animation is complete" << endl;
 
                //send everyone an ATTACK message
@@ -355,8 +356,12 @@
                   mapProjectiles[proj.id] = proj;
 
+                  int x = it->second.pos.x;
+                  int y = it->second.pos.y;
+
                   serverMsg.type = MSG_TYPE_PROJECTILE;
-                  memcpy(serverMsg.buffer, &it->second.pos.x, 4);
-                  memcpy(serverMsg.buffer+4, &it->second.pos.y, 4);
-                  memcpy(serverMsg.buffer+8, &it->second.targetPlayer, 4);
+                  memcpy(serverMsg.buffer, &proj.id, 4);
+                  memcpy(serverMsg.buffer+4, &x, 4);
+                  memcpy(serverMsg.buffer+8, &y, 4);
+                  memcpy(serverMsg.buffer+12, &it->second.targetPlayer, 4);
                }else {
                   cout << "Invalid attack type: " << it->second.attackType << endl;
@@ -389,5 +394,5 @@
 
                // send a PLAYER message after dealing damage
-               Player* target = &mapPlayers[it->second.targetPlayer];
+               Player* target = &mapPlayers[itProj->second.target];
 
                target->health -= itProj->second.damage;
@@ -775,4 +780,5 @@
          source->timeAttackStarted = getCurrentMillis();
          source->targetPlayer = targetId;
+         source->isAttacking = true;
 
          serverMsg.type = MSG_TYPE_START_ATTACK;
