diff --git a/doc/lfun/buffer_hp b/doc/lfun/buffer_hp
index c3e7b1b..181751c 100644
--- a/doc/lfun/buffer_hp
+++ b/doc/lfun/buffer_hp
@@ -1,76 +1,104 @@
-FUNKTION:
-    int buffer_hp( int val, int rate );
 
-DEFINIERT IN:
-    /std/living/life.c
+buffer_hp()
+***********
 
-ARGUMENTE:
-    val:  Gesamte Heilung.
-    rate: LP-Rate.
-        
-BESCHREIBUNG:
-    Erhoeht die LP eines Spielers automatisch insgesamt um den Wert "val".
-    Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
-    Sollen neben P_HP noch weitere Props manipuliert werden - bspw. zur
-    P_FOOD - bietet sich die Funktion consume() an.
 
-RUECKGABEWERTE:
-    Der getankte Wert pro heart_beat().
+FUNKTION
+========
 
-BEMERKUNG:
-    Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
-    darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
-    (Essen, Trinken) geheilt worden zu sein.
+   int buffer_hp( int val, int rate );
 
-BEISPIEL:
-    #define TP this_player()
+
+DEFINIERT IN
+============
+
+   /std/living/life.c
+
+
+ARGUMENTE
+=========
+
+   val:  Gesamte Heilung.
+   rate: LP-Rate.
+
+
+BESCHREIBUNG
+============
+
+   Erhoeht die LP eines Spielers automatisch insgesamt um den Wert "val".
+   Pro heart_beat() wird ihm dabei der Wert "rate" zugefuehrt.
+   Sollen neben P_HP noch weitere Props manipuliert werden - bspw. zur
+   P_FOOD - bietet sich die Funktion consume() an.
+
+
+RUECKGABEWERTE
+==============
+
+   Der getankte Wert pro heart_beat().
+
+
+BEMERKUNG
+=========
+
+   Sollte von jeder tragbaren Heilung genutzt werden, welche den Spieler
+   darauf schliessen lassen kann, auf natuerlichem und nichtmagischem Weg
+   (Essen, Trinken) geheilt worden zu sein.
+
+
+BEISPIEL
+========
+
+   #define TP this_player()
+   ...
+
+   int heilung=1;
+   ...
+
+   create()
+   {
+    ::create();
+    SetProp(P_NAME,"Heilpflanze");
     ...
 
-    int heilung=1;
-    ...
+    AddCmd("iss","eat");
+   }
 
-    create()
-    {
-     ::create();
-     SetProp(P_NAME,"Heilpflanze");
+   int eat(string str)
+   {
+     notify_fail("WAS willst Du essen?\n");
+     if ( !str || !id(str) )
+      return 0;
      ...
 
-     AddCmd("iss","eat");
-    }
-
-    int eat(string str)
-    {
-      notify_fail("WAS willst Du essen?\n");
-      if ( !str || !id(str) )
-       return 0;
-      ...
-
-      if ( !TP->eat_food(25) )
-       return 1;
-
-      TP->buffer_hp(20,5);
-      TP->buffer_sp(80,10);
-      heilung--;
-      write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
-
+     if ( !TP->eat_food(25) )
       return 1;
-    }
 
-    reset()
-    {
-      heilung=1;
-      ::reset();
-    }
+     TP->buffer_hp(20,5);
+     TP->buffer_sp(80,10);
+     heilung--;
+     write(BS("Du fuehlst langsam, wie Deine Kraefte zurueckkehren."));
 
-    Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
-    Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
-    20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+     return 1;
+   }
 
-SIEHE AUCH:
-     Aehnlich:  heal_self, restore_spell_points, restore_hit_points, 
-                buffer_sp
-     Tanken:    consume, drink_alcohol, drink_soft, eat_food
-     Props:     P_SP, P_HP,
-     Konzepte:  heilung
+   reset()
+   {
+     heilung=1;
+     ::reset();
+   }
+
+   Es wird durch eat_food getestet, ob der Spieler noch genuegend essen kann.
+   Wenn ja, kriegt unser Held die 25 automatisch oben drauf und ausserdem
+   20 LP in 5-LP-Schritten und 80 KP in 10-LP-Schritten gutgeschrieben.
+
+
+SIEHE AUCH
+==========
+
+   Aehnlich:  heal_self, restore_spell_points, restore_hit_points,
+              buffer_sp
+   Tanken:    consume, drink_alcohol, drink_soft, eat_food
+   Props:     P_SP, P_HP,
+   Konzepte:  heilung
 
 9. August 2015 Gloinson
