Index: code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.cc	(revision 11516)
@@ -1,23 +1,121 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file Invader.cc
+    @brief Implementation of the Invader class.
+*/
+
 #include "Asteroids.h"
+#include "Highscore.h"
+#include "core/CoreIncludes.h"
+#include "core/EventIncludes.h"
+#include "core/command/Executor.h"
+#include "core/config/ConfigValueIncludes.h"
+
+#include "gamestates/GSLevel.h"
+#include "chat/ChatManager.h"
+
+// ! HACK
+#include "infos/PlayerInfo.h"
+
+#include "AsteroidsCenterPoint.h"
+#include "AsteroidsShip.h"
+
+#include "core/command/ConsoleCommand.h"
+#include "worldentities/ExplosionPart.h"
 
 namespace orxonox
 {
-	RegisterUnloadableClass(Asteroids);
+    RegisterUnloadableClass(Asteroids);
 
-	Asteroids::Asteroids(Context* context) : Deathmatch(context)
-	{
-		level = 1;
-		this->numberOfBots = 0;
-	}
+    Asteroids::Asteroids(Context* context) : Deathmatch(context)
+    {
+        RegisterObject(Asteroids);
+        this->numberOfBots_ = 0; //sets number of default bots temporarly to 0
+        this->center_ = nullptr;
+        bEndGame = false;
+        lives = 3;
+        point = 0;
 
-	void Asteroids::spawnAsteroid();
+    }
 
-	void Asteroids::setCenterpoint(InvaderCenterPoint* center)
+
+    AsteroidsShip* Asteroids::getPlayer()
+    {
+        if (player == nullptr)
+        {
+            for (Asteroids* ship : ObjectList<AsteroidsShip>())
+                player = ship;
+        }
+        return player;
+    }
+
+
+    void Asteroids::setCenterpoint(AsteroidsCenterPoint* center)
     {
         this->center_ = center;
     }
 
-    void Asteroids::start();
-    void Asteroids::end();
-    
+    void Asteroids::costLife()
+    {
+        lives = 0;
+    };
+
+    void Asteroids::start()
+    {
+        // Set variable to temporarily force the player to spawn.
+        this->bForceSpawn_ = true;
+
+        if (this->center_ == nullptr)  // abandon mission!
+        {
+            orxout(internal_error) << "Invader: No Centerpoint specified." << endl;
+            GSLevel::startMainMenu();
+            return;
+        }
+        // Call start for the parent class.
+        Deathmatch::start();
+    }
+
+    void Asteroids::addPoints(int numPoints)
+    {
+        if (!bEndGame)
+        {
+            point += numPoints;
+        }
+    }
+
+    void Asteroids::end()
+    {
+        // DON'T CALL THIS!
+        //      Deathmatch::end();
+        // It will misteriously crash the game!
+        // Instead startMainMenu, this won't crash.
+        GSLevel::startMainMenu();
+    }
 }
Index: code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/Asteroids.h	(revision 11516)
@@ -33,9 +33,8 @@
 */
 
-#ifndef _Invader_H__
-#define _Invader_H__
+#ifndef _Asteroids_H__
+#define _Asteroids_H__
 
-#include "invader/InvaderPrereqs.h"
-
+#include "asteroids/AsteroidsPrereqs.h"
 #include "gametypes/Deathmatch.h"
 #include "tools/Timer.h"
