Index: code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.cc
===================================================================
--- code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.cc	(revision 10755)
+++ code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.cc	(revision 10786)
@@ -43,7 +43,9 @@
         this->LOD_ = LODParticle::Normal;
 		this->mesh_ = "";
-		this->effect_ = "";
+		this->effect1_ = "";
+		this->effect2_ = "";
 		this->model_= new Model(this->getContext());
-		this->particleInterface_= NULL;
+		this->effect1Particle_= NULL;
+		this->effect2Particle_= NULL;
 		this->explosionEntity_ = new MovableEntity(this->getContext());
 
@@ -53,10 +55,31 @@
 
 
+	ExplosionPart::~ExplosionPart()
+    {
+        if (this->isInitialized())
+        {
+            if (this->effect1Particle_)
+            {
+                this->model_->detachOgreObject(this->effect1Particle_->getParticleSystem());
+                delete this->effect1Particle_;
+            }
+            if (this->effect2Particle_)
+            {
+                this->model_->detachOgreObject(this->effect2Particle_->getParticleSystem());
+                delete this->effect2Particle_;
+            }
+        }
+    }
+
+
 	void ExplosionPart::XMLPort(Element& xmlelement, XMLPort::Mode mode)
 	{
 		SUPER(ExplosionPart, XMLPort, xmlelement, mode);
 
-		XMLPortParam(ExplosionPart, "mesh", setMesh, getMesh, xmlelement, mode);
-		XMLPortParam(ExplosionPart, "effect", setEffect, getEffect, xmlelement, mode);
+		XMLPortParam(ExplosionPart, "mesh", setMesh, getMesh, xmlelement, mode).defaultValues("");
+		XMLPortParam(ExplosionPart, "minspeed", setMinSpeed, getMinSpeed, xmlelement, mode).defaultValues(50);
+		XMLPortParam(ExplosionPart, "maxspeed", setMaxSpeed, getMaxSpeed, xmlelement, mode).defaultValues(100);
+		XMLPortParam(ExplosionPart, "effect1", setEffect1, getEffect1, xmlelement, mode).defaultValues("");
+		XMLPortParam(ExplosionPart, "effect2", setEffect2, getEffect2, xmlelement, mode).defaultValues("");
 
 
@@ -68,6 +91,4 @@
 		orxout() << "Explode" << endl;
 
-		orxout() << getMesh() << endl;
-		orxout() << getEffect() << endl;
 
 		this->model_->setVisible(true);
@@ -77,11 +98,17 @@
 		//this->model_->setSyncMode(0);
 
-		this->particleInterface_ = new ParticleInterface(this->getScene()->getSceneManager(), effect_, this->LOD_);
+		if(effect1_ != "")
+		{
+			this->effect1Particle_ = new ParticleInterface(this->getScene()->getSceneManager(), effect1_, this->LOD_);
+			this->model_->attachOgreObject(this->effect1Particle_->getParticleSystem());
+		}
 
-		this->model_->attachOgreObject(this->particleInterface_->getParticleSystem());
+		if(effect2_ != "")
+		{
+			this->effect2Particle_ = new ParticleInterface(this->getScene()->getSceneManager(), effect2_, this->LOD_);
+			this->model_->attachOgreObject(this->effect2Particle_->getParticleSystem());
+		}	
 
-		
-
-		this->explosionEntity_->setVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1))*rnd(50,100));
+		this->explosionEntity_->setVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1))*rnd(minSpeed_,maxSpeed_));
         this->explosionEntity_->setAngularVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1)).normalisedCopy() * Degree(400).valueRadians());
         this->explosionEntity_->setScale(4);
@@ -91,4 +118,25 @@
         this->attach(explosionEntity_);
 
