Index: code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.cc
===================================================================
--- code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.cc	(revision 2461)
+++ code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.cc	(revision 2462)
@@ -33,4 +33,6 @@
 #include "core/ConsoleCommand.h"
 #include "objects/worldentities/ControllableEntity.h"
+#include "objects/worldentities/pawns/Pawn.h"
+#include "objects/gametypes/Gametype.h"
 
 namespace orxonox
@@ -48,4 +50,7 @@
     SetConsoleCommand(HumanController, use,           true);
     SetConsoleCommand(HumanController, switchCamera,  true);
+    SetConsoleCommand(HumanController, suicide,       true);
+    SetConsoleCommand(HumanController, addBots,       true).defaultValues(1);
+    SetConsoleCommand(HumanController, killBots,      true).defaultValues(0);
 
     CreateUnloadableFactory(HumanController);
@@ -136,3 +141,25 @@
             HumanController::localController_s->controllableEntity_->switchCamera();
     }
+
+    void HumanController::suicide()
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
+        {
+            Pawn* pawn = dynamic_cast<Pawn*>(HumanController::localController_s->controllableEntity_);
+            if (pawn)
+                pawn->kill();
+        }
+    }
+
+    void HumanController::addBots(unsigned int amount)
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_ && HumanController::localController_s->controllableEntity_->getGametype())
+            HumanController::localController_s->controllableEntity_->getGametype()->addBots(amount);
+    }
+
+    void HumanController::killBots(unsigned int amount)
+    {
+        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_ && HumanController::localController_s->controllableEntity_->getGametype())
+            HumanController::localController_s->controllableEntity_->getGametype()->killBots(amount);
+    }
 }
Index: code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.h
===================================================================
--- code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.h	(revision 2461)
+++ code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.h	(revision 2462)
@@ -59,4 +59,9 @@
             static void switchCamera();
 
+            static void suicide();
+
+            static void addBots(unsigned int amount);
+            static void killBots(unsigned int amount = 0);
+
         private:
             static HumanController* localController_s;
Index: code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.cc
===================================================================
--- code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.cc	(revision 2461)
+++ code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.cc	(revision 2462)
@@ -36,4 +36,5 @@
 #include "core/ConfigValueIncludes.h"
 #include "objects/infos/PlayerInfo.h"
+#include "objects/infos/Bot.h"
 #include "objects/worldentities/pawns/Spectator.h"
 #include "objects/worldentities/SpawnPoint.h"
@@ -50,12 +51,17 @@
         RegisterObject(Gametype);
 
+        this->setGametype(this);
+
         this->defaultControllableEntity_ = Class(Spectator);
 
         this->bAutoStart_ = false;
         this->bForceSpawn_ = false;
+        this->numberOfBots_ = 0;
 
         this->initialStartCountdown_ = 3;
 
         this->setConfigValues();
+
+        this->addBots(this->numberOfBots_);
     }
 
@@ -65,4 +71,5 @@
         SetConfigValue(bAutoStart_, false);
         SetConfigValue(bForceSpawn_, false);
+        SetConfigValue(numberOfBots_, 0);
     }
 
@@ -293,3 +300,22 @@
         }
     }
+
+    void Gametype::addBots(unsigned int amount)
+    {
+        for (unsigned int i = 0; i < amount; ++i)
+            new Bot(this);
+    }
+
+    void Gametype::killBots(unsigned int amount)
+    {
+        unsigned int i = 0;
+        for (ObjectList<Bot>::iterator it = ObjectList<Bot>::begin(); (it != ObjectList<Bot>::end()) && ((amount == 0) || (i < amount)); )
+        {
+            if (it->getGametype() == this)
+            {
+                delete (*(it++));
+                ++i;
+            }
+        }
+    }
 }
Index: code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.h
===================================================================
--- code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.h	(revision 2461)
+++ code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.h	(revision 2462)
@@ -98,4 +98,7 @@
                 { return this->gtinfo_.startCountdown_; }
 
+            void addBots(unsigned int amount);
+            void killBots(unsigned int amount = 0);
+
         private:
             virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const;
@@ -116,4 +119,5 @@
 
             float initialStartCountdown_;
+            unsigned int numberOfBots_;
 
             std::map<PlayerInfo*, PlayerState::Enum> players_;
Index: code/branches/objecthierarchy2/src/orxonox/objects/infos/PlayerInfo.cc
===================================================================
--- code/branches/objecthierarchy2/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2461)
+++ code/branches/objecthierarchy2/src/orxonox/objects/infos/PlayerInfo.cc	(revision 2462)
@@ -65,4 +65,7 @@
                 this->controller_ = 0;
             }
+
+            if (this->getGametype())
+                this->getGametype()->playerLeft(this);
         }
     }
