diff --git a/doc/lfun/AddPlant b/doc/lfun/AddPlant
index a79bcff..ae2df8b 100644
--- a/doc/lfun/AddPlant
+++ b/doc/lfun/AddPlant
@@ -1,58 +1,84 @@
+
 AddPlant()
+**********
 
-FUNKTION:
-        varargs int AddPlant(string filename, [string|string* npcId]) 
 
-DEFINIERT IN:
-        /std/room/kraeuter.c
+FUNKTION
+========
 
-ARGUMENTE:
-        filename
-          Der Filename des Krauts das hier gefunden werden soll.
-        npcId
-          Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das 
-          Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
-          im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument 
-          ist optional!
+   varargs int AddPlant(string filename, [string|string* npcId])
 
-RUeCKGABEWERT:
-        -1 wenn das Objekt nicht geclont werden konnte
-        >=0 sonst
 
-BESCHREIBUNG:
-        Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
-        Kraeuterskill recht einfach eingebaut werden. Alles was man
-        noch machen muss, ist den Namen der Pflanze in einem Detail oder
-        der Langbeschreibung zu erwaehnen.
-        Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich 
-        bequem anzeigen lassen, was es alles an Kraeutern gibt, die man 
-        nehmen kann.
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-        Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
-        werden koennen, muss der Raum erst in einem Master eingetragen werden.
-        Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
-        gerne nimmt Humni die derzeit entgegen.
-        Die Kraeuter wurden von der Balance bereits alle im vorhinein
-        abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
-        Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
-        alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".
+   /std/room/kraeuter.c
 
-BEISPIELE:
-        #include <items/kraeuter/kraeuterliste.h>
-        inherit "/std/room/kraeuter";
-        inherit "/std/room";
-        
-        void create()
-        {
-          ::create();
-          SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
-          AddPlant(FELDKLEE);
-        }
 
-SIEHE AUCH:
-        AddItem();
+ARGUMENTE
+=========
 
-----------------------------------------------------------------------------
+   filename
+     Der Filename des Krauts das hier gefunden werden soll.
+   npcId
+     Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das
+     Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
+     im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument
+     ist optional!
+
+
+RUeCKGABEWERT
+=============
+
+   -1 wenn das Objekt nicht geclont werden konnte
+   >=0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
+   Kraeuterskill recht einfach eingebaut werden. Alles was man
+   noch machen muss, ist den Namen der Pflanze in einem Detail oder
+   der Langbeschreibung zu erwaehnen.
+   Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich
+   bequem anzeigen lassen, was es alles an Kraeutern gibt, die man
+   nehmen kann.
+
+
+BEMERKUNGEN
+===========
+
+   Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
+   werden koennen, muss der Raum erst in einem Master eingetragen werden.
+   Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
+   gerne nimmt Humni die derzeit entgegen.
+   Die Kraeuter wurden von der Balance bereits alle im vorhinein
+   abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
+   Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
+   alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".
+
+
+BEISPIELE
+=========
+
+   #include <items/kraeuter/kraeuterliste.h>
+   inherit "/std/room/kraeuter";
+   inherit "/std/room";
+
+
+
+   void create()
+   {
+     ::create();
+     SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
+     AddPlant(FELDKLEE);
+   }
+
+
+SIEHE AUCH
+==========
+
+   AddItem();
+
 18.01.2015, Zesstra
-
