Index: /code/branches/ai2/data/levels/missionOne.oxw
===================================================================
--- /code/branches/ai2/data/levels/missionOne.oxw	(revision 8820)
+++ /code/branches/ai2/data/levels/missionOne.oxw	(revision 8821)
@@ -105,5 +105,5 @@
     </SimpleNotification>
 
-    <SimpleNotification message="Right click on the next target.">
+    <SimpleNotification message="Right click on the next target." meh="true">
         <events>
             <trigger>
@@ -116,5 +116,5 @@
 <!-- BRIEFING END--> 
 <!-- TODO: does NOT work. Intended effect: pawn death causes message to appear (and probably the next box) -->
-  <SimpleNotification message="Right click on the next target.">
+  <SimpleNotification message="Right click on the next target." meh="true">
         <events>
             <trigger>
Index: /code/branches/ai2/src/modules/notifications/NotificationDispatcher.cc
===================================================================
--- /code/branches/ai2/src/modules/notifications/NotificationDispatcher.cc	(revision 8820)
+++ /code/branches/ai2/src/modules/notifications/NotificationDispatcher.cc	(revision 8821)
@@ -50,4 +50,5 @@
     CreateUnloadableFactory(NotificationDispatcher);
 
+    registerMemberNetworkFunction(NotificationDispatcher, broadcastHelper);
     registerMemberNetworkFunction(NotificationDispatcher, dispatch);
 
@@ -61,4 +62,5 @@
 
         this->sender_ = NotificationListener::NONE;
+        this->bBroadcast_ = false;
         this->registerVariables();
     }
@@ -81,7 +83,8 @@
         SUPER(NotificationDispatcher, XMLPort, xmlelement, mode);
 
-        XMLPortParam(NotificationDispatcher, "sender", getSender, setSender, xmlelement, mode);
-        
-        XMLPortEventSink(NotificationDispatcher, BaseObject, "trigger", trigger, xmlelement, mode); //TODO: Change BaseObject to MultiTrigger as soon as MultiTrigger is the base of all triggers.
+        XMLPortParam(NotificationDispatcher, "sender", setSender, getSender, xmlelement, mode);
+        XMLPortParam(NotificationDispatcher, "meh", setBroadcasting, isBroadcasting, xmlelement, mode);
+
+        XMLPortEventSink(NotificationDispatcher, BaseObject, "trigger", trigger, xmlelement, mode);
     }
 
@@ -100,4 +103,31 @@
     {
         registerVariable(this->sender_, VariableDirection::ToClient);
+    }
+
+    /**
+    @brief
+        Broadcasts a specific Notification.
+    */
+    void NotificationDispatcher::broadcast(void)
+    {
+        COUT(0) << "meh" << endl;
+        // TODO: Needed?
+        const std::string message = this->createNotificationMessage();
+        NotificationListener::sendNotification(message, this->getSender(), notificationMessageType::info, notificationSendMode::local);
+
+        // Broadcast
+        if(!GameMode::isStandalone())
+        {
+            callMemberNetworkFunction(NotificationDispatcher, broadcastHelper, this->getObjectID(), NETWORK_PEER_ID_BROADCAST);
+        }
+    }
+
+    /**
+    @brief
+        Helper function for broadcast.
+    */
+    void NotificationDispatcher::broadcastHelper(void)
+    {
+        this->dispatch(Host::getPlayerID());
     }
 
