Index: /code/branches/rocket/src/modules/weapons/RocketController.cc
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6902)
+++ /code/branches/rocket/src/modules/weapons/RocketController.cc	(revision 6903)
@@ -64,6 +64,9 @@
 
         SimpleRocket *rocket = static_cast<SimpleRocket*>(this->getControllableEntity());
-		rocket->rotatePitch(0.005);
-		rocket->setVelocity(rocket->getVelocity()*1.02);
+		if (this->target_) {
+		rocket->rotatePitch(0.5);
+		rocket->rotateYaw(0.5);
+		}
+		rocket->setVelocity(rocket->getVelocity()*1.03);
 	
 	}
@@ -77,4 +80,10 @@
 
 
+	void RocketController::setTarget(Pawn* target) {
+		this->target_ = target;
+	}
+
+
+
 
 }
Index: /code/branches/rocket/src/modules/weapons/RocketController.h
===================================================================
--- /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6902)
+++ /code/branches/rocket/src/modules/weapons/RocketController.h	(revision 6903)
@@ -53,4 +53,5 @@
             virtual void tick(float dt);
 			SimpleRocket* getRocket(){return this->rocket;};
+			void setTarget(Pawn* target);
         protected:
 
@@ -60,4 +61,5 @@
 			WeakPtr<PlayerInfo> player_;
 						int haha;
+			WeakPtr<Pawn> target_;
 
 
Index: /code/branches/rocket/src/orxonox/controllers/DroneController.cc
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/DroneController.cc	(revision 6902)
+++ /code/branches/rocket/src/orxonox/controllers/DroneController.cc	(revision 6903)
@@ -72,5 +72,4 @@
 
 		myDrone->rotateYaw(0.2);
-		myDrone->moveFrontBack(2);
 
     }
Index: /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc	(revision 6902)
+++ /code/branches/rocket/src/orxonox/controllers/NewHumanController.cc	(revision 6903)
@@ -574,3 +574,64 @@
         }
     }
+
+	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 6902)
+++ /code/branches/rocket/src/orxonox/controllers/NewHumanController.h	(revision 6903)
@@ -67,4 +67,7 @@
             virtual void doResumeControl();
 
+			Pawn* getRocketTarget();
+
+
         protected:
             void updateTarget();
