Index: code/branches/SuperOrxoBros_FS17/data/levels/SOB.oxw
===================================================================
--- code/branches/SuperOrxoBros_FS17/data/levels/SOB.oxw	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/data/levels/SOB.oxw	(revision 11416)
@@ -26,4 +26,13 @@
 	</Template>
 
+		<Template name=coin defaults=0 >
+		<SOBCoin speed = 15 lifetime = 0.7>
+			<attached>
+				<Model mesh="Pilz.mesh" position="0,0,11" scale=3 pitch=90/> 
+			</attached>
+			
+		</SOBCoin>
+	</Template>
+
 
 
@@ -72,8 +81,8 @@
 		<Scene ambientlight="1.0, 1.0, 1.0" skybox="Orxonox/skyBoxBasic">
 			<Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
-			<SpawnPoint position="991.729, -110.11, 435.404" orientation="0.534038, 0.563456, 0.212168, 0.593553" />
-
-
-
+			<SpawnPoint position="1984,-5,88 " orientation="0.534038, 0.563456, 0.212168, 0.593553" />
+
+<!--    991.729, -110.11, 435.404
+-->
 
 
@@ -118,5 +127,6 @@
 
 
-					<SOBGumba collisionType="dynamic" speed=30>
+
+					<SOBGumba collisionType="dynamic" speed=30 position = "320,0,0">
 						<attached>
 							<Model mesh="Goomba.mesh" position="0,0,21" scale=3 pitch=90/> 
@@ -153,5 +163,5 @@
 					<!-- 					BLOCK 1 in der LUFT - alle analog wie diesen :) -->
 					<!-- Sobald ein QBlock von unten gehittet wird, wechselt die Visibility von allen attached Models. Hier wuerde also Cube1.1 invisible und Cube2.12 visible. Die Collisionshape wird ja sowieso beibehalten. -->
-					<SOBQBlock collisionType="static" type="Mushroom" position="170,0,20" mass='-1'> 						 			<!-- L1.1 -->
+					<SOBQBlock collisionType="static" type="Coin" position="170,0,20" mass='-1'> 						 			<!-- L1.1 -->
 						<attached>
 							<Model mesh="QCube.mesh" scale=10 pitch=90 />
@@ -201,5 +211,5 @@
 					
 					<Model mesh="Cube1.1.mesh" position="250,0,20" scale=10/> 										<!-- L1.7 -->
-<!-- Rohre-->
+					<!-- Rohre-->
 					<Model mesh="Rohr.mesh" position="295,5,-35" scale=10 pitch=90 /> 								<!-- L1.8 -->
 					<Model mesh="Rohr.mesh" position="395,5,-25" scale=10 pitch=90 />								<!-- L1.9 -->
@@ -244,5 +254,5 @@
 						<collisionShapes>
 							
-		
+
 							<BoxCollisionShape position="295,0,-4" halfExtents="12,5,12" /> 						<!-- 1.8 -->
 							<BoxCollisionShape position="395,0,1" halfExtents="12,5,17" /> 						<!-- 1.9 -->
@@ -523,9 +533,72 @@
 
 
-
-					
-
-
-					
+					
+					<!-- FLAG -->
+					<SOBFlagstone points = 100  position="1990,0,10" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 200  position="1990,0,20" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 400  position="1990,0,30" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 800  position="1990,0,40" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 1600  position="1990,0,50" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 2200  position="1990,0,60" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 2700  position="1990,0,70" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 3400  position="1990,0,80" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+					<SOBFlagstone points = 4000  position="1990,0,90" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBFlagstone>
+
+
+
+					<SOBCastlestone position="2060,0,-10" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBCastlestone>
+
+					<SOBCastlestone position="2050,40,-10" collisionType="static">
+						<collisionShapes>
+							<BoxCollisionShape position="0,0,0" halfExtents="5,5,5" />
+						</collisionShapes>
+					</SOBCastlestone>
+					<StaticEntity collisionType="static" mass='-1'>
+						<collisionShapes>
+							<BoxCollisionShape position="2050,20,-20" halfExtents="5,20,5" />
+						</collisionShapes>
+					</StaticEntity>
+
+
 
 
@@ -563,6 +636,6 @@
 							<BoxCollisionShape position="1890,0,50" halfExtents="15,5,5" />
 							<BoxCollisionShape position="1895,0,60" halfExtents="10,5,5" />
