Index: /code/branches/presentation3/data/levels/gametype_dynamicmatch.oxw
===================================================================
--- /code/branches/presentation3/data/levels/gametype_dynamicmatch.oxw	(revision 7061)
+++ /code/branches/presentation3/data/levels/gametype_dynamicmatch.oxw	(revision 7062)
@@ -3,6 +3,7 @@
   include("stats.oxo")
   include("templates/spaceship_assff.oxt")
-  include("templates/spaceship_H2.oxt")
+  include("templates/spaceship_ghost.oxt")
   include("dynamicmatchhud.oxo")
+  include("templates/lodinformation.oxt")
 ?>
 
@@ -12,4 +13,8 @@
  gametype     = "Dynamicmatch"
 >
+  <templates>
+    <Template link=lodtemplate_default />
+  </templates>
+
   <Scene
    ambientlight = "0.5, 0.5, 0.5"
@@ -52,7 +57,7 @@
                 createSpaceStationPar(0,2,1,2,1,4,1,50)
               ?>
-                <TeamSpawnPoint team=2 position="20,20,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff/>
-                <TeamSpawnPoint team=2 position="-20,-20,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff/>
-                <TeamSpawnPoint team=2 position="-10,10,20" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff/>
+                <TeamSpawnPoint team=2 position="20,20,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipghost/>
+                <TeamSpawnPoint team=2 position="-20,-20,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipghost/>
+                <TeamSpawnPoint team=2 position="-10,10,20" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipghost/>
             </attached>
           </StaticEntity>
Index: /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.cc
===================================================================
--- /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.cc	(revision 7061)
+++ /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.cc	(revision 7062)
@@ -49,8 +49,11 @@
     }
 
-    void GametypeStaticMessage::staticmessage(const GametypeInfo* gtinfo, const std::string& message)
+    void GametypeStaticMessage::staticmessage(const GametypeInfo* gtinfo, const std::string& message, const ColourValue& colour)
     {
     if (this->owner_ && this->owner_->getGametypeInfo() == gtinfo)
+    {
+        this->setColour(colour);
         this->setCaption(message);
+    }
     }
 
Index: /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.h
===================================================================
--- /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.h	(revision 7061)
+++ /code/branches/presentation3/src/modules/overlays/hud/GametypeStaticMessage.h	(revision 7062)
@@ -48,5 +48,5 @@
             virtual void changedOwner();
 
-            void staticmessage(const GametypeInfo* gtinfo, const std::string& message);
+            void staticmessage(const GametypeInfo* gtinfo, const std::string& message, const ColourValue& colour);
             
         private:
Index: /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.cc
===================================================================
--- /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.cc	(revision 7061)
+++ /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.cc	(revision 7062)
@@ -82,5 +82,6 @@
 	this->pointsPerTime=0.0f;
         this->setHUDTemplate("DynamicmatchHUD");
-
+        this->allowDeath=false;
+        this->notYet=true;
     }
 
@@ -119,5 +120,12 @@
                 playerParty_[victim->getPlayer()]=piggy;	//victim's new party: pig
                 setPlayerColour(victim->getPlayer());		//victim's new colour
-                numberOf[piggy]++; 				//party switch: number of players is not affected (decrease and increase)
+                numberOf[piggy]++;				//party switch: number of players is not affected (decrease and increase)
+
+                if (target == killer)
+                {
+                     allowDeath=true;
+                     victim->kill(); //new ship
+                }
+
                     if(tutorial)				//announce party switch
                     {
@@ -125,5 +133,5 @@
                          if (it2 != this->players_.end())
                          {
-                              this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it2->first->getClientID());
+                              this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it2->first->getClientID(), partyColours_[chaser]);
                               this->gtinfo_->sendFadingMessage("You're now a victim.",it2->first->getClientID());
                          }
@@ -135,4 +143,6 @@
                         setPlayerColour(originator->getPlayer());		//originator's new colour
                         numberOf[killer]++;
