Index: /code/branches/questsystem3/src/orxonox/objects/quest/QuestDescription.cc
===================================================================
--- /code/branches/questsystem3/src/orxonox/objects/quest/QuestDescription.cc	(revision 2348)
+++ /code/branches/questsystem3/src/orxonox/objects/quest/QuestDescription.cc	(revision 2349)
@@ -129,5 +129,5 @@
         }
         
-        Notification* notification = new Notification(message, title, 10);
+        Notification* notification = new Notification(message, title, 30);
         notification->send();
         return true;
Index: /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.cc
===================================================================
--- /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2348)
+++ /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.cc	(revision 2349)
@@ -91,5 +91,5 @@
         SUPER(QuestEffectBeacon, processEvent, event);
     
-    SetSubclassEvent(QuestEffectBeacon, "execute", execute, event, PlayerTrigger);
+        SetSubclassEvent(QuestEffectBeacon, "execute", execute, event, PlayerTrigger);
     }
     
@@ -167,6 +167,6 @@
         if(activate)
         {
-        this->status_ = QuestEffectBeaconStatus::active;
-        return true;
+	    this->status_ = QuestEffectBeaconStatus::active;
+	    return true;
         }
         
@@ -193,9 +193,9 @@
         
         this->times_ = this->times_ - 1; //!< Decrement number of times the QuestEffectBeacon can be executed.
-    if(this->getTimes() == 0) //!< Set the QuestEffectBeacon to inactive when the number of times it can be executed is reduced to 0.
-    {
-            this->status_ = QuestEffectBeaconStatus::inactive;
-    }
-        
+	if(this->getTimes() == 0) //!< Set the QuestEffectBeacon to inactive when the number of times it can be executed is reduced to 0.
+	{
+		this->status_ = QuestEffectBeaconStatus::inactive;
+	}
+	    
         return true;
     }
Index: /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.h
===================================================================
--- /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2348)
+++ /code/branches/questsystem3/src/orxonox/objects/quest/QuestEffectBeacon.h	(revision 2349)
@@ -64,10 +64,10 @@
     
     <QuestEffectBeacon times=n> //Where 'n' is eighter a number >= 0, which means the QuestEffectBeacon can be executed n times. Or n = -1, which means the QuestEffectBeacon can be executed an infinite number of times.
-            <effects>
-                <QuestEffect /> //A list of QuestEffects, invoked when the QuestEffectBeacon is executed, see QuestEffect for the full XML representation.
-                ...
-                <QuestEffect />
-            </effects>
-            <events>
+	<effects>
+	    <QuestEffect /> //A list of QuestEffects, invoked when the QuestEffectBeacon is executed, see QuestEffect for the full XML representation.
+	    ...
+	    <QuestEffect />
+	</effects>
+	<events>
         <execute>
             <EventListener event=eventIdString />
@@ -103,24 +103,24 @@
         
     protected:
-            bool decrementTimes(void); //!< Decrement the number of times the QuestEffectBeacon can still be executed.
-            
-            /**
-            @brief Returns the number of times the QUestEffectBeacon can still be executed.
-            @return Returns the number of times the QUestEffectBeacon can still be executed.
-            */
-            inline const int & getTimes(void) const
-                { return this->times_; }
+	bool decrementTimes(void); //!< Decrement the number of times the QuestEffectBeacon can still be executed.
+	
+	/**
+	@brief Returns the number of times the QUestEffectBeacon can still be executed.
+	@return Returns the number of times the QUestEffectBeacon can still be executed.
+	*/
+	inline const int & getTimes(void) const
+	    { return this->times_; }
 
