Index: code/branches/ai/src/orxonox/controllers/AIController.cc
===================================================================
--- code/branches/ai/src/orxonox/controllers/AIController.cc	(revision 7842)
+++ code/branches/ai/src/orxonox/controllers/AIController.cc	(revision 7843)
@@ -26,5 +26,5 @@
  *
  */
-//TODO: intended behaviour: when a bot has a target_ it shouldn't move away.
+
 #include "AIController.h"
 
@@ -35,4 +35,5 @@
 #include "worldentities/pawns/Pawn.h"
 
+//Todo: Bot soll pickupspawner besuchen können, falls Pickup vorhanden
 namespace orxonox
 {
@@ -86,5 +87,5 @@
             // next enemy
             random = rnd(maxrand);
-            if (random < ((1+ botlevel_)*10) && (this->target_))
+            if (random < ((1-botlevel_)*10) && (this->target_))
                 this->searchNewTarget();
 
@@ -159,10 +160,10 @@
                 // search enemy
                 random = rnd(maxrand);
-                if (random < 15 && (!this->target_))
+                if (random < (botlevel_)*25 && (!this->target_))
                     this->searchNewTarget();
 
                 // forget enemy
                 random = rnd(maxrand);
-                if (random < 5 && (this->target_))
+                if (random < (1-botlevel_)*6 && (this->target_))
                     this->forgetTarget();
 
@@ -184,8 +185,8 @@
                 // shoot
                 random = rnd(maxrand);
-                if (!(this->passive_) && random < 9 && (this->target_ && !this->bShooting_))
+                if (!(this->passive_) && random < 25*(botlevel_)+1 && (this->target_ && !this->bShooting_))
                 {
-                this->bShooting_ = true;
-                this->forceFreeSlaves();
+                    this->bShooting_ = true;
+                    this->forceFreeSlaves();
                 }
 
@@ -202,4 +203,7 @@
     void AIController::tick(float dt)
     {
+        float random;
+        float maxrand = 100.0f / ACTION_INTERVAL;
+	
         if (!this->isActive())
             return;
@@ -213,5 +217,11 @@
                     if (!this->target_->getRadarVisibility()) /* So AI won't shoot invisible Spaceships */
                         this->forgetTarget();
-                    else this->aimAtTarget();
+                    else
+                    {
+                        this->aimAtTarget();
+		        random = rnd(maxrand);
+		        if(this->botlevel_*100 > random)
+                            this->follow();//If a bot is shooting a player, it shouldn't let him go away easily.
+                    }
                 }
 
@@ -233,8 +243,6 @@
         if (this->state_ == SLAVE)
         {
-
             if (this->bHasTargetPosition_)
                 this->moveToTargetPosition();
-
         }
 
@@ -245,5 +253,11 @@
                 if (!this->target_->getRadarVisibility()) /* So AI won't shoot invisible Spaceships */
                     this->forgetTarget();
-                else this->aimAtTarget();
+                else
+		{
+		    this->aimAtTarget();
+		    random = rnd(maxrand);
+		    if(this->botlevel_*100 > random)
+                        this->follow();//If a bot is shooting a player, it shouldn't let him go away easily.
+		}
             }
 
Index: code/branches/ai/src/orxonox/controllers/ArtificialController.cc
===================================================================
--- code/branches/ai/src/orxonox/controllers/ArtificialController.cc	(revision 7842)
+++ code/branches/ai/src/orxonox/controllers/ArtificialController.cc	(revision 7843)
@@ -53,5 +53,4 @@
     SetConsoleCommand("ArtificialController", "formationsize",    &ArtificialController::formationsize);
     SetConsoleCommand("ArtificialController", "setbotlevel",      &ArtificialController::setAllBotLevel);
-    
 
     static const unsigned int STANDARD_MAX_FORMATION_SIZE = 7;
@@ -131,5 +130,5 @@
         XMLPortParam(ArtificialController, "formationSize", setFormationSize, getFormationSize, xmlelement, mode).defaultValues(STANDARD_MAX_FORMATION_SIZE);
         XMLPortParam(ArtificialController, "passive", setPassive, getPassive, xmlelement, mode).defaultValues(false);
-	XMLPortParam(ArtificialController, "level", setBotLevel, getBotLevel, xmlelement, mode).defaultValues(1.0f);
+	//XMLPortParam(ArtificialController, "level", setBotLevel, getBotLevel, xmlelement, mode).defaultValues(0.0f);
     }
 
@@ -1033,5 +1032,5 @@
                 bSetupWorked=true;
         }
-        else if(this->getControllableEntity()&&(numberOfWeapons>0)&&this->bShooting_ && this->isCloseAtTarget(1000 + botlevel_*200) && this->isLookingAtTarget(math::pi / 20.0f))
+        else if(this->getControllableEntity()&&(numberOfWeapons>0)&&this->bShooting_ && this->isCloseAtTarget((1 + 2*botlevel_)*1000) && this->isLookingAtTarget(math::pi / 20.0f))
         {
             if (this->isCloseAtTarget(130) && this->isLookingAtTarget(math::pi / 20.0f)&&(weapons[1]==1) )