-							<BoxCollisionShape position="1990,0,40" halfExtents="5,5,55" />
-
+							<!--<BoxCollisionShape position="1990,0,40" halfExtents="5,5,55" />
+-->
 
 							
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/CMakeLists.txt
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/CMakeLists.txt	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/CMakeLists.txt	(revision 11416)
@@ -10,4 +10,6 @@
   SOBGumba.cc
   SOBFlagstone.cc
+  SOBCastlestone.cc
+  SOBCoin.cc
 
 )
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.cc	(revision 11416)
@@ -21,17 +21,16 @@
  *
  *   Author:
- *      Fabian 'x3n' Landau
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
 
 /**
-    @file Pong.cc
-    @brief Implementation of the Pong class.
+    @file SOB.cc
+    @brief Implementation of the SOB class.
 */
 
 #include "SOB.h"
-
 #include "core/CoreIncludes.h"
 #include "core/EventIncludes.h"
@@ -39,13 +38,12 @@
 #include "core/config/ConfigValueIncludes.h"
 #include "core/Game.h"
-
 #include "gamestates/GSLevel.h"
 #include "chat/ChatManager.h"
 #include "infos/PlayerInfo.h"
-
 #include "SOBCenterpoint.h"
-
 #include "SOBFigure.h"
 #include "graphics/Camera.h"
+
+
 
 namespace orxonox
@@ -89,4 +87,6 @@
     }
 
+
+
     void SOB::start()
     {
@@ -95,7 +95,6 @@
             if (figure_ == nullptr)
             {
-                figure_ = new SOBFigure(center_->getContext());
+                figure_ = new SOBFigure(center_->getContext());     //add a new instance of a player to the game
                 figure_->addTemplate(center_->getFigureTemplate());
-               // figure_->InitializeAnimation(center_->getContext()); //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
             }
 
@@ -124,5 +123,4 @@
         cleanup();
         GSLevel::startMainMenu();
-
         Deathmatch::end();
     }
@@ -131,5 +129,5 @@
         cleanup();
 
-        // HACK
+        // HACK - only method I found to simply reload the level
         Game::getInstance().popState();
         Game::getInstance().popState();
@@ -144,5 +142,5 @@
         if (figure_->getPlayer() == nullptr)
         {
-            player->startControl(figure_);
+            player->startControl(figure_); //Give the control of the instance player to the real person
             players_[player].state_ = PlayerState::Alive;
         }
@@ -165,10 +163,20 @@
         SUPER(SOB, tick, dt);
 
-        if (this->figure_ != nullptr && figure_->dead_) {
+        //If player has reached end of level
+        if (this->figure_ != nullptr && figure_->lvlEnded_) {
+            std::stringstream a;
+            a << "Nice! " << getPoints() << " Points. Press <Space> to restart";
+            info_ =a.str();
+
+        //If player has died
+        } else if (this->figure_ != nullptr && figure_->dead_) {
             info_ = "Game over. Press <Space> to restart";
-            orxout() << "DEED" << endl;
         }
         
 
+        //Kill the player if time is up
+        if (this->figure_ != nullptr && timeLeft_ <= 0)
+            this->figure_->dead_ = true;
+        //The time on the HUD
         timeLeft_-=dt*2.5;
     }
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOB.h	(revision 11416)
@@ -21,14 +21,13 @@
  *
  *   Author:
- *      Fabian 'x3n' Landau
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
 
 /**
-    @file Pong.h
-    @brief Declaration of the Pong class.
-    @ingroup Pong
+    @file SOB.h
+    @brief Declaration of the SOB class.
 */
 
@@ -37,7 +36,4 @@
 
 #include "superorxobros/SOBPrereqs.h"
-
-#include "tools/Timer.h"
-
 #include "gametypes/Deathmatch.h"
 #include "SOBCenterpoint.h"
