Index: code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.cc
===================================================================
--- code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.cc	(revision 2055)
+++ code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.cc	(revision 2055)
@@ -0,0 +1,82 @@
+const int maxweapons_ =2; //Weaponslots	 (provisorisch)
+const int maxslots_= 50; //Inventoryslots (provisorisch)
+
+
+bool CheckifSpace(){
+	if((Usable.size()+Trunk.size())>=maxslots_)
+		return false;
+	return true;
+
+
+}
+
+/* Checks if the Ship can pick an Item up. Permanents will give a "false" back unless the Ship doesnt carry a Item for that Slot (2 Weaponslots) yet.Others will be picked up unless there is no Space in the Trunk.*/
+
+bool CheckifValid(Shipitem* toBeChecked){
+	
+switch(toBeChecked.CheckType())
+{
+case Powerups:
+	activatePowerUp(); //gibts noch nicht
+		return true;
+case Permanent:
+	switch (toBeChecked.CheckSubType())
+	{
+	case Weapon:
+		int weaponcheck=0;
+		multimap<string, ShipItem*>::iterator it;
+		for ( it=Equipment.begin() ; it != Equipment.end(); it++ ){
+			if((*it).second->CheckSubType()==Weapon)
+			weaponcheck++;
+		};
+		if (weaponcheck>=maxweapons_){
+		weaponcheck=0;
+		return false;
+		}
+	case Thrusters:
+		multimap<string, ShipItem*>::iterator it;
+		for ( it=Equipment.begin() ; it != Equipment.end(); it++ ){
+			if((*it).second->CheckSubType()==Thrusters)
+			return false;
+		}
+	case Shields:
+		multimap<string, ShipItem*>::iterator it;
+		for ( it=Equipment.begin() ; it != Equipment.end(); it++ ){
+			if((*it).second->CheckSubType()==Shields)
+			return false;
+		}
+	case Armor:
+		multimap<string, ShipItem*>::iterator it;
+		for ( it=Equipment.begin() ; it != Equipment.end(); it++ ){
+			if((*it).second->CheckSubType()==Armor)
+			return false;
+		}
+	}
+case Useable:
+		return CheckifSpace();
+}
+return true;
+}
+/*Adds the Item to the Ship*/	
+void AddItem(Shipitem* toAddItem){
+	if(CheckifValid(toAddItem)==true){
+		switch(toAddItem.CheckType()){
+			case Permanent:
+				Equipment.insert ( pair<std::string, ShipItem*>(toAddItem.itemname,*toAddItem) );
+				break;
+			case Usable:
+				Usable.insert ( pair<std::string, ShipItem*>(toAddItem.itemname,*toAddItem) );
+				break;
+			case Trunk:
+				Trunk.insert ( pair<std::string, ShipItem*>(toAddItem.itemname,*toAddItem) );
+				break;
+		}
+		
+	}
+	else if(toAddItem.CheckType()==Permanent){
+		if(CheckifSpace()==true)
+			Trunk.insert ( pair<std::string, ShipItem*>(toAddItem.itemname,*toAddItem) );
+	
+	}
+		
+}
Index: code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.h
===================================================================
--- code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.h	(revision 2054)
+++ code/branches/pickups/src/orxonox/objects/pickup/ShipEquipmentClasses.h	(revision 2055)
@@ -22,14 +22,16 @@
 	class _OrxonoxExport ShipEquipment{
 	public:
-		void AddItem(Shipitem toAddItem);
-		void RemoveItem(Shipitem toRemoveItem);
-		bool CheckifValid(Shipitem toBeChecked);
-		int 
+		void AddItem(Shipitem* toAddItem);
+		void RemoveItem(Shipitem* toRemoveItem);
+		bool CheckifValid(Shipitem* toBeChecked);
+		bool CheckifSpace();
 	private:
-		std::map<std::string, Item*> Shipitems;
-		
-				
+		multimap<std::string, ShipItem*> Equipment;
+		multimap<std::string, ShipItem*> Usable;
+		multimap<std::string, ShipItem*> Trunk;
 	
 
+
+}
 
 
Index: code/branches/pickups/src/orxonox/objects/pickup/ShipItem.cc
===================================================================
--- code/branches/pickups/src/orxonox/objects/pickup/ShipItem.cc	(revision 2054)
+++ code/branches/pickups/src/orxonox/objects/pickup/ShipItem.cc	(revision 2055)
@@ -5,3 +5,5 @@
 	return This.type};
 	
+subItemTypePermanent CheckSubType(){
+	return This.subtype_permanent};
 	
Index: code/branches/pickups/src/orxonox/objects/pickup/ShipItem.h
===================================================================
--- code/branches/pickups/src/orxonox/objects/pickup/ShipItem.h	(revision 2054)
+++ code/branches/pickups/src/orxonox/objects/pickup/ShipItem.h	(revision 2055)
@@ -20,7 +20,9 @@
 	public:
 		itemType CheckType();
+		virtual
 
 	private:
 		itemType type;
+		string itemname;
 	};
 
@@ -41,8 +43,8 @@
 
 			public:
-				subItemTypeUseable CheckSubType();
+				//subItemTypeUseable CheckSubType();
 
 			private:
-				subItemTypeUseable subtype;
+				subItemTypeUseable subtype_usable;
 };
 
@@ -61,5 +63,5 @@
 
 			private:
-				subItemTypePermanent subtype;
+				subItemTypePermanent subtype_permanent;
 };
 
@@ -67,5 +69,5 @@
 Class _OrxonoxExport Powerups : public ShipItem{
 
-	enum subItemTypePowerups{ //Diffrent Types of Items of the Type Powerups
+	enum subItem TypePowerups{ //Diffrent Types of Items of the Type Powerups
 			Weapon,
 			Boosters,
@@ -76,8 +78,8 @@
 			};
 			public:
-			subItemTypePowerups CheckSubType();
+			//subItemTypePowerups CheckSubType();
 
 			private:
-			subItemTypePowerups subtype;
+			subItemTypePowerups subtype_powerups;
 };
 
