Wrapper fuer ReceiveMsg() ueberarbeitet

1) Rueckgabewerte in Containern entfallen
Diese muessten ein (tief) geschachteltes Mapping sein, was vermutlich
niemand mehr auswertet.
2) Alternativen nur versuchen, solange der Fehler von ReceiveMsg()
MSG_SENSE_BLOCK ist - alle anderen Fehler sind sehr wahrscheinlich
"permanent" fuer die Dauer des Aufrufs.
3) Rueckgabewert in Livings geaendert
Der Rueckgabe ist jetzt der Rueckgabewert von ReceiveMsg() fuer die
zuletzt versuchte Meldung. Dies ermoeglicht die Feststellung, dass eine
Meldung zugestellt wurde (wenn auch nicht welche), was das ist, was
die meisten Aufrufer interessieren duerfte. Gleichzeitig ist der Wert
jetzt einfacher auszuwerten.
4) Manpages umstrukturiert und -formuliert
5) ReceiveSay() nur noch Spezialfall von ReceiveMultiSense()

Change-Id: Id9dbe227236f07b577be2626c99a13ff89fd7997
diff --git a/std/room/comm.c b/std/room/comm.c
index ae57bbe..664fb9b 100644
--- a/std/room/comm.c
+++ b/std/room/comm.c
@@ -2,49 +2,35 @@
 #pragma no_clone
 
 #include <thing/language.h>
+#include <living/comm.h>
 
 // Per Default nur an alle Items im Inventar weiterleiten.
-public varargs int ReceiveMsg(string msg, int msg_type, string msg_action,
+public varargs void ReceiveMsg(string msg, int msg_type, string msg_action,
                               string msg_prefix, object origin)
 {
-  int *res = ({int*})all_inventory()->ReceiveMsg(msg, msg_type, msg_action,
-                                         msg_prefix,
-                                         origin || previous_object());
-  if (sizeof(res))
-    return min(res);
-  return 0;
-}
-
-// Sortierfunktion um das Array mit dem kleinsten Wert auszugeben
-
-private int* _minarr(int** arr)
-{
-  if(!sizeof(arr)) return 0;
-  return sort_array(&arr,
-    function int(int* a, int* b)
-    {
-      return a[0] > b[0];
-    })[0];
+  all_inventory()->ReceiveMsg(msg, msg_type, msg_action,
+                              msg_prefix, origin || previous_object());
 }
 
 // Wrapper fuer ReceiveMsg()
 
-public varargs int* ReceiveSay(string msg, string prefix,
-  struct wave_s sense_blocked)
+public void ReceiveMultiSense(struct wave_s *msgs, string action=0,
+    int commontypes=0)
 {
-  // Das muss schon hier passieren, damit previous_object() stimmt
-  if(!prefix)
-  {
-    prefix = ({string})previous_object().Name(WER, 1) + " sagt: ";
-  }
-
-  int** res = ({int**})all_inventory()->ReceiveSay(msg, prefix, sense_blocked);
-  return _minarr(res);
+  all_inventory()->ReceiveMultisense(msgs, action, commontypes);
 }
 
-public varargs int* ReceiveMultisense(struct wave_s msgs,
-  string action, int commontypes)
+public void ReceiveSay(string msg,
+    string prefix = ({string})previous_object().Name(WER, 1) + " sagt: ",
+    struct wave_s *alt =
+        ({(<wave_s>
+            msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
+            type: MT_LOOK)})
+    )
 {
-  int** res = ({int**})all_inventory()->ReceiveMultisense(msgs, action, commontypes);
-  return _minarr(res);
+  // Nachricht in struct konvertieren, ans Anfang vom Array stellen
+  alt = ({(<wave_s> msg: msg, prefix: prefix, type: MT_LISTEN)}) + alt;
+  // Rest macht ReceiveMultiSense()
+  ReceiveMultiSense(alt, MA_SAY, MSG_BS_LEAVE_LFS);
 }
+