diff --git a/doc/lfun/ReceiveSay b/doc/lfun/ReceiveSay
new file mode 100644
index 0000000..41eee81
--- /dev/null
+++ b/doc/lfun/ReceiveSay
@@ -0,0 +1,118 @@
+ReceiveSay()
+************
+
+
+FUNKTION
+========
+
+   public void ReceiveSay(string msg, string prefix =
+   previous_object().Name(WER, 1) + " sagt: ",
+      struct msg_s sense_blocked =
+         ({(<wave_s>
+            msg: "@WER1 bewegt die Lippen, Du hoerst jedoch nichts.",
+            type: MT_LOOK)}))
+
+
+DEFINIERT IN
+============
+
+   /std/living/comm.c /std/room/comm.c
+
+
+ARGUMENTE
+=========
+
+   string msg
+      Die auszugebende Meldung.
+
+   string prefix
+      prefix wird als prefix an ReceiveMsg() weitergegeben. Wird kein
+      Wert uebergeben, wird "previous_object().Name(WER, 1) + " sagt:
+      "" verwendet.
+
+   struct wave_s *alt
+      Ersatzmeldungen, falls das Lebewesen die Meldung aufgrund eines
+      blockierten Sinns nicht wahrnehmen kann. Details siehe unten.
+
+
+BESCHREIBUNG
+============
+
+   Sendet msg per 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 *Name* definiert haben
+   und dort etwas sinnvolles zurueckgeben. Falls ein anderer Praefix
+   gewaehlt wurde, wird dieser statt "Name(WER, 1)  " sagt: ""
+   verwendet.
+
+   <msg> wird vor der Ausgabe an 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.
+
+   Falls der Empfaenger eine Nachricht aufgrund eines blockierten
+   Sinns nicht empfangen kann (und **nur** dann), wird versucht,
+   alternative Nachrichten aus dem Array <alt> zuzustellen. Dieses
+   Array enthaelt structs vom Typ wave_s. Das Array wird von vorne
+   nach hinten abgearbeitet, bis eine Nachricht erfolgreich zugestellt
+   werden konnte, das Ende erreicht ist oder eine Nachricht *aus
+   anderen Gruenden* als einem blockierten Sinn abgelehnt wurde. Der
+   Grund fuer letzteres ist, dass andere Fehler von ReceiveMsg()
+   (fast) immer auch bei allen (weiteren) Alternativen auftreten
+   werden. wave_s ist in /secure/simul_efun/comm.c definiert und
+   enthaelt die Eintraege string msg, int type, string prefix. In
+   <alt> ist der Default fuer wave_s.prefix 0! Auch hier findet fuer
+   wave_s.msg eine Ersetzung mittels replace_personal() statt, fuer
+   wave_s.prefix nicht.
+
+
+RUECKGABEWERT
+=============
+
+
+in Lebewesen
+------------
+
+   Der Rueckgabe ist der Rueckgabewert von ReceiveMsg() fuer die
+   zuletzt versuchte Meldung.
+
+   Wenn dies einen Erfolg (MSG_DELIVERED, MSG_BUFFERED) darstellt,
+   wurde irgendeine Meldung erfolgreich zugestellt. Falls es
+   MSG_SENSE_BLOCK ist, sind alle versuchten Sinne blockiert und keine
+   Nachricht wurde zugestellt. Ist es ein anderer Fehler ist, wurde
+   keine Nachricht zugestellt (und ggf. nicht alle aus <alt>
+   versucht).
+
+
+in Containern/Raeumen
+---------------------
+
+   Die Funktion hat keinen Rueckgabewert. Der Grund hierfuer ist, dass
+   dieser ein ggf. tief verschachteltes Mapping waere, was keiner mehr
+   prueft.
+
+
+BEISPIEL
+========
+
+   SetProp(P_NAME, "Questgeber"); SetProp(P_GENDER, MALE);
+   this_player().ReceiveSay(
+
+      "Das hast Du prima gemacht, @WER2!", Name(WER, 1) + " lobt Dich:
+      ", ({
+
+         (<wave_s>
+            msg: "@WER1 nickt Dir laechelnd zu.", type: MT_LOOK),
+
+         (<wave_s>
+            msg: "Jemand klopft Dir lobend auf die Schulter.", type:
+            MT_FEEL)}));
+
+
+SIEHE AUCH
+==========
+
+   ReceiveMsg(), replace_personal(), *Name*
+
+Letzte Aenderung: 21.09.2022, Zesstra
