Index: branches/playability/src/world_entities/projectiles/mbolt.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/mbolt.cc	(revision 10063)
+++ branches/playability/src/world_entities/projectiles/mbolt.cc	(revision 10064)
@@ -24,5 +24,8 @@
 
 #include "particles/dot_emitter.h"
+#include "particles/box_emitter.h"
 #include "particles/sprite_particles.h"
+
+#include "space_ships/space_ship.h"
 
 #include <cassert>
@@ -33,4 +36,5 @@
 
 #include "class_id_DEPRECATED.h"
+ObjectListDefinition(MBolt);
 CREATE_FAST_FACTORY_STATIC(MBolt);
 
@@ -40,5 +44,5 @@
 MBolt::MBolt () : Projectile()
 {
-
+  this->registerObject(this, MBolt::_objectList);
   this->loadModel("models/projectiles/mbolt.obj",0.25);
   //this->loadModel("models/projectiles/laser.obj");
@@ -49,9 +53,12 @@
   this->angle     = 0;
 
-  this->emitter = new DotEmitter(40, 0, M_2_PI);
+
+  //this->emitter = new DotEmitter(1000, 0, 0);
+  this->emitter = new BoxEmitter(Vector(8,1,1)*dynamic_cast<StaticModel*>(this->getModel())->getScaleFactor(), 1000, 0, 0);
   this->emitter->setParent(this);
-  this->emitter->setSpread(M_PI, M_PI);
-  this->emitter->setEmissionRate(300.0);
-  this->emitter->setEmissionVelocity(50.0);
+  this->emitter->setSpread(M_PI,M_PI);
+  this->emitter->setInheritSpeed(this->velocity.len());
+  this->emitter->setEmissionRate(500.0);
+  this->emitter->setEmissionVelocity(this->velocity.len());
 
   this->mat = new Material("mBolt");
@@ -59,6 +66,7 @@
   this->mat->setBlendFunc(GL_SRC_ALPHA,GL_ONE);
   this->mat->setDiffuse(1,1,1);
-  this->mat->setDiffuseMap("laser.png");
+  this->mat->setDiffuseMap("laser_add.png");
   this->mat->setDiffuseMap("laser.png",1);
+
   dynamic_cast<StaticModel*>(this->getModel())->addMaterial(this->mat);
   dynamic_cast<StaticModel*>(this->getModel())->finalize();
@@ -99,11 +107,11 @@
     MBolt::trailParticles->setName("BoomerangProjectileTrailParticles");
     MBolt::trailParticles->setMaterialTexture("maps/radial-trans-noise.png");
-    MBolt::trailParticles->setLifeSpan(1, 0);
-    MBolt::trailParticles->setRadius(0.0, 1);
-    MBolt::trailParticles->setRadius(1.0, 1);
+    MBolt::trailParticles->setLifeSpan(0.3, 0);
+    MBolt::trailParticles->setRadius(0.0, .8);
+    MBolt::trailParticles->setRadius(1.0, .2);
     MBolt::trailParticles->setColor(0.0, 1,0,0,.9);
     MBolt::trailParticles->setColor(0.2, .8,.2,0,.9);
-    MBolt::trailParticles->setColor(0.5, .8,.4,0,.8);
-    MBolt::trailParticles->setColor(1.0, .8,.8,0,.7);
+    MBolt::trailParticles->setColor(0.5, .8,.4,.4,.8);
+    MBolt::trailParticles->setColor(1.0, .8,.8,.8,.7);
   }
   if (unlikely(MBolt::explosionParticles == NULL))
@@ -125,8 +133,8 @@
   this->emitter->setSystem(MBolt::trailParticles);
 
+  this->emitter->setSpread(0);
+  this->emitter->setEmissionRate(80.0);
+  this->emitter->setEmissionVelocity(0);
   this->updateNode(0);
-  this->emitter->setSpread(0);
-  this->emitter->setEmissionRate(20.0);
-  this->emitter->setEmissionVelocity(this->velocity.len());
 }
 
@@ -152,4 +160,5 @@
     this->destroy( entity );
   this->hitEntity = entity;
+  dynamic_cast<SpaceShip*>(entity)->damage(this->getDamage(),0);
 }
 
Index: branches/playability/src/world_entities/projectiles/mbolt.h
===================================================================
--- branches/playability/src/world_entities/projectiles/mbolt.h	(revision 10063)
+++ branches/playability/src/world_entities/projectiles/mbolt.h	(revision 10064)
@@ -18,5 +18,5 @@
 class MBolt : public Projectile
 {
-  //ObjectListDeclaration(MBolt);
+  ObjectListDeclaration(MBolt);
   public:
     MBolt ();
@@ -41,5 +41,5 @@
 
     float                             angle;
-    static const float                rotationSpeed = 540;
+    static const float                rotationSpeed = 1080;
 
     ParticleEmitter*                  emitter;
Index: branches/playability/src/world_entities/projectiles/swarm_projectile.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10063)
+++ branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10064)
@@ -23,4 +23,5 @@
 #include "particles/dot_emitter.h"
 #include "particles/sprite_particles.h"
