Index: /code/branches/pickups2/bin/def_keybindings.ini
===================================================================
--- /code/branches/pickups2/bin/def_keybindings.ini	(revision 2323)
+++ /code/branches/pickups2/bin/def_keybindings.ini	(revision 2324)
@@ -50,5 +50,5 @@
 KeyKana=
 KeyKanji=
-KeyL=
+KeyL=dropItems
 KeyLeft=
 KeyLeftAlt=
Index: /code/branches/pickups2/src/orxonox/CMakeLists.txt
===================================================================
--- /code/branches/pickups2/src/orxonox/CMakeLists.txt	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/CMakeLists.txt	(revision 2324)
@@ -72,4 +72,5 @@
   objects/pickup/Item.cc
   objects/pickup/Turbo.cc
+  objects/pickup/ShipEquipment.cc
 
   objects/quest/AddQuest.cc
Index: /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.cc
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.cc	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.cc	(revision 2324)
@@ -47,4 +47,5 @@
     SetConsoleCommand(HumanController, use,           true);
     SetConsoleCommand(HumanController, switchCamera,  true);
+    SetConsoleCommand(HumanController, dropItems,     true);
 
     CreateUnloadableFactory(HumanController);
@@ -129,3 +130,9 @@
             HumanController::localController_s->controllableEntity_->switchCamera();
     }
+
+    void HumanController::dropItems()
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
+            HumanController::localController_s->controllableEntity_->dropItems();
+    }
 }
Index: /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.h
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.h	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/controllers/HumanController.h	(revision 2324)
@@ -57,4 +57,5 @@
             static void use();
             static void switchCamera();
+            static void dropItems();
 
         private:
Index: /code/branches/pickups2/src/orxonox/objects/pickup/Item.cc
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/pickup/Item.cc	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/pickup/Item.cc	(revision 2324)
@@ -8,4 +8,5 @@
 #include "util/String.h"
 #include "objects/worldentities/pawns/Pawn.h"
+
 
 namespace orxonox
@@ -30,9 +31,10 @@
 bool Item::addTo (Pawn* player)
 {
+	
+	return player->getPickUp().insert(this);
 	/*if(checkSlot(player)==true)
 	player->pickUp.Equipment.insert ( std::pair<std::string, Item*>(this->getName(),this) );
 	else
 	COUT(3) << "swap?" << std::endl;*/
-	return player->getPickUp().insert(this);
 }
 bool Item::remove(Pawn* player)
@@ -51,12 +53,12 @@
 bool Item::checkSlot(Pawn* player)
 {
-	/*std::multimap<std::string,Item*>::iterator it;
-	for ( it=player->pickUp.Equipment.begin() ; it != player->pickUp.Equipment.end(); it++ )
+	std::multimap<std::string,Item*>::iterator it;
+	for ( it=player->getPickUp().getEquipment().begin() ; it != player->getPickUp().getEquipment().end(); it++ )
 	{
 	if((*it).second->playerBaseClass_==this->playerBaseClass_)
 	return false;
 	}
-	return true;*/
-	return player->getPickUp().checkSlot(this);
+	return true;
+	//return player->getPickUp().checkSlot(player);
 }
 void Item::setPlayerBaseClassName(const std::string& name)
Index: /code/branches/pickups2/src/orxonox/objects/pickup/Item.h
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/pickup/Item.h	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/pickup/Item.h	(revision 2324)
@@ -4,8 +4,9 @@
 #include "core/BaseObject.h"
 #include "OrxonoxPrereqs.h"
