Index: branches/playability/src/world_entities/WorldEntities.am
===================================================================
--- branches/playability/src/world_entities/WorldEntities.am	(revision 10072)
+++ branches/playability/src/world_entities/WorldEntities.am	(revision 10073)
@@ -88,4 +88,5 @@
 		world_entities/particles/box_emitter.cc \
 		world_entities/particles/plane_emitter.cc \
+        world_entities/particles/emitter_node.cc \
 		\
 		world_entities/particles/particle_system.cc \
@@ -199,4 +200,5 @@
 		particles/box_emitter.h \
 		particles/plane_emitter.h \
+        particles/emitter_node.h \
 		\
 		particles/particle_system.h \
Index: branches/playability/src/world_entities/particles/particle_emitter.h
===================================================================
--- branches/playability/src/world_entities/particles/particle_emitter.h	(revision 10072)
+++ branches/playability/src/world_entities/particles/particle_emitter.h	(revision 10073)
@@ -36,5 +36,5 @@
   void start();
   void stop();
-  void tick(float dt);
+  virtual void tick(float dt);
 
   void setSystem(ParticleSystem* system);
@@ -74,5 +74,5 @@
   float           momentumRandom;    //!< The random variation of the Momentum.
 
-private:
+//private:
   ParticleSystem* system;            //!< The ParticleSystem this Emitter Emits into.
   float           saveTime;          //!< The time that was missing by the last Tick (otherwise there would be no emission when framefate is too big).
Index: branches/playability/src/world_entities/projectiles/mbolt.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/mbolt.cc	(revision 10072)
+++ branches/playability/src/world_entities/projectiles/mbolt.cc	(revision 10073)
@@ -128,5 +128,5 @@
   }
 
-  this->setDamage(50);
+  this->setDamage(10);
   this->setHealth(0);
 
Index: branches/playability/src/world_entities/projectiles/swarm_projectile.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10072)
+++ branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10073)
@@ -93,9 +93,9 @@
   {
     SwarmProjectile::trailParticles = new SpriteParticles(2000);
-    SwarmProjectile::trailParticles->setName("BoomerangProjectileTrailParticles");
+    SwarmProjectile::trailParticles->setName("SwarmProjectileTrailParticles");
     SwarmProjectile::trailParticles->setMaterialTexture("maps/radial-trans-noise.png");
-    SwarmProjectile::trailParticles->setLifeSpan(1.0, .3);
+    SwarmProjectile::trailParticles->setLifeSpan(.5, 0);
     SwarmProjectile::trailParticles->setRadius(0.0, .5);
-    SwarmProjectile::trailParticles->setRadius(0.2, 2.0);
+    SwarmProjectile::trailParticles->setRadius(0.2, 1.5);
     SwarmProjectile::trailParticles->setRadius(.5, 1.0);
     SwarmProjectile::trailParticles->setRadius(1.0, 0.6);
@@ -108,5 +108,5 @@
   {
     SwarmProjectile::explosionParticles = new SpriteParticles(200);
-    SwarmProjectile::explosionParticles->setName("BoomerangProjectileExplosionParticles");
+    SwarmProjectile::explosionParticles->setName("SwarmProjectileExplosionParticles");
     SwarmProjectile::explosionParticles->setMaterialTexture("maps/radial-trans-noise.png");
     SwarmProjectile::explosionParticles->setLifeSpan(.5, .3);
@@ -123,5 +123,5 @@
 
   this->updateNode(0);
-  this->emitter->setEmissionRate(45.0);
+  this->emitter->setEmissionRate(160.0);
   this->emitter->setEmissionVelocity(0.0);
 
@@ -254,5 +254,5 @@
   this->emitter->setEmissionRate(1000.0);
   this->emitter->setEmissionVelocity(50.0);
-  //  this->deactivate();
+  this->deactivate();
 
 }
Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10072)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10073)
@@ -32,4 +32,5 @@
 
 #include "particles/dot_emitter.h"
+#include "particles/emitter_node.h"
 #include "particles/sprite_particles.h"
 
@@ -84,5 +85,4 @@
 {
   this->setPlayer(NULL);
-  delete this->emitter;
 }
 