+        if (GameMode::isMaster())
+        {
+            this->destroyTimer_.setTimer(rnd(2, 3), false, createExecutor(createFunctor(&ExplosionPart::stop, this)));
+        }
+
+	}
+
+	void ExplosionPart::stop()
+	{
+		if (this->effect1Particle_)
+            this->effect1Particle_->setEnabled(false);
+        if (this->effect2Particle_)
+            this->effect2Particle_->setEnabled(false);
+        if (this->model_)
+            this->model_->setVisible(false);
+
+        if (GameMode::isMaster())
+        {
+            this->bStop_ = true;
+            this->destroyTimer_.setTimer(1.0f, false, createExecutor(createFunctor(&ExplosionPart::destroy, this)));
+        }
 	}
 
@@ -98,13 +146,30 @@
 	void ExplosionPart::setMesh(const std::string& newString)
 	{
-		this->mesh_ = newString;
-		this->model_->setMeshSource(mesh_);
-		this->model_->setVisible(false);
-		orxout() << newString << endl;
+		if(newString != "")
+		{
+			this->mesh_ = newString;
+			this->model_->setMeshSource(mesh_);
+			this->model_->setVisible(false);
+		}
 	}
 
-	void ExplosionPart::setEffect(const std::string& newString)
+	void ExplosionPart::setEffect1(const std::string& newString)
 	{
-		this->effect_ = newString;
+		this->effect1_ = newString;
+	}
+
+	void ExplosionPart::setEffect2(const std::string& newString)
+	{
+		this->effect2_ = newString;
+	}
+
+	void ExplosionPart::setMinSpeed(float speed)
+	{
+		this->minSpeed_ = speed;
+	}
+
+	void ExplosionPart::setMaxSpeed(float speed)
+	{
+		this->maxSpeed_ = speed;
 	}
 
@@ -112,6 +177,20 @@
 	{ return this->mesh_; }
 
-	std::string& ExplosionPart::getEffect()
-	{ return this->effect_; }
+	std::string& ExplosionPart::getEffect1()
+	{ return this->effect1_; }
+
+	std::string& ExplosionPart::getEffect2()
+	{ return this->effect2_; }
+
+	float ExplosionPart::getMinSpeed()
+	{
+		return this->minSpeed_;
+	}
+
+	float ExplosionPart::getMaxSpeed()
+	{
+		return this->maxSpeed_;
+	}
+
 
 
Index: code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.h
===================================================================
--- code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.h	(revision 10755)
+++ code/branches/explosionChunksHS15/src/orxonox/worldentities/ExplosionPart.h	(revision 10786)
@@ -41,4 +41,5 @@
 #include "core/command/Executor.h"
 #include "Scene.h"
+#include "tools/Timer.h"
 
 
@@ -49,11 +50,19 @@
         public:
             ExplosionPart(Context* context);
+            ~ExplosionPart();
             void XMLPort(Element& xmlelement, XMLPort::Mode mode);
             void Explode();
+            void stop();
 
             void setMesh(const std::string& newString);
             std::string& getMesh();
-            void setEffect(const std::string& newString);
-            std::string& getEffect();
+            void setEffect1(const std::string& newString);
+            std::string& getEffect1();
+            void setEffect2(const std::string& newString);
+            std::string& getEffect2();
+            void setMinSpeed(float speed);
+            float getMinSpeed();
+            void setMaxSpeed(float speed);
+            float getMaxSpeed();
          
 
@@ -65,10 +74,17 @@
 
         	Model* model_;
-        	ParticleInterface* particleInterface_;
+        	ParticleInterface* effect1Particle_;
+            ParticleInterface* effect2Particle_;
 
+
+            float minSpeed_;
+            float maxSpeed_;
         	std::string mesh_;
-        	std::string effect_;
+        	std::string effect1_;
+            std::string effect2_;
 
             MovableEntity* explosionEntity_;
+
+            Timer destroyTimer_;
 
         	
Index: code/branches/explosionChunksHS15/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/explosionChunksHS15/src/orxonox/worldentities/pawns/Pawn.cc	(revision 10755)
+++ code/branches/explosionChunksHS15/src/orxonox/worldentities/pawns/Pawn.cc	(revision 10786)
@@ -374,5 +374,5 @@
             if (GameMode::isMaster())
             {
-                this->deatheffect();
+                //this->deatheffect();
                 this->goWithStyle();
             }
