diff --git a/doc/sphinx/lfun/AddFun.rst b/doc/sphinx/lfun/AddFun.rst
index 4e3856a..aa84a11 100644
--- a/doc/sphinx/lfun/AddFun.rst
+++ b/doc/sphinx/lfun/AddFun.rst
@@ -36,6 +36,13 @@
 
      keiner
 
+HINWEISE
+--------
+::
+
+     Die genannte Funktion <fun> wird per call_other() an this_object()
+     gerufen, d.h. ihre Sichtbarkeit muss static oder public sein.
+
 BEISPIELE
 ---------
 ::
@@ -43,35 +50,30 @@
      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,5 +84,5 @@
      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/sphinx/lfun/Defend.rst b/doc/sphinx/lfun/Defend.rst
index 70dc9d2..6a3b5a0 100644
--- a/doc/sphinx/lfun/Defend.rst
+++ b/doc/sphinx/lfun/Defend.rst
@@ -158,12 +158,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/sphinx/lfun/Defend_bsp.rst b/doc/sphinx/lfun/Defend_bsp.rst
index 29e710a..5c8fe79 100644
--- a/doc/sphinx/lfun/Defend_bsp.rst
+++ b/doc/sphinx/lfun/Defend_bsp.rst
@@ -39,7 +39,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/sphinx/lfun/reduce_hit_points.rst b/doc/sphinx/lfun/reduce_hit_points.rst
index 790b078..83d08d4 100644
--- a/doc/sphinx/lfun/reduce_hit_points.rst
+++ b/doc/sphinx/lfun/reduce_hit_points.rst
@@ -23,15 +23,15 @@
 ------------
 ::
 
-    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
 ---------
@@ -49,22 +49,27 @@
 
     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 
 