@@ -144,21 +144,27 @@
 
   Weapon* wpRight1 = new LightBlaster ();
-  wpRight1->setName("LightBlaster");
+  wpRight1->setName( "LightBlaster");
+  wpRight1->setParent( this);
   Weapon* wpLeft1 = new LightBlaster ();
-  wpLeft1->setName("LightBlaster");
+  wpLeft1->setName( "LightBlaster");
+  wpLeft1->setParent( this);
 
   Weapon* wpRight2 = new MediumBlaster ();
-  wpRight2->setName("MediumBlaster");
+  wpRight2->setName( "MediumBlaster");
+  wpRight2->setParent( this);
   Weapon* wpLeft2 = new MediumBlaster ();
-  wpLeft2->setName("MediumBlaster");
+  wpLeft2->setName( "MediumBlaster");
+  wpLeft2->setParent( this);
 
   Weapon* wpRight3 = new HeavyBlaster ();
-  wpRight3->setName("HeavyBlaster");
+  wpRight3->setName( "HeavyBlaster");
+  wpRight3->setParent( this);
   Weapon* wpLeft3 = new HeavyBlaster ();
-  wpLeft3->setName("HeavyBlaster");
+  wpLeft3->setName( "HeavyBlaster");
+  wpLeft3->setParent( this);
 
   Weapon* cannon = new SwarmLauncher();
-  cannon->setName("SwarmLauncher");
-  
+  cannon->setName( "SwarmLauncher");
+  cannon->setParent( this);
 
 
@@ -241,4 +247,7 @@
   registerEvent(EV_MOUSE_MOTION);
 
+  this->weaponMan.setParentEntity( this);
+  this->secWeaponMan.setParentEntity( this);
+
   this->weaponMan.setSlotCount(6);
 
@@ -263,20 +272,20 @@
   this->secWeaponMan.setSlotCount(6);
 
-  this->secWeaponMan.setSlotPosition(0, Vector(1.5, -1, 0));
+  this->secWeaponMan.setSlotPosition(0, Vector(1.5, 0, 0));
   this->secWeaponMan.setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
