Index: code/trunk/src/orxonox/worldentities/BigExplosion.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 9799)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.cc	(revision 9939)
@@ -43,7 +43,43 @@
     RegisterClass(BigExplosion);
 
-    BigExplosion::BigExplosion(Context* context) : StaticEntity(context)
+    BigExplosion::BigExplosion(Context* context) : MobileEntity(context)
     {
         RegisterObject(BigExplosion);
+
+        if ( GameMode::showsGraphics() && ( !this->getScene() || !this->getScene()->getSceneManager() ) )
+            ThrowException(AbortLoading, "Can't create BigExplosion, no scene or no scene manager given.");
+
+        this->bStop_ = false;
+        this->LOD_ = LODParticle::Normal;
+
+        if ( GameMode::showsGraphics() )
+        {
+            try
+            {
+                this->init();
+            }
+            catch (const std::exception& ex)
+            {
+                orxout(internal_error) << "Couldn't load particle effect in BigExplosion: " << ex.what() << endl;
+                this->initZero();
+            }
+        }
+        else
+        {
+            this->initZero();
+        }
+
+        if (GameMode::isMaster())
+        {
+            this->destroyTimer_.setTimer(rnd(2, 4), false, createExecutor(createFunctor(&BigExplosion::stop, this)));
+        }
+
+        this->registerVariables();
+    }
+
+    BigExplosion::BigExplosion(Context* context, Vector3 initVelocity) : MobileEntity(context)
+    {
+        RegisterObject(BigExplosion);
+        this->setVelocity(initVelocity);
 
         if ( GameMode::showsGraphics() && ( !this->getScene() || !this->getScene()->getSceneManager() ) )
@@ -100,5 +136,5 @@
         this->debris4_->setSyncMode(0);
 
-        this->explosion_ = new StaticEntity(this->getContext());
+        this->explosion_ = new MobileEntity(this->getContext());
         this->explosion_->setSyncMode(0);
 
@@ -148,5 +184,10 @@
         this->debrisEntity4_->attach(debris4_);
 
+        // ///////////////////////
+        // TODO: particleSpawner is a static entity. It should probably be dynamic, for better explosions.
+        //
         ParticleSpawner* effect = new ParticleSpawner(this->getContext());
+        orxout() << "vel " << this->getVelocity() << endl;
+        // effect->setVelocity(this->getVelocity());
         effect->setDestroyAfterLife(true);
         effect->setSource("Orxonox/explosion2b");
@@ -155,4 +196,5 @@
 
         ParticleSpawner* effect2 = new ParticleSpawner(this->getContext());
+        // effect2->setVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1))*rnd(10, 200));
         effect2->setDestroyAfterLife(true);
         effect2->setSource("Orxonox/smoke6");
Index: code/trunk/src/orxonox/worldentities/BigExplosion.h
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.h	(revision 9799)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.h	(revision 9939)
@@ -22,5 +22,5 @@
  *   Author:
  *      Benjamin de Capitani
- *   Co-authors:
+ *   Co-authors:§
  *      ...
  *
@@ -33,12 +33,13 @@
 
 #include "tools/Timer.h"
-#include "StaticEntity.h"
+#include "MobileEntity.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport BigExplosion : public StaticEntity
+    class _OrxonoxExport BigExplosion : public MobileEntity
     {
         public:
             BigExplosion(Context* context);
+            BigExplosion(Context* context, Vector3 initVelocity);
             virtual ~BigExplosion();
 
@@ -60,5 +61,5 @@
             bool                  bStop_;
 
-            StaticEntity*         explosion_;
+            MobileEntity*         explosion_;
 
             MovableEntity*        debrisEntity1_;
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9799)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.cc	(revision 9939)
@@ -46,4 +46,5 @@
 #include "weaponsystem/WeaponPack.h"
 #include "weaponsystem/WeaponSet.h"
+#include "sound/WorldSound.h"
 
 #include "controllers/FormationController.h"
@@ -100,4 +101,14 @@
 
         this->setSyncMode(ObjectDirection::Bidirectional); // needed to synchronise e.g. aimposition
+
+        if (GameMode::isMaster())
+        {
+            this->explosionSound_ = new WorldSound(this->getContext());
+            this->explosionSound_->setVolume(1.0f);
+        }
+        else
+        {
+            this->explosionSound_ = 0;
+        }
     }
 
@@ -109,4 +120,5 @@
                 this->weaponSystem_->destroy();
         }
+
     }
 
@@ -135,6 +147,9 @@
         XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
 
+        XMLPortParam(Pawn, "explosionSound",  setExplosionSound,  getExplosionSound,  xmlelement, mode);
+
         XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode );
     }
+
 
     void Pawn::registerVariables()
@@ -290,5 +305,5 @@
     void Pawn::kill()
     {
-        this->damage(this->health_);
+    	this->damage(this->health_);
         this->death();
     }
@@ -314,5 +329,6 @@
         if (this->getGametype() && this->getGametype()->allowPawnDeath(this, this->lastHitOriginator_))
         {
-            // Set bAlive_ to false and wait for PawnManager to do the destruction
+            explosionSound_->play();
+        	// Set bAlive_ to false and wait for PawnManager to do the destruction
             this->bAlive_ = false;
 
@@ -365,6 +381,8 @@
         this->setDestroyWhenPlayerLeft(false);
 
-        BigExplosion* chunk = new BigExplosion(this->getContext());
+        orxout() << "big explosion: " << this->getVelocity() << endl;
+        BigExplosion* chunk = new BigExplosion(this->getContext(), this->getVelocity());
         chunk->setPosition(this->getPosition());
+        // chunk->setVelocity(this->getVelocity());
 
     }
@@ -376,4 +394,5 @@
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
+            effect->setVelocity(this->getVelocity());
             effect->setDestroyAfterLife(true);
             effect->setSource("Orxonox/explosion2b");
@@ -384,4 +403,5 @@
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
+            effect->setVelocity(this->getVelocity());
             effect->setDestroyAfterLife(true);
             effect->setSource("Orxonox/smoke6");
@@ -392,4 +412,5 @@
             effect->setPosition(this->getPosition());
             effect->setOrientation(this->getOrientation());
+            effect->setVelocity(this->getVelocity());
             effect->setDestroyAfterLife(true);
             effect->setSource("Orxonox/sparks");
@@ -527,4 +548,21 @@
 
 
+    void Pawn::setExplosionSound(const std::string &explosionSound)
+    {
+        if(explosionSound_ )
+            explosionSound_->setSource(explosionSound);
+        else
+            assert(0); // This should never happen, because soundpointer is only available on master
+    }
+
+    const std::string& Pawn::getExplosionSound()
+    {
+        if( explosionSound_ )
+            return explosionSound_->getSource();
+        else
+            assert(0);
+        return BLANKSTRING;
+    }
+
 
 }
Index: code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 9799)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.h	(revision 9939)
@@ -36,4 +36,5 @@
 #include "interfaces/RadarViewable.h"
 #include "worldentities/ControllableEntity.h"
+
 
 namespace orxonox // tolua_export
@@ -178,4 +179,7 @@
             virtual void changedVisibility();
 
+            void setExplosionSound(const std::string& engineSound);
+            const std::string& getExplosionSound();
+
         protected:
             virtual void preDestroy();
@@ -231,4 +235,7 @@
 
             Vector3 aimPosition_;
+
+            WorldSound* explosionSound_;
+
     }; // tolua_export
 } // tolua_export
