diff --git a/doc/lfun/AddInfo b/doc/lfun/AddInfo
index c684fe0..76c6e1c 100644
--- a/doc/lfun/AddInfo
+++ b/doc/lfun/AddInfo
@@ -6,8 +6,8 @@
 FUNKTION
 ========
 
-   varargs void AddInfo( frage, meldung
-      [, indent [, [silent [, casebased] ] ] );
+   public varargs void AddInfo(string|string* key, string|closure info,
+                  string indent, int|string silent, string|closure casebased);
 
 
 DEFINIERT IN
@@ -19,22 +19,23 @@
 ARGUMENTE
 =========
 
-   string/string* frage
-      Schluesseltext(e) auf die Informationen gegeben werden sollen.
+   string|string* frage
+      Schluesselwoerter, fuer die der NPC eine Antwort geben soll,
+      wenn man ihn danach fragt
 
-   string/closure meldung
+   string|closure meldung
       Information, die gegeben werden soll; wenn 'meldung' eine
       Closure ist, wird der gerufenen Funktion nichts uebergeben.
 
-   string indent
+   string indent    (optional)
       Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
 
-   int/string silent
+   int|string silent    (optional)
       Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
 
-   string/closure casebased
-      Closure mit Returnwert string oder int. Bekommt nichts
-      uebergeben.
+   string|closure casebased   (optional)
+      Closure mit Returnwert string oder int. Der Funktion werden
+      keine Argumente uebergeben.
 
 
 BESCHREIBUNG
@@ -79,7 +80,7 @@
 
    Die Strings von 'silent' und 'meldung' werden geparsed. Dabei
    koennen die @[...]-Tags von replace_personal() verwendet werden,
-   Objekt 1 ist this_player(). Ersetzte String am Satzanfang werden
+   Objekt 1 ist this_player(). Ersetzte Strings am Satzanfang werden
    automatisch gross geschrieben. AddInfo() konvertiert die alten
    Schluesselworte @WER, @WESSEN, @WEM, @WEN zu denen von
    replace_personal(), jedoch nicht in den Rueckgabe- werten von
@@ -265,4 +266,4 @@
    Interna:
       GetInfoArr() , do_frage()
 
-7. Mar 2017 Gloinson
+24.09.2020, Arathorn
diff --git a/doc/lfun/AddMoney b/doc/lfun/AddMoney
index 8f15cc6..6518215 100644
--- a/doc/lfun/AddMoney
+++ b/doc/lfun/AddMoney
@@ -69,10 +69,10 @@
 BEISPIELE
 =========
 
-   #include <zentralbank.h>
+   #include <bank.h>
 
    // gib ihm Geld
-   int money = ZENTRALBANK->Withdraw(50);
+   int money = ZENTRALBANK->WithDraw(50);
    this_player()->AddMoney(money);
 
    // nimm ihm Geld
@@ -86,9 +86,11 @@
 SIEHE AUCH
 ==========
 
-   Geldhandling:      QueryMoney(L) Zentralbank:       PayIn(L),
-   WithDraw(L) Sonstiges:         move(L), /items/money.c,
-   /sys/moving.h, /sys/money.h, /sys/bank.h
-   /std/container/moneyhandler.c
+   Geldhandling:  QueryMoney(L)
+   Zentralbank:   PayIn(L), WithDraw(L)
+   Sonstiges:     move(L),
+   /items/money.c
+   /sys/moving.h, /std/container/moneyhandler.c
+   /sys/money.h, /sys/bank.h
 
 18.02.2013, Zesstra
diff --git a/doc/lfun/AddRoomMessage b/doc/lfun/AddRoomMessage
index 82c2c99..47e2b60 100644
--- a/doc/lfun/AddRoomMessage
+++ b/doc/lfun/AddRoomMessage
@@ -66,7 +66,7 @@
        verlassen haben
 
      * ist manuell nur ueber Loeschen der Nachrichten umsetzbar,
-       also mit "AddRoomMessage((string)0, 0, (string)0);"
+       also mit "AddRoomMessage(0, 0, 0);"
 
    In Funktionen, die durch AddRoomMessage() ausgeloest werden, darf
    this_player() nicht verwendet werden, da die call_out()-Kette den
@@ -130,7 +130,7 @@
    }
 
    public int action_laerm(string str) {
-     AddRoomMessage((string)0, 0, (string)0);
+     AddRoomMessage(0, 0, 0);
 
      this_player()->ReceiveMsg(
        "Du schreist dir kurz die Seele aus dem Leib. Alle Tiere "
diff --git a/doc/lfun/AddSpecialInfo b/doc/lfun/AddSpecialInfo
index efc3067..be61558 100644
--- a/doc/lfun/AddSpecialInfo
+++ b/doc/lfun/AddSpecialInfo
@@ -6,23 +6,31 @@
 FUNKTION
 ========
 
-   varargs void AddSpecialInfo( frage, meldung
-                         [, indent [, [silent [, casebased] ] ] );
+   public varargs void AddSpecialInfo(string|string* keys, string functionname,
+                  string indent, int|string silent, string|closure  casebased);
 
 
 ARGUMENTE
 =========
 
-   string/string* frage
-      Schluesseltext(e) auf die Informationen gegeben werden sollen.
-   string/closure function
-      Methodenname im NPC/Closure
-   string indent
-      Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
-   int/string silent
-      Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
-   string/closure casebased
-      Funktionsname oder Closure mit Returnwert string oder int.
+   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.
 
 
 DEFINIERT IN
@@ -83,6 +91,19 @@
 SIEHE AUCH
 ==========
 
-   AddInfo(L), RemoveInfo(L)
+   Verwandt:
+      AddInfo(), RemoveInfo()
 
-7.Apr 2004 Gloinson
+   Props:
+      P_PRE_INFO
+
+   Files:
+      /std/npc/info.c
+
+   Loggen:
+      P_LOG_INFO
+
+   Interna:
+      GetInfoArr() , do_frage()
+
+24.09.2020, Arathorn
diff --git a/doc/lfun/Attack b/doc/lfun/Attack
index 08a0c20..1e958de 100644
--- a/doc/lfun/Attack
+++ b/doc/lfun/Attack
@@ -18,8 +18,8 @@
 BESCHREIBUNG
 ============
 
-   Der Feind wird der Staerke der Waffe (bzw. der Haende) entsprechend
-   stark angegriffen.
+   Der Feind wird entsprechend der Angriffsstaerke der Waffe (P_WC) bzw. der
+   Haende (P_HANDS[1]) angegriffen.
 
 
 RUECKGABEWERT
@@ -33,10 +33,10 @@
 
    Diese Funktion gibt die Angriffsmeldung aus.
    Falls mit blossen Haenden angegriffen wird, ist die Staerke
-   (2*Staerke_der_Haende + 10*A_STR)/3
+   (2 * P_HANDS[1] + 10 * A_STR)/3
 
 
 SIEHE AUCH
 ==========
 
-   "Defend", "QueryDamage"
+   Defend(), QueryDamage()
diff --git a/doc/lfun/CheckResistance b/doc/lfun/CheckResistance
index bcf64ca..52bfe23 100644
--- a/doc/lfun/CheckResistance
+++ b/doc/lfun/CheckResistance
@@ -6,7 +6,7 @@
 FUNKTION
 ========
 
-   CheckRessistance(string* dam_type_list)
+   public float CheckResistance(string* dam_type_list)
 
 
 ARGUMENTE
@@ -34,4 +34,4 @@
 SIEHE AUCH
 ==========
 
-   "Defend"
+   Defend(), P_RESISTANCE_STRENGTHS
diff --git a/doc/lfun/DefendFunc b/doc/lfun/DefendFunc
index 5338a9f..00bfc91 100644
--- a/doc/lfun/DefendFunc
+++ b/doc/lfun/DefendFunc
@@ -61,46 +61,43 @@
 BEISPIELE
 =========
 
-   Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke
-   entfaltet und bei Angriffen durch Geister geschwaecht wird:
+   Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke entfaltet
+   und bei Angriffen durch Geister geschwaecht wird:
 
-   protected void create() {
+   protected void create()
+   {
+     ::create();
 
-      ::create();
-
-      SetProp(P_ARMOUR_TYPE, AT_ARMOUR); SetProp(P_AC, 20); ... // Die
-      DefendFunc() ist in der Ruestung selbst definiert
-      SetProp(P_DEFEND_FUNC, this_object());
-
+     SetProp(P_ARMOUR_TYPE, AT_ARMOUR);
+     SetProp(P_AC, 20);
+     ...
+     // Die DefendFunc() ist in der Ruestung selbst definiert
+     SetProp(P_DEFEND_FUNC, this_object());
    }
 
-   public int DefendFunc(string* dtyp, mapping spell, object enemy) {
+   public int DefendFunc(string* dtyp, mapping spell, object enemy)
+   {
+     int prot;
 
-      int prot;
+     // Zuerst fragen wir den Angriff durch Feuer ab:
+     if (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den Schadenstypen
+       prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit P_AC
+                              // kommt man also maximal auf 14+20 = 34,
+                              // liegt also unter der fuer AT_ARMOUR
+                              // geltenden Obergrenze
 
-      // Zuerst fragen wir den Angriff durch Feuer ab: if
-      (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den
-      Schadenstypen
+     // Und jetzt der Geistertest
+     if (enemy->QueryProp(P_RACE) == "Geist" ||
+         enemy->is_class_member(CL_GHOST))
+       prot -= random(10);
 
-         prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit
-         P_AC
-            // kommt man also maximal auf 14+20 = 34, // liegt also
-            unter der fuer AT_ARMOUR // geltenden Obergrenze
-
-      // Und jetzt der Geistertest if (enemy->QueryProp(P_RACE) ==
-      "Geist" ||
-
-            enemy->is_class_member(CL_GHOST))
-
-         prot -= random(10);
-
-      // Der Rueckgabewert wird auf den aus P_AC errechneten Wert
-      draufgeschlagen return prot;
-
+     // Der Rueckgabewert wird auf den aus P_AC errechneten Wert
+     // draufgeschlagen
+     return prot;
    }
 
 
 SIEHE AUCH
 ==========
 
-   P_DEFEND_FUNC, *QueryDefendd* /std/armour/combat.c
+   P_DEFEND_FUNC, QueryDefend() /std/armour/combat.c
diff --git a/doc/lfun/QueryArmourByType b/doc/lfun/QueryArmourByType
index 20fcab5..5c9da6f 100644
--- a/doc/lfun/QueryArmourByType
+++ b/doc/lfun/QueryArmourByType
@@ -10,7 +10,7 @@
 FUNKTION
 ========
 
-   mixed QueryArmourByType(string type)
+   object|object*|mapping QueryArmourByType(string type)
 
 
 DEFINIERT IN
@@ -31,17 +31,27 @@
 
    Abfrage, ob das Lebewesen eine Ruestung des angegebenen Typs traegt.
 
-   Zurueckgegeben wird je nach Tragestatus und <type>:
-   * 0, falls das Lebewesen die gesuchte Ruestungsart nicht traegt
-   * im Erfolgsfall das Ruestungsobjekt
-   * falls <type> AT_MISC ist:
-     * ({}), wenn es keine AT_MISC-Ruestung traegt
-     * ein Array von AT_MISC-Ruestungen
-   * falls <type> 0 ist: ein Mapping, das diese Informationen mit dem
-     Ruestungstypen als Schluessel enthaelt:
-     ([AT_MISC: ({[object], ...}),
-       AT_...: <object>,
-       ... ])
+
+RUECKGABEWERTE
+==============
+
+   Zurueckgegeben wird abhaengig vom Argument <type> folgendes:
+
+   1) Ist <type> ein Typ, von dem man nur eine Ruestung tragen kann:
+      *  0, falls das Lebewesen die gesuchte Ruestungsart nicht traegt,
+      *  ansonsten das Ruestungsobjekt
+
+   2) Ist <type> AT_MISC:
+      *   ein Array mit allen AT_MISC-Ruestungen
+      *   ({}), wenn das Lebewesen keine AT_MISC-Ruestung traegt
+
+   3) Ist <type> 0:
+      * Ein Mapping mit den Ruestungstypen als Schluessel der folgenden
+      Form:
+         ([AT_MISC:  ({object misc1, ... }),
+           AT_CLOAK: object cloak,
+           AT_...:   object ...,
+           ... ])
 
 
 BEMERKUNG
diff --git a/doc/lfun/create_default_npc b/doc/lfun/create_default_npc
index 09c3a14..fac3fe2 100644
--- a/doc/lfun/create_default_npc
+++ b/doc/lfun/create_default_npc
@@ -47,7 +47,10 @@
    wurden, werden durch die neuen Werte ersetzt.
 
    Ab einem Aufruf mit Level 20 werden P_XP = 202000 gesetzt, also ein
-   Kill-Stup vergeben (siehe P_XP).
+   Kill-Stups vergeben (siehe P_XP).
+
+   P_HP und P_SP werden auf dieselben Werte wie P_MAX_HP bzw. P_MAX_SP
+   eingestellt.
 
 
 BEISPIEL