@@ -45,5 +41,4 @@
 namespace orxonox
 {
-
 
     class _SOBExport SOB : public Deathmatch
@@ -63,4 +58,6 @@
 
             void restart();
+
+            //Functions for points and coins
             int getPoints() {
                 return points_;
@@ -79,4 +76,7 @@
                 points_+=100;
             }
+            void addPoints(int poi) {
+                points_+=poi;
+            }
             int getTimeLeft() {
                 return timeLeft_;
@@ -86,4 +86,7 @@
             }
             
+
+
+            //Not used yet - placed if somebody wants to develop lvl 1-2 etc
             void setLvl(int lvl) {
                 lvl_ = lvl;
@@ -109,5 +112,5 @@
             int coins_;
             float timeLeft_;
-        
+
             int lvl_;
             std::string info_;
@@ -117,3 +120,3 @@
     }
 
-#endif /* _Pong_H__ */
+#endif /* _SOB_H__ */
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.cc	(revision 11416)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.cc	(revision 11416)
@@ -0,0 +1,59 @@
+/*
+ *   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:
+ *      Julien Kindle
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBCastlestone.cc
+    @brief Mainly used to guide the player into the castle after he has touched the flag and the control goes to the game
+*/
+
+#include "SOBCastlestone.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "SOBFigure.h"
+#include "util/Output.h"
+
+
+namespace orxonox
+{
+    RegisterClass(SOBCastlestone);
+
+    SOBCastlestone::SOBCastlestone(Context* context) : StaticEntity(context)
+    {
+        RegisterObject(SOBCastlestone);
+        setAngularFactor(0.0);
+        this->enableCollisionCallback();
+        hasCollided_=false;
+    
+    }
+
+    bool SOBCastlestone::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
+        return true;
+    }
+
+}
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.h	(revision 11416)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCastlestone.h	(revision 11416)
@@ -0,0 +1,53 @@
+/*
+ *   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:
+ *      Julien Kindle
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBCastlestone.h
+    @brief Declaration of the SOBCastlestone class.
+*/
+
+#ifndef _SOBCastlestone_H__
+#define _SOBCastlestone_H__
+
+#include "superorxobros/SOBPrereqs.h"
+#include "worldentities/StaticEntity.h"
+
+
+namespace orxonox
+{
+    class _SOBExport SOBCastlestone : public StaticEntity
+    {
+    public:
+        SOBCastlestone(Context* context);
+        virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
+        bool hasCollided_;
+        
+    };
+}
+
+#endif /* _SOBCastlestone_H__ */
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBCenterpoint.cc
-    @brief The SOBCenterpoint is a StaticEntity which represents the level of the minigame. All platforms, enemies and items are attached to the SOBCenterpoint.
+    @brief The SOBCenterpoint is a StaticEntity which represents the level of the minigame. 
 */
 
@@ -45,7 +45,4 @@
     {
         RegisterObject(SOBCenterpoint);
-
-      
-
         checkGametype();
     }
@@ -56,4 +53,5 @@
 
       
+        
         XMLPortParam(SOBCenterpoint, "cameraOffset", setCameraOffset, getCameraOffset, xmlelement, mode);
         
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCenterpoint.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -38,5 +38,5 @@
     /**
     @brief
-        @brief The SOBCenterpoint is a StaticEntity which represents the level of the minigame. All platforms, enemies and items are attached to the SOBCenterpoint.
+        @brief The SOBCenterpoint is a StaticEntity which represents the level of the minigame. Everybody used it so I used it too, do not ask my why..
     */
     class _SOBExport SOBCenterpoint : public StaticEntity
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.cc	(revision 11416)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.cc	(revision 11416)
@@ -0,0 +1,83 @@
+/*
+ *   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:
+ *      Julien Kindle
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBCoin.cc
+    @brief This is the object that appears when player hits a QBlock with type coin - it should be a coin floating ontop of the QBlock
+*/
+
+#include "SOBCoin.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "SOBFigure.h"
+#include "util/Output.h"
+
+
+namespace orxonox
+{
+    RegisterClass(SOBCoin);
+
+    SOBCoin::SOBCoin(Context* context) : MovableEntity(context)
+    {
+        RegisterObject(SOBCoin);
+        setAngularFactor(0.0);
+
+    }
+
+    
+    void SOBCoin::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(SOBCoin, XMLPort, xmlelement, mode);
+        XMLPortParam(SOBCoin, "lifetime", setLifetime, getLifetime, xmlelement, mode);
+        XMLPortParam(SOBCoin, "speed", setSpeed, getSpeed, xmlelement, mode);
+
+    }
+
+
+    void SOBCoin::tick(float dt)
+    {
+        SUPER(SOBCoin, tick, dt);
+
+        lifetime_-=dt;
+
+        if (lifetime_ <+ 0) {
+            destroyLater();
+        }
+
+        Vector3 velocity = getVelocity();
+        velocity.z = speed_;
+
+        setVelocity(velocity);
+
+
+
+    }
+
+
+}
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.h	(revision 11416)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBCoin.h	(revision 11416)
@@ -0,0 +1,72 @@
+/*
+ *   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:
+ *      Julien Kindle
+ *   Co-authors:
+ *      
+ *
+ */
+
+/**
+    @file SOBCoin.h
+    @brief Declaration of the SOBCoin class.
+    @ingroup SOB
+*/
+
+#ifndef _SOBCoin_H__
+#define _SOBCoin_H__
+
+#include "superorxobros/SOBPrereqs.h"
+#include "worldentities/MovableEntity.h"
+
+
+namespace orxonox
+{
+    class _SOBExport SOBCoin : public MovableEntity
+    {
+    public:
+        SOBCoin(Context* context);
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
+        virtual void tick(float dt) override;
+
+
+        bool attachedToFigure_;
+
+        void setLifetime(const float lt)
+        { this->lifetime_ = lt; }
+        float getLifetime() const
+        { return lifetime_; }
+        void setSpeed(const float lt)
+        { this->speed_ = lt; }
+        float getSpeed() const
+        { return speed_; }
+
+
+    protected:
+
+        float lifetime_;
+        float speed_;
+
+    };
+}
+
+#endif /* _SOBCoin_H__ */
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -44,4 +44,5 @@
 #include "SOB.h"
 #include "SOBFlagstone.h"