-#include "ShipEquipment.h"
 
 namespace orxonox
 {
+	class ShipEquipment;
+
 	class _OrxonoxExport Item : public BaseObject
 	{
Index: /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.cc
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.cc	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.cc	(revision 2324)
@@ -1,22 +1,28 @@
 #include "Item.h"
 #include "ShipEquipment.h"
+#include "objects/worldentities/pawns/Pawn.h"
 
 
 namespace orxonox
 {
+
 	bool ShipEquipment::insert(Item* item)
 	{
-	if(checkSlot(player)==true)
+	if(checkSlot(item)==true)
+	{
 		Equipment.insert ( std::pair<std::string, Item*>(item->getName(),item) );
-	else
+		return true;
+	}
 		COUT(3) << "swap?" << std::endl;
+		return false;
 	
+	return false;
 	};
 	bool ShipEquipment::erase (Item* item)
 	{
-	if(Equipment.find(item->getName())!= Equipment.end())
+	std::multimap<std::string,Item*>::iterator it = Equipment.find(item->getName());
+	if(it != Equipment.end())
  	{
- 		std::multimap<std::string,Item*>::iterator it;
- 		it=Equipment.find(item->getName());
+		//it->second->dropped(this->getPlayer());
   		Equipment.erase (it);
   		return true;
@@ -25,10 +31,21 @@
   		return false;
 	};
-	bool ShipEquipment::checkSlot(Item* item) const
+
+	void ShipEquipment::eraseAll()
+	{
+		
+		for (std::multimap<std::string,Item*>::iterator it = Equipment.begin(); it != Equipment.end(); )
+		{
+		
+			(it++)->second->dropped(this->getPlayer());
+		}
+	}
+
+	bool ShipEquipment::checkSlot(Item* item)
 	{
 	std::multimap<std::string,Item*>::iterator it;
-	for ( it=Equipment.begin() ; it != Equipment.end(); it++ )
+	for ( it= getPlayer()->getPickUp().getEquipment().begin() ; it != getPlayer()->getPickUp().getEquipment().end(); it++ )
 	{
-		if((*it).second->playerBaseClass_==item->playerBaseClass_)
+		if((*it).second->getPlayerBaseClass()==item->getPlayerBaseClass())
 		return false;
 	}
Index: /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.h
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.h	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.h	(revision 2324)
@@ -3,5 +3,4 @@
 #include <string>
 #include <map>
-#include "Item.h"
 
 /*
@@ -18,4 +17,6 @@
 namespace orxonox
 {
+    class Item;
+
     class _OrxonoxExport ShipEquipment
     {
@@ -27,8 +28,16 @@
 	bool insert(Item* item);
 	bool erase (Item* item);
-	const bool checkSlot(Item* item) const;
+	void eraseAll();
+	bool checkSlot(Item* item);
 //	const std::multimap<std::string, Item*>& getEquipment() const { return this->Equipment; }
+	inline std::multimap<std::string, Item*>& getEquipment() {return this->Equipment;}
+	inline std::multimap<std::string, Item*>& getUsable() {return this->Usable;}
+	inline std::multimap<std::string, Item*>& getTrunk() {return this->Trunk;}
+	inline Pawn* getPlayer() {return this->player ;}
+	inline void setPlayer(Pawn* setplayer)
+	{this->player = setplayer;}
 
         private:
+            Pawn* player;
             std::multimap<std::string, Item*> Equipment;
             std::multimap<std::string, Item*> Usable;
Index: /code/branches/pickups2/src/orxonox/objects/pickup/Turbo.cc
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/pickup/Turbo.cc	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/pickup/Turbo.cc	(revision 2324)
@@ -42,8 +42,17 @@
 			{
 			SpaceShip* ship = dynamic_cast <SpaceShip*>(player);
-			this->setSpeedBoost(ship);
-			if(duration_==0)
-			addTo(player);
-			return true;
+			if(duration_==0 )
+			{	if(addTo(player))
+					{
+						this->setSpeedBoost(ship);
+						return true;
+					}
+			}
+			else
+			{
+				this->setSpeedBoost(ship);
+				return true;
+			}
+			return false;
 			}
 		return false;
@@ -79,4 +88,5 @@
 		if (this->duration_ == 0)
 		{
+			COUT(0) << "dropped" << std::endl;
 			if(remove(player)==true);
 			{
Index: /code/branches/pickups2/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2324)
@@ -70,4 +70,5 @@
             virtual void greet() {}
             virtual void use() {}
+            virtual void dropItems() {}
             virtual void switchCamera();
 
Index: /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.cc
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.cc	(revision 2324)
@@ -46,5 +46,5 @@
 
         this->bAlive_ = false;
-
+	this->getPickUp().setPlayer(this);
         this->health_ = 0;
         this->maxHealth_ = 0;
@@ -148,3 +148,8 @@
         this->spawn();
     }
+
+    void Pawn::dropItems()
+    {
+	pickUp.eraseAll();
+    }
 }
Index: /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.h
===================================================================
--- /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2323)
+++ /code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.h	(revision 2324)
@@ -75,7 +75,10 @@
 
             virtual void fire();
+            virtual void postSpawn();
+
             inline ShipEquipment& getPickUp()
                 {return this->pickUp;}
-            virtual void postSpawn();
+
+            virtual void dropItems();
 
         protected:
