Index: /code/branches/lastmanstanding2/data/levels/lastManStanding.oxw
===================================================================
--- /code/branches/lastmanstanding2/data/levels/lastManStanding.oxw	(revision 7900)
+++ /code/branches/lastmanstanding2/data/levels/lastManStanding.oxw	(revision 7901)
@@ -1,2 +1,8 @@
+<LevelInfo
+ name = "Last Man Standing"
+ description = "Be the sole survivor."
+ tags = ""
+/>
+
 <?lua
   include("stats.oxo")
Index: /code/branches/lastmanstanding2/data/levels/lastTeamStanding.oxw
===================================================================
--- /code/branches/lastmanstanding2/data/levels/lastTeamStanding.oxw	(revision 7900)
+++ /code/branches/lastmanstanding2/data/levels/lastTeamStanding.oxw	(revision 7901)
@@ -1,2 +1,7 @@
+<LevelInfo
+ name = "Last Team Standing"
+ description = "Survive as a team."
+ tags = "singleplayer"
+/>
 <?lua
   include("stats.oxo")
Index: /code/branches/lastmanstanding2/data/overlays/lastTeamStandingHUD.oxo
===================================================================
--- /code/branches/lastmanstanding2/data/overlays/lastTeamStandingHUD.oxo	(revision 7900)
+++ /code/branches/lastmanstanding2/data/overlays/lastTeamStandingHUD.oxo	(revision 7901)
@@ -2,5 +2,5 @@
   <OverlayGroup name="lastTeamStandingHUD" scale = "1, 1">
 
-<GametypeFadingMessag
+<GametypeFadingMessage
      name     = "fadingmessage"
      position = "0.5, 0.01"
Index: /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.cc
===================================================================
--- /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.cc	(revision 7900)
+++ /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.cc	(revision 7901)
@@ -36,4 +36,5 @@
 #include "worldentities/ControllableEntity.h"
 #include "worldentities/pawns/Spectator.h"
+//#include "gametypes/Gametype.h"
 
 namespace orxonox
@@ -50,6 +51,8 @@
         RegisterObject(GametypeStatus);
 
+        //this->game_ = 0;
         this->owner_ = 0;
         this->bNoCaption_ = false;
+        //this->bForcedSpawn_ = false;
 
         ModifyConsoleCommand(__CC_GametypeStatus_name, __CC_displayCaption_name).setObject(this);
@@ -67,4 +70,9 @@
         if (this->owner_ && this->owner_->getGametypeInfo() && this->owner_->getControllableEntity())
         {
+            //if (this->game_)
+            //    this->bForcedSpawn_ = this->game_->getForceSpawn();
+            //else
+            //    this->bForcedSpawn_ = false;
+
             const GametypeInfo* gtinfo = this->owner_->getGametypeInfo();
             ControllableEntity* ce = this->owner_->getControllableEntity();
@@ -87,5 +95,5 @@
                 if (gtinfo->isStartCountdownRunning())
                     this->setCaption(multi_cast<std::string>(static_cast<int>(ceil(gtinfo->getStartCountdown()))));
-                else if (ce->isA(Class(Spectator)))
+                else if (ce->isA(Class(Spectator))/*&&(!bForcedSpawn_)*/)
                     this->setCaption("Press [Fire] to respawn");
                 else
@@ -101,5 +109,5 @@
     {
         SUPER(GametypeStatus, changedOwner);
-
+        //this->game_ = orxonox_cast<Gametype*>(this->getOwner());
         this->owner_ = orxonox_cast<PlayerInfo*>(this->getOwner());
     }
Index: /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.h
===================================================================
--- /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.h	(revision 7900)
+++ /code/branches/lastmanstanding2/src/modules/overlays/hud/GametypeStatus.h	(revision 7901)
@@ -49,6 +49,8 @@
 
         private:
+            //Gametype* game_;
             PlayerInfo* owner_;
             bool bNoCaption_;
+            //bool bForcedSpawn_;
 
     };
