Index: code/trunk/src/orxonox/LevelManager.cc
===================================================================
--- code/trunk/src/orxonox/LevelManager.cc	(revision 7724)
+++ code/trunk/src/orxonox/LevelManager.cc	(revision 7801)
@@ -152,4 +152,5 @@
         Ogre::StringVectorPtr levels = Resource::findResourceNames("*.oxw");
         // Iterate over all *.oxw level files.
+        COUT(3) << "Loading LevelInfos..." << std::endl;
         for (Ogre::StringVector::const_iterator it = levels->begin(); it != levels->end(); ++it)
         {
Index: code/trunk/src/orxonox/Main.cc
===================================================================
--- code/trunk/src/orxonox/Main.cc	(revision 7724)
+++ code/trunk/src/orxonox/Main.cc	(revision 7801)
@@ -54,4 +54,7 @@
     SetCommandLineSwitch(dedicatedClient).information("Start in dedicated client mode");
 
+    /* ADD masterserver command */
+    SetCommandLineSwitch(masterserver).information("Start in masterserver mode");
+
     SetCommandLineArgument(generateDoc, "")
         .information("Generates a Doxygen file from things like SetConsoleCommand");
@@ -67,4 +70,5 @@
         if (CommandLineParser::getValue("generateDoc").getString().empty())
         {
+            /* TODO make this clear */
             game->setStateHierarchy(
             "root"
@@ -73,5 +77,5 @@
             "  standalone,server,client"
             "   level"
-            " server,client"
+            " server,client,masterserver"
             "  level"
             );
@@ -90,4 +94,7 @@
             else if (CommandLineParser::getValue("dedicatedClient").getBool())
                 Game::getInstance().requestStates("client, level");
+            /* ADD masterserver command */
+            else if (CommandLineParser::getValue("masterserver").getBool())
+                Game::getInstance().requestStates("masterserver");
             else
             {
Index: code/trunk/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/ArtificialController.cc	(revision 7724)
+++ code/trunk/src/orxonox/controllers/ArtificialController.cc	(revision 7801)
@@ -69,5 +69,5 @@
 
         this->target_ = 0;
-        this->formationFlight_ = true;
+        this->formationFlight_ = false;
         this->passive_ = false;
         this->maxFormationSize_ = STANDARD_MAX_FORMATION_SIZE;
Index: code/trunk/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/NewHumanController.cc	(revision 7724)
+++ code/trunk/src/orxonox/controllers/NewHumanController.cc	(revision 7801)
@@ -375,5 +375,5 @@
         {
 //             CCOUT(0) << "testing object as target" << endl;
-            if (itr->movable->isInScene() && itr->movable->getMovableType() == "Entity" /*&& itr->distance > 500*/)
+            if (itr->movable->isInScene() && itr->movable->getMovableType() == "Entity" && itr->distance > 200)
             {
                 // Try to cast the user pointer
Index: code/trunk/src/orxonox/gamestates/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/gamestates/CMakeLists.txt	(revision 7724)
+++ code/trunk/src/orxonox/gamestates/CMakeLists.txt	(revision 7801)
@@ -6,4 +6,5 @@
   GSRoot.cc
   GSServer.cc
+  GSMasterServer.cc
   GSStandalone.cc
 )
Index: code/trunk/src/orxonox/gamestates/GSMasterServer.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMasterServer.cc	(revision 7801)
+++ code/trunk/src/orxonox/gamestates/GSMasterServer.cc	(revision 7801)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Sandro 'smerkli' Merkli 
+ *   Co-authors:
+ *      Reto Grieder (original file for GSServer.cc)
+ *      Fabian 'x3n' Landau (original file for GSServer.cc)
+ *
+ */
+
+#include "GSMasterServer.h"
+
+#include "util/Debug.h"
+#include "core/Game.h"
+#include "core/GameMode.h"
+
+namespace orxonox
+{
+  DeclareGameState(GSMasterServer, "masterserver", false, false);
+
+  GSMasterServer::GSMasterServer(const GameStateInfo& info)
+    : GameState(info)
+  {
+
+  }
+
+  GSMasterServer::~GSMasterServer()
+  {
+  }
+
+  void GSMasterServer::activate()
+  {
+    /* TODO make this work for masterserver as well */
+    //GameMode::setIsServer(true);
+
+    this->mserver = new MasterServer();
+    COUT(0) << "Loading masterserver mode" << std::endl;
+
+    this->mserver->run();
+  }
+
+  void GSMasterServer::deactivate()
+  { /* nothing so far */ }
+
+  void GSMasterServer::update(const Clock& time)
+  { 
+    this->mserver->run();
+  }
+}
Index: code/trunk/src/orxonox/gamestates/GSMasterServer.h
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMasterServer.h	(revision 7801)
+++ code/trunk/src/orxonox/gamestates/GSMasterServer.h	(revision 7801)
@@ -0,0 +1,58 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Sandro 'smerkli' Merkli 
+ *   Co-authors:
+ *      Reto Grieder (Original GSServer.h file this was adapted from)
+ *      ...
+ *
+ */
+
+#ifndef _GSMasterServer_H__
+#define _GSMasterServer_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/GameState.h"
+#include "network/NetworkPrereqs.h"
+#include "network/MasterServer.h"
+
+namespace orxonox
+{
+  class _OrxonoxExport GSMasterServer : public GameState
+  {
+    public:
+      GSMasterServer(const GameStateInfo& info);
+      ~GSMasterServer();
+
+      void activate();
+      void deactivate();
+      void update(const Clock& time);
+
+    private:
+      MasterServer *mserver;
+
+
+  };
+}
+
+#endif /* _GSServer_H__ */
Index: code/trunk/src/orxonox/gamestates/GSServer.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSServer.cc	(revision 7724)
+++ code/trunk/src/orxonox/gamestates/GSServer.cc	(revision 7801)
@@ -34,4 +34,5 @@
 #include "core/GameMode.h"
 #include "network/Server.h"
+#include "network/Connection.h"
 
 namespace orxonox
@@ -39,5 +40,5 @@
     DeclareGameState(GSServer, "server", false, false);
 
-    SetCommandLineArgument(port, 55556).shortcut("p").information("Network communication port to be used 0-65535 (default: 55556)");
+    SetCommandLineArgument(port, NETWORK_PORT).shortcut("p").information("Network communication port to be used 0-65535 (default: 55556)");
 
     GSServer::GSServer(const GameStateInfo& info)
Index: code/trunk/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.cc	(revision 7724)
+++ code/trunk/src/orxonox/gametypes/Gametype.cc	(revision 7801)
@@ -79,4 +79,9 @@
         else
             this->scoreboard_ = 0;
+
+        /* HACK HACK HACK */
+        this->dedicatedAddBots_ = createConsoleCommand( "dedicatedAddBots", createExecutor( createFunctor(&Gametype::addBots, this) ) );
+        this->dedicatedKillBots_ = createConsoleCommand( "dedicatedKillBots", createExecutor( createFunctor(&Gametype::killBots, this) ) );
+        /* HACK HACK HACK */
     }
 
@@ -86,4 +91,8 @@
         {
             this->gtinfo_->destroy();
+            if( this->dedicatedAddBots_ )
+                delete this->dedicatedAddBots_;
+            if( this->dedicatedKillBots_ )
+                delete this->dedicatedKillBots_;
         }
     }
Index: code/trunk/src/orxonox/gametypes/Gametype.h
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.h	(revision 7724)
+++ code/trunk/src/orxonox/gametypes/Gametype.h	(revision 7801)
@@ -184,4 +184,9 @@
             // Config Values
             std::string scoreboardTemplate_;
+
+            /* HACK HACK HACK */
+            ConsoleCommand* dedicatedAddBots_;
+            ConsoleCommand* dedicatedKillBots_;
+            /* HACK HACK HACK */
     };
 }
