Index: common/Game.cpp
===================================================================
--- common/Game.cpp	(revision fd9cdb580555cc44d359bf01b133fdde473d098a)
+++ common/Game.cpp	(revision 4c009353f6871ae833af39d929789286e4677e2c)
@@ -217,6 +217,5 @@
    p->takeDamage(damage);
 
-   if (p->isDead)
-   {
+   if (p->isDead) {
       ObjectType flagType = OBJECT_NONE;
       if (p->hasBlueFlag)
@@ -240,13 +239,10 @@
    bool gameFinished = false;
 
-   for (it = this->getPlayers().begin(); it != this->getPlayers().end(); it++)
-   {
-      gameFinished = gameFinished ||
-         this->handlePlayerEvents(it->second);
+   for (it = this->getPlayers().begin(); it != this->getPlayers().end(); it++) {
+      gameFinished = gameFinished || this->handlePlayerEvents(it->second);
    }
 
    if (gameFinished) {
-      for (it = this->players.begin(); it != this->players.end(); it++)
-      {
+      for (it = this->players.begin(); it != this->players.end(); it++) {
          it->second->currentGame = NULL;
       }
@@ -279,10 +275,8 @@
       bool ownFlagAtBase = false;
 
-      switch(this->worldMap->getStructure(p->pos.x/25, p->pos.y/25))
-      {
+      switch(this->worldMap->getStructure(p->pos.x/25, p->pos.y/25)) {
          case STRUCTURE_BLUE_FLAG:
          {
-            if (p->team == 0 && p->hasRedFlag)
-            {
+            if (p->team == 0 && p->hasRedFlag) {
                // check that your flag is at your base
                pos = this->worldMap->getStructureLocation(STRUCTURE_BLUE_FLAG);
@@ -291,10 +285,7 @@
                vector<WorldMap::Object>::iterator itObjects;
 
-               for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++)
-               {
-                  if (itObjects->type == OBJECT_BLUE_FLAG)
-                  {
-                     if (itObjects->pos.x == pos.x*25+12 && itObjects->pos.y == pos.y*25+12)
-                     {
+               for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++) {
+                  if (itObjects->type == OBJECT_BLUE_FLAG) {
+                     if (itObjects->pos.x == pos.x*25+12 && itObjects->pos.y == pos.y*25+12) {
                         ownFlagAtBase = true;
                         break;
@@ -303,6 +294,5 @@
                }
 
-               if (ownFlagAtBase)
-               {
+               if (ownFlagAtBase) {
                   p->hasRedFlag = false;
                   flagType = OBJECT_RED_FLAG;
@@ -317,6 +307,5 @@
          case STRUCTURE_RED_FLAG:
          {
-            if (p->team == 1 && p->hasBlueFlag)
-            {
+            if (p->team == 1 && p->hasBlueFlag) {
                // check that your flag is at your base
                pos = this->worldMap->getStructureLocation(STRUCTURE_RED_FLAG);
@@ -325,10 +314,7 @@
                vector<WorldMap::Object>::iterator itObjects;
 
-               for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++)
-               {
-                  if (itObjects->type == OBJECT_RED_FLAG)
-                  {
-                     if (itObjects->pos.x == pos.x*25+12 && itObjects->pos.y == pos.y*25+12)
-                     {
+               for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++) {
+                  if (itObjects->type == OBJECT_RED_FLAG) {
+                     if (itObjects->pos.x == pos.x*25+12 && itObjects->pos.y == pos.y*25+12) {
                         ownFlagAtBase = true;
                         break;
@@ -337,6 +323,5 @@
                }
 
-               if (ownFlagAtBase)
-               {
+               if (ownFlagAtBase) {
                   p->hasBlueFlag = false;
                   flagType = OBJECT_BLUE_FLAG;
@@ -355,6 +340,5 @@
       }
 
-      if (flagTurnedIn)
-      {
+      if (flagTurnedIn) {
          unsigned int blueScore = this->blueScore;
          unsigned int redScore = this->redScore;
@@ -399,20 +383,13 @@
       POSITION structPos;
 
-      for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++)
-      {
+      for (itObjects = vctObjects->begin(); itObjects != vctObjects->end(); itObjects++) {
          POSITION pos = itObjects->pos;
 
-         if (posDistance(p->pos, pos.toFloat()) < 10)
-         {
-            if (p->team == 0 && 
-                itObjects->type == OBJECT_BLUE_FLAG)
-            {
+         if (posDistance(p->pos, pos.toFloat()) < 10) {
+            if (p->team == 0 && itObjects->type == OBJECT_BLUE_FLAG) {
                structPos = this->worldMap->getStructureLocation(STRUCTURE_BLUE_FLAG);
                flagReturned = true;
                break;
-            }
-            else if (p->team == 1 &&
-                     itObjects->type == OBJECT_RED_FLAG)
-            {
+            } else if (p->team == 1 && itObjects->type == OBJECT_RED_FLAG) {
                structPos = this->worldMap->getStructureLocation(STRUCTURE_RED_FLAG);
                flagReturned = true;
@@ -422,6 +399,5 @@
       }
 
-      if (flagReturned)
-      {
+      if (flagReturned) {
          itObjects->pos.x = structPos.x*25+12;
          itObjects->pos.y = structPos.y*25+12;
@@ -432,6 +408,5 @@
       }
 
-      if (broadcastMove)
-      {
+      if (broadcastMove) {
          serverMsg.type = MSG_TYPE_PLAYER;
          p->serialize(serverMsg.buffer);
@@ -443,6 +418,5 @@
 
    // check if the player's attack animation is complete
-   if (p->isAttacking && p->timeAttackStarted+p->attackCooldown <= getCurrentMillis())
-   {
+   if (p->isAttacking && p->timeAttackStarted+p->attackCooldown <= getCurrentMillis()) {
       p->isAttacking = false;
       cout << "Attack animation is complete" << endl;
@@ -451,13 +425,10 @@
       cout << "about to broadcast attack" << endl;
 
-      if (p->attackType == Player::ATTACK_MELEE)
-      {
+      if (p->attackType == Player::ATTACK_MELEE) {
          cout << "Melee attack" << endl;
 
          Player* target = players[p->getTargetPlayer()];
          this->dealDamageToPlayer(target, p->damage);
-      }
-      else if (p->attackType == Player::ATTACK_RANGED)
-      {
+      } else if (p->attackType == Player::ATTACK_RANGED) {
          cout << "Ranged attack" << endl;
 
@@ -476,6 +447,5 @@
          memcpy(serverMsg.buffer+12, &targetId, 4);
          msgProcessor->broadcastMessage(serverMsg, players);
-      }
-      else
+      } else
          cout << "Invalid attack type: " << p->attackType << endl;
    }
Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision fd9cdb580555cc44d359bf01b133fdde473d098a)
+++ common/Player.cpp	(revision 4c009353f6871ae833af39d929789286e4677e2c)
@@ -33,4 +33,10 @@
    this->hasBlueFlag = false;
    this->hasRedFlag = false;
+
+   this->level = 0;
+   this->experience = 0;
+   this->honor = 0;
+   this->wins = 0;
+   this->losses = 0;
 
    this->currentGame = NULL;
@@ -66,4 +72,10 @@
    this->hasRedFlag = p.hasRedFlag;
 
+   this->level = p.level;
+   this->experience = p.experience;
+   this->honor = p.honor;
+   this->wins = p.wins;
+   this->losses = p.losses;
+
    this->currentGame = p.currentGame;
 }
@@ -95,4 +107,10 @@
    this->hasBlueFlag = false;
    this->hasRedFlag = false;
+
+   this->level = 0;
+   this->experience = 0;
+   this->honor = 0;
+   this->wins = 0;
+   this->losses = 0;
 
    this->currentGame = NULL;
Index: common/Player.h
===================================================================
--- common/Player.h	(revision fd9cdb580555cc44d359bf01b133fdde473d098a)
+++ common/Player.h	(revision 4c009353f6871ae833af39d929789286e4677e2c)
@@ -88,4 +88,11 @@
    bool hasRedFlag;
 
+   // permanent attributes
+   unsigned int level;
+   unsigned int experience;
+   unsigned int honor;
+   unsigned int wins;
+   unsigned int losses;
+
    Game* currentGame;
 };
