diff --git a/doc/lfun/FindPotion b/doc/lfun/FindPotion
index 417c89b..5d8cae1 100644
--- a/doc/lfun/FindPotion
+++ b/doc/lfun/FindPotion
@@ -1,49 +1,74 @@
+
 FindPotion()
+************
 
-FUNKTION:
-     varargs int FindPotion(string s);
 
-DEFINIERT IN:
-     /std/player/potion.c
+FUNKTION
+========
 
-ARGUMENTE:
-     string s
-       Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.
+   varargs int FindPotion(string s);
 
-BESCHREIBUNG:
-     Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
-     
-     Das aufrufende Spielerobjekt muss dafuer:
-     * diesen ZT im Potionmaster in seiner Liste eingetragen haben
-     * diesen ZT in der Liste der bekannten Traenke haben (durch
-       Orakel also fuer ihn auch freigeschaltet)
-     * darf keine Playerkills haben (P_KILLS)
-     * darf nicht im Editiermodus sein
-     * darf kein Geist sein (Ausnahme: Geisterschloss)
 
-     Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder 
-     "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
-     und dem Spieler ggf die Wahl der Attribute gegeben.
+DEFINIERT IN
+============
 
-RUeCKGABEWERT:
-     0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.
+   /std/player/potion.c
 
-BEISPIELE:
-     string detail_papiere() {
-       if (this_player()->FindPotion(
-         break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
-                      "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
-         return "";  
-         // Es muss ein String zurueckgegeben werden, da man sonst
-         // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
-       else
-         return "Die Papiere sind alle unbeschriftet.\n";
-     }
 
-SIEHE AUCH:
-     Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
-     Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
-     Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
-     Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)
+ARGUMENTE
+=========
+
+   string s
+     Ausgabetext. Wenn 0/Leerstring, wird Default verwendet.
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion gibt einem aufrufenden Spieler eventuell diesen ZT.
+
+
+
+   Das aufrufende Spielerobjekt muss dafuer:
+   * diesen ZT im Potionmaster in seiner Liste eingetragen haben
+   * diesen ZT in der Liste der bekannten Traenke haben (durch
+     Orakel also fuer ihn auch freigeschaltet)
+   * darf keine Playerkills haben (P_KILLS)
+   * darf nicht im Editiermodus sein
+   * darf kein Geist sein (Ausnahme: Geisterschloss)
+
+   Wenn alle Kriterien erfolgreich erfuellt sind, wird 's' oder
+   "Du findest einen Zaubertrank, den Du sofort trinkst." ausgegeben
+   und dem Spieler ggf die Wahl der Attribute gegeben.
+
+
+RUeCKGABEWERT
+=============
+
+   0 bei Nichtvergabe, 1 bei erfolgreicher Vergabe.
+
+
+BEISPIELE
+=========
+
+   string detail_papiere() {
+     if (this_player()->FindPotion(
+       break_string("Beim Rumwuehlen in den Papieren entdeckst Du einen "
+                    "kleinen Zaubertrank, den Du sofort trinkst.", 78)))
+       return "";
+       // Es muss ein String zurueckgegeben werden, da man sonst
+       // die Fehlermeldung "Sowas siehst du hier nicht." bekommt
+     else
+       return "Die Papiere sind alle unbeschriftet.\n";
+   }
+
+
+SIEHE AUCH
+==========
+
+   Sonstiges: zaubertraenke, /secure/potionmaster.c, /room/orakel.c
+   Verwandt:  AddKnownPotion(), RemoveKnownPotion(), InList()
+   Props:     P_POTIONROOMS, P_KNOWN_POTIONROOMS
+   Befehl:    traenke (fuer Magier zum Einschalten des Findens von ZTs)
 
 6.Feb 2016 Gloinson
