Index: code/branches/3DPacman_FS18/data/overlays/PacmanHUD.oxo
===================================================================
--- code/branches/3DPacman_FS18/data/overlays/PacmanHUD.oxo	(revision 11977)
+++ code/branches/3DPacman_FS18/data/overlays/PacmanHUD.oxo	(revision 11978)
@@ -14,10 +14,10 @@
 
     <PacmanHUDinfo
-     position  = "0.4, 0.01"
+     position  = "0.05, 0.05"
      pickpoint = "0.0, 0.0"
      font      = "ShareTechMono"
      textsize  = 0.04
      colour    = "1.0, 1.0, 1.0, 1.0"
-     align     = "right"
+     align     = "left"
 
      showpoints     = true
@@ -25,22 +25,35 @@
 
     <PacmanHUDinfo
-     position  = "1.4, 2.5"
+     position  = "0.45, 0.5"
+     pickpoint = "0.5, 0.5"
+     font      = "ShareTechMono"
+     textsize  = 0.04
+     colour    = "1.0, 1.0, 1.0, 1.0"
+     align     = "middle"
+
+     showgameover = true
+
+    />
+
+    <PacmanHUDinfo
+     position  = "0.05, 0.8"
      pickpoint = "0.0, 0.0"
      font      = "ShareTechMono"
      textsize  = 0.04
      colour    = "1.0, 1.0, 1.0, 1.0"
-     align     = "right"
+     align     = "left"
 
+     showghoststatus   = true
     />
 
     <PacmanHUDinfo
-     position  = "0.4, 0.1"
+     position  = "0.05, 0.9"
      pickpoint = "0.0, 0.0"
      font      = "ShareTechMono"
      textsize  = 0.04
      colour    = "1.0, 1.0, 1.0, 1.0"
-     align     = "right"
+     align     = "left"
 
-     showghoststatus   = true
+     showlive   = true
     />
 
Index: code/branches/3DPacman_FS18/src/modules/pacman/Pacman.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/Pacman.cc	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/Pacman.cc	(revision 11978)
@@ -44,11 +44,8 @@
         RegisterObject(Pacman);
 
-       // firstGame = true;                   //needed for the HUD
-        lives = 0;
+        lives = 3;
         point = 0;
         level = 1;
 
-       // setHUDTemplate("PacmanOrxHUD");
-       // scoreboardTemplate_ = "";
     }
 
@@ -188,4 +185,12 @@
     } 
 
+    bool Pacman::getAfraid(){
+        return afraid;
+    }
+
+    int Pacman::getTimer(){
+        return timer;
+    }
+
     void Pacman::posreset(){
         for(int i = 0; i<4; ++i){
@@ -215,4 +220,8 @@
     int Pacman::getPoints(){
         return point;
+    }
+
+    int Pacman::getLives(){
+        return lives;
     }
 
Index: code/branches/3DPacman_FS18/src/modules/pacman/Pacman.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/Pacman.h	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/Pacman.h	(revision 11978)
@@ -84,4 +84,7 @@
             bool isdead();
             void dead(float dt);
+            bool getAfraid();
+            int getTimer();
+            int getLives();
 
 
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.cc	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.cc	(revision 11978)
@@ -51,4 +51,7 @@
         actuelposition.y = 10;
         this->setPosition(actuelposition);
+        this->rotatePitch(Vector2(0, 0));
+
+        
     }
 }
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.h	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanGelb.h	(revision 11978)
@@ -42,4 +42,5 @@
 #include "graphics/Camera.h"
 
+
 namespace orxonox
 {
@@ -52,5 +53,13 @@
 
             //no rotation
-            //virtual void rotateYaw(const Vector2& value) override{};
+            virtual void rotateYaw(const Vector2& value) override{
+                this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() + value.x);
+
+                Pawn::rotateYaw(value);
+
+                // This function call adds a lift to the ship when it is rotating to make it's movement more "realistic" and enhance the feeling.
+                if (this->getLocalVelocity().z < 0 && std::abs(this->getLocalVelocity().z) < stallSpeed_)
+                this->moveRightLeft(-lift_ / 5.0f * value * sqrt(std::abs(this->getLocalVelocity().y)));
+            };
             virtual void rotatePitch(const Vector2& value) override{};
 
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.cc	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.cc	(revision 11978)
@@ -441,17 +441,20 @@
         if(!dontmove){
             this->setPosition(Vector3(actuelposition.x+20*velocity.x*dt,10,actuelposition.z+20*velocity.z*dt));
-            
-
-            if(abs(velocity.x) == 2){
-                this->setOrientation(Quaternion(Radian(0), Vector3(0, 1, 0)));
-            }
-            else if(velocity.z == 2){
-                this->setOrientation(Quaternion(Radian(0), Vector3(0, 1, 0)));
-            }
-            else if(velocity.z == -2){
-                this->setOrientation(Quaternion(Radian(180), Vector3(0, 1, 0)));
-            }
-            else{}
-
+        if((abs(abs(velocity.x)-2)<0.1) && (abs(velocity.z-0)<0.1))
+            if(velocity.x<0){
+                 this->setOrientation(Quaternion(Radian(-1.57), Vector3(0, 1, 0)));  
+            }
+            else{
+                 this->setOrientation(Quaternion(Radian(1.57), Vector3(0, 1, 0)));  
+            }
+        if((abs(abs(velocity.z)-2)<0.1) && (abs(velocity.x-0)<0.1))
+            if(velocity.z<0){
+                 this->setOrientation(Quaternion(Radian(3.14), Vector3(0, 1, 0)));  
+            }
+            else{
+                 this->setOrientation(Quaternion(Radian(0), Vector3(0, 1, 0)));  
+            }
+            this->getOrientation();
+                     
      }
     }
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.h	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanGhost.h	(revision 11978)
@@ -68,4 +68,5 @@
             int target_z = 0;
             Vector3 velocity;
