Index: code/branches/HUD_HS16/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/HUD_HS16/src/orxonox/CMakeLists.txt	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/CMakeLists.txt	(revision 11502)
@@ -28,4 +28,5 @@
   LevelInfo.cc
   LevelManager.cc
+  Highscore.cc
   Main.cc
   MoodManager.cc
@@ -61,4 +62,5 @@
     LevelInfo.h
     LevelManager.h
+    Highscore.h
     MoodManager.h
     controllers/HumanController.h
Index: code/branches/HUD_HS16/src/orxonox/Highscore.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/Highscore.cc	(revision 11502)
+++ code/branches/HUD_HS16/src/orxonox/Highscore.cc	(revision 11502)
@@ -0,0 +1,58 @@
+#include "Highscore.h"
+
+#include <vector>
+#include "core/CoreIncludes.h"
+#include "core/config/ConfigValueIncludes.h"
+#include "core/singleton/ScopedSingletonIncludes.h"
+
+namespace orxonox
+{
+
+    ManageScopedSingleton(Highscore, ScopeID::ROOT, false);
+	RegisterClassNoArgs(Highscore);
+
+	Highscore::Highscore()
+    {
+        RegisterObject(Highscore);
+        this->setConfigValues();
+    }
+    /**
+     * @brief set the config values in the orxonox.ini file
+     */
+    void Highscore::setConfigValues()
+    {
+        SetConfigValue(highscores_, std::vector<std::string>()).description("Highscores saved as vector");
+        SetConfigValue(playerName_, "Player").description("Name of the player");
+    }
+    /**
+     * @brief Returns highest score of given game, if exists.
+     * Else returns -1.
+     */
+    int Highscore::getHighestScoreOfGame(std::string game){
+        std::string delimiter = "./."; //score save as "Playername./.game./.score"
+        int best = -1;
+        //check for the highest Score of given game
+        for (std::string score : this->highscores_)
+        {
+            //filter the game string from given highscore
+            score.erase(0, score.find(delimiter) + delimiter.length());
+            if(game.compare(score.substr(0,score.find(delimiter))) == 0){
+                score.erase(0, score.find(delimiter) + delimiter.length());
+                int possibleBest = std::stoi(score);
+                if(possibleBest > best) best = possibleBest;
+            }
+
+
+        }
+        
+        return best;
+        
+    }
+    /**
+     * @brief stores a new highscore in the orxonox.ini file
+     */
+    void Highscore::storeHighscore(std::string level, int points){
+        ModifyConfigValue(highscores_, add, playerName_+"./."+level+"./."+std::to_string(points));
+    }
+    
+}
Index: code/branches/HUD_HS16/src/orxonox/Highscore.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/Highscore.h	(revision 11502)
+++ code/branches/HUD_HS16/src/orxonox/Highscore.h	(revision 11502)
@@ -0,0 +1,39 @@
+#include <string>
+#include "core/config/Configurable.h"
+#include "OrxonoxPrereqs.h"
+#include "util/Singleton.h"
+// tolua_begin
+namespace orxonox
+{
+class _OrxonoxExport Highscore 
+// tolua_end
+ : public Singleton<Highscore>, public Configurable
+{ //tolua_export
+    friend class Singleton<Highscore>;
+    public:
+        Highscore();              // Constructor
+        void setConfigValues(); // Inherited function
+        void storeHighscore(std::string level, int points);
+
+        int getHighestScoreOfGame(std::string game);
+        // tolua_begin
+        inline unsigned int getNumberOfHighscores()
+                { return this->highscores_.size(); }
+            inline const std::string& getHighscore(unsigned int index)
+                { return this->highscores_[index]; }
+
+        static Highscore& getInstance()
+                { return Singleton<Highscore>::getInstance(); }
+
+        // tolua_end 
+
+
+    private:
+        std::vector<std::string> highscores_;
+        float version_;
+        std::string playerName_;
+        static Highscore* singletonPtr_s;
+}; //tolua_export
+
+
+} //tolua_export
Index: code/branches/HUD_HS16/src/orxonox/LevelInfo.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/LevelInfo.cc	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/LevelInfo.cc	(revision 11502)
@@ -151,4 +151,14 @@
     }
 
