Index: trunk/src/world_entities/projectiles/hbolt.cc
===================================================================
--- trunk/src/world_entities/projectiles/hbolt.cc	(revision 10547)
+++ trunk/src/world_entities/projectiles/hbolt.cc	(revision 10618)
@@ -49,5 +49,5 @@
 
   this->angle = 0;
-  this->rotationSpeed = 600;
+//   this->rotationSpeed = 600;
 
   this->emitter = new DotEmitter(100, 5, M_2_PI);
@@ -146,5 +146,5 @@
     this->deactivate();
 
-  this->angle += this->rotationSpeed * dt;
+  this->angle += HBolt::rotationSpeed * dt;
 
   for( ObjectList<NPC>::const_iterator eIterator = NPC::objectList().begin(); eIterator !=NPC::objectList().end(); eIterator++)
@@ -177,21 +177,17 @@
   glPushAttrib(GL_ENABLE_BIT);
   glDisable(GL_LIGHTING);
-  glDisable(GL_FOG);
+//   glDisable(GL_FOG);
 
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
 
-
-  glTranslatef (this->getAbsCoor ().x,
-                  this->getAbsCoor ().y,
-                  this->getAbsCoor ().z);
-
-  this->halo->draw();
-
-  Vector tmpRot = this->getAbsDir().getSpacialAxis();
-  glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
-  glRotatef(this->angle, 0.0, 0.0, 1.0);
-
-  this->getModel()->draw();
+//     float matrix[4][4];
+    glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
+    Vector tmpRot = this->getAbsDir().getSpacialAxis();
+    glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
+    glRotatef(this->angle, 0.0, 0.0, 1.0);
+//     glMultMatrixf((float*)matrix);
+    this->getModel()->draw();
+    this->halo->draw();
 
   glPopMatrix();
Index: trunk/src/world_entities/projectiles/hbolt.h
===================================================================
--- trunk/src/world_entities/projectiles/hbolt.h	(revision 10547)
+++ trunk/src/world_entities/projectiles/hbolt.h	(revision 10618)
@@ -42,5 +42,5 @@
 
     float                             angle;
-    float                             rotationSpeed;
+    static const float                rotationSpeed = 600;
 
     Billboard*                        halo;
Index: trunk/src/world_entities/projectiles/lbolt.cc
===================================================================
--- trunk/src/world_entities/projectiles/lbolt.cc	(revision 10547)
+++ trunk/src/world_entities/projectiles/lbolt.cc	(revision 10618)
@@ -59,5 +59,4 @@
 
   this->angle = 0;
-  this->rotationSpeed = 130;
 
   this->halo = new Billboard();
@@ -148,5 +147,5 @@
     this->deactivate();
 
-  angle += rotationSpeed * dt;
+  angle += LBolt::rotationSpeed * dt;
 
   for( ObjectList<NPC>::const_iterator eIterator = NPC::objectList().begin(); eIterator !=NPC::objectList().end(); eIterator++)
@@ -182,16 +181,16 @@
   glPushMatrix();
 
-  float matrix[4][4];
-  glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
+    float matrix[4][4];
+    glTranslatef (this->getAbsCoor ().x, this->getAbsCoor ().y, this->getAbsCoor ().z);
+    Vector tmpRot = this->getAbsDir().getSpacialAxis();
+    glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
+    glRotatef(this->angle, 1.0, 0.0, 0.0);
+    this->getAbsDir().matrix (matrix);
+    glMultMatrixf((float*)matrix);
+    this->getModel()->draw();
 
-  glRotatef(angle, 1.0, 0.0, 0.0);
-  this->getAbsDir().matrix (matrix);
-  glMultMatrixf((float*)matrix);
-  this->getModel()->draw();
-
-  this->halo->draw();
+    this->halo->draw();
 
   glPopMatrix();
-
   glPopAttrib();
 }
Index: trunk/src/world_entities/projectiles/lbolt.h
===================================================================
--- trunk/src/world_entities/projectiles/lbolt.h	(revision 10547)
+++ trunk/src/world_entities/projectiles/lbolt.h	(revision 10618)
@@ -43,5 +43,5 @@
 
     float                             angle;
-    float                             rotationSpeed;
+    static const float                rotationSpeed = 1080;
 
     Billboard*                        halo;
