Index: /trunk/src/util/multiplayer_team_deathmatch.cc
===================================================================
--- /trunk/src/util/multiplayer_team_deathmatch.cc	(revision 7117)
+++ /trunk/src/util/multiplayer_team_deathmatch.cc	(revision 7118)
@@ -184,5 +184,5 @@
   }
 
-  
+
   if ( SharedNetworkData::getInstance()->isGameServer() )
   {
@@ -190,7 +190,7 @@
     float offsety = 323.0f;
     float offsetz = 200.0f;
-    
+
     offsetz += 10;
-    
+
     Terrain * terrain = dynamic_cast<Terrain*>(*(ClassList::getList( CL_TERRAIN )->begin()));
     const std::list<BaseObject*> * list = ClassList::getList( CL_SPACE_SHIP );
@@ -209,5 +209,5 @@
       //PRINTF(0)("x = %f, y = %f, z = %f, height = %f\n", terrx, terry, terrz, terrain->getHeight( terrx, terry ));
       //ss->setRelCoorSoft( ss->getAbsCoor().x, terrain->getHeight( terrx, terry )-offsety, ss->getAbsCoor().z );
-      
+
       float dist = (dynamic_cast<Playable*>(*it)->getAbsCoor() - big_left).len();
       if( (dynamic_cast<Playable*>(*it)->getAbsCoor() - big_left).len() > rBig &&
@@ -215,5 +215,6 @@
            (dynamic_cast<Playable*>(*it)->getAbsCoor() - small_left).len() > rSmall &&
            (dynamic_cast<Playable*>(*it)->getAbsCoor() - small_middle).len() > rSmall &&
-           (dynamic_cast<Playable*>(*it)->getAbsCoor() - small_right).len() > rSmall)
+           (dynamic_cast<Playable*>(*it)->getAbsCoor() - small_right).len() > rSmall
+           && ss->getAbsCoor().x > -1000)
       {
         PRINTF(0)("KILLLLLLLL\n");
@@ -221,6 +222,6 @@
         if((*it)->isA(CL_SPACE_SHIP))
         {
-          dynamic_cast<SpaceShip*>(*it)->networkCollisionList.push_back(116369220.33434f);
-          dynamic_cast<SpaceShip*>(*it)->doCollideNetwork(116369220.33434f);
+          dynamic_cast<SpaceShip*>(*it)->networkCollisionList.push_back(1163692);
+          dynamic_cast<SpaceShip*>(*it)->doCollideNetwork(11636922);
         }
       }
Index: /trunk/src/world_entities/playable.cc
===================================================================
--- /trunk/src/world_entities/playable.cc	(revision 7117)
+++ /trunk/src/world_entities/playable.cc	(revision 7118)
@@ -33,4 +33,6 @@
 #include "sprite_particles.h"
 
+#include "effects/explosion.h"
+
 
 Playable::Playable()
@@ -53,20 +55,5 @@
   this->oldScore = 0;
 
-
-  this->emitter = new DotEmitter(100, 5, M_2_PI);
-  this->emitter->setParent(this);
-  this->emitter->setSpread(M_PI, M_PI);
-  this->emitter->setEmissionRate(300.0);
-  this->emitter->setEmissionVelocity(50.0);
-
-  this->explosionParticles = new SpriteParticles(1000);
-  this->explosionParticles->setName("LaserExplosionParticles");
-  this->explosionParticles->setLifeSpan(.5, .3);
-  this->explosionParticles->setRadius(0.0, 10.0);
-  this->explosionParticles->setRadius(.5, 6.0);
-  this->explosionParticles->setRadius(1.0, 3.0);
-  this->explosionParticles->setColor(0.0, 1,1,0,.9);
-  this->explosionParticles->setColor(0.5, .8,.8,0,.5);
-  this->explosionParticles->setColor(1.0, .8,.8,.7,.0);
+  this->bDead = false;
 }
 
@@ -156,6 +143,4 @@
     State::getGameRules()->onPlayerSpawn();
 
-  this->reset();
-
 
   if( this->getOwner() % 2 == 0)
@@ -171,4 +156,6 @@
     this->setAbsDir(1.0, -0.015, -0.012, 0.011);
   }
+  this->reset();
+  this->bDead = false;
 }
 
@@ -177,19 +164,22 @@
 void Playable::die()
 {
-  PRINTF(0)("Playable dies\n");
+  if( !this->bDead)
+  {
+    PRINTF(0)("Playable dies\n");
   // only if this is the spaceship of the player
-  if (State::isOnline())
-  {
-    if( this == State::getPlayer()->getPlayable())
-      State::getGameRules()->onPlayerDeath();
-
-
+    if (State::isOnline())
+    {
+      if( this == State::getPlayer()->getPlayable())
+        State::getGameRules()->onPlayerDeath();
+
+      Explosion::explode(dynamic_cast<PNode*>(this), Vector(1.0f, 1.0f, 1.0f));
 //     this->toList(OM_GROUP_05);
   //HACK: moves the entity to an unknown place far far away: in the future, GameRules will look for that
-    this->setAbsCoor(-2000.0, -2000.0, -2000.0);
+      this->setAbsCoor(-2000.0, -2000.0, -2000.0);
 
   //explosion hack
-    this->emitter->setSystem(explosionParticles);
-    this->emitter->setSystem(NULL);
+
+    }
+    this->bDead = true;
   }
 }
Index: /trunk/src/world_entities/playable.h
===================================================================
--- /trunk/src/world_entities/playable.h	(revision 7117)
+++ /trunk/src/world_entities/playable.h	(revision 7118)
@@ -18,4 +18,5 @@
 class Player;
 class SpriteParticles;
+class Explosion;
 
 //! Basic controllable WorldEntity
@@ -90,7 +91,8 @@
     int                   oldScore;
 
+    bool                  bDead;
+
     //TODO HACK: explosion emitter
-    DotEmitter*           emitter;
-    SpriteParticles*      explosionParticles;
+
 
     WorldEntity* collider;