@@ -44,36 +43,31 @@
 {
 
-    class _InvaderExport Invader : public Deathmatch
+    class _AsteroidsExport Asteroids : public Deathmatch
     {
         public:
-            Invader(Context* context);
+            Asteroids(Context* context);
 
             virtual void start() override;
             virtual void end() override;
+            virtual void tick(float dt) override;
             virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
 
-            void spawnEnemy();
-
-            void setCenterpoint(InvaderCenterPoint* center);
+            void setCenterpoint(AsteroidsCenterPoint* center);
 
             int getLives(){return this->lives;}
-            int getLevel(){return this->level;}
             int getPoints(){return this->point;}
-            int getMultiplier(){return this->multiplier;}
+            
+            void costLife();
+            void addPoints(int numPoints);
 
-            void costLife();
-            void levelUp();
-            void addPoints(int numPoints);
-            // checks if multiplier should be reset.
-            void comboControll();
             int lives;
-            int multiplier;
             bool bEndGame;
-            bool bShowLevel;
+            
         private:
             void toggleShowLevel(){bShowLevel = !bShowLevel;}
-            InvaderShip* getPlayer();
-            WeakPtr<InvaderCenterPoint> center_;
-            WeakPtr<InvaderShip> player;
+            AsteroidsShip* getPlayer();
+            WeakPtr<AsteroidsCenterPoint> center_;
+            WeakPtr<AsteroidsShip> player;
+            WeakPtr<Camera> camera;
 
             Timer enemySpawnTimer;
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.cc	(revision 11516)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.cc	(revision 11516)
@@ -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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderCenterPoint.cc
+    @brief Implementation of the InvaderCenterPoint class.
+*/
+
+#include "AsteroidsCenterPoint.h"
+
+#include "core/CoreIncludes.h"
+
+#include "Asteroids.h"
+
+namespace orxonox
+{
+    RegisterClass(AsteroidsCenterPoint);
+
+    AsteroidsCenterPoint::AsteroidsCenterPoint(Context* context) : StaticEntity(context)
+    {
+        RegisterObject(AsteroidsCenterPoint);
+
+        this->checkGametype();
+    }
+
+    void AsteroidsCenterPoint::checkGametype()
+    {
+        if (this->getGametype() != nullptr && this->getGametype()->isA(Class(Asteroids)))
+        {
+            Asteroids* AsteroidsGametype = orxonox_cast<Asteroids*>(this->getGametype());
+            AsteroidsGametype->setCenterpoint(this);
+        }
+    }
+}
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.h	(revision 11516)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsCenterPoint.h	(revision 11516)
@@ -0,0 +1,55 @@
+/*
+ *   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:
+ *      Florian Zinggeler
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+    @file InvaderCenterPoint.h
+    @brief Declaration of the InvaderCenterPoint class.
+    @ingroup Invader
+*/
+
+#ifndef _AsteroidsCenterPoint_H__
+#define _AsteroidsCenterPoint_H__
+
+#include "asteroids/AsteroidsPrereqs.h"
+
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+    class _AsteroidsExport AsteroidsCenterPoint : public StaticEntity
+    {
+        public:
+            AsteroidsCenterPoint(Context* context); //checks whether the gametype is actually Invader.
+
+        private:
+            void checkGametype();
+
+    };
+}
+
+#endif /* _InvaderCenterPoint_H__ */
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsPrereqs.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsPrereqs.h	(revision 11516)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsPrereqs.h	(revision 11516)
@@ -0,0 +1,74 @@
+/*
+ *   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:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Shared library macros, enums, constants and forward declarations for the tetris module
+*/
+
+#ifndef _AsteroidsPrereqs_H__
+#define _AsteroidsPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(TETRIS_STATIC_BUILD)
+#  ifdef ASTEROIDS_SHARED_BUILD
+#    define _AsteroidsExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _AsteroidsExport
+#    else
+#      define _AsteroidsExport __declspec(dllimport)
+#    endif
+#  endif
+#elif defined ( ORXONOX_GCC_VISIBILITY )
+#  define _AsteroidsExport  __attribute__ ((visibility("default")))
+#else
+#  define _AsteroidsExport
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+    class Asteroids;
+    class AsteroidsCenterpoint;
+    class AsteroidsStone;
+    class AsteroidsShip;
+    class AsteroidsWeapon;
+}
+
+#endif /* _AsteroidsPrereqs_H__ */
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.cc	(revision 11516)
@@ -3,8 +3,9 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
-#include "Invader.h"
-#include "InvaderEnemy.h"
+#include "Asteroids.h"
 #include "graphics/Camera.h"
+#include "asteroids/AsteroidStone"
 #include "weapons/projectiles/Projectile.h"
+
 
 namespace orxonox
@@ -16,11 +17,21 @@
     {
         RegisterObject(AsteroidsShip);
+        /*radius = 20;
+        x = getPosition().x;
+        y = getPosition().y;
+        dx = 3.0f;
+        dy = 3.0f;
+        angle= 0.0f;*/
 
-        float x = getPosition().x;
-        float y = getPosition().y;
-        float velocityx = 0.0f;
-        float velocityy = 0.0f;
-        this->bBoost_ = false;
+        speed = 830;
+        isFireing = false;
+        damping = 10;
+
+        lastTimeFront = 0;
+        lastTimeLeft = 0;
+        lastTime = 0;
+
     }