+            Vector3 oldvelocity = Vector3(2,0,0);
 
         private:
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.cc	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.cc	(revision 11978)
@@ -58,4 +58,6 @@
         XMLPortParam(PacmanHUDinfo, "showghoststatus",   setGhoststatus,   getGhoststatus,   xmlelement, mode).defaultValues(false);
         XMLPortParam(PacmanHUDinfo, "messageID",     setMessageID,     getMessageID,     xmlelement, mode).defaultValues(0);
+        XMLPortParam(PacmanHUDinfo, "showgameover",   setGameover,   getGameover,   xmlelement, mode).defaultValues(false);
+        XMLPortParam(PacmanHUDinfo, "showlive",   setlive,   getlive,   xmlelement, mode).defaultValues(false);
        
     
@@ -69,24 +71,39 @@
         {
             bool death = this->PacmanGame->isdead();
-            if(death){
-                bShowPoints_ = false;
-                bShowGhoststatus_ = false;
+            if(death && showgameover){
                 const std::string& deathmessage = "Game Over";
-                    setTextSize(0.4);
+                    setTextSize(0.08);
                     this->setCaption(deathmessage);
             }
             
-            if(this->bShowPoints_ && !death) {
+            if(this->bShowPoints_) {
                     const std::string& points = "Collected points: "+multi_cast<std::string>(this->PacmanGame->getPoints()) + " of " + multi_cast<std::string>(this->PacmanGame->totallevelpoint);
-                    setTextSize(0.04);
+                    setTextSize(0.03);
                     this->setCaption(points);
             }
   
-            if(this->bShowGhoststatus_ && !death){
-                    const std::string& ghoststatus = "Do not get caught!";
-                    if(this->PacmanGame->afraid) const std::string& ghoststatus = "Catch the ghosts!";
-                    setTextSize(0.04);
-                    this->setCaption(ghoststatus);
+            if(this->bShowGhoststatus_){
+                    if(this->PacmanGame->getAfraid()) {
+                       const std::string& ghoststatus = "Catch the ghosts! \n " + multi_cast<std::string>(this->PacmanGame->getTimer()) + " seconds left";
+                       setTextSize(0.03);
+                       this->setCaption(ghoststatus);
+                    }
+                    else{
+                       const std::string& ghoststatus = "Do not get caught!"; 
+                       setTextSize(0.03);
+                       this->setCaption(ghoststatus);
+                    }
             }
+
+            if(this->showlive){
+                const std::string& live = "Remaining lives: "+multi_cast<std::string>(this->PacmanGame->getLives());
+                setTextSize(0.03);
+                this->setCaption(live);
+            }
+
+            if(death && !(this->showgameover)){
+                setTextSize(0.0);
+            }
+
         }
     }    
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.h
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.h	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanHUDinfo.h	(revision 11978)
@@ -69,4 +69,17 @@
                 { return this->bShowGhoststatus_; }
 
+            inline void setGameover(bool value){
+                this->showgameover = value;
+            }
+            inline int getGameover() const
+                { return this->showgameover; }
+
+            inline void setlive(bool value){
+                this->showlive = value;
+            }
+            inline int getlive() const
+                { return this->showlive; }
+
+
         private:
             Pacman* PacmanGame;
@@ -74,4 +87,6 @@
             bool bShowMessage_;
             bool bShowGhoststatus_;
+            bool showgameover;
+            bool showlive;
             int messageID;
     };
Index: code/branches/3DPacman_FS18/src/modules/pacman/PacmanPointAfraid.cc
===================================================================
--- code/branches/3DPacman_FS18/src/modules/pacman/PacmanPointAfraid.cc	(revision 11977)
+++ code/branches/3DPacman_FS18/src/modules/pacman/PacmanPointAfraid.cc	(revision 11978)
@@ -75,5 +75,5 @@
     { 
         resetposition = this->getPosition();
-      if((abs(resetposition.x - playerpos.x)<5) && (abs(resetposition.z - playerpos.z)<5)){
+      if((abs(resetposition.x - playerpos.x)<5) && (abs(resetposition.y - playerpos.y)<5) && (abs(resetposition.z - playerpos.z)<5)){
         this->setPosition(Vector3(resetposition.x, -50, resetposition.z));
         return true;