Index: code/trunk/src/orxonox/infos/Bot.cc
===================================================================
--- code/trunk/src/orxonox/infos/Bot.cc	(revision 7724)
+++ code/trunk/src/orxonox/infos/Bot.cc	(revision 7801)
@@ -86,5 +86,5 @@
             "Alec Trevelyan",
             "Elliot Carver",
-            "Elektra King"
+            "Elektra King",
             "Viktor Zokas",
             "Gustav Graves",
Index: code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 7724)
+++ code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc	(revision 7801)
@@ -57,4 +57,10 @@
         this->engine_ = 0;
 
+        this->boostPower_ = 10.0f;
+        this->initialBoostPower_ = 10.0f;
+        this->boostRate_ = 5.0;
+        this->boostPowerRate_ = 1.0;
+        this->boostCooldownDuration_ = 5.0;
+        this->bBoostCooldown_ = false;
 
         this->bInvertYAxis_ = false;
@@ -86,4 +92,8 @@
         XMLPortParamVariable(SpaceShip, "auxilaryThrust", auxilaryThrust_, xmlelement, mode);
         XMLPortParamVariable(SpaceShip, "rotationThrust", rotationThrust_, xmlelement, mode);
+        XMLPortParamVariable(SpaceShip, "boostPower", initialBoostPower_, xmlelement, mode);
+        XMLPortParamVariable(SpaceShip, "boostPowerRate", boostPowerRate_, xmlelement, mode);
+        XMLPortParamVariable(SpaceShip, "boostRate", boostRate_, xmlelement, mode);
+        XMLPortParamVariable(SpaceShip, "boostCooldownDuration", boostCooldownDuration_, xmlelement, mode);
     }
 
