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
