diff --git a/doc/lfun/AddFun b/doc/lfun/AddFun
index 5ba6cf1..4a56755 100644
--- a/doc/lfun/AddFun
+++ b/doc/lfun/AddFun
@@ -38,41 +38,43 @@
    keiner
 
 
+HINWEISE
+========
+
+   Die genannte Funktion <fun> wird per call_other() an this_object()
+   gerufen, d.h. ihre Sichtbarkeit muss static oder public sein.
+
+
 BEISPIELE
 =========
 
    Wenn ein zufaellig ausgewaehlter Passagier eines Schiffes unterwegs
    seekrank werden soll, koennte man das wie folgt realisieren:
 
-   create()
-   {
+   protected void create() {
      ...
-
      AddFun("seekrank", 5);
      ...
    }
 
-   seekrank()
-   {
-     object *passagiere, opfer;
-
+   seekrank() {
      // soll nicht immer passieren
      if (random(5))
        return;
 
      // Opfer auswaehlen
-     passagiere = QueryPassengers();
+     object* passagiere = QueryPassengers();
+     object opfer;
      if (sizeof(passagiere))
        opfer = passagiere[random(sizeof(passagiere))];
 
-     // Und viel Spass...
      tell_object(opfer,
-       "Du wirst seekrank! Schnell stuerzt Du zur Reling um  Dich zu\n"
-      +"uebergeben.\n");
+       "Du wirst seekrank! Schnell stuerzt Du zur Reling, um Dich zu\n"
+       "uebergeben.\n");
      tell_room(this_object(),
-       sprintf("%s ueberkommt die Seekrankheit!\n%s stuerzt an die Reling, "
-              +"um sich zu uebergeben.\n",
-               capitalize(opfer->name(WEN)),
+       sprintf("%s ueberkommt die Seekrankheit!\n"
+               "%s stuerzt an die Reling, um sich zu uebergeben.\n",
+               opfer->Name(WEN),
                capitalize(opfer->QueryPronoun(WER))), ({ opfer }) );
    }
 
@@ -82,4 +84,4 @@
 
    AddRoute(), AddMsg(), /std/transport.c
 
-Last modified: Wed May 8 10:16:46 1996 by Wargon
+Last modified: 15.01.2020, Arathorn
diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index 189e6b5..83f493b 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -194,12 +194,12 @@
    enem->Defend(100, ({DT_BLUDGEON}), ([SP_PHYSICAL_ATTACK:1]), this_object());
 
    // ein magischer Angriff (ohne Treffermeldung):
-   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_PHYSICAL_ATTACK:0]),
-                this_object());
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}),
+         ([SP_PHYSICAL_ATTACK:0, SP_SHOW_DAMAGE:0 ]),this_object());
 
    // ein magischer Angriff mit Treffermeldung:
-   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
-                this_object());
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}),
+         ([SP_PHYSICAL_ATTACK:0, SP_SHOW_DAMAGE:1]), this_object());
 
 
 SIEHE AUCH
diff --git a/doc/lfun/Defend_bsp b/doc/lfun/Defend_bsp
index 9feb25f..5ef0350 100644
--- a/doc/lfun/Defend_bsp
+++ b/doc/lfun/Defend_bsp
@@ -40,7 +40,7 @@
       Treffermeldung und physischen Ruestungsschutz durchgeht.
       this_player()->Defend(random(500),
                             ({DT_PIERCE, DT_RIP}),
-                            ([SP_PHYSICAL_ATTACK: 0]),
+                            ([SP_PHYSICAL_ATTACK: 0, SP_SHOW_DAMAGE:0]),
                             this_object());
 
    4) Spell-Parameter
diff --git a/doc/lfun/reduce_hit_points b/doc/lfun/reduce_hit_points
index 7a1dcf0..f82674f 100644
--- a/doc/lfun/reduce_hit_points
+++ b/doc/lfun/reduce_hit_points
@@ -24,15 +24,15 @@
 BESCHREIBUNG
 ============
 
-   Dem Lebewesen werden damage Lebenspunkte abgezogen, aber der
-   Wert wird hinterher nicht kleiner als 1 sein und das Lebewesen
-   wird dadurch nicht sterben.
+   Dem Lebewesen werden damage Lebenspunkte abgezogen, aber das Lebewesen
+   wird hinterher nicht weniger als 1 Lebenspunkt haben und es wird
+   dadurch nicht sterben.
 
 
 RUECKGABEWERT
 =============
 
-   Die verbleibenden Lebenspunkte.
+   Die Lebenspunkte nach der Aenderung.
 
 
 BEISPIELE
@@ -50,20 +50,25 @@
 
    damage kann auch ein negativer Wert sein, dann werden dem Lebewesen
    diese Lebenspunkte gutgeschrieben und auf die aktuellen Lebenspunkte
-   addiert. Da dies eine Form der Heilung ist, nur nach Ruecksprache mit
-   dem Regionsmagier verwenden.
+   addiert. Da dies eine Form der Heilung ist, ist die Verwendung mit dem
+   Regionsmagier abzustimmen und dem EM fuer Heilungsbalance zur
+   Genehmigung vorzulegen.
+
+   Heilstellen sollten in neuem Code mit der Funktion restore_hit_points()
+   realisiert werden.
 
    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
-   dafuer eingerichteten Funktion check_and_update_timed_key realisiert
+   dafuer eingerichteten Funktion check_and_update_timed_key() realisiert
    werden.
 
 
 SIEHE AUCH
 ==========
 
-   Gegenpart:  restore_hit_points()
-   Verwandt:   do_damage(), Defend(), reduce_spell_points()
-   Props:      P_HP
-   Konzept:    heilung
+   Gegenpart: restore_hit_points()
+   Verwandt:    do_damage(), Defend(), reduce_spell_points(),
+              restore_spell_points(), check_and_update_timed_key()
+   Props:         P_HP
+   Konzept:   heilung
 
-Last modified: Sat Dec 13 01:00:47 1999 by Tilly
+Last modified: 20. Jan. 2020, Arathorn
