Index: branches/playability/src/world_entities/projectiles/spike.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/spike.cc	(revision 10270)
+++ branches/playability/src/world_entities/projectiles/spike.cc	(revision 10271)
@@ -132,5 +132,4 @@
 void Spike::tick (float dt)
 {
-  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
   Vector v = this->velocity * dt;
   this->shiftCoor(v);
@@ -140,6 +139,4 @@
 
   angle += rotationSpeed * dt;
-
-/*  printf( "spike tick\n" );*/
 }
 
@@ -160,6 +157,4 @@
 {
   glPushAttrib(GL_ENABLE_BIT);
-  //glDisable(GL_LIGHTING);
-
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
@@ -170,12 +165,10 @@
   glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
   glRotatef(angle, 1.0, 0.0, 0.0);
+
   this->getAbsDir().matrix (matrix);
   glMultMatrixf((float*)matrix);
   this->getModel()->draw();
 
-//   this->halo->draw();
-
   glPopMatrix();
-
   glPopAttrib();
 }
Index: branches/playability/src/world_entities/projectiles/spike_ball.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/spike_ball.cc	(revision 10270)
+++ branches/playability/src/world_entities/projectiles/spike_ball.cc	(revision 10271)
@@ -179,27 +179,25 @@
 {
   Spike* pj = NULL;
-/*  printf( "KA-" );*/
+
+  updateFireDir();
+
   for ( int i = 0; i < this->getFragments(); i++)
   {
     pj  = new Spike();
     assert( pj );
-/*    printf(" %i", i);*/
     pj->setParent(PNode::getNullParent());
 
-    pj->setVelocity(this->launcher[i].getNormalized() * 250.0);
+    dynamic_cast<Spike*>(pj)->setVelocity(this->launcher[i].getNormalized() * 250.0);
 
     pj->setParent(PNode::getNullParent());
     pj->setAbsCoor(this->getAbsCoor() + this->launcher[i] * this->size);
-    Quaternion q;
-    pj->setAbsDir(q.lookAt(Vector(), this->launcher[i], VECTOR_RAND(1)));
+//     Quaternion q;
+//     pj->setAbsDir(q.lookAt(Vector(), this->launcher[i], VECTOR_RAND(1)));
+    pj->setRelDir(Quaternion(0, this->launcher[i]));
 
     pj->toList(this->getOMListNumber());
 
-/*
-    pj->setAbsCoor(this->getAbsCoor() + VECTOR_RAND(3));
-    pj->setAbsDir(this->getAbsDir());*/
     pj->activate();
   }
-/*  printf( "BOOM\n" );*/
 }
 
@@ -219,5 +217,4 @@
   ca = cos (this->getAngle());
   sa = sin (this->getAngle());
-// final version below... easier to to cheat with the one above.
 
   m[0][0] = nx * nx * (1 - ca) + ca;
@@ -233,5 +230,4 @@
   float x, y, z;
   for (int i = 0; i < this->getFragments(); i++){
-//     printf("%i ", i);
     x = m[0][0] * this->launcher[i].x + m[0][1] * this->launcher[i].y + m[0][2] * this->launcher[i].z;
     y = m[1][0] * this->launcher[i].x + m[1][1] * this->launcher[i].y + m[1][2] * this->launcher[i].z;
@@ -240,5 +236,4 @@
     this->launcher[i] = Vector (x, y, z);
   }
-//   printf("\n");
 
   for( int i = 0; i < 3 ; i++)
@@ -254,13 +249,7 @@
 void SpikeBall::tick (float dt)
 {
-  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
-  Vector v = this->getVelocity() * dt;
+  Vector v = this->velocity * dt;
   this->shiftCoor(v);
 
-//   if(this->lifeCycle > .9){
-// /*    printf("time to blow:  ");*/
-// //     this->weaponMan->fire();
-// /*    this->blow();*/
-//   }
 
   if (this->tickLifeCycle(dt)){
@@ -270,5 +259,4 @@
 
   this->updateAngle( dt );
-//   angle += rotationSpeed * dt;
 }
 
@@ -289,6 +277,4 @@
 {
   glPushAttrib(GL_ENABLE_BIT);
-  //glDisable(GL_LIGHTING);
-
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
@@ -296,4 +282,6 @@
   float matrix[4][4];
   glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
+
+  this->halo->draw();
 
   glRotatef(angle, this->getRotationAxis().x, this->getRotationAxis().y, this->getRotationAxis().z);
@@ -302,8 +290,5 @@
   this->getModel()->draw();
 
-  this->halo->draw();
-
   glPopMatrix();
-
   glPopAttrib();
 }
Index: branches/playability/src/world_entities/projectiles/spike_ball.h
===================================================================
--- branches/playability/src/world_entities/projectiles/spike_ball.h	(revision 10270)
+++ branches/playability/src/world_entities/projectiles/spike_ball.h	(revision 10271)
@@ -41,5 +41,5 @@
     virtual void draw () const;
 
-//     inline void setVelocity(Vector velocity) { this->velocity = velocity; }
+    inline void setVelocity(Vector velocity) { this->velocity = velocity; }
 
 //     inline Vector getRotationVector() { return this->rotationVector; }
@@ -53,9 +53,5 @@
     ParticleEmitter*                  emitter;
 
-//     float                             speed;
-
-//     float                             angle;
-//     float                             rotationSpeed;
-//     Vector                            rotationVector;
+    Vector                            velocity;
 
     Billboard*                        halo;
@@ -63,10 +59,7 @@
     WorldEntity* hitEntity; // FIXME TEMPORARY
 
-//     WeaponManager*                   weaponMan;
-
     void updateFireDir();
     virtual void blow();
 
-//     int           spikes;
     Vector*       launcher;
     float         size;
Index: branches/playability/src/world_entities/projectiles/swarm_projectile.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10270)
+++ branches/playability/src/world_entities/projectiles/swarm_projectile.cc	(revision 10271)
@@ -219,5 +219,5 @@
 
 
-/** old  guiding functuion*/
+/** old  guiding function*/
 
   float projectileVelocity = this->getVelocity().len();
