Index: code/branches/console/src/core/InputBuffer.cc
===================================================================
--- code/branches/console/src/core/InputBuffer.cc	(revision 1333)
+++ code/branches/console/src/core/InputBuffer.cc	(revision 1334)
@@ -163,4 +163,7 @@
     bool InputBuffer::keyPressed(const OIS::KeyEvent &e)
     {
+        if (this->keyboard_->isModifierDown(OIS::Keyboard::Alt) && e.key == OIS::KC_TAB)
+            return true;
+
         for (std::list<InputBufferListenerTuple>::iterator it = this->listeners_.begin(); it != this->listeners_.end(); ++it)
         {
Index: code/branches/console/src/core/OutputBuffer.cc
===================================================================
--- code/branches/console/src/core/OutputBuffer.cc	(revision 1333)
+++ code/branches/console/src/core/OutputBuffer.cc	(revision 1334)
@@ -78,4 +78,5 @@
 
         bool eof = this->stream_.eof();
+        bool fail = this->stream_.fail();
 
         if (eof)
@@ -85,5 +86,5 @@
         }
 
-        return (!eof);
+        return (!eof && !fail);
     }
 
Index: code/branches/console/src/core/Script.cc
===================================================================
--- code/branches/console/src/core/Script.cc	(revision 1333)
+++ code/branches/console/src/core/Script.cc	(revision 1334)
@@ -68,5 +68,5 @@
     output_ += str;
 //    COUT(4) << "Lua_output!:" << std::endl << str << std::endl << "***" << std::endl;
-    COUT(5) << str << std::endl;
+    COUT(5) << str;
   }
 
Index: code/branches/console/src/core/Shell.cc
===================================================================
--- code/branches/console/src/core/Shell.cc	(revision 1333)
+++ code/branches/console/src/core/Shell.cc	(revision 1334)
@@ -48,4 +48,5 @@
         this->historyOffset_ = 0;
         this->finishedLastLine_ = true;
+        this->bAddOutputLevel_ = false;
 
         this->clearLines();
@@ -131,5 +132,5 @@
     }
 