+#include "space_ships/space_ship.h"
 
 #include "debug.h"
@@ -44,5 +45,5 @@
   this->setMinEnergy(1);
   this->setHealthMax(10);
-  this->lifeSpan = 2.0;
+  this->lifeSpan = 4.0;
   this->agility = 3.5;
   this->maxVelocity = 100;
@@ -64,5 +65,5 @@
 SwarmProjectile::~SwarmProjectile ()
 {
-  // delete this->emitter;
+
 
   /* this is normaly done by World.cc by deleting the ParticleEngine */
@@ -79,5 +80,5 @@
     SwarmProjectile::explosionParticles = NULL;
   }
-
+   delete this->emitter;
 }
 
@@ -96,7 +97,7 @@
     SwarmProjectile::trailParticles->setLifeSpan(1.0, .3);
     SwarmProjectile::trailParticles->setRadius(0.0, .5);
-    SwarmProjectile::trailParticles->setRadius(0.2, 4.0);
-    SwarmProjectile::trailParticles->setRadius(.5, 1.5);
-    SwarmProjectile::trailParticles->setRadius(1.0, 1.5);
+    SwarmProjectile::trailParticles->setRadius(0.2, 2.0);
+    SwarmProjectile::trailParticles->setRadius(.5, 1.0);
+    SwarmProjectile::trailParticles->setRadius(1.0, 0.6);
     SwarmProjectile::trailParticles->setColor(0.0, 1,0,0,.7);
     SwarmProjectile::trailParticles->setColor(0.2, .8,.8,0,.5);
@@ -145,4 +146,5 @@
     this->destroy( entity );
   this->hitEntity = entity;
+  dynamic_cast<SpaceShip*>(entity)->damage(this->getDamage(),0);
 }
 
Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10063)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10064)
@@ -84,4 +84,5 @@
 {
   this->setPlayer(NULL);
+  delete this->emitter;
 }
 
@@ -135,5 +136,5 @@
   //  this->setRelDir(Quaternion(M_PI, Vector(1,0,0)));
   this->registerObject(this, SpaceShip::_objectList);
-
+  this->toList(OM_GROUP_00);
   PRINTF(4)("SPACESHIP INIT\n");
 
@@ -207,11 +208,4 @@
   electronicTH      = .7 * electronicMax; // 30% of eDamage can be handled by the ship
 
-  /*
-  this->addWeapon(wpLeft, 1, 0);
-  this->addWeapon(wpRight,1 ,1);
-  //this->addWeapon(cannon, 0, 6);
-
-  this->getWeaponManager().changeWeaponConfig(1);
-  */
 
   this->loadModel("models/ships/mantawing.obj");
@@ -220,14 +214,4 @@
   bForward = bBackward = bLeft = bRight = bAscend = bDescend = bRollL = bRollR = bFire = bSecFire = false;
   
-  /*
-  xMouse = yMouse = 0;
-  yInvert = 1;
-  mouseSensitivity = 0.001;
-  airViscosity = 0.9;
-  controlVelocityX = 25;
-  controlVelocityY = 150;
-  shipInertia = 1.5;
-  */
-  //  cycle = 0.0;
 
   this->setHealthMax(shieldMax);
@@ -237,25 +221,8 @@
 
   // camera - issue
-  //this->cameraNode = State::getCameraNode();
   this->cameraNode.addNodeFlags(PNODE_PROHIBIT_DELETE_WITH_PARENT);
   this->cameraNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
 
-  /*
-  this->velocity = this->getAbsDirX()*travelSpeed;
-  this->mouseDir = this->getAbsDir();
-  this->pitchDir = this->getAbsDir();
-  */
-
-
-  //   GLGuiButton* button = new GLGuiPushButton();
-  //    button->show();
-  //    button->setLabel("orxonox");
-  //    button->setBindNode(this);
-  //     GLGuiBar* bar = new GLGuiBar();
-  //     bar->show();
-  //     bar->setValue(7.0);
-  //     bar->setMaximum(10);
-  //     bar->setSize2D( 20, 100);
-  //     bar->setAbsCoor2D( 10, 200);
+
 
   //add events to the eventlist
@@ -276,20 +243,20 @@
   this->weaponMan.setSlotCount(6);
 