@@ -229,12 +229,12 @@
     if (likely(projectileVelocity != 0 || projectileVelocity != this->maxVelocity) )
       this->velocity *= (this->maxVelocity / projectileVelocity); // set speed to max
-
-//   printf("position: %f, %f, %f\n", this->getAbsCoor().x, this->getAbsCoor().y, this->getAbsCoor().z);
-//   printf("target position: %f, %f, %f\n", this->target->getAbsCoor().x, this->target->getAbsCoor().y, this->target->getAbsCoor().z);
+/*
+  printf("position: %f, %f, %f\n", this->getAbsCoor().x, this->getAbsCoor().y, this->getAbsCoor().z);
+  printf("target position: %f, %f, %f\n", this->target->getAbsCoor().x, this->target->getAbsCoor().y, this->target->getAbsCoor().z);*/
 
   this->shiftCoor(this->velocity * time);
 
-
 /*
+
   Vector pjV = this->getVelocity();
   Vector tV = this->target->getVelocity();
@@ -244,5 +244,5 @@
 
   float A = 2 * pT.len() * pT.len();
-  float B = 2 * a.len() * tV.len();
+  float B = 2 * a.len() * a.len();
   float D = 2 * sqrt(B * B - 4 * pT.len() * pT.len() *(tV.len() * tV.len() - pjV.len() * pjV.len()));
   float tti;
Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10270)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10271)
@@ -201,5 +201,5 @@
 
   this->weaponMan.changeWeaponConfig(3);
-  this->secWeaponMan.changeWeaponConfig(0);
+  this->secWeaponMan.changeWeaponConfig(1);
 
   curWeaponPrimary    = 3;
Index: branches/playability/src/world_entities/weapons/heavy_blaster.cc
===================================================================
--- branches/playability/src/world_entities/weapons/heavy_blaster.cc	(revision 10270)
+++ branches/playability/src/world_entities/weapons/heavy_blaster.cc	(revision 10271)
@@ -41,7 +41,6 @@
   }
   delete [] this->emissionPoint;
-  
-   delete [] this->shootAnim;
-   delete [] this->objComp;
+  delete [] this->shootAnim;
+  delete [] this->objComp;
 /*
     for(int j = 0; j < this->getSegs(); j++)
Index: branches/playability/src/world_entities/weapons/spike_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/spike_launcher.cc	(revision 10270)
+++ branches/playability/src/world_entities/weapons/spike_launcher.cc	(revision 10271)
@@ -239,8 +239,6 @@
 void SpikeLauncher::fire()
 {
-  // temporary solution to test the module
   updateFireDir(VECTOR_RAND(1), 20);
 
-  printf("firing spikes\n");
   Projectile* pj = NULL;
   for (int i = 0; i < this->spikes; i++)
@@ -250,5 +248,4 @@
       return;
 
-//     pj->setVelocity(this->getVelocity()+(this->getAbsDir().apply(Vector(1,0,0))*115.0 + VECTOR_RAND(10)));
     pj->setVelocity(this->launcher[i].getNormalized() * 300.0);
 
@@ -257,7 +254,5 @@
     Quaternion q;
     pj->setRelDir(q.lookAt(Vector(), this->launcher[i], VECTOR_RAND(1)));
-//     pj->setRelDir(90, this->launcher[i].x, this->launcher[i].y, this->launcher[i].z);
-
-/*    pj->toList(this->getOMListNumber());*/
+
     pj->activate();
   }
Index: branches/playability/src/world_entities/weapons/spike_thrower.cc
===================================================================
--- branches/playability/src/world_entities/weapons/spike_thrower.cc	(revision 10270)
+++ branches/playability/src/world_entities/weapons/spike_thrower.cc	(revision 10271)
@@ -82,6 +82,6 @@
   animation1->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
   animation2->addKeyFrame(Vector(0, 0, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
-  animation2->addKeyFrame(Vector(0, -.5, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);*/
-/*
+  animation2->addKeyFrame(Vector(0, -.5, 0), Quaternion(), 0.3, ANIM_LINEAR, ANIM_CONSTANT);
+
   animation1->setInfinity(ANIM_INF_CONSTANT);
   animation2->setInfinity(ANIM_INF_CONSTANT);*/
@@ -104,7 +104,7 @@
   this->getProjectileFactory()->prepare(50);
 
-//   this->setActionSound(WA_SHOOT, "sound/explosions/explosion_1.wav");
-//   this->setActionSound(WA_ACTIVATE, "sound/vocals/missiles.wav");
-//   this->setActionSound(WA_RELOAD, "sound/vocals/reload.wav");
+  this->setActionSound(WA_SHOOT, "sound/explosions/explosion_1.wav");
+  this->setActionSound(WA_ACTIVATE, "sound/vocals/missiles.wav");
+  this->setActionSound(WA_RELOAD, "sound/vocals/reload.wav");
 
 }
@@ -156,6 +156,5 @@
   pj->setParent(PNode::getNullParent());
 
-//   pj->setVelocity(this->getParent()->getAbsDir().apply(Vector(1,0,0))*200 + this->getParent()->getParent()->getVelocity());
-  pj->setVelocity(this->getParent()->getVelocity() + this->getAbsDir().apply(Vector(1,0,0))*160);
+  dynamic_cast<SpikeBall*>(pj)->setVelocity(this->getAbsDir().apply(Vector(1,0,0))*110);
 
   pj->setAbsCoor(this->getEmissionPoint());
