Index: code/branches/tutorial/src/orxonox/ChatInputHandler.cc
===================================================================
--- code/branches/tutorial/src/orxonox/ChatInputHandler.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/ChatInputHandler.cc	(revision 8051)
@@ -28,15 +28,24 @@
 
 #include "ChatInputHandler.h"
+
+#include <cassert>
+#include <string>
+#include <CEGUIWindow.h>
+#include <CEGUIWindowManager.h>
+#include <elements/CEGUIListbox.h>
+#include <elements/CEGUIListboxItem.h>
+#include <elements/CEGUIListboxTextItem.h>
+
 #include "util/ScopedSingletonManager.h"
 #include "core/CoreIncludes.h"
 #include "core/GUIManager.h"
-#include "core/CorePrereqs.h"
 #include "core/command/ConsoleCommand.h"
-#include <CEGUIWindow.h>
-#include <elements/CEGUIListbox.h>
-#include <elements/CEGUIListboxItem.h>
-#include <elements/CEGUIListboxTextItem.h>
-#include <CEGUIWindowManager.h>
-#include <string>
+#include "core/input/InputBuffer.h"
+#include "core/input/InputManager.h"
+#include "core/input/InputState.h"
+#include "network/Host.h"
+
+#include "PlayerManager.h"
+#include "infos/PlayerInfo.h"
 
 namespace orxonox
Index: code/branches/tutorial/src/orxonox/ChatInputHandler.h
===================================================================
--- code/branches/tutorial/src/orxonox/ChatInputHandler.h	(revision 8050)
+++ code/branches/tutorial/src/orxonox/ChatInputHandler.h	(revision 8051)
@@ -30,28 +30,12 @@
 #define _ChatInputHandler_H__
 
-/* std includes */
-#include <deque>
+#include <OrxonoxPrereqs.h>
+
 #include <string>
-#include <fstream>
-#include <iostream>
-#include <cassert>
 #include <CEGUIForwardRefs.h>
 #include <CEGUIcolour.h>
 
-/* project includes */
-#include <OrxonoxPrereqs.h>
-#include <core/BaseObject.h>
-#include <core/PathConfig.h>
-
-#include "core/input/InputBuffer.h"
-#include "core/input/InputManager.h"
-#include "core/input/InputState.h"
-
-#include <network/ChatListener.h>
-#include <PlayerManager.h>
-#include <infos/PlayerInfo.h>
-
-#include "../libraries/network/Host.h"
-#include <util/Singleton.h>
+#include "util/Singleton.h"
+#include "network/ChatListener.h"
 
 namespace orxonox // tolua_export
Index: code/branches/tutorial/src/orxonox/LevelInfo.h
===================================================================
--- code/branches/tutorial/src/orxonox/LevelInfo.h	(revision 8050)
+++ code/branches/tutorial/src/orxonox/LevelInfo.h	(revision 8051)
@@ -109,5 +109,5 @@
             @return Returns the XML-filename (including *.oxw extension) of the Level.
             */
-            inline const std::string& getXMLFilename(void) { return this->xmlfilename_; } // tolua_export
+            inline const std::string& getXMLFilename(void) const { return this->xmlfilename_; } // tolua_export
 
         protected:
@@ -212,5 +212,9 @@
     {
         bool operator() (const LevelInfoItem* lhs, const LevelInfoItem* rhs) const
-            { return getLowercase(lhs->getName()).compare(getLowercase(rhs->getName())) < 0; }
+            {
+                if(getLowercase(lhs->getName()).compare(getLowercase(rhs->getName())) == 0)
+                    return getLowercase(lhs->getXMLFilename()).compare(getLowercase(rhs->getXMLFilename())) < 0;
+                return getLowercase(lhs->getName()).compare(getLowercase(rhs->getName())) < 0;
+            }
     };
     
Index: code/branches/tutorial/src/orxonox/LevelManager.cc
===================================================================
--- code/branches/tutorial/src/orxonox/LevelManager.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/LevelManager.cc	(revision 8051)
@@ -251,4 +251,5 @@
         // Iterate over all the found *.oxw files
         COUT(3) << "Loading LevelInfos..." << std::endl;
