Index: code/trunk/data/gui/scripts/PickupInventory.lua
===================================================================
--- code/trunk/data/gui/scripts/PickupInventory.lua	(revision 6905)
+++ code/trunk/data/gui/scripts/PickupInventory.lua	(revision 6906)
@@ -74,5 +74,5 @@
 
     local name = "orxonox/PickupInventory/Carrier" .. index
-        
+    
     --Design parameters:
     local imageHeight = 50
@@ -86,11 +86,4 @@
     box:setPosition(CEGUI.UVector2(CEGUI.UDim(0, horizontalOffset), CEGUI.UDim(0, 0)))
     box:setSize(CEGUI.UVector2(CEGUI.UDim(1.0, -horizontalOffset), CEGUI.UDim(1, 0)))
-    
-    offset = offset+textHeight
-    local title = winMgr:createWindow("MenuWidgets/StaticText", name .. "/Title")
-    title:setText(carrier:getCarrierName())
-    title:setSize(CEGUI.UVector2(CEGUI.UDim(1, 0), CEGUI.UDim(0, offset)))
-    title:setProperty("FrameEnabled", "set:False")
-    box:addChildWindow(title)
     
     local numPickups = orxonox.PickupManager:getInstance():getNumPickups(carrier)
Index: code/trunk/src/modules/objects/ObjectsPrereqs.h
===================================================================
--- code/trunk/src/modules/objects/ObjectsPrereqs.h	(revision 6905)
+++ code/trunk/src/modules/objects/ObjectsPrereqs.h	(revision 6906)
@@ -87,4 +87,5 @@
     class DistanceMultiTrigger;
     class DistanceTrigger;
+    class DistanceTriggerBeacon;
     class EventMultiTrigger;
     class EventTrigger;
Index: code/trunk/src/modules/objects/triggers/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/objects/triggers/CMakeLists.txt	(revision 6905)
+++ code/trunk/src/modules/objects/triggers/CMakeLists.txt	(revision 6906)
@@ -3,4 +3,5 @@
   DistanceMultiTrigger.cc
   DistanceTrigger.cc
+  DistanceTriggerBeacon.cc
   EventMultiTrigger.cc
   EventTrigger.cc
Index: code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc	(revision 6905)
+++ code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.cc	(revision 6906)
@@ -36,4 +36,5 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
+#include "DistanceTriggerBeacon.h"
 
 namespace orxonox
@@ -51,4 +52,6 @@
         
         this->distance_ = 100.0f;
+        this->targetName_ = BLANKSTRING;
+        this->singleTargetMode_ = false;
     }
 
@@ -70,4 +73,5 @@
 
         XMLPortParam(DistanceMultiTrigger, "distance", setDistance, getDistance, xmlelement, mode);
+        XMLPortParam(DistanceMultiTrigger, "targetname", setTargetName, getTargetName, xmlelement, mode);
     }
 
@@ -128,4 +132,15 @@
                 continue;
 
+            // If the DistanceMultiTrigger is in single-target-mode.
+            if(this->singleTargetMode_)
+            {
+                // If the object that is a target is no DistanceTriggerBeacon, then the DistanceMultiTrigger can't be in single-target-mode.
+                if(!(*it)->isA(ClassIdentifier<DistanceTriggerBeacon>::getIdentifier()))
+                    this->singleTargetMode_ = false;
+                // If the target name and the name of the DistancTriggreBeacon don't match.
+                else if(entity->getName().compare(this->targetName_) != 0)
+                    continue;
+            }
+
             Vector3 distanceVec = entity->getWorldPosition() - this->getWorldPosition();
             // If the object is in range.
@@ -136,4 +151,8 @@
                     continue;
 
+                // Change the entity to the parent of the DistanceTriggerBeacon (if in single-target-mode), which is the entity to which the beacon is attached.
+                if(this->singleTargetMode_)
+                    entity = entity->getParent();
+                
                 // If no queue has been created, yet.
                 if(queue == NULL)