-    void Shell::addLine(const std::string& line, unsigned int level)
+    void Shell::addLine(const std::string& line, int level)
     {
         int original_level = OutputHandler::getOutStream().getOutputLevel();
@@ -196,4 +197,7 @@
             if (this->finishedLastLine_)
             {
+                if (this->bAddOutputLevel_)
+                    output.insert(0, 1, (char)OutputHandler::getOutStream().getOutputLevel());
+
                 this->lines_.insert(this->lines_.begin(), output);
 
@@ -239,5 +243,5 @@
     void Shell::hintandcomplete()
     {
-        this->addLine(CommandExecutor::hint(this->inputBuffer_.get()), 0);
+        this->addLine(CommandExecutor::hint(this->inputBuffer_.get()), -1);
         this->inputBuffer_.set(CommandExecutor::complete(this->inputBuffer_.get()));
 
Index: code/branches/console/src/core/Shell.h
===================================================================
--- code/branches/console/src/core/Shell.h	(revision 1333)
+++ code/branches/console/src/core/Shell.h	(revision 1334)
@@ -83,5 +83,5 @@
             std::list<std::string>::const_iterator getEndIterator() const;
 
-            void addLine(const std::string& line, unsigned int level);
+            void addLine(const std::string& line, int level);
             void clearLines();
 
@@ -90,4 +90,7 @@
             inline unsigned int getScrollPosition() const
                 { return this->scrollPosition_; }
+
+            inline void addOutputLevel(bool bAddOutputLevel)
+                { this->bAddOutputLevel_ = bAddOutputLevel; }
 
         private:
@@ -127,4 +130,5 @@
             unsigned int historyPosition_;
             unsigned int historyOffset_;
+            bool bAddOutputLevel_;
     };
 }
Index: code/branches/console/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/console/src/orxonox/Orxonox.cc	(revision 1333)
+++ code/branches/console/src/orxonox/Orxonox.cc	(revision 1334)
@@ -88,42 +88,5 @@
   ConsoleCommand(Orxonox, slomo, AccessLevel::Offline, true).setDefaultValue(0, 1.0);
   ConsoleCommand(Orxonox, setTimeFactor, AccessLevel::Offline, false).setDefaultValue(0, 1.0);
-/*
-  class Testconsole : public InputBufferListener
-  {
-    public:
-      Testconsole(InputBuffer* ib) : ib_(ib) {}
-      void listen() const
-      {
-        std::cout << "> " << this->ib_->get() << std::endl;
-      }
-      void execute() const
-      {
-        std::cout << ">> " << this->ib_->get() << std::endl;
-        if (!CommandExecutor::execute(this->ib_->get()))
-          std::cout << "Error" << std::endl;
-        this->ib_->clear();
-      }
-      void hintandcomplete() const
-      {
-        std::cout << CommandExecutor::hint(this->ib_->get()) << std::endl;
-        this->ib_->set(CommandExecutor::complete(this->ib_->get()));
-      }
-      void clear() const
-      {
-        this->ib_->clear();
-      }
-      void removeLast() const
-      {
-        this->ib_->removeBehindCursor();
-      }
-      void exit() const
-      {
-        CommandExecutor::execute("setInputMode 2");
-      }
-
-    private:
-      InputBuffer* ib_;
-  };
-*/
+
   class Calculator
   {
@@ -421,25 +384,4 @@
   void Orxonox::startRenderLoop()
   {
-
-//    InputBuffer* ib = new InputBuffer();
-//    InputManager::getSingleton().feedInputBuffer(ib);
-    /*
-    Testconsole* console = new Testconsole(ib);
-    ib->registerListener(console, &Testconsole::listen, true);
-    ib->registerListener(console, &Testconsole::execute, '\r', false);
-    ib->registerListener(console, &Testconsole::hintandcomplete, '\t', true);
-    ib->registerListener(console, &Testconsole::clear, '§', true);
-    ib->registerListener(console, &Testconsole::removeLast, '\b', true);
-    ib->registerListener(console, &Testconsole::exit, (char)0x1B, true);
-    */
-    /*
-    orxonoxConsole_ = new InGameConsole(ib);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::listen, true);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::execute, '\r', false);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::hintandcomplete, '\t', true);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::clear, '§', true);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::removeLast, '\b', true);
-    ib->registerListener(orxonoxConsole_, &InGameConsole::exit, (char)0x1B, true);
-    */
     // first check whether ogre root object has been created
     if (Ogre::Root::getSingletonPtr() == 0)
@@ -490,5 +432,4 @@
       for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; ++it)
         it->tick((float)evt.timeSinceLastFrame * this->timefactor_);
-//      orxonoxConsole_->tick((float)evt.timeSinceLastFrame * this->timefactor_);
 
       // don't forget to call _fireFrameStarted in ogre to make sure
Index: code/branches/console/src/orxonox/Orxonox.h
===================================================================
--- code/branches/console/src/orxonox/Orxonox.h	(revision 1333)
+++ code/branches/console/src/orxonox/Orxonox.h	(revision 1334)
@@ -105,5 +105,4 @@
       // TODO: make this a config-value by creating a config class for orxonox
       float                 frameSmoothingTime_;
-//      InGameConsole*        orxonoxConsole_;
       HUD*                  orxonoxHUD_;
       bool                  bAbort_;        //!< aborts the render loop if true
Index: code/branches/console/src/orxonox/console/InGameConsole.cc
===================================================================
--- code/branches/console/src/orxonox/console/InGameConsole.cc	(revision 1333)
+++ code/branches/console/src/orxonox/console/InGameConsole.cc	(revision 1334)
@@ -45,5 +45,5 @@
 #include "GraphicsEngine.h"
 
-#define LINES 20
+#define LINES 30
 
 namespace orxonox
@@ -72,5 +72,5 @@
         this->setConfigValues();
 
-        Shell::getInstance().registerListener(this);
+        Shell::getInstance().addOutputLevel(true);
     }
 
@@ -139,7 +139,10 @@
     void InGameConsole::lineAdded()
     {
-        this->linesChanged();
         for (unsigned int i = LINES - 1; i > 1; --i)
+        {
             this->consoleOverlayTextAreas_[i]->setCaption(this->consoleOverlayTextAreas_[i - 1]->getCaption());
+            this->consoleOverlayTextAreas_[i]->setColourTop(this->consoleOverlayTextAreas_[i - 1]->getColourTop());
+            this->consoleOverlayTextAreas_[i]->setColourBottom(this->consoleOverlayTextAreas_[i - 1]->getColourBottom());
+        }
 
         this->onlyLastLineChanged();
@@ -214,5 +217,5 @@
             this->consoleOverlayTextAreas_[i]->setMetricsMode(Ogre::GMM_PIXELS);
             this->consoleOverlayTextAreas_[i]->setFontName("Console");
-            this->consoleOverlayTextAreas_[i]->setCharHeight(20);
+            this->consoleOverlayTextAreas_[i]->setCharHeight(18);
             this->consoleOverlayTextAreas_[i]->setParameter("colour_top", "0.21 0.69 0.21");
             this->consoleOverlayTextAreas_[i]->setLeft(8);
@@ -267,4 +270,5 @@
                 this->consoleOverlay_->hide();
                 this->active_ = false;
+                Shell::getInstance().unregisterListener(this);
             }
             if (top >= 0)
@@ -311,5 +315,5 @@
         {
             this->consoleOverlayTextAreas_[i]->setWidth((int) this->windowW_ * InGameConsole::REL_WIDTH);
-            this->consoleOverlayTextAreas_[i]->setTop((int) this->windowH_ * InGameConsole::REL_HEIGHT - 24 - 16*i);
+            this->consoleOverlayTextAreas_[i]->setTop((int) this->windowH_ * InGameConsole::REL_HEIGHT - 24 - 14*i);
         }
     }
@@ -320,4 +324,5 @@
     void InGameConsole::activate()
     {
+        Shell::getInstance().registerListener(this);
         this->linesChanged();
 
@@ -362,6 +367,53 @@
     void InGameConsole::print(const std::string& text, int index)
     {
+        char level = 0;
+        if (text.size() > 0)
+            level = text[0];
+
+        std::string output = text;
+
+        if (level >= -1 && level <= 5)
+            output.erase(0, 1);
+
         if (LINES > index)
-            this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(text));
+        {
+            if (level == -1)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.90, 0.90, 0.90, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 1.00, 1.00, 1.00));
+            }
+            else if (level == 1)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.95, 0.25, 0.25, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.50, 0.50, 1.00));
+            }
+            else if (level == 2)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.95, 0.50, 0.20, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.70, 0.50, 1.00));
+            }
+            else if (level == 3)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.25, 0.25, 0.75, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.80, 1.00, 1.00));
+            }
+            else if (level == 4)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.65, 0.48, 0.44, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(1.00, 0.90, 0.90, 1.00));
+            }
+            else if (level == 5)
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.40, 0.20, 0.40, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 0.60, 0.80, 1.00));
+            }
+            else
+            {
+                this->consoleOverlayTextAreas_[index]->setColourTop   (ColourValue(0.21, 0.69, 0.21, 1.00));
+                this->consoleOverlayTextAreas_[index]->setColourBottom(ColourValue(0.80, 1.00, 0.80, 1.00));
+            }
+
+            this->consoleOverlayTextAreas_[index]->setCaption(convert2UTF(output));
+        }
     }
 