+        std::set<std::string> names;
         for (Ogre::StringVector::const_iterator it = levels->begin(); it != levels->end(); ++it)
         {
@@ -277,8 +278,12 @@
                 }
 
+                // Warn about levels with the same name.
+                if(!names.insert(info->getName()).second)
+                    COUT(2) << "Warning: Multiple levels (" << info->getXMLFilename() << ") with name '" << info->getName() << "' found!" << std::endl;
+
                 // Warn about multiple items so that it gets fixed quickly
                 if(availableLevels_.find(info) != availableLevels_.end())
                 {
-                    COUT(2) << "Warning: Multiple levels with name '" << info->getName() << "' found!" << std::endl;
+                    COUT(2) << "Warning: Multiple levels (" << info->getXMLFilename() << ") with same name '" << info->getName() << "' and filename found! Exluding..." << std::endl;
                     // Delete LevelInfoItem to avoid a dangling pointer
                     delete info;
Index: code/branches/tutorial/src/orxonox/LevelManager.h
===================================================================
--- code/branches/tutorial/src/orxonox/LevelManager.h	(revision 8050)
+++ code/branches/tutorial/src/orxonox/LevelManager.h	(revision 8051)
@@ -112,5 +112,5 @@
             // Helpers to allow fast access to the availableLevels list.
             unsigned int nextIndex_; //! The next expected index to be accessed.
-            std::set<LevelInfoItem*, LevelInfoCompare>::iterator nextLevel_; //! The nex expected Level to be accessed.
+            std::set<LevelInfoItem*, LevelInfoCompare>::iterator nextLevel_; //! The next expected Level to be accessed.
 
             // config values
Index: code/branches/tutorial/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/tutorial/src/orxonox/gamestates/GSLevel.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/gamestates/GSLevel.cc	(revision 8051)
@@ -46,4 +46,5 @@
 #include "LevelManager.h"
 #include "PlayerManager.h"
+#include "GSRoot.h"
 
 namespace orxonox
@@ -156,7 +157,9 @@
         COUT(0) << "Loading level..." << std::endl;
         startFile_ = new XMLFile(LevelManager::getInstance().getDefaultLevel());
-        Loader::open(startFile_);
+        bool loaded = Loader::open(startFile_);
 
         Core::getInstance().updateLastLevelTimestamp();
+        if(!loaded)
+            GSRoot::delayedStartMainMenu();
     }
 
Index: code/branches/tutorial/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/branches/tutorial/src/orxonox/gamestates/GSMainMenu.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/gamestates/GSMainMenu.cc	(revision 8051)
@@ -68,5 +68,5 @@
         RegisterRootObject(GSMainMenu);
 
-        InputManager::getInstance().createInputState("MainMenuHackery", true, true)->setKeyHandler(KeyBinderManager::getInstance().getDefaultAsHandler());
+        InputManager::getInstance().createInputState("MainMenuHackery")->setKeyHandler(KeyBinderManager::getInstance().getDefaultAsHandler());
 
         // create an empty Scene
Index: code/branches/tutorial/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/tutorial/src/orxonox/gamestates/GSRoot.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/gamestates/GSRoot.cc	(revision 8051)
@@ -38,4 +38,6 @@
 #include "tools/interfaces/Tickable.h"
 
+#include "GSLevel.h"
+
 namespace orxonox
 {
@@ -45,4 +47,6 @@
     static const std::string __CC_setPause_name = "setPause";
     static const std::string __CC_pause_name = "pause";
+
+    /*static*/ bool GSRoot::startMainMenu_s = false;
 
     SetConsoleCommand("printObjects", &GSRoot::printObjects).hide();
@@ -98,4 +102,10 @@
     void GSRoot::update(const Clock& time)
     {
+        if(startMainMenu_s)
+        {
+            delayedStartMainMenu();
+            startMainMenu_s = false;
+        }
+
         for (ObjectList<Timer>::iterator it = ObjectList<Timer>::begin(); it; )
         {
@@ -175,3 +185,12 @@
             callStaticNetworkFunction(&TimeFactorListener::setTimeFactor, CLIENTID_UNKNOWN, factor_new);
     }
+
+    /*static*/ void GSRoot::delayedStartMainMenu(void)
+    {
+        if(!startMainMenu_s)
+            startMainMenu_s = true;
+        else
+            GSLevel::startMainMenu();
+    }
+
 }
Index: code/branches/tutorial/src/orxonox/gamestates/GSRoot.h
===================================================================
--- code/branches/tutorial/src/orxonox/gamestates/GSRoot.h	(revision 8050)
+++ code/branches/tutorial/src/orxonox/gamestates/GSRoot.h	(revision 8051)
@@ -54,4 +54,6 @@
         void pause();
 
+        static void delayedStartMainMenu(void);
+
     protected:
         virtual void changedTimeFactor(float factor_new, float factor_old);
@@ -60,4 +62,5 @@
         bool                  bPaused_;
         float                 timeFactorPauseBackup_;
+        static bool           startMainMenu_s;
     };
 }