Index: trunk/src/world_entities/projectiles/mbolt.cc
===================================================================
--- trunk/src/world_entities/projectiles/mbolt.cc	(revision 10547)
+++ trunk/src/world_entities/projectiles/mbolt.cc	(revision 10618)
@@ -82,5 +82,6 @@
   //this->trail->setParent( this);
   this->trail->setTexture( "textures/laser.png");
-  this->trail->setAbsCoor(this->getAbsCoor() - Vector(.7,0,0));
+//   this->trail->setAbsCoor(this->getAbsCoor() - Vector(.7,0,0));
+  this->trail->setAbsCoor(this->getAbsCoor() - this->getVelocity().getNormalized() * .7);
 
 }
Index: trunk/src/world_entities/projectiles/projectile_weapon.h
===================================================================
--- trunk/src/world_entities/projectiles/projectile_weapon.h	(revision 10547)
+++ trunk/src/world_entities/projectiles/projectile_weapon.h	(revision 10618)
@@ -1,7 +1,8 @@
 /*!
  * @file projectile_weapon.h
- * a projectile_weapon, that is been shooted by a weapon
+ * a projectile_weapon is a projetile fireing projectile. 
  *
- * You can use this class to make some ProjectileWeapons/Bullets/Lasers/Rockets/etc.
+ * You can use this class to make some Multi-Stage Projectiles.
+ * See Spike_Ball for an implemeted example.
  *
  */
Index: trunk/src/world_entities/projectiles/swarm_projectile.cc
===================================================================
--- trunk/src/world_entities/projectiles/swarm_projectile.cc	(revision 10547)
+++ trunk/src/world_entities/projectiles/swarm_projectile.cc	(revision 10618)
@@ -39,7 +39,5 @@
 SwarmProjectile::SwarmProjectile () : Projectile()
 {
-
-/*  this->loadModel("models/projectiles/orx-rocket.obj", 0.5);*/
-  this->loadModel("models/projectiles/swarm_projectile.obj", .25); // no double rescale (see draw())
+  this->loadModel("models/projectiles/swarm_projectile.obj", .333); // no double rescale (see draw())
   this->loadExplosionSound("sounds/explosions/explosion_4.wav");
 
@@ -59,7 +57,14 @@
   this->elecDamage = 0;
 
-  this->trail = new Trail(2.5,4,.2, this);
-  //this->trail->setParent( this);
+  this->trail = new Trail(2.5, 4, .2, this);
   this->trail->setTexture( "textures/laser.png");
+
+//   this->maxVelocity = 300;
+
+  this->smoke = new Trail(20, 10, .3, this);
+  this->smoke->setTexture ("textures/engine.png");
+
+  this->angle = 0;
+
 
 
@@ -83,4 +88,5 @@
   // delete this->emitter;
   delete this->trail;
+  delete this->smoke;
 }
 
@@ -113,7 +119,7 @@
   this->setHealth(10.0* (float)rand()/(float)RAND_MAX);
 
-  this->maxVelocity = 300;
-
-  this->rotationSpeed = 360;
+//   this->maxVelocity = 300;
+
+//   this->rotationSpeed = 360;
   this->angle = 0;
 
@@ -216,8 +222,12 @@
 
   this->trail->tick(time);
+  this->smoke->tick(time);
 
   this->angle += this->rotationSpeed * time;
+
   while (this->angle > 360)
+  {
     this->angle -= 360;
+  }
 
   this->lastDir = this->curDir;
@@ -272,4 +282,6 @@
   glTranslatef(-.9,0,0);
   this->trail->draw();
+  glTranslatef( -1.1, 0, 0);
+  this->smoke->draw();
   glPopMatrix();
 }
Index: trunk/src/world_entities/projectiles/swarm_projectile.h
===================================================================
--- trunk/src/world_entities/projectiles/swarm_projectile.h	(revision 10547)
+++ trunk/src/world_entities/projectiles/swarm_projectile.h	(revision 10618)
@@ -1,5 +1,5 @@
 /*!
  * @file swarm_projectile.h
- * @brief a SwarmProjectile Projectile
+ * @brief a Swarm_Missile Projectile
 */
 
@@ -40,8 +40,9 @@
 
     Trail*                            trail;
+    Trail*                            smoke;
 
     ParticleEmitter*                  emitter;
     float                             agility;
-    float                             maxVelocity;
+    const static float                maxVelocity = 100;
     float                             speed;
     Vector                            diffVector ;
@@ -57,5 +58,5 @@
 
     // spinning missle
-    float                             rotationSpeed;
+    const static float                rotationSpeed = 360;
     float                             angle;
 };
