diff --git a/doc/sphinx/lfun/AddInfo.rst b/doc/sphinx/lfun/AddInfo.rst
index 8b5914a..533a581 100644
--- a/doc/sphinx/lfun/AddInfo.rst
+++ b/doc/sphinx/lfun/AddInfo.rst
@@ -17,12 +17,13 @@
 ---------
 
      string|string* frage
-       Schluesselwoerter, fuer die der NPC eine Antwort geben soll, wenn
+       Schluesselphrase(n), fuer die der NPC eine Antwort geben soll, wenn
        man ihn danach fragt
 
      string|closure meldung
-       Information, die gegeben werden soll; wenn 'meldung' eine Closure 
-       ist, wird der gerufenen Funktion nichts uebergeben.
+       Information, die gegeben werden soll; wenn 'meldung' eine
+       Closure ist, wird der gerufenen Funktion die vom Spieler gefragte
+       Schluesselphrase uebergeben.
 
      string indent    (optional)
        Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
@@ -31,8 +32,8 @@
        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.
+       Closure mit Returnwert string oder int. Der Funktion wird die vom
+       Spieler gefragte Schluesselphrase uebergeben.
 
 BESCHREIBUNG
 ------------
@@ -44,8 +45,8 @@
      der Name des Monsters vorangestellt.
 
      Frage:
-      Schluessel muessen kleingeschrieben sein, koennen aber Leerzeichen
-      enthalten.
+      Schluesselphrasen muessen kleingeschrieben sein, koennen aber
+      Leerzeichen enthalten.
 
      Meldung:
       Wenn kein 'indent' angegeben ist, muss man die Meldung selbst
@@ -124,13 +125,13 @@
 
      // Beispiel 3: dynamisch
      // ein Prototyp, damit wir die Methode bekannt machen
-     protected string query_kekse();
+     protected string query_kekse(string key);
 
      AddInfo(({"keks","kekse"}),
          #'query_kekse,        // ein Verweis auf die Funktion
          "sagt: ");
 
-     protected string query_kekse() {
+     protected string query_kekse(string key) {
        if(present("keks", this_object()))
          return("Ich hab noch welche. Aetsch!");
        else if(present("keks", environment()))
@@ -147,8 +148,8 @@
 
      // Beispiel 4: dynamischer
      // ein Prototyp, damit wir die Methode bekannt machen
-     protected string query_kekse();
-     protected mixed case_fighting();
+     protected string query_kekse(string key);
+     protected mixed case_fighting(string key);
      
      AddInfo(({"keks","kekse"}),
          #'query_kekse,"        // ein Verweis auf die Funktion
@@ -156,13 +157,13 @@
          0,                     // nicht silent :)
          #'case_fighting);      // noch ein Funktionsverweis
 
-     protected string query_kekse() {
+     protected string query_kekse(string key) {
        if(present("keks"))
          return("Ich hab noch welche. Aetsch!");
        return("Menno. Keine mehr da!");
      }
 
-     protected mixed case_fighting() {
+     protected mixed case_fighting(string key) {
        if(InFight())
          return("Keine Zeit fuer Kekse. Muss kaempfen.");
        return 0;
@@ -180,7 +181,7 @@
 
      // Beispiel 5: ### dynamisch und komplex ###
      // ein Prototyp, damit wir die Methode bekannt machen
-     protected string question_gold();
+     protected string question_gold(string key);
 
      // "gold" wird eine Closure auf die Methode question_gold()
      // zugewiesen, ausserdem soll es still bleiben (wir informieren
@@ -188,7 +189,7 @@
      AddInfo("gold", #'question_gold, "murmelt: ", 1);
 
      // los gehts, wir generieren unsere Antwort selbst
-     protected string question_gold() {
+     protected string question_gold(string key) {
        // wieviel Kohle hat der Spieler
        int money = this_player()->QueryMoney();
        string* valuables = ({});
@@ -265,4 +266,4 @@
      Interna:
        :doc:`GetInfoArr` , :doc:`do_frage`
 
-24.09.2020, Arathorn
+09.08.2021, Zesstra
diff --git a/doc/sphinx/lfun/AddSpecialInfo.rst b/doc/sphinx/lfun/AddSpecialInfo.rst
index fd67141..d8ca7c2 100644
--- a/doc/sphinx/lfun/AddSpecialInfo.rst
+++ b/doc/sphinx/lfun/AddSpecialInfo.rst
@@ -14,13 +14,13 @@
 ::
 
      string|string* frage
-       Schluesselwoerter, fuer die der NPC eine Antwort geben soll, wenn
+       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 werden keine Argumente
-       uebergeben.
+       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.
@@ -29,8 +29,8 @@
        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.
+       Closure mit Returnwert string oder int. Der Funktion wird die vom
+       Spieler gefragte Schluesselphrase uebergeben.
 
 DEFINIERT IN
 ------------
@@ -69,13 +69,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!");
@@ -101,5 +101,4 @@
      Interna:
        :doc:`GetInfoArr` , :doc:`do_frage`
 
-24.09.2020, Arathorn
-
+09.08.2021, Zesstra