+                        allowDeath=true;
+                        originator->kill(); //new ship for killer
                         if(tutorial)				//announce party switch
                         {
@@ -140,5 +150,5 @@
                              if (it3 != this->players_.end())
                              {
-                                  this->gtinfo_->sendStaticMessage("Take the chasers down.",it3->first->getClientID());
+                                  this->gtinfo_->sendStaticMessage("Take the chasers down.",it3->first->getClientID(), partyColours_[chaser]);
                                   this->gtinfo_->sendFadingMessage("You're now a killer.",it3->first->getClientID());
                              }
@@ -160,8 +170,11 @@
             else if (notEnoughKillers)
             {
-                numberOf[target]--; 	//decrease numberof victims's party
-                playerParty_[victim->getPlayer()]=killer; 	//victim's new party: killer
-                setPlayerColour(victim->getPlayer()); 		//victim colour
+                numberOf[source]--; 	//decrease numberof originator's party
+                playerParty_[originator->getPlayer()]=killer; 	//originator's new party: killer
+                setPlayerColour(originator->getPlayer()); 	//originator colour
                 numberOf[killer]++;				//party switch: number of players is not affected (decrease and increase)
+
+                allowDeath=true;
+                originator->kill(); //new ship
                 if(tutorial)				//announce party switch
                 {
@@ -169,5 +182,5 @@
                      if (it3 != this->players_.end())
                      {
-                          this->gtinfo_->sendStaticMessage("Take the chasers down.",it3->first->getClientID());
+                          this->gtinfo_->sendStaticMessage("Take the chasers down.",it3->first->getClientID(),partyColours_[chaser]);
                           this->gtinfo_->sendFadingMessage("You're now a killer.",it3->first->getClientID());
                      }
@@ -182,4 +195,8 @@
                 setPlayerColour(victim->getPlayer()); 		//victim colour
                 numberOf[chaser]++;				//party switch: number of players is not affected (decrease and increase)
+                
+                allowDeath=true;
+                victim->kill(); //new ship
+
                 if(tutorial)					//announce party switch
                 {
@@ -188,8 +205,8 @@
                      {
                           if (numberOf[killer]>0)
-                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it3->first->getClientID());
+                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it3->first->getClientID(),partyColours_[piggy]);
                               
                           else
-                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it3->first->getClientID());
+                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it3->first->getClientID(),partyColours_[piggy]);
                           this->gtinfo_->sendFadingMessage("You're now a chaser.",it3->first->getClientID());
                      }
@@ -231,7 +248,7 @@
                      {    
                           if (numberOf[killer]>0)
-                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID());
+                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(), partyColours_[piggy]);
                           else
-                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID());
+                              this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
                           this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                      }
@@ -239,5 +256,5 @@
                      if (it2 != this->players_.end())
                      {
-                          this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it2->first->getClientID());
+                          this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it2->first->getClientID(),partyColours_[chaser]);
                           this->gtinfo_->sendFadingMessage("You're now a victim.",it2->first->getClientID());
                      }
@@ -261,5 +278,11 @@
             setPlayerColour(victim->getPlayer()); 		//victim colour
             setPlayerColour(originator->getPlayer());		//originator colour
-             
+
+            notYet=false;
+            allowDeath=true;
+            victim->kill(); //new ship
+            originator->kill(); //new ship
+
+
             if(tutorial) //Announce pary switch
             {
@@ -267,5 +290,5 @@
                  if (it != this->players_.end())
                  {
-                      this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID());
+                      this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[chaser]);
                       this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                  }
@@ -273,5 +296,5 @@
                  if (it2 != this->players_.end())
                  {
-                      this->gtinfo_->sendStaticMessage("Take the chasers down.",it2->first->getClientID());
+                      this->gtinfo_->sendStaticMessage("Take the chasers down.",it2->first->getClientID(),partyColours_[chaser]);
                       this->gtinfo_->sendFadingMessage("You're now a killer.",it2->first->getClientID());
                  }
@@ -295,4 +318,12 @@
     bool Dynamicmatch::allowPawnDeath(Pawn* victim, Pawn* originator)
     {	
+        if (allowDeath)//Hack for Ghost-Spaceship
+        {
+          if (notYet)
+          {allowDeath=false;}
+          else
+          {notYet=true;}
+         return true;
+        }
         //killers can kill chasers and killers can be killed by chasers
         if ((playerParty_[originator->getPlayer()] == killer && playerParty_[victim->getPlayer()] == chaser)||(playerParty_[victim->getPlayer()] == killer &&
@@ -411,5 +442,5 @@
         }
     }
-    void Dynamicmatch::setPlayerColour(PlayerInfo* player) // sets a players colour
+    void Dynamicmatch::setPlayerColour(PlayerInfo* player) // sets a player's colour
     {
         std::map<PlayerInfo*, int>::const_iterator it_player = this->playerParty_.find(player);
@@ -445,5 +476,5 @@
                     if (it->first->getClientID() == CLIENTID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID());
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -463,17 +494,17 @@
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
                        else if (it->second==piggy)
                        {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
                        else if (it->second==killer)
                        {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -494,5 +525,5 @@
                     if (it->first->getClientID() == CLIENTID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID());
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -512,17 +543,17 @@
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
                        else if (it->second==piggy)
                        {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
                        else if (it->second==killer)
                        {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -544,5 +575,5 @@
                     if (it->first->getClientID() == CLIENTID_UNKNOWN)
                         continue;
-                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID());
+                    this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
                 }
             }
@@ -562,17 +593,17 @@
                        {
                            if (numberOf[killer]>0)
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible. Defend yourself against the killers.",it->first->getClientID(),partyColours_[piggy]);
                            else
-                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID());
+                               this->gtinfo_->sendStaticMessage("Shoot at the victim as often as possible.",it->first->getClientID(),partyColours_[piggy]);
                            //this->gtinfo_->sendFadingMessage("You're now a chaser.",it->first->getClientID());
                        }
                        else if (it->second==piggy)
                        {
-                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Either hide or shoot a chaser.",it->first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a victim.",it->first->getClientID());
                        }
                        else if (it->second==killer)
                        {
-                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID());
+                           this->gtinfo_->sendStaticMessage("Take the chasers down.",it->first->getClientID(),partyColours_[chaser]);
                            //this->gtinfo_->sendFadingMessage("You're now a killer.",it->first->getClientID());
                        }
