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;
