Index: code/trunk/src/orxonox/objects/AddQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/AddQuest.cc	(revision 2090)
+++ 	(revision )
@@ -1,96 +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:
- *      ...
- *
- */
-
-#include <string>
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "QuestManager.h"
-#include "Quest.h"
-#include "AddQuest.h"
-
-namespace orxonox {
-
-    CreateFactory(AddQuest);
-
-
-    AddQuest::AddQuest() : ChangeQuestStatus()
-    {
-        RegisterObject(AddQuest);
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */ 
-    AddQuest::~AddQuest()
-    {
-    }
-    
-    void AddQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddQuest, XMLPort, xmlelement, mode);
-        
-    }
-    
-    /**
-    @brief
-        Invokes the effect.
-    @param player
-        The player the effect is invoked on.
-    @return
-        Returns true if the effect was successfully invoked.
-    */
-    bool AddQuest::invoke(Player* player)
-    {
-        if(player == NULL)
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-    
-        try
-        {
-	    Quest* quest = QuestManager::findQuest(this->getQuestId());
-	    if(!quest->start(player))
-	    {
-	       return false;
-	    }
-	}
-	catch(const orxonox::Exception& ex)
-	{
-            COUT(2) << ex.getFullDescription() << std::endl;
-            return false;
-	}
-	
-	return true;
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/AddQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/AddQuest.h	(revision 2090)
+++ 	(revision )
@@ -1,61 +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:
- *      ...
- *
- */
-
-#ifndef _AddQuest_H__
-#define _AddQuest_H__
-
-#include <string>
-
-#include "core/XMLPort.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Adds a quest, resp. changes the quests status to active.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class AddQuest : public ChangeQuestStatus
-    {
-	public:
-            AddQuest();
-	    ~AddQuest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player); //!< Invokes the effect.
-    
-    };
-
-}
-
-#endif /* _AddQuest_H__ */
Index: code/trunk/src/orxonox/objects/AddQuestHint.cc
===================================================================
--- code/trunk/src/orxonox/objects/AddQuestHint.cc	(revision 2090)
+++ 	(revision )
@@ -1,104 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "QuestManager.h"
-#include "QuestItem.h"
-#include "AddQuestHint.h"
-
-namespace orxonox {
-
-    CreateFactory(AddQuestHint);
-
-    AddQuestHint::AddQuestHint() : QuestEffect()
-    {
-        
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    AddQuestHint::~AddQuestHint()
-    {
-    }
-    
-    void AddQuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddQuestHint, XMLPort, xmlelement, mode);
-        
-        XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
-        
-    }
-
-    inline void AddQuestHint::setHintId(const std::string & id)
-    {
-        if(!QuestItem::isId(id))
-        {
-            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return;
-        }
-        this->hintId_ = id;
-    }
-
-    /**
-    @brief
-        Invokes the effect.
-    @param player
-        The player.
-    @return
-        Returns true if the effect was successfully invoked.
-    */
-    bool AddQuestHint::invoke(Player* player)
-    {
-        if(player == NULL)
-        {
-            COUT(2) << "The input player is NULL." << std::endl;
-            return false;
-        }
-
-        try
-        {
-            QuestHint* hint = QuestManager::findHint(this->hintId_);
-	    if(!hint->activate(player))
-	    {
-		return false;
-	    }
-	}
-	catch(const Exception& e)
-	{
-	   COUT(2) << e.getFullDescription() << std::endl;
-	   return false;
-	}
-	
-	return true;
-	
-    }
-}
Index: code/trunk/src/orxonox/objects/AddQuestHint.h
===================================================================
--- code/trunk/src/orxonox/objects/AddQuestHint.h	(revision 2090)
+++ 	(revision )
@@ -1,67 +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:
- *      ...
- *
- */
-
-#ifndef _AddQuestHint_H__
-#define _AddQuestHint_H__
-
-#include <string>
-
-#include "QuestEffect.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-	Adds a QuestHint, resp. Activates the QuestHint.
-    @author
-	Damian 'Mozork' Frick
-    */
-    class AddQuestHint : public QuestEffect
-    {
-	public:
-            AddQuestHint();
-	    ~AddQuestHint();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player); //!< Invokes the effect.
-	    
-	private:
-            std::string hintId_;
-            
-            inline const std::string & getHintId(void) const
-                { return this->hintId_; }
-	    void setHintId(const std::string & id);
-    
-    };
-
-}
-
-#endif /* _AddQuestHint_H__ */
Index: code/trunk/src/orxonox/objects/AddReward.cc
===================================================================
--- code/trunk/src/orxonox/objects/AddReward.cc	(revision 2090)
+++ 	(revision )
@@ -1,100 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "AddReward.h"
-
-namespace orxonox {
-    
-    CreateFactory(AddReward);
-    
-    AddReward::AddReward() : QuestEffect()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    AddReward::~AddReward()
-    {
-    }
-
-    void AddReward::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(AddReward, XMLPort, xmlelement, mode);
-        
-        XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
-        
-    }
-
-    /**
-    @brief
-        Initializes the object. Needs to be called first by every constructor of this class.
-    */
-    void AddReward::initialize(void)
-    {
-        RegisterObject(AddReward);
-    }
-    
-    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 effect.
-    @param player
-        The player.
-    @return
-        Returns true if the effect was invoked successfully.
-    */
-    bool AddReward::invoke(Player* player)
-    {
-	bool check = true;
-        for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
-	{
-	    check = check && (*reward)->reward(player);
-	}
-	
-	return check;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/AddReward.h
===================================================================
--- code/trunk/src/orxonox/objects/AddReward.h	(revision 2090)
+++ 	(revision )
@@ -1,71 +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:
- *      ...
- *
- */
-
-#ifndef _AddReward_H__
-#define _AddReward_H__
-
-#include <list>
-
-#include "core/XMLPort.h"
-#include "Rewardable.h"
-#include "QuestEffect.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-	Adds a list of rewards to a player.
-    @author
-	Damian 'Mozork' Frick
-    */
-    class AddReward : public QuestEffect
-    {
-	public:
-            AddReward();
-	    ~AddReward();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player); //!< Invokes the effect.
-	    
-	private:
-            std::list<Rewardable*> rewards_;
-	
-            void initialize(void); //!< Initializes the object.
-	
-            inline void addRewardable(Rewardable* reward)
-                { this->rewards_.push_back(reward); }
-	    const Rewardable* getRewardables(unsigned int index) const;
-    
-    };
-
-}
-
-#endif /* _AddReward_H__ */
Index: code/trunk/src/orxonox/objects/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/orxonox/objects/ChangeQuestStatus.cc	(revision 2090)
+++ 	(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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "QuestItem.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox {
-
-    ChangeQuestStatus::ChangeQuestStatus() : QuestEffect()
-    {
-        RegisterObject(ChangeQuestStatus);
-    }
-
-    /**
-    @brief
-        Destructor.
-    */
-    ChangeQuestStatus::~ChangeQuestStatus()
-    {
-    }
-    
-    void ChangeQuestStatus::setQuestId(const std::string & id)
-    {
-        if(!QuestItem::isId(id))
-        {
-            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return;
-        }
-        this->questId_ = id;
-    }
-    
-    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
-        
-        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
-    }
-
-}
Index: code/trunk/src/orxonox/objects/ChangeQuestStatus.h
===================================================================
--- code/trunk/src/orxonox/objects/ChangeQuestStatus.h	(revision 2090)
+++ 	(revision )
@@ -1,70 +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:
- *      ...
- *
- */
-
-#ifndef _ChangeQuestStatus_H__
-#define _ChangeQuestStatus_H__
-
-#include <string>
-
-#include "core/XMLPort.h"
-#include "QuestEffect.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        An effect which changes a quests status.
-    @author
-	Damian 'Mozork' Frick
-    */
-    class ChangeQuestStatus : public QuestEffect
-    {
-	public:
-            ChangeQuestStatus();
-	    virtual ~ChangeQuestStatus();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player) = 0; //!< Invokes the effect.
-	    
-	protected:
-            inline const std::string & getQuestId(void) const //!< Returns the quest id.
-                { return this->questId_; }
-	
-            std::string questId_; //!< The id of the quest the status should be changed of.
-            
-	private:
-	    void setQuestId(const std::string & id);
-
-    };
-
-}
-
-#endif /* _ChangeQuestStatus_H__ */
Index: code/trunk/src/orxonox/objects/CompleteQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/CompleteQuest.cc	(revision 2090)
+++ 	(revision )
@@ -1,92 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "QuestManager.h"
-#include "Quest.h"
-#include "CompleteQuest.h"
-
-namespace orxonox {
-
-    CreateFactory(CompleteQuest);
-
-    CompleteQuest::CompleteQuest() : ChangeQuestStatus()
-    {
-        RegisterObject(CompleteQuest);
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    CompleteQuest::~CompleteQuest()
-    {
-    }
-    
-    void CompleteQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(CompleteQuest, XMLPort, xmlelement, mode);
-    }
-    
-    /**
-    @brief
-        Invokes the effect.
-    @param player
-        The player the effect is invoked on.
-    @return
-        Returns true if the effect was invoked successfully.
-    */
-    bool CompleteQuest::invoke(Player* player)
-    {
-        if(player == NULL)
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-    
-        try
-        {
-	    Quest* quest = QuestManager::findQuest(this->getQuestId());
-	    if(!quest->complete(player))
-	    {
-	       return false;
-	    }
-	}
-	catch(const Exception& e)
-	{
-            COUT(2) << e.getFullDescription() << std::endl;
-            return false;
-	}
-	
-	return true;
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/CompleteQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/CompleteQuest.h	(revision 2090)
+++ 	(revision )
@@ -1,61 +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:
- *      ...
- *
- */
-
-#ifndef _CompleteQuest_H__
-#define _CompleteQuest_H__
-
-#include <string>
-
-#include "core/XMLPort.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Completes a quest.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class CompleteQuest : public ChangeQuestStatus
-    {
-	public:
-            CompleteQuest();
-	    ~CompleteQuest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player); //!< Invokes the effect.
-    
-    };
-
-}
-
-#endif /* _CompleteQuest_H__ */
Index: code/trunk/src/orxonox/objects/FailQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/FailQuest.cc	(revision 2090)
+++ 	(revision )
@@ -1,92 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "QuestManager.h"
-#include "Quest.h"
-#include "FailQuest.h"
-
-namespace orxonox {
-
-    CreateFactory(FailQuest);
-
-    FailQuest::FailQuest() : ChangeQuestStatus()
-    {
-        RegisterObject(FailQuest);
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    FailQuest::~FailQuest()
-    {
-    }
-    
-    void FailQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(FailQuest, XMLPort, xmlelement, mode);
-    }
-    
-    /**
-    @brief
-        Invokes the effect.
-    @param player
-        The player the effect is invoked on.
-    @return
-        Returns true if the effect was invoked successfully.
-    */
-    bool FailQuest::invoke(Player* player)
-    {
-        if(player == NULL)
-        {
-            COUT(2) << "Input player is NULL." << std::endl;
-            return false;
-        }
-    
-        try
-        {
-	    Quest* quest = QuestManager::findQuest(this->getQuestId());
-	    if(!quest->fail(player))
-	    {
-	       return false;
-	    }
-	}
-	catch(const Exception& e)
-	{
-            COUT(2) << e.getFullDescription() << std::endl;
-            return false;
-	}
-	
-	return true;
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/FailQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/FailQuest.h	(revision 2090)
+++ 	(revision )
@@ -1,61 +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:
- *      ...
- *
- */
-
-#ifndef _FailQuest_H__
-#define _FailQuest_H__
-
-#include <string>
-
-#include "core/XMLPort.h"
-#include "ChangeQuestStatus.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Fails a quest.
-    @author
-	Damian 'Mozork' Frick
-    */
-    class FailQuest : public ChangeQuestStatus
-    {
-	public:
-            FailQuest();
-	    ~FailQuest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    virtual bool invoke(Player* player); //!< Invokes the effect.
-    
-    };
-
-}
-
-#endif /* _FailQuest_H__ */
Index: code/trunk/src/orxonox/objects/GlobalQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/GlobalQuest.cc	(revision 2090)
+++ 	(revision )
@@ -1,170 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "GlobalQuest.h"
-
-namespace orxonox {
-
-    CreateFactory(GlobalQuest);
-
-    /**
-    @brief
-        Constructor.
-    */
-    GlobalQuest::GlobalQuest() : Quest()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    GlobalQuest::~GlobalQuest()
-    {
-        
-    }
-    
-    void GlobalQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(GlobalQuest, XMLPort, xmlelement, mode);
-
-        COUT(3) << "New GlobalQuest {" << this->getId() << "} created." << std::endl;
-    }
-    
-    void GlobalQuest::initialize(void)
-    {
-        RegisterObject(GlobalQuest);
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be started.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be started, false if not.
-    @throws
-        Throws an exception if either isInactive() of isActive() throws one.
-    */
-    bool GlobalQuest::isStartable(const Player* player) const
-    {
-        return this->isInactive(player) ||  this->isActive(player);
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be failed.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be failed, false if not.
-    @throws
-        Throws an Exception if isActive() throws one.
-    */
-    bool GlobalQuest::isFailable(const Player* player) const
-    {
-        return this->isActive(player);
-
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be completed.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be completed, false if not.
-    @throws
-        Throws an Exception if isActive() throws one.
-    */
-    bool GlobalQuest::isCompletable(const Player* player) const
-    {
-        return this->isActive(player);
-    }
-
-    /**
-    @brief
-        Returns the status of the quest for a specific player.
-    @param player
-        The player.
-    @throws
-        Throws an Exception if player is NULL.
-    */
-    questStatus::Enum GlobalQuest::getStatus(const Player* player) const
-    {
-        if(player == NULL)
-        {
-            ThrowException(Argument, "The input Player* is NULL.");
-        }
-        
-        //TDO: Does this really work???
-        std::set<Player*>::const_iterator it = this->players_.find((Player*)(void*)player);
-        if (it != this->players_.end())
-	{
-	    return this->status_;
-	}
-	else
-	{
-	   return questStatus::inactive;
-	}
-
-    }
-    
-    /**
-    @brief
-        Sets the status for a specific player.
-	But be careful wit this one, the status will just be set without checking for its validity. You have to know what you're doing.
-    @param player
-        The player.
-    @param status
-        The status to be set.
-    @return
-        Returns false if player is NULL.
-    */
-    bool GlobalQuest::setStatus(Player* player, const questStatus::Enum & status)
-    {
-        if(player == NULL)
-        {
-            return false;
-	}
-        
-        std::set<Player*>::const_iterator it = this->players_.find(player);
-        if (it == this->players_.end()) //!< Player is not yet in the list.
-	{
-	    this->players_.insert(player);
-	}
-	this->status_ = status;
-	return true;
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/GlobalQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/GlobalQuest.h	(revision 2090)
+++ 	(revision )
@@ -1,74 +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:
- *      ...
- *
- */
-
-#ifndef _GlobalQuest_H__
-#define _GlobalQuest_H__
-
-#include <set>
-
-#include "core/XMLPort.h"
-#include "Quest.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Global quests are quests, that have the same status for all players.
-        This means, that when a player successfully completes this quest, it is completed for all players that have it.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class GlobalQuest : public Quest
-    {
-	public:
-            GlobalQuest();
-	    ~GlobalQuest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	protected:
-            virtual bool isStartable(const Player* player) const; //!< Checks whether the quest can be started.
-            virtual bool isFailable(const Player* player) const; //!< Checks whether the quest can be failed.
-            virtual bool isCompletable(const Player* player) const; //!< Checks whether the quest can be completed.
-	
-	    virtual questStatus::Enum getStatus(const Player* player) const; //!< Returns the status of the quest for a specific player.
-	    virtual bool setStatus(Player* player, const questStatus::Enum & status); //!< Sets the status for a specific player.
-	    
-	private:
-            std::set<Player*> players_; //!< The set of players which possess this quest.
-            questStatus::Enum status_; //!< The status of this quest.
-            
-            void initialize(void);
-    
-    };
-
-}
-
-#endif /* _GlobalQuest_H__ */
Index: code/trunk/src/orxonox/objects/LocalQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/LocalQuest.cc	(revision 2090)
+++ 	(revision )
@@ -1,155 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "LocalQuest.h"
-
-namespace orxonox {
-
-    CreateFactory(LocalQuest);
-
-    LocalQuest::LocalQuest() : Quest()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    LocalQuest::~LocalQuest()
-    {
-        
-    }
-    
-    void LocalQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(LocalQuest, XMLPort, xmlelement, mode);
-
-        COUT(3) << "New LocalQuest {" << this->getId() << "} created." << std::endl;
-    }
-    
-    void LocalQuest::initialize(void)
-    {
-        RegisterObject(LocalQuest);
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be started.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be started, false if not.
-    @throws
-        Throws an exception if isInactive(Player*) throws one.
-    */
-    bool LocalQuest::isStartable(const Player* player) const
-    {
-        return this->isInactive(player);
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be failed.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be failed, false if not.
-    @throws
-        Throws an exception if isActive(Player*) throws one.
-    */
-    bool LocalQuest::isFailable(const Player* player) const
-    {
-        return this->isActive(player);
-    }
-    
-    /**
-    @brief
-        Checks whether the quest can be completed.
-    @param player
-        The player for whom is to be checked.
-    @return
-        Returns true if the quest can be completed, false if not.
-    @throws
-        Throws an exception if isInactive(Player*) throws one.
-    */
-    bool LocalQuest::isCompletable(const Player* player) const
-    {
-        return this->isActive(player);
-    }
-    
-    /**
-    @brief
-        Returns the status of the quest for a specific player.
-    @param player
-        The player.
-    @return
-        Returns the status of the quest for the input player.
-    @throws
-        Throws an Exception if player is NULL.
-    */
-    questStatus::Enum LocalQuest::getStatus(const Player* player) const
-    {
-        if(player == NULL)
-        {
-            ThrowException(Argument, "The input Player* is NULL.");
-        }
-        
-        std::map<Player*, questStatus::Enum>::const_iterator it = this->playerStatus_.find((Player*)(void*)player); //Thx. to x3n for the (Player*)(void*) 'hack'.
-	if (it != this->playerStatus_.end())
-	{
-	    return it->second;
-	}
-	return questStatus::inactive;
-    }
-    
-    /**
-    @brief
-        Sets the status for a specific player.
-        But be careful wit this one, the status will just be set without checking for its validity. You have to know what you're doing.
-    @param player
-        The player.
-    @param status
-        The status.
-    @return
-        Returns false if player is NULL.
-    */
-    bool LocalQuest::setStatus(Player* player, const questStatus::Enum & status)
-    {
-        if(player == NULL)
-        {
-            return false;
-	}
-        this->playerStatus_[player] = status;
-        return true;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/LocalQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/LocalQuest.h	(revision 2090)
+++ 	(revision )
@@ -1,74 +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:
- *      ...
- *
- */
-
-#ifndef _LocalQuest_H__
-#define _LocalQuest_H__
-
-#include <map>
-#include <string>
-
-#include "core/XMLPort.h"
-#include "Quest.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Handles quests which have different states for different players.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class LocalQuest : public Quest
-    {
-	public:
-            LocalQuest();
-	    ~LocalQuest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	protected:
-            virtual bool isStartable(const Player* player) const; //!< Checks whether the quest can be started.
-            virtual bool isFailable(const Player* player) const; //!< Checks whether the quest can be failed.
-            virtual bool isCompletable(const Player* player) const; //!< Checks whether the quest can be completed.
-	
-            virtual questStatus::Enum getStatus(const Player* player) const; //!< Returns the status of the quest for a specific player.
-            virtual bool setStatus(Player* player, const questStatus::Enum & status); //!< Sets the status for a specific player.
-                
-	private:
-            std::map<Player*, questStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
-            
-            void initialize(void);
-    
-    };
-    
-
-}
-
-#endif /* _LocalQuest_H__ */
Index: code/trunk/src/orxonox/objects/Quest.cc
===================================================================
--- code/trunk/src/orxonox/objects/Quest.cc	(revision 2090)
+++ 	(revision )
@@ -1,379 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "Quest.h"
-#include "QuestManager.h"
-
-namespace orxonox {
-
-    Quest::Quest() : QuestItem()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    Quest::~Quest()
-    {
-        
-    }
-    
-    void Quest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(Quest, XMLPort, xmlelement, mode);
-        
-        XMLPortObject(Quest, Quest, "", addSubQuest, getSubQuests, xmlelement, mode);
-        XMLPortObject(Quest, QuestHint, "", addHint, getHints, xmlelement, mode);
-        XMLPortObject(Quest, QuestEffect, "fail-effects", addFailEffect, getFailEffects, xmlelement, mode);
-        XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffects, xmlelement, mode);
-        
-        QuestManager::registerQuest(this); //Registers the quest with the QuestManager.
-    }
-    
-    /**
-    @brief
-        Initializes the object. Needs to be called first in every constructor of this class.
-    */
-    void Quest::initialize(void)
-    {
-        RegisterObject(Quest);
-        
-        this->parentQuest_ = NULL;
-    }
-
-    /**
-    @brief
-        Sets the parent quest of the quest.
-    @param quest
-        A pointer to the quest to be set as parent quest.
-    @return
-        Returns true if the parentQuest could be set.
-    */
-    bool Quest::setParentQuest(Quest* quest)
-    {
-        if(quest == NULL)
-        {
-            COUT(2) << "The parentquest to be added to quest {" << this->getId() << "} was NULL." << std::endl;
-            return false;
-        }
-        
-        this->parentQuest_ = quest;
-        
-        COUT(3) << "Parent Quest {" << quest->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
-        return true;
-    }
-    
-    /**
-    @brief
-        Adds a sub quest to the quest.
-    @param quest
-        A pointer to the quest to be set as sub quest.
-    @return
-        Returns true if the subQuest vould be set.
-    */
-    bool Quest::addSubQuest(Quest* quest)
-    {
-        if(quest == NULL)
-        {
-            COUT(2) << "The subquest to be added to quest {" << this->getId() << "} was NULL." << std::endl;
-            return false;
-        }
-        
-        quest->setParentQuest(this);
-        this->subQuests_.push_back(quest);
-        
-        COUT(3) << "Sub Quest {" << quest->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
-        return true;
-    }
-    
-    
-    /**
-    @brief
-        Adds a Hint to the list of hints 
-    @param hint
-        The hint that should be added to the list of hints.
-    @return
-        Returns true if the hint was successfully added.
-    */
-    bool Quest::addHint(QuestHint* hint)
-    {
-        if(hint == NULL)
-        {
-            COUT(2) << "A NULL-QuestHint was trying to be added." << std::endl;
-            return false;
-        }
-        
-	this->hints_.push_back(hint);
-	hint->setQuest(this);
-	
-	COUT(3) << "QuestHint {" << hint->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
-	return true;
-    }
-    
-    /**
-    @brief
-        
-    */
-    bool Quest::addFailEffect(QuestEffect* effect)
-    {
-        if(effect == NULL)
-        {
-            COUT(2) << "A NULL-QuestEffect was trying to be added" << std::endl;
-            return false;
-        }
-        
-        this->failEffects_.push_back(effect);
-        
-        COUT(3) << "A FailEffect was added to Quest {" << this->getId() << "}." << std::endl;
-        return true;
-    }
-    
-    /**
-    @brief
-        
-    */
-    bool Quest::addCompleteEffect(QuestEffect* effect)
-    {
-        if(effect == NULL)
-        {
-            COUT(2) << "A NULL-QuestEffect was trying to be added" << std::endl;
-            return false;
-        }
-        
-        this->completeEffects_.push_back(effect);
-        
-        COUT(3) << "A CompleteEffect was added to Quest {" << this->getId() << "}." << std::endl;
-        return true;
-    }
-    
-    /**
-    @brief
-        
-    */
-    const Quest* Quest::getParentQuest(void)
-    {
-        return this->parentQuest_;
-    }
-    
-    /**
-    @brief
-        
-    */
-    const Quest* Quest::getSubQuests(unsigned int index) const
-    {
-        int i = index;
-        for (std::list<Quest*>::const_iterator subQuest = this->subQuests_.begin(); subQuest != this->subQuests_.end(); ++subQuest)
-	{
-	    if(i == 0)
-	    {
-	       return *subQuest;
-	    }
-	    i--;
-	}
-        return NULL;
-    }
-    
-    /**
-    @brief
-        
-    */
-    const QuestHint* Quest::getHints(unsigned int index) const
-    {
-        int i = index;
-        for (std::list<QuestHint*>::const_iterator hint = this->hints_.begin(); hint != this->hints_.end(); ++hint)
-	{
-	    if(i == 0)
-	    {
-	       return *hint;
-	    }
-	    i--;
-	}
-        return NULL;
-    }
-    
-    /**
-    @brief
-        
-    */
-    const QuestEffect* Quest::getFailEffects(unsigned int index) const
-    {
-        int i = index;
-        for (std::list<QuestEffect*>::const_iterator effect = this->failEffects_.begin(); effect != this->failEffects_.end(); ++effect)
-	{
-	    if(i == 0)
-	    {
-	       return *effect;
-	    }
-	    i--;
-	}
-        return NULL;
-    }
-    
-    /**
-    @brief
-        
-    */
-    const QuestEffect* Quest::getCompleteEffects(unsigned int index) const
-    {
-        int i = index;
-        for (std::list<QuestEffect*>::const_iterator effect = this->completeEffects_.begin(); effect != this->completeEffects_.end(); ++effect)
-	{
-	    if(i == 0)
-	    {
-	       return *effect;
-	    }
-	    i--;
-	}
-        return NULL;
-    }
-    
-    /**
-    @brief
-        Returns true if the quest status for the specific player is 'inactive'.
-    @param player
-        The player.
-    @return
-        Returns true if the quest status for the specific player is 'inactive'.
-    @throws
-        Throws an exception if getStatus throws one.
-    */
-    bool Quest::isInactive(const Player* player) const
-    {
-        return this->getStatus(player) == questStatus::inactive;
-    }
-    
-    /**
-    @brief
-        Returns true if the quest status for the specific player is 'active'.
-    @param player
-        The player.
-    @return
-        Returns true if the quest status for the specific player is 'active'.
-    @throws
-        Throws an exception if getStatus throws one.
-    */
-    bool Quest::isActive(const Player* player) const
-    {
-
-        return this->getStatus(player) == questStatus::active;
-    }
-    
-    /**
-    @brief
-        Returns true if the quest status for the specific player is 'failed'.
-    @param player
-        The player.
-    @return
-        Returns true if the quest status for the specific player is 'failed'.
-    @throws
-        Throws an exception if getStatus throws one.
-    */
-    bool Quest::isFailed(const Player* player) const
-    {
-        return this->getStatus(player) == questStatus::failed;
-    }
-    
-    /**
-    @brief
-        Returns true if the quest status for the specific player is 'completed'.
-    @param player
-        The player.
-    @return
-        Returns true if the quest status for the specific player is 'completed'.
-    @throws
-        Throws an exception if getStatus throws one.
-    */
-    bool Quest::isCompleted(const Player* player) const
-    {
-        return this->getStatus(player) == questStatus::completed;
-    }
-    
-    /**
-    @brief
-        Starts the quest.
-    @param player
-        The player.
-    @return
-        Returns true if the quest could be started, false if not.
-    */
-    bool Quest::start(Player* player)
-    {
-        if(this->isStartable(player))
-        {
-            this->setStatus(player, questStatus::active);
-            return true;
-        }
-        COUT(2) << "A non-startable quest was trying to be started." << std::endl;
-        return false;
-    }
-    
-    /**
-    @brief
-        Fails the quest.
-    @param player
-        The player.
-    @return
-        Returns true if the quest could be failed, false if not.
-    */
-    bool Quest::fail(Player* player)
-    {
-        if(this->isFailable(player))
-        {
-            this->setStatus(player, questStatus::failed);
-            QuestEffect::invokeEffects(player, this->failEffects_);
-            return true;
-        }
-        COUT(2) << "A non-failable quest was trying to be failed." << std::endl;
-        return false;
-    }
-    
-    /**
-    @brief
-        Completes the quest.
-    @param player
-        The player.
-    @return
-        Returns true if the quest could be completed, false if not.
-    */
-    bool Quest::complete(Player* player)
-    {
-        if(this->isCompletable(player))
-        {
-            this->setStatus(player, questStatus::completed);
-            QuestEffect::invokeEffects(player, this->completeEffects_);
-            return true;
-        }
-        COUT(2) << "A non-completable quest was trying to be completed." << std::endl;
-        return false;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/Quest.h
===================================================================
--- code/trunk/src/orxonox/objects/Quest.h	(revision 2090)
+++ 	(revision )
@@ -1,122 +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:
- *      ...
- *
- */
-
-#ifndef _Quest_H__
-#define _Quest_H__
-
-#include <list>
-#include <string>
-
-#include "core/XMLPort.h"
-#include "QuestDescription.h"
-#include "QuestItem.h"
-#include "QuestHint.h"
-#include "QuestEffect.h"
-
-namespace questStatus
-{
-
-    enum Enum
-    {
-        inactive,
-        active,
-        failed,
-        completed
-    };
-
-}
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Represents a quest in the game.
-        A quest has a list of subquests and a parentquest (if it is not a rootquest).
-        Each quest exists only once but it has a different status (inactive, active, failed or completed) for each player.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class Quest : public QuestItem
-    {
-	public:
-            Quest();
-	    virtual ~Quest();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-    
-            inline Quest* getParentQuest(void) const //!< Returns the parent quest of the quest.
-                { return this->parentQuest_; }
-	    inline const std::list<Quest*> & getSubQuestList(void) const //!< Returns the list of sub quests.
-                { return this->subQuests_; }
-	    
-	    bool isInactive(const Player* player) const; //!< Returns true if the quest status for the specific player is 'inactive'.
-	    bool isActive(const Player* player) const; //!< Returns true if the quest status for the specific player is 'active'.
-	    bool isFailed(const Player* player) const; //!< Returns true if the quest status for the specific player is 'failed'.
-	    bool isCompleted(const Player* player) const; //!< Returns true if the quest status for the specific player is 'completed'.
-                
-	    bool start(Player* player); //!< Sets a quest to active.
-	    bool fail(Player* player); //!< Fails the quest.
-	    bool complete(Player* player); //!< Completes the quest.
-	    
-        protected:
-            void initialize(void); //!< Initialized the object.
-            
-            virtual bool isStartable(const Player* player) const = 0; //!< Checks whether the quest can be started.
-            virtual bool isFailable(const Player* player) const = 0; //!< Checks whether the quest can be failed.
-            virtual bool isCompletable(const Player* player) const = 0; //!< Checks whether the quest can be completed.
-            
-            bool setParentQuest(Quest* quest); //!< Sets the parent quest of the quest.
-	    bool addSubQuest(Quest* quest); //!< Adds a sub quest to the quest.
-	    bool addHint(QuestHint* hint); //!< Add a hint to the list of hints.
-	    bool addFailEffect(QuestEffect* effect);
-	    bool addCompleteEffect(QuestEffect* effect);
-	    
-	    const Quest* getParentQuest(void);
-	    const Quest* getSubQuests(unsigned int index) const;
-	    const QuestHint* getHints(unsigned int index) const;
-	    const QuestEffect* getFailEffects(unsigned int index) const;
-	    const QuestEffect* getCompleteEffects(unsigned int index) const;
-            
-            virtual questStatus::Enum getStatus(const Player* player) const = 0; //!< Returns the status of the quest for a specific player.
-            virtual bool setStatus(Player* player, const questStatus::Enum & status) = 0; //!< Changes the status for a specific player.
-            
-            Quest* parentQuest_; //!< Pointer to the parent quest.
-            std::list<Quest*> subQuests_; //!< List of all the sub quests.
-            
-            std::list<QuestHint*> hints_; //!< A list of all the hints tied to this quest.
-            
-            std::list<QuestEffect*> failEffects_; //!< A list of all effects to be invoked, when the quest has been failed.
-            std::list<QuestEffect*> completeEffects_; //!< A list of effects to be invoked, when the quest has been completed.
-
-    };
-
-}
-
-#endif /* _Quest_H__ */
Index: code/trunk/src/orxonox/objects/QuestDescription.cc
===================================================================
--- code/trunk/src/orxonox/objects/QuestDescription.cc	(revision 2090)
+++ 	(revision )
@@ -1,67 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "QuestDescription.h"
-
-namespace orxonox {
-
-    CreateFactory(QuestDescription);
-    
-    QuestDescription::QuestDescription() : BaseObject()
-    {
-        this->initialize();
-    }
-    
-    QuestDescription::~QuestDescription()
-    {
-        
-    }
-    
-    void QuestDescription::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(QuestDescription, XMLPort, xmlelement, mode);
-    
-        XMLPortParam(QuestDescription, "title", setTitle, getTitle, xmlelement, mode);
-        XMLPortParam(QuestDescription, "description", setDescription, getDescription, xmlelement, mode);
-        
-        COUT(3) << "New QuestDescription with title '" << this->getTitle() << "' created." << std::endl;
-    }
-    
-    /**
-    @brief
-        Initializes the object. Has to be called first in every constructor of this class.
-    */
-    void QuestDescription::initialize(void)
-    {
-        RegisterObject(QuestDescription);
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/QuestDescription.h
===================================================================
--- code/trunk/src/orxonox/objects/QuestDescription.h	(revision 2090)
+++ 	(revision )
@@ -1,74 +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:
- *      ...
- *
- */
-
-#ifndef _QuestDescription_H__
-#define _QuestDescription_H__
-
-#include <string>
-
-#include "core/BaseObject.h"
-#include "core/XMLPort.h"
-
-namespace orxonox {
-
-    /**
-    @brief
-        This class is a description of a QuestItem.
-        It holds a title and a description.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class QuestDescription : public BaseObject {
-    
-	public:
-            QuestDescription();
-	    ~QuestDescription();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    inline const std::string & getTitle(void) const //!< Returns the title.
-                { return this->title_; }
-	    inline const std::string & getDescription(void) const //!< Returns the description text.
-                { return this->description_; }
-	    
-	private:
-            void initialize(void);
-            
-            inline void setTitle(const std::string & title) //!< Sets the title.
-                { this->title_ = title; }
-	    inline void setDescription(const std::string & description) //!< Sets the description text.
-                { this->description_ = description; }
-		
-            std::string title_; //!< The title.
-            std::string description_; //!< The description.
-    
-    };
-
-}
-
-#endif /* _QuestDescription_H__ */
Index: code/trunk/src/orxonox/objects/QuestEffect.cc
===================================================================
--- code/trunk/src/orxonox/objects/QuestEffect.cc	(revision 2090)
+++ 	(revision )
@@ -1,75 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "QuestEffect.h"
-
-namespace orxonox {
-
-    /**
-    @brief
-        Constructor. Creates a new QuestEffect.
-        Is not meant to be invoked directly, since this is only an interface.
-    */
-    QuestEffect::QuestEffect() : BaseObject()
-    {
-        RegisterObject(QuestEffect);
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    QuestEffect::~QuestEffect()
-    {
-        
-    }
-    
-    /**
-    @brief
-        Static method. Invoke all effects of an effect list.
-    @param player
-        The player the effects are invoked on.
-    @param effects
-        A list of all the effects to be invoked.
-    @return
-        Returns false if there was an error, view console of log for further detail.
-    */
-    bool QuestEffect::invokeEffects(Player* player, std::list<QuestEffect*> & effects)
-    {
-        bool check = true;
-        
-        for (std::list<QuestEffect*>::iterator effect = effects.begin(); effect != effects.end(); effect++)
-	{
-	    check = check && (*effect)->invoke(player);
-	}
-	return check;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/QuestEffect.h
===================================================================
--- code/trunk/src/orxonox/objects/QuestEffect.h	(revision 2090)
+++ 	(revision )
@@ -1,60 +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:
- *      ...
- *
- */
-
-#ifndef _QuestEffect_H__
-#define _QuestEffect_H__
-
-#include <list>
-
-#include "core/BaseObject.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-
-    /**
-    @brief
-        Handles effects for quests.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class QuestEffect : public BaseObject
-    {
-	public:
-            QuestEffect();
-	    virtual ~QuestEffect();
-	    
-	    virtual bool invoke(Player* player) = 0; //!< Invokes the effect.
-	    static bool invokeEffects(Player* player, std::list<QuestEffect*> & effects); //!< Invokes all effects in the list.
-	    
-	
-    };
-
-}
-
-#endif /* _QuestEffect_H__ */
Index: code/trunk/src/orxonox/objects/QuestHint.cc
===================================================================
--- code/trunk/src/orxonox/objects/QuestHint.cc	(revision 2090)
+++ 	(revision )
@@ -1,141 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "Quest.h"
-#include "QuestHint.h"
-
-namespace orxonox {
-
-    CreateFactory(QuestHint);
-
-    /**
-    @brief
-        Constructor.
-    */
-    QuestHint::QuestHint() : QuestItem()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    QuestHint::~QuestHint()
-    {
-        
-    }
-    
-    void QuestHint::initialize(void)
-    {
-        RegisterObject(QuestHint);
-    }
-    
-    void QuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-	SUPER(QuestHint, XMLPort, xmlelement, mode);
-	
-	COUT(3) << "New QuestHint {" << this->getId() << "} created." << std::endl;
-    }
-
-    
-    /**
-    @brief
-        Checks whether the hint is active for a specific player.
-    @param player
-        The player.
-    @throws
-        Throws an Argument Exception if the input Player-pointer is NULL.
-    @return
-        Returns true if the hint is active for the specified player.
-    */
-    bool QuestHint::isActive(Player* player)
-    {
-        if(player == NULL)
-        {
-            ThrowException(Argument, "The input Player* is NULL.");
-            return false;
-        }
-        
-        std::map<Player*, questHintStatus::Enum>::iterator it = this->playerStatus_.find(player);
-	if (it != this->playerStatus_.end())
-	{
-	    return it->second;
-	}
-	return questStatus::inactive;
-    }
-    
-    /**
-    @brief
-        Activates a QuestHint for a given player.
-    @param player
-        The player.
-    @return
-        Returns true if the activation was successful, false if there were problems.
-    */
-    bool QuestHint::activate(Player* player)
-    {
-        if(this->quest_->isActive(player))
-        {
-	    if(!(this->isActive(player)))
-	    {
-		this->playerStatus_[player] = questHintStatus::active;
-		return true;
-	    }
-	    else
-	    {
-                COUT(2) << "An already active questHint was trying to get activated." << std::endl;
-                return false;
-	    }
-        }
-	COUT(2) << "A hint of a non-active quest was trying to get activated." << std::endl;
-	return false;
-    }
-
-    /**
-    @brief
-        Sets the quest the QuestHitn belongs to.
-    @param quest
-    @return
-    */
-    bool QuestHint::setQuest(Quest* quest)
-    {
-        if(quest == NULL)
-        {
-            COUT(2) << "The input Quest* is NULL." << std::endl;
-            return false;
-        }
-        
-        this->quest_ = quest;
-        return true;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/QuestHint.h
===================================================================
--- code/trunk/src/orxonox/objects/QuestHint.h	(revision 2090)
+++ 	(revision )
@@ -1,93 +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:
- *      ...
- *
- */
- 
-#ifndef _QuestHint_H__
-#define _QuestHint_H__
-
-#include <map>
-#include <string>
-
-#include "core/XMLPort.h"
-#include "QuestDescription.h"
-#include "QuestItem.h"
-
-namespace questHintStatus
-{
-
-    enum Enum
-    {
-        inactive,
-        active
-    };
-
-}
-
-namespace orxonox
-{
-
-    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
-    class Quest; //To avoid circual includes.
-
-    /**
-    @brief
-        Represents a hint in the game towards completing a Quest.
-        Consists of title and description in textual form and must belong to a quest.
-        A QuestHit has a defined status (inactive or active, where inactive is default) for each player, which means each QuestHint exists only once for all players, it doesn't belong to a player, it just has different stati for each of them.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class QuestHint : public QuestItem
-    {
-    
-	public:
-            QuestHint();
-	    ~QuestHint();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    bool isActive(Player* player); //!< Returns true if the hint is active for the input player.
-	    
-	    bool activate(Player* player); //!< Activates the hint for the input player.
-	    
-	    bool setQuest(Quest* quest); //!< Sets the quest the hint belongs to.
-	    
-	    inline Quest* getQuest(void)
-	       { return this->quest_; }
-	    
-        private:
-            
-            void initialize(void);
-            
-            Quest* quest_; //!< The quest the hint belongs to.
-            std::map<Player*, questHintStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
-    
-    };
-
-}
-
-#endif /* _QuestHint_H__ */
Index: code/trunk/src/orxonox/objects/QuestItem.cc
===================================================================
--- code/trunk/src/orxonox/objects/QuestItem.cc	(revision 2090)
+++ 	(revision )
@@ -1,105 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "QuestItem.h"
-
-namespace orxonox {
-    
-    QuestItem::QuestItem() : BaseObject()
-    {
-        this->initialize();
-    }
-    
-    /**
-    @brief
-        Destructor.
-    */
-    QuestItem::~QuestItem()
-    {
-        
-    }
-    
-    void QuestItem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(QuestItem, XMLPort, xmlelement, mode);
-        
-        XMLPortParam(QuestItem, "id", setId, getId, xmlelement, mode);
-        //Doesn't getDescription have to be of type getDescription(unsigned int) ?
-        //XMLPortObjectTemplate(QuestItem, QuestDescription, "", setDescription, getDescription, xmlelement, mode, unsigned int);
-        XMLPortObject(QuestItem, QuestDescription, "", setDescription, getDescription, xmlelement, mode);
-
-    }
-
-    
-    /**
-    @brief
-        Initializes the object.
-        Should be called first in every constructor of this class.
-    */
-    void QuestItem::initialize(void)
-    {
-        RegisterObject(QuestItem);
-        
-        this->id_ = "";
-    }
-    
-    void QuestItem::setId(const std::string & id)
-    {
-        if(!isId(id))
-        {
-            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
-            return;
-        }
-        this->id_ = id;
-    }
-    
-    //const QuestDescription* QuestItem::getDescription(unsigned int index) const //!< Returns the description of the QuestItem.
-    //{
-    //    if(index != 0)
-    //        return NULL;
-    //    return this->description_;
-    //}
-    
-    /**
-    @brief
-        Checks whether an input id is of the required form.
-    @param id
-	The id to be checked.
-    @return
-        Returns true if the string is likely to be of the required form.
-    @todo
-        Clarify form, more vigorous checks.
-    */
-    bool QuestItem::isId(const std::string & id)
-    {
-        return id.size() >= 32;
-    }
-
-}
Index: code/trunk/src/orxonox/objects/QuestItem.h
===================================================================
--- code/trunk/src/orxonox/objects/QuestItem.h	(revision 2090)
+++ 	(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:
- *      ...
- *
- */
- 
-#ifndef _QuestItem_H__
-#define _QuestItem_H__
-
-#include <string>
-
-#include "core/BaseObject.h"
-#include "core/XMLPort.h"
-#include "QuestDescription.h"
-
-namespace orxonox {
-
-    
-    /**
-    @brief
-	Functions as a base class for Quest classes such as Quest or QuestHint.
-	Has a unique identifier and a description.
-    @author
-	Damian 'Mozork' Frick
-    */
-    class QuestItem : public BaseObject
-    {
-    
-	public:
-            QuestItem();
-	    virtual ~QuestItem();
-	    
-	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-	    
-	    inline const std::string & getId(void) const //!< Returns the id of this quest.
-                { return this->id_; }
-	    inline const QuestDescription* getDescription(void) const //!< Returns the description of the QuestItem.
-                { return this->description_; }
-	    //const QuestDescription* getDescription(unsigned int index) const; //!< Returns the description of the QuestItem.
-                
-	    static bool isId(const std::string & id); //!< Checks whether a given id is valid.
-	    
-	protected:
-	    void setId(const std::string & id);
-	    inline void setDescription(QuestDescription* description)
-                { this->description_ = description; }
-	    
-	private:
-	    std::string id_; //!< Identifier. Should be of GUID form: http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure
-	    QuestDescription* description_; //!< The description of the QuestItem.
-	    
-	    void initialize(void); //!< Initializes the object.
-    
-    };
-
-}
-
-#endif /* _QuestItem_H__ */
Index: code/trunk/src/orxonox/objects/QuestManager.cc
===================================================================
--- code/trunk/src/orxonox/objects/QuestManager.cc	(revision 2090)
+++ 	(revision )
@@ -1,181 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-#include "util/Exception.h"
-
-#include "QuestManager.h"
-
-namespace orxonox {
-
-    std::map<std::string, Quest*> QuestManager::questMap_;
-    std::map<std::string, QuestHint*> QuestManager::hintMap_;
-
-    QuestManager::QuestManager() : BaseObject()
-    {
-        RegisterObject(QuestManager);
-    }
-    
-    
-    QuestManager::~QuestManager()
-    {
-        
-    }
-
-    /**
-    @brief
-        Registers a quest with the QuestManager to make it globally accessable.
-    @param quest
-        The quest that is to be registered.
-    @return
-        Returns true if successful, false if not.
-    */
-    bool QuestManager::registerQuest(Quest* quest)
-    {
-        if(quest == NULL)
-        {
-            COUT(2) << "Registration of Quest in QuestManager failed, because inserted Quest-pointer was NULL." << std::endl;
-            return false;
-	}
-	
-        std::pair<std::map<std::string, Quest*>::iterator,bool> ret;
-        ret = questMap_.insert( std::pair<std::string,Quest*>(quest->getId(),quest) );
-        
-        if(ret.second)
-        {
-            COUT(3) << "Quest with questId {" << quest->getId() << "} successfully inserted." << std::endl;
-            return true;
-	}
-	else
-	{
-	   COUT(2) << "Quest with the same id was already present." << std::endl;
-	   return false;
-	}
-    }
-    
-    /**
-    @brief
-        Registers a QuestHint with the QuestManager to make it globally accessable.
-    @param hint
-        The QuestHint to be registered.
-    @return
-        Returns true if successful, false if not.
-    */
-    bool QuestManager::registerHint(QuestHint* hint)
-    {
-        if(hint == NULL)
-        {
-            COUT(2) << "Registration of QuestHint in QuestManager failed, because inserted QuestHint-pointer was NULL." << std::endl;
-            return false;
-        }
-        
-        std::pair<std::map<std::string, QuestHint*>::iterator,bool> ret;
-        ret = hintMap_.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) );
-        
-        if(ret.second)
-        {
-            COUT(3) << "QuestHint with hintId {" << hint->getId() << "} successfully inserted." << std::endl;
-            return true;
-	}
-	else
-	{
-	   COUT(2) << "QuestHint with the same id was already present." << std::endl;
-	   return false;
-	}
-    }
-    
-    /**
-    @brief
-        Finds a quest with the given id.
-    @param questId
-        The id of the quest sought for.
-    @return
-        Returns a reference to the quest with the input id.
-        Returns NULL if there is no quest with the given questId.
-    @throws
-        Throws an exception if the given questId is invalid.
-    */
-    Quest* QuestManager::findQuest(const std::string & questId)
-    {
-        if(!QuestItem::isId(questId))
-	{
-            ThrowException(Argument, "Invalid questId.");
-	}
-	
-        Quest* quest;
-        std::map<std::string, Quest*>::iterator it = questMap_.find(questId);
-	if (it != questMap_.end())
-	{
-	    quest = it->second;
-	}
-	else
-	{
-	   quest = NULL;
-	   COUT(2) << "The quest with id {" << questId << "} is nowhere to be found." << std::endl;
-	}
-	
-	return quest;
-
-    }
-    
-    /**
-    @brief
-        Finds a hint with the given id.
-    @param hintId
-        The id of the hint sought for.
-    @return
-        Returns a reference to the hint with the input id.
-        Returns NULL if there is no hint with the given hintId.
-    @throws
-        Throws an exception if the given hintId is invalid.
-    */
-    QuestHint* QuestManager::findHint(const std::string & hintId)
-    {
-        if(!QuestItem::isId(hintId))
-	{
-            ThrowException(Argument, "Invalid hintId.");
-	}
-	
-        QuestHint* hint;
-        std::map<std::string, QuestHint*>::iterator it = hintMap_.find(hintId);
-	if (it != hintMap_.end())
-	{
-	    hint = it->second;
-	}
-	else
-	{
-	   hint = NULL;
-	   COUT(2) << "The hint with id {" << hintId << "} is nowhere to be found." << std::endl;
-	}
-	
-	return hint;
-
-    }
-    
-
-}
Index: code/trunk/src/orxonox/objects/QuestManager.h
===================================================================
--- code/trunk/src/orxonox/objects/QuestManager.h	(revision 2090)
+++ 	(revision )
@@ -1,69 +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:
- *      ...
- *
- */
-
-#ifndef _QuestManager_H__
-#define _QuestManager_H__
-
-#include <map>
-#include <string>
-
-#include "core/BaseObject.h"
-#include "Quest.h"
-#include "QuestHint.h"
-
-namespace orxonox {
-
-    /**
-    @brief
-        Manages quests, by making them globally accessable.
-        Quests (and Hints) are registered in the QuestManager trough their id, and can be accessed in the same way.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class QuestManager : public BaseObject
-    {
-    
-	public:
-	    QuestManager();
-	    ~QuestManager();
-	    
-	    static bool registerQuest(Quest* quest); //!< Registers a quest in the QuestManager.
-	    static bool registerHint(QuestHint* quest); //!< Registers a QuestHint in the QuestManager.
-	    
-	    static Quest* findQuest(const std::string & questId); //!< Returns the quest with the input id.
-	    static QuestHint* findHint(const std::string & hintId); //!< Returns the QuestHint with the input id.
-	    	    
-	private:
-	    static std::map<std::string, Quest*> questMap_; //!< All quests registered by their id's.
-	    static std::map<std::string, QuestHint*> hintMap_; //!< All hints registered by their id's.
-    
-    };
-
-}
-
-#endif /* _QuestManager_H__ */
Index: code/trunk/src/orxonox/objects/Rewardable.cc
===================================================================
--- code/trunk/src/orxonox/objects/Rewardable.cc	(revision 2090)
+++ 	(revision )
@@ -1,47 +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:
- *      ...
- *
- */
-
-#include "core/CoreIncludes.h"
-
-#include "Rewardable.h"
-
-namespace orxonox {
-
-    
-    Rewardable::Rewardable() : BaseObject()
-    {
-        RegisterObject(Rewardable);
-    }
-    
-    
-    Rewardable::~Rewardable()
-    {
-    }
-
-
-}
Index: code/trunk/src/orxonox/objects/Rewardable.h
===================================================================
--- code/trunk/src/orxonox/objects/Rewardable.h	(revision 2090)
+++ 	(revision )
@@ -1,57 +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:
- *      ...
- *
- */
-
-#ifndef _Rewardable_H__
-#define _Rewardable_H__
-
-#include "core/BaseObject.h"
-
-namespace orxonox {
-
-    class Player; //Forward declaration, remove when fully integrated in objecthirarchy.
-
-    /**
-    @brief
-        Rewardable is an Interface, that can be implemented by any object to enable it to be given as reward to a player through QuestEffects.
-    @author
-        Damian 'Mozork' Frick
-    */
-    class Rewardable : public BaseObject
-    {
-    
-	public:
-	    Rewardable();
-	    virtual ~Rewardable();
-	    
-	    virtual bool reward(Player* player) = 0; //!<Method to transcribe a rewardable object to the player.
-    
-    };
-
-}
-
-#endif /* _Rewardable_H__ */
Index: code/trunk/src/orxonox/objects/quest/AddQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddQuest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddQuest.cc	(revision 2091)
@@ -0,0 +1,96 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include <string>
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "QuestManager.h"
+#include "Quest.h"
+#include "AddQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(AddQuest);
+
+
+    AddQuest::AddQuest() : ChangeQuestStatus()
+    {
+        RegisterObject(AddQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */ 
+    AddQuest::~AddQuest()
+    {
+    }
+    
+    void AddQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddQuest, XMLPort, xmlelement, mode);
+        
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    @return
+        Returns true if the effect was successfully invoked.
+    */
+    bool AddQuest::invoke(Player* player)
+    {
+        if(player == NULL)
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+    
+        try
+        {
+	    Quest* quest = QuestManager::findQuest(this->getQuestId());
+	    if(!quest->start(player))
+	    {
+	       return false;
+	    }
+	}
+	catch(const orxonox::Exception& ex)
+	{
+            COUT(2) << ex.getFullDescription() << std::endl;
+            return false;
+	}
+	
+	return true;
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/AddQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddQuest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddQuest.h	(revision 2091)
@@ -0,0 +1,61 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _AddQuest_H__
+#define _AddQuest_H__
+
+#include <string>
+
+#include "core/XMLPort.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Adds a quest, resp. changes the quests status to active.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class AddQuest : public ChangeQuestStatus
+    {
+	public:
+            AddQuest();
+	    ~AddQuest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _AddQuest_H__ */
Index: code/trunk/src/orxonox/objects/quest/AddQuestHint.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddQuestHint.cc	(revision 2091)
@@ -0,0 +1,104 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "QuestManager.h"
+#include "QuestItem.h"
+#include "AddQuestHint.h"
+
+namespace orxonox {
+
+    CreateFactory(AddQuestHint);
+
+    AddQuestHint::AddQuestHint() : QuestEffect()
+    {
+        
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    AddQuestHint::~AddQuestHint()
+    {
+    }
+    
+    void AddQuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddQuestHint, XMLPort, xmlelement, mode);
+        
+        XMLPortParam(AddQuestHint, "hintId", setHintId, getHintId, xmlelement, mode);
+        
+    }
+
+    inline void AddQuestHint::setHintId(const std::string & id)
+    {
+        if(!QuestItem::isId(id))
+        {
+            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
+            return;
+        }
+        this->hintId_ = id;
+    }
+
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player.
+    @return
+        Returns true if the effect was successfully invoked.
+    */
+    bool AddQuestHint::invoke(Player* player)
+    {
+        if(player == NULL)
+        {
+            COUT(2) << "The input player is NULL." << std::endl;
+            return false;
+        }
+
+        try
+        {
+            QuestHint* hint = QuestManager::findHint(this->hintId_);
+	    if(!hint->activate(player))
+	    {
+		return false;
+	    }
+	}
+	catch(const Exception& e)
+	{
+	   COUT(2) << e.getFullDescription() << std::endl;
+	   return false;
+	}
+	
+	return true;
+	
+    }
+}
Index: code/trunk/src/orxonox/objects/quest/AddQuestHint.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddQuestHint.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddQuestHint.h	(revision 2091)
@@ -0,0 +1,67 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _AddQuestHint_H__
+#define _AddQuestHint_H__
+
+#include <string>
+
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+	Adds a QuestHint, resp. Activates the QuestHint.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class AddQuestHint : public QuestEffect
+    {
+	public:
+            AddQuestHint();
+	    ~AddQuestHint();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player); //!< Invokes the effect.
+	    
+	private:
+            std::string hintId_;
+            
+            inline const std::string & getHintId(void) const
+                { return this->hintId_; }
+	    void setHintId(const std::string & id);
+    
+    };
+
+}
+
+#endif /* _AddQuestHint_H__ */
Index: code/trunk/src/orxonox/objects/quest/AddReward.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddReward.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddReward.cc	(revision 2091)
@@ -0,0 +1,100 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "AddReward.h"
+
+namespace orxonox {
+    
+    CreateFactory(AddReward);
+    
+    AddReward::AddReward() : QuestEffect()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    AddReward::~AddReward()
+    {
+    }
+
+    void AddReward::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(AddReward, XMLPort, xmlelement, mode);
+        
+        XMLPortObject(AddReward, Rewardable, "", addRewardable, getRewardables, xmlelement, mode);
+        
+    }
+
+    /**
+    @brief
+        Initializes the object. Needs to be called first by every constructor of this class.
+    */
+    void AddReward::initialize(void)
+    {
+        RegisterObject(AddReward);
+    }
+    
+    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 effect.
+    @param player
+        The player.
+    @return
+        Returns true if the effect was invoked successfully.
+    */
+    bool AddReward::invoke(Player* player)
+    {
+	bool check = true;
+        for ( std::list<Rewardable*>::iterator reward = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
+	{
+	    check = check && (*reward)->reward(player);
+	}
+	
+	return check;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/AddReward.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/AddReward.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/AddReward.h	(revision 2091)
@@ -0,0 +1,71 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _AddReward_H__
+#define _AddReward_H__
+
+#include <list>
+
+#include "core/XMLPort.h"
+#include "Rewardable.h"
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+	Adds a list of rewards to a player.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class AddReward : public QuestEffect
+    {
+	public:
+            AddReward();
+	    ~AddReward();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player); //!< Invokes the effect.
+	    
+	private:
+            std::list<Rewardable*> rewards_;
+	
+            void initialize(void); //!< Initializes the object.
+	
+            inline void addRewardable(Rewardable* reward)
+                { this->rewards_.push_back(reward); }
+	    const Rewardable* getRewardables(unsigned int index) const;
+    
+    };
+
+}
+
+#endif /* _AddReward_H__ */
Index: code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.cc	(revision 2091)
@@ -0,0 +1,66 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "QuestItem.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    ChangeQuestStatus::ChangeQuestStatus() : QuestEffect()
+    {
+        RegisterObject(ChangeQuestStatus);
+    }
+
+    /**
+    @brief
+        Destructor.
+    */
+    ChangeQuestStatus::~ChangeQuestStatus()
+    {
+    }
+    
+    void ChangeQuestStatus::setQuestId(const std::string & id)
+    {
+        if(!QuestItem::isId(id))
+        {
+            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
+            return;
+        }
+        this->questId_ = id;
+    }
+    
+    void ChangeQuestStatus::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(ChangeQuestStatus, XMLPort, xmlelement, mode);
+        
+        XMLPortParam(ChangeQuestStatus, "questId", setQuestId, getQuestId, xmlelement, mode);
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/ChangeQuestStatus.h	(revision 2091)
@@ -0,0 +1,70 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _ChangeQuestStatus_H__
+#define _ChangeQuestStatus_H__
+
+#include <string>
+
+#include "core/XMLPort.h"
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        An effect which changes a quests status.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class ChangeQuestStatus : public QuestEffect
+    {
+	public:
+            ChangeQuestStatus();
+	    virtual ~ChangeQuestStatus();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player) = 0; //!< Invokes the effect.
+	    
+	protected:
+            inline const std::string & getQuestId(void) const //!< Returns the quest id.
+                { return this->questId_; }
+	
+            std::string questId_; //!< The id of the quest the status should be changed of.
+            
+	private:
+	    void setQuestId(const std::string & id);
+
+    };
+
+}
+
+#endif /* _ChangeQuestStatus_H__ */
Index: code/trunk/src/orxonox/objects/quest/CompleteQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/CompleteQuest.cc	(revision 2091)
@@ -0,0 +1,92 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "QuestManager.h"
+#include "Quest.h"
+#include "CompleteQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(CompleteQuest);
+
+    CompleteQuest::CompleteQuest() : ChangeQuestStatus()
+    {
+        RegisterObject(CompleteQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    CompleteQuest::~CompleteQuest()
+    {
+    }
+    
+    void CompleteQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(CompleteQuest, XMLPort, xmlelement, mode);
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    @return
+        Returns true if the effect was invoked successfully.
+    */
+    bool CompleteQuest::invoke(Player* player)
+    {
+        if(player == NULL)
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+    
+        try
+        {
+	    Quest* quest = QuestManager::findQuest(this->getQuestId());
+	    if(!quest->complete(player))
+	    {
+	       return false;
+	    }
+	}
+	catch(const Exception& e)
+	{
+            COUT(2) << e.getFullDescription() << std::endl;
+            return false;
+	}
+	
+	return true;
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/CompleteQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/CompleteQuest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/CompleteQuest.h	(revision 2091)
@@ -0,0 +1,61 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _CompleteQuest_H__
+#define _CompleteQuest_H__
+
+#include <string>
+
+#include "core/XMLPort.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Completes a quest.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class CompleteQuest : public ChangeQuestStatus
+    {
+	public:
+            CompleteQuest();
+	    ~CompleteQuest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _CompleteQuest_H__ */
Index: code/trunk/src/orxonox/objects/quest/FailQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/FailQuest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/FailQuest.cc	(revision 2091)
@@ -0,0 +1,92 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "QuestManager.h"
+#include "Quest.h"
+#include "FailQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(FailQuest);
+
+    FailQuest::FailQuest() : ChangeQuestStatus()
+    {
+        RegisterObject(FailQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    FailQuest::~FailQuest()
+    {
+    }
+    
+    void FailQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(FailQuest, XMLPort, xmlelement, mode);
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    @return
+        Returns true if the effect was invoked successfully.
+    */
+    bool FailQuest::invoke(Player* player)
+    {
+        if(player == NULL)
+        {
+            COUT(2) << "Input player is NULL." << std::endl;
+            return false;
+        }
+    
+        try
+        {
+	    Quest* quest = QuestManager::findQuest(this->getQuestId());
+	    if(!quest->fail(player))
+	    {
+	       return false;
+	    }
+	}
+	catch(const Exception& e)
+	{
+            COUT(2) << e.getFullDescription() << std::endl;
+            return false;
+	}
+	
+	return true;
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/FailQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/FailQuest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/FailQuest.h	(revision 2091)
@@ -0,0 +1,61 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _FailQuest_H__
+#define _FailQuest_H__
+
+#include <string>
+
+#include "core/XMLPort.h"
+#include "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Fails a quest.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class FailQuest : public ChangeQuestStatus
+    {
+	public:
+            FailQuest();
+	    ~FailQuest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    virtual bool invoke(Player* player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _FailQuest_H__ */
Index: code/trunk/src/orxonox/objects/quest/GlobalQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/GlobalQuest.cc	(revision 2091)
@@ -0,0 +1,170 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "GlobalQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(GlobalQuest);
+
+    /**
+    @brief
+        Constructor.
+    */
+    GlobalQuest::GlobalQuest() : Quest()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    GlobalQuest::~GlobalQuest()
+    {
+        
+    }
+    
+    void GlobalQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(GlobalQuest, XMLPort, xmlelement, mode);
+
+        COUT(3) << "New GlobalQuest {" << this->getId() << "} created." << std::endl;
+    }
+    
+    void GlobalQuest::initialize(void)
+    {
+        RegisterObject(GlobalQuest);
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be started.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be started, false if not.
+    @throws
+        Throws an exception if either isInactive() of isActive() throws one.
+    */
+    bool GlobalQuest::isStartable(const Player* player) const
+    {
+        return this->isInactive(player) ||  this->isActive(player);
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be failed.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be failed, false if not.
+    @throws
+        Throws an Exception if isActive() throws one.
+    */
+    bool GlobalQuest::isFailable(const Player* player) const
+    {
+        return this->isActive(player);
+
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be completed.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be completed, false if not.
+    @throws
+        Throws an Exception if isActive() throws one.
+    */
+    bool GlobalQuest::isCompletable(const Player* player) const
+    {
+        return this->isActive(player);
+    }
+
+    /**
+    @brief
+        Returns the status of the quest for a specific player.
+    @param player
+        The player.
+    @throws
+        Throws an Exception if player is NULL.
+    */
+    questStatus::Enum GlobalQuest::getStatus(const Player* player) const
+    {
+        if(player == NULL)
+        {
+            ThrowException(Argument, "The input Player* is NULL.");
+        }
+        
+        //TDO: Does this really work???
+        std::set<Player*>::const_iterator it = this->players_.find((Player*)(void*)player);
+        if (it != this->players_.end())
+	{
+	    return this->status_;
+	}
+	else
+	{
+	   return questStatus::inactive;
+	}
+
+    }
+    
+    /**
+    @brief
+        Sets the status for a specific player.
+	But be careful wit this one, the status will just be set without checking for its validity. You have to know what you're doing.
+    @param player
+        The player.
+    @param status
+        The status to be set.
+    @return
+        Returns false if player is NULL.
+    */
+    bool GlobalQuest::setStatus(Player* player, const questStatus::Enum & status)
+    {
+        if(player == NULL)
+        {
+            return false;
+	}
+        
+        std::set<Player*>::const_iterator it = this->players_.find(player);
+        if (it == this->players_.end()) //!< Player is not yet in the list.
+	{
+	    this->players_.insert(player);
+	}
+	this->status_ = status;
+	return true;
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/GlobalQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/GlobalQuest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/GlobalQuest.h	(revision 2091)
@@ -0,0 +1,74 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _GlobalQuest_H__
+#define _GlobalQuest_H__
+
+#include <set>
+
+#include "core/XMLPort.h"
+#include "Quest.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Global quests are quests, that have the same status for all players.
+        This means, that when a player successfully completes this quest, it is completed for all players that have it.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class GlobalQuest : public Quest
+    {
+	public:
+            GlobalQuest();
+	    ~GlobalQuest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	protected:
+            virtual bool isStartable(const Player* player) const; //!< Checks whether the quest can be started.
+            virtual bool isFailable(const Player* player) const; //!< Checks whether the quest can be failed.
+            virtual bool isCompletable(const Player* player) const; //!< Checks whether the quest can be completed.
+	
+	    virtual questStatus::Enum getStatus(const Player* player) const; //!< Returns the status of the quest for a specific player.
+	    virtual bool setStatus(Player* player, const questStatus::Enum & status); //!< Sets the status for a specific player.
+	    
+	private:
+            std::set<Player*> players_; //!< The set of players which possess this quest.
+            questStatus::Enum status_; //!< The status of this quest.
+            
+            void initialize(void);
+    
+    };
+
+}
+
+#endif /* _GlobalQuest_H__ */
Index: code/trunk/src/orxonox/objects/quest/LocalQuest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/LocalQuest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/LocalQuest.cc	(revision 2091)
@@ -0,0 +1,155 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "LocalQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(LocalQuest);
+
+    LocalQuest::LocalQuest() : Quest()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    LocalQuest::~LocalQuest()
+    {
+        
+    }
+    
+    void LocalQuest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(LocalQuest, XMLPort, xmlelement, mode);
+
+        COUT(3) << "New LocalQuest {" << this->getId() << "} created." << std::endl;
+    }
+    
+    void LocalQuest::initialize(void)
+    {
+        RegisterObject(LocalQuest);
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be started.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be started, false if not.
+    @throws
+        Throws an exception if isInactive(Player*) throws one.
+    */
+    bool LocalQuest::isStartable(const Player* player) const
+    {
+        return this->isInactive(player);
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be failed.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be failed, false if not.
+    @throws
+        Throws an exception if isActive(Player*) throws one.
+    */
+    bool LocalQuest::isFailable(const Player* player) const
+    {
+        return this->isActive(player);
+    }
+    
+    /**
+    @brief
+        Checks whether the quest can be completed.
+    @param player
+        The player for whom is to be checked.
+    @return
+        Returns true if the quest can be completed, false if not.
+    @throws
+        Throws an exception if isInactive(Player*) throws one.
+    */
+    bool LocalQuest::isCompletable(const Player* player) const
+    {
+        return this->isActive(player);
+    }
+    
+    /**
+    @brief
+        Returns the status of the quest for a specific player.
+    @param player
+        The player.
+    @return
+        Returns the status of the quest for the input player.
+    @throws
+        Throws an Exception if player is NULL.
+    */
+    questStatus::Enum LocalQuest::getStatus(const Player* player) const
+    {
+        if(player == NULL)
+        {
+            ThrowException(Argument, "The input Player* is NULL.");
+        }
+        
+        std::map<Player*, questStatus::Enum>::const_iterator it = this->playerStatus_.find((Player*)(void*)player); //Thx. to x3n for the (Player*)(void*) 'hack'.
+	if (it != this->playerStatus_.end())
+	{
+	    return it->second;
+	}
+	return questStatus::inactive;
+    }
+    
+    /**
+    @brief
+        Sets the status for a specific player.
+        But be careful wit this one, the status will just be set without checking for its validity. You have to know what you're doing.
+    @param player
+        The player.
+    @param status
+        The status.
+    @return
+        Returns false if player is NULL.
+    */
+    bool LocalQuest::setStatus(Player* player, const questStatus::Enum & status)
+    {
+        if(player == NULL)
+        {
+            return false;
+	}
+        this->playerStatus_[player] = status;
+        return true;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/LocalQuest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/LocalQuest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/LocalQuest.h	(revision 2091)
@@ -0,0 +1,74 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _LocalQuest_H__
+#define _LocalQuest_H__
+
+#include <map>
+#include <string>
+
+#include "core/XMLPort.h"
+#include "Quest.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Handles quests which have different states for different players.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class LocalQuest : public Quest
+    {
+	public:
+            LocalQuest();
+	    ~LocalQuest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	protected:
+            virtual bool isStartable(const Player* player) const; //!< Checks whether the quest can be started.
+            virtual bool isFailable(const Player* player) const; //!< Checks whether the quest can be failed.
+            virtual bool isCompletable(const Player* player) const; //!< Checks whether the quest can be completed.
+	
+            virtual questStatus::Enum getStatus(const Player* player) const; //!< Returns the status of the quest for a specific player.
+            virtual bool setStatus(Player* player, const questStatus::Enum & status); //!< Sets the status for a specific player.
+                
+	private:
+            std::map<Player*, questStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
+            
+            void initialize(void);
+    
+    };
+    
+
+}
+
+#endif /* _LocalQuest_H__ */
Index: code/trunk/src/orxonox/objects/quest/Quest.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/Quest.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/Quest.cc	(revision 2091)
@@ -0,0 +1,379 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "Quest.h"
+#include "QuestManager.h"
+
+namespace orxonox {
+
+    Quest::Quest() : QuestItem()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    Quest::~Quest()
+    {
+        
+    }
+    
+    void Quest::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Quest, XMLPort, xmlelement, mode);
+        
+        XMLPortObject(Quest, Quest, "", addSubQuest, getSubQuests, xmlelement, mode);
+        XMLPortObject(Quest, QuestHint, "", addHint, getHints, xmlelement, mode);
+        XMLPortObject(Quest, QuestEffect, "fail-effects", addFailEffect, getFailEffects, xmlelement, mode);
+        XMLPortObject(Quest, QuestEffect, "complete-effects", addCompleteEffect, getCompleteEffects, xmlelement, mode);
+        
+        QuestManager::registerQuest(this); //Registers the quest with the QuestManager.
+    }
+    
+    /**
+    @brief
+        Initializes the object. Needs to be called first in every constructor of this class.
+    */
+    void Quest::initialize(void)
+    {
+        RegisterObject(Quest);
+        
+        this->parentQuest_ = NULL;
+    }
+
+    /**
+    @brief
+        Sets the parent quest of the quest.
+    @param quest
+        A pointer to the quest to be set as parent quest.
+    @return
+        Returns true if the parentQuest could be set.
+    */
+    bool Quest::setParentQuest(Quest* quest)
+    {
+        if(quest == NULL)
+        {
+            COUT(2) << "The parentquest to be added to quest {" << this->getId() << "} was NULL." << std::endl;
+            return false;
+        }
+        
+        this->parentQuest_ = quest;
+        
+        COUT(3) << "Parent Quest {" << quest->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
+        return true;
+    }
+    
+    /**
+    @brief
+        Adds a sub quest to the quest.
+    @param quest
+        A pointer to the quest to be set as sub quest.
+    @return
+        Returns true if the subQuest vould be set.
+    */
+    bool Quest::addSubQuest(Quest* quest)
+    {
+        if(quest == NULL)
+        {
+            COUT(2) << "The subquest to be added to quest {" << this->getId() << "} was NULL." << std::endl;
+            return false;
+        }
+        
+        quest->setParentQuest(this);
+        this->subQuests_.push_back(quest);
+        
+        COUT(3) << "Sub Quest {" << quest->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
+        return true;
+    }
+    
+    
+    /**
+    @brief
+        Adds a Hint to the list of hints 
+    @param hint
+        The hint that should be added to the list of hints.
+    @return
+        Returns true if the hint was successfully added.
+    */
+    bool Quest::addHint(QuestHint* hint)
+    {
+        if(hint == NULL)
+        {
+            COUT(2) << "A NULL-QuestHint was trying to be added." << std::endl;
+            return false;
+        }
+        
+	this->hints_.push_back(hint);
+	hint->setQuest(this);
+	
+	COUT(3) << "QuestHint {" << hint->getId() << "} was added to Quest {" << this->getId() << "}." << std::endl;
+	return true;
+    }
+    
+    /**
+    @brief
+        
+    */
+    bool Quest::addFailEffect(QuestEffect* effect)
+    {
+        if(effect == NULL)
+        {
+            COUT(2) << "A NULL-QuestEffect was trying to be added" << std::endl;
+            return false;
+        }
+        
+        this->failEffects_.push_back(effect);
+        
+        COUT(3) << "A FailEffect was added to Quest {" << this->getId() << "}." << std::endl;
+        return true;
+    }
+    
+    /**
+    @brief
+        
+    */
+    bool Quest::addCompleteEffect(QuestEffect* effect)
+    {
+        if(effect == NULL)
+        {
+            COUT(2) << "A NULL-QuestEffect was trying to be added" << std::endl;
+            return false;
+        }
+        
+        this->completeEffects_.push_back(effect);
+        
+        COUT(3) << "A CompleteEffect was added to Quest {" << this->getId() << "}." << std::endl;
+        return true;
+    }
+    
+    /**
+    @brief
+        
+    */
+    const Quest* Quest::getParentQuest(void)
+    {
+        return this->parentQuest_;
+    }
+    
+    /**
+    @brief
+        
+    */
+    const Quest* Quest::getSubQuests(unsigned int index) const
+    {
+        int i = index;
+        for (std::list<Quest*>::const_iterator subQuest = this->subQuests_.begin(); subQuest != this->subQuests_.end(); ++subQuest)
+	{
+	    if(i == 0)
+	    {
+	       return *subQuest;
+	    }
+	    i--;
+	}
+        return NULL;
+    }
+    
+    /**
+    @brief
+        
+    */
+    const QuestHint* Quest::getHints(unsigned int index) const
+    {
+        int i = index;
+        for (std::list<QuestHint*>::const_iterator hint = this->hints_.begin(); hint != this->hints_.end(); ++hint)
+	{
+	    if(i == 0)
+	    {
+	       return *hint;
+	    }
+	    i--;
+	}
+        return NULL;
+    }
+    
+    /**
+    @brief
+        
+    */
+    const QuestEffect* Quest::getFailEffects(unsigned int index) const
+    {
+        int i = index;
+        for (std::list<QuestEffect*>::const_iterator effect = this->failEffects_.begin(); effect != this->failEffects_.end(); ++effect)
+	{
+	    if(i == 0)
+	    {
+	       return *effect;
+	    }
+	    i--;
+	}
+        return NULL;
+    }
+    
+    /**
+    @brief
+        
+    */
+    const QuestEffect* Quest::getCompleteEffects(unsigned int index) const
+    {
+        int i = index;
+        for (std::list<QuestEffect*>::const_iterator effect = this->completeEffects_.begin(); effect != this->completeEffects_.end(); ++effect)
+	{
+	    if(i == 0)
+	    {
+	       return *effect;
+	    }
+	    i--;
+	}
+        return NULL;
+    }
+    
+    /**
+    @brief
+        Returns true if the quest status for the specific player is 'inactive'.
+    @param player
+        The player.
+    @return
+        Returns true if the quest status for the specific player is 'inactive'.
+    @throws
+        Throws an exception if getStatus throws one.
+    */
+    bool Quest::isInactive(const Player* player) const
+    {
+        return this->getStatus(player) == questStatus::inactive;
+    }
+    
+    /**
+    @brief
+        Returns true if the quest status for the specific player is 'active'.
+    @param player
+        The player.
+    @return
+        Returns true if the quest status for the specific player is 'active'.
+    @throws
+        Throws an exception if getStatus throws one.
+    */
+    bool Quest::isActive(const Player* player) const
+    {
+
+        return this->getStatus(player) == questStatus::active;
+    }
+    
+    /**
+    @brief
+        Returns true if the quest status for the specific player is 'failed'.
+    @param player
+        The player.
+    @return
+        Returns true if the quest status for the specific player is 'failed'.
+    @throws
+        Throws an exception if getStatus throws one.
+    */
+    bool Quest::isFailed(const Player* player) const
+    {
+        return this->getStatus(player) == questStatus::failed;
+    }
+    
+    /**
+    @brief
+        Returns true if the quest status for the specific player is 'completed'.
+    @param player
+        The player.
+    @return
+        Returns true if the quest status for the specific player is 'completed'.
+    @throws
+        Throws an exception if getStatus throws one.
+    */
+    bool Quest::isCompleted(const Player* player) const
+    {
+        return this->getStatus(player) == questStatus::completed;
+    }
+    
+    /**
+    @brief
+        Starts the quest.
+    @param player
+        The player.
+    @return
+        Returns true if the quest could be started, false if not.
+    */
+    bool Quest::start(Player* player)
+    {
+        if(this->isStartable(player))
+        {
+            this->setStatus(player, questStatus::active);
+            return true;
+        }
+        COUT(2) << "A non-startable quest was trying to be started." << std::endl;
+        return false;
+    }
+    
+    /**
+    @brief
+        Fails the quest.
+    @param player
+        The player.
+    @return
+        Returns true if the quest could be failed, false if not.
+    */
+    bool Quest::fail(Player* player)
+    {
+        if(this->isFailable(player))
+        {
+            this->setStatus(player, questStatus::failed);
+            QuestEffect::invokeEffects(player, this->failEffects_);
+            return true;
+        }
+        COUT(2) << "A non-failable quest was trying to be failed." << std::endl;
+        return false;
+    }
+    
+    /**
+    @brief
+        Completes the quest.
+    @param player
+        The player.
+    @return
+        Returns true if the quest could be completed, false if not.
+    */
+    bool Quest::complete(Player* player)
+    {
+        if(this->isCompletable(player))
+        {
+            this->setStatus(player, questStatus::completed);
+            QuestEffect::invokeEffects(player, this->completeEffects_);
+            return true;
+        }
+        COUT(2) << "A non-completable quest was trying to be completed." << std::endl;
+        return false;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/Quest.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/Quest.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/Quest.h	(revision 2091)
@@ -0,0 +1,122 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _Quest_H__
+#define _Quest_H__
+
+#include <list>
+#include <string>
+
+#include "core/XMLPort.h"
+#include "QuestDescription.h"
+#include "QuestItem.h"
+#include "QuestHint.h"
+#include "QuestEffect.h"
+
+namespace questStatus
+{
+
+    enum Enum
+    {
+        inactive,
+        active,
+        failed,
+        completed
+    };
+
+}
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Represents a quest in the game.
+        A quest has a list of subquests and a parentquest (if it is not a rootquest).
+        Each quest exists only once but it has a different status (inactive, active, failed or completed) for each player.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class Quest : public QuestItem
+    {
+	public:
+            Quest();
+	    virtual ~Quest();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+    
+            inline Quest* getParentQuest(void) const //!< Returns the parent quest of the quest.
+                { return this->parentQuest_; }
+	    inline const std::list<Quest*> & getSubQuestList(void) const //!< Returns the list of sub quests.
+                { return this->subQuests_; }
+	    
+	    bool isInactive(const Player* player) const; //!< Returns true if the quest status for the specific player is 'inactive'.
+	    bool isActive(const Player* player) const; //!< Returns true if the quest status for the specific player is 'active'.
+	    bool isFailed(const Player* player) const; //!< Returns true if the quest status for the specific player is 'failed'.
+	    bool isCompleted(const Player* player) const; //!< Returns true if the quest status for the specific player is 'completed'.
+                
+	    bool start(Player* player); //!< Sets a quest to active.
+	    bool fail(Player* player); //!< Fails the quest.
+	    bool complete(Player* player); //!< Completes the quest.
+	    
+        protected:
+            void initialize(void); //!< Initialized the object.
+            
+            virtual bool isStartable(const Player* player) const = 0; //!< Checks whether the quest can be started.
+            virtual bool isFailable(const Player* player) const = 0; //!< Checks whether the quest can be failed.
+            virtual bool isCompletable(const Player* player) const = 0; //!< Checks whether the quest can be completed.
+            
+            bool setParentQuest(Quest* quest); //!< Sets the parent quest of the quest.
+	    bool addSubQuest(Quest* quest); //!< Adds a sub quest to the quest.
+	    bool addHint(QuestHint* hint); //!< Add a hint to the list of hints.
+	    bool addFailEffect(QuestEffect* effect);
+	    bool addCompleteEffect(QuestEffect* effect);
+	    
+	    const Quest* getParentQuest(void);
+	    const Quest* getSubQuests(unsigned int index) const;
+	    const QuestHint* getHints(unsigned int index) const;
+	    const QuestEffect* getFailEffects(unsigned int index) const;
+	    const QuestEffect* getCompleteEffects(unsigned int index) const;
+            
+            virtual questStatus::Enum getStatus(const Player* player) const = 0; //!< Returns the status of the quest for a specific player.
+            virtual bool setStatus(Player* player, const questStatus::Enum & status) = 0; //!< Changes the status for a specific player.
+            
+            Quest* parentQuest_; //!< Pointer to the parent quest.
+            std::list<Quest*> subQuests_; //!< List of all the sub quests.
+            
+            std::list<QuestHint*> hints_; //!< A list of all the hints tied to this quest.
+            
+            std::list<QuestEffect*> failEffects_; //!< A list of all effects to be invoked, when the quest has been failed.
+            std::list<QuestEffect*> completeEffects_; //!< A list of effects to be invoked, when the quest has been completed.
+
+    };
+
+}
+
+#endif /* _Quest_H__ */
Index: code/trunk/src/orxonox/objects/quest/QuestDescription.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestDescription.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestDescription.cc	(revision 2091)
@@ -0,0 +1,67 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "QuestDescription.h"
+
+namespace orxonox {
+
+    CreateFactory(QuestDescription);
+    
+    QuestDescription::QuestDescription() : BaseObject()
+    {
+        this->initialize();
+    }
+    
+    QuestDescription::~QuestDescription()
+    {
+        
+    }
+    
+    void QuestDescription::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(QuestDescription, XMLPort, xmlelement, mode);
+    
+        XMLPortParam(QuestDescription, "title", setTitle, getTitle, xmlelement, mode);
+        XMLPortParam(QuestDescription, "description", setDescription, getDescription, xmlelement, mode);
+        
+        COUT(3) << "New QuestDescription with title '" << this->getTitle() << "' created." << std::endl;
+    }
+    
+    /**
+    @brief
+        Initializes the object. Has to be called first in every constructor of this class.
+    */
+    void QuestDescription::initialize(void)
+    {
+        RegisterObject(QuestDescription);
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/QuestDescription.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestDescription.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestDescription.h	(revision 2091)
@@ -0,0 +1,74 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _QuestDescription_H__
+#define _QuestDescription_H__
+
+#include <string>
+
+#include "core/BaseObject.h"
+#include "core/XMLPort.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        This class is a description of a QuestItem.
+        It holds a title and a description.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestDescription : public BaseObject {
+    
+	public:
+            QuestDescription();
+	    ~QuestDescription();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    inline const std::string & getTitle(void) const //!< Returns the title.
+                { return this->title_; }
+	    inline const std::string & getDescription(void) const //!< Returns the description text.
+                { return this->description_; }
+	    
+	private:
+            void initialize(void);
+            
+            inline void setTitle(const std::string & title) //!< Sets the title.
+                { this->title_ = title; }
+	    inline void setDescription(const std::string & description) //!< Sets the description text.
+                { this->description_ = description; }
+		
+            std::string title_; //!< The title.
+            std::string description_; //!< The description.
+    
+    };
+
+}
+
+#endif /* _QuestDescription_H__ */
Index: code/trunk/src/orxonox/objects/quest/QuestEffect.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestEffect.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestEffect.cc	(revision 2091)
@@ -0,0 +1,75 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Constructor. Creates a new QuestEffect.
+        Is not meant to be invoked directly, since this is only an interface.
+    */
+    QuestEffect::QuestEffect() : BaseObject()
+    {
+        RegisterObject(QuestEffect);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    QuestEffect::~QuestEffect()
+    {
+        
+    }
+    
+    /**
+    @brief
+        Static method. Invoke all effects of an effect list.
+    @param player
+        The player the effects are invoked on.
+    @param effects
+        A list of all the effects to be invoked.
+    @return
+        Returns false if there was an error, view console of log for further detail.
+    */
+    bool QuestEffect::invokeEffects(Player* player, std::list<QuestEffect*> & effects)
+    {
+        bool check = true;
+        
+        for (std::list<QuestEffect*>::iterator effect = effects.begin(); effect != effects.end(); effect++)
+	{
+	    check = check && (*effect)->invoke(player);
+	}
+	return check;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/QuestEffect.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestEffect.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestEffect.h	(revision 2091)
@@ -0,0 +1,60 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _QuestEffect_H__
+#define _QuestEffect_H__
+
+#include <list>
+
+#include "core/BaseObject.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+
+    /**
+    @brief
+        Handles effects for quests.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestEffect : public BaseObject
+    {
+	public:
+            QuestEffect();
+	    virtual ~QuestEffect();
+	    
+	    virtual bool invoke(Player* player) = 0; //!< Invokes the effect.
+	    static bool invokeEffects(Player* player, std::list<QuestEffect*> & effects); //!< Invokes all effects in the list.
+	    
+	
+    };
+
+}
+
+#endif /* _QuestEffect_H__ */
Index: code/trunk/src/orxonox/objects/quest/QuestHint.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestHint.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestHint.cc	(revision 2091)
@@ -0,0 +1,141 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "Quest.h"
+#include "QuestHint.h"
+
+namespace orxonox {
+
+    CreateFactory(QuestHint);
+
+    /**
+    @brief
+        Constructor.
+    */
+    QuestHint::QuestHint() : QuestItem()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    QuestHint::~QuestHint()
+    {
+        
+    }
+    
+    void QuestHint::initialize(void)
+    {
+        RegisterObject(QuestHint);
+    }
+    
+    void QuestHint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+	SUPER(QuestHint, XMLPort, xmlelement, mode);
+	
+	COUT(3) << "New QuestHint {" << this->getId() << "} created." << std::endl;
+    }
+
+    
+    /**
+    @brief
+        Checks whether the hint is active for a specific player.
+    @param player
+        The player.
+    @throws
+        Throws an Argument Exception if the input Player-pointer is NULL.
+    @return
+        Returns true if the hint is active for the specified player.
+    */
+    bool QuestHint::isActive(Player* player)
+    {
+        if(player == NULL)
+        {
+            ThrowException(Argument, "The input Player* is NULL.");
+            return false;
+        }
+        
+        std::map<Player*, questHintStatus::Enum>::iterator it = this->playerStatus_.find(player);
+	if (it != this->playerStatus_.end())
+	{
+	    return it->second;
+	}
+	return questStatus::inactive;
+    }
+    
+    /**
+    @brief
+        Activates a QuestHint for a given player.
+    @param player
+        The player.
+    @return
+        Returns true if the activation was successful, false if there were problems.
+    */
+    bool QuestHint::activate(Player* player)
+    {
+        if(this->quest_->isActive(player))
+        {
+	    if(!(this->isActive(player)))
+	    {
+		this->playerStatus_[player] = questHintStatus::active;
+		return true;
+	    }
+	    else
+	    {
+                COUT(2) << "An already active questHint was trying to get activated." << std::endl;
+                return false;
+	    }
+        }
+	COUT(2) << "A hint of a non-active quest was trying to get activated." << std::endl;
+	return false;
+    }
+
+    /**
+    @brief
+        Sets the quest the QuestHitn belongs to.
+    @param quest
+    @return
+    */
+    bool QuestHint::setQuest(Quest* quest)
+    {
+        if(quest == NULL)
+        {
+            COUT(2) << "The input Quest* is NULL." << std::endl;
+            return false;
+        }
+        
+        this->quest_ = quest;
+        return true;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/QuestHint.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestHint.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestHint.h	(revision 2091)
@@ -0,0 +1,93 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+ 
+#ifndef _QuestHint_H__
+#define _QuestHint_H__
+
+#include <map>
+#include <string>
+
+#include "core/XMLPort.h"
+#include "QuestDescription.h"
+#include "QuestItem.h"
+
+namespace questHintStatus
+{
+
+    enum Enum
+    {
+        inactive,
+        active
+    };
+
+}
+
+namespace orxonox
+{
+
+    class Player; //Forward declaration, remove when fully integrated into the objecthirarchy.
+    class Quest; //To avoid circual includes.
+
+    /**
+    @brief
+        Represents a hint in the game towards completing a Quest.
+        Consists of title and description in textual form and must belong to a quest.
+        A QuestHit has a defined status (inactive or active, where inactive is default) for each player, which means each QuestHint exists only once for all players, it doesn't belong to a player, it just has different stati for each of them.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestHint : public QuestItem
+    {
+    
+	public:
+            QuestHint();
+	    ~QuestHint();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    bool isActive(Player* player); //!< Returns true if the hint is active for the input player.
+	    
+	    bool activate(Player* player); //!< Activates the hint for the input player.
+	    
+	    bool setQuest(Quest* quest); //!< Sets the quest the hint belongs to.
+	    
+	    inline Quest* getQuest(void)
+	       { return this->quest_; }
+	    
+        private:
+            
+            void initialize(void);
+            
+            Quest* quest_; //!< The quest the hint belongs to.
+            std::map<Player*, questHintStatus::Enum> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
+    
+    };
+
+}
+
+#endif /* _QuestHint_H__ */
Index: code/trunk/src/orxonox/objects/quest/QuestItem.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestItem.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestItem.cc	(revision 2091)
@@ -0,0 +1,105 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "QuestItem.h"
+
+namespace orxonox {
+    
+    QuestItem::QuestItem() : BaseObject()
+    {
+        this->initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    QuestItem::~QuestItem()
+    {
+        
+    }
+    
+    void QuestItem::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(QuestItem, XMLPort, xmlelement, mode);
+        
+        XMLPortParam(QuestItem, "id", setId, getId, xmlelement, mode);
+        //Doesn't getDescription have to be of type getDescription(unsigned int) ?
+        //XMLPortObjectTemplate(QuestItem, QuestDescription, "", setDescription, getDescription, xmlelement, mode, unsigned int);
+        XMLPortObject(QuestItem, QuestDescription, "", setDescription, getDescription, xmlelement, mode);
+
+    }
+
+    
+    /**
+    @brief
+        Initializes the object.
+        Should be called first in every constructor of this class.
+    */
+    void QuestItem::initialize(void)
+    {
+        RegisterObject(QuestItem);
+        
+        this->id_ = "";
+    }
+    
+    void QuestItem::setId(const std::string & id)
+    {
+        if(!isId(id))
+        {
+            COUT(2) << "Invalid id. QuestItem id {" << id << "} could not be set." << std::endl;
+            return;
+        }
+        this->id_ = id;
+    }
+    
+    //const QuestDescription* QuestItem::getDescription(unsigned int index) const //!< Returns the description of the QuestItem.
+    //{
+    //    if(index != 0)
+    //        return NULL;
+    //    return this->description_;
+    //}
+    
+    /**
+    @brief
+        Checks whether an input id is of the required form.
+    @param id
+	The id to be checked.
+    @return
+        Returns true if the string is likely to be of the required form.
+    @todo
+        Clarify form, more vigorous checks.
+    */
+    bool QuestItem::isId(const std::string & id)
+    {
+        return id.size() >= 32;
+    }
+
+}
Index: code/trunk/src/orxonox/objects/quest/QuestItem.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestItem.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestItem.h	(revision 2091)
@@ -0,0 +1,80 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+ 
+#ifndef _QuestItem_H__
+#define _QuestItem_H__
+
+#include <string>
+
+#include "core/BaseObject.h"
+#include "core/XMLPort.h"
+#include "QuestDescription.h"
+
+namespace orxonox {
+
+    
+    /**
+    @brief
+	Functions as a base class for Quest classes such as Quest or QuestHint.
+	Has a unique identifier and a description.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class QuestItem : public BaseObject
+    {
+    
+	public:
+            QuestItem();
+	    virtual ~QuestItem();
+	    
+	    virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+	    
+	    inline const std::string & getId(void) const //!< Returns the id of this quest.
+                { return this->id_; }
+	    inline const QuestDescription* getDescription(void) const //!< Returns the description of the QuestItem.
+                { return this->description_; }
+	    //const QuestDescription* getDescription(unsigned int index) const; //!< Returns the description of the QuestItem.
+                
+	    static bool isId(const std::string & id); //!< Checks whether a given id is valid.
+	    
+	protected:
+	    void setId(const std::string & id);
+	    inline void setDescription(QuestDescription* description)
+                { this->description_ = description; }
+	    
+	private:
+	    std::string id_; //!< Identifier. Should be of GUID form: http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure
+	    QuestDescription* description_; //!< The description of the QuestItem.
+	    
+	    void initialize(void); //!< Initializes the object.
+    
+    };
+
+}
+
+#endif /* _QuestItem_H__ */
Index: code/trunk/src/orxonox/objects/quest/QuestManager.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestManager.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestManager.cc	(revision 2091)
@@ -0,0 +1,181 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "util/Exception.h"
+
+#include "QuestManager.h"
+
+namespace orxonox {
+
+    std::map<std::string, Quest*> QuestManager::questMap_;
+    std::map<std::string, QuestHint*> QuestManager::hintMap_;
+
+    QuestManager::QuestManager() : BaseObject()
+    {
+        RegisterObject(QuestManager);
+    }
+    
+    
+    QuestManager::~QuestManager()
+    {
+        
+    }
+
+    /**
+    @brief
+        Registers a quest with the QuestManager to make it globally accessable.
+    @param quest
+        The quest that is to be registered.
+    @return
+        Returns true if successful, false if not.
+    */
+    bool QuestManager::registerQuest(Quest* quest)
+    {
+        if(quest == NULL)
+        {
+            COUT(2) << "Registration of Quest in QuestManager failed, because inserted Quest-pointer was NULL." << std::endl;
+            return false;
+	}
+	
+        std::pair<std::map<std::string, Quest*>::iterator,bool> ret;
+        ret = questMap_.insert( std::pair<std::string,Quest*>(quest->getId(),quest) );
+        
+        if(ret.second)
+        {
+            COUT(3) << "Quest with questId {" << quest->getId() << "} successfully inserted." << std::endl;
+            return true;
+	}
+	else
+	{
+	   COUT(2) << "Quest with the same id was already present." << std::endl;
+	   return false;
+	}
+    }
+    
+    /**
+    @brief
+        Registers a QuestHint with the QuestManager to make it globally accessable.
+    @param hint
+        The QuestHint to be registered.
+    @return
+        Returns true if successful, false if not.
+    */
+    bool QuestManager::registerHint(QuestHint* hint)
+    {
+        if(hint == NULL)
+        {
+            COUT(2) << "Registration of QuestHint in QuestManager failed, because inserted QuestHint-pointer was NULL." << std::endl;
+            return false;
+        }
+        
+        std::pair<std::map<std::string, QuestHint*>::iterator,bool> ret;
+        ret = hintMap_.insert ( std::pair<std::string,QuestHint*>(hint->getId(),hint) );
+        
+        if(ret.second)
+        {
+            COUT(3) << "QuestHint with hintId {" << hint->getId() << "} successfully inserted." << std::endl;
+            return true;
+	}
+	else
+	{
+	   COUT(2) << "QuestHint with the same id was already present." << std::endl;
+	   return false;
+	}
+    }
+    
+    /**
+    @brief
+        Finds a quest with the given id.
+    @param questId
+        The id of the quest sought for.
+    @return
+        Returns a reference to the quest with the input id.
+        Returns NULL if there is no quest with the given questId.
+    @throws
+        Throws an exception if the given questId is invalid.
+    */
+    Quest* QuestManager::findQuest(const std::string & questId)
+    {
+        if(!QuestItem::isId(questId))
+	{
+            ThrowException(Argument, "Invalid questId.");
+	}
+	
+        Quest* quest;
+        std::map<std::string, Quest*>::iterator it = questMap_.find(questId);
+	if (it != questMap_.end())
+	{
+	    quest = it->second;
+	}
+	else
+	{
+	   quest = NULL;
+	   COUT(2) << "The quest with id {" << questId << "} is nowhere to be found." << std::endl;
+	}
+	
+	return quest;
+
+    }
+    
+    /**
+    @brief
+        Finds a hint with the given id.
+    @param hintId
+        The id of the hint sought for.
+    @return
+        Returns a reference to the hint with the input id.
+        Returns NULL if there is no hint with the given hintId.
+    @throws
+        Throws an exception if the given hintId is invalid.
+    */
+    QuestHint* QuestManager::findHint(const std::string & hintId)
+    {
+        if(!QuestItem::isId(hintId))
+	{
+            ThrowException(Argument, "Invalid hintId.");
+	}
+	
+        QuestHint* hint;
+        std::map<std::string, QuestHint*>::iterator it = hintMap_.find(hintId);
+	if (it != hintMap_.end())
+	{
+	    hint = it->second;
+	}
+	else
+	{
+	   hint = NULL;
+	   COUT(2) << "The hint with id {" << hintId << "} is nowhere to be found." << std::endl;
+	}
+	
+	return hint;
+
+    }
+    
+
+}
Index: code/trunk/src/orxonox/objects/quest/QuestManager.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/QuestManager.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/QuestManager.h	(revision 2091)
@@ -0,0 +1,69 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _QuestManager_H__
+#define _QuestManager_H__
+
+#include <map>
+#include <string>
+
+#include "core/BaseObject.h"
+#include "Quest.h"
+#include "QuestHint.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Manages quests, by making them globally accessable.
+        Quests (and Hints) are registered in the QuestManager trough their id, and can be accessed in the same way.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestManager : public BaseObject
+    {
+    
+	public:
+	    QuestManager();
+	    ~QuestManager();
+	    
+	    static bool registerQuest(Quest* quest); //!< Registers a quest in the QuestManager.
+	    static bool registerHint(QuestHint* quest); //!< Registers a QuestHint in the QuestManager.
+	    
+	    static Quest* findQuest(const std::string & questId); //!< Returns the quest with the input id.
+	    static QuestHint* findHint(const std::string & hintId); //!< Returns the QuestHint with the input id.
+	    	    
+	private:
+	    static std::map<std::string, Quest*> questMap_; //!< All quests registered by their id's.
+	    static std::map<std::string, QuestHint*> hintMap_; //!< All hints registered by their id's.
+    
+    };
+
+}
+
+#endif /* _QuestManager_H__ */
Index: code/trunk/src/orxonox/objects/quest/Rewardable.cc
===================================================================
--- code/trunk/src/orxonox/objects/quest/Rewardable.cc	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/Rewardable.cc	(revision 2091)
@@ -0,0 +1,47 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+
+#include "Rewardable.h"
+
+namespace orxonox {
+
+    
+    Rewardable::Rewardable() : BaseObject()
+    {
+        RegisterObject(Rewardable);
+    }
+    
+    
+    Rewardable::~Rewardable()
+    {
+    }
+
+
+}
Index: code/trunk/src/orxonox/objects/quest/Rewardable.h
===================================================================
--- code/trunk/src/orxonox/objects/quest/Rewardable.h	(revision 2091)
+++ code/trunk/src/orxonox/objects/quest/Rewardable.h	(revision 2091)
@@ -0,0 +1,57 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _Rewardable_H__
+#define _Rewardable_H__
+
+#include "core/BaseObject.h"
+
+namespace orxonox {
+
+    class Player; //Forward declaration, remove when fully integrated in objecthirarchy.
+
+    /**
+    @brief
+        Rewardable is an Interface, that can be implemented by any object to enable it to be given as reward to a player through QuestEffects.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class Rewardable : public BaseObject
+    {
+    
+	public:
+	    Rewardable();
+	    virtual ~Rewardable();
+	    
+	    virtual bool reward(Player* player) = 0; //!<Method to transcribe a rewardable object to the player.
+    
+    };
+
+}
+
+#endif /* _Rewardable_H__ */
