Index: code/branches/questsystem2/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/questsystem2/src/orxonox/CMakeLists.txt	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/CMakeLists.txt	(revision 2193)
@@ -95,4 +95,5 @@
   objects/worldentities/triggers/DistanceTrigger.cc
   objects/worldentities/triggers/EventTrigger.cc
+  objects/worldentities/triggers/PlayerTrigger.cc
 
   objects/worldentities/pawns/Spectator.cc
Index: code/branches/questsystem2/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/questsystem2/src/orxonox/OrxonoxPrereqs.h	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/OrxonoxPrereqs.h	(revision 2193)
@@ -128,4 +128,5 @@
     class DistanceTrigger;
     class EventTrigger;
+    class PlayerTrigger;
 
     class WeaponSystem;
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2193)
@@ -32,8 +32,8 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
-#include "core/Event.h"
+#include "core/EventIncludes.h"
 
 #include "orxonox/objects/worldentities/ControllableEntity.h"
-#include "orxonox/objects/worldentities/triggers/Trigger.h"
+#include "orxonox/objects/worldentities/triggers/PlayerTrigger.h"
 #include "QuestEffect.h"
 
@@ -64,11 +64,7 @@
     }
     
-    void processEvent(Event& event)
+    void QuestEffectBeacon::processEvent(Event& event)
     {
-        //TDO. Resolve pseudo code.
-        //if(isControllableEntity(event.originator_))
-        //{
-        //    SetEvent(BaseObject, "activity", execute, event);
-	//}
+	SetSubclassEvent(QuestEffectBeacon, "execute", execute, event, PlayerTrigger);
     }
     
@@ -150,5 +146,5 @@
     }
     
-    bool QuestEffectBeacon::addTrigger(Trigger* trigger)
+    bool QuestEffectBeacon::addTrigger(PlayerTrigger* trigger)
     {
         if(this->trigger_ != NULL)
Index: code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2193)
@@ -77,9 +77,9 @@
             int times_; //!< Number of times the beacon can be exectued.
             QuestEffectBeaconStatus::Enum status_;
-            Trigger* trigger_;
+            PlayerTrigger* trigger_;
             
             bool setTimes(const int & n);
             bool addEffect(QuestEffect* effect);
-            bool addTrigger(Trigger* trigger);
+            bool addTrigger(PlayerTrigger* trigger);
             
             const QuestEffect* getEffect(unsigned int index) const;
Index: code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc	(revision 2193)
@@ -39,5 +39,5 @@
   CreateFactory(DistanceTrigger);
 
-  DistanceTrigger::DistanceTrigger(BaseObject* creator) : Trigger(creator)
+  DistanceTrigger::DistanceTrigger(BaseObject* creator) : PlayerTrigger(creator)
   {
     RegisterObject(DistanceTrigger);
@@ -45,4 +45,5 @@
     this->distance_ = 100;
     this->targetMask_.exclude(Class(BaseObject));
+    this->player_ = NULL;
   }
 
@@ -117,8 +118,16 @@
       Vector3 distanceVec = entity->getWorldPosition() - this->getWorldPosition();
       if (distanceVec.length() < this->distance_)
+      {
+        this->player_ = dynamic_cast<ControllableEntity*>(entity);
         return true;
+      }
     }
     return false;
 
+  }
+  
+  ControllableEntity* DistanceTrigger::getTriggeringPlayer(void) const
+  {
+    return this->player_;
   }
 
Index: code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h
===================================================================
--- code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h	(revision 2191)
+++ code/branches/questsystem2/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h	(revision 2193)
@@ -30,5 +30,5 @@
 #define _DistanceTrigger_H__
 
-#include "Trigger.h"
+#include "PlayerTrigger.h"
 
 #include <set>
@@ -37,7 +37,9 @@
 #include "core/BaseObject.h"
 
+#include "orxonox/objects/worldentities/ControllableEntity.h"
+
 namespace orxonox
 {
-  class _OrxonoxExport DistanceTrigger : public Trigger
+  class _OrxonoxExport DistanceTrigger : public PlayerTrigger
   {
     public:
@@ -56,4 +58,6 @@
       inline float getDistance() const
         { return this->distance_; }
+        
+        virtual ControllableEntity* getTriggeringPlayer(void) const;
 
       bool checkDistance();
@@ -66,4 +70,7 @@
       std::set<Ogre::Node*> targetSet_;
       float distance_;
+      
+      ControllableEntity* player_;
+      
   };
 }
