Index: code/branches/presentation3/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/branches/presentation3/src/orxonox/gametypes/Gametype.cc	(revision 6994)
+++ code/branches/presentation3/src/orxonox/gametypes/Gametype.cc	(revision 6996)
@@ -309,13 +309,30 @@
         if (this->spawnpoints_.size() > 0)
         {
+            SpawnPoint* fallbackSpawnPoint = NULL;
             unsigned int randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(this->spawnpoints_.size())));
             unsigned int index = 0;
+            std::set<SpawnPoint*> activeSpawnPoints = this->spawnpoints_;
             for (std::set<SpawnPoint*>::const_iterator it = this->spawnpoints_.begin(); it != this->spawnpoints_.end(); ++it)
+            {
+                if (index == randomspawn)
+                    fallbackSpawnPoint = (*it);
+
+                if (!(*it)->isActive())
+                    activeSpawnPoints.erase(*it);
+
+                ++index;
+            }
+
+            randomspawn = static_cast<unsigned int>(rnd(static_cast<float>(this->spawnpoints_.size())));
+            index = 0;
+            for (std::set<SpawnPoint*>::const_iterator it = activeSpawnPoints.begin(); it != activeSpawnPoints.end(); ++it)
             {
                 if (index == randomspawn)
                     return (*it);
-
+                
                 ++index;
             }
+
+            return fallbackSpawnPoint;
         }
         return 0;
Index: code/branches/presentation3/src/orxonox/interfaces/Pickupable.cc
===================================================================
--- code/branches/presentation3/src/orxonox/interfaces/Pickupable.cc	(revision 6994)
+++ code/branches/presentation3/src/orxonox/interfaces/Pickupable.cc	(revision 6996)
@@ -34,7 +34,12 @@
 #include "Pickupable.h"
 
+#include "core/LuaState.h"
+#include "core/GUIManager.h"
 #include "core/Identifier.h"
 #include "core/CoreIncludes.h"
+#include "util/Convert.h"
+#include "infos/PlayerInfo.h"
 #include "pickup/PickupIdentifier.h"
+#include "worldentities/pawns/Pawn.h"
 #include "PickupCarrier.h"
 
@@ -91,4 +96,6 @@
         this->used_ = used;
         this->changedUsed();
+
+        GUIManager::getInstance().getLuaState()->doString("PickupInventory.update()");
         return true;
     }
@@ -196,4 +203,5 @@
         this->pickedUp_ = pickedUp;
         this->changedPickedUp();
+        GUIManager::getInstance().getLuaState()->doString("PickupInventory.update()");
         return true;
     }
@@ -273,4 +281,20 @@
         SUPER(Pickupable, clone, item);
     }
+
+    /**
+    @brief
+        Method to transcribe a Pickupable as a Rewardable to the player.
+    @param player
+        A pointer to the PlayerInfo, do whatever you want with it.
+    @return
+        Return true if successful.
+    */
+    bool Pickupable::reward(PlayerInfo* player)
+    {
+        ControllableEntity* entity = player->getControllableEntity();
+        Pawn* pawn = static_cast<Pawn*>(entity);
+        PickupCarrier* carrier = static_cast<PickupCarrier*>(pawn);
+        return carrier->pickup(this);
+    }
     
 }
Index: code/branches/presentation3/src/orxonox/interfaces/Pickupable.h
===================================================================
--- code/branches/presentation3/src/orxonox/interfaces/Pickupable.h	(revision 6994)
+++ code/branches/presentation3/src/orxonox/interfaces/Pickupable.h	(revision 6996)
@@ -41,4 +41,5 @@
 
 #include "core/OrxonoxClass.h"
+#include "Rewardable.h"
 
 namespace orxonox // tolua_export
@@ -52,5 +53,5 @@
     */
     class _OrxonoxExport Pickupable  // tolua_export
-        : virtual public OrxonoxClass
+        : virtual public OrxonoxClass, public Rewardable
     {  // tolua_export
         protected:
@@ -141,4 +142,8 @@
             std::list<Identifier*> targets_; //!< The possible targets of this pickup.
 
+        // For implementing the Rewardable interface:
+        public:
+            virtual bool reward(PlayerInfo* player); //!< Method to transcribe a Pickupable as a Rewardable to the player.
+
     };  // tolua_export
     
Index: code/branches/presentation3/src/orxonox/interfaces/Rewardable.h
===================================================================
--- code/branches/presentation3/src/orxonox/interfaces/Rewardable.h	(revision 6994)
+++ code/branches/presentation3/src/orxonox/interfaces/Rewardable.h	(revision 6996)
@@ -48,5 +48,5 @@
         Damian 'Mozork' Frick
     */
-    class _OrxonoxExport Rewardable : public OrxonoxClass
+    class _OrxonoxExport Rewardable : virtual public OrxonoxClass
     {
         public:
@@ -59,5 +59,5 @@
                 Must be implemented by every class inheriting from Rewardable.
             @param player
-                A pointer to the ControllableEntity, do whatever you want with it.
+                A pointer to the PlayerInfo, do whatever you want with it.
             @return
                 Return true if successful.
