Index: client/Client/main.cpp
===================================================================
--- client/Client/main.cpp	(revision 2df63d6c48dc89af5aeb007981c2354169abcd03)
+++ client/Client/main.cpp	(revision e487381875396bdaf64765cbdc022477e1238ac0)
@@ -228,8 +228,4 @@
       else if(ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
          doexit = true;
-
-         // perform a check to see if it's time to send an update to the server
-         // need to store num ticks since the lst update for this
-         // also check how often each update actually happens and how much it deviates from 60 times per second
       }
       else if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {
@@ -239,4 +235,31 @@
             case ALLEGRO_KEY_ESCAPE:
                doexit = true;
+               break;
+            case ALLEGRO_KEY_D:  // drop the current item
+               if (state == STATE_LOGIN) {
+                  map<unsigned int, Player>::iterator it;
+                  Player* p = NULL;
+                  for(it = mapPlayers.begin(); it != mapPlayers.end(); it++)
+                  {
+                     &it->second;
+                     if (it->second.id == curPlayerId)
+                        p = &it->second;
+                  }
+
+                  if (p != NULL) {
+                     int flagType = WorldMap::OBJECT_NONE;
+
+                     if (p->hasBlueFlag)
+                        flagType = WorldMap::OBJECT_BLUE_FLAG;
+                     else if (p->hasRedFlag)
+                        flagType = WorldMap::OBJECT_RED_FLAG;
+
+                     if (flagType != WorldMap::OBJECT_NONE) {
+                        msgTo.type = MSG_TYPE_DROP_FLAG;
+                        memcpy(msgTo.buffer, &curPlayerId, 4);
+                        sendMessage(&msgTo, sock, &server);
+                     }
+                  }
+               }
                break;
          }