-  this->secWeaponMan.setSlotPosition(1, Vector(2.6, .1, 3.0));
+  this->secWeaponMan.setSlotPosition(1, Vector(2.6, 0, 3.0));
   this->secWeaponMan.setSlotCapability(1, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
-  this->secWeaponMan.setSlotPosition(2, Vector(1.5, .5, -.5));
+  this->secWeaponMan.setSlotPosition(2, Vector(1.5, 0, -.5));
   this->secWeaponMan.setSlotDirection(2, Quaternion(-M_PI_4*.5, Vector(1,0,0)));
 
-  this->secWeaponMan.setSlotPosition(3, Vector(1.5, .5, .5));
+  this->secWeaponMan.setSlotPosition(3, Vector(1.5, 0, .5));
   this->secWeaponMan.setSlotDirection(3, Quaternion(M_PI_4*.5, Vector(1,0,0)));
 
-  this->secWeaponMan.setSlotPosition(4, Vector(1.5, -.5, .5));
+  this->secWeaponMan.setSlotPosition(4, Vector(1.5, 0, .5));
   this->secWeaponMan.setSlotDirection(4, Quaternion(-M_PI_4*.5+M_PI, Vector(1,0,0)));
 
-  this->secWeaponMan.setSlotPosition(5, Vector(1.5, -.5, -.5));
+  this->secWeaponMan.setSlotPosition(5, Vector(1.5, 0, -.5));
   this->secWeaponMan.setSlotDirection(5, Quaternion(+M_PI_4*.5-M_PI, Vector(1,0,0)));
 
@@ -292,25 +301,23 @@
   dynamic_cast<Element2D*>(this->weaponMan.getFixedTarget())->setVisibility( false);
 
-  this->burstEmitter = new DotEmitter(200, 0.0, .01);
+  this->burstEmitter = new DotEmitter(800, 0.0, .01);
   this->burstEmitter->setParent(this);
   this->burstEmitter->setRelCoor(-1, .5, 0);
   this->burstEmitter->setName("SpaceShip_Burst_emitter");
-  this->burstEmitter->setEmissionRate(200);
-
-  this->burstSystem = new SpriteParticles(1000);
+  this->burstEmitter->setEmissionRate(800);
+
+  this->burstSystem = new SpriteParticles(400);
   this->burstSystem->addEmitter(this->burstEmitter);
   this->burstSystem->setName("SpaceShip_Burst_System");
   ((SpriteParticles*)this->burstSystem)->setMaterialTexture("maps/radial-trans-noise.png");
-  this->burstSystem->setLifeSpan(0.4, .3);
+  this->burstSystem->setLifeSpan(0.3, .3);
   this->burstSystem->setRadius(0.0, 1.0);
   this->burstSystem->setRadius(0.05, 1.0);
   this->burstSystem->setRadius(.5, .6);
   this->burstSystem->setRadius(1.0, 0);
-  this->burstSystem->setColor(0.0, .7,.7,1,.7);
-  this->burstSystem->setColor(0.2, 0,0,0.8,.5);
+  this->burstSystem->setColor(0.0, .7,.7,1,.5);
+  this->burstSystem->setColor(0.2, 0,0,0.8,.7);
   this->burstSystem->setColor(0.5, .5,.5,.8,.8);
   this->burstSystem->setColor(1.0, .8,.8,.8,.0);
-
-  this->emitter = NULL;
 
   registerVar( new SynchronizeableBool( &bForward, &bForward, "bForward", PERMISSION_OWNER ) );
@@ -378,5 +385,5 @@
 {
   this->secWeaponMan.hideCrosshair();
-  this->toList(OM_GROUP_00);
+  this->toList( OM_GROUP_00);
   //dynamic_cast<Element2D*>(this->secWeaponMan.getFixedTarget())->setVisibility( false);
   //this->detachCamera();
@@ -396,8 +403,6 @@
 */
 void SpaceShip::leftWorld ()
-{/*
-  this->emitter->stop();
-  delete this->emitter;
-  delete this->explosionParticles; */
+{
+
 }
 
@@ -573,33 +578,44 @@
   PRINTF(0)("spaceship destroy\n");
 
-  this->explosionParticles = new SpriteParticles(1000);
-  this->explosionParticles->setName("MBoltExplosionParticles");
-  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->emitter = new DotEmitter(100000, 0, 0);
-  this->emitter->setParent(this);
-  this->emitter->setSpread(M_PI,M_PI);
-  this->emitter->setEmissionRate(50.0);
-  this->emitter->setEmissionVelocity(50.0);
-
-  this->emitter->setSystem(this->explosionParticles);
-
-  this->emitter->setSpread(50);
-  this->emitter->setEmissionRate(50.0);
-  this->emitter->setEmissionVelocity(50.0);
-  this->updateNode(0);
-
-  this->toList(OM_DEAD);
+  EmitterNode* node  = NULL;
+  DotEmitter* emitter = NULL;
+  SpriteParticles*  explosionParticles  = NULL;
+
+  explosionParticles = new SpriteParticles(100);
+  explosionParticles->setName("MBoltExplosionParticles");
+  explosionParticles->setLifeSpan(.5, .3);
+  explosionParticles->setRadius(0.0, 10.0);
+  explosionParticles->setRadius(.5, 6.0);
+  explosionParticles->setRadius(1.0, 3.0);
+  explosionParticles->setColor(0.0, 1,1,0,.9);
+  explosionParticles->setColor(0.5, .8,.8,0,.5);
+  explosionParticles->setColor(1.0, .8,.8,.7,.0);
+
+  
+  emitter = new DotEmitter( 200, 0, 0);
+  emitter->setSpread( M_PI, M_PI);
+  emitter->setSpread( 50);
+  emitter->setEmissionRate( 50.0);
+  emitter->setEmissionVelocity( 150.0);
+  emitter->setSystem( explosionParticles);
+  emitter->setAbsCoor( this->getAbsCoor());
+
+  node  = new EmitterNode( 1);
+  node->setupParticle( emitter, explosionParticles);
+  node->setVelocity( this->getParent()->getVelocity());
+  node->setAbsCoor( this->getAbsCoor());
+  node->start();
+
+  this->setAbsCoor(Vector(-10000,10000,10000));
+  this->hide();
+
+  this->toList( OM_DEAD);
+    PRINTF(0)("spaceship destroy == ship translated \n");
 }
 
 void SpaceShip::respawn( )
 {
-  toList( OM_GROUP_00 );
+  //this->show();
+  //this->toList( OM_GROUP_00);
 }
 
Index: branches/playability/src/world_entities/space_ships/space_ship.h
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.h	(revision 10072)
+++ branches/playability/src/world_entities/space_ships/space_ship.h	(revision 10073)
@@ -3,4 +3,6 @@
  * Implements the Control of a Spaceship
  * Space Ships are the core class for all types of ships in Orxonox
+ * By default is on OM_GROUP_00
+ * If player boards the ship, it is moved to OM_GROUP_01
  */
 
@@ -176,8 +178,4 @@
     ParticleEmitter*      burstEmitter;
     ParticleSystem*       burstSystem;
-
-    
-    SpriteParticles*           explosionParticles;
-    ParticleEmitter*           emitter;
 };
 
Index: branches/playability/src/world_entities/weapons/swarm_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10072)
+++ branches/playability/src/world_entities/weapons/swarm_launcher.cc	(revision 10073)
@@ -25,7 +25,15 @@
 #include "animation3d.h"
 
