Index: /code/branches/rocket/src/modules/weapons/RocketController.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6904)
+++ /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6905)
@@ -63,11 +63,15 @@
     {
 		haha++;
+		
 
         SimpleRocket *rocket = static_cast<SimpleRocket*>(this->getControllableEntity());
+		if (haha<30)rocket->setVelocity(rocket->getVelocity()*1.03);
 		if (this->target_) {
-		rocket->rotatePitch(0.5);
-		rocket->rotateYaw(0.5);
+			this->setTargetPosition();
+			this->moveToTargetPosition();
+		
 		}
-		rocket->setVelocity(rocket->getVelocity()*1.03);
+		
+		if (haha>500) rocket->setDestroy();;
 	
 	}
@@ -80,8 +84,37 @@
 	}
 
+	void RocketController::setTargetPosition() {
+		this->targetPosition_=this->target_->getPosition();
+		//this->targetPosition_ = getPredictedPosition(this->getControllableEntity()->getPosition(),this->getControllableEntity()->getVelocity().length() , this->target_->getPosition(), this->target_->getVelocity());
+	}
+	void RocketController::moveToTargetPosition() {
+		this->moveToPosition(this->targetPosition_);
+	}
 
-	void RocketController::setTarget(Pawn* target) {
+
+
+	void RocketController::setTarget(WorldEntity* target) {
 		this->target_ = target;
+		COUT(0)<<"got target\n";
 	}
+
+	void RocketController::moveToPosition(const Vector3& target)
+    {
+       if (!this->getControllableEntity())
+            return;
+
+	   COUT(0)<<"moving";
+
+        Vector2 coord = get2DViewdirection(this->getControllableEntity()->getPosition(), this->getControllableEntity()->getOrientation() * WorldEntity::FRONT, this->getControllableEntity()->getOrientation() * WorldEntity::UP, target);
+        float distance = (target - this->getControllableEntity()->getPosition()).length();
+
+        if (this->target_ || distance > 10)
+        {
+            // Multiply with 0.8 to make them a bit slower
+			 this->getControllableEntity()->rotateYaw(-0.2f * sgn(coord.x) * coord.x*coord.x);
+            this->getControllableEntity()->rotatePitch(0.2f * sgn(coord.y) * coord.y*coord.y);
+			
+        }
+    }
 
 
Index: /code/branches/rocket/src/modules/weapons/RocketController.h
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6904)
+++ /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6905)
@@ -53,13 +53,16 @@
             virtual void tick(float dt);
 			SimpleRocket* getRocket(){return this->rocket;};
-			void setTarget(Pawn* target);
+			void setTarget(WorldEntity* target);
         protected:
-
+			void moveToPosition(const Vector3& target);
+			void setTargetPosition();
+			void moveToTargetPosition();
 
         private:
 			SimpleRocket* rocket;
+			Vector3 targetPosition_;
 			WeakPtr<PlayerInfo> player_;
 						int haha;
-			WeakPtr<Pawn> target_;
+			WeakPtr<WorldEntity> target_;
 
 
Index: /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 6904)
+++ /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.cc	(revision 6905)
@@ -180,4 +180,8 @@
         }
     }
+	void SimpleRocket::setDestroy() {
+		this->bDestroy_=true;
+		COUT(0)<<"trying to destroy";
+	}
 
     void SimpleRocket::fired(unsigned int firemode)
Index: /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h
===================================================================
--- /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h	(revision 6904)
+++ /code/branches/rocket/src/modules/weapons/projectiles/SimpleRocket.h	(revision 6905)
@@ -64,4 +64,5 @@
             virtual void rotatePitch(const Vector2& value);
             virtual void rotateRoll(const Vector2& value);
+			void setDestroy();
 
             /**
@@ -95,5 +96,6 @@
             */
             inline void rotatePitch(float value)
-            { this->rotatePitch(Vector2(value, 0)); }
+            {   COUT(0)<<"rotated rocket yaw";
+				this->rotatePitch(Vector2(value, 0)); }
             /**
             @brief Rotates the SimpleRocket around the z-axis by the specifed amount.
@@ -101,5 +103,7 @@
             */
             inline void rotateRoll(float value)
-            { this->rotateRoll(Vector2(value, 0)); }
+            { 
+				COUT(0)<<"rotated rocket roll";
+				this->rotateRoll(Vector2(value, 0)); }
 
             void setOwner(Pawn* owner);
Index: /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 6904)
+++ /code/branches/rocket/src/modules/weapons/weaponmodes/SimpleRocketFire.cc	(revision 6905)
@@ -69,4 +69,9 @@
 		rocket->setVelocity(this->getMuzzleDirection()*this->speed_);
 		rocket->setOwner(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+		rocket->setDamage(this->damage_);
+		WorldEntity* pawnn=(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getTarget());
+		if (pawnn) {
+		con->setTarget(pawnn);
+		}
     }
 }
