Index: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.cc
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.cc	(revision 11574)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.cc	(revision 11575)
@@ -42,4 +42,5 @@
 #include "SOBMushroom.h"
 #include "SOBGumba.h"
+#include "SOBFireball.h"
 #include "SOB.h"
 #include "SOBFlagstone.h"
@@ -103,8 +104,9 @@
 
         //Orxocast returns object with casted type if otherObject has that class, and if not a nullptr
-        SOBMushroom* mush = orxonox_cast<SOBMushroom*>(otherObject);
-        SOBGumba* gumba = orxonox_cast<SOBGumba*>(otherObject);
-        SOBFlagstone* flagstone = orxonox_cast<SOBFlagstone*>(otherObject);
-        SOBCastlestone* castlestone = orxonox_cast<SOBCastlestone*>(otherObject);
+        SOBMushroom*    mush        = orxonox_cast<SOBMushroom*>    (otherObject);
+        SOBGumba*       gumba       = orxonox_cast<SOBGumba*>       (otherObject);
+        SOBFlagstone*   flagstone   = orxonox_cast<SOBFlagstone*>   (otherObject);
+        SOBCastlestone* castlestone = orxonox_cast<SOBCastlestone*> (otherObject);
+        SOBFireball* fireball       = orxonox_cast<SOBFireball*>    (otherObject);
 
         //Check if otherObject is a powerup
@@ -122,4 +124,5 @@
         }
         
+
         //Check if otherObject is a Gumba (that walking enemies)
 
@@ -130,11 +133,5 @@
                 // If player hasn't a power up, he dies. Else he shrinks and the gumba dies.
                 if(!gotPowerUp_){
-                    Vector3 vel = getVelocity();
-                    vel.y = -80;
-                    vel.z = 200;
-                    setVelocity(vel);
-                    predead_=true; 
-                    SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
-                    SOBGame->setDone(true);
+                    this->die();
                 } else{
                     gotPowerUp_ = false;
@@ -158,4 +155,8 @@
     }
 
+        else if (fireball != nullptr && !(fireball->hasCollided_)){
+            this-> die();
+        }
+
     //Purpose is that if player hits the flag, he should walk into the castle at the end of the level. For that we use SOBCastlestone
     if (reachedLvlEndState_ == 0 && flagstone != nullptr && !(flagstone->hasCollided_)) {
@@ -440,3 +441,13 @@
 }
 
-}
+void SOBFigure::die(){
+    Vector3 vel = getVelocity();
+    vel.y = -80;
+    vel.z = 200;
+    setVelocity(vel);
+    predead_=true; 
+    SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+    SOBGame->setDone(true);
+}
+
+}
Index: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.h
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.h	(revision 11574)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFigure.h	(revision 11575)
@@ -48,4 +48,5 @@
             void changeClothes(std::string& name);
             void spawnFireball();
+            void die();
 
             bool dead_;
Index: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.cc
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.cc	(revision 11574)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.cc	(revision 11575)
@@ -67,7 +67,5 @@
         collDisX_ = 0;
         collDisZ_ = 0;
-
-      orxout() << "fireball existed" << endl;
-
+        hitCounter_ = 0;
         
     }
@@ -90,4 +88,5 @@
         SOBGumba* gumba = orxonox_cast<SOBGumba*>(otherObject);
 
+
         if(gumba!=nullptr && !(gumba->hasCollided_)) //if other object is a Gumba, kill the Gumba and add score and destroy the fireball
         {
@@ -99,4 +98,6 @@
             this->hasCollided_ = true;
         }
+
+
          //collision with either top or bottom of a block
         else if(changeAllowed_ && (abs(collDisX_)<=abs(collDisZ_)))
@@ -104,7 +105,6 @@
             changeAllowed_ = false;
             Vector3 velocity = getVelocity();
-            orxout() << "before:    velocity in z = " << velocity.z << endl;
             velocity.z = -velocity.z;
-            orxout() << "after:     velocity in z = " << velocity.z << endl;
+     
 
             setVelocity(velocity);
@@ -114,10 +114,9 @@
         else if(changeAllowed_ && (abs(collDisX_)>abs(collDisZ_))) 
         {
-            orxout() << "collision with the vertical side of a block " << endl;
-
             changeAllowed_ = false;
             goesRight_=!goesRight_;
         }
 
+        hitCounter_++;
         
         return true;
@@ -154,7 +153,10 @@
             velocity.x = dir*speed_;
             velocity.y = 0;
+            if(hitCounter_ >= 3) velocity.y = 50;
             setVelocity(velocity);
 
             lastPos_ = getPosition();
+
+            if(abs(this->getPosition().z) > 1000) delete this;
         
     }
Index: code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.h
===================================================================
--- code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.h	(revision 11574)
+++ code/branches/SOBv2_HS17/src/modules/superorxobros/SOBFireball.h	(revision 11575)
@@ -72,4 +72,5 @@
             float changedOn_;
             int hitCounter_;
+ 
 
 