+    bool LevelInfoItem::addHighscore(const std::string& name, const int score)
+    {
+        std::stringstream stream;
+        stream << name << "/:/" << score;
+        bool success = this->highscores_.insert(stream.str()).second;
+        if(success)
+            this->highscoresUpdated();
+        return success;
+    }
+
     /**
     @brief
@@ -191,4 +201,19 @@
     }
 
+    void LevelInfoItem::highscoresUpdated(void)
+    {
+        std::stringstream stream;
+        std::set<std::string>::iterator temp;
+        for(std::set<std::string>::iterator it = this->highscores_.begin(); it != this->highscores_.end(); )
+        {
+            temp = it;
+            if(++it == this->highscores_.end()) // If this is the last tag we don't add a comma.
+                stream << *temp;
+            else
+                stream << *temp << ", ";
+        }
+
+        this->highscoresString_ = std::string(stream.str());
+    }
     /**
     @brief
Index: code/branches/HUD_HS16/src/orxonox/LevelInfo.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/LevelInfo.h	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/LevelInfo.h	(revision 11502)
@@ -118,4 +118,8 @@
             inline bool hasTag(const std::string& tag) const { return this->tags_.find(tag) != this->tags_.end(); } // tolua_export
 
+            bool addHighscore(const std::string& name,const int score);
+
+            inline const std::string& getHighscores(void) const { return this->highscoresString_; } // tolua_export
+
             void setStartingShips(const std::string& ships); //!< Set the starting ship models of the level
             bool addStartingShip(const std::string& ship, bool update = true); //!< Add a model to shipselection
@@ -154,4 +158,5 @@
             void startingshipsUpdated(void); //!< Updates the comma-seperated string of all possible starting ships.
             void tagsUpdated(void); //!< Updates the comma-seperated string of all tags, if the set of tags has changed.
+            void highscoresUpdated(void);
             static void initializeTags(void); //!< Initialize the set of allowed tags.
             /**
@@ -170,4 +175,8 @@
             std::string screenshot_; //!< The screenshot of the Level.
             std::set<std::string> tags_; //!< The set of tags the Level is tagged with.
+
+            std::set<std::string> highscores_; 
+            std::string highscoresString_;
+
             std::string tagsString_; //!< The comma-seperated string of all the tags the Level is tagged with.
             std::set<std::string> startingShips_; //!< The set of starting ship models the Level allows.
@@ -244,4 +253,7 @@
             inline const std::string& getTags(void) const
                 { return this->LevelInfoItem::getTags(); }
+
+            inline const std::string& getHighscores(void) const
+                { return this->LevelInfoItem::getHighscores(); }
             /**
             @brief Set the starting ship models of the level
Index: code/branches/HUD_HS16/src/orxonox/controllers/HumanController.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/controllers/HumanController.h	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/controllers/HumanController.h	(revision 11502)
@@ -92,7 +92,7 @@
             //friend class, for mouselook
             friend class Map;
+            static HumanController* localController_s;
 
         protected:
-            static HumanController* localController_s;
             bool controlPaused_;
 
Index: code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.cc	(revision 11502)
@@ -50,5 +50,4 @@
 #include "PlayerManager.h"
 #include "GSRoot.h"
-// #include "overlays/hud/HUDPickupSystem.h"
 
 namespace orxonox
@@ -127,11 +126,4 @@
             InputManager::getInstance().leaveState("game");
 
-        // HUDPickupSystem* pickupSystem;
-
-        // for (HUDPickupSystem* hud : ObjectList<HUDPickupSystem>())
-        //     pickupSystem = hud;
-
-        // pickupSystem->repaint=false;
-
         // disconnect all HumanPlayers
         PlayerManager::getInstance().disconnectAllClients();
Index: code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/gamestates/GSLevel.h	(revision 11502)
@@ -31,5 +31,4 @@
 
 #include "OrxonoxPrereqs.h"
-// #include "overlays/OverlaysPrereqs.h"
 
 #include <string>
Index: code/branches/HUD_HS16/src/orxonox/gametypes/CMakeLists.txt
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gametypes/CMakeLists.txt	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/gametypes/CMakeLists.txt	(revision 11502)
@@ -11,3 +11,4 @@
   TeamGametype.cc
   Mission.cc
+  StoryMode.cc
 )
Index: code/branches/HUD_HS16/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gametypes/Gametype.cc	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/gametypes/Gametype.cc	(revision 11502)
@@ -96,5 +96,5 @@
         }
     }
-
+    
     /**
      * @brief Initializes sub-objects of the Gametype. This must be called after the constructor.
Index: code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.cc	(revision 11502)
+++ code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.cc	(revision 11502)
@@ -0,0 +1,100 @@
+/*
+ *   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:
+ *      Marvin Haeberle & Julian Huwyler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "StoryMode.h"
+
+#include "items/Engine.h"
+#include "controllers/ArtificialController.h"
+
+#include "core/CoreIncludes.h"
+#include "core/command/ConsoleCommandIncludes.h"
+#include "infos/PlayerInfo.h"
+#include "network/Host.h"
+#include "worldentities/pawns/Pawn.h"
+#include "LevelManager.h"
+
+namespace orxonox
+{
+
+    SetConsoleCommand("StoryMode", "exit", &StoryMode::exit);
+    RegisterUnloadableClass(StoryMode);
+    
+    StoryMode::StoryMode(Context* context) : Gametype(context)
+    {
+        RegisterObject(StoryMode);
+
+        this->gtinfo_ = new GametypeInfo(context);
+        this->bAutoStart_ = true;
+        this->bForceSpawn_ = true;
+    }
+
+    
+  /* 
+    void StoryMode::start()
+    {
+        Gametype::start();
+
+        this->gtinfo_->sendAnnounceMessage("Marvin isch Chef");
+    }
+*/
+    void StoryMode::exit()
+    {
+        orxout() << "s funktioniert"<< endl;
+        for (StoryMode* mission : ObjectList<StoryMode>())
+        { //TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would end ALL missions!
+            mission->end();
+        }
+        //Gametype::end();
+    }
+/*
+    void Mission::setTeams()
+    { //Set pawn-colours
+        for (Pawn* pawn : ObjectList<Pawn>())
+        {
+            if (!pawn)
+                continue;
+            this->setDefaultObjectColour(pawn);
+        }
+    }
+    void Mission::endMission(bool accomplished)
+    {
+        for (Mission* mission : ObjectList<Mission>())
+        { //TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would end ALL missions!
+            mission->setMissionAccomplished(accomplished);
+            mission->end();
+        }
+    }
+
+    void Mission::setLivesWrapper(unsigned int amount)
+    {
+        for (Mission* mission : ObjectList<Mission>())
+        { //TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would affect ALL missions!
+            mission->setLives(amount);
+        }
+    }*/
+}
Index: code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.h	(revision 11502)
+++ code/branches/HUD_HS16/src/orxonox/gametypes/StoryMode.h	(revision 11502)
@@ -0,0 +1,49 @@
+/*
+ *   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:
+ *      Julian Huwyler & Marvin Haeberle
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _Mission_H__
+#define _Mission_H__
+
+#include "OrxonoxPrereqs.h"
+#include "Gametype.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport StoryMode : public Gametype
+    {
+        public:
+            StoryMode(Context* context);
+            virtual ~StoryMode() {}
+            static void exit();
+
+            
+    };
+}
+
+#endif /* _Mission_H__ */
+
Index: code/branches/HUD_HS16/src/orxonox/infos/Bot.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/infos/Bot.cc	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/infos/Bot.cc	(revision 11502)
@@ -68,28 +68,17 @@
         static const std::string names[] =
         {
-            "Dr. Julius No",
-            "Rosa Klebb",
-            "Auric Goldfinger",
-            "Emilio Largo",
-            "Ernst Stavro Blofeld",
-            "Dr. Kananga",
-            "Francisco Scaramanga",
-            "Karl Stromberg",
-            "Sir Hugo Drax",
-            "Aris Kristatos",
+            "Berkay Berabi",
+            "Louis  Meile"
+            "Muten Roshi",
+            "Abradolf Lincler",
+            "Lionel Messi",
             "Kamal Khan",
-            "General Orlov",
-            "Max Zorin",
-            "Brad Whitaker",
-            "General Georgi Koskov",
-            "Franz Sanchez",
-            "Alec Trevelyan",
-            "Elliot Carver",
-            "Elektra King",
-            "Viktor Zokas",
-            "Gustav Graves",
-            "Le Chiffre",
-            "Mr. White",
-            "Dominic Greene"
+            "Karl the Llama",
+            "Thomas the Tankengine",
+            "Rick",
+            "Morty",
+            "Charlie the Unicorn",
+            "Kung Fury",
+            "Postman Pat"
         };
         static std::vector<std::string> defaultnames(names, names + sizeof(names) / sizeof(std::string));