Index: /code/branches/rocket/src/orxonox/controllers/DroneController.cc
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/DroneController.cc	(revision 6904)
+++ /code/branches/rocket/src/orxonox/controllers/DroneController.cc	(revision 6905)
@@ -49,4 +49,5 @@
         assert(dynamic_cast<Drone*>(creator)!=0);
         this->setControllableEntity(dynamic_cast<Drone*>(creator));
+		this->counter=0;
     }
 
@@ -63,4 +64,5 @@
     void DroneController::tick(float dt)
     {
+		this->counter++;
         // Place your code here:
         // - steering commands
@@ -70,6 +72,6 @@
         // - rotatePitch, rotateYaw, rotateRoll 
         // - apply the to myDrone (e.g. myDrone->rotateYaw(..) ) 
-
-		myDrone->rotateYaw(0.2);
+		myDrone->rotatePitch(0.08);
+		myDrone->moveFrontBack(1);
 
     }
Index: /code/branches/rocket/src/orxonox/controllers/DroneController.h
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/DroneController.h	(revision 6904)
+++ /code/branches/rocket/src/orxonox/controllers/DroneController.h	(revision 6905)
@@ -54,4 +54,5 @@
 
         private:
+			int counter;
     };
 }
Index: /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc	(revision 6904)
+++ /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc	(revision 6905)
@@ -574,60 +574,4 @@
         }
     }
-
-	Pawn* NewHumanController::getRocketTarget() {
-
-
- Ogre::RaySceneQuery * rsq = HumanController::localController_s->getControllableEntity()->getScene()->getSceneManager()->createRayQuery(Ogre::Ray());
-
-        Ogre::Ray mouseRay = HumanController::localController_s->getControllableEntity()->getCamera()->getOgreCamera()->getCameraToViewportRay(static_cast<float>(this->currentYaw_)/2*-1+.5f, static_cast<float>(this->currentPitch_)/2*-1+.5f);
-
-        rsq->setRay(mouseRay);
-        rsq->setSortByDistance(true);
-
-        /*
-        Distance of objects:
-        ignore everything under 200 maybe even take 1000 as min distance to shoot at
-
-        shots are regularly traced and are entities!!!!!!!!! this is the biggest problem
-        they vanish only after a distance of 10'000
-        */
-
-
-        Ogre::RaySceneQueryResult& result = rsq->execute();
-        Pawn* pawn = orxonox_cast<Pawn*>(this->getControllableEntity());
-
-        Ogre::RaySceneQueryResult::iterator itr;
-        for (itr = result.begin(); itr != result.end(); ++itr)
-        {
-            if (itr->movable->isInScene() && itr->movable->getMovableType() == "Entity" && itr->distance > 500)
-            {
-                // Try to cast the user pointer
-                WorldEntity* wePtr = dynamic_cast<WorldEntity*>(Ogre::any_cast<OrxonoxClass*>(itr->movable->getUserAny()));
-                if (wePtr)
-                {
-                    // go through all parents of object and look whether they are sightable or not
-                    bool isSightable = false;
-                    WorldEntity* parent = wePtr->getParent();
-                    while (parent)
-                    {
-                        if (this->targetMask_.isExcluded(parent->getIdentifier()))
-                        {
-                            parent = parent->getParent();
-                            continue;
-                        }
-                        else
-                        {
-                            isSightable = true;
-                            break;
-                        }
-                    }
-                    if (!isSightable)
-                        continue;
-                }
-
-				return dynamic_cast<Pawn*> (wePtr);
-			}
-		}
-	}
 		
 
Index: /code/branches/rocket/src/orxonox/controllers/NewHumanController.h
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/NewHumanController.h	(revision 6904)
+++ /code/branches/rocket/src/orxonox/controllers/NewHumanController.h	(revision 6905)
@@ -67,6 +67,4 @@
             virtual void doResumeControl();
 
-			Pawn* getRocketTarget();
-
 
         protected:
Index: /code/branches/rocket/src/orxonox/worldentities/Drone.cc
===================================================================
--- /code/branches/rocket/src/orxonox/worldentities/Drone.cc	(revision 6904)
+++ /code/branches/rocket/src/orxonox/worldentities/Drone.cc	(revision 6905)
@@ -49,5 +49,5 @@
         this->myController_ = 0;
         
-        this->localLinearAcceleration_.setValue(0, 0, 0);
+        this->localLinearAcceleration_.setValue(1, 1, 1);
         this->localAngularAcceleration_.setValue(0, 0, 0);
         this->primaryThrust_  = 100;