@@ -110,5 +140,6 @@
     void NotificationDispatcher::dispatch(unsigned int clientId)
     {
-        if(GameMode::isStandalone() || Host::getPlayerID() == clientId || this->getSyncMode() == 0x0)
+        // We don't call sendNotification() directly on the server, because if might be necessary that createNotificationMessage() is executed on the client as the message may be client-specific.
+        if(GameMode::isStandalone() || Host::getPlayerID() == clientId || this->getSyncMode() == ObjectDirection::None)
         {
             const std::string message = this->createNotificationMessage();
@@ -139,4 +170,11 @@
         COUT(4) << "NotificationDispatcher (&" << this << ") triggered." << std::endl;
 
+        // If the NotificationDispatcher is set to broadcast.
+        if(this->isBroadcasting())
+        {
+            this->broadcast();
+            return true;
+        }
+
         PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
         PlayerInfo* player = NULL;
Index: /code/branches/ai2/src/modules/notifications/NotificationDispatcher.h
===================================================================
--- /code/branches/ai2/src/modules/notifications/NotificationDispatcher.h	(revision 8820)
+++ /code/branches/ai2/src/modules/notifications/NotificationDispatcher.h	(revision 8821)
@@ -50,5 +50,7 @@
         A NotificationDispatcher is an entity that, upon being triggered, dispatches (or sends) a specified @ref orxonox::Notification "Notification".
 
-        There is one parameter to be set, the @b sender . The sender specifies the part of Orxonox the sent @ref orxonox::Notification "Notification" comes from. The default value is set by the classes implementing NotificationDispatcher.
+        There ate two parameter to be set:
+        - The @b sender . The sender specifies the part of Orxonox the sent @ref orxonox::Notification "Notification" comes from. The default value is set by the classes implementing NotificationDispatcher.
+        - The @b broadcast . Specifies whether messages are broadcast (i.e. sent to all clients) or just sent to a specific player.
 
         Its standard usage is:
@@ -62,5 +64,7 @@
         </NotificationDispatcher>
         @endcode
-        But keep in mind, that NotificationDispatcher is an abstract class and in this example @ref orxonox::PlayerTrigger "PlayerTrigger" stands for any event that is caused by a @ref orxonox::PlayerTrigger "PlayerTrigger", so instead of @ref orxonox::PlayerTrigger "PlayerTrigger", there could be a @ref orxonox::DistanceTrigger "DistanceTrigger", or a @ref orxonox::DistanceMultiTrigger "DistanceMutliTrigger", or even an @ref orxonox::EventListener "EventListener" that waits for an event coming from any kind of @ref orxonox::PlayerTrigger "PlayerTrigger".
+        But keep in mind, that NotificationDispatcher is an abstract class.
+        Also in this example @ref orxonox::PlayerTrigger "PlayerTrigger" stands for any event that is caused by a @ref orxonox::PlayerTrigger "PlayerTrigger", so instead of @ref orxonox::PlayerTrigger "PlayerTrigger", there could be a @ref orxonox::DistanceTrigger "DistanceTrigger", or a @ref orxonox::DistanceMultiTrigger "DistanceMutliTrigger", or even an @ref orxonox::EventListener "EventListener" that waits for an event coming from any kind of @ref orxonox::PlayerTrigger "PlayerTrigger".
+        If the NotificationDispatcher is not set to broadcast only events caused by @ref orxonox::PlayerTrigger "PlayerTriggers" trigger a message since the information obtained by the @ref orxonox::PlayerTrigger "PlayerTrigger" is used to identify the client to which the message should be sent.
 
     @author
@@ -84,5 +88,5 @@
             const std::string& getSender(void) const
                 { return this->sender_; }
-                        /**
+            /**
             @brief Set the sender of the Notification dispatched by this NotificationDispatcher.
             @param sender The name of the sender.
@@ -91,9 +95,25 @@
                 { this->sender_ = sender; }
 
-            void dispatch(unsigned int clientId); //!< Dispatches a specific Notification.
+            /**
+            @brief Check whether the NotificationDispatcher is set to broadcast.
+            @return Returns true if the NotificationDispatcher is set to broadcast.
+            */
+            bool isBroadcasting(void) const
+                { return this->bBroadcast_; }
+            /**
+            @brief Set the NotificationDispatcher to broadcast.
+            @param broadcast Whether the NotificationDispatcher is set to broadcast or singlecast.
+            */
+            void setBroadcasting(bool v)
+                { this->bBroadcast_ = v; }
+
+            void broadcast(void); //!< Broadcasts a specific Notification.
+            void broadcastHelper(void); //!< Helper function for broadcast.
+            void dispatch(unsigned int clientId); //!< Dispatches a specific Notification to a given client.
             bool trigger(bool triggered, BaseObject* trigger); //!< Is called when the NotificationDispatcher is triggered.
 
         protected:
             std::string sender_; //!< The name of the sender of the Notification dispatched by this NotificationDispatcher.
+            bool bBroadcast_; //!< Whether the NotificationDispatcher is broadcasting.
 
             void registerVariables(void); //!< Register some variables for synchronisation.
@@ -105,5 +125,5 @@
             */
             virtual const std::string& createNotificationMessage(void)
-                { return *(new std::string("")); }
+                { return BLANKSTRING; }
 
     };
