Index: code/trunk/src/modules/questsystem/AddQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/AddQuest.cc	(revision 7284)
+++ 	(revision )
@@ -1,110 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the AddQuest class.
-*/
-
-#include "AddQuest.h"
-
-#include "util/Exception.h"
-#include "core/CoreIncludes.h"
-#include "QuestManager.h"
-#include "Quest.h"
-
-namespace orxonox
-{
-    CreateFactory(AddQuest);
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    AddQuest::AddQuest(BaseObject* creator) : ChangeQuestStatus(creator)
-    {
-        RegisterObject(AddQuest);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    AddQuest::~AddQuest()
-    {
-    }
-
-    /**
-    @brief
-        Method for creating a AddQuest object through XML.
-    */
-    void AddQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddQuest, XMLPort, xmlelement, mode);
-
-        COUT(4) << "New AddQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
-    }
-
-    /**
-    @brief
-        Invokes the QuestEffect.
-    @param player
-        The player the QuestEffect is invoked on.
-    @return
-        Returns true if the QuestEffect was successfully invoked.
-    */
-    bool AddQuest::invoke(PlayerInfo* player)
-    {
-        if(player == NULL) //!< Null-pointers are badass.
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-
-        COUT(5) << "AddQuest on player: " << player << " ." << std::endl;
-
-        try
-        {
-            Quest* quest = QuestManager::getInstance().findQuest(this->getQuestId());
-            if(quest == NULL || !quest->start(player))
-            {
-               return false;
-            }
-        }
-        catch(const orxonox::Exception& ex)
-        {
-            COUT(2) << ex.getFullDescription() << std::endl;
-            return false;
-        }
-
-        COUT(4) << "Quest {" << this->getQuestId() << "} successfully added to player: " << player << " ." << std::endl;
-        return true;
-    }
-
-
-}
Index: code/trunk/src/modules/questsystem/AddQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/AddQuest.h	(revision 7284)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the AddQuest class.
-*/
-
-#ifndef _AddQuest_H__
-#define _AddQuest_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Adds a Quest, resp. changes the quests status to active for the player invoking the Quest.
-
-        Creating a AddQuest through XML goes as follows:
-
-        <AddQuest questId="id" />  //Where id is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information, and identifies the Quest that should be added.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport AddQuest : public ChangeQuestStatus
-    {
-        public:
-        AddQuest(BaseObject* creator);
-        virtual ~AddQuest();
-
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuest object through XML.
-
-        virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
-
-    };
-
-}
-
-#endif /* _AddQuest_H__ */
Index: code/trunk/src/modules/questsystem/AddQuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/AddQuestHint.cc	(revision 7284)
+++ 	(revision )
@@ -1,133 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the AddQuestHint class.
-*/
-
-#include "AddQuestHint.h"
-
-#include "util/Exception.h"
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "QuestManager.h"
-#include "QuestItem.h"
-#include "QuestHint.h"
-
-namespace orxonox
-{
-    CreateFactory(AddQuestHint);
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    AddQuestHint::AddQuestHint(BaseObject* creator) : QuestEffect(creator)
-    {
-        RegisterObject(AddQuestHint);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    AddQuestHint::~AddQuestHint()
-    {
-    }
-
-    /**
-    @brief
-        Method for creating a AddQuestHint object through XML.
-    */
-    void AddQuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddQuestHint, XMLPort, xmlelement, mode);
-
-        XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
-
-        COUT(4) << "New AddQuestHint, with target QuestHint {" << this->getHintId() << "}, created." << std::endl;
-    }
-
-    /**
-    @brief
-        Sets the id of the QuestHint to be added to the player the QuestEffect is invoked on.
-    @param id
-        The QuestHint id.
-    @param
-        Returns true if successful.
-    */
-    bool AddQuestHint::setHintId(const std::string & id)
-    {
-        if(id.compare(BLANKSTRING) == 0)
-        {
-            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return false;
-        }
-
-        this->hintId_ = id;
-        return true;
-    }
-
-    /**
-    @brief
-        Invokes the QuestEffect.
-    @param player
-        The player.
-    @return
-        Returns true if the QuestEffect was successfully invoked.
-    */
-    bool AddQuestHint::invoke(PlayerInfo* player)
-    {
-        if(player == NULL) //!< NULL-pointers are evil!
-        {
-            COUT(2) << "The input player is NULL." << std::endl;
-            return false;
-        }
-
-        COUT(5) << "AddQuestHint on player: " << player << " ." << std::endl;
-
-        try
-        {
-            QuestHint* hint = QuestManager::getInstance().findHint(this->hintId_);
-            if(hint == NULL || !hint->setActive(player))
-            {
-                return false;
-            }
-        }
-        catch(const Exception& e)
-        {
-           COUT(2) << e.getFullDescription() << std::endl;
-           return false;
-        }
-
-        COUT(4) << "QuestHint {" << this->getHintId() << "} successfully added to player: " << player << " ." << std::endl;
-        return true;
-
-    }
-}
Index: code/trunk/src/modules/questsystem/AddQuestHint.h
===================================================================
--- code/trunk/src/modules/questsystem/AddQuestHint.h	(revision 7284)
+++ 	(revision )
@@ -1,80 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the AddQuestHint class.
-*/
-
-#ifndef _AddQuestHint_H__
-#define _AddQuestHint_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-
-#include <string>
-#include "QuestEffect.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Adds a QuestHint, resp. activates the QuestHint of the given id for the player the QuestEffect is invoked on.
-
-    Creating a AddQuestHint through XML goes as follows:
-
-        <AddQuestHint hintId="id" />  //Where id is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information, and identifies the QuestHint that should be added.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport AddQuestHint : public QuestEffect
-    {
-        public:
-            AddQuestHint(BaseObject* creator);
-            virtual ~AddQuestHint();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuestHint object through XML.
-
-            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
-
-        private:
-            std::string hintId_; //!< The id of the QuestHint.
-
-            /**
-            @brief Returns the id of the QuestHint.
-            @return Returns the id of the QuestHint.
-            */
-            inline const std::string & getHintId(void) const
-                { return this->hintId_; }
-
-            bool setHintId(const std::string & id); //!< Sets the id of the QuestHint.
-
-    };
-
-}
-
-#endif /* _AddQuestHint_H__ */
Index: code/trunk/src/modules/questsystem/AddReward.cc
===================================================================
--- code/trunk/src/modules/questsystem/AddReward.cc	(revision 7284)
+++ 	(revision )
@@ -1,118 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the AddReward class.
-*/
-
-#include "AddReward.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "interfaces/Rewardable.h"
-
-namespace orxonox
-{
-    CreateFactory(AddReward);
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    AddReward::AddReward(BaseObject* creator) : QuestEffect(creator)
-    {
-        RegisterObject(AddReward);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    AddReward::~AddReward()
-    {
-    }
-
-    /**
-        Method for creating a AddReward object through XML.
-    */
-    void AddReward::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddReward, XMLPort, xmlelement, mode);
-
-        XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
-
-        COUT(4) << "New AddReward, with " << this->rewards_.size() << " Rewardables created." << std::endl;
-    }
-
-    /**
-    @brief
-        Returns the Rewardable object at the given index.
-    @param index
-        The index.
-    @return
-        Returns a pointer to the Rewardable object at the given index.
-    */
-    const Rewardable* AddReward::getRewardables(unsigned int index) const
-    {
-        int i = index;
-        for (std::list<Rewardable*>::const_iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward)
-        {
-            if(i == 0)
-            {
-               return *reward;
-            }
-            i--;
-        }
-        return NULL;
-    }
-
-    /**
-    @brief
-        Invokes the QuestEffect.
-    @param player
-        The player.
-    @return
-        Returns true if the QuestEffect was invoked successfully.
-    */
-    bool AddReward::invoke(PlayerInfo* player)
-    {
-        COUT(5) << "AddReward on player: " << player << " ." << std::endl;
-
-        bool check = true;
-        for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
-        {
-            check = check && (*reward)->reward(player);
-        }
-
-        COUT(4) << "Rewardable successfully added to player." << player << " ." << std::endl;
-
-        return check;
-    }
-
-}
Index: code/trunk/src/modules/questsystem/AddReward.h
===================================================================
--- code/trunk/src/modules/questsystem/AddReward.h	(revision 7284)
+++ 	(revision )
@@ -1,84 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the AddReward class.
-*/
-
-#ifndef _AddReward_H__
-#define _AddReward_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-
-#include <list>
-#include "QuestEffect.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Adds a list of Rewardables to a player.
-
-        Creating a AddReward through XML goes as follows:
-
-        <AddReward>
-            <Rewardable /> //A list of Rewardable objects to be rewarded the player, see the specific Rewardables for their respective XML representations.
-            ...
-            <Rewardable />
-        </AddReward>
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport AddReward : public QuestEffect
-    {
-        public:
-            AddReward(BaseObject* creator);
-            virtual ~AddReward();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddReward object through XML.
-
-            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
-
-        private:
-            std::list<Rewardable*> rewards_; //!< A list of Rewardables to be added to the player invoking the QuestEffect.
-
-            /**
-            @brief Add a Rewardable object to the list of objects to be awarded to the player invoking the QuestEffect.
-            @param reward Pointer to the Rewardable to be added.
-            */
-            inline void addRewardable(Rewardable* reward)
-                { this->rewards_.push_back(reward); }
-
-            const Rewardable* getRewardables(unsigned int index) const; //!< Returns the Rewardable object at the given index.
-
-    };
-
-}
-
-#endif /* _AddReward_H__ */
Index: code/trunk/src/modules/questsystem/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/questsystem/CMakeLists.txt	(revision 7284)
+++ code/trunk/src/modules/questsystem/CMakeLists.txt	(revision 7401)
@@ -1,9 +1,3 @@
 SET_SOURCE_FILES(QUESTSYSTEM_SRC_FILES
-  AddQuest.cc
-  AddQuestHint.cc
-  AddReward.cc
-  ChangeQuestStatus.cc
-  CompleteQuest.cc
-  FailQuest.cc
   GlobalQuest.cc
   LocalQuest.cc
@@ -18,4 +12,6 @@
   QuestNotification.cc
 )
