Index: branches/playability/src/world_entities/projectiles/spike_ball.cc
===================================================================
--- branches/playability/src/world_entities/projectiles/spike_ball.cc	(revision 10209)
+++ branches/playability/src/world_entities/projectiles/spike_ball.cc	(revision 10217)
@@ -74,5 +74,5 @@
   this->weaponMan->changeWeaponConfig(0);
 
-
+  this->ttd = false;
 }
 
@@ -177,6 +177,8 @@
 
   if (this->tickLifeCycle(dt)){
-    this->weaponMan->fire();
-    this->deactivate();
+    this->weaponMan->getWeapon(0)->requestAction(WA_SHOOT);
+    if (this->ttd)
+      this->deactivate();
+    this->ttd = true;
   }
 
Index: branches/playability/src/world_entities/projectiles/spike_ball.h
===================================================================
--- branches/playability/src/world_entities/projectiles/spike_ball.h	(revision 10209)
+++ branches/playability/src/world_entities/projectiles/spike_ball.h	(revision 10217)
@@ -65,4 +65,5 @@
     WeaponManager*                   weaponMan;
 
+    bool                             ttd;
 };
 
Index: branches/playability/src/world_entities/space_ships/space_ship.cc
===================================================================
--- branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10209)
+++ branches/playability/src/world_entities/space_ships/space_ship.cc	(revision 10217)
@@ -202,5 +202,5 @@
   
   this->weaponMan.changeWeaponConfig(3);
-  this->secWeaponMan.changeWeaponConfig(0);
+  this->secWeaponMan.changeWeaponConfig(1);
 
   curWeaponPrimary    = 3;
Index: branches/playability/src/world_entities/weapons/spike_launcher.cc
===================================================================
--- branches/playability/src/world_entities/weapons/spike_launcher.cc	(revision 10209)
+++ branches/playability/src/world_entities/weapons/spike_launcher.cc	(revision 10217)
@@ -108,4 +108,19 @@
   this->launcher = new Vector [this->spikes];
 
+  this->getProjectileFactory()->prepare(this->spikes);  //we don't need more...
+
+//   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");
+
+}
+
+void SpikeLauncher::loadParams(const TiXmlElement* root)
+{
+  Weapon::loadParams(root);
+}
+
+void SpikeLauncher::activate()
+{
   this->launcher[0] = Vector(1.0, 0.0, 0.0);
   this->launcher[1] = Vector(0.0, 1.0, 0.0);
@@ -130,20 +145,4 @@
     this->launcher[tmp + i] =  this->launcher[i] * (-1);
   }
-
-  this->getProjectileFactory()->prepare(this->spikes);  //we don't need more...
-
-//   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");
-
-}
-
-void SpikeLauncher::loadParams(const TiXmlElement* root)
-{
-  Weapon::loadParams(root);
-}
-
-void SpikeLauncher::activate()
-{
 }
 
@@ -196,4 +195,15 @@
   ca = cos (this->getParent()->getAngle());
   sa = sin (this->getParent()->getAngle());*/
+/*
+  float * m = new float [9];
+  m[0] = 1.0f+(1.0f-ca)*(nx*nx-1.0f);
+  m[1] = -nz*sa+(1.0f-ca)*nx*ny;
+  m[2] = ny*sa+(1.0f-ca)*nx*nz;
+  m[3] = nz*sa+(1.0f-ca)*nx*ny;
+  m[4] = 1.0f+(1.0f-ca)*(ny*ny-1.0f);
+  m[5] = -nx*sa+(1.0f-ca)*ny*nz;
+  m[6] = -ny*sa+(1.0f-ca)*nx*nz;
+  m[7] = nx*sa+(1.0f-ca)*ny*nz;
+  m[8] = 1.0f+(1.0f-ca)*(nz*nz-1.0f);*/
 
   m[0][0] = nx * nx * (1 - ca) + ca;
@@ -209,8 +219,12 @@
   float x, y, z;
   for (int i = 0; i < this->spikes;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;
     z = m[2][0] * this->launcher[i].x + m[2][1] * this->launcher[i].y + m[2][2] * this->launcher[i].z;
-
+/*
+    x = this->launcher[i].x * m[0] + this->launcher[i].y * m[1] + this->launcher[i].z * m[2];
+    y = this->launcher[i].x * m[3] + this->launcher[i].y * m[4] + this->launcher[i].z * m[5];
+    z = this->launcher[i].x * m[6] + this->launcher[i].y * m[7] + this->launcher[i].z * m[8];*/
     this->launcher[i] = Vector (x, y, z);
   }
@@ -224,8 +238,8 @@
 void SpikeLauncher::fire()
 {
-  // temporary solution to test module
+  // temporary solution to test the module
   updateFireDir(VECTOR_RAND(1), 20);
 
-
+  printf("fireing spikes\n");
   Projectile* pj = NULL;
   for (int i = 0; i < this->spikes; i++)
@@ -240,5 +254,7 @@
     pj->setParent(PNode::getNullParent());
     pj->setAbsCoor(this->getAbsCoor() + this->launcher[i] * this->size);
-    pj->setRelDir(0, this->launcher[i].x, this->launcher[i].y, this->launcher[i].z);
+//     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());
Index: branches/playability/src/world_entities/weapons/spike_launcher.h
===================================================================
--- branches/playability/src/world_entities/weapons/spike_launcher.h	(revision 10209)
+++ branches/playability/src/world_entities/weapons/spike_launcher.h	(revision 10217)
@@ -28,5 +28,5 @@
     virtual void fire();
 
-    virtual void updateFireDir(Vector v, float angle);
+    virtual void updateFireDir(Vector t, float angle);
 
   private:
