Index: code/branches/levelElias/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/levelElias/src/libraries/core/CorePrereqs.h	(revision 9712)
+++ code/branches/levelElias/src/libraries/core/CorePrereqs.h	(revision 9732)
@@ -276,5 +276,5 @@
     }
 
-#elif (BOOST_VERSION < 104800)
+#elif (BOOST_VERSION < 105000)
 
 # if BOOST_FILESYSTEM_VERSION == 2
@@ -304,5 +304,4 @@
 #else
 
-    // TODO: Check this once boost 1.48 is released
     namespace filesystem
     {
Index: code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.cc
===================================================================
--- code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.cc	(revision 9712)
+++ code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.cc	(revision 9732)
@@ -42,5 +42,6 @@
         RegisterObject(WaypointPatrolController);
 
-        this->alertnessradius_ = 500;
+        this->alertnessradius_ = 500.0f;
+        this->attackradius_ = 1000.0f;
 
         this->patrolTimer_.setTimer(rnd(), true, createExecutor(createFunctor(&WaypointPatrolController::searchEnemy, this)));
@@ -52,4 +53,5 @@
 
         XMLPortParam(WaypointPatrolController, "alertnessradius", setAlertnessRadius, getAlertnessRadius, xmlelement, mode).defaultValues(500.0f);
+        XMLPortParam(WaypointPatrolController, "attackradius", setAttackRadius, getAttackRadius, xmlelement, mode).defaultValues(1000.0f);
     }
 
@@ -59,5 +61,5 @@
             return;
 
-        if (this->target_)
+        if (this->target_) //if there is a target, follow it and shoot it, if it is close enough
         {
             this->aimAtTarget();
@@ -66,5 +68,5 @@
                 this->moveToTargetPosition();
 
-            if (this->getControllableEntity() && this->isCloseAtTarget(1000) && this->isLookingAtTarget(math::pi / 20.0f))
+            if (this->getControllableEntity() && this->isCloseAtTarget(this->attackradius_) && this->isLookingAtTarget(math::pi / 20.0f))
                 this->getControllableEntity()->fire(0);
         }
Index: code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.h
===================================================================
--- code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.h	(revision 9712)
+++ code/branches/levelElias/src/orxonox/controllers/WaypointPatrolController.h	(revision 9732)
@@ -50,9 +50,15 @@
             inline float getAlertnessRadius() const
                 { return this->alertnessradius_; }
+                
+            inline void setAttackRadius(float distance)
+                { this->attackradius_ = distance; }
+            inline float getAttackRadius() const
+                { return this->attackradius_; }
 
         protected:
             void searchEnemy();
 
-            float alertnessradius_;
+            float alertnessradius_; //!< Enemies within this radius are being followed and shot.
+            float attackradius_;    //!< Enemies only get shot, if they are within the attackradius_.
             Timer patrolTimer_;
     };
Index: code/branches/levelElias/src/orxonox/gametypes/Mission.cc
===================================================================
--- code/branches/levelElias/src/orxonox/gametypes/Mission.cc	(revision 9712)
+++ code/branches/levelElias/src/orxonox/gametypes/Mission.cc	(revision 9732)
@@ -32,9 +32,14 @@
 
 #include "core/CoreIncludes.h"
+#include "core/command/ConsoleCommand.h"
+#include "infos/PlayerInfo.h"
 #include "network/Host.h"
 #include "worldentities/pawns/Pawn.h"
 
+
 namespace orxonox
 {
+    SetConsoleCommand("Mission", "endMission", &Mission::endMission);
+    SetConsoleCommand("Mission", "setLives", &Mission::setLivesWrapper);
     RegisterUnloadableClass(Mission);
 
@@ -56,12 +61,16 @@
             this->end();
         }
+        else if (this->lives_ == 0)
+        {
+            this->missionAccomplished_ = false;
+            this->end();
+        }
     }
 
     void Mission::pawnKilled(Pawn* victim, Pawn* killer)
     {
-        if (victim && victim->getPlayer() && this->lives_ == 1)
+        if (victim && victim->getPlayer() && victim->getPlayer()->isHumanPlayer() )
         {
-            this->missionAccomplished_ = false;
-            this->end();
+            this->lives_--;
         }
     }
@@ -78,9 +87,8 @@
     {
         Gametype::end();
-        /*if (this->missionAccomplished_)
+        if (this->missionAccomplished_)
             this->gtinfo_->sendAnnounceMessage("Mission accomplished!");
         else
             this->gtinfo_->sendAnnounceMessage("Mission failed!");
-        */
     }
 
@@ -94,5 +102,20 @@
         }
     }
-
+    void Mission::endMission(bool accomplished)
+    {
+        for (ObjectList<Mission>::iterator it = ObjectList<Mission>::begin(); it != ObjectList<Mission>::end(); ++it)
+        {//TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would end ALL missions!
+            it->setMissionAccomplished(accomplished);
+            it->end();
+        }
+    }
+    
+    void Mission::setLivesWrapper(unsigned int amount)
+    {
+        for (ObjectList<Mission>::iterator it = ObjectList<Mission>::begin(); it != ObjectList<Mission>::end(); ++it)
+        {//TODO: make sure that only the desired mission is ended !! This is a dirty HACK, that would affect ALL missions!
+            it->setLives(amount);
+        }
+    }
 
 
Index: code/branches/levelElias/src/orxonox/gametypes/Mission.h
===================================================================
--- code/branches/levelElias/src/orxonox/gametypes/Mission.h	(revision 9712)
+++ code/branches/levelElias/src/orxonox/gametypes/Mission.h	(revision 9732)
@@ -52,4 +52,8 @@
             inline unsigned int getLives()
                 {return this->lives_;}
+            inline void setMissionAccomplished(bool acc)
+                {this->missionAccomplished_ = acc;}
+            static void endMission(bool accomplished);
+            static void setLivesWrapper(unsigned int amount);
 
         protected:
@@ -57,5 +61,5 @@
             bool missionAccomplished_; //<! indicates if player successfully finsihed the mission;
             int lives_; //<! amount of player's lives <-> nr. of retries
-
+            //<! If the lives_ are set negative -> unlimited lives.
     };
 }
