Index: code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.cc
===================================================================
--- code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.cc	(revision 2951)
+++ code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.cc	(revision 2952)
@@ -93,5 +93,5 @@
         if (!this->gtinfo_.bStarted_)
             this->checkStart();
-        else
+        else if (!this->gtinfo_.bEnded_)
             this->spawnDeadPlayersIfRequested();
 
@@ -111,4 +111,29 @@
     {
         this->gtinfo_.bEnded_ = true;
+
+        for (std::map<PlayerInfo*, Player>::iterator it = this->players_.begin(); it != this->players_.end(); ++it)
+        {
+            if (it->first->getControllableEntity())
+            {
+                ControllableEntity* oldentity = it->first->getControllableEntity();
+        
+                ControllableEntity* entity = this->defaultControllableEntity_.fabricate(oldentity->getCreator());
+                if (oldentity->getCamera())
+                {
+                    entity->setPosition(oldentity->getCamera()->getWorldPosition());
+                    entity->setOrientation(oldentity->getCamera()->getWorldOrientation());
+                }
+                else
+                {
+                    entity->setPosition(oldentity->getWorldPosition());
+                    entity->setOrientation(oldentity->getWorldOrientation());
+                }
+
+                it->first->stopControl(oldentity, true);
+                it->first->startControl(entity);
+            }
+            else
+                this->spawnPlayerAsDefaultPawn(it->first);
+        }
     }
 
@@ -254,18 +279,6 @@
                 if (!it->first->isReadyToSpawn() || !this->gtinfo_.bStarted_)
                 {
-                    SpawnPoint* spawn = this->getBestSpawnPoint(it->first);
-                    if (spawn)
-                    {
-                        // force spawn at spawnpoint with default pawn
-                        ControllableEntity* entity = this->defaultControllableEntity_.fabricate(spawn);
-                        spawn->spawn(entity);
-                        it->first->startControl(entity);
-                        it->second.state_ = PlayerState::Dead;
-                    }
-                    else
-                    {
-                        COUT(1) << "Error: No SpawnPoints in current Gametype" << std::endl;
-                        abort();
-                    }
+                    this->spawnPlayerAsDefaultPawn(it->first);
+                    it->second.state_ = PlayerState::Dead;
                 }
             }
@@ -345,4 +358,21 @@
     }
 
+    void Gametype::spawnPlayerAsDefaultPawn(PlayerInfo* player)
+    {
+        SpawnPoint* spawn = this->getBestSpawnPoint(player);
+        if (spawn)
+        {
+            // force spawn at spawnpoint with default pawn
+            ControllableEntity* entity = this->defaultControllableEntity_.fabricate(spawn);
+            spawn->spawn(entity);
+            player->startControl(entity);
+        }
+        else
+        {
+            COUT(1) << "Error: No SpawnPoints in current Gametype" << std::endl;
+            abort();
+        }
+    }
+
     void Gametype::addBots(unsigned int amount)
     {
Index: code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.h
===================================================================
--- code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.h	(revision 2951)
+++ code/branches/gametypes/src/orxonox/objects/gametypes/Gametype.h	(revision 2952)
@@ -132,4 +132,5 @@
             virtual void checkStart();
             virtual void spawnPlayer(PlayerInfo* player);
+            virtual void spawnPlayerAsDefaultPawn(PlayerInfo* player);
             virtual void spawnPlayersIfRequested();
             virtual void spawnDeadPlayersIfRequested();
Index: code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.cc
===================================================================
--- code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.cc	(revision 2951)
+++ code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.cc	(revision 2952)
@@ -35,4 +35,5 @@
 #include "objects/worldentities/TeamSpawnPoint.h"
 
+#include "network/Host.h"
 namespace orxonox
 {
@@ -50,4 +51,9 @@
     }
 
+    void UnderAttack::setConfigValues()
+    {
+        SetConfigValue(gameTime_, 30);
+    }
+
     void UnderAttack::addDestroyer(Destroyer* destroyer)
     {
@@ -60,7 +66,8 @@
         if (pawn == this->destroyer_)
         {
-
-            COUT(0) << "Ship destroyed! Team 0 has won!" << std::endl;
-            // Todo: end game
+            this->end(); //end gametype
+            std::string message = "Ship destroyed! Team 0 has won!";
+            COUT(0) << message << std::endl;
+            Host::Broadcast(message);
         }
     }
@@ -129,5 +136,8 @@
             {
                 gameEnded_ = true;
-                COUT(0) << "Time is up! Team 1 has won!" << std::endl;
+                this->end();
+                std::string message = "Time is up! Team 1 has won!";
+                COUT(0) << message << std::endl;
+                Host::Broadcast(message);
             }
         }
Index: code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.h
===================================================================
--- code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.h	(revision 2951)
+++ code/branches/gametypes/src/orxonox/objects/gametypes/UnderAttack.h	(revision 2952)
@@ -44,4 +44,7 @@
             UnderAttack(BaseObject* creator);
             virtual ~UnderAttack() {}
+
+            void setConfigValues();
+
             void tick (float dt);
             void addDestroyer(Destroyer* destroyer);
Index: code/branches/gametypes/src/orxonox/objects/worldentities/SpawnPoint.cc
===================================================================
--- code/branches/gametypes/src/orxonox/objects/worldentities/SpawnPoint.cc	(revision 2951)
+++ code/branches/gametypes/src/orxonox/objects/worldentities/SpawnPoint.cc	(revision 2952)
@@ -95,6 +95,6 @@
     void SpawnPoint::spawn(ControllableEntity* entity)
     {
-        entity->setPosition(this->getPosition());
-        entity->setOrientation(this->getOrientation());
+        entity->setPosition(this->getWorldPosition());
+        entity->setOrientation(this->getWorldOrientation());
     }
 }