Index: code/branches/tutorial/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/branches/tutorial/src/orxonox/gametypes/Gametype.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/gametypes/Gametype.cc	(revision 8051)
@@ -30,4 +30,5 @@
 
 #include "util/Math.h"
+#include "core/Core.h"
 #include "core/CoreIncludes.h"
 #include "core/ConfigValueIncludes.h"
@@ -386,5 +387,9 @@
                     if (allplayersready && hashumanplayers)
                     {
-                        this->gtinfo_->startCountdown_ = this->initialStartCountdown_;
+                        // If in developer's mode, there is no start countdown.
+                        if(Core::getInstance().inDevMode())
+                            this->gtinfo_->startCountdown_ = 0;
+                        else
+                            this->gtinfo_->startCountdown_ = this->initialStartCountdown_;
                         this->gtinfo_->bStartCountdownRunning_ = true;
                     }
Index: code/branches/tutorial/src/orxonox/graphics/Model.cc
===================================================================
--- code/branches/tutorial/src/orxonox/graphics/Model.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/graphics/Model.cc	(revision 8051)
@@ -60,5 +60,5 @@
     void Model::setConfigValues()
     {
-        SetConfigValueExternal(bGlobalEnableLod_, "GraphicsSettings", "enableModelLoD", true)
+        SetConfigValueExternal(bGlobalEnableLod_, "GraphicsSettings", "enableMeshLoD", true)
             .description("Enable level of detail for models");
     }
Index: code/branches/tutorial/src/orxonox/overlays/InGameConsole.cc
===================================================================
--- code/branches/tutorial/src/orxonox/overlays/InGameConsole.cc	(revision 8050)
+++ code/branches/tutorial/src/orxonox/overlays/InGameConsole.cc	(revision 8051)
@@ -49,5 +49,4 @@
 #include "core/ConfigValueIncludes.h"
 #include "core/command/ConsoleCommand.h"
-#include "core/GUIManager.h"
 #include "core/input/InputManager.h"
 #include "core/input/InputState.h"
@@ -60,6 +59,6 @@
     const float CHAR_WIDTH = 7.45f; // fix this please - determine the char-width dynamically
 
-    SetConsoleCommand("InGameConsole", "openConsole", &InGameConsole::openConsole).addShortcut();
-    SetConsoleCommand("InGameConsole", "closeConsole", &InGameConsole::closeConsole).addShortcut();
+    SetConsoleCommand("InGameConsole", "openConsole", &InGameConsole::openConsole);
+    SetConsoleCommand("InGameConsole", "closeConsole", &InGameConsole::closeConsole);
 
     ManageScopedSingleton(InGameConsole, ScopeID::Graphics, false);
@@ -534,5 +533,4 @@
         {
             this->bActive_ = false;
-            GUIManager::getInstance().getLuaState()->doString("inGameConsoleClosed()"); // Notify the SheetManager in lua, that the console has been closed.
             InputManager::getInstance().leaveState("console");
             this->shell_->unregisterListener(this);
@@ -611,5 +609,4 @@
     /*static*/ void InGameConsole::closeConsole()
     {
-        GUIManager::getInstance().getLuaState()->doString("inGameConsoleClosed()");  // Notify the SheetManager in lua, that the console has been closed, but not by ESC.
         InGameConsole::getInstance().deactivate();
     }