-        private:
-            static const int INFINITE = -1; //!< Constant to avoid using magic numbers.
-        
-            std::list<QuestEffect*> effects_; //!< The list of QuestEffects to be invoked on the executing player.
-            int times_; //!< Number of times the beacon can be exectued.
-            QuestEffectBeaconStatus::Enum status_; //!< The status of the QUestEffectBeacon, Can be eighter active or inactive.
-            
-            bool setTimes(const int & n); //!< Set the number of times the QuestEffectBeacon can be executed.
-            bool addEffect(QuestEffect* effect); //!< Add a QuestEffect to the QuestEffectBeacon.
-            
-            const QuestEffect* getEffect(unsigned int index) const; //!< Get the QuestEffect at a given index.
+    private:
+	static const int INFINITE = -1; //!< Constant to avoid using magic numbers.
+    
+	std::list<QuestEffect*> effects_; //!< The list of QuestEffects to be invoked on the executing player.
+	int times_; //!< Number of times the beacon can be exectued.
+	QuestEffectBeaconStatus::Enum status_; //!< The status of the QUestEffectBeacon, Can be eighter active or inactive.
+	
+	bool setTimes(const int & n); //!< Set the number of times the QuestEffectBeacon can be executed.
+	bool addEffect(QuestEffect* effect); //!< Add a QuestEffect to the QuestEffectBeacon.
+	
+	const QuestEffect* getEffect(unsigned int index) const; //!< Get the QuestEffect at a given index.
     
     };
Index: /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.cc
===================================================================
--- /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.cc	(revision 2348)
+++ /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.cc	(revision 2349)
@@ -104,5 +104,5 @@
                 continue;
             
-	    text = text + "\n\n\n------------\n\n" + container->notification->getTitle() + "\n\n" + container->notification->getMessage();
+	    text = text + "\n\n\n------------\n\n" + clipMessage(container->notification->getTitle()) + "\n\n" + clipMessage(container->notification->getMessage());
         }
         
@@ -110,12 +110,21 @@
     }
     
-    const std::string & NotificationManager::clipMessage(const std::string & message)
+    const std::string NotificationManager::clipMessage(const std::string & str)
     {
-        std::string* clippedMessageP = new std::string();
-        std::string clippedMessage = *clippedMessageP;
-        clippedMessage = "";
-        std::string tempWord = "";
+    
+        std::string message = str;
+        unsigned int i = 0;
+        
+        unsigned int found = message.find("\\n", i);
+        while(found != std::string::npos)
+        {
+            message.replace(found, 2, "\n");
+            i = found+2;
+            found = message.find("\\n", i);
+        }
+    
+        std::string clippedMessage = "";
         int wordLength = 0;
-        signed int i = 0;
+        i = 0;
         int widthLeft = NotificationQueue::queue_s->getWidth();
         while(i < message.length())
@@ -123,5 +132,4 @@
             while(i < message.length() && message[i] != ' ' && message[i] != '\n')
             {
-                tempWord = tempWord + message[i];
                 i++;
                 wordLength++;
@@ -130,17 +138,28 @@
             if(wordLength <= widthLeft)
             {
-                clippedMessage = clippedMessage + tempWord + message[i];
+                clippedMessage = clippedMessage + message.substr(i-wordLength, wordLength);
+                if(i < message.length())
+                {
+                    clippedMessage = clippedMessage + message.substr(i,1);
+                }
                 widthLeft -= (wordLength+1);
+                if(message[i] == '\n')
+                {
+                    widthLeft = NotificationQueue::queue_s->getWidth() - (wordLength+1);
+                }
                 wordLength = 0;
-                tempWord = "";
                 i++;
             }
             else
             {
-                clippedMessage = clippedMessage + '\n' + tempWord + message[i];
+                clippedMessage.push_back('\n');
+                clippedMessage = clippedMessage + message.substr(i-wordLength, wordLength);
+                if(i < message.length())
+                {
+                    clippedMessage = clippedMessage + message.substr(i,1);
+                }
                 widthLeft = NotificationQueue::queue_s->getWidth() - (wordLength+1);
                 i++;
                 wordLength = 0;
-                tempWord = "";
             }
         }
Index: /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.h
===================================================================
--- /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.h	(revision 2348)
+++ /code/branches/questsystem3/src/orxonox/overlays/notifications/NotificationManager.h	(revision 2349)
@@ -66,5 +66,5 @@
             
             static void updateQueue(void);
-            static const std::string & clipMessage(const std::string & message);
+            static const std::string clipMessage(const std::string & message);
 
     };