@@ -134,5 +144,25 @@
                 this->localAngularAcceleration_.setValue(0, 0, 0);
             }
-        }
+            
+            if(!this->bBoostCooldown_ && this->boostPower_ < this->initialBoostPower_)
+            {
+                this->boostPower_ += this->boostPowerRate_*dt;
+            }
+            if(this->bBoost_)
+            {
+                this->boostPower_ -=this->boostRate_*dt;
+                if(this->boostPower_ <= 0.0f)
+                {
+                    this->bBoost_ = false;
+                    this->bBoostCooldown_ = true;
+                    this->timer_.setTimer(this->boostCooldownDuration_, false, createExecutor(createFunctor(&SpaceShip::boostCooledDown, this)));
+                }
+            }
+        }
+    }
+    
+    void SpaceShip::boostCooledDown(void)
+    {
+        this->bBoostCooldown_ = false;
     }
 
@@ -175,4 +205,18 @@
         Pawn::rotateRoll(value);
     }
+    
+    // TODO: something seems to call this function every tick, could probably handled a little more efficiently!
+    void SpaceShip::setBoost(bool bBoost)
+    {
+        if(bBoost == this->bBoost_)
+            return;
+    
+        if(bBoost)
+            this->boost();
+        else
+        {
+            this->bBoost_ = false;
+        }
+    }
 
     void SpaceShip::fire()
@@ -182,5 +226,6 @@
     void SpaceShip::boost()
     {
-        this->bBoost_ = true;
+        if(!this->bBoostCooldown_)
+            this->bBoost_ = true;
     }
 
Index: code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 7724)
+++ code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 7801)
@@ -34,4 +34,5 @@
 #include <string>
 #include <LinearMath/btVector3.h>
+#include "tools/Timer.h"
 #include "util/Math.h"
 #include "Pawn.h"
@@ -69,6 +70,5 @@
                 { return this->steering_; }
 
-            inline void setBoost(bool bBoost)
-                { this->bBoost_ = bBoost; }
+            void setBoost(bool bBoost);
             inline bool getBoost() const
                 { return this->bBoost_; }
@@ -89,5 +89,11 @@
 
             bool bBoost_;
+            bool bBoostCooldown_;
             bool bPermanentBoost_;
+            float boostPower_;
+            float initialBoostPower_;
+            float boostRate_;
+            float boostPowerRate_;
+            float boostCooldownDuration_;
             Vector3 steering_;
             float primaryThrust_;
@@ -102,7 +108,10 @@
 
             void loadEngineTemplate();
+            
+            void boostCooledDown(void);
 
             std::string enginetemplate_;
             Engine* engine_;
+            Timer timer_;
     };
 }
