Index: code/branches/SuperOrxoBros_FS17/data/overlays/SOBHUD.oxo
===================================================================
--- code/branches/SuperOrxoBros_FS17/data/overlays/SOBHUD.oxo	(revision 11417)
+++ code/branches/SuperOrxoBros_FS17/data/overlays/SOBHUD.oxo	(revision 11418)
@@ -80,5 +80,5 @@
 
     <SOBHUDInfo
-     position = "0.5,0.5"
+     position = "0.55,0.5"
      pickpoint = "0.5, 0.5"
      textposition  = "0.5, 0.5"
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc	(revision 11417)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc	(revision 11418)
@@ -67,5 +67,5 @@
         points_=0;
         timeLeft_=400.0;
-        
+        done_ = true;
         lvl_ = 1;
 
@@ -144,4 +144,5 @@
             player->startControl(figure_); //Give the control of the instance player to the real person
             players_[player].state_ = PlayerState::Alive;
+            done_ = false;
         }
     }
@@ -166,5 +167,5 @@
         if (this->figure_ != nullptr && figure_->lvlEnded_) {
             std::stringstream a;
-            a << "Nice! " << getPoints() << " Points. Press <Space> to restart";
+            a << "Nice! " << getPoints() << " Points in " << (400-getTimeLeft())/2 <<"s.\n\nPress <Space> to restart";
             info_ =a.str();
 
@@ -179,5 +180,6 @@
             this->figure_->dead_ = true;
         //The time on the HUD
-        timeLeft_-=dt*2.5;
+        if (!done_)
+            timeLeft_-=dt*2.5;
     }
 
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h	(revision 11417)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h	(revision 11418)
@@ -84,6 +84,8 @@
             std::string getInfoText() {
                 return info_;
+            }    
+            void setDone(bool tr) {
+                done_ = tr;
             }
-            
 
 
@@ -100,5 +102,4 @@
             }  
 
-
             WeakPtr<SOBCenterpoint> center_;
 
@@ -112,5 +113,5 @@
             int coins_;
             float timeLeft_;
-
+            bool done_;
             int lvl_;
             std::string info_;
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc	(revision 11417)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc	(revision 11418)
@@ -45,4 +45,5 @@
 #include "SOBFlagstone.h"
 #include "SOBCastlestone.h"
+#include <BulletCollision/NarrowPhaseCollision/btManifoldPoint.h>
 
 namespace orxonox
@@ -63,5 +64,5 @@
         moveDownPressed_ = false;
         firePressed_ = false;
-        
+        collDisZ_ = 0;
         //Times and turning
         timeSinceLastFire_ = 0.0;
@@ -90,5 +91,8 @@
     bool SOBFigure::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
 
+        //Inform tick fct that player is colliding and tell him how far away the collision point is from player middle point in z dir
         isColliding_ = true;
+        collDisZ_ = getPosition().z - contactPoint.getPositionWorldOnB().getZ();
+
 
         //Orxocast returns object with casted type if otherObject has that class, and if not a nullptr
@@ -116,4 +120,6 @@
               setVelocity(vel);
               predead_=true; 
+              SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+              SOBGame->setDone(true);
 
           } else {
@@ -132,5 +138,7 @@
         reachedLvlEndState_ = 1;
         SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+        SOBGame->setDone(true);
         SOBGame->addPoints(flagstone->getPoints());
+        
 
     }
@@ -201,6 +209,9 @@
         if (!predead_)
             velocity.y = 0;
+        //If player falls in a hole
         if (position.z < -100) {
             dead_ = true;
+            SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+            SOBGame->setDone(true);
         }
 
@@ -233,8 +244,8 @@
 
 
-        //If player hits space and does not move in z-dir
-        if (inputAllowed && firePressed_ && isColliding_ && std::abs(velocity.z) < 0.1 && std::abs(lastSpeed_z) < 0.1) {
+        //If player hits space and collides against an object under him then jump
+        if (inputAllowed && firePressed_ && isColliding_ && (collDisZ_ >= 7.75 && collDisZ_ <+ 8.25)) {
             gravityAcceleration_ = 100.0;
-            velocity.z = 110; //150
+            velocity.z = 110; 
         }
 
@@ -310,4 +321,5 @@
 
     isColliding_ = false;
+    collDisZ_ = 0;
 
 }
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h	(revision 11417)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h	(revision 11418)
@@ -70,5 +70,5 @@
             int reachedLvlEndState_;
             float timeCounter_;
-
+            float collDisZ_;
 
 
