Index: code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc	(revision 6086)
+++ code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc	(revision 6087)
@@ -52,14 +52,15 @@
         RegisterObject(Rocket);// - register the Rocket class to the core
         
-        this->setCollisionType(WorldEntity::Kinematic);
-        this->setVelocity(0,0,-100);
-        this->model_ = new Model(this);
-        this->model_->setMeshSource("rocket_test.mesh");
-        this->attach(this->model_);
-        this->lifetime_ = 100;
-        this->bDestroy_ = false;
-        
         if (GameMode::isMaster())
         {
+            this->setCollisionType(WorldEntity::Kinematic);
+            this->setVelocity(0,0,-100);
+            this->lifetime_ = 100;
+            this->bDestroy_ = false;
+        
+            this->model_ = new Model(this);
+            this->model_->setMeshSource("rocket_test.mesh");
+            this->attach(this->model_);
+        
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
@@ -76,4 +77,5 @@
         this->camPosition_ = new CameraPosition(this);
         this->camPosition_->setPosition(0,10,40);
+        this->camPosition_->setSyncMode(0x0);
         this->attach( this->camPosition_ );
         this->addCameraPosition( this->camPosition_ );
@@ -88,9 +90,11 @@
         if(this->isInitialized())
         {
-            this->collisionShape_->destroy();
-            this->model_->destroy();
             
-            if (GameMode::isMaster() && this->player_)
+            if (GameMode::isMaster() && this->player_.get())
+            {
+                this->model_->destroy();
+                this->collisionShape_->destroy();
                 this->player_->stopTemporaryControl();
+            }
             this->camPosition_->destroy();
         }
@@ -110,5 +114,4 @@
     {
         this->owner_ = owner;
-        
         this->originalControllableEntity_ = this->owner_->getPlayer()->getControllableEntity();
         this->player_ = this->owner_->getPlayer();
@@ -126,10 +129,13 @@
         SUPER(Rocket, tick, dt);
         
-        this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
-        this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
-        this->localAngularVelocity_ = 0;
-        
-        if( this->bDestroy_ )
-            this->destroy();
+        if( GameMode::isMaster() )
+        {
+            this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
+            this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
+            this->localAngularVelocity_ = 0;
+            
+            if( this->bDestroy_ )
+                this->destroy();
+        }
     }
     
@@ -180,4 +186,28 @@
             this->destroy();
     }
+    
+    void Rocket::fire(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/explosion3");
+                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);
+            }
+            this->destroy();
+        }
+    }
 
     /**
Index: code/branches/particles2/src/modules/weapons/projectiles/Rocket.h
===================================================================
--- code/branches/particles2/src/modules/weapons/projectiles/Rocket.h	(revision 6086)
+++ code/branches/particles2/src/modules/weapons/projectiles/Rocket.h	(revision 6087)
@@ -110,5 +110,5 @@
             inline float getDamage() const
                 { return this->damage_; }
-            virtual void fire(unsigned int firemode) { this->destroy(); }
+            virtual void fire(unsigned int firemode);
             
         private:
@@ -122,5 +122,5 @@
             CameraPosition* camPosition_;
             ConeCollisionShape* collisionShape_;
-            PlayerInfo* player_;
+            WeakPtr<PlayerInfo> player_;
             Timer destroyTimer_;
             float lifetime_;
