Index: code/branches/CampaignMap_HS17/data/levels/NC_StoryModeLevel.oxw
===================================================================
--- code/branches/CampaignMap_HS17/data/levels/NC_StoryModeLevel.oxw	(revision 11588)
+++ code/branches/CampaignMap_HS17/data/levels/NC_StoryModeLevel.oxw	(revision 11605)
@@ -10,7 +10,7 @@
   include("templates/lodInformation.oxt")
   include("templates/StoryMode.oxt")
-  include("HUDTemplates3.oxo")
+  include("StoryModeHUD2.oxo")
   include("templates/spaceshipAssff.oxt")
-  include("templates/spaceshipEscort.oxt")
+  include("templates/StoryModeEscort.oxt")
   include("templates/endurancetest_template.oxt")
 ?>
@@ -28,5 +28,5 @@
   >
 
-  <SpawnPoint position="000.000, 000.000, 1000.000" spawnclass=SpaceShip orientation="0, 0, 0, -1" pawndesign= spaceshipescort />
+  <SpawnPoint position="000.000, 000.000, 1000.000" spawnclass=SpaceShip orientation="0, 0, 0, 1" pawndesign= StoryModeEscort />
    
 
Index: code/branches/CampaignMap_HS17/data/levels/templates/StoryMode.oxt
===================================================================
--- code/branches/CampaignMap_HS17/data/levels/templates/StoryMode.oxt	(revision 11588)
+++ code/branches/CampaignMap_HS17/data/levels/templates/StoryMode.oxt	(revision 11605)
@@ -1,7 +1,6 @@
 <Template name=StoryMode>
   <SpaceShip
-   hudtemplate            = StoryModeHUD2
+   hudtemplate            = StoryModeMap 
    camerapositiontemplate = spaceshipghostcameras
-   
   >
    
