diff --git a/std/player/channel.c b/std/player/channel.c
index 0ecefc2..b5db1ae 100644
--- a/std/player/channel.c
+++ b/std/player/channel.c
@@ -241,7 +241,7 @@
     // Ignorierepruefung funktioniert. Die ignorierestrings sind naemlich alle
     // kleingeschrieben.
     ReceiveMsg(channel_message,
-               MT_COMM|MT_FAR|MSG_DONT_STORE|MSG_DONT_WRAP,
+               MT_COMM|MT_FAR|MSG_DONT_STORE|MSG_DONT_WRAP|MSG_ALERT,
                MA_CHANNEL"." + lower_case(channel), 0, sender);
   }
   return 0;
diff --git a/std/player/comm.c b/std/player/comm.c
index eadc6bc..0d5471d 100644
--- a/std/player/comm.c
+++ b/std/player/comm.c
@@ -1121,7 +1121,7 @@
 
   // an alles im Raum senden. (MT_LISTEN, weil dies gesprochene Kommunikation
   // ist, keine MT_COMM)
-  send_room(environment(), msg, MT_LISTEN, MA_SAY,
+  send_room(environment(), msg, MT_LISTEN|MSG_ALERT, MA_SAY,
             capitalize(myname)+" sagt: ", ({this_object()}) );
 
   if(!silent)
@@ -1184,15 +1184,15 @@
   }
 
   ReceiveMsg(wizards_msg, MT_NOTIFICATION|MSG_DONT_IGNORE|MSG_DONT_STORE,
-             "rufe", "Du rufst: ", ME);
+             MA_SHOUT, "Du rufst: ", ME);
 
   foreach ( object ob : users()-({this_object()}) )
     if ( IS_LEARNER(ob) )
-      ob->ReceiveMsg(wizards_msg, MT_LISTEN|MT_FAR, MA_SHOUT, wizard_prefix,
-                    this_object());
+      ob->ReceiveMsg(wizards_msg, MT_LISTEN|MT_FAR|MSG_ALERT, MA_SHOUT,
+                     wizard_prefix, this_object());
     else
-      ob->ReceiveMsg(players_msg, MT_LISTEN|MT_FAR, MA_SHOUT, player_prefix,
-                    this_object());
+      ob->ReceiveMsg(players_msg, MT_LISTEN|MT_FAR|MSG_ALERT, MA_SHOUT,
+                     player_prefix, this_object());
 
   return 1;
 }
@@ -1237,7 +1237,7 @@
 
   xname = explode(who, "@");
 
-  if (sizeof(xname) == 2) 
+  if (sizeof(xname) == 2)
   {
     if ( QueryProp(P_QP) )
     {
@@ -1294,7 +1294,7 @@
               QueryProp(P_PRESAY):"") + capitalize(getuid(ME));
   if (myname && sizeof(myname)) myname=capitalize(myname);
   // erstmal an Empfaenger senden
-  _send(ob, permutate(msg), MT_COMM|MT_FAR, MA_TELL,
+  _send(ob, permutate(msg), MT_COMM|MT_FAR|MSG_ALERT, MA_TELL,
         myname + " teilt Dir mit: ");
 
   // dann evtl. noch an Absender ausgeben...
@@ -1437,8 +1437,8 @@
       QueryProp(P_PRESAY) : "") + name()) || "");
 
   // An Empfaenger senden.
-  _send(ob, permutate(msg), MT_COMM|MT_FAR|MSG_DONT_STORE, MA_EMOTE,
-         myname + " fluestert Dir aus der Ferne zu: ");
+  _send(ob, permutate(msg), MT_COMM|MT_FAR|MSG_DONT_STORE,
+        MA_EMOTE, myname + " fluestert Dir aus der Ferne zu: ");
 
   // wenn Empfaenger invis und wir kein Magier , ggf. fakefehler ausgeben.
   if (ob->QueryProp(P_INVIS) && !IS_LEARNER(this_player())) {
@@ -1496,7 +1496,7 @@
 
   // mrufe ist nicht ignorierbar, da es nur fuer schwere Probleme gedacht ist.
   filter(users(), #'is_learner)->ReceiveMsg(str,
-      MT_COMM|MT_FAR|MSG_DONT_IGNORE|MSG_DONT_STORE,
+      MT_COMM|MT_FAR|MSG_DONT_IGNORE|MSG_DONT_STORE|MSG_ALERT,
       MA_SHOUT, myname+" an alle Magier: ", this_object());
 
   return 1;
