Index: code/branches/ai/data/levels/pickup.oxw
===================================================================
--- code/branches/ai/data/levels/pickup.oxw	(revision 6917)
+++ code/branches/ai/data/levels/pickup.oxw	(revision 6918)
@@ -23,39 +23,4 @@
 ?>
 
-    <Template name=droneTemplate>
-        <Drone name="meineDrohne"  mass= "50" linearDamping = "0.9" angularDamping = "0.7">
-        <attached>
-            <Model scale="1" mesh="drone.mesh"/>
-        </attached>
-        <collisionShapes>
-            <BoxCollisionShape position="0,0,0"      halfExtents="1, 1, 1" />
-        </collisionShapes>
-    
-
-    <weaponslots>
-      <WeaponSlot position="    0,   0,0" />
-    </weaponslots>
-    <weaponsets>
-      <WeaponSet firemode=0 />
-    </weaponsets>
-    <weapons>
-      <WeaponPack>
-        <links>
-          <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
-        </links>
-        <Weapon>
-          <attached>
-            <Model mesh="hs-w01.mesh" roll="195" position="0,1,0" scale=2 />
-            <Model mesh="hs-w01s.mesh" roll="195" position="0.1,0.5,0" scale=2 />
-          </attached>
-          <HsW01 mode=0 munitionpershot=0 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.7, 1.5,-4" />
-          <HsW01 mode=0 munitionpershot=0 delay=0     material="Flares/point_lensflare" muzzleoffset="-0.9, 1.1,-4" />
-        </Weapon>
-      </WeaponPack>
-    </weapons>
-
-
-        </Drone>
-     </Template>
 
     <PickupSpawner position="-100,0,-100" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
@@ -64,6 +29,4 @@
         </pickup>
     </PickupSpawner>
-
-
 
     <PickupSpawner position="-75,0,-100" triggerDistance="10" respawnTime="30" maxSpawnedItems="10">
Index: code/branches/ai/data/levels/templates/pickup_representation_templates.oxt
===================================================================
--- code/branches/ai/data/levels/templates/pickup_representation_templates.oxt	(revision 6917)
+++ code/branches/ai/data/levels/templates/pickup_representation_templates.oxt	(revision 6918)
@@ -107,3 +107,35 @@
     </PickupCollection>
 </Template>
-    
+
+
+<Template name=droneTemplate>
+    <Drone name="meineDrohne"  mass= "50" linearDamping = "0.7" angularDamping = "0.9999999" primaryThrust_=250 auxilaryThrust_=250 rotationThrust_=50>
+        <attached>
+            <Model scale="1" mesh="drone.mesh"/>
+        </attached>
+        <collisionShapes>
+            <BoxCollisionShape position="0,0,0"      halfExtents="1, 1, 1" />
+        </collisionShapes>
+        <weaponslots>
+            <WeaponSlot position="    0,   0,0" />
+        </weaponslots>
+        <weaponsets>
+            <WeaponSet firemode=0 />
+        </weaponsets>
+        <weapons>
+            <WeaponPack>
+                <links>
+                    <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+                </links>
+                <Weapon>
+                    <attached>
+                        <Model mesh="hs-w01.mesh" roll="195" position="0,1,0" scale=2 />
+                        <Model mesh="hs-w01s.mesh" roll="195" position="0.1,0.5,0" scale=2 />
+                    </attached>
+                    <HsW01 mode=0 munitionpershot=0 delay=0.125 material="Flares/point_lensflare" muzzleoffset=" 0.7, 1.5,-4" />
+                    <HsW01 mode=0 munitionpershot=0 delay=0     material="Flares/point_lensflare" muzzleoffset="-0.9, 1.1,-4" />
+                </Weapon>
+            </WeaponPack>
+        </weapons>
+    </Drone>
+</Template>
Index: code/branches/ai/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/branches/ai/src/orxonox/controllers/ArtificialController.cc	(revision 6917)
+++ code/branches/ai/src/orxonox/controllers/ArtificialController.cc	(revision 6918)
@@ -36,4 +36,5 @@
 #include "gametypes/TeamDeathmatch.h"
 #include "controllers/WaypointPatrolController.h"
+#include "controllers/DroneController.h"
 #include "util/Math.h"
 
@@ -348,4 +349,5 @@
     void ArtificialController::searchNewTarget()
     {
+COUT(0) << "search new target - start" << std::endl;
         if (!this->getControllableEntity())
             return;
@@ -372,4 +374,5 @@
             }
         }
+COUT(0) << "search new target - end: " << this->target_ << std::endl;
     }
 
