diff --git a/doc/lfun/AddSpecialInfo b/doc/lfun/AddSpecialInfo
index be61558..3c164fd 100644
--- a/doc/lfun/AddSpecialInfo
+++ b/doc/lfun/AddSpecialInfo
@@ -6,31 +6,9 @@
 FUNKTION
 ========
 
-   public varargs void AddSpecialInfo(string|string* keys, string functionname,
-                  string indent, int|string silent, string|closure  casebased);
-
-
-ARGUMENTE
-=========
-
-   string|string* frage
-     Schluesselwoerter, fuer die der NPC eine Antwort geben soll, wenn
-     man ihn danach fragt
-
-   string functionname
-     Name der Funktion, die gerufen werden soll, um den Informationstext
-     des NPCs zu ermitteln. Der gerufenen Funktion werden keine Argumente
-     uebergeben.
-
-   string indent    (optional)
-     Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
-
-   int|string silent    (optional)
-     Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
-
-   string|closure casebased   (optional)
-     Closure mit Returnwert string oder int.
-     Der Funktion werden keine Argumente uebergeben.
+   public varargs void AddSpecialInfo(string|string* keys, string
+   functionname,
+      string indent, int|string silent, string|closure  casebased);
 
 
 DEFINIERT IN
@@ -39,25 +17,49 @@
    /std/npc/info.c
 
 
+ARGUMENTE
+=========
+
+   string|string* frage
+      Schluesselphrase(n), fuer die der NPC eine Antwort geben soll,
+      wenn man ihn danach fragt
+
+   string functionname
+      Name der Funktion, die gerufen werden soll, um den
+      Informationstext des NPCs zu ermitteln. Der gerufenen Funktion
+      wird die vom Spieler gefragte Schluesselphrase uebergeben.
+
+   string indent    (optional)
+      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
+
+   int|string silent    (optional)
+      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+
+   string|closure casebased   (optional)
+      Closure mit Returnwert string oder int. Der Funktion wird die
+      vom Spieler gefragte Schluesselphrase uebergeben.
+
+
 BESCHREIBUNG
 ============
 
-   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>" nach
-   einer Information mit dem Schluessel frage fragt, so wird die Methode
-   "function" gerufen. Die Rueckgabe wird als Meldung ausgegeben.
+   Wenn ein Spieler ein NPC mittels "frage <monstername> nach <frage>"
+   nach einer Information mit dem Schluessel frage fragt, so wird die
+   Methode "function" gerufen. Die Rueckgabe wird als Meldung
+   ausgegeben.
 
    Fuer die Beschreibung der weiteren Parameter siehe man AddInfo(L).
 
-   AddSpecialInfo(keys, "function", ...) entspricht:
-   - AddInfo(keys, #'function, ...)
+   "AddSpecialInfo(keys, "function", ...)" entspricht "AddInfo(keys,
+   #'function, ...)".
 
 
 BEMERKUNGEN
 ===========
 
    Da AddSpecialInfo() und AddInfo() auf die gleichen Daten zugreifen,
-   kann man Informationen, die mit AddSpecialInfo() gesetzt wurden, auch
-   mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().
+   kann man Informationen, die mit AddSpecialInfo() gesetzt wurden,
+   auch mit RemoveInfo() entfernen. Es gibt kein RemoveSpecialInfo().
 
 
 BEISPIELE
@@ -69,13 +71,13 @@
                   "query_kekse",      // der Methodenname
                   "sagt: ");
    // ist uebrigens das gleiche wie:
-   // static string query_kekse();
+   // static string query_kekse(string key);
    // ...
    // AddInfo(({"keks","kekse"}),
    //         #'query_kekse,          // ein Verweis auf die Methode
    //         "sagt: ");
    ...
-   static string query_kekse() {
+   static string query_kekse(string key) {
     if(present("keks"))
      return("Ich hab noch welche. Aetsch!");
     return("Menno. Keine mehr da!");
@@ -106,4 +108,4 @@
    Interna:
       GetInfoArr() , do_frage()
 
-24.09.2020, Arathorn
+09.08.2021, Zesstra