+
     //Destructor
     AsteroidsShip::~AsteroidsShip()
@@ -35,10 +46,28 @@
     void AsteroidsShip::tick(float dt)
     {
-        //Movement computation
-        Vector3 speed = Vector3 (100, 100, 0);
-        Vector3 position = this->getPosition();
-        position += (speed * dt);
-        this->setPosition(position);
+        /*Movement computation
+        Vector3 pos = getPosition();
+
+        dx *= damping;
+        dy *= damping;
+
+        float speed = sqrt(dx*dx+ dy*dy);
+        if(speed > maxspeed)
+        {
+            dx *= maxspeed/speed;
+            dy *= mayspeed/speed;
+        }
+
+        x += dx;
+        y += dy;
+
+        if(x>W) x=0;
+        if(x<0) x=W;
+        if(y>H) y=0;
+        if(y<0) y=H;
+        setPosition(x,y,0);
+
         //roll? muss sich das Raumschiff drehen?
+        setOrientation(angle, x, y, 0);
 
         //Schiessen wenn geschossen wurde
@@ -47,9 +76,76 @@
             ControllableEntity::fire(0);
         
-        //Leben verloren 
+        //Leben verloren */
+        Vector3 pos = getPosition();
+
+        //Movement calculation
+        lastTimeFront += dt * damping;
+        lastTimeLeft += dt * damping;
+        lastTime += dt;
+
+        velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
+        velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
+
+        //Execute movement
+        if (this->hasLocalController())
+        {
+            float dist_y = velocity.y * dt;
+            //float dist_x = velocity.x * dt;
+            if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
+                posforeward += dist_y;
+            else
+            {
+                velocity.y = 0;
+                // restart if game ended
+/*
+                if (getGame())
+                    if (getGame()->bEndGame)
+                    {
+                        getGame()->start();
+                        return;
+                    }*/
+            }
+
+            pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
+        }
+
+
+        // Camera
+        Camera* camera = this->getCamera();
+        if (camera != nullptr)
+        {
+            // camera->setPosition(Vector3(-pos.z, -posforeward, 0));
+            camera->setOrientation(Vector3::UNIT_Z, Degree(0));
+        }
+
+
+
+        // bring back on track!
+        if(pos.y != 0)
+        {
+            pos.y = 0;
+        }
+
+        setPosition(pos);
+        setOrientation(Vector3::UNIT_Y, Degree(270));
+
+        SUPER(AsteroidsShip, tick, dt);
     }
     
-    void 
+    Asteroids* AsteroidsShip::getGame()
+    {
+        if (game == nullptr)
+        {
+            for (Asteroids* asteroids : ObjectList<Asteroids>())
+                game = asteroids;
+        }
+        return game;
+    }
 
+    void InvaderShip::death()
+    {
+        getGame()->costLife();
+        SpaceShip::death();
+    }
 
 
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsShip.h	(revision 11516)
@@ -33,52 +33,31 @@
 */
 
-#ifndef _DodgeRace_H__
-#define _DodgeRace_H__
-
-#include "dodgerace/DodgeRacePrereqs.h"
-
-#include "DodgeRaceCenterPoint.h" // Necessary for WeakPointer??
-//#include "DodgeRaceShip.h"        DO NOT include in Header. Will cause forward declaration issues
-
-//#include "DodgeRaceHUDinfo.h"
+#ifndef _Asteroids_H__
+#define _Asteroids_H__
 
 
-#include "core/EventIncludes.h"
-#include "core/command/Executor.h"
-#include "core/config/ConfigValueIncludes.h"
-
-#include "gamestates/GSLevel.h"
-#include "chat/ChatManager.h"
-#include <vector>
-
-// ! HACK
-#include "infos/PlayerInfo.h"
-
-#include "core/command/ConsoleCommand.h"
-
+#include "asteroids/AsteroidsPrereqs.h"
 #include "gametypes/Deathmatch.h"