Index: code/branches/CampaignMap_HS17/data/levels/templates/StoryModeEscort.oxt
===================================================================
--- code/branches/CampaignMap_HS17/data/levels/templates/StoryModeEscort.oxt	(revision 11605)
+++ code/branches/CampaignMap_HS17/data/levels/templates/StoryModeEscort.oxt	(revision 11605)
@@ -0,0 +1,128 @@
+<Template name=StoryModeEscort>
+  <SpaceShip
+   hudtemplate            = StoryModeHUD
+   camerapositiontemplate = spaceshipghostcameras
+   spawnparticlesource    = "Orxonox/fairytwirl"
+   spawnparticleduration  = 3
+   explosionchunks        = 10
+
+   health            = 80
+   maxhealth         = 200
+   initialhealth     = 80
+
+   shieldhealth        = 35
+   initialshieldhealth = 35
+   maxshieldhealth     = 60
+   shieldabsorption    = 0.9
+   shieldrechargerate  = 1
+   shieldrechargewaittime = 1
+
+   primaryThrust     = 150
+   auxilaryThrust    = 30
+   rotationThrust    = 50
+
+   lift = 1;
+   stallSpeed = 220;
+
+   boostPower            = 20
+   boostPowerRate        = 1
+   boostRate             = 5
+   boostCooldownDuration = 10
+
+   shakeFrequency = 15
+   shakeAmplitude = 6
+
+   collisionType     = "dynamic"
+   mass              = 80
+   linearDamping     = 0.7
+   angularDamping    = 0.9999999
+  >
+    <engines>
+      <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipescortengine />
+      <MultiStateEngine position="-7.6, 0, 0" template=spaceshipescortengine />
+    </engines>
+    <attached>
+      <Model position="0,0,0" yaw=90 pitch=0 roll=0 scale=4 mesh="escortShip.mesh" />
+      <Model position="0,0,0" yaw=180 pitch=90 roll=0 scale=4 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+    </attached>
+    <collisionShapes>
+      <BoxCollisionShape position="0    ,0 ,  3" halfExtents="10,   4,8" />
+      <BoxCollisionShape position="12.6 ,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="-12.6,-2,  3" halfExtents="2.8,2.8,11"/>
+      <BoxCollisionShape position="0,     0,-12" halfExtents="4  , 4 ,7" />
+    </collisionShapes>
+    <explosion>
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_flash2" effect2="orxonox/explosion_flame2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_shockwave2" effect2="orxonox/explosion_sparks2" />
+      <ExplosionPart minspeed=0 maxspeed=0 effect1="orxonox/explosion_streak2" effect2="orxonox/explosion_afterglow" />
+
+      <ExplosionPart mesh="explosionparts/escort_part_1.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_2.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_3.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_4.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_5.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+      <ExplosionPart mesh="explosionparts/escort_part_6.mesh" effect1="Orxonox/fire4" effect2="Orxonox/smoke6" />
+    </explosion>
+<?lua
+  include("../includes/weaponSettingsEscort.oxi")
+?>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipescortcameras defaults=0>
+  <SpaceShip>
+    <camerapositions>
+      <CameraPosition position="0,0, 1000" drag=true mouselook=true />
+      <CameraPosition position="0,20, 90" drag=true mouselook=true />
+      <CameraPosition position="0,30,120" drag=true mouselook=true />
+    </camerapositions>
+  </SpaceShip>
+</Template>
+
+<Template name=spaceshipescortengine baseclass=MultiStateEngine>
+  <MultiStateEngine
+   boostfactor    = 2.2
+
+   speedfront     = 200
+   speedback      =  70
+   speedleftright =  70
+   speedupdown    =  70
+
+   defEngineSndNormal = "sounds/Engine_low.ogg"
+   defEngineSndBoost = "sounds/Engine_high.ogg"
+
+   accelerationfront     = 700
+   accelerationbrake     = 700
+   accelerationback      =  125
+   accelerationleftright =  125
+   accelerationupdown    =  125
+  >
+    <EffectContainer condition="idle">
+      <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=150 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 0.5, 0.65, 1.0" width=15 length=15 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=2 turnofftime=1 material="Flares/ThrusterFlare1" />
+    </EffectContainer>
+    <EffectContainer condition="not idle">
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+      <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+    </EffectContainer>
+    <EffectContainer condition="normal or brake">
+
+    </EffectContainer>
+    <EffectContainer condition="normal or boost">
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=5 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, -2, 14" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=1 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+    </EffectContainer>
+
+    <EffectContainer condition="boost">
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+      <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+    </EffectContainer>
+
+  </MultiStateEngine>
+</Template>
Index: code/branches/CampaignMap_HS17/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/CampaignMap_HS17/data/overlays/HUDTemplates3.oxo	(revision 11588)
+++ code/branches/CampaignMap_HS17/data/overlays/HUDTemplates3.oxo	(revision 11605)
@@ -47,16 +47,4 @@
 <Template name="spaceshiphud">
   <OverlayGroup name = "spaceshiphud" scale = "1, 1">
-    <Map />
-
-
-
-    <StoryModeHUD
-     name           = "StoryMode"
-     correctaspect  = false
-     font           = "Monofur"
-     textSize       = 0.01
-     align          = "center"
-    />
-
 
 
Index: code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD.oxo
===================================================================
--- code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD.oxo	(revision 11588)
+++ code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD.oxo	(revision 11605)
@@ -2,6 +2,4 @@
 <Template name="StoryModeMap">
   <OverlayGroup name = "spaceshiphud" scale = "1, 1">
-    <Map />
-
 
      <GUIOverlay
Index: code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD2.oxo
===================================================================
--- code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD2.oxo	(revision 11588)
+++ code/branches/CampaignMap_HS17/data/overlays/StoryModeHUD2.oxo	(revision 11605)
@@ -1,12 +1,11 @@
+<Template name="StoryModeHUD">
+  <OverlayGroup name = "StoryModeHUD" scale = "1, 1">\
 
-<Template name="StoryModeHUD2">
-  <OverlayGroup name = "spaceshiphud" scale = "1, 1">
-
-    <!-- This is the storymode HUD we implemented, to give names to planet objects, rather than using the HUDnavigation-->
     <StoryModeHUD
      name           = "StoryMode"
-     correctaspect  = true
-     font           = "Arial"
-     textSize       = 0.01f
+     correctaspect  = false
+     font           = "VeraMono"
+     textSize       = 0.05
+     align          = "center"
     />
 