Index: code/branches/ai/src/orxonox/controllers/CMakeLists.txt
===================================================================
--- code/branches/ai/src/orxonox/controllers/CMakeLists.txt	(revision 6917)
+++ code/branches/ai/src/orxonox/controllers/CMakeLists.txt	(revision 6918)
@@ -8,4 +8,4 @@
   WaypointController.cc
   WaypointPatrolController.cc
-  DroneController.cc  
+  DroneController.cc
 )
Index: code/branches/ai/src/orxonox/controllers/DroneController.cc
===================================================================
--- code/branches/ai/src/orxonox/controllers/DroneController.cc	(revision 6917)
+++ code/branches/ai/src/orxonox/controllers/DroneController.cc	(revision 6918)
@@ -47,10 +47,4 @@
     DroneController::DroneController(BaseObject* creator) : ArtificialController(creator)
     {
-        // - do any kind of initialisation
-
-        // this checks that our creator really is a drone
-        // and saves the pointer to the drone for the controlling commands
-
-    
         RegisterObject(DroneController);
 
@@ -86,34 +80,33 @@
 
         const Vector3& locOwnerDir = getDrone()->getOrientation().UnitInverse()*(ownerPosition-dronePosition); //Vector from Drone To Owner out of drones local coordinate system
-
-        int distance = sqrt( (ownerPosition.x-dronePosition.x)*(ownerPosition.x-dronePosition.x)
-                           + (ownerPosition.y-dronePosition.y)*(ownerPosition.y-dronePosition.y)
-                           + (ownerPosition.z-dronePosition.z)*(ownerPosition.z-dronePosition.z)); //distance to Owner
-
-        if (distance > 500) { //TODO: variable implementation of maxdistance
-            drone_->moveUpDown(locOwnerDir.y);
-            drone_->moveFrontBack(-locOwnerDir.z);
-            drone_->moveRightLeft(locOwnerDir.x);
-        }
-
-
+/*
+        int distance_square  = (ownerPosition.x-dronePosition.x)*(ownerPosition.x-dronePosition.x)
+                             + (ownerPosition.y-dronePosition.y)*(ownerPosition.y-dronePosition.y)
+                             + (ownerPosition.z-dronePosition.z)*(ownerPosition.z-dronePosition.z); //distance to Owner squared
+*/
         random = rnd(maxrand);
         if ( random < 30 && (!this->target_))
             this->searchNewTarget();
-
-
-        this->aimAtTarget();
-        drone_->fire(0);
+/*
+        //face target
+        drone_->rotateYaw(-targetPosition_.x);
+        drone_->rotatePitch(targetPosition_.y);
+  */      
+        if (this->target_)
+        {
+            this->aimAtTarget();
+            drone_->fire(0);
+        }
          
 
 
-
-        //COUT(0) << "Drone: " << dronePosition << endl;
-        //COUT(0) << "Distance: " << distance << endl;
+/*
+        COUT(0) << "Drone: " << dronePosition << endl;
+        COUT(0) << "Distance: " << distance << endl;
         COUT(0) << "locDrone: " << locOwnerDir << endl;
         COUT(0) << "target: " << targetPosition_ << endl;
         COUT(0) << "Owner: " << ownerPosition << endl;
         COUT(0) << "Rand: " << random << endl;
-
+*/
 /*
         // search enemy
@@ -171,7 +164,6 @@
 	Drone *myDrone = static_cast<Drone*>(this->getControllableEntity());
 
-        if(myDrone != NULL) {
-
-        setTargetPosition(this->getControllableEntity()->getPosition());
+        if ((this->getDrone()->getWorldPosition() - this->getOwner()->getWorldPosition()).squaredLength()  > 150*150) { //TODO: variable implementation of maxdistance
+            this->moveToPosition(this->getOwner()->getWorldPosition());
 
         }
Index: code/branches/ai/src/orxonox/controllers/DroneController.h
===================================================================
--- code/branches/ai/src/orxonox/controllers/DroneController.h	(revision 6917)
+++ code/branches/ai/src/orxonox/controllers/DroneController.h	(revision 6918)
@@ -47,5 +47,5 @@
         Oli Scheuss
     */
-    class _OrxonoxExport DroneController : public ArtificialController
+    class _OrxonoxExport DroneController : public ArtificialController, public Tickable
     {
         public:
Index: code/branches/ai/src/orxonox/worldentities/Drone.cc
===================================================================
--- code/branches/ai/src/orxonox/worldentities/Drone.cc	(revision 6917)
+++ code/branches/ai/src/orxonox/worldentities/Drone.cc	(revision 6918)
@@ -169,5 +169,5 @@
     void Drone::rotateYaw(const Vector2& value)
     {
-        this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() - value.x);
+        this->localAngularAcceleration_.setY(this->localAngularAcceleration_.y() + value.x);
     }
 