-#include "tools/Timer.h"
+#include "worldentities/pawns/SpaceShip.h"
+#include "weapons/projectiles/Projectile.h"
+#include <math.h>
 
 namespace orxonox
 {
 
-    class _DodgeRaceExport DodgeRace : public Deathmatch
+    class _AsteroidsExport Asteroids : public SpaceShip
     {
        public:
-            DodgeRace(Context* context);
-
-            virtual void start() override;
-            virtual void end() override;
+            Asteroids(Context* context);
 
             virtual void tick(float dt) override;
 
-            virtual void playerPreSpawn(PlayerInfo* player) override;
+            // overwrite for 2d movement
+            virtual void moveFrontBack(const Vector2& value) override;
+            virtual void moveRightLeft(const Vector2& value) override;
 
-            void levelUp();
+            // Starts or stops fireing
+            virtual void boost(bool bBoost) override;
 
-            int getLives(){return this->lives;}
-            int getLevel(){return this->level;}
-            int getPoints(){return this->point;}
-            int getMultiplier(){return this->multiplier;}
 
             void setCenterpoint(DodgeRaceCenterPoint* center)
@@ -86,60 +65,32 @@
             virtual void addBots(unsigned int amount) override{} //<! overwrite function in order to bypass the addbots command
 
-            // checks if multiplier should be reset.
-            void comboControll();
-            void costLife();
-
             bool bEndGame;
             bool bShowLevel;
             int lives;
-            int multiplier;
-            float counter;
-            int pattern;
-            float currentPosition;
-            float lastPosition;
+            float angle, radius;
+            float speed, damping, posforeward;
+            bool isFireing;
+
+            //Nachschauen wie gross das Spielfeld ist!
+            float H = 1000;
+            float W = 1000;
+
+        protected:
+            virtual void death() override;
 
        private:
-            Timer endGameTimer;
-
-            DodgeRaceShip* getPlayer();
-            WeakPtr<DodgeRaceShip> player;
-            std::vector<DodgeRaceCube*> cubeList;
-            void toggleShowLevel(){bShowLevel = !bShowLevel;}
-            void addPoints(int numPoints);
-
-            WeakPtr<DodgeRaceCenterPoint> center_;
-            int level;
-            int point;
-            bool b_combo;
-
-            Timer enemySpawnTimer;
-            Timer comboTimer;
-            Timer showLevelTimer;
-
-
-         /*
-
-            //void spawnEnemy();
-
-
-
-
-
-
-
-
-
-
-
-
-        private:
-
-
-
-
-            //Context* context;
-            */
+            Asteroids* getGame();
+            WeakPtr<Asteroids> game;
+            WeakPtr<WorldEntity> lastEntity;
+            Camera* camera;
+            float lastTimeFront, lastTimeLeft, lastTime;
+            struct Velocity
+            {
+                float x;
+                float y;
+            } velocity, desiredVelocity;
+            
     };
 }
 
-#endif /* _DodgeRace_H__ */
+#endif /* _Asteroids_H__ */
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.cc	(revision 11516)
@@ -32,37 +32,43 @@
 */
 
-#include "InvaderEnemy.h"
-
+#include "AsteroidsStone.h"
 #include "core/CoreIncludes.h"
-#include "Invader.h"
-#include "InvaderShip.h"
+#include "Asteroids.h"
+#include "AsteroidsShip.h"
+#include <cmath>
+#include "util/Math.h"
 
 namespace orxonox
 {
-    RegisterClass(InvaderEnemy);
+    RegisterClass(AsteroidsStone);
 
-    InvaderEnemy::InvaderEnemy(Context* context) : Pawn(context)
+    AsteroidsStone::AsteroidsStone(Context* context) : MovableEntity(context)
     {
-        RegisterObject(InvaderEnemy);
-        enableCollisionCallback();
-        lifetime = 0;
+        RegisterObject(AsteroidsStone);
+
+        maxspeed = 50.0f;
+        //Random Spawn? pos= random?
+        this->setPosition(rnd(0, fieldWidth_), rnd(0, fieldHeigth_), 0);
+		if(r){
+			this.r = r*0.5;
+		}else{
+			this.r = rnd(15, 50);
+		}
+
+		//random Geschwindigkeit und Richtung
+		velocity.x = rnd(0, maxspeed);
+		velocity.y = rnd(0, maxspeed);
+    }
+//Bis hier geschrieben
+    void AsteroidsStone::tick(float dt)
+    {
+    	Vector3 pos = this->getPosition();
+    	pos.x += velocity.x*dt;
+    	pos.y += velocity.y*dt;
+        setPosition(pos);
+        SUPER(AsteroidsStone, tick, dt);
     }
 
-    void InvaderEnemy::tick(float dt)
-    {
-        lifetime += dt;
-        // die after 5 seconds.
-        if (lifetime > 5000)
-            removeHealth(2000);
-
-        if (player != nullptr)
-        {
-            float newZ = 2/(pow(std::abs(getPosition().x - player->getPosition().x) * 0.01f, 2) + 1) * (player->getPosition().z - getPosition().z);
-            setVelocity(Vector3(1000.f - level * 100 , 0, newZ));
-        }
-        SUPER(InvaderEnemy, tick, dt);
-    }
-
-    inline bool InvaderEnemy::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
+    inline bool AsteroidsStone::collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint)
     {
         if(orxonox_cast<InvaderShip*>(otherObject))
@@ -71,19 +77,4 @@
     }
 
