Index: /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.cc	(revision 7153)
+++ /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.cc	(revision 7154)
@@ -41,4 +41,5 @@
 #include "controllers/Controller.h"
 #include "sound/WorldSound.h"
+#include "Scene.h"
 
 namespace orxonox
@@ -116,6 +117,11 @@
         if(this->isInitialized())
         {
-            if (GameMode::isMaster() && this->player_)
-                this->player_->stopTemporaryControl();
+            if (GameMode::isMaster())
+            {
+                this->destructionEffect();
+
+                if (this->getPlayer() && this->getController())
+                    this->player_->stopTemporaryControl();
+            }
 
             if ( this->defSndWpnEngine_ )
@@ -140,5 +146,4 @@
     {
         this->owner_ = owner;
-        this->originalControllableEntity_ = this->owner_->getPlayer()->getControllableEntity();
         this->player_ = this->owner_->getPlayer();
         this->owner_->getPlayer()->startTemporaryControl(this);
@@ -228,25 +233,35 @@
     void Rocket::fired(unsigned int firemode)
     {
-        if (this->owner_)
-        {
-            {
-                ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
-                effect->setPosition(this->getPosition());
-                effect->setOrientation(this->getOrientation());
-                effect->setDestroyAfterLife(true);
-                effect->setSource("Orxonox/explosion4");
-                effect->setLifetime(2.0f);
-            }
-
-            {
-                ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator());
-                effect->setPosition(this->getPosition());
-                effect->setOrientation(this->getOrientation());
-                effect->setDestroyAfterLife(true);
-                effect->setSource("Orxonox/smoke4");
-                effect->setLifetime(3.0f);
-            }
+//         if (this->owner_)
+//         {
             this->destroy();
-        }
+//         }
+    }
+    
+    void Rocket::destructionEffect()
+    {
+        ParticleSpawner *effect1, *effect2;
+        if( this->owner_ )
+        {
+            effect1 = new ParticleSpawner(this->owner_->getCreator());
+            effect2 = new ParticleSpawner(this->owner_->getCreator());
+        }
+        else
+        {
+            effect1 = new ParticleSpawner(static_cast<BaseObject*>(this->getScene().get()));
+            effect2 = new ParticleSpawner(static_cast<BaseObject*>(this->getScene().get()));
+        }
+        
+        effect1->setPosition(this->getPosition());
+        effect1->setOrientation(this->getOrientation());
+        effect1->setDestroyAfterLife(true);
+        effect1->setSource("Orxonox/explosion4");
+        effect1->setLifetime(2.0f);
+        
+        effect2->setPosition(this->getPosition());
+        effect2->setOrientation(this->getOrientation());
+        effect2->setDestroyAfterLife(true);
+        effect2->setSource("Orxonox/smoke4");
+        effect2->setLifetime(3.0f);
     }
 
Index: /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.h	(revision 7153)
+++ /code/branches/presentation3/src/modules/weapons/projectiles/Rocket.h	(revision 7154)
@@ -57,4 +57,5 @@
             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
             void destroyObject();
+            void destructionEffect();
 
             virtual void moveFrontBack(const Vector2& value){}
@@ -119,5 +120,4 @@
             float damage_;
             bool bDestroy_;
-            ControllableEntity* originalControllableEntity_;
 
             WeakPtr<PlayerInfo> player_;
Index: /code/branches/presentation3/src/modules/weapons/weaponmodes/RocketFire.cc
===================================================================
--- /code/branches/presentation3/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 7153)
+++ /code/branches/presentation3/src/modules/weapons/weaponmodes/RocketFire.cc	(revision 7154)
@@ -66,6 +66,5 @@
         rocket->setOrientation(this->getMuzzleOrientation());
         rocket->setPosition(this->getMuzzlePosition());
-//         rocket->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
-        rocket->setVelocity(Vector3(1,0,0));
+        rocket->setVelocity(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getVelocity() + this->getMuzzleDirection() * this->speed_);
         rocket->scale(2);
 
Index: /code/branches/presentation3/src/orxonox/infos/PlayerInfo.cc
===================================================================
--- /code/branches/presentation3/src/orxonox/infos/PlayerInfo.cc	(revision 7153)
+++ /code/branches/presentation3/src/orxonox/infos/PlayerInfo.cc	(revision 7154)
@@ -177,5 +177,5 @@
             return;
 
-//         assert( this->temporaryControllableEntity_==0 );
+        assert( this->oldControllableEntity_==0 );
 
         this->oldControllableEntity_ = this->controllableEntity_;
@@ -184,4 +184,5 @@
 
         entity->setPlayer(this);
+        entity->setController(this->controller_);
 
         if (this->controller_)
@@ -222,4 +223,6 @@
             return;
 
+        this->controllableEntity_->setController(0);
+        
         this->controllableEntity_ = this->oldControllableEntity_;
         this->controllableEntityID_ = this->controllableEntity_->getObjectID();