+#include "SOBCastlestone.h"
 
 namespace orxonox
@@ -54,5 +55,7 @@
 
         // initialize variables
-
+        gravityAcceleration_ = 350.0;
+
+        //Vars for movement of player
         moveUpPressed_ = false;
         moveDownPressed_ = false;
@@ -60,18 +63,25 @@
         moveDownPressed_ = false;
         firePressed_ = false;
+        
+        //Times and turning
         timeSinceLastFire_ = 0.0;
         lastSpeed_z = 0.0;
+        pitch_ = 0.0;
+        timeCounter_ = 0;
+
+        //Properties of player
+        gotPowerUp_ = false;
         isColliding_ = true;
         particlespawner_ = NULL;
 
-        gravityAcceleration_ = 350.0;
-        pitch_ = 0.0;
-
+        //Properties of players life
         predead_ = false;
         dead_ = false;
-        gotPowerUp_ = false;
+        lvlEnded_ = false;
+        reachedLvlEndState_ = 0;
+
         
-        setAngularFactor(0.0);
-        this->enableCollisionCallback();
+        setAngularFactor(0.0); //Means player doesn't turn on collision, so he doesn't fall over while walking over the ground
+        this->enableCollisionCallback(); // Turns on that on every collision function collidesAgainst is executed
     }
 
@@ -81,17 +91,23 @@
 
         isColliding_ = true;
+
+        //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);
+
+        //Check if otherObject is a powerup
         if (mush != nullptr && !(mush->hasCollided_)) {
             otherObject->destroyLater();
             gotPowerUp_ = true;
-            SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
-            SOBGame->addMushroom();
-            mush->hasCollided_ = true;
-
+            SOB* SOBGame = orxonox_cast<SOB*>(getGametype()); //Get the Gametype
+            SOBGame->addMushroom(); // Tell the gametype to increase points
+            mush->hasCollided_ = true; // needed because of destroyLater takes some time and player should receive points only once
+
+        //Check if otherObject is a Gumba (that walking enemies)
         } else if (gumba != nullptr && !(gumba->hasCollided_)) {
 
+            //If player jumps on its head, kill it, else, kill the player
             if (getVelocity().z >= -20) {
               Vector3 vel = getVelocity();
@@ -100,4 +116,5 @@
               setVelocity(vel);
               predead_=true; 
+
           } else {
             gumba->destroyLater();
@@ -110,8 +127,17 @@
     }
 
-     if (flagstone != nullptr && !(flagstone->hasCollided_)) {
-            flagstone->hasCollided_ = true;
-
-     }
+    //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_)) {
+        flagstone->hasCollided_ = true;
+        reachedLvlEndState_ = 1;
+        SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+        SOBGame->addPoints(flagstone->getPoints());
+
+    }
+    if (castlestone != nullptr && !(castlestone->hasCollided_)) {
+        castlestone->hasCollided_ = true;
+        reachedLvlEndState_++;
+
+    }
 
     return true;
@@ -119,96 +145,104 @@
 
 
-
-void SOBFigure::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-{
-    SUPER(SOBFigure, XMLPort, xmlelement, mode);
-
-}
-
-
+//Self implemented sign function that returns either 1 or -1 (and never 0)
 int SOBFigure::sgn(float x) {
-
     if (x < 0.0) return -1;
     return 1;
 }
 