@@ -625,5 +656,5 @@
                 if (it->first->getClientID() == CLIENTID_UNKNOWN)
                     continue;
-                this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID());
+                this->gtinfo_->sendStaticMessage("Selection phase: Shoot at everything that moves.",it->first->getClientID(),ColourValue(1.0f, 1.0f, 0.5f));
             }
         }
@@ -651,14 +682,4 @@
         COUT(0) << message << std::endl;
         Host::Broadcast(message);
-	/*for (std::map<PlayerInfo*, int>::iterator it = this->playerParty_.begin(); it != this->playerParty_.end(); ++it)
-                {
-                    if (it->first->getClientID() == CLIENTID_UNKNOWN)
-                        continue;
-
-                    if (it->second == 1)
-                        this->gtinfo_->sendAnnounceMessage("You have won the match!", it->first->getClientID());
-                    else
-                        this->gtinfo_->sendAnnounceMessage("You have lost the match!", it->first->getClientID());
-                }*/
     }
     SpawnPoint* Dynamicmatch::getBestSpawnPoint(PlayerInfo* player) const
Index: /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.h
===================================================================
--- /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.h	(revision 7061)
+++ /code/branches/presentation3/src/orxonox/gametypes/Dynamicmatch.h	(revision 7062)
@@ -79,4 +79,6 @@
         protected:
 
+            bool allowDeath;
+            bool notYet;
             std::map< PlayerInfo*, int > playerParty_; //player's parties are recorded here
             std::vector<ColourValue> partyColours_; //aus TeamDeathmatch
Index: /code/branches/presentation3/src/orxonox/infos/GametypeInfo.cc
===================================================================
--- /code/branches/presentation3/src/orxonox/infos/GametypeInfo.cc	(revision 7061)
+++ /code/branches/presentation3/src/orxonox/infos/GametypeInfo.cc	(revision 7062)
@@ -112,12 +112,12 @@
     }
 
-    void GametypeInfo::sendStaticMessage(const std::string& message, unsigned int clientID)
+    void GametypeInfo::sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour)
     {
         if (GameMode::isMaster())
         {
             if (clientID == CLIENTID_SERVER)
-                this->dispatchStaticMessage(message);
+                this->dispatchStaticMessage(message, colour);
             else
-                callMemberNetworkFunction(GametypeInfo, dispatchStaticMessage, this->getObjectID(), clientID, message);
+                callMemberNetworkFunction(GametypeInfo, dispatchStaticMessage, this->getObjectID(), clientID, message, colour);
         }
     }
@@ -152,8 +152,8 @@
     }
 
-     void GametypeInfo::dispatchStaticMessage(const std::string& message)
+     void GametypeInfo::dispatchStaticMessage(const std::string& message, const ColourValue& colour)
     {
         for (ObjectList<GametypeMessageListener>::iterator it = ObjectList<GametypeMessageListener>::begin(); it != ObjectList<GametypeMessageListener>::end(); ++it)
-            it->staticmessage(this, message);
+            it->staticmessage(this, message, colour);
     }
     
Index: /code/branches/presentation3/src/orxonox/infos/GametypeInfo.h
===================================================================
--- /code/branches/presentation3/src/orxonox/infos/GametypeInfo.h	(revision 7061)
+++ /code/branches/presentation3/src/orxonox/infos/GametypeInfo.h	(revision 7062)
@@ -64,5 +64,5 @@
             void sendKillMessage(const std::string& message, unsigned int clientID);
             void sendDeathMessage(const std::string& message, unsigned int clientID);
-            void sendStaticMessage(const std::string& message, unsigned int clientID);
+            void sendStaticMessage(const std::string& message, unsigned int clientID, const ColourValue& colour);
             void sendFadingMessage(const std::string& message, unsigned int clientID);
 
@@ -70,5 +70,5 @@
             void dispatchKillMessage(const std::string& message);
             void dispatchDeathMessage(const std::string& message);
-            void dispatchStaticMessage(const std::string& message);
+            void dispatchStaticMessage(const std::string& message,const ColourValue& colour);
             void dispatchFadingMessage(const std::string& message);
 
Index: /code/branches/presentation3/src/orxonox/interfaces/GametypeMessageListener.h
===================================================================
--- /code/branches/presentation3/src/orxonox/interfaces/GametypeMessageListener.h	(revision 7061)
+++ /code/branches/presentation3/src/orxonox/interfaces/GametypeMessageListener.h	(revision 7062)
@@ -44,5 +44,5 @@
             virtual void killmessage(const GametypeInfo* gtinfo, const std::string& message) {}
             virtual void deathmessage(const GametypeInfo* gtinfo, const std::string& message) {}
-            virtual void staticmessage(const GametypeInfo* gtinfo, const std::string& message) {}
+            virtual void staticmessage(const GametypeInfo* gtinfo, const std::string& message, const ColourValue& colour) {}
             virtual void fadingmessage(const GametypeInfo* gtinfo, const std::string& message) {}
     };