Index: code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h	(revision 6905)
+++ code/trunk/src/modules/objects/triggers/DistanceMultiTrigger.h	(revision 6906)
@@ -48,5 +48,5 @@
     /**
     @brief
-        The DistanceMultiTrigger is a trigger that triggers whenever an object (that is of the specified target type) is in a specified range of the DistanceMultiTrigger.
+        The DistanceMultiTrigger is a trigger that triggers whenever an object (that is of the specified target type) is in a specified range of the DistanceMultiTrigger. The object can be specified further by adding a DistanceTriggerBeacon (just attaching it) to the objects that can trigger this DistanceMultiTrigger and specify the name of the DistanceTriggerBeacon with the parameter targetname and only objects that hav a DistanceTriggerBeacon with that name attached will trigger the DistanceMultiTrigger.
     @see MultiTrigger.h
         For more information on MultiTriggers.
@@ -63,4 +63,17 @@
             void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a DistanceMultiTrigger object through XML.
 
+            /**
+            @brief Set the target name of DistanceTriggerBeacons that triggers this DistanceMultiTrigger.
+            @param targename The name of the DistanceTriggerBeacon as a string.
+            */
+            inline void setTargetName(const std::string& targetname)
+                { if(targetname.compare(BLANKSTRING) != 0) this->singleTargetMode_ = true; else this->singleTargetMode_ = false; this->targetName_ = targetname; }
+            /**
+            @brief Get the target name of the DistanceTriggerbeacon, that triggers this DistanceMultiTrigger.
+            @return Returns the target name as a string.
+            */
+            inline const std::string& getTargetName(void)
+                { return this->targetName_; }
+            
             /**
             @brief Set the distance at which the DistanceMultiTrigger triggers.
@@ -96,4 +109,7 @@
         private:
             float distance_; //!< The distance at which the DistanceMultiTrigger triggers.
+            std::string targetName_; //!< The target name, used in singleTargetMode.
+            bool singleTargetMode_; //!< To indicate whe the MultiDistanceTrigger is in single-target-mode.
+            
             std::map<WorldEntity*, WeakPtr<WorldEntity>* > range_; //!< The set of entities that currently are in range of the DistanceMultiTrigger.
         
Index: code/trunk/src/modules/objects/triggers/DistanceTrigger.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 6905)
+++ code/trunk/src/modules/objects/triggers/DistanceTrigger.cc	(revision 6906)
@@ -32,4 +32,5 @@
 #include "core/XMLPort.h"
 #include "worldentities/pawns/Pawn.h"
+#include "DistanceTriggerBeacon.h"
 
 namespace orxonox
@@ -43,4 +44,6 @@
     this->distance_ = 100;
     this->targetMask_.exclude(Class(BaseObject));
+    this->targetName_ = BLANKSTRING;
+    this->singleTargetMode_ = false;
     this->setForPlayer(false); //!< Normally hasn't just players as targets.
   }
@@ -55,5 +58,6 @@
 
     XMLPortParam(DistanceTrigger, "distance", setDistance, getDistance, xmlelement, mode).defaultValues(100.0f);
-    XMLPortParamLoadOnly(DistanceTrigger, "target", addTargets, xmlelement, mode).defaultValues("ControllableEntity");
+    XMLPortParamLoadOnly(DistanceTrigger, "target", addTargets, xmlelement, mode).defaultValues("Pawn");
+    XMLPortParam(DistanceTrigger, "targetname", setTargetName, getTargetName, xmlelement, mode);
   }
 
@@ -84,6 +88,7 @@
 
     //! Checks whether the target is (or is derived from) a ControllableEntity.
-    Identifier* controllableEntityId = Class(ControllableEntity);
-    if(targetId->isA(controllableEntityId))
+    Identifier* pawnId = Class(Pawn);
+    Identifier* distanceTriggerBeaconId = Class(DistanceTriggerBeacon);
+    if(targetId->isA(pawnId) || targetId->isA(distanceTriggerBeaconId))
     {
       this->setForPlayer(true);
@@ -124,4 +129,12 @@
         continue;
 
+      if(this->singleTargetMode_)
+      {
+        if(!(*it)->isA(ClassIdentifier<DistanceTriggerBeacon>::getIdentifier()))
+          this->singleTargetMode_ = false;
+        else if(entity->getName().compare(this->targetName_) != 0)
+          continue;
+      }
+      
       Vector3 distanceVec = entity->getWorldPosition() - this->getWorldPosition();
       if (distanceVec.length() < this->distance_)
@@ -131,4 +144,8 @@
         if(this->isForPlayer())
         {
+
+          if(this->singleTargetMode_)
+            entity = entity->getParent();
+
           Pawn* player = orxonox_cast<Pawn*>(entity);
           this->setTriggeringPlayer(player);
Index: code/trunk/src/modules/objects/triggers/DistanceTrigger.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTrigger.h	(revision 6905)
+++ code/trunk/src/modules/objects/triggers/DistanceTrigger.h	(revision 6906)
@@ -52,4 +52,9 @@
       void removeTargets(const std::string& targets);
 
+      inline void setTargetName(const std::string& targetname)
+        { if(targetname.compare(BLANKSTRING) != 0) this->singleTargetMode_ = true; else this->singleTargetMode_ = false; this->targetName_ = targetname; }
+      inline const std::string& getTargetName(void)
+        { return this->targetName_; }
+
       inline void setDistance(float distance)
         { this->distance_ = distance; }
@@ -67,5 +72,7 @@
     private:
       std::set<Ogre::Node*> targetSet_;
+      std::string targetName_;
       float distance_;
+      bool singleTargetMode_;
 
   };
Index: code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc	(revision 6906)
+++ code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.cc	(revision 6906)
@@ -0,0 +1,43 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+*/
+
+#include "DistanceTriggerBeacon.h"
+
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+
+    CreateFactory(DistanceTriggerBeacon);
+    
+    DistanceTriggerBeacon::DistanceTriggerBeacon(BaseObject* creator) : StaticEntity(creator)
+    {
+        RegisterObject(DistanceTriggerBeacon);
+    }
+    
+}
Index: code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h
===================================================================
--- code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h	(revision 6906)
+++ code/trunk/src/modules/objects/triggers/DistanceTriggerBeacon.h	(revision 6906)
@@ -0,0 +1,51 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+*/
+
+#ifndef _DistanceTriggerBeacon_H__
+#define _DistanceTriggerBeacon_H__
+
+#include "objects/ObjectsPrereqs.h"
+#include "core/XMLPort.h"
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+
+    class _ObjectsExport DistanceTriggerBeacon : public StaticEntity
+    {
+        
+        public:
+
+            DistanceTriggerBeacon(BaseObject* creator);
+            ~DistanceTriggerBeacon() {}
+
+    };
+
+}
+
+#endif // _DistanceTriggerBeacon_H__
Index: code/trunk/src/modules/questsystem/QuestEffectBeacon.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 6905)
+++ code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 6906)
@@ -99,7 +99,4 @@
     bool QuestEffectBeacon::execute(bool b, BaseObject* trigger)
     {
-        //TODO: Remove debug output.
-        COUT(1) << "Debug: Calling execute on QuestEffectBeacon." << std::endl;
-        
         if(!b)
         {
@@ -108,5 +105,5 @@
         if(!(this->isActive())) //!< If the QuestEffectBeacon is inactive it cannot be executed.
         {
-            COUT(3) << "The QuestEffectBeacon is inactive." << std::endl;
+            COUT(4) << "The QuestEffectBeacon is inactive." << std::endl;
             return false;
         }
