Wrapper fuer ReceiveMsg()
Da die Wrapper im /std/room thematisch nirgendwo hin passten, wurde
/std/room/comm.c neu erstellt und ReceiveMsg() aus /std/room/items.c
dort hin verlegt.
Die lfun _notify() ist durch SendNotify() ueberfluessig und wurde
ersetzt.
Change-Id: Ia42d131228963cbf8023f6b1563c38f65a38bd63
diff --git a/doc/sphinx/lfun/ReceiveSay.rst b/doc/sphinx/lfun/ReceiveSay.rst
new file mode 100644
index 0000000..33ceee1
--- /dev/null
+++ b/doc/sphinx/lfun/ReceiveSay.rst
@@ -0,0 +1,92 @@
+ReceiveSay()
+============
+
+FUNKTION
+--------
+
+ public int* ReceiveSay(string msg, string prefix = 0,
+ struct msg_s sense_blocked =
+ ({(<msg_s>
+ msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
+ type: MT_LOOK)}))
+
+DEFINIERT IN
+------------
+
+ /std/living/comm.c
+ /std/room/comm.c
+ /sys/living/comm.h
+
+ARGUMENTE
+---------
+
+ string msg
+ Die auszugebende Meldung. Sie wird vor der Ausgabe an
+ :doc:`../sefun/replace_personal` uebergeben, als erstes Objekt wird das aufrufende
+ Objekt uebergeben, als zweites this_player(), sofern vorhanden. msg wird
+ automatisch auf 78 Zeichen umgebrochen, vorhandene Zeilenumbrueche werden
+ dabei beibehalten.
+ string prefix
+ prefix wird als prefix an :doc:`ReceiveMsg` weitergegeben. Eine
+ Ersetzung mittels :doc:`replace_personal` findet nicht statt.
+ Wird kein Wert uebergeben, wird
+ previous_object().Name(WER, 1) + " sagt: " verwendet. Hierzu muss Name()
+ am aufrufenden Objekt definiert sein und etwas sinnvolles zurueckgeben.
+ struct msg_s sense_blocked
+ Ersatzmeldungen fuer taube Spieler. enthaelt Structs vom Typ msg_s.
+ Dieser ist in /std/living/comm_structs.c definiert und enthaelt die
+ Eintraege string msg, int type, string prefix.
+ Das Array wird von vorne nach hinten
+ abgearbeitet, bis eine Nachricht zugestellt werden konnte oder das Ende
+ erreicht ist. Auch hier findet fuer msg eine Ersetzung mittels
+ :doc:`../sefun/replace_personal` statt, fuer prefix nicht.
+
+BESCHREIBUNG
+------------
+
+ Sendet msg per :doc:`ReceiveMsg` mit den ueblichen Argumenten von
+ "sage" an den Empfaenger. D.h.: MT_LISTEN, MA_SAY, Name(WER, 1) + " sagt: ". Hierzu
+ muss das aufrufende Objekt :doc:`name` definiert haben und dort
+ etwas sinnvolles zurueckgeben. Falls ein anderer prefix gewaehlt wurde,
+ wird dieser statt Name(WER, 1) " sagt: " verwendet.
+
+RUECKGABEWERT
+-------------
+
+ Ein Integer-Array mit folgenden Werten:
+
+ 0
+ Der Rueckgabewert von :doc:`../lfun/ReceiveMsg`.
+ 1
+ Information, welche Meldung zugestellt wurde. -1 steht fuer msg, ein wert
+ >= 0 fuer die jeweilige Position in sense_blocked.
+
+ Raeume definieren standardmaessig ebenfalls ein ReceiveSay(), welches in
+ jedem Objekt im Raum ReceiveSay() mit den uebergebenen Argumenten aufruft.
+ In diesem Fall ist der Rueckgabe der kleinste von allen gerufenen
+ ReceiveSay() zurueckgelieferte Wert.
+
+BEISPIEL
+--------
+
+ .. code-block:: pike
+
+ SetProp(P_NAME, "Questgeber");
+ SetProp(P_GENDER, MALE);
+ this_player().ReceiveSay(
+ "Das hast Du prima gemacht, @WER2!",
+ Name(WER, 1) + " lobt Dich: ",
+ ({
+ (<message_>
+ msg: "@WER1 nickt Dir laechelnd zu.",
+ type: MT_LOOK),
+ (<msg_s>
+ msg: "Jemand klopft Dir lobend auf die Schulter.",
+ type: MT_FEEL)}));
+
+SIEHE AUCH
+----------
+
+ :doc:`ReceiveMsg`, :doc:`../sefun/replace_personal`, :doc:`name`
+
+Letzte Aenderung: 07.10.2021, Bugfix