diff --git a/doc/sphinx/lfun/ReceiveDynWave.rst b/doc/sphinx/lfun/ReceiveDynWave.rst
new file mode 100644
index 0000000..567836b
--- /dev/null
+++ b/doc/sphinx/lfun/ReceiveDynWave.rst
@@ -0,0 +1,63 @@
+ReceiveWave()
+=============
+
+FUNKTION
+--------
+
+  public int ReceiveDynWave(struct wave_s wave, string msg_action = comm_guess_action(), object origin = previous_object());
+
+DEFINIERT IN
+------------
+
+  /std/living/comm.c
+
+ARGUMENTE
+---------
+
+  struct wave_s* wave
+    Die auszugebende Nachrichten mit Zusatzinformationen. (s.u.)
+  string action
+    action wird als <action> an ReceiveMsg() weitergegeben
+  object origin
+    Absenderobjekt der Nachricht (Default: previous_object())
+
+BESCHREIBUNG
+------------
+
+  Sendet die in <wave> angegebene Nachricht an den Empfaenger.
+
+  Im Unterschied zu ReceiveWave() wird ein Variable namens cl in <wave> vorher ausgewertet und kann dynamisch eine neue/geaenderte <wave> liefern, welche dann ausgegeben wird.
+
+  Hierbei ist <wave> also eine von wave_s erbende struct, welche (mindestens) eine Variable <cl> vom Typ closure zusaetzlich besitzt.
+
+RUECKGABEWERT
+-------------
+
+  Der Rueckgabe ist der Rueckgabewert von ReceiveMsg().
+
+BEISPIEL
+--------
+
+  .. code-block:: pike
+
+  // von wave_s abgeleitete struct
+  struct dynwave_s (wave_s) {
+      closure cl;
+  }
+  struct dynwave_s wave = (<dynwave_s> msg: "Pass auf! Ein boeser, schwarzer Drache!",
+                            type: MT_LISTEN, prefix: "Humni ruft: ");
+  wave.cl = function struct wave_s (struct wave_s wave)
+    { wave.prefix = ({"Humni","Jof","Zook"})[random(3)] + " ruft: ";
+      return wave;
+    };
+  ReceiveWave(wave, MA_LISTEN);
+
+
+SIEHE AUCH
+----------
+
+  :doc:`ReceiveMsg`, :doc:`ReceiveWave`
+
+Letzte Aenderung: 30.07.2025, Zesstra
+
+
