diff --git a/doc/lfun/sell_obj b/doc/lfun/sell_obj
index 8c362f1..580fd87 100644
--- a/doc/lfun/sell_obj
+++ b/doc/lfun/sell_obj
@@ -1,52 +1,59 @@
-sell_obj()
-
-Funktion:
-    static string sell_obj(object ob, int short)
-
-Definiert in:
-    /std/room/shop
-
-Argumente:
-    ob:
-      Das anzukaufende Objekt
-    short:
-      Gibt an, ob der Verkaeufer nur ein Objekt (0) oder mehrere (1) 
-      verkauft. (Verkaufe alles etc.)
-
-Beschreibung:
-    Ermittelt ob der Laden bereit ist, <ob> anzukaufen.
-
-Rueckgabewert:
-    Meldung die ausgegeben wird, wenn ein Objekt abgelehnt wird oder 0.
-
-Bemerkung:
-    Man sollte im normalfall _niemals_ einfach 0 zurueckgeben, sondern das 
-    geerbte sell_obj() aus /std/room/shop, damit beispielsweise P_NOBUY 
-    beachtet wird.
-
-Beispiel:
-    Ein Schmied, der nur Waffen ankauft:
-    
-    protected void create()
-    {
-      ...
-    }
-    
-    static string sell_obj(object ob, int short)
-    {
-      if(!ob->QueryProp(P_WEAPON_TYPE))
-      {
-        return "Ich bin nur an Waffen interessiert.";
-      }
-      return ::sell_obj(ob,short);
-    }
-
-Siehe auch:
-    Funktionen:
-      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(), 
-      QueryStorageRoom(), QueryBuyValue(), QueryBuyFact(), buy_obj()
-    Properties:
-      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
-
-------------------------------------------------------------------------------
-Letzte Aenderung: 21.05.2014, Bugfix
+
+sell_obj()
+**********
+
+sell_obj()
+
+Funktion:
+   static string sell_obj(object ob, int short)
+
+Definiert in:
+   /std/room/shop
+
+Argumente:
+   ob:
+      Das anzukaufende Objekt
+
+   short:
+      Gibt an, ob der Verkaeufer nur ein Objekt (0) oder mehrere (1)
+      verkauft. (Verkaufe alles etc.)
+
+Beschreibung:
+   Ermittelt ob der Laden bereit ist, <ob> anzukaufen.
+
+Rueckgabewert:
+   Meldung die ausgegeben wird, wenn ein Objekt abgelehnt wird oder 0.
+
+Bemerkung:
+   Man sollte im normalfall _niemals_ einfach 0 zurueckgeben, sondern
+   das geerbte sell_obj() aus /std/room/shop, damit beispielsweise
+   P_NOBUY beachtet wird.
+
+Beispiel:
+   Ein Schmied, der nur Waffen ankauft:
+
+   protected void create() {
+
+      ...
+
+   }
+
+   static string sell_obj(object ob, int short) {
+
+      if(!ob->QueryProp(P_WEAPON_TYPE)) {
+
+         return "Ich bin nur an Waffen interessiert.";
+
+      } return ::sell_obj(ob,short);
+
+   }
+
+Siehe auch:
+   Funktionen:
+      AddFixedObject(), RemoveFixedObject(), SetStorageRoom(),
+      QueryStorageRoom(), QueryBuyValue(), QueryBuyFact(), buy_obj()
+
+   Properties:
+      P_KEEPER, P_MIN_STOCK, P_STORE_CONSUME
+
+Letzte Aenderung: 21.05.2014, Bugfix
