Index: branches/world_entities/src/world_entities/weapons/bomb.cc
===================================================================
--- branches/world_entities/src/world_entities/weapons/bomb.cc	(revision 5740)
+++ branches/world_entities/src/world_entities/weapons/bomb.cc	(revision 5744)
@@ -16,6 +16,14 @@
 #include "bomb.h"
 #include "glincl.h"
+#include "state.h"
+#include "list.h"
 #include "model.h"
+#include "vector.h"
 #include "fast_factory.h"
+
+
+#include "particle_engine.h"
+#include "particle_emitter.h"
+#include "particle_system.h"
 
 using namespace std;
@@ -32,4 +40,16 @@
   if (root != NULL)
     this->loadParams(root);
+
+  float modelSize = 1.0;
+  this->loadModel("models/projectiles/RadioActiveBomb.obj", 1.0);
+
+  this->energyMin = 1;
+  this->energyMax = 1;
+  this->remove();
+  this->lifeSpan = 15;
+
+  this->emitter = new ParticleEmitter(Vector(0,1,0), M_2_PI, 100, 5);
+  this->emitter->setParent(this);
+  this->emitter->setSpread(M_PI, M_PI);
 }
 
@@ -82,5 +102,17 @@
 void Bomb::tick(float time)
 {
+  //Vector v = *this->flightDirection * ( this->speed * time * 1000 + 0.1);
+  Vector v = this->velocity * (time);
+  this->shiftCoor(v);
 
+  this->lifeCycle += time/this->lifeSpan;
+  if( this->lifeCycle >= 1.0)
+    {
+      PRINTF(5)("FINALIZE==========================\n");
+      PRINTF(5)("current life cycle is: %f\n", this->lifeCycle);
+      PRINTF(5)("FINALIZE===========================\n");
+
+      this->deactivate();
+    }
 }
 
@@ -114,9 +146,10 @@
 void Bomb::collidesWith (WorldEntity* entity, const Vector& location)
 {
-
+	this->detonate();
 }
 
 void Bomb::activate()
 {
+  State::getWorldEntityList()->add(this);
 
 }
@@ -124,4 +157,17 @@
 void Bomb::deactivate()
 {
+  State::getWorldEntityList()->remove(this);
+  Bomb::fastFactory->kill(this);
+}
 
+void Bomb::detonate()
+{
+  tIterator<WorldEntity>* it = State::getWorldEntityList()->getIterator();
+  WorldEntity* lm = it->firstElement();
+
+  while(lm != NULL)
+  {
+   
+    lm = it->nextElement();
+  }
 }
Index: branches/world_entities/src/world_entities/weapons/bomb.h
===================================================================
--- branches/world_entities/src/world_entities/weapons/bomb.h	(revision 5740)
+++ branches/world_entities/src/world_entities/weapons/bomb.h	(revision 5744)
@@ -9,4 +9,6 @@
 #include "projectile.h"
 class FastFactory;
+class ParticleSystem;
+class ParticleEmitter;
 
 //! A Class to ...
@@ -29,8 +31,13 @@
   virtual void collidesWith (WorldEntity* entity, const Vector& location);
   virtual void activate();
+  virtual void detonate();
   virtual void deactivate();
 
  private:
   static FastFactory*               fastFactory;
+  static ParticleSystem*            trailParticles;
+  static ParticleSystem*            explosionParticles;
+
+  ParticleEmitter*                  emitter;
 
 };
Index: branches/world_entities/src/world_entities/weapons/cannon.cc
===================================================================
--- branches/world_entities/src/world_entities/weapons/cannon.cc	(revision 5740)
+++ branches/world_entities/src/world_entities/weapons/cannon.cc	(revision 5744)
@@ -78,11 +78,11 @@
   this->loadModel("models/guns/cannon.obj");
 
-  this->setStateDuration(WS_SHOOTING, .1);
+  this->setStateDuration(WS_SHOOTING, 2.0);
   this->setStateDuration(WS_RELOADING, .1);
-  this->setStateDuration(WS_ACTIVATING, .4);
+  this->setStateDuration(WS_ACTIVATING, .1);
   this->setStateDuration(WS_DEACTIVATING, .4);
 
-  this->setMaximumEnergy(1000, 100);
-  this->increaseEnergy(1000);
+  this->setMaximumEnergy(100, 1);
+  this->increaseEnergy(30);
   //this->minCharge = 2;
 
@@ -90,6 +90,6 @@
 
   this->setCapability(WTYPE_ALLDIRS | WTYPE_DIRECTIONAL);
-  this->setProjectileType(CL_LASER);
-  this->prepareProjectiles(20);
+  this->setProjectileType(CL_BOMB);
+  this->prepareProjectiles(5);
 
 //  this->objectComponent1 = new PNode();
@@ -163,5 +163,5 @@
   pj->setParent(NullParent::getInstance());
 
-  pj->setVelocity(this->getVelocity() + this->getAbsDir().apply(Vector(1,0,0))*50+VECTOR_RAND(5));
+  pj->setVelocity(this->getVelocity() + this->getAbsDir().apply(Vector(1,0,0))*15+VECTOR_RAND(5));
 
   pj->setAbsCoor(this->getEmissionPoint());