Index: code/branches/HUD_HS16/src/orxonox/infos/GametypeInfo.h
===================================================================
--- code/branches/HUD_HS16/src/orxonox/infos/GametypeInfo.h	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/infos/GametypeInfo.h	(revision 11502)
@@ -83,4 +83,5 @@
             inline bool isStartCountdownRunning() const
                 { return this->bStartCountdownRunning_; }
+            
             void changedStartCountdownRunning(void); // Is called when the start countdown has been either started or stopped.
 
@@ -132,9 +133,10 @@
             void dispatchStaticMessage(const std::string& message,const ColourValue& colour) const;
             void dispatchFadingMessage(const std::string& message) const;
+            void setStartCountdown(float countdown); // Set the start countdown to the input value.
+
 
         protected:
             void start(void); // Inform the GametypeInfo that the game has started.
             void end(void); // Inform the GametypeInfo that the game has ended.
-            void setStartCountdown(float countdown); // Set the start countdown to the input value.
             void countdownStartCountdown(float countDown); // Count down the start countdown by the specified value.
             void countDown(); // Count down the start countdown counter.
Index: code/branches/HUD_HS16/src/orxonox/sound/WorldAmbientSound.cc
===================================================================
--- code/branches/HUD_HS16/src/orxonox/sound/WorldAmbientSound.cc	(revision 11499)
+++ code/branches/HUD_HS16/src/orxonox/sound/WorldAmbientSound.cc	(revision 11502)
@@ -58,4 +58,6 @@
         soundList_.emplace_back("Ganymede.ogg");
         soundList_.emplace_back("luke_grey_-_hypermode.ogg");
+        soundList_.emplace_back("racetheme.ogg");
+
 
     }
