Index: /code/branches/rocket/data/levels/includes/weaponsettings3.oxi
===================================================================
--- /code/branches/rocket/data/levels/includes/weaponsettings3.oxi	(revision 6833)
+++ /code/branches/rocket/data/levels/includes/weaponsettings3.oxi	(revision 6834)
@@ -39,5 +39,5 @@
         </Weapon>
         <Weapon>
-          <SimpleRocketFire mode=2 muzzleoffset="0,0,0" />
+          <SimpleRocketFire mode=2 muzzleoffset="10,10,10" />
         </Weapon>
       </WeaponPack>
Index: /code/branches/rocket/data/particle/rocketfire2.particle
===================================================================
--- /code/branches/rocket/data/particle/rocketfire2.particle	(revision 6834)
+++ /code/branches/rocket/data/particle/rocketfire2.particle	(revision 6834)
@@ -0,0 +1,50 @@
+particle_system Orxonox/rocketfire2
+{
+	quota	300
+	material	PE/explosion
+	particle_width	5
+	particle_height	2
+	cull_each	false
+	renderer	billboard
+	sorted	false
+	local_space	false
+	iteration_interval	0
+	nonvisible_update_timeout	0
+	billboard_type	point
+	billboard_origin	center
+	billboard_rotation_type	texcoord
+	common_up_vector	0 1 0
+	point_rendering	false
+	accurate_facing	false
+
+	emitter Ellipsoid
+	{
+		angle	2
+		colour	1 0.682759 1 1
+		colour_range_start	1 0.682759 1 1
+		colour_range_end	1 0.682759 1 1
+		direction	0 0 1
+		emission_rate	1200
+		position	0 0 3
+		velocity	10
+		velocity_min	10
+		velocity_max	48
+		time_to_live	0.1
+		time_to_live_min	0.1
+		time_to_live_max	0.2
+		duration	0
+		duration_min	0
+		duration_max	0
+		repeat_delay	0
+		repeat_delay_min	0
+		repeat_delay_max	0
+		width	0.8
+		height	0.8
+		depth	4
+	}
+
+	affector Scaler
+	{
+		rate	-20
+	}
+}
Index: /code/branches/rocket/src/modules/weapons/RocketController.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6833)
+++ /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6834)
@@ -32,5 +32,5 @@
 #include "weapons/projectiles/SimpleRocket.h"
 #include "util/Debug.h"
-
+#include "weapons/weaponmodes/SimpleRocketFire.h"
 
 namespace orxonox
@@ -45,8 +45,7 @@
 
         RegisterObject(RocketController);
-		SimpleRocket* rocket = new SimpleRocket(this);
-		rocket->setController(this);
+		this->rocket = new SimpleRocket(this);
+		this->rocket->setController(dynamic_cast<RocketController*>(this));
 		this->setControllableEntity(dynamic_cast<ControllableEntity*> (rocket));
-
     }
 
@@ -62,8 +61,7 @@
 
         SimpleRocket *rocket = static_cast<SimpleRocket*>(this->getControllableEntity());
-
-
-		rocket->rotateYaw(0.2);
-			//rocket->moveFrontBack(2);
+		double rd = rand();
+		if (rd > 0.5) rocket->rotateRoll(5); 
+		else rocket->rotatePitch(5);
 
     }
Index: /code/branches/rocket/src/modules/weapons/RocketController.h
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6833)
+++ /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6834)
@@ -35,4 +35,5 @@
 #include "tools/interfaces/Tickable.h"
 #include "weapons/projectiles/SimpleRocket.h"
+#include "weapons/weaponmodes/SimpleRocketFire.h"
 
 namespace orxonox
@@ -51,8 +52,10 @@
             
             virtual void tick(float dt);
+			SimpleRocket* getRocket(){return rocket;};
         protected:
 
 
         private:
+			SimpleRocket* rocket;
 
     };
Index: /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 6833)
+++ /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 6834)
@@ -60,27 +60,20 @@
         this->lifetime_ = 100;
 		COUT(0)<< "simplerocket constructed\n";