+//For those of you who don't have an idea: the tick function is called about 50 times/sec
 void SOBFigure::tick(float dt)
 {
     SUPER(SOBFigure, tick, dt);
 
+
+    bool inputAllowed = true;
+
+    //the particle spawner that generates the fire from the backpack when pressed
     if (particlespawner_ == NULL) {
         for (WorldEntity* object : this->getAttachedObjects())
         {
-         if (object->isA(Class(ParticleSpawner)))
+           if (object->isA(Class(ParticleSpawner)))
             particlespawner_ = object;
-
-    }
-
-}
-
-
-
-
-
-
-if (firePressed_ == false) {
- gravityAcceleration_ = 350.0;
-
-}
-
-if (hasLocalController())
-{
-  Vector3 velocity = getVelocity();
-  Vector3 position = getPosition();
-
-  if (!predead_)
-    velocity.y = 0;
-if (position.z < -100) {
-    dead_ = true;
-
-}
-
-if (dead_) {
-    velocity.x = 0;
-    velocity.z = 0;
-    setVelocity(velocity);
-    SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
-    if (firePressed_)
-        SOBGame->restart();
-    return;
-}
-
-
-int maxvelocity_x = 100;
-int speedAddedPerTick = 5;
-int camMaxOffset = 25;
-
-timeSinceLastFire_ += dt;
-lastSpeed_z = velocity.z;
+        }
+    }
+
+
+    //Behavior on level end - this is like described above for the movement from the player when hit the flag. He moves then into the castle
+    if (reachedLvlEndState_ != 0) {
+        timeCounter_+= dt;
+        inputAllowed = false;
+    }
+    if (reachedLvlEndState_ == 1 && timeCounter_ >= 1.5) {
+        timeCounter_ = 0;
+        reachedLvlEndState_ = 2;
+    }
+
+
+    //if input blocked, then cancel every movement operation
+    if (!inputAllowed) {
+        moveUpPressed_ = false;
+        moveDownPressed_ = false;
+        moveLeftPressed_ = false;
+        moveRightPressed_ = false;
+    }
+
+    //set the gravityto standard 350
+    if (firePressed_ == false) {
+        gravityAcceleration_ = 350.0;
+
+    }
+
+    if (hasLocalController())
+    {
+        Vector3 velocity = getVelocity();
+        Vector3 position = getPosition();
+
+        if (!predead_)
+            velocity.y = 0;
+        if (position.z < -100) {
+            dead_ = true;
+        }
+
+
+        if (dead_) {
+            velocity.x = 0;
+            velocity.z = 0;
+            setVelocity(velocity);
+            SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+            if (firePressed_)
+                SOBGame->restart();
+            return;
+        }
+
+
+        int maxvelocity_x = 100;
+        int speedAddedPerTick = 5;
+        int camMaxOffset = 25;
+
+        timeSinceLastFire_ += dt;
+        lastSpeed_z = velocity.z;
 
 
 
         //Handle the rocket fire from the jetpack
-if (velocity.z > 40)
-    particlespawner_->setVisible(true); 
-else
-    particlespawner_->setVisible(false); 
+        if (velocity.z > 40)
+            particlespawner_->setVisible(true); 
+        else
+            particlespawner_->setVisible(false); 
+
 
         //If player hits space and does not move in z-dir
-if (firePressed_ && isColliding_ && std::abs(velocity.z) < 0.1 && std::abs(lastSpeed_z) < 0.1) {
-    gravityAcceleration_ = 100.0;
+        if (inputAllowed && firePressed_ && isColliding_ && std::abs(velocity.z) < 0.1 && std::abs(lastSpeed_z) < 0.1) {
+            gravityAcceleration_ = 100.0;
             velocity.z = 110; //150
         }
-
-      // rotate(1,getOrientation()* WorldEntity::FRONT)
 
 
         //Left-right movement with acceleration
         float rot = getOrientation().getRoll().valueDegrees();
-        orxout() << rot << endl;
         if (moveRightPressed_) {
             if (!(rot < 5.0 && -5.0 < rot))
                 setOrientation(Vector3::UNIT_Z, getOrientation().getRoll() - sgn(rot)*dt*Radian(6));
-
 
             if (std::abs(velocity.x) < maxvelocity_x) {
@@ -230,9 +264,24 @@
 
 
+        //Again another EndOfLevel behavior
+        if (reachedLvlEndState_ == 1)
+            velocity.x = -2;
+        if (reachedLvlEndState_ == 2)
+            velocity.x = 30;
+        if (reachedLvlEndState_ == 3) {
+            velocity.x = 0;
+            velocity.y = 20;
+        }
+        if (reachedLvlEndState_ == 4) {
+            lvlEnded_ = true;
+            dead_ = true;
+        }
+
+        //velocity = acc. * time
         velocity.z -= gravityAcceleration_*dt;
         setVelocity(velocity);
 
 
-        //Camera operation
+        //Camera operation - the camera should always follow the player in a specific region
         Camera* cam = getCamera();
         Vector3 campos = cam->getPosition();
@@ -252,14 +301,12 @@
     }
 
-        // Move through the left and right screen boundaries
-
-        //setPosition(position);
-
-        // Reset key variables
+
+
+    // Reset key variables
     moveUpPressed_ = false;
     moveDownPressed_ = false;
     moveLeftPressed_ = false;
     moveRightPressed_ = false;
-    moveDownPressed_ = false;
+
     isColliding_ = false;
 
@@ -270,5 +317,5 @@
 
 
-
+//The following functions read the input of the player and then set the bools for the movement
 void SOBFigure::moveFrontBack(const Vector2& value)
 {
@@ -299,11 +346,9 @@
 }
 
-
-
-
-
 void SOBFigure::boost(bool boost)
 {
     firePressed_ = boost;
 }
-}
+
+
+}
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFigure.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -41,24 +41,17 @@
             SOBFigure(Context* context); //!< Constructor. Registers and initializes the object.
             virtual ~SOBFigure() {}
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             virtual void tick(float dt) override;
             virtual void moveFrontBack(const Vector2& value) override; //!< Overloaded the function to steer the figure up and down.
             virtual void moveRightLeft(const Vector2& value) override; //!< Overloaded the function to steer the figure up and down.
-            
-
             virtual void boost(bool boost) override;
             virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
 
-
-            //virtual void CollisionWithEnemy(SOBEnemy* enemy);
-            
-            
-
-
             bool dead_;
             bool predead_;
+            bool lvlEnded_;
 
         private:
 
+            //Soooo many declarations
             bool gotPowerUp_;
             bool moveUpPressed_;
@@ -75,4 +68,6 @@
             WorldEntity* particlespawner_;
             int sgn(float x);
+            int reachedLvlEndState_;
+            float timeCounter_;
 
 
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBFlagstone.cc
-    @brief All items in this minigame inherit from this class. Items can move around like platforms and enemies.
+    @brief The flagstone, as described in the h file
 */
 
@@ -44,5 +44,5 @@
     RegisterClass(SOBFlagstone);
 
-    SOBFlagstone::SOBFlagstone(Context* context) : MovableEntity(context)
+    SOBFlagstone::SOBFlagstone(Context* context) : StaticEntity(context)
     {
         RegisterObject(SOBFlagstone);
@@ -50,8 +50,8 @@
         setAngularFactor(0.0);
         this->enableCollisionCallback();
-       
+        
         hasCollided_=false;
         
-       
+        
     }
 
@@ -64,19 +64,16 @@
 
 
-     }
+    }
 
