diff --git a/doc/lfun/AddFixedObject b/doc/lfun/AddFixedObject
index 3e2e172..5875ee2 100644
--- a/doc/lfun/AddFixedObject
+++ b/doc/lfun/AddFixedObject
@@ -1,52 +1,74 @@
+
 AddFixedObject()
+****************
 
-FUNKTION:
-        varargs void AddFixedObject(string str, int val, mixed ids);
 
-DEFINIERT IN:
-        /std/room/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-        str
-          Der absolute Filename eines Objekts, das in quasi beliebiger Menge
-          vom betreffenden Laden verkauft werden soll.
-        val
-          Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
-          angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
-          selbst ermittelt.
-          Der Verkaufspreis ist 3 * Wert des Objekts.
-        ids
-          String oder Stringarray mit der ID oder den IDs, ueber die man das
-          Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
-          ID-Liste aus der blueprint des Objekts ausgelesen.
+   varargs void AddFixedObject(string str, int val, mixed ids);
 
-BESCHREIBUNG:
-        Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
-        in ihm in unbegrenzter Anzahl verkauft werden soll.
-        WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen, 
-        dass die Blueprint die notwendigen Informationen
-        (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
-        einfachsten Fall, dass im create() auf
-          if (!clonep()) return;
-        verzichtet wird.
 
-RUeCKGABEWERT:
-        keiner
-        
-BEISPIELE:
-        AddFixedObject("/obj/fackel", 5000, "fackel");
-          Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
-          kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
-          id "fackel" kaufen.
-          
-        AddFixedObject("/obj/fackel");
-          Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
-          /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
-          alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
-          auch nur "fackel".
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	RemoveFixedObject(), SetStorageRoom(), /std/store.c
-        
-----------------------------------------------------------------------------
-Letzte Aenderung: Sat Nov  9 12:59:25 2002 durch Bambi
+   /std/room/shop.c
+
+
+ARGUMENTE
+=========
+
+   str
+     Der absolute Filename eines Objekts, das in quasi beliebiger Menge
+     vom betreffenden Laden verkauft werden soll.
+   val
+     Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
+     angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
+     selbst ermittelt.
+     Der Verkaufspreis ist 3 * Wert des Objekts.
+   ids
+     String oder Stringarray mit der ID oder den IDs, ueber die man das
+     Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
+     ID-Liste aus der blueprint des Objekts ausgelesen.
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
+   in ihm in unbegrenzter Anzahl verkauft werden soll.
+   WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen,
+   dass die Blueprint die notwendigen Informationen
+   (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
+   einfachsten Fall, dass im create() auf
+     if (!clonep()) return;
+   verzichtet wird.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   AddFixedObject("/obj/fackel", 5000, "fackel");
+     Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
+     kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
+     id "fackel" kaufen.
+
+
+
+   AddFixedObject("/obj/fackel");
+     Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
+     /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
+     alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
+     auch nur "fackel".
+
+
+SIEHE AUCH
+==========
+
+   RemoveFixedObject(), SetStorageRoom(), /std/store.c