-		//this->camera_ = null;
-		//RocketController* myRController = new RocketController(this);
-		//this->setController(creator);
-		//myRController->setRocket(this, myRController);
-		
-		//this->getController()->setControllableEntity(this);
-		//myController->setControllableEntity(this);
-		//this->getController()->setControllableEntity(this);
-        //this->controllableEntity_->setController(this->controller_);
+
 
         //if (GameMode::isMaster())
         //{
-         /*   this->setCollisionType(WorldEntity::Kinematic);
-            this->setVelocity(0,0,-100);*/
+           this->setCollisionType(WorldEntity::Kinematic);
+            this->setVelocity(0,0,100);
 
             Model* model = new Model(this);
             model->setMeshSource("rocket.mesh");
-            //model->scale(0.7f);
+            model->scale(0.7f);
             this->attach(model);
-           /* ParticleEmitter* fire = new ParticleEmitter(this);
+
+            ParticleEmitter* fire = new ParticleEmitter(this);
             this->attach(fire);
             fire->setOrientation(this->getOrientation());
-            fire->setSource("Orxonox/Rocketfire");
+            fire->setSource("Orxonox/rocketfire2");
 
             this->enableCollisionCallback();
@@ -91,5 +84,5 @@
             collisionShape->setRadius(3);
             collisionShape->setHeight(500);
-            this->attachCollisionShape(collisionShape);*/
+            this->attachCollisionShape(collisionShape);
 
             this->destroyTimer_.setTimer(this->lifetime_, false, createExecutor(createFunctor(&SimpleRocket::destroyObject, this)));
@@ -127,24 +120,4 @@
     }
 
-    /**
-    @brief
-        Defines which actions the SimpleRocket has to take in each tick.
-    @param dt
-        The length of the tick.
-    */
-    void SimpleRocket::tick(float dt)
-    {
-        SUPER(SimpleRocket, tick, dt);
-
-        if( this->hasLocalController() )
-        {
-            this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_);
-            this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() );
-            this->localAngularVelocity_ = 0;
-
-            if( this->bDestroy_ )
-                this->destroy();
-        }
-    }
 
     bool SimpleRocket::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
Index: /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h
===================================================================
--- /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h	(revision 6833)
+++ /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h	(revision 6834)
@@ -53,5 +53,4 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a SimpleRocket through XML.
-            virtual void tick(float dt); //!< Defines which actions the SimpleRocket has to take in each tick.
 
             virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
Index: /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 6833)
+++ /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 6834)
@@ -45,4 +45,5 @@
     {
         RegisterObject(SimpleRocketFire);
+		
 
       /*  this->reloadTime_ = 0.20f;
@@ -61,17 +62,25 @@
     void SimpleRocketFire::fire()
     {
-        SimpleRocket* rocket = new SimpleRocket(this);
-	RocketController* con = new RocketController(this);
+        //SimpleRocket* rocket = new SimpleRocket(this);
+		RocketController* con = new RocketController(this);
+		SimpleRocket* rocket = con->getRocket();
+		this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+		rocket->setOrientation(this->getMuzzleOrientation());
+        rocket->setPosition(this->getMuzzlePosition());
+		rocket->setVelocity(this->getMuzzleDirection() * rocket->getVelocity());
+		rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+		//con->getRocket()->setPosition(this->getMuzzlePosition());
+	//con->setControllableEntity(dynamic_cast<ControllableEntity*>(rocket));
+	//con->getControllableEntity()->setPosition(this->getMuzzlePosition());
 
-
-        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+        /* this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
         rocket->setOrientation(this->getMuzzleOrientation());
         rocket->setPosition(this->getMuzzlePosition());
-	rocket->scale(10);
+		rocket->scale(10);
         rocket->setVelocity(this->getMuzzleDirection() * this->speed_);
         rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
-        rocket->setDamage(this->getDamage());
-        //rocket->scale(2);
-
+        rocket->setDamage(this->getDamage()); 
+        rocket->scale(2);
+		*/
     }
 }
