Index: code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11746)
+++ code/branches/Presentation_HS17_merge/src/modules/CMakeLists.txt	(revision 11747)
@@ -27,5 +27,5 @@
 
 ADD_SUBDIRECTORY(asteroidmining)
-ADD_SUBDIRECTORY(dialogue)
+ADD_SUBDIRECTORY(dialog)
 ADD_SUBDIRECTORY(designtools)
 ADD_SUBDIRECTORY(gametypes)
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.cc	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.cc	(revision 11747)
@@ -0,0 +1,53 @@
+#include "Answer.h"
+#include "core/CoreIncludes.h"
+
+
+namespace orxonox{
+
+	RegisterClass(Answer);
+
+
+	// Constructor:
+	Answer::Answer(Context* context) : BaseObject(context) 
+	{
+	    RegisterObject(Answer);
+	}
+
+	void Answer::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+	{
+		SUPER(Answer, XMLPort, xmlelement, mode);
+
+		XMLPortParam(Answer, "Id", setAnswerId, getAnswerId, xmlelement, mode);
+		XMLPortParam(Answer, "answer", setAnswer, getAnswer, xmlelement, mode);
+		XMLPortParam(Answer, "nextQuestionId", setNextQuestion, getNextQuestion, xmlelement,mode);
+	}
+
+	void Answer::setAnswerId(const std::string& answerId){
+		this->answerId_ = answerId;
+	}
+
+	const std::string& Answer::getAnswerId() const
+	{
+		return this->answerId_;
+	}
+
+	void Answer::setNextQuestion(const std::string& nextId)
+	{
+		this->nextQuestionId_ = nextId;
+	}
+
+	const std::string& Answer::getNextQuestion() const
+	{
+		return this->nextQuestionId_;
+	}
+
+	void Answer::setAnswer(const std::string& answer)
+	{
+		this->answer_ = answer;
+	}
+
+	const std::string& Answer::getAnswer() const
+	{
+		return this->answer_;
+	}
+}	
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Answer.h	(revision 11747)
@@ -0,0 +1,42 @@
+#ifndef _Answer_H__
+#define _Answer_H__
+
+#include "core/BaseObject.h"
+#include "DialogPrereqs.h"
+#include "core/XMLPort.h"
+#include "core/CoreIncludes.h"
+#include <string>
+
+namespace orxonox
+{
+	/**
+	@brief
+    class containing the pc side of the Dialog
+
+    this class contains one possible text option of the pc, it's id and the id of the reaction of the npc to this answer
+	*/
+
+	class _DialogExport Answer : public BaseObject
+	{
+		public:
+			Answer(Context* context);
+			
+			virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+			void setAnswerId(const std::string& answerId); //xmlPort-Funktion, setzt AntwortId
+			const std::string& getAnswerId() const;	//xmlPort-Funktion,	gibt AntwortId
+
+			void setNextQuestion(const std::string& nextId); //xmlPort-Funktion, um Dialog zu beenden tag benutzen der von keiner Frage benutzt wird
+			const std::string& getNextQuestion() const;	//xmlPort-Funktion, gibt Id der Folgefrage
+
+			void setAnswer(const std::string& awns);	//xmlPort-Funktion, setzt Antworttext
+			const std::string& getAnswer() const;	//xmlPort-Funktion,	gibt Antworttext
+
+		private:
+			std::string answerId_;	//!< id of the pc textoption	
+			std::string answer_;	//!< string with the pc text
+			std::string nextQuestionId_;	//!< id of the npc reaction to pc answer
+	};
+}
+
+#endif
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.cc	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.cc	(revision 11747)
@@ -0,0 +1,30 @@
+#include "AnswerId.h"
+#include "core/CoreIncludes.h"
+
+
+namespace orxonox{
+
+	RegisterClass(AnswerId);
+
+	AnswerId::AnswerId(Context* context) : BaseObject(context)
+	{
+		RegisterObject(AnswerId);
+	}
+
+	void AnswerId::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+	{
+		SUPER(AnswerId, XMLPort, xmlelement, mode);
+
+		XMLPortParam(AnswerId, "Id", setId, getId, xmlelement, mode);
+	}
+
+	void AnswerId::setId(const std::string& id)
+	{
+		this->id_ = id;
+	}
+	
+	const std::string& AnswerId::getId() const
+	{
+		return this->id_;
+	}
+}
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/AnswerId.h	(revision 11747)
@@ -0,0 +1,33 @@
+#ifndef _AnswerID_H__
+#define _AnswerID_H__
+
+#include "core/XMLPort.h"
+#include "core/BaseObject.h"
+#include "core/CoreIncludes.h"
+
+#include <string>
+
+namespace orxonox{
+
+	/**
+	@brief
+    container class for answerids in xml
+
+	*/
+
+	class AnswerId : public BaseObject
+	{
+		public:
+			AnswerId(Context* context);
+			
+			virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+            void setId(const std::string& Id);	//allows to set Id, only use in xmlPort for initializing AnswerIds in lvl files
+            const std::string& getId() const;	//allows to get Id, used in xmlPort
+
+		private: 
+			std::string id_;	//!< id of one answer
+	};
+}
+
+#endif
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/CMakeLists.txt
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/CMakeLists.txt	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/CMakeLists.txt	(revision 11747)
@@ -0,0 +1,17 @@
+SET_SOURCE_FILES(DIALOG_SRC_FILES
+  DialogManager.cc
+  Dialog.cc
+  Question.cc
+  Answer.cc
+  AnswerId.cc
+)
+
+ORXONOX_ADD_LIBRARY(dialog
+  MODULE
+  FIND_HEADER_FILES
+   TOLUA_FILES
+   DialogManager.h
+  LINK_LIBRARIES
+    orxonox
+  SOURCE_FILES ${DIALOG_SRC_FILES}
+)
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.cc	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.cc	(revision 11747)
@@ -0,0 +1,123 @@
+#include "DialogManager.h"
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "core/EventIncludes.h"
+#include "Dialog.h"
+#include "Question.h"
+
+
+namespace orxonox
+{
+
+	RegisterClass(Dialog);
+	
+	//Constructor: 
+	Dialog::Dialog(Context* context) : BaseObject(context)
+	{
+		RegisterObject(Dialog);
+	}
+
+	void Dialog::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+	{
+		SUPER(Dialog, XMLPort, xmlelement, mode);
+
+		XMLPortParam(Dialog, "name", setName, getName, xmlelement, mode);
+		XMLPortParam(Dialog, "currentQuestionId", setCurrentQuestionId, getCurrentQuestionId, xmlelement, mode);
+		XMLPortObject(Dialog, Question, "questions", addQuestion, getQuestion, xmlelement, mode);
+		XMLPortObject(Dialog, Answer, "answers", addAnswer, getAnswer, xmlelement, mode);
+	}
+
+	void Dialog::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        SUPER(Dialog, XMLEventPort, xmlelement, mode);
+
+        XMLPortEventSink(Dialog, BaseObject, "execute", execute, xmlelement, mode); 
+    }
+
+	void Dialog::setName(const std::string& name)
+	{
+		this->name_ = name;
+	}
+
+	const std::string& Dialog::getName() const 
+	{
+		return this->name_;
+	}
+
+	void Dialog::setCurrentQuestionId(const std::string& questionId)
+	{
+		this->currentQuestionId_ = questionId;
+	}
+
+	const std::string& Dialog::getCurrentQuestionId() const
+	{
+		return this->currentQuestionId_;
+	}
+
+
+	void Dialog::addQuestion(Question* question) //fuegt Question der Map hinzu
+	{
+		this->questions_.insert(make_pair(question->getQuestionId(), question));
+	}
+
+	const Question* Dialog::getQuestion() const // returned nichts
+	{
+		return nullptr;
+	}
+
+	void Dialog::addAnswer(Answer* answer) //fuegt Answer der Map hinzu
+	{
+		this->answers_.insert(make_pair(answer->getAnswerId(), answer));
+	}
+
+	const Answer* Dialog::getAnswer(unsigned int index) const	//returned sting der Antwort zur Id.
+	{
+		return nullptr;
+	}
+
+
+	const std::vector<std::string>* Dialog::getAnswerIds() // returned vector mit allen momentanen AntwortenIds
+	{
+		
+		Question* question = (this->questions_.find(this->currentQuestionId_))->second;
+		const std::vector<std::string>* answers = question->getAnswerIds();
+		return answers;
+		
+	} 
+	
+	bool Dialog::execute(bool bTriggered, BaseObject* trigger)
+    {  
+    	DialogManager& m = DialogManager::getInstance();
+    	
+    	if(questions_.count(this->currentQuestionId_)){
+    		m.setDialog(this);
+    		OrxonoxOverlay::showOverlay("Dialog");
+    	}
+    	else {
+    		orxout() << "no start defined " << endl;
+    	}
+    	
+        return false;
+    }
+
+    void Dialog::update(const std::string& givenAnswerId)
+    {
+    	Answer* answer = (answers_.find(givenAnswerId))->second;
+    	this->currentQuestionId_ = answer->getNextQuestion();
+    }
+
+    bool Dialog::ending(const std::string& givenAnswerId)
+    {
+    	return !this->questions_.count(this->answers_.find(givenAnswerId)->second->getNextQuestion());
+    }
+
+	const std::string& Dialog::getQuestionString()
+	{
+		return this->questions_.find(this->currentQuestionId_)->second->getQuestion();
+	}
+
+	const std::string& Dialog::getAnswerString(std::string answerId)
+	{
+		return this->answers_.find(answerId)->second->getAnswer();
+	}
+}
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Dialog.h	(revision 11747)
@@ -0,0 +1,117 @@
+#ifndef _Dialog_H__
+#define _Dialog_H__
+
+#include "core/BaseObject.h"
+#include "DialogPrereqs.h"
+#include "Question.h"
+#include "Answer.h"
+#include "core/XMLPort.h"
+#include "core/CoreIncludes.h"
+#include "overlays/OrxonoxOverlay.h"
+
+#include <map>
+#include <vector>
+#include <string>
+
+namespace orxonox
+{
+		/**
+	@brief
+    class containing core of one dialog with one npc
+
+    this class contains a map of all answerids to answers (player text options) and one of all questionids to questions (npc text options)
+    it realizes a state machine with the question beeing the states and the answers beeing the connections, it has a current state and
+    can be commanded to go to the next state according to a given answer
+	*/
+
+	class _DialogExport Dialog : public BaseObject
+	{
+		public:
+			Dialog(Context* context);
+
+			virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+			virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+
+			void setName(const std::string& name);	//xmlPort-Funktion, sets Namen
+			const std::string& getName() const;	//xmlPort-Funktion, returns Namen
+
+			void setCurrentQuestionId(const std::string& questionId);	//xmlPort-Funktion, sets string id of current question
+			const std::string& getCurrentQuestionId() const;	//xmlPort-Funktion, returns id of current question
+
+			void addQuestion(Question* question); //xmlPort-Funktion, adds question to map
+			const Question* getQuestion() const; //xmlPort-Funktion, returns nullptr
+
+			void addAnswer(Answer* answer); //xmlPort-Funktion, adds answer to map
+			const Answer* getAnswer(unsigned int index) const; //xmlPort-Funktion, returns nullptr
+
+			/**
+	        @brief
+	            returns a pointer to the array of answers belonging to the current question for use in dialogManager
+
+	        @return
+	            pointer to answerId array of question
+	        */
+			const std::vector<std::string>* getAnswerIds(); 
+
+			/**
+	        @brief
+	            function called when the trigger object defined in the xml file sets to triggered
+
+	        @param bTriggered
+	            needs to be set like this for correctness
+	        @param trigger
+	            needs to be set like this for correctness
+	        @return
+	           	not really used
+	        */
+	 		bool execute(bool bTriggered, BaseObject* trigger);
+
+	 		/**
+	        @brief
+	            updates the current Dialog according to the id of a given answer, by setting currentQuestionId to the next one
+
+	        @param givenAnswerId
+	        	id of the answer given by player
+	        */
+			void update(const std::string& givenAnswerId);
+
+			/**
+	        @brief
+	            tests if there is a next question for the given answerId
+
+	        @param givenAnswerId
+				id of the answer given by player
+	        @return
+	           	true if there is no more Question to the given answerId
+	        */
+			bool ending(const std::string& givenAnswerId);
+
+			/**
+	        @brief
+	            gives the text of the npc in the current state
+
+	        @return
+	           	sting with npc text
+	        */
+			const std::string& getQuestionString();
+
+			/**
+	        @brief
+	            returns a sting with the pc answer to the id 
+
+	        @param answerId
+	        	the id of the answer looked for
+	        @return
+	           	sting with answer
+	        */
+			const std::string& getAnswerString(std::string answerId);
+
+		private: 
+			std::string name_;	//!< name of the npc talking
+			std::string currentQuestionId_;	//!< id of the npc question currently active
+			std::map<std::string, Question*> questions_;	//!< a map form the ids of npc textoptions to the objects containing them
+			std::map<std::string, Answer*> answers_;	//!< a map form the ids of npc textoptions to the objects containing them
+	};
+}
+
+#endif
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.cc	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.cc	(revision 11747)
@@ -0,0 +1,62 @@
+#include "DialogManager.h"
+#include "core/CoreIncludes.h"
+#include "core/singleton/ScopedSingletonIncludes.h"
+#include <string>
+
+namespace orxonox {
+	ManageScopedSingleton(DialogManager, ScopeID::ROOT, false);
+	
+
+	
+	DialogManager::DialogManager()
+	{
+		this->currentTalk_ = nullptr;
+	}
+
+	void DialogManager::setDialog(Dialog* dialog)
+	{
+		this->currentTalk_ = dialog;
+		answerIds_ = currentTalk_->getAnswerIds();	
+	}
+
+	//from here onward funcionality for lua axports
+
+    std::string DialogManager::getQuestion()
+    {
+    	return this->currentTalk_->getQuestionString();
+    }
+
+    int DialogManager::getSize()
+    {   
+        return this->answerIds_->size();
+    }
+
+    std::string DialogManager::getAnswer(int index)
+    {
+    	return this->currentTalk_->getAnswerString(this->answerIds_->at(index));
+    }
+	
+    std::string DialogManager::getPerson()
+    {
+    	return this->currentTalk_->getName();
+    }
+
+    bool DialogManager::endtest(int index)
+    {   
+        if(this->answerIds_->empty())
+        {
+            return true;
+        }
+        else 
+        {
+            return this->currentTalk_->ending(this->answerIds_->at(index));
+        }
+
+    }
+
+    void DialogManager::update(int index)
+    {
+    	this->currentTalk_->update(answerIds_->at(index));
+    	answerIds_ = this->currentTalk_->getAnswerIds();
+    }
+}
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/DialogManager.h	(revision 11747)
@@ -0,0 +1,128 @@
+#ifndef _DialogManager_H__
+#define _DialogManager_H__
+
+#include "DialogPrereqs.h"
+#include "util/Singleton.h"
+#include "core/singleton/ScopedSingletonIncludes.h"
+#include "core/object/Listable.h"
+#include "Dialog.h"
+
+#include <string>
+
+namespace orxonox //tolua_export
+
+{//tolua_export
+
+    /**
+    @brief
+    this class is used for calling on a dialog form luascript
+
+    the class is the interface of dialog to lua, all lua functionallity is given by this class, it can be found by lua due to singleton definition
+
+    @todo 
+        reseting or setting new start for dialog on exit, to allow coming back to a npc
+        picture of person
+        parameters to differ dialog depending on some world values, like items, completed objectives etc...
+    */
+
+    class _OrxonoxExport DialogManager //tolua_export
+    : public Singleton<DialogManager>
+    {//tolua_export
+        friend class Singleton<DialogManager>;
+    
+        public:
+        
+        DialogManager(); 
+
+        /**
+        @brief
+            gives the pointer to the sigleton dialog manager to the lua script
+
+        @return
+            returns pointer
+        */
+
+        static DialogManager& getInstance() { return Singleton<DialogManager>::getInstance(); } //tolua_export
+
+        /**
+        @brief
+            allows to set the current dialog
+
+            this is used by a dialog when triggered to set its self to the current dialog
+
+        @param dialog
+            pointer to the dialog that wants to be current one
+        */
+        void setDialog(Dialog* dialog);
+
+        //from here on functions for lua interface
+
+        /**
+        @brief
+            gives the string of the momentary npc textoption
+
+        @return
+            string of npc text
+        */
+        std::string getQuestion(); //tolua_export
+
+        /**
+        @brief
+            function that returns size of answerid array
+
+        @return
+            returns number of possible answers to momentary questions, 0 if there are no player text options
+        */
+        int getSize(); //tolua_export
+
+        /**
+        @brief
+            returns the answer to the id that is at index in the array of answers
+
+        @param param1
+            index of desired answer
+
+        @return
+            string of answer
+        */
+        std::string getAnswer(int index); //tolua_export
+
+        /**
+        @brief
+            gives name of npc the player is currently talking to
+
+        @return
+            sting with name
+        */
+        std::string getPerson(); //tolua_export
+
+        /**
+        @brief
+            tests the dialog if there are any followup npc textoptions to the given answer or if there are no answers to the current question 
+
+        @return
+            true if the answer array of the question is empty or the next question id of the answer does not exist
+        */
+        bool endtest(int index); //tolua_export
+
+        /**
+        @brief
+            tells the dialog to update according to a given answer, if no answer is actively clicked the standard index is sett 0 in the lua
+            when called the current question of the dialog is set to the new one and the answerId vector is set accordingly 
+
+        @param param1
+            index of the answer given by the player
+
+        */
+        void update(int index); //tolua_export
+
+private:
+    static DialogManager* singletonPtr_s;   //!< a pointer to the single class object
+
+    Dialog* currentTalk_;   //!< pointer to the currently active dialog or last active if no one is currently active
+    const std::vector<std::string>* answerIds_; //!< pointer to the possible answerIds of the current question, for faster access
+
+    };//tolua_export
+}//tolua_export
+
+#endif /* _DialogManager_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/DialogPrereqs.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/DialogPrereqs.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/DialogPrereqs.h	(revision 11747)
@@ -0,0 +1,79 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Damian 'Mozork' Frick
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+@file
+@brief
+    Shared library macros, enums, constants and forward declarations for the questsystem module
+*/
+
+#ifndef _DialogPrereqs_H__
+#define _DialogPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(Dialog_STATIC_BUILD)
+#  ifdef Dialog_SHARED_BUILD
+#    define _DialogExport __declspec(dllexport)
+#  else
+#    if defined( __MINGW32__ )
+#      define _DialogExport
+#    else
+#      define _DialogExport __declspec(dllimport)
+#    endif
+#  endif
+#  define _DialogPrivate
+#elif defined (ORXONOX_GCC_VISIBILITY)
+#  define _DialogExport  __attribute__ ((visibility("default")))
+#  define _DialogPrivate __attribute__ ((visibility("hidden")))
+#else
+#  define _DialogExport
+#  define _DialogPrivate
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+
+    class DialogManager;
+    class Dialog;
+    class Answer;
+    class Question;
+    class AnswerId;
+   
+}
+
+#endif /* _DialogPrereqs_H__ */
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Question.cc
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Question.cc	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Question.cc	(revision 11747)
@@ -0,0 +1,59 @@
+#include "Question.h"
+#include "core/CoreIncludes.h"
+
+namespace orxonox
+{
+
+	RegisterClass(Question);
+
+	Question::Question(Context* context) : BaseObject(context)
+	{
+		RegisterObject(Question);
+	}
+
+	void Question::XMLPort(Element& xmlement, XMLPort::Mode mode)
+	{
+		SUPER(Question, XMLPort, xmlement, mode);
+
+		XMLPortParam(Question, "question", setQuestion, getQuestion, xmlement, mode);
+		XMLPortParam(Question, "Id", setQuestionId, getQuestionId, xmlement, mode);
+
+		XMLPortObject(Question, AnswerId, "answerIds", addAnswerId, getAnswerId, xmlement, mode);
+	}
+
+	void Question::setQuestionId(const std::string& Id)
+	{
+		this->questionId_ = Id;
+	}
+
+	const std::string& Question::getQuestionId() const
+	{
+		return this->questionId_;
+	}
+
+	void Question::setQuestion(const std::string& question)
+	{
+		this->question_ = question;
+	}
+
+	const std::string& Question::getQuestion() const
+	{
+		return this->question_;
+	}
+
+	void Question::addAnswerId(AnswerId* answerId)
+	{
+		this->answerIds_.push_back(answerId->getId());
+	}
+
+	const AnswerId* Question::getAnswerId() const
+	{
+		return nullptr;
+	}
+
+	const std::vector<std::string>* Question::getAnswerIds()
+	{
+		return &(this->answerIds_);
+	}
+	
+}
Index: code/branches/Presentation_HS17_merge/src/modules/dialog/Question.h
===================================================================
--- code/branches/Presentation_HS17_merge/src/modules/dialog/Question.h	(revision 11747)
+++ code/branches/Presentation_HS17_merge/src/modules/dialog/Question.h	(revision 11747)
@@ -0,0 +1,57 @@
+#ifndef _Question_H__
+#define _Question_H__
+
+#include "core/BaseObject.h"
+#include "DialogPrereqs.h"
+#include "AnswerId.h"
+#include "core/XMLPort.h"
+#include "core/CoreIncludes.h"
+
+
+#include <string>
+
+namespace orxonox
+{
+
+	/**
+	@brief
+    class containing the npc side of the Dialog
+
+    this class contains one possible text option of the npc, it's id and the ids of possible player reactions (answers)
+	*/
+
+	class _DialogExport Question : public BaseObject
+	{
+		public:
+			Question(Context* context);
+
+			virtual void XMLPort(Element& xmelement, XMLPort::Mode mode);
+
+			void setQuestionId(const std::string& Id);	//xmlPort-Funktion, setzt Id
+			const std::string& getQuestionId() const;	//xmlPort-Funktion, gibt Id string zuruek
+
+			void setQuestion(const std::string& question);	//xmlPort-Funktion, setzt Fragen string
+			const std::string& getQuestion() const;	//xmlPort-Funktion, gibt Fragen string
+
+			void addAnswerId(AnswerId* answerId); 	//xmlPort-Funktion, nimmt AnswerIds von entsprechenden Objekten und fuegt sie in List ein.
+			const AnswerId* getAnswerId() const;	//xmlPort-Funktion, gibt nichts zuruek
+
+			/**
+	        @brief
+	            gives pointer to possivle answerIds of this question
+
+	        @return
+	           	returns pointer to the array with ids of possible pc textoptions
+	        */
+			const std::vector<std::string>* getAnswerIds(); //returnt Pointer auf Vektor mit allen Ids
+
+
+
+		private: 	
+			std::string questionId_;	//!< id of npc textoption	
+			std::string question_;	//!< string with npc text
+			std::vector<std::string> answerIds_;	//!< vector with possible player reactions
+	};
+}
+
+#endif