-   
+    
     bool SOBFlagstone::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
 
-
-
-orxout() << "Watshc bum baem" << otherObject->getMass()<< endl;
-return true;
+        return true;
     }
 
 
-  
+    
 
 
-   
+    
 }
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBFlagstone.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBFlagstone.h
-    @brief Declaration of the SOBFlagstone class.
+    @brief Declaration of the SOBFlagstone class. This class is used for the flag - for everz 10x10x10 stone we added a flagstone with different points. The higher you touch the flag, the more points you get.
     @ingroup SOB
 */
@@ -37,10 +37,10 @@
 
 #include "superorxobros/SOBPrereqs.h"
-#include "worldentities/MovableEntity.h"
+#include "worldentities/StaticEntity.h"
 
 
 namespace orxonox
 {
-    class _SOBExport SOBFlagstone : public MovableEntity
+    class _SOBExport SOBFlagstone : public StaticEntity
     {
         public:
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -76,5 +76,5 @@
     bool SOBGumba::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
 
-
+        //Every object with mass -1 does not change the direction of the Gumba. For example the ground floor! The other objects switch the direction of the gumba.
         if (changeAllowed_ && otherObject->getMass() != -1) {
             goesRight_ = !goesRight_;
@@ -91,8 +91,5 @@
     }
 
-    void SOBGumba::touchFigure()
-    {
 
-    }
 
     void SOBGumba::tick(float dt)
@@ -102,5 +99,6 @@
         if (!changeAllowed_) {
             changedOn_+= dt;
-            if (changedOn_> 200) {
+            // After a collision, we don't listen for collisions for 200ms - that's because one wall can cause several collisions!
+            if (changedOn_> 0.200) {
                 changeAllowed_ = true;
                 changedOn_ = 0.0;
@@ -119,6 +117,4 @@
         setVelocity(velocity);
 
-
-        
         lastPos_ = getPosition();
     }
@@ -126,77 +122,2 @@
 
 }
-/*
- *   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:
- *      Fabien Vultier
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file SOBGumba.h
-    @brief Declaration of the SOBGumba class.
-    @ingroup SOB
-*/
-
-#ifndef _SOBGumba_H__
-#define _SOBGumba_H__
-
-#include "superorxobros/SOBPrereqs.h"
-#include "worldentities/MovableEntity.h"
-
-
-namespace orxonox
-{
-    class _SOBExport SOBGumba : public MovableEntity
-    {
-    public:
-        SOBGumba(Context* context);
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
-        virtual void setFigure(SOBFigure* newFigure);
-        virtual void touchFigure();
-        virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
-        virtual void tick(float dt) override;
-
-        
-        bool attachedToFigure_;
-
-        void setSpeed(const float speed)
-        { this->speed_ = speed; }
-        float getSpeed() const
-        { return speed_; }
-
-        bool hasCollided_;
-    protected:
-        float gravityAcceleration_;
-        float speed_;
-        WeakPtr<SOBFigure> figure_;
-        bool goesRight_;
-        Vector3 lastPos_;
-        bool changeAllowed_;
-        float changedOn_;
-        
-    };
-}
-
-#endif /* _SOBGumba_H__ */
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBGumba.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBGumba.h
-    @brief Declaration of the SOBGumba class.
+    @brief Declaration of the SOBGumba class. Gumbas are the enemie mushrooms - pretty sure it's written Goomba but, naaah
     @ingroup SOB
 */
@@ -48,5 +48,4 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             virtual void setFigure(SOBFigure* newFigure);
-            virtual void touchFigure();
             virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
             virtual void tick(float dt) override;
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.cc	(revision 11416)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *      Florian Zinggeler
+ *      Julien Kindle
  *
  */
@@ -60,11 +60,9 @@
         SUPER(SOBHUDInfo, tick, dt);
 
+        //If you have a look at the HUD xml file, you can see there are several elements with different types.
         if (this->SOBGame)
         {
           
-         // setPosition(Vector2(0.1, 0.65));
-          if (this->type_ == "Coins") {
-                // this->setCaption("Game ends in 30 seconds.\nPress (e)xit / (q)uit to go to the main menu.\nTo restart fly out of the screen!");
-            
+          if (this->type_ == "Coins") {            
             
             std::stringstream ss;
@@ -99,4 +97,5 @@
 }
 
+//No idea why, just implement this method
 void SOBHUDInfo::changedOwner()
 {
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBHUDInfo.h	(revision 11416)
@@ -21,5 +21,5 @@
  *
  *   Author:
- *      Florian Zinggeler
+ *      Julien Kindle
  *
  */
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBItem.cc
-    @brief All items in this minigame inherit from this class. Items can move around like platforms and enemies.
+    @brief Not sure if ever used
 */
 
@@ -67,6 +67,5 @@
     bool SOBItem::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
 
-//orxout() << "Watshc bum baem" << endl;
-return true;
+        return true;
     }
 
@@ -77,7 +76,4 @@
     }
 
-    void SOBItem::touchFigure()
-    {
 
-    }
 }
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBItem.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -48,5 +48,4 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             virtual void setFigure(SOBFigure* newFigure);
-            virtual void touchFigure();
             virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
 
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -29,5 +29,5 @@
 /**
     @file SOBMushroom.cc
-    @brief All items in this minigame inherit from this class. Items can move around like platforms and enemies.
+    @brief This is the class for the powerup mushroom
 */
 
@@ -77,11 +77,10 @@
 
 
-if (changeAllowed_ && otherObject->getMass() != -1) {
+        if (changeAllowed_ && otherObject->getMass() != -1) {
                 goesRight_ = !goesRight_;
                 changeAllowed_ = false;
-}
+        }
 
-orxout() << "Watshc bum baem" << otherObject->getMass()<< endl;
-return true;
+        return true;
     }
 
@@ -92,8 +91,5 @@
     }
 
-    void SOBMushroom::touchFigure()
-    {
 
-    }
 
     void SOBMushroom::tick(float dt)
@@ -101,7 +97,8 @@
         SUPER(SOBMushroom, tick, dt);
 
+        //Exactly like the Gumba class, if collided, turn direction of Mushroom and wait 200ms so we don't get two collisions from the same wall
         if (!changeAllowed_) {
             changedOn_+= dt;
-            if (changedOn_> 200) {
+            if (changedOn_> 0.200) {
                 changeAllowed_ = true;
                 changedOn_ = 0.0;
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBMushroom.h	(revision 11416)
@@ -48,5 +48,4 @@
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             virtual void setFigure(SOBFigure* newFigure);
-            virtual void touchFigure();
             virtual  bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
             virtual void tick(float dt) override;
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBPrereqs.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBPrereqs.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBPrereqs.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Reto Grieder
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -30,5 +30,5 @@
 @file
 @brief
-    Shared library macros, enums, constants and forward declarations for the pong module
+    Shared library macros, enums, constants and forward declarations for the SOB module
 */
 
@@ -68,11 +68,5 @@
 namespace orxonox
 {
-   /* class Pong;
-    class PongAI;
-    class PongBall;
-    class PongBat;
-    class PongBot;*/
     class SOBCenterpoint;
-   
     class SOB;
     class SOBFigure;
@@ -83,6 +77,7 @@
     class SOBGumba;
     class SOBFlagstone;
-    /*
-    class PongScore;*/
+    class SOBCastlestone;
+    class SOBCoin;
+
 }
 
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.cc
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.cc	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.cc	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -38,4 +38,5 @@
 #include "SOB.h"
 #include "SOBMushroom.h"
+#include "SOBCoin.h"
 
 namespace orxonox
@@ -47,9 +48,5 @@
         RegisterObject(SOBQBlock);
         used_ = false;
-   
-        // setPosition(Vector3(0,0,0));
-        // setVelocity(Vector3(0,0,0));
-        // setAcceleration(Vector3(0,0,0));
-        // setProperties(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+
     }
 
@@ -62,4 +59,6 @@
     bool SOBQBlock::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) {
 
+
+        //If you hit the QBlock, the visibility of all attached objects get inverted! Pretty easy way to create changing blocks :)
         float v_z = otherObject->getVelocity().z;
         if (!used_ && v_z > 50.0) {
@@ -70,6 +69,10 @@
 
             SOB* SOBGame = orxonox_cast<SOB*>(getGametype());
+
+            //Spawn either a powerup mushroom or a coin animation (also just an object, have a look at the SOBCoin class)
+            //The spawn methods are declared at the bottom of this file
             if (type_ == "Coin") {
                 SOBGame->addCoin();
+                spawnCoin();
             }
             if (type_ == "Mushroom") {
@@ -91,4 +94,5 @@
 
 
+     //The spawnmethods from above
      void SOBQBlock::spawnMushroom() {
         SOBCenterpoint* center_ = ((SOB*)getGametype())->center_;
@@ -101,12 +105,21 @@
         {
             mush->addTemplate("mushroom");
-           
+            mush->setPosition(spawnpos);
+            
+        }
+     }
 
+          void SOBQBlock::spawnCoin() {
+        SOBCenterpoint* center_ = ((SOB*)getGametype())->center_;
 
-            //newBoots->addTemplate(center_->getBootsTemplate());
+         SOBCoin* mush = new SOBCoin(center_->getContext());
+         Vector3 spawnpos = this->getWorldPosition();
+         spawnpos.z += 0;
+
+        if (mush != nullptr && center_ != nullptr)
+        {
+            mush->addTemplate("coin");
             mush->setPosition(spawnpos);
-            //newBoots->setProperties(leftBoundary, rightBoundary, lowerBoundary, upperBoundary, xVelocity, zVelocity);
-            //newBoots->setFigure(figure_);
-            //center_->attach(newBoots);
+       
         }
      }
Index: code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.h
===================================================================
--- code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.h	(revision 11415)
+++ code/branches/SuperOrxoBros_FS17/src/modules/superorxobros/SOBQBlock.h	(revision 11416)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Fabien Vultier
+ *      Julien Kindle
  *   Co-authors:
- *      ...
+ *      
  *
  */
@@ -53,4 +53,5 @@
             std::string type_;
             void spawnMushroom();
+            void spawnCoin();
     };
            
