diff --git a/doc/lfun/buy_obj b/doc/lfun/buy_obj
index bf1995b..0f0b965 100644
--- a/doc/lfun/buy_obj
+++ b/doc/lfun/buy_obj
@@ -1,42 +1,65 @@
+
 buy_obj()
+*********
 
-FUNKTION:
-	static string buy_obj(mixed ob, int short);
 
-DEFINIERT IN:
-	/std/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-	ob - der Gegenstand bei dem geprueft werden soll, ob der Laden ihn
-	     an this_player() verkauft. Sollte es sich hierbei um ein
-	     FixedObject handeln, wird ein String uebergeben, ansonsten ein
-	     object.
-        short - Bisher noch nicht in Benutzung. Aber fuer die Zukunft
-             vorgesehn, falls man mehrere Objekte auf einmal kauft.
-             Ein auswerten ist keine Pflicht, waere aber praktisch, damit
-             der Scroll dabei nicht zu gross wird.
+   static string buy_obj(mixed ob, int short);
 
-RUeCKGABEWERT:
-        Ein String was der Haendler sagen soll wieso der Gegenstand nicht
-	verkauft wird. Der String wird dabei wie folgt umgebrochen:
-        break_string(str, 78, Name(WER, 1)+" sagt: ")
-BESCHREIBUNG:
-	Durch ueberschreiben dieser Funktion ist es moeglich bestimmte
-	Objekte (wie z.b. Questobjekte) nur an ausgewaehlte Spieler zu
-	verkaufen). Aber auch abfragen ob der Laden ueberhaupt mit
-	this_player() handelt, sind moeglich.
 
-BEISPIELE:
-	static string buy_obj(mixed ob, int short)
-	{
-	   if (PL->QueryProp(P_RACE)=="Zwerg")
-	      return "Ich verkaufe nichts an Zwerge!";
-	   return ::buy_obj(ob, short);
-	}
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	sell_obj(), AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
-        /std/shop.c
+   /std/shop.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob - der Gegenstand bei dem geprueft werden soll, ob der Laden ihn
+        an this_player() verkauft. Sollte es sich hierbei um ein
+        FixedObject handeln, wird ein String uebergeben, ansonsten ein
+        object.
+   short - Bisher noch nicht in Benutzung. Aber fuer die Zukunft
+        vorgesehn, falls man mehrere Objekte auf einmal kauft.
+        Ein auswerten ist keine Pflicht, waere aber praktisch, damit
+        der Scroll dabei nicht zu gross wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Ein String was der Haendler sagen soll wieso der Gegenstand nicht
+   verkauft wird. Der String wird dabei wie folgt umgebrochen:
+   break_string(str, 78, Name(WER, 1)+" sagt: ")
+
+
+BESCHREIBUNG
+============
+
+   Durch ueberschreiben dieser Funktion ist es moeglich bestimmte
+   Objekte (wie z.b. Questobjekte) nur an ausgewaehlte Spieler zu
+   verkaufen). Aber auch abfragen ob der Laden ueberhaupt mit
+   this_player() handelt, sind moeglich.
+
+
+BEISPIELE
+=========
+
+   static string buy_obj(mixed ob, int short)
+   {
+      if (PL->QueryProp(P_RACE)=="Zwerg")
+         return "Ich verkaufe nichts an Zwerge!";
+      return ::buy_obj(ob, short);
+   }
+
+
+SIEHE AUCH
+==========
+
+   sell_obj(), AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+   /std/shop.c
+
 Last modified: Thu Mar 4 15:26:13 1999 by Padreic