+
+ADD_SUBDIRECTORY(effects)
 
 ORXONOX_ADD_LIBRARY(questsystem
Index: code/trunk/src/modules/questsystem/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/modules/questsystem/ChangeQuestStatus.cc	(revision 7284)
+++ 	(revision )
@@ -1,90 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the ChangeQuestStatus class.
-*/
-
-#include "ChangeQuestStatus.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "QuestItem.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    ChangeQuestStatus::ChangeQuestStatus(BaseObject* creator) : QuestEffect(creator)
-    {
-        RegisterObject(ChangeQuestStatus);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    ChangeQuestStatus::~ChangeQuestStatus()
-    {
-    }
-
-    /**
-    @brief
-        Method for creating a ChangeQuestStatus object through XML.
-    */
-    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
-
-        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
-    }
-
-    /**
-    @brief
-        Sets the id of the Quest the Questffect changes the status of.
-    @param id
-        The id of the Quest.
-    @return
-        Returns true if successful.
-    */
-    bool ChangeQuestStatus::setQuestId(const std::string & id)
-    {
-        if(id.compare(BLANKSTRING) == 0)
-        {
-            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return false;
-        }
-
-        this->questId_ = id;
-        return true;
-    }
-
-}
Index: code/trunk/src/modules/questsystem/ChangeQuestStatus.h
===================================================================
--- code/trunk/src/modules/questsystem/ChangeQuestStatus.h	(revision 7284)
+++ 	(revision )
@@ -1,77 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the ChangeQuestStatus class.
-*/
-
-#ifndef _ChangeQuestStatus_H__
-#define _ChangeQuestStatus_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-
-#include <string>
-#include "QuestEffect.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        A QuestEffect which changes the status of a specified Quest for the player invoking the QuestEffect.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport ChangeQuestStatus : public QuestEffect
-    {
-        public:
-            ChangeQuestStatus(BaseObject* creator);
-            virtual ~ChangeQuestStatus();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a ChangeQuestStatus object through XML.
-
-            virtual bool invoke(PlayerInfo* player) = 0; //!< Invokes the QuestEffect.
-
-        protected:
-            /**
-            @brief Returns the id of the Quest.
-            @return Returns the id of the Quest.
-            */
-            inline const std::string & getQuestId(void) const
-                { return this->questId_; }
-
-        private:
-            std::string questId_; //!< The id of the Quest the status should be changed of.
-
-            bool setQuestId(const std::string & id); //!< Sets the id of the Quest.
-
-    };
-
-}
-
-#endif /* _ChangeQuestStatus_H__ */
Index: code/trunk/src/modules/questsystem/CompleteQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/CompleteQuest.cc	(revision 7284)
+++ 	(revision )
@@ -1,112 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the CompleteQuest class.
-*/
-
-#include "CompleteQuest.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "QuestManager.h"
-#include "Quest.h"
-
-namespace orxonox
-{
-    CreateFactory(CompleteQuest);
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    CompleteQuest::CompleteQuest(BaseObject* creator) : ChangeQuestStatus(creator)
-    {
-        RegisterObject(CompleteQuest);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    CompleteQuest::~CompleteQuest()
-    {
-    }
-
-    /**
-    @brief
-        Method for creating a CompleteQuest object through XML.
-    */
-    void CompleteQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(CompleteQuest, XMLPort, xmlelement, mode);
-
-        COUT(4) << "New CompleteQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
-    }
-
-    /**
-    @brief
-        Invokes the QuestEffect.
-    @param player
-        The player the QuestEffect is invoked on.
-    @return
-        Returns true if the QuestEffect was invoked successfully.
-    */
-    bool CompleteQuest::invoke(PlayerInfo* player)
-    {
-        if(player == NULL) //!< You know, what we think of NULL-pointers...
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-
-        COUT(5) << "CompleteQuest on player: " << player << " ." << std::endl;
-
-        Quest* quest;
-
-        try
-        {
-            quest = QuestManager::getInstance().findQuest(this->getQuestId());
-            if(quest == NULL || !quest->complete(player))
-            {
-               return false;
-            }
-        }
-        catch(const Exception& e)
-        {
-            COUT(2) << e.getFullDescription() << std::endl;
-            return false;
-        }
-
-        COUT(4) << "Quest {" << quest->getId() << "} successfully completed by player: " << player << " ." << std::endl;
-        return true;
-    }
-
-
-}
Index: code/trunk/src/modules/questsystem/CompleteQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/CompleteQuest.h	(revision 7284)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the CompleteQuest class.
-*/
-
-#ifndef _CompleteQuest_H__
-#define _CompleteQuest_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Completes a Quest (with a specified id) for the player invoking the QuestEffect.
-
-        Creating a CompleteQuest through XML goes as follows:
-
-        <CompleteQuest questId="id" />  //Where id is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information, and identifies the Quest that should be completed.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport CompleteQuest : public ChangeQuestStatus
-    {
-        public:
-            CompleteQuest(BaseObject* creator);
-            virtual ~CompleteQuest();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a CompleteQuest object through XML.
-
-            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
-
-    };
-
-}
-
-#endif /* _CompleteQuest_H__ */
Index: code/trunk/src/modules/questsystem/FailQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/FailQuest.cc	(revision 7284)
+++ 	(revision )
@@ -1,111 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the FailQuest class.
-*/
-
-#include "FailQuest.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "QuestManager.h"
-#include "Quest.h"
-
-namespace orxonox
-{
-    CreateFactory(FailQuest);
-
-    /**
-    @brief
-        Constructor. Registers the object.
-    */
-    FailQuest::FailQuest(BaseObject* creator) : ChangeQuestStatus(creator)
-    {
-        RegisterObject(FailQuest);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    FailQuest::~FailQuest()
-    {
-    }
-
-    /**
-    @brief
-        Method for creating a FailQuest object through XML.
-    */
-    void FailQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(FailQuest, XMLPort, xmlelement, mode);
-
-        COUT(4) << "New FailQUest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
-    }
-
-    /**
-    @brief
-        Invokes the QuestEffect.
-    @param player
-        The player the QuestEffect is invoked on.
-    @return
-        Returns true if the QuestEffect was invoked successfully.
-    */
-    bool FailQuest::invoke(PlayerInfo* player)
-    {
-        if(player == NULL) //!< We don't know what to do with no player.
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-
-        COUT(4) << "FailQuest on player: " << player << " ." << std::endl;
-
-        Quest* quest;
-        try
-        {
-            quest = QuestManager::getInstance().findQuest(this->getQuestId());
-            if(quest == NULL || !quest->fail(player))
-            {
-               return false;
-            }
-        }
-        catch(const Exception& e)
-        {
-            COUT(2) << e.getFullDescription() << std::endl;
-            return false;
-        }
-
-        COUT(4) << "Quest {" << quest->getId() << "} failed by player: " << player << " ." << std::endl;
-        return true;
-    }
-
-
-}
Index: code/trunk/src/modules/questsystem/FailQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/FailQuest.h	(revision 7284)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/*
- *   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:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Definition of the FailQuest class.
-*/
-
-#ifndef _FailQuest_H__
-#define _FailQuest_H__
-
-#include "questsystem/QuestsystemPrereqs.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox
-{
-    /**
-    @brief
-        Fails a quest (with a specified id) for the player invoking the QuestEffect.
-
-        Creating a FailQuest through XML goes as follows:
-
-        <FailQuest questId="id" />  //Where id is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information, and identifies the Quest that should be failed.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class _QuestsystemExport FailQuest : public ChangeQuestStatus
-    {
-        public:
-            FailQuest(BaseObject* creator);
-            virtual ~FailQuest();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a FailQuest object through XML.
-
-            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
-
-    };
-
-}
-
-#endif /* _FailQuest_H__ */
Index: code/trunk/src/modules/questsystem/GlobalQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/GlobalQuest.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/GlobalQuest.h	(revision 7401)
@@ -50,5 +50,6 @@
         Creating a GlobalQuest through XML goes as follows:
 
-        <GlobalQuest id="questId"> //Where questId is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information
+        @code
+        <GlobalQuest id="questId">
             <QuestDescription title="Title" description="Description." /> //The description of the quest.
             <subquests>
@@ -78,4 +79,5 @@
             </reward-effects>
         </GlobalQuest>
+        @endcode
     @author
         Damian 'Mozork' Frick
Index: code/trunk/src/modules/questsystem/LocalQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/LocalQuest.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/LocalQuest.h	(revision 7401)
@@ -49,5 +49,6 @@
         Creating a LocalQuest through XML goes as follows:
 
-        <LocalQuest id="questId"> //Where questId is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information
+        @code
+        <LocalQuest id="questId">
             <QuestDescription title="Title" description="Description." /> //The description of the quest.
             <subquests>
@@ -72,4 +73,5 @@
             </complete-effects>
         </LocalQuest>
+        @endcode
     @author
         Damian 'Mozork' Frick
Index: code/trunk/src/modules/questsystem/Quest.cc
===================================================================
--- code/trunk/src/modules/questsystem/Quest.cc	(revision 7284)
+++ code/trunk/src/modules/questsystem/Quest.cc	(revision 7401)
@@ -197,5 +197,5 @@
     @brief
         Returns the subquest at the given index.
-    @param
+    @param index
         The index.
     @return
@@ -222,5 +222,5 @@
     @brief
         Returns the QuestHint at the given index.
-    @param
+    @param index
         The index.
     @return
@@ -246,5 +246,5 @@
     @brief
         Returns the fail QuestEffect at the given index.
-    @param
+    @param index
         The index.
     @return
@@ -270,5 +270,5 @@
     @brief
         Returns the complete QuestEffect at the given index.
-    @param
+    @param index
         The index.
     @return
Index: code/trunk/src/modules/questsystem/QuestDescription.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestDescription.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestDescription.h	(revision 7401)
@@ -50,5 +50,7 @@
         Creating a QuestDescription through XML goes as follows:
 
+        @code
         <QuestDescription title="Title" description="Description Text" failMessage="You fail." completeMessage="You win!" />
+        @endcode
     @author
         Damian 'Mozork' Frick
Index: code/trunk/src/modules/questsystem/QuestEffectBeacon.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestEffectBeacon.cc	(revision 7401)
@@ -92,4 +92,6 @@
         Executes the QuestEffectBeacon.
         This means extracting the Pawn from the PlayerTrigger, provided by the Event causing the execution, and the extracting the PlayerInfo from the received Pawn and invoking the QuestEffectbeacon's QuestEffects on the received PlayerInfo.
+    @param bTriggered
+        true means the trigger was activated while false means it was deactivated
     @param trigger
         A pointer to the PlayerTrigger that threw the Event.
@@ -97,7 +99,7 @@
         Returns true if successfully executed, false if not.
     */
-    bool QuestEffectBeacon::execute(bool b, BaseObject* trigger)
-    {
-        if(!b)
+    bool QuestEffectBeacon::execute(bool bTriggered, BaseObject* trigger)
+    {
+        if(!bTriggered)
         {
             return false;
Index: code/trunk/src/modules/questsystem/QuestEffectBeacon.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestEffectBeacon.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestEffectBeacon.h	(revision 7401)
@@ -61,4 +61,5 @@
         Creating a QuestEffectBeacon through XML goes as follows:
 
+        @code
         <QuestEffectBeacon times=n> //Where 'n' is eighter a number >= 0, which means the QuestEffectBeacon can be executed n times. Or n = -1, which means the QuestEffectBeacon can be executed an infinite number of times.
             <effects>
@@ -76,4 +77,5 @@
             </attached>
         </QuestEffectBeacon>
+        @endcode
     @author
         Damian 'Mozork' Frick
@@ -88,5 +90,5 @@
             virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
 
-            bool execute(bool b, BaseObject* trigger); //!< Executes the QuestEffects of the QuestEffectBeacon.
+            bool execute(bool bTriggered, BaseObject* trigger); //!< Executes the QuestEffects of the QuestEffectBeacon.
 
             /**
Index: code/trunk/src/modules/questsystem/QuestHint.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestHint.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestHint.h	(revision 7401)
@@ -60,7 +60,9 @@
         Creating a QuestHint through XML goes as follows:
 
-        <QuestHint id="hintId">  //Where hintId is a GUID, see http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure for more information
+        @code
+        <QuestHint id="hintId">
             <QuestDesctription title="" description="" />
         </QuestHint>
+        @endcode
     @author
         Damian 'Mozork' Frick
Index: code/trunk/src/modules/questsystem/QuestItem.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestItem.cc	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestItem.cc	(revision 7401)
@@ -78,5 +78,7 @@
     @brief
         Sets the id of the QuestItem.
-    The id must be of GUID form. See 'http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure' for more information.
+        The id can be any string and must be unique in the context it is used (commonly a level file). To ensure uniqueness one could use GUIDs, however they are in general less readable, so make your own choice.
+    @see
+        http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure
     @param id
         The id to be set.
Index: code/trunk/src/modules/questsystem/QuestItem.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestItem.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestItem.h	(revision 7401)
@@ -98,5 +98,5 @@
 
         private:
-            std::string id_; //!< Identifier. Should be of GUID form: http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure
+            std::string id_; //!< Identifier. Must be unique.
             QuestDescription* description_; //!< The QuestDescription of the QuestItem.
 
Index: code/trunk/src/modules/questsystem/QuestListener.h
===================================================================
--- code/trunk/src/modules/questsystem/QuestListener.h	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestListener.h	(revision 7401)
@@ -62,4 +62,5 @@
         You can use the QuestListener as if it were a Trigger or EventListener, that fires an Event when the status (depending on the set mode) of the given Quest changes.
 
+        @code
         <BaseObject> // The object that should react to the status change of a Quest.
             <events>
@@ -69,4 +70,5 @@
             </events>
         </BaseObject>
+        @endcode
     @author
     Damian 'Mozork' Frick
Index: code/trunk/src/modules/questsystem/QuestNotification.cc
===================================================================
--- code/trunk/src/modules/questsystem/QuestNotification.cc	(revision 7284)
+++ code/trunk/src/modules/questsystem/QuestNotification.cc	(revision 7401)
@@ -48,4 +48,6 @@
     @brief
         Creates a QuestNotification with the input message.
+    @param creator
+        The creator of this object
     @param message
         The message to be sent.
Index: code/trunk/src/modules/questsystem/effects/AddQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuest.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddQuest.cc	(revision 7401)
@@ -0,0 +1,110 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the AddQuest class.
+*/
+
+#include "AddQuest.h"
+
+#include "util/Exception.h"
+#include "core/CoreIncludes.h"
+#include "questsystem/QuestManager.h"
+#include "questsystem/Quest.h"
+
+namespace orxonox
+{
+    CreateFactory(AddQuest);
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    AddQuest::AddQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    {
+        RegisterObject(AddQuest);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    AddQuest::~AddQuest()
+    {
+    }
+
+    /**
+    @brief
+        Method for creating a AddQuest object through XML.
+    */
+    void AddQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddQuest, XMLPort, xmlelement, mode);
+
+        COUT(4) << "New AddQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
+    }
+
+    /**
+    @brief
+        Invokes the QuestEffect.
+    @param player
+        The player the QuestEffect is invoked on.
+    @return
+        Returns true if the QuestEffect was successfully invoked.
+    */
+    bool AddQuest::invoke(PlayerInfo* player)
+    {
+        if(player == NULL) //!< Null-pointers are badass.
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+
+        COUT(5) << "AddQuest on player: " << player << " ." << std::endl;
+
+        try
+        {
+            Quest* quest = QuestManager::getInstance().findQuest(this->getQuestId());
+            if(quest == NULL || !quest->start(player))
+            {
+               return false;
+            }
+        }
+        catch(const orxonox::Exception& ex)
+        {
+            COUT(2) << ex.getFullDescription() << std::endl;
+            return false;
+        }
+
+        COUT(4) << "Quest {" << this->getQuestId() << "} successfully added to player: " << player << " ." << std::endl;
+        return true;
+    }
+
+
+}
Index: code/trunk/src/modules/questsystem/effects/AddQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuest.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddQuest.h	(revision 7401)
@@ -0,0 +1,68 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the AddQuest class.
+*/
+
+#ifndef _AddQuest_H__
+#define _AddQuest_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Adds a Quest, resp. changes the quests status to active for the player invoking the Quest.
+
+        Creating a AddQuest through XML goes as follows:
+
+        @code
+        <AddQuest questId="id" />  //Where id identifies the Quest that should be added.
+        @endcode
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport AddQuest : public ChangeQuestStatus
+    {
+        public:
+        AddQuest(BaseObject* creator);
+        virtual ~AddQuest();
+
+        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuest object through XML.
+
+        virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
+
+    };
+
+}
+
+#endif /* _AddQuest_H__ */
Index: code/trunk/src/modules/questsystem/effects/AddQuestHint.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuestHint.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddQuestHint.cc	(revision 7401)
@@ -0,0 +1,133 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the AddQuestHint class.
+*/
+
+#include "AddQuestHint.h"
+
+#include "util/Exception.h"
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "questsystem/QuestManager.h"
+#include "questsystem/QuestItem.h"
+#include "questsystem/QuestHint.h"
+
+namespace orxonox
+{
+    CreateFactory(AddQuestHint);
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    AddQuestHint::AddQuestHint(BaseObject* creator) : QuestEffect(creator)
+    {
+        RegisterObject(AddQuestHint);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    AddQuestHint::~AddQuestHint()
+    {
+    }
+
+    /**
+    @brief
+        Method for creating a AddQuestHint object through XML.
+    */
+    void AddQuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddQuestHint, XMLPort, xmlelement, mode);
+
+        XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
+
+        COUT(4) << "New AddQuestHint, with target QuestHint {" << this->getHintId() << "}, created." << std::endl;
+    }
+
+    /**
+    @brief
+        Sets the id of the QuestHint to be added to the player the QuestEffect is invoked on.
+    @param id
+        The QuestHint id.
+    @return
+        Returns true if successful.
+    */
+    bool AddQuestHint::setHintId(const std::string & id)
+    {
+        if(id.compare(BLANKSTRING) == 0)
+        {
+            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
+            return false;
+        }
+
+        this->hintId_ = id;
+        return true;
+    }
+
+    /**
+    @brief
+        Invokes the QuestEffect.
+    @param player
+        The player.
+    @return
+        Returns true if the QuestEffect was successfully invoked.
+    */
+    bool AddQuestHint::invoke(PlayerInfo* player)
+    {
+        if(player == NULL) //!< NULL-pointers are evil!
+        {
+            COUT(2) << "The input player is NULL." << std::endl;
+            return false;
+        }
+
+        COUT(5) << "AddQuestHint on player: " << player << " ." << std::endl;
+
+        try
+        {
+            QuestHint* hint = QuestManager::getInstance().findHint(this->hintId_);
+            if(hint == NULL || !hint->setActive(player))
+            {
+                return false;
+            }
+        }
+        catch(const Exception& e)
+        {
+           COUT(2) << e.getFullDescription() << std::endl;
+           return false;
+        }
+
+        COUT(4) << "QuestHint {" << this->getHintId() << "} successfully added to player: " << player << " ." << std::endl;
+        return true;
+
+    }
+}
Index: code/trunk/src/modules/questsystem/effects/AddQuestHint.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddQuestHint.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddQuestHint.h	(revision 7401)
@@ -0,0 +1,82 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the AddQuestHint class.
+*/
+
+#ifndef _AddQuestHint_H__
+#define _AddQuestHint_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+
+#include <string>
+#include "questsystem/QuestEffect.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Adds a QuestHint, resp. activates the QuestHint of the given id for the player the QuestEffect is invoked on.
+
+        Creating a AddQuestHint through XML goes as follows:
+
+        @code
+        <AddQuestHint hintId="id" />  //Where id identifies the QuestHint that should be added.
+        @endcode
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport AddQuestHint : public QuestEffect
+    {
+        public:
+            AddQuestHint(BaseObject* creator);
+            virtual ~AddQuestHint();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddQuestHint object through XML.
+
+            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
+
+        private:
+            std::string hintId_; //!< The id of the QuestHint.
+
+            /**
+            @brief Returns the id of the QuestHint.
+            @return Returns the id of the QuestHint.
+            */
+            inline const std::string & getHintId(void) const
+                { return this->hintId_; }
+
+            bool setHintId(const std::string & id); //!< Sets the id of the QuestHint.
+
+    };
+
+}
+
+#endif /* _AddQuestHint_H__ */
Index: code/trunk/src/modules/questsystem/effects/AddReward.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddReward.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddReward.cc	(revision 7401)
@@ -0,0 +1,118 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the AddReward class.
+*/
+
+#include "AddReward.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "interfaces/Rewardable.h"
+
+namespace orxonox
+{
+    CreateFactory(AddReward);
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    AddReward::AddReward(BaseObject* creator) : QuestEffect(creator)
+    {
+        RegisterObject(AddReward);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    AddReward::~AddReward()
+    {
+    }
+
+    /**
+        Method for creating a AddReward object through XML.
+    */
+    void AddReward::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddReward, XMLPort, xmlelement, mode);
+
+        XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
+
+        COUT(4) << "New AddReward, with " << this->rewards_.size() << " Rewardables created." << std::endl;
+    }
+
+    /**
+    @brief
+        Returns the Rewardable object at the given index.
+    @param index
+        The index.
+    @return
+        Returns a pointer to the Rewardable object at the given index.
+    */
+    const Rewardable* AddReward::getRewardables(unsigned int index) const
+    {
+        int i = index;
+        for (std::list<Rewardable*>::const_iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward)
+        {
+            if(i == 0)
+            {
+               return *reward;
+            }
+            i--;
+        }
+        return NULL;
+    }
+
+    /**
+    @brief
+        Invokes the QuestEffect.
+    @param player
+        The player.
+    @return
+        Returns true if the QuestEffect was invoked successfully.
+    */
+    bool AddReward::invoke(PlayerInfo* player)
+    {
+        COUT(5) << "AddReward on player: " << player << " ." << std::endl;
+
+        bool check = true;
+        for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
+        {
+            check = check && (*reward)->reward(player);
+        }
+
+        COUT(4) << "Rewardable successfully added to player." << player << " ." << std::endl;
+
+        return check;
+    }
+
+}
Index: code/trunk/src/modules/questsystem/effects/AddReward.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/AddReward.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/AddReward.h	(revision 7401)
@@ -0,0 +1,86 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the AddReward class.
+*/
+
+#ifndef _AddReward_H__
+#define _AddReward_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+
+#include <list>
+#include "questsystem/QuestEffect.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Adds a list of Rewardables to a player.
+
+        Creating a AddReward through XML goes as follows:
+
+        @code
+        <AddReward>
+            <Rewardable /> //A list of Rewardable objects to be rewarded the player, see the specific Rewardables for their respective XML representations.
+            ...
+            <Rewardable />
+        </AddReward>
+        @endcode
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport AddReward : public QuestEffect
+    {
+        public:
+            AddReward(BaseObject* creator);
+            virtual ~AddReward();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a AddReward object through XML.
+
+            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
+
+        private:
+            std::list<Rewardable*> rewards_; //!< A list of Rewardables to be added to the player invoking the QuestEffect.
+
+            /**
+            @brief Add a Rewardable object to the list of objects to be awarded to the player invoking the QuestEffect.
+            @param reward Pointer to the Rewardable to be added.
+            */
+            inline void addRewardable(Rewardable* reward)
+                { this->rewards_.push_back(reward); }
+
+            const Rewardable* getRewardables(unsigned int index) const; //!< Returns the Rewardable object at the given index.
+
+    };
+
+}
+
+#endif /* _AddReward_H__ */
Index: code/trunk/src/modules/questsystem/effects/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/questsystem/effects/CMakeLists.txt	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/CMakeLists.txt	(revision 7401)
@@ -0,0 +1,9 @@
+ADD_SOURCE_FILES(QUESTSYSTEM_SRC_FILES
+  AddQuest.cc
+  AddQuestHint.cc
+  AddReward.cc
+  ChangeQuestStatus.cc
+  CompleteQuest.cc
+  FailQuest.cc
+)
+
Index: code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.cc	(revision 7401)
@@ -0,0 +1,90 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the ChangeQuestStatus class.
+*/
+
+#include "ChangeQuestStatus.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "questsystem/QuestItem.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    ChangeQuestStatus::ChangeQuestStatus(BaseObject* creator) : QuestEffect(creator)
+    {
+        RegisterObject(ChangeQuestStatus);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    ChangeQuestStatus::~ChangeQuestStatus()
+    {
+    }
+
+    /**
+    @brief
+        Method for creating a ChangeQuestStatus object through XML.
+    */
+    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
+
+        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
+    }
+
+    /**
+    @brief
+        Sets the id of the Quest the Questffect changes the status of.
+    @param id
+        The id of the Quest.
+    @return
+        Returns true if successful.
+    */
+    bool ChangeQuestStatus::setQuestId(const std::string & id)
+    {
+        if(id.compare(BLANKSTRING) == 0)
+        {
+            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
+            return false;
+        }
+
+        this->questId_ = id;
+        return true;
+    }
+
+}
Index: code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/ChangeQuestStatus.h	(revision 7401)
@@ -0,0 +1,77 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the ChangeQuestStatus class.
+*/
+
+#ifndef _ChangeQuestStatus_H__
+#define _ChangeQuestStatus_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+
+#include <string>
+#include "questsystem/QuestEffect.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        A QuestEffect which changes the status of a specified Quest for the player invoking the QuestEffect.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport ChangeQuestStatus : public QuestEffect
+    {
+        public:
+            ChangeQuestStatus(BaseObject* creator);
+            virtual ~ChangeQuestStatus();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a ChangeQuestStatus object through XML.
+
+            virtual bool invoke(PlayerInfo* player) = 0; //!< Invokes the QuestEffect.
+
+        protected:
+            /**
+            @brief Returns the id of the Quest.
+            @return Returns the id of the Quest.
+            */
+            inline const std::string & getQuestId(void) const
+                { return this->questId_; }
+
+        private:
+            std::string questId_; //!< The id of the Quest the status should be changed of.
+
+            bool setQuestId(const std::string & id); //!< Sets the id of the Quest.
+
+    };
+
+}
+
+#endif /* _ChangeQuestStatus_H__ */
Index: code/trunk/src/modules/questsystem/effects/CompleteQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/CompleteQuest.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/CompleteQuest.cc	(revision 7401)
@@ -0,0 +1,112 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the CompleteQuest class.
+*/
+
+#include "CompleteQuest.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "questsystem/QuestManager.h"
+#include "questsystem/Quest.h"
+
+namespace orxonox
+{
+    CreateFactory(CompleteQuest);
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    CompleteQuest::CompleteQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    {
+        RegisterObject(CompleteQuest);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    CompleteQuest::~CompleteQuest()
+    {
+    }
+
+    /**
+    @brief
+        Method for creating a CompleteQuest object through XML.
+    */
+    void CompleteQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(CompleteQuest, XMLPort, xmlelement, mode);
+
+        COUT(4) << "New CompleteQuest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
+    }
+
+    /**
+    @brief
+        Invokes the QuestEffect.
+    @param player
+        The player the QuestEffect is invoked on.
+    @return
+        Returns true if the QuestEffect was invoked successfully.
+    */
+    bool CompleteQuest::invoke(PlayerInfo* player)
+    {
+        if(player == NULL) //!< You know, what we think of NULL-pointers...
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+
+        COUT(5) << "CompleteQuest on player: " << player << " ." << std::endl;
+
+        Quest* quest;
+
+        try
+        {
+            quest = QuestManager::getInstance().findQuest(this->getQuestId());
+            if(quest == NULL || !quest->complete(player))
+            {
+               return false;
+            }
+        }
+        catch(const Exception& e)
+        {
+            COUT(2) << e.getFullDescription() << std::endl;
+            return false;
+        }
+
+        COUT(4) << "Quest {" << quest->getId() << "} successfully completed by player: " << player << " ." << std::endl;
+        return true;
+    }
+
+
+}
Index: code/trunk/src/modules/questsystem/effects/CompleteQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/CompleteQuest.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/CompleteQuest.h	(revision 7401)
@@ -0,0 +1,68 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the CompleteQuest class.
+*/
+
+#ifndef _CompleteQuest_H__
+#define _CompleteQuest_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Completes a Quest (with a specified id) for the player invoking the QuestEffect.
+
+        Creating a CompleteQuest through XML goes as follows:
+
+        @code
+        <CompleteQuest questId="id" />  //Where id identifies the Quest that should be completed.
+        @endcode
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport CompleteQuest : public ChangeQuestStatus
+    {
+        public:
+            CompleteQuest(BaseObject* creator);
+            virtual ~CompleteQuest();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a CompleteQuest object through XML.
+
+            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
+
+    };
+
+}
+
+#endif /* _CompleteQuest_H__ */
Index: code/trunk/src/modules/questsystem/effects/FailQuest.cc
===================================================================
--- code/trunk/src/modules/questsystem/effects/FailQuest.cc	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/FailQuest.cc	(revision 7401)
@@ -0,0 +1,111 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Implementation of the FailQuest class.
+*/
+
+#include "FailQuest.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "questsystem/QuestManager.h"
+#include "questsystem/Quest.h"
+
+namespace orxonox
+{
+    CreateFactory(FailQuest);
+
+    /**
+    @brief
+        Constructor. Registers the object.
+    */
+    FailQuest::FailQuest(BaseObject* creator) : ChangeQuestStatus(creator)
+    {
+        RegisterObject(FailQuest);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    FailQuest::~FailQuest()
+    {
+    }
+
+    /**
+    @brief
+        Method for creating a FailQuest object through XML.
+    */
+    void FailQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(FailQuest, XMLPort, xmlelement, mode);
+
+        COUT(4) << "New FailQUest, with target Quest {" << this->getQuestId() << "}, created." << std::endl;
+    }
+
+    /**
+    @brief
+        Invokes the QuestEffect.
+    @param player
+        The player the QuestEffect is invoked on.
+    @return
+        Returns true if the QuestEffect was invoked successfully.
+    */
+    bool FailQuest::invoke(PlayerInfo* player)
+    {
+        if(player == NULL) //!< We don't know what to do with no player.
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+
+        COUT(4) << "FailQuest on player: " << player << " ." << std::endl;
+
+        Quest* quest;
+        try
+        {
+            quest = QuestManager::getInstance().findQuest(this->getQuestId());
+            if(quest == NULL || !quest->fail(player))
+            {
+               return false;
+            }
+        }
+        catch(const Exception& e)
+        {
+            COUT(2) << e.getFullDescription() << std::endl;
+            return false;
+        }
+
+        COUT(4) << "Quest {" << quest->getId() << "} failed by player: " << player << " ." << std::endl;
+        return true;
+    }
+
+
+}
Index: code/trunk/src/modules/questsystem/effects/FailQuest.h
===================================================================
--- code/trunk/src/modules/questsystem/effects/FailQuest.h	(revision 7401)
+++ code/trunk/src/modules/questsystem/effects/FailQuest.h	(revision 7401)
@@ -0,0 +1,68 @@
+/*
+ *   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:
+ *      ...
+ *
+ */
+
+/**
+    @file
+    @brief Definition of the FailQuest class.
+*/
+
+#ifndef _FailQuest_H__
+#define _FailQuest_H__
+
+#include "questsystem/QuestsystemPrereqs.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox
+{
+    /**
+    @brief
+        Fails a quest (with a specified id) for the player invoking the QuestEffect.
+
+        Creating a FailQuest through XML goes as follows:
+
+        @code
+        <FailQuest questId="id" />  //Where id identifies the Quest that should be failed.
+        @endcode
+    @author
+        Damian 'Mozork' Frick
+    */
+    class _QuestsystemExport FailQuest : public ChangeQuestStatus
+    {
+        public:
+            FailQuest(BaseObject* creator);
+            virtual ~FailQuest();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); //!< Method for creating a FailQuest object through XML.
+
+            virtual bool invoke(PlayerInfo* player); //!< Invokes the QuestEffect.
+
+    };
+
+}
+
+#endif /* _FailQuest_H__ */