Index: /code/branches/lastmanstanding2/src/orxonox/gametypes/Gametype.h
===================================================================
--- /code/branches/lastmanstanding2/src/orxonox/gametypes/Gametype.h	(revision 7900)
+++ /code/branches/lastmanstanding2/src/orxonox/gametypes/Gametype.h	(revision 7901)
@@ -150,4 +150,7 @@
               { this->timeLimit_ = t; }
 
+            //inline bool getForceSpawn()
+            //  { return this->bForceSpawn_; }       
+
             virtual void resetTimer();
             virtual void resetTimer(float t);
Index: /code/branches/lastmanstanding2/src/orxonox/gametypes/LastTeamStanding.cc
===================================================================
--- /code/branches/lastmanstanding2/src/orxonox/gametypes/LastTeamStanding.cc	(revision 7900)
+++ /code/branches/lastmanstanding2/src/orxonox/gametypes/LastTeamStanding.cc	(revision 7901)
@@ -58,9 +58,9 @@
     LastTeamStanding::~LastTeamStanding()
     {
-        this->playerLives_.clear();
-        this->eachTeamsPlayers.clear();
-        this->timeToAct_.clear();
-        this->inGame_.clear();
-        this->playerDelayTime_.clear();
+        //this->playerLives_.clear();
+        //this->eachTeamsPlayers.clear();
+        //this->timeToAct_.clear();
+        //this->inGame_.clear();
+        //this->playerDelayTime_.clear();
     }   
 
@@ -75,8 +75,4 @@
             playerLives_[player]=getMinLives();//new players only get minimum of lives */
         
-        if(this->eachTeamsPlayers[getTeam(player)]==0) //if a player is the first in his group, a new team is alive
-            this->teamsAlive++;
-        this->eachTeamsPlayers[getTeam(player)]++; //the number of player in this team is increased
-
         if (teamsAlive>1) // Now the game is allowed to end, since there are at least two teams.
             bMinTeamsReached = true; // since there are at least two teams, the game is allowed to end
@@ -84,4 +80,10 @@
         this->playerDelayTime_[player] = respawnDelay;
         this->inGame_[player] = true;
+        int team = getTeam(player);
+        if( team < 0|| team > teams_) // make sure getTeam returns a regular value
+            return;
+        if(this->eachTeamsPlayers[team]==0) //if a player is the first in his group, a new team is alive
+            this->teamsAlive++;
+        this->eachTeamsPlayers[team]++; //the number of player in this team is increased
     }
 
@@ -91,11 +93,14 @@
         if (valid_player)
         {
-            this->eachTeamsPlayers[getTeam(player)]--;       // a player left the team
-            if(this->eachTeamsPlayers[getTeam(player)] == 0) // if it was the last player a team died
-                 this->teamsAlive--;
             this->playerLives_.erase(player);
             this->timeToAct_.erase(player);
             this->playerDelayTime_.erase(player);
             this->inGame_.erase(player);
+            int team = getTeam(player);
+            if( team < 0|| team > teams_) // make sure getTeam returns a regular value
+                return valid_player;
+            this->eachTeamsPlayers[team]--;       // a player left the team
+            if(this->eachTeamsPlayers[team] == 0) // if it was the last player a team died
+                this->teamsAlive--;
         }
 
@@ -114,6 +119,9 @@
         if (playerLives_[victim->getPlayer()]<=0) //if player lost all lives
         {
-            this->eachTeamsPlayers[getTeam(victim->getPlayer())]--;
-            if(eachTeamsPlayers[getTeam(victim->getPlayer())] == 0) //last team member died
+            int team = getTeam(victim->getPlayer());
+            if(team < 0|| team > teams_) // make sure getTeam returns a regular value
+                return allow;
+            this->eachTeamsPlayers[team]--;
+            if(eachTeamsPlayers[team] == 0) //last team member died
                 this->teamsAlive--;
             const std::string& message = victim->getPlayer()->getName() + " has lost all lives";
@@ -121,5 +129,4 @@
             Host::Broadcast(message);
         }
-
         return allow;
     }