+#include <list>
+#include <iterator>
+#include "util/state.h"
+
+#include "math/quaternion.h"
+
 #include "util/loading/factory.h"
 
 #include "class_id_DEPRECATED.h"
+
+using namespace std;
 
 ObjectListDefinitionID(SwarmLauncher, CL_SWARM_LAUNCHER);
@@ -136,14 +144,28 @@
 void SwarmLauncher::fire()
 {
-  Projectile* pj = this->getProjectile();
-  if (pj == NULL)
-    return;
+  Projectile* pj;
+  int i = 0;
+  std::list<WorldEntity*> eList  = State::getObjectManager()->getEntityList( OM_GROUP_00);
+  list<WorldEntity*>::iterator eIterator;
+  PRINTF(0)("Iterator output: %i\n",eList.size());
+  for( eIterator = eList.begin(); eIterator != eList.end(); eIterator++);
+  {
+    PRINTF(0)("Iterator step: %i with content: %s\n",++i,*eIterator);
+    if( (dynamic_cast<WorldEntity*>(*eIterator)->getAbsCoor() - this->getAbsCoor()).len() <= 50000.0)
+    {
+      pj  = this->getProjectile();
+      if (pj == NULL)
+        return;
 
-  pj->setVelocity(this->getVelocity()+(this->getAbsDir().apply(Vector(1,0,0))*165.0 /*+ VECTOR_RAND(13) */
-            /*target->getAbsCoor() - this->getAbsCoor()*/)*.5);//this->getVelocity());
-
-  pj->setParent(PNode::getNullParent());
-  pj->setAbsCoor(this->getEmissionPoint());
-  pj->setAbsDir(this->getAbsDir());
-  pj->activate();
+	  pj->setVelocity(this->getVelocity()+(this->getAbsDir().apply(Vector(1,0,0))*165.0 + VECTOR_RAND(20))*.5);
+	
+	  pj->setParent(PNode::getNullParent());
+	  pj->setAbsCoor(this->getEmissionPoint());
+	  pj->setAbsDir(this->getAbsDir());
+	  pj->setTarget( *eIterator);
+	  pj->activate();
+      this->increaseEnergy( pj->getMinEnergy());
+    }
+  }
+  this->increaseEnergy( - pj->getMinEnergy());
 }
Index: branches/playability/src/world_entities/weapons/swarm_launcher.h
===================================================================
--- branches/playability/src/world_entities/weapons/swarm_launcher.h	(revision 10072)
+++ branches/playability/src/world_entities/weapons/swarm_launcher.h	(revision 10073)
@@ -8,4 +8,6 @@
 
 #include "weapon.h"
+
+#define SWARM_LAUNCHER_MAXRANGE = 500.0;
 
 class SwarmLauncher : public Weapon