-    Invader* InvaderEnemy::getGame()
-    {
-        if (game == nullptr)
-        {
-            for (Invader* invader : ObjectList<Invader>())
-                game = invader;
-        }
-        return game;
-    }
 
-    void InvaderEnemy::damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs)
-    {
-        Pawn::damage(damage, healthdamage, shielddamage, originator, cs);
-        if (getGame() && orxonox_cast<InvaderShip*>(originator) != nullptr && getHealth() <= 0)
-            getGame()->addPoints(42);
-    }
 }
Index: code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/AsteroidsStone.h	(revision 11516)
@@ -32,38 +32,28 @@
 */
 
-#ifndef _InvaderEnemy_H__
-#define _InvaderEnemy_H__
+#ifndef _AsteroidsStone_H__
+#define _AsteroidsStone_H__
 
-#include "invader/InvaderPrereqs.h"
+#include "asteroids/AsteroidsPrereqs.h"
 
-#include "worldentities/pawns/Pawn.h"
+#include "worldentities/MovableEntity.h"
 
 namespace orxonox
 {
-    class _InvaderExport InvaderEnemy : public Pawn
+    class _AsteroidsExport AsteroidsStone : public MovableEntity
     {
         public:
-            InvaderEnemy(Context* context);
+            AsteroidsStone(Context* context);
+            virtual void tick(float dt) override;
 
-            virtual void tick(float dt) override;
-            virtual bool collidesAgainst(WorldEntity* otherObject, const btCollisionShape* ownCollisionShape, btManifoldPoint& contactPoint) override;
-            virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator, const btCollisionShape* cs) override;
-            virtual void setInvaderPlayer(InvaderShip* player){this->player = player;}
-
+            float r;
             int level;
         protected:
-            Invader* getGame();
-            WeakPtr<Invader> game;
-            WeakPtr<InvaderShip> player;
-            Camera* camera;
-            bool isFireing;
-            float speed, damping;
-            float lastTimeFront, lastTimeLeft;
-            float lifetime;
-            struct Velocity
-            {
-                float x;
-                float y;
-            } velocity, desiredVelocity;
+            float fieldWidth_;
+            float fieldHeight_;
+            Vector2 velocity;
+            float maxspeed;
+
+
 
     };
Index: code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt
===================================================================
--- code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt	(revision 11506)
+++ code/branches/Asteroid_HS17/src/modules/asteroids/CMakeLists.txt	(revision 11516)
@@ -1,16 +1,13 @@
-SET_SOURCE_FILES(Invader_SRC_FILES
-BUILD_UNIT InvaderBuildUnit.cc
-  Invader.cc
-  InvaderCenterPoint.cc
+SET_SOURCE_FILES(ASTEROIDS_SRC_FILES
+BUILD_UNIT AsteroidsBuildUnit.cc
+  Asteroids.cc
+  AsteroidsCenterPoint.cc
   InvaderShip.cc
-  InvaderEnemy.cc
-  InvaderEnemyShooter.cc
-  InvaderWeapon.cc
-  InvaderWeaponEnemy.cc
-  InvaderHUDinfo.cc
+  AsteroidsStone.cc
+  AsteroidsWeapon.cc
 END_BUILD_UNIT
 )
 
-ORXONOX_ADD_LIBRARY(invader
+ORXONOX_ADD_LIBRARY(asteroids
   PLUGIN
   FIND_HEADER_FILES
@@ -19,4 +16,4 @@
     overlays
     weapons
-  SOURCE_FILES ${Invader_SRC_FILES}
+  SOURCE_FILES ${ASTEROIDS_SRC_FILES}
 )