-  this->weaponMan.setSlotPosition(0, Vector(-2.6, .1, -3.0));
+  this->weaponMan.setSlotPosition(0, Vector(-2.6, 0, -3.0));
   this->weaponMan.setSlotCapability(0, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
-  this->weaponMan.setSlotPosition(1, Vector(-2.6, .1, 3.0));
+  this->weaponMan.setSlotPosition(1, Vector(-2.6, 0, 3.0));
   this->weaponMan.setSlotCapability(1, WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
 
-  this->weaponMan.setSlotPosition(2, Vector(-1.5, .5, -.5));
+  this->weaponMan.setSlotPosition(2, Vector(-1.5, 0, -.5));
   this->weaponMan.setSlotDirection(2, Quaternion(-M_PI_4*.5, Vector(1,0,0)));
 
-  this->weaponMan.setSlotPosition(3, Vector(-1.5, .5, .5));
+  this->weaponMan.setSlotPosition(3, Vector(-1.5, 0, .5));
   this->weaponMan.setSlotDirection(3, Quaternion(M_PI_4*.5, Vector(1,0,0)));
 
-  this->weaponMan.setSlotPosition(4, Vector(-1.5, -.5, .5));
+  this->weaponMan.setSlotPosition(4, Vector(-1.5, 0, .5));
   this->weaponMan.setSlotDirection(4, Quaternion(-M_PI_4*.5+M_PI, Vector(1,0,0)));
 
-  this->weaponMan.setSlotPosition(5, Vector(-1.5, -.5, -.5));
+  this->weaponMan.setSlotPosition(5, Vector(-1.5, 0, -.5));
   this->weaponMan.setSlotDirection(5, Quaternion(+M_PI_4*.5-M_PI, Vector(1,0,0)));
 
@@ -314,10 +281,4 @@
   this->secWeaponMan.setSlotDirection(5, Quaternion(+M_PI_4*.5-M_PI, Vector(1,0,0)));
 
-  //
-  //   this->getWeaponManager().setSlotPosition(8, Vector(-2.5, -0.3, -2.0));
-  //   this->getWeaponManager().setSlotDirection(8, Quaternion(-M_PI, Vector(1,0,0)));
-  //
-  //   this->getWeaponManager().setSlotPosition(9, Vector(-2.5, -0.3, 2.0));
-  //   this->getWeaponManager().setSlotDirection(9, Quaternion(+M_PI, Vector(1,0,0)));:
 
   this->weaponMan.getFixedTarget()->setParent(this);
@@ -335,4 +296,5 @@
   this->burstEmitter->setRelCoor(-1, .5, 0);
   this->burstEmitter->setName("SpaceShip_Burst_emitter");
+  this->burstEmitter->setEmissionRate(200);
 
   this->burstSystem = new SpriteParticles(1000);
@@ -340,8 +302,8 @@
   this->burstSystem->setName("SpaceShip_Burst_System");
   ((SpriteParticles*)this->burstSystem)->setMaterialTexture("maps/radial-trans-noise.png");
-  this->burstSystem->setLifeSpan(1.0, .3);
+  this->burstSystem->setLifeSpan(0.4, .3);
   this->burstSystem->setRadius(0.0, 1.0);
   this->burstSystem->setRadius(0.05, 1.0);
-  this->burstSystem->setRadius(.5, .8);
+  this->burstSystem->setRadius(.5, .6);
   this->burstSystem->setRadius(1.0, 0);
   this->burstSystem->setColor(0.0, .7,.7,1,.7);
@@ -350,15 +312,5 @@
   this->burstSystem->setColor(1.0, .8,.8,.8,.0);
 
-  /*
-  registerVar( new SynchronizeableQuaternion( &mouseDir, &mouseDir, "mousedir", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bUp, &bUp, "bUp", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bDown, &bDown, "bDown", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bLeft, &bLeft, "bLeft", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bRight, &bRight, "bRight", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bAscend, &bAscend, "bAscend", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bDescend, &bDescend, "bDescend", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bRollL, &bRollL, "bRollL", PERMISSION_OWNER ) );
-  registerVar( new SynchronizeableBool( &bRollR, &bRollR, "bRollR", PERMISSION_OWNER ) );
-  */
+  this->emitter = NULL;
 
   registerVar( new SynchronizeableBool( &bForward, &bForward, "bForward", PERMISSION_OWNER ) );
@@ -369,5 +321,4 @@
   registerVar( new SynchronizeableFloat( &rotation, &rotation, "rotation", PERMISSION_OWNER ) );
   registerVar( new SynchronizeableBool( &bFire, &bFire, "bSecFire", PERMISSION_OWNER));
-
   registerVar( new SynchronizeableVector( &velocity, &velocity, "velocity", PERMISSION_MASTER_SERVER ) );
 
@@ -404,27 +355,4 @@
 }
 
-/*
-void SpaceShip::setTravelHeight(float travelHeight)
-{
-  if (this->toTravelHeight == NULL)
-    this->toTravelHeight = new float;
-  *this->toTravelHeight = travelHeight;
-}
-*/
-
-/*
-void SpaceShip::setTravelDistance(const Vector2D& distance)
-{
-  this->travelDistance = distance;
-}
-
-void SpaceShip::setTravelDistance(float x, float y)
-{
-  this->setTravelDistance(Vector2D(x, y));
-}
-*/
-
-
-
 void SpaceShip::reset()
 {
@@ -441,4 +369,5 @@
 {
   this->secWeaponMan.showCrosshair();
+  this->toList( OM_GROUP_01 );
   //dynamic_cast<Element2D*>(this->secWeaponMan.getFixedTarget())->setVisibility( true);
   //this->attachCamera();
@@ -449,4 +378,5 @@
 {
   this->secWeaponMan.hideCrosshair();
+  this->toList(OM_GROUP_00);
   //dynamic_cast<Element2D*>(this->secWeaponMan.getFixedTarget())->setVisibility( false);
   //this->detachCamera();
@@ -466,5 +396,9 @@
 */
 void SpaceShip::leftWorld ()
-{}
+{/*
+  this->emitter->stop();
+  delete this->emitter;
+  delete this->explosionParticles; */
+}
 
 WorldEntity* ref = NULL;
@@ -603,55 +537,4 @@
 
 }
-
-/*
-void SpaceShip::calculateVelocity (float time)
-{
-  Vector accel(0.0, 0.0, 0.0);
-  /* calculate the direction in which the craft is heading  */
-  /*
-  if( this->bUp )
-  {
-    accel += (this->getAbsDirX())*acceleration;
-
-  }
-
-  if( this->bDown )
-  {
-    accel -= (this->getAbsDirX())*0.5*acceleration;
-
-  }
-
-  if( this->bLeft)
-  {
-    this->shiftDir(Quaternion(time, Vector(0,1,0)));
-  }
-  if( this->bRight)
-  {
-    this->shiftDir(Quaternion(-time, Vector(0,1,0)));
-  }
-
-
-  if( this->bRollL)
-  {
-    mouseDir *= Quaternion(-time*2, Vector(1,0,0));
-  }
-  if( this->bRollR)
-  {
-    mouseDir *= Quaternion(time*2, Vector(1,0,0));
-
-  }
-  if (this->bAscend )
-  {
-    this->shiftDir(Quaternion(time, Vector(0,0,1)));
-  }
-  if (this->bDescend )
-  {
-    this->shiftDir(Quaternion(-time, Vector(0,0,1)));
-  }
-
-  velocity += accel*time*10;
-
-}
-*/
 
 /**
@@ -689,14 +572,41 @@
 {
   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);
 }
 
 void SpaceShip::respawn( )
 {
-  toList( OM_PLAYERS );
+  toList( OM_GROUP_00 );
 }
 
 
 void SpaceShip::damage(float pDamage, float eDamage){
-if( this->shieldActive) {
+  PRINTF(0)("ship hit");
+  printf("Shit hit");
+  if( this->shieldActive) {
     if( this->shieldCur > pDamage) {
       this->shieldCur = this->shieldCur - pDamage;
@@ -717,4 +627,5 @@
   }
   if( this->armorCur <= 0) { /* FIXME implement shipcrash*/ }
+    this->destroy(this);
 }
 
Index: branches/playability/src/world_entities/space_ships/space_ship.h
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.h	(revision 10063)
+++ branches/playability/src/world_entities/space_ships/space_ship.h	(revision 10064)
@@ -176,4 +176,8 @@
     ParticleEmitter*      burstEmitter;
     ParticleSystem*       burstSystem;
+
+    
+    SpriteParticles*           explosionParticles;
+    ParticleEmitter*           emitter;
 };
 
Index: branches/playability/src/world_entities/weapons/medium_blaster.cc
===================================================================
--- branches/playability/src/world_entities/weapons/medium_blaster.cc	(revision 10063)
+++ branches/playability/src/world_entities/weapons/medium_blaster.cc	(revision 10064)
@@ -96,5 +96,5 @@
   pj->setParent(PNode::getNullParent());
 
-  pj->setVelocity(this->getAbsDir().apply(Vector(1,0,0))*150);
+  pj->setVelocity(this->getAbsDir().apply(Vector(1,0,0))*160);
 
   pj->setAbsCoor(this->getEmissionPoint());