Index: code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.cc
===================================================================
--- code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.cc	(revision 11588)
+++ code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.cc	(revision 11605)
@@ -65,5 +65,4 @@
     {
         RegisterObject(StoryModeHUD);
-        this->initialize();
     }
 
@@ -87,4 +86,5 @@
 
     void StoryModeHUD::initialize(){
+        firstTick = false;
         // Scales used for dimensions and text size
         float xScale = this->getActualSize().x;
@@ -104,6 +104,6 @@
             //PROBLEM: function doesn't get called automatically by the xml macro,
             //which is why we need to call it manually here. works with storymodeplanet.h...
-            this->setFont("Monofur");
-            this->setTextSize(0.05f);
+            //this->setFont("Monofur");
+            //this->setTextSize(0.05f);
 
             //font name of the text needs to be set here, not in the xml setter function
@@ -164,4 +164,7 @@
         SUPER(StoryModeHUD, tick, dt);
 
+        if(firstTick)
+            this->initialize();
+
         // cam is the pointer which represents your camera
         Camera* cam = CameraManager::getInstance().getActiveCamera();
Index: code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.h
===================================================================
--- code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.h	(revision 11588)
+++ code/branches/CampaignMap_HS17/src/modules/overlays/hud/StoryModeHUD.h	(revision 11605)
@@ -62,4 +62,5 @@
             std::string fontName_;
             float textSize_;
+            bool firstTick = true;
    
     };
