Index: /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt	(revision 2070)
+++ /code/branches/objecthierarchy/src/orxonox/CMakeLists.txt	(revision 2071)
@@ -68,4 +68,5 @@
   objects/worldentities/triggers/Trigger.cc
   objects/worldentities/triggers/DistanceTrigger.cc
+  objects/worldentities/triggers/EventTrigger.cc
 
   objects/worldentities/pawns/Spectator.cc
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc	(revision 2070)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc	(revision 2071)
@@ -30,9 +30,11 @@
 #include "DistanceTrigger.h"
 
+#include <OgreNode.h>
+
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
 
-namespace orxonox {
-
+namespace orxonox
+{
   CreateFactory(DistanceTrigger);
 
@@ -82,5 +84,8 @@
     Identifier* targetId = ClassByString(targets);
     if (!targetId)
+    {
+        COUT(1) << "Error: \"" << targets << "\" is not a valid class name to include in ClassTreeMask (in " << this->getName() << ", class " << this->getIdentifier()->getName() << ")" << std::endl;
         return;
+    }
 
     this->targetMask_.include(targetId);
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h	(revision 2070)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h	(revision 2071)
@@ -34,16 +34,14 @@
 #include <set>
 
-#include <OgreNode.h>
-
 #include "core/ClassTreeMask.h"
 #include "core/BaseObject.h"
 
-namespace orxonox {
-
+namespace orxonox
+{
   class _OrxonoxExport DistanceTrigger : public Trigger
   {
     public:
       DistanceTrigger(BaseObject* creator);
-      ~DistanceTrigger();
+      virtual ~DistanceTrigger();
 
       virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
@@ -62,5 +60,5 @@
 
     protected:
-      bool isTriggered(TriggerMode mode);
+      virtual bool isTriggered(TriggerMode mode);
 
     private:
@@ -69,6 +67,5 @@
       float distance_;
   };
-
 }
 
-#endif /* _Trigger_H__ */
+#endif /* _DistanceTrigger_H__ */
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.cc	(revision 2071)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.cc	(revision 2071)
@@ -0,0 +1,64 @@
+/*
+ *   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:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "EventTrigger.h"
+
+#include "core/CoreIncludes.h"
+#include "core/EventIncludes.h"
+
+namespace orxonox
+{
+    CreateFactory(EventTrigger);
+
+    EventTrigger::EventTrigger(BaseObject* creator) : Trigger(creator)
+    {
+        RegisterObject(EventTrigger);
+
+        this->bEventTriggered_ = false;
+    }
+
+    EventTrigger::~EventTrigger()
+    {
+    }
+
+    void EventTrigger::processEvent(Event& event)
+    {
+        SUPER(EventTrigger, processEvent, event);
+
+        SetEvent(EventTrigger, "trigger", trigger, event);
+    }
+
+    bool EventTrigger::isTriggered(TriggerMode mode)
+    {
+        if (Trigger::isTriggered(mode))
+            return this->bEventTriggered_;
+        else
+            return false;
+    }
+}
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.h	(revision 2071)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/EventTrigger.h	(revision 2071)
@@ -0,0 +1,58 @@
+/*
+ *   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:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _EventTrigger_H__
+#define _EventTrigger_H__
+
+#include "Trigger.h"
+
+#include "core/ClassTreeMask.h"
+#include "core/BaseObject.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport EventTrigger : public Trigger
+    {
+        public:
+            EventTrigger(BaseObject* creator);
+            virtual ~EventTrigger();
+
+            virtual void processEvent(Event& event);
+
+            inline void trigger(bool bTriggered)
+                { this->bEventTriggered_ = bTriggered; this->tick(0); }
+
+        protected:
+            virtual bool isTriggered(TriggerMode mode);
+
+        private:
+            bool bEventTriggered_;
+    };
+}
+
+#endif /* _EventTrigger_H__ */
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2070)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2071)
@@ -58,5 +58,7 @@
     this->bSwitch_ = false;
     this->bStayActive_ = false;
-    this->delay_ = 0.0;
+    this->delay_ = 0.0f;
+    this->remainingTime_ = 0.0f;
+    this->timeSinceLastEvent_ = 0.0f;
     this->remainingActivations_ = -1;
 
@@ -98,4 +100,8 @@
       this->fireEvent(false);
     }
+
+    // Check if the object is active (this is NOT Trigger::isActive()!)
+    if (!this->BaseObject::isActive())
+        return;
 
     bool newTriggered = this->isTriggered() ^ this->bInvertMode_;
Index: /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.h	(revision 2070)
+++ /code/branches/objecthierarchy/src/orxonox/objects/worldentities/triggers/Trigger.h	(revision 2071)
@@ -52,5 +52,5 @@
     public:
       Trigger(BaseObject* creator);
-      ~Trigger();
+      virtual ~Trigger();
 
       virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
