Index: /code/branches/questsystem/src/orxonox/objects/AddQuest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddQuest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddQuest.cc	(revision 1992)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "AddQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(AddQuest);
+
+    /**
+    @brief
+        Constructor.
+    @param questId
+        The id of the quest to be added.
+    */
+    AddQuest::AddQuest(std::string questId) : ChangeQuestStatus(questId)
+    {
+        RegisterObject(AddQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */ 
+    AddQuest::~AddQuest()
+    {
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    */
+    virtual void AddQuest::invoke(Player & player)
+    {
+        Quest quest = QuestManager::findQuest(this->getQuestId());
+        quest.start(player);
+    }
+
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/AddQuest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddQuest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddQuest.h	(revision 1992)
@@ -0,0 +1,56 @@
+/*
+ *   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 "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Adds a quest, resp. changes the quests status to active.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class AddQuest : public ChangeQuestStatus
+    {
+	public:
+	    AddQuest(std::string questId);
+	    ~AddQuest();
+	    
+	    virtual void invoke(Player & player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _AddQuest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/AddQuestHint.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddQuestHint.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddQuestHint.cc	(revision 1992)
@@ -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 "AddQuestHint.h"
+
+namespace orxonox {
+
+    CreateFactory(AddQuestHint);
+
+    /**
+    @brief
+        Constructor.
+    @param hintId
+        The id of the hint to be set to active.
+    */
+    AddQuestHint::AddQuestHint(std::string hintId) : QuestEffect()
+    {
+        RegisterObject(AddQuestHint);
+        this->hintId_ = hintId;
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    AddQuestHint::~AddQuestHint()
+    {
+    }
+
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player.
+    */
+    virtual void invoke(Player & player)
+    {
+        QuestHint hint = QuestManager::findHint(this->hintId_);
+        hint.activate(player);
+    }
+}
Index: /code/branches/questsystem/src/orxonox/objects/AddQuestHint.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddQuestHint.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddQuestHint.h	(revision 1992)
@@ -0,0 +1,59 @@
+/*
+ *   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 {
+
+    /**
+    @brief
+	Adds a QuestHint, resp. Activates the QuestHint.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class AddQuestHint : public QuestEffect
+    {
+	public:
+	    AddQuestHint(std::string hintId);
+	    ~AddQuestHint();
+	    
+	    virtual void invoke(Player & player); //!< Invokes the effect.
+	    
+	private:
+            std::string hintId_;
+    
+    };
+
+}
+
+#endif /* _AddQuestHint_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/AddReward.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddReward.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddReward.cc	(revision 1992)
@@ -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 "core/CoreIncludes.h"
+#include "AddReward.h"
+
+namespace orxonox {
+    
+    CreateFactory(AddReward);
+    
+    /**
+    @brief
+        Constructor. Creates a new AddReward effect with an input reward.
+    @param reward
+        A reward.
+    */
+    AddReward::AddReward(Rewardable & reward)
+    {
+        this->initialize();
+        this->addRewardable(reward);
+    }
+    
+    /**
+    @brief
+        Constructor. Creates a new AddReward effect with an input list of rewards.
+    @param rewards
+        A list of rewards.
+    */
+    AddReward::AddReward(std::list<Rewardable> & rewards)
+    {
+        this->initialize();
+        this->rewards_ = rewards;
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    AddReward::~AddReward()
+    {
+    }
+
+    /**
+    @brief
+        Initializes the object. Needs to be called first by every constructor of this class.
+    */
+    void AddReward::initialize(void)
+    {
+        RegisterObject(AddReward);
+    }
+
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player.
+    */
+    virtual void AddReward::invoke(Player & player)
+    {
+        if ( this->rewards_ == NULL )
+        {
+            COUT(2) << "NULL-Rewards list encountered." << std::endl;
+            return;
+	}
+        for ( std::list<Rewardable>::iterator = this->rewards_.begin(); reward != this->rewards_.end(); ++reward )
+	{
+	    reward.reward(player);
+	}
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/AddReward.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/AddReward.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/AddReward.h	(revision 1992)
@@ -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 _AddReward_H__
+#define _AddReward_H__
+
+#include <list>
+
+#include "orxonox/quests/Rewardable.h"
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+	Adds a list of rewards to a player.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class AddReward : public QuestEffect
+    {
+	public:
+	    AddReward(Rewardable & reward);
+	    AddReward(std::list<Rewardable> & rewards);
+	    ~AddReward();
+	    
+	    virtual void invoke(Player & player); //!< Invokes the effect.
+	    
+	private:
+	
+            std::list<Rewardable> rewards_;
+	
+            void initialize(void); //!< Initializes the object.
+	
+            inline void addRewardable(const Rewardable & reward)
+                { this->rewards_.push_back(reward); }
+    
+    };
+
+}
+
+#endif /* _AddReward_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.cc	(revision 1992)
@@ -0,0 +1,56 @@
+/*
+ *   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 "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    CreateFactory(ChangeQuestStatus);
+
+    /**
+    @brief
+        Constructor.
+    @param questId
+        The id of the quest the status should be changed of.
+    */
+    ChangeQuestStatus::ChangeQuestStatus(std::string questId) : QuestEffect()
+    {
+        RegisterObject(ChangeQuestStatus);
+        this->questId_ = questId;
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    ChangeQuestStatus::~ChangeQuestStatus()
+    {
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/ChangeQuestStatus.h	(revision 1992)
@@ -0,0 +1,62 @@
+/*
+ *   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 "QuestEffect.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        An effect which changes a quests status.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class ChangeQuestStatus : public QuestEffect
+    {
+	public:
+	    ChangeQuestStatus(std::string questId);
+	    ~ChangeQuestStatus();
+	    
+	    virtual void invoke(Player & player) = 0; //!< Invokes the effect.
+	    
+	protected:
+            inline std::string getQuestId(void) //!< Returns the quest id.
+                { return questId_; }
+	
+            std::string questId_; //!< The id of the quest the status should be changed of.
+
+    };
+
+}
+
+#endif /* _ChangeQuestStatus_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/CompleteQuest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/CompleteQuest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/CompleteQuest.cc	(revision 1992)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "CompleteQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(CompleteQuest);
+
+    /**
+    @brief
+        Constructor.
+    @param questId
+        The id of the quest to be completed.
+    */
+    CompleteQuest::CompleteQuest(std::string questId) : ChangeQuestStatus(questId)
+    {
+        RegisterObject(CompleteQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    CompleteQuest::~CompleteQuest()
+    {
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    */
+    virtual void CompleteQuest::invoke(Player & player)
+    {
+        Quest quest = QuestManager::findQuest(this->getQuestId());
+        quest.complete(player);
+    }
+
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/CompleteQuest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/CompleteQuest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/CompleteQuest.h	(revision 1992)
@@ -0,0 +1,56 @@
+/*
+ *   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 "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Completes a quest.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class CompleteQuest : public ChangeQuestStatus
+    {
+	public:
+	    CompleteQuest(std::string questId);
+	    ~CompleteQuest();
+	    
+	    virtual void invoke(Player & player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _CompleteQuest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/FailQuest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/FailQuest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/FailQuest.cc	(revision 1992)
@@ -0,0 +1,68 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes";
+#include "FailQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(FailQuest);
+
+    /**
+    @brief
+        Constructor.
+    @param questId
+	The id of the quest to be failed.
+    */
+    FailQuest::FailQuest(std::string questId) : ChangeQuestStatus(questId)
+    {
+        RegisterObject(FailQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    FailQuest::~FailQuest()
+    {
+    }
+    
+    /**
+    @brief
+        Invokes the effect.
+    @param player
+        The player the effect is invoked on.
+    */
+    virtual void FailQuest::invoke(Player & player)
+    {
+        Quest quest = QuestManager::findQuest(this->getQuestId());
+        quest.fail(player);
+    }
+
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/FailQuest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/FailQuest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/FailQuest.h	(revision 1992)
@@ -0,0 +1,56 @@
+/*
+ *   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 "ChangeQuestStatus.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Fails a quest.
+    @author
+	Damian 'Mozork' Frick
+    */
+    class FailQuest : public ChangeQuestStatus
+    {
+	public:
+	    FailQuest(std::string questId);
+	    ~FailQuest();
+	    
+	    virtual void invoke(Player & player); //!< Invokes the effect.
+    
+    };
+
+}
+
+#endif /* _FailQuest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/GlobalQuest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/GlobalQuest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/GlobalQuest.cc	(revision 1992)
@@ -0,0 +1,94 @@
+/*
+ *   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 "GlobalQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(GlobalQuest);
+
+    /**
+    @brief
+        Constructor.
+    @param id
+        The unique identifier.
+    @param title
+        The title of the quest.
+    @param description
+        The description of the quest.
+    */
+    GlobalQuest::GlobalQuest(std::string id, std::string title = "", std::string description = "") : Quest(id, title, description)
+    {
+        RegisterObject(GlobalQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    GlobalQuest::~GlobalQuest()
+    {
+        
+    }
+
+    /**
+    @brief
+        Returns the status of the quest for a specific player.
+    @param player
+        The player.
+    */
+    virtual questStatus::Enum getStatus(const Player & player) const
+    {
+        //TDO: Does this really work???
+        if (this->players_.find(&player) != this->players_.end())
+	{
+	    return this->status_;
+	}
+	else
+	{
+	   return questStatus::inactive;
+	}
+
+    }
+    
+    /**
+    @brief
+        Sets the status for a specific player.
+    @param player
+        The player.
+    @param status
+        The status to be set.
+    */
+    virtual void setStatus(const Player & player, const questStatus::Enum & status)
+    {
+        //TDO: Implement.
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/GlobalQuest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/GlobalQuest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/GlobalQuest.h	(revision 1992)
@@ -0,0 +1,63 @@
+/*
+ *   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 "Quest.h"
+
+namespace orxonox {
+
+    /**
+    @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(std::string id, std::string title = "", std::string description = "");
+	    ~GlobalQuest();
+	    
+	protected:
+	    virtual questStatus::Enum getStatus(const Player & player) const; //!< Returns the status of the quest for a specific player.
+	    virtual void setStatus(const 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.
+    
+    };
+
+}
+
+#endif /* _GlobalQuest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/LocalQuest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/LocalQuest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/LocalQuest.cc	(revision 1992)
@@ -0,0 +1,85 @@
+/*
+ *   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 "LocalQuest.h"
+
+namespace orxonox {
+
+    CreateFactory(LocalQuest);
+
+    /**
+    @brief
+        Constructor.
+    @param id
+        The unique identifier.
+    @param title
+        The title of the quest.
+    @param description
+        The description of the quest.
+    */
+    LocalQuest::LocalQuest(std::string id, std::string title = "", std::string description = "") : Quest(id, title, description)
+    {
+        RegisterObject(LocalQuest);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    LocalQuest::~LocalQuest()
+    {
+        
+    }
+    
+    /**
+    @brief
+        Returns the status of the quest for a specific player.
+    @param player
+        The player 
+    */
+    virtual int LocalQuest::getStatus(const Player & player) const
+    {
+        //TDO: Implenet.
+    }
+    
+    /**
+    @brief
+        Sets the status for a specific player.
+    @param player
+        The player.
+    @param status
+        The status.
+    */
+    virtual void LocalQuest::setStatus(const Player & player, const questStatus::Enum & status)
+    {
+        //TDO: Implement.
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/LocalQuest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/LocalQuest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/LocalQuest.h	(revision 1992)
@@ -0,0 +1,62 @@
+/*
+ *   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 <string>
+
+#include "Quest.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Handles quests which have different states for different players.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class LocalQuest : public Quest
+    {
+	public:
+	    LocalQuest(std::string id, std::string title = "", std::string description = "");
+	    ~LocalQuest();
+	    
+	protected:
+            virtual questStatus::Enum getStatus(const Player & player) const; //!< Returns the status of the quest for a specific player.
+            virtual void setStatus(const Player & player, const questStatus::Enum & status); //!< Sets the status for a specific player.
+                
+	private:
+            //TDO: List of Players and the status of the quest fo them.
+            questStatus::Enum status_; //!< The status of the quest.
+    
+    };
+
+}
+
+#endif /* _LocalQuest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/Quest.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/Quest.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/Quest.cc	(revision 1992)
@@ -0,0 +1,146 @@
+/*
+ *   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"
+
+namespace orxonox {
+
+    CreateFactory(Quest);
+
+    /**
+    @brief
+        Constructor. Creates a quest with a given id, title and description.
+    @param id
+        The unique identifier of the quest.
+    @param title
+        The title of the quest.
+    @param description
+        The description of the quest.
+    */
+    Quest::Quest(std::string id, std::string title = "", std::string description = "") : QuestItem(id, title, description)
+    {
+        initialize();
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    Quest::~Quest()
+    {
+        //TDO: Unload lists...
+    }
+    
+    /**
+    @brief
+        Initializes the object. Needs to be called first in every constructor of this class.
+    */
+    void Quest::initialize(void)
+    {
+        RegisterObject(Quest);
+        
+        this->parentQuest_ = 0;
+    }
+
+    /**
+    @brief
+        Adds a Hint to the list of hints 
+    @param hint
+        The hint that should be added to the list of hints.
+    */
+    void Quest::addHint(QuestHint & hint)
+    {
+        if ( hint != NULL )
+        {
+            this->hints_.push_back(hint);
+            hint.setQuest(this);
+	}
+        else
+        {
+            COUT(2) << "A NULL-QuestHint was trying to be added." << std::endl;
+	}
+    }
+    
+    /**
+    @brief
+        Starts the quest.
+    @param player
+        The player.
+    */
+    void Quest::start(const Player & player)
+    {
+        if(this->isInactive(player))
+        {
+            this->setStatus(player, questStatus::active);
+        }
+        else
+        {
+            COUT(2) << "A non-inactive quest was trying to be started." << std::endl;
+        }
+    }
+    
+    /**
+    @brief
+        Fails the quest.
+    @param player
+        The player.
+    */
+    void Quest::fail(Player & player)
+    {
+        if(this->isActive(player))
+        {
+            this->setStatus(player, questStatus::failed);
+            QuestEffect::invokeEffects(player, this->failEffects_);
+        }
+        else
+        {
+            COUT(2) << "A non-pending quest was trying to be failed." << std::endl;
+        }
+    }
+    
+    /**
+    @brief
+        Completes the quest.
+    @param player
+        The player.
+    */
+    void Quest::complete(Player & player)
+    {
+        if(this->isActive(player))
+        {
+            this->setStatus(player, questStatus::completed);
+            QuestEffect::invokeEffects(player, this->completeEffects_);
+        }
+        else
+        {
+            COUT(2) << "A non-pending quest was trying to be completed." << std::endl;
+        }
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/Quest.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/Quest.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/Quest.h	(revision 1992)
@@ -0,0 +1,113 @@
+/*
+ *   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 "orxonox/quests/QuestDescription.h"
+#include "QuestItem.h"
+#include "QuestHint.h"
+#include "QuestEffect.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Represents a quest in the game.
+        A quest has a sub
+        
+    @author
+        Damian 'Mozork' Frick
+    */
+    class Quest : public QuestItem
+    {
+	public:
+            Quest(std::string id, std::string title = "", std::string description = "");
+	    ~Quest();
+    
+            inline Quest* getParentQuest(void) const //!< Returns the parent quest of the quest.
+                { return this->parentQuest_; }
+	    inline const std::list<Quest> & getSubQuest(void) const //!< Returns the list of sub quests.
+                { return this->subQuests_; }
+	    
+	    //TDO: Necessary? Shouldn't this be decided whilest creating the object?
+	    inline void setParentQuest(Quest* quest) //!< Sets the parent quest of the quest.
+                { this->parentQuest_ = quest; }
+	    inline void addSubQuest(Quest & quest) //!< Adds a sub quest to the quest.
+                { this->subQuests_.push_back = quest; }
+	    
+	    inline bool isInactive(const Player & player) const //!< Returns true if the quest status for the specific player is 'inactive'.
+	       { return this->getStatus(player) != questStatus::inactive; }
+	    inline bool isActive(const Player & player) const //!< Returns true if the quest status for the specific player is 'active'.
+	       { return this->getStatus(player) == questStatus::active; }
+	    inline bool isFailed(const Player & player) const //!< Returns true if the quest status for the specific player is 'failed'.
+	       { return this->getStatus(player) == questStatus::failed; }
+	    inline bool isCompleted(const Player & player) const //!< Returns true if the quest status for the specific player is 'completed'.
+	       { return this->getStatus(player) == questStatus::completed; }
+                
+	    void start(const Player & player); //!< Sets a quest to pending.
+	    void fail(Player & player); //!< Fails the quest.
+	    void complete(Player & player); //!< Completes the quest.
+                
+            void addHint(QuestHint & hint); //!< Add a hint to the list of hints.
+	    
+        protected:
+            void initialize(void); //!< Initialized the object.
+            
+            virtual questStatus::Enum getStatus(const Player & player) const = 0; //!< Returns the status of the quest for a specific player.
+            virtual void setStatus(const 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.
+
+    };
+
+}
+
+namespace questStatus
+{
+
+    enum Enum
+    {
+        inactive,
+        active,
+        failed,
+        completed
+    };
+
+}
+
+#endif /* _Quest_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/QuestEffect.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestEffect.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestEffect.cc	(revision 1992)
@@ -0,0 +1,76 @@
+/*
+ *   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 {
+
+    CreateFactory(QuestEffect);
+
+    /**
+    @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.
+    */
+    static void QuestEffect::invokeEffects(Player & player, std::list<QuestEffect> & effects)
+    {
+        if ( effects == NULL )
+        {
+            COUT(5) << "NULL-QuestEffect list encountered." << std::endl;
+            return;
+	}
+        for ( std::list<QuestEffect>::iterator = effects.begin(); effect != effects.end(); ++effect )
+	{
+	    effect.invoke(player);
+	}
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/QuestEffect.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestEffect.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestEffect.h	(revision 1992)
@@ -0,0 +1,58 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#ifndef _QuestEffect_H__
+#define _QuestEffect_H__
+
+#include <list>
+
+#include "BaseObject.h"
+
+namespace orxonox {
+
+    /**
+    @brief
+        Handles effects for quests.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestEffect : public BaseObject
+    {
+	public:
+            QuestEffect();
+	    ~QuestEffect();
+	    
+	    virtual void invoke(Player & player) = 0; //!< Invokes the effect.
+	    static void invokeEffects(Player & player, std::list<QuestEffect> & effects); //!< Invokes all effects in the list.
+	    
+	
+    };
+
+}
+
+#endif /* _QuestEffect_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/QuestHint.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestHint.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestHint.cc	(revision 1992)
@@ -0,0 +1,82 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "QuestHint.h"
+
+namespace orxonox {
+
+    CreateFactory(QuestHint);
+
+    /**
+    @brief
+        Constructor.  Needs as input a unique identifier to be able to identify different instances of this class (and subclasses).
+    @param id
+        The unique identifier.
+    @param title
+        The title of the hint.
+    @param description
+        The description of the hint, resp. the hint itself.
+    */
+    QuestHint::QuestHint(std::string id, std::string title = "", std::string description = "") : QuestItem(id, title, description)
+    {
+        RegisterObject(QuestHint);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    QuestHint::~QuestHint()
+    {
+        
+    }
+    
+    bool QuestHint::isActive(const Player & player) const
+    {
+        //TDO: Implement.
+    }
+    
+    void QuestHint::activate(const Player & player)
+    {
+        if(this->quest_->isActive(player))
+        {
+            //TDO: Implement.
+        }
+        else
+        {
+            COUT(2) << "A hint of a non-active quest was trying to get activated." << std::endl;
+        }
+    }
+
+    void QuestHint::setQuest(Quest* quest)
+    {
+        this->quest_ = quest;
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/QuestHint.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestHint.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestHint.h	(revision 1992)
@@ -0,0 +1,81 @@
+/*
+ *   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 <string>
+
+#include "orxonox/quests/QuestDescription.h"
+#include "Quest.h"
+#include "QuestItem.h"
+
+namespace orxonox
+{
+
+    /**
+    @brief
+        Represents a hint in the game towards completing a Quest.
+        Consists of title and description in textual form.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestHint : public QuestItem
+    {
+    
+	public:
+	    QuestHint(std::string id, std::string title = "", std::string description = "");
+	    ~QuestHint();
+	    
+	    bool isActive(const Player & player) const; //!< Returns true if the hint is active for the input player.
+	    
+	    void activate(const Player & player); //!< Activates the hint for the input player.
+	    
+	    void setQuest(Quest* quest); //!< Sets the quest the hint belongs to.
+	    
+        private: 
+            
+            Quest* quest_;
+            //TDO: questHint statuslist.
+    
+    };
+
+}
+
+namespace questHintStatus
+{
+
+    enum Enum
+    {
+        inactive,
+        active
+    };
+
+}
+
+#endif /* _QuestHint_H__ */
Index: /code/branches/questsystem/src/orxonox/objects/QuestItem.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestItem.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestItem.cc	(revision 1992)
@@ -0,0 +1,76 @@
+/*
+ *   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 {
+
+    CreateFactory(QuestItem);
+    
+    /**
+    @brief
+        Constructor. Needs as input a unique identifier to be able to identify different instances of this class (and subclasses).
+    @param id
+        The unique identifier. Should be of GUID form: http://en.wikipedia.org/wiki/Globally_Unique_Identifier#Basic_structure
+    @param title
+        The title of this QuestItem. Has an empty string as default.
+    @param description
+        The description of this QuestItem. Has an empty string as default.
+    */
+    QuestItem::QuestItem(std::string id, std::string title = "", std::string description = "") : BaseObject()
+    {
+        this->initialize();
+        
+        this->id_ = id;
+        this->description_ = QuestDescription(title, description);
+    }
+    
+    /**
+    @brief
+        Destructor.
+    */
+    QuestItem::~QuestItem()
+    {
+        
+    }
+    
+    /**
+    @brief
+        Initializes the object.
+        Should be called first in every constructor of this class.
+    */
+    void QuestItem::initialize(void)
+    {
+        RegisterObject(QuestItem);
+        
+        this->id_ = "";
+    }
+
+}
Index: /code/branches/questsystem/src/orxonox/objects/QuestItem.h
===================================================================
--- /code/branches/questsystem/src/orxonox/objects/QuestItem.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/objects/QuestItem.h	(revision 1992)
@@ -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 _QuestItem_H__
+#define _QuestItem_H__
+
+#include <string>
+
+#include "orxonox/quests/QuestDescription.h"
+#include "BaseObject.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(std::string id, std::string title = "", std::string description = "");
+	    ~QuestItem();
+	    
+	    inline 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_; }
+	    
+	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/branches/questsystem/src/orxonox/quests/QuestDescription.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/QuestDescription.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/QuestDescription.cc	(revision 1992)
@@ -0,0 +1,58 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreInculdes.h"
+#include "QuestDescription.h"
+
+namespace orxonox {
+
+    CreateFactory(QuestDescription);
+    
+    QuestDescription(std::string title, std::string description = "") : OrxonoxClass()
+    {
+        initialize();
+        this->title_ = title;
+        this->description_ = description;
+    }
+    
+    QuestDescription::~QuestDescription()
+    {
+        
+    }
+    
+    /**
+    @brief
+        Initializes the object. Has to be called first in every constructor of this class.
+    */
+    void QuestDescription::initialize(void)
+    {
+        RegisterRootObject(QuestDescription);
+    }
+
+
+}
Index: /code/branches/questsystem/src/orxonox/quests/QuestDescription.h
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/QuestDescription.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/QuestDescription.h	(revision 1992)
@@ -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:
+ *      ...
+ *
+ */
+
+#ifndef _QuestDescription_H__
+#define _QuestDescription_H__
+
+#include <string>
+
+#include "core/OrxonoxClass.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 : OrxonoxClass {
+    
+	public:
+	    QuestDescription(std::string title, std::string description = "");
+	    ~QuestDescription();
+	    
+	    const std::string & getTitle(void) const //!< Returns the title.
+                { return this->title_; }
+	    const std::string & getDescription(void) const //!< Returns the description text.
+                { return this->description_; }
+	    
+	private:
+            void initialize(void);
+		
+            std::string title_;
+            std::string description_;
+    
+    };
+
+}
+
+#endif /* _QuestDescription_H__ */
Index: /code/branches/questsystem/src/orxonox/quests/QuestManager.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/QuestManager.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/QuestManager.cc	(revision 1992)
@@ -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:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "QuestManager.h"
+
+namespace orxonox {
+
+    QuestManager::QuestManager() : OrxonoxClass()
+    {
+        RegisterRootObject(QuestManager);
+    }
+    
+    
+    QuestManager::~QuestManager()
+    {
+        
+    }
+
+    /**
+    @brief
+        Registers a quest with the QuestManager to make it globally accessable.
+    @param
+        The quest that is to be registered.
+    */
+    static void QuestManager::registerQuest(Quest & quest)
+    {
+        this->questMap_.insert ( pair<std::string,Quest>(quest.getId(),quest) );
+    }
+    
+    /**
+    @brief
+        Registers a QuestHint with the QuestManager to make it globally accessable.
+    @param
+        The QuestHint to be registered.
+    */
+    static void QuestManager::registerHint(QuestHint & hint)
+    {
+        this->hintMap_.insert ( pair<std::string,Hint>(hint.getId(),hint) );
+    }
+    
+    /**
+    @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.
+    */
+    static Quest & QuestManager::findQuest(const std::string & questId) const
+    {
+        Quest* quest;
+        std::map<std::string, Quest>::iterator it = this->questMap_.find(questId);
+	if (it != this->questMap_.end())
+	{
+	    quest = &(it->second);
+	}
+	else
+	{
+	   //TDO: Exception???
+	   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.
+    */
+    static QuestHint & QuestManager::findHint(const std::string & hintId) const
+    {
+        QuestHint* hint;
+        std::map<std::string, QuestHint>::iterator it = this->hintMap_.find(hintId);
+	if (it != this->hintMap_.end())
+	{
+	    hint = &(it->second);
+	}
+	else
+	{
+	   //TDO: Exception???
+	   hint = NULL;
+	   COUT(2) << "The hint with id {" << hintId << "} is nowhere to be found." << std::endl;
+	}
+	
+	return hint;
+
+    }
+    
+
+}
Index: /code/branches/questsystem/src/orxonox/quests/QuestManager.h
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/QuestManager.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/QuestManager.h	(revision 1992)
@@ -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 _QuestManager_H__
+#define _QuestManager_H__
+
+#include <map>
+#include <string>
+
+#include "core/OrxonoxClass.h"
+#include "orxonox/objects/Quest.h"
+#include "orxonox/objects/QuestHint.h"
+
+namespace orxonox {
+
+
+    //TDO: Needs to somehow be static.
+    
+    /**
+    @brief
+        Manages quest, by making them globally accessable.
+    @author
+        Damian 'Mozork' Frick
+    */
+    class QuestManager : virtual public OrxonoxClass
+    {
+    
+	public:
+	    QuestManager();
+	    ~QuestManager();
+	    
+	    static void registerQuest(Quest & quest); //!< Registers a quest in the QuestManager.
+	    static void registerHint(QuestHint & quest); //!< Registers a QuestHint in the QuestManager.
+	    
+	    static Quest & findQuest(const std::string & questId) const; //!< Returns the quest with the input id.
+	    static QuestHint & findHint(const std::string & hintId) const; //!< Returns the QuestHint with the input id.
+	    	    
+	private:
+	    std::map<std::string, Quest> questMap_;
+	    std::map<std::string, QuestHint> hintMap_;
+    
+    };
+
+}
+
+#endif /* _QuestManager_H__ */
Index: /code/branches/questsystem/src/orxonox/quests/Rewardable.cc
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/Rewardable.cc	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/Rewardable.cc	(revision 1992)
@@ -0,0 +1,45 @@
+/*
+ *   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() : OrxonoxClass(), BaseObject()
+    {
+        RegisterRootObject(Rewardable);
+    }
+    
+    
+    Rewardable::~Rewardable()
+    {
+    }
+
+
+}
Index: /code/branches/questsystem/src/orxonox/quests/Rewardable.h
===================================================================
--- /code/branches/questsystem/src/orxonox/quests/Rewardable.h	(revision 1992)
+++ /code/branches/questsystem/src/orxonox/quests/Rewardable.h	(revision 1992)
@@ -0,0 +1,55 @@
+/*
+ *   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/OrxonoxClass.h"
+
+namespace orxonox {
+
+    /**
+    @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 : virtual public OrxonoxClass, public BaseObject
+    {
+    
+	public:
+	    Rewardable();
+	    ~Rewardable();
+	    
+	    virtual void reward(Player & player) = 0; //!<Method to transcribe a rewardable object to the player.
+    
+    };
+
+}
+
+#endif /* _Rewardable_H__ */