Index: code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.cc
===================================================================
--- code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.cc	(revision 11605)
+++ code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.cc	(revision 11605)
@@ -0,0 +1,159 @@
+/*
+ *   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:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "StoryModeController.h"
+
+#include "core/CoreIncludes.h"
+#include "core/command/ConsoleCommandIncludes.h"
+#include "worldentities/ControllableEntity.h"
+#include "worldentities/pawns/Pawn.h"
+#include "gametypes/Gametype.h"
+#include "infos/PlayerInfo.h"
+#include "Radar.h"
+#include "Scene.h"
+
+namespace orxonox
+{
+    extern const std::string __CC_fire_name = "fire";
+    extern const std::string __CC_suicide_name = "suicide";
+
+    SetConsoleCommand("StoryModeController", "moveFrontBack",          &StoryModeController::moveFrontBack ).addShortcut().setAsInputCommand();
+    SetConsoleCommand("StoryModeController", "moveRightLeft",          &StoryModeController::moveRightLeft ).addShortcut().setAsInputCommand();
+    SetConsoleCommand("StoryModeController", "moveUpDown",             &StoryModeController::moveUpDown    ).addShortcut().setAsInputCommand();
+    SetConsoleCommand("StoryModeController", "myposition",             &StoryModeController::myposition    ).addShortcut();
+
+    RegisterUnloadableClass(StoryModeController);
+
+    StoryModeController* StoryModeController::localController_s = nullptr;
+
+    StoryModeController::StoryModeController(Context* context) : FormationController(context)
+    {
+        RegisterObject(StoryModeController);
+
+        this->controlPaused_ = false;
+        StoryModeController::localController_s = this;
+    }
+
+    StoryModeController::~StoryModeController()
+    {
+        if (StoryModeController::localController_s)
+        {
+            StoryModeController::localController_s->removeFromFormation();
+        }
+        StoryModeController::localController_s = nullptr;
+    }
+
+    void StoryModeController::tick(float dt)
+    {
+        if (GameMode::playsSound() && StoryModeController::localController_s && StoryModeController::localController_s->controllableEntity_)
+        {
+            Camera* camera = StoryModeController::localController_s->controllableEntity_->getCamera();
+            if (!camera)
+                orxout(internal_warning) << "StoryModeController, Warning: Using a ControllableEntity without Camera" << endl;
+        }
+
+        // commandslaves when Master of a formation
+        if (StoryModeController::localController_s && StoryModeController::localController_s->state_==MASTER && FormationController::slaves_.size() > 0)
+        {
+            if (StoryModeController::localController_s->formationMode_ != ATTACK)
+                StoryModeController::localController_s->commandSlaves();
+        }
+    }
+
+    void StoryModeController::moveFrontBack(const Vector2& value)
+    {
+        if (StoryModeController::localController_s)
+            StoryModeController::localController_s->frontback(value);
+    }
+
+
+    void StoryModeController::moveRightLeft(const Vector2& value)
+    {
+        if (StoryModeController::localController_s && StoryModeController::localController_s->controllableEntity_)
+            StoryModeController::localController_s->controllableEntity_->moveRightLeft(value);
+    }
+
+    void StoryModeController::moveUpDown(const Vector2& value)
+    {
+        if (StoryModeController::localController_s && StoryModeController::localController_s->controllableEntity_)
+            StoryModeController::localController_s->controllableEntity_->moveUpDown(value);
+    }
+
+    void StoryModeController::fire(unsigned int firemode)
+    {
+        if (StoryModeController::localController_s)
+            StoryModeController::localController_s->doFire(firemode);
+    }
+
+    void StoryModeController::doFire(unsigned int firemode)
+    {
+        if (StoryModeController::localController_s && StoryModeController::localController_s->controllableEntity_)
+        {
+            StoryModeController::localController_s->controllableEntity_->fire(firemode);
+            //if human fires, set slaves free. See FormationController::forceFreeSlaves()
+            if (StoryModeController::localController_s->state_==MASTER && StoryModeController::localController_s->formationMode_ == NORMAL)
+            {
+                StoryModeController::localController_s->forceFreeSlaves();
+            }
+        }
+    }
+
+
+    void StoryModeController::myposition()
+    {
+        if (StoryModeController::localController_s && StoryModeController::localController_s->controllableEntity_)
+        {
+            const Vector3& position = StoryModeController::localController_s->controllableEntity_->getPosition();
+            const Quaternion& orientation = StoryModeController::localController_s->controllableEntity_->getOrientation();
+
+            orxout(message) << "position=\"" << position.x << ", " << position.y << ", " << position.z << "\" "
+                            << "orientation=\"" << orientation.w << ", " << orientation.x << ", " << orientation.y << ", " << orientation.z << "\"" << endl;
+        }
+    }
+
+
+    Pawn* StoryModeController::getLocalControllerEntityAsPawn()
+    {
+        if (StoryModeController::localController_s)
+            return orxonox_cast<Pawn*>(StoryModeController::localController_s->getControllableEntity());
+        else
+            return nullptr;
+    }
+
+    void StoryModeController::pauseControl()
+    {
+        if (StoryModeController::localController_s)
+            StoryModeController::localController_s->doPauseControl();
+    }
+
+     void NewStoryModeController::doPauseControl()
+    {
+        this->controlPaused_ = true;
+        this->hideOverlays();
+    }
+}
Index: code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.h
===================================================================
--- code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.h	(revision 11605)
+++ code/branches/CampaignMap_HS17/src/orxonox/controllers/StoryModeController.h	(revision 11605)
@@ -0,0 +1,76 @@
+/*
+ *   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:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _HumanController_H__
+#define _HumanController_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "tools/Timer.h"
+#include "tools/interfaces/Tickable.h"
+#include "FormationController.h"
+
+// tolua_begin
+namespace orxonox
+{
+    class _OrxonoxExport HumanController
+// tolua_end
+        : public FormationController, public Tickable
+    { // tolua_export
+        public:
+            HumanController(Context* context);
+            virtual ~HumanController();
+
+            virtual void tick(float dt) override;
+
+            static void moveFrontBack(const Vector2& value);
+            static void moveRightLeft(const Vector2& value);
+            static void moveUpDown(const Vector2& value);
+
+            static void fire(unsigned int firemode);
+            virtual void doFire(unsigned int firemode);
+
+            static void myposition();
+            
+            static void pauseControl(); // tolua_export
+            virtual void doPauseControl() {};
+
+            static inline HumanController* getLocalControllerSingleton()
+                { return HumanController::localController_s; }
+            static Pawn* getLocalControllerEntityAsPawn();
+            //friend class, for mouselook
+            friend class Map;
+            static HumanController* localController_s;
+
+        protected:
+            bool controlPaused_;
+
+    }; // tolua_export
+} // tolua_export
+
+#endif /* _HumanController_H__ */
