diff --git a/doc/lfun/SetStorageRoom b/doc/lfun/SetStorageRoom
index 4655a1e..f1d66a5 100644
--- a/doc/lfun/SetStorageRoom
+++ b/doc/lfun/SetStorageRoom
@@ -1,74 +1,108 @@
+
 SetStorageRoom()
+****************
 
-FUNKTION:
-        void SetStorageRoom(string store);
 
-DEFINIERT IN:
-        /std/room/shop.c
+FUNKTION
+========
 
-ARGUMENTE:
-        store
-          Dateiname des Lagers, in dem die aufgekauften Objekte aufbewahrt
-          werden.
+   void SetStorageRoom(string store);
 
-RUeCKGABEWERT:
-        keiner
 
-BESCHREIBUNG:
-        Mit dieser Funktion wird dem Laden bekannt gegeben, welches Objekt
-        als Lager fuer angekaufte Objekte dienen soll. Jeder Laden muss
-        explizit einen eigenen Lagerraum setzen, ansonsten wird ein 
-        Laufzeitfehler ausgeloest und der Laden ist nicht ladbar.
-        
-        Das Speicherobjekt sollte /std/store.c erben, da dort einige
-        Aufraeumfunktionen definiert sind. Entscheidend fuer selbige sind
-        die Properties P_MIN_STOCK und P_STORE_CONSUME.
+DEFINIERT IN
+============
 
-BEISPIELE:
-        Der Raum 'myladen.c' koennte etwa so aussehen:
-          
-          // myladen.c
-          inherit "/std/shop";
-          #include <properties.h>
-          
-          protected void create() {
-            ::create();
-            SetProp(...); // Beschreibung wie bei normalen Raeumen
-            SetStorageRoom("/d/beispiel/mystore");
-            AddFixedObject("/items/fackel");
-          }
+   /std/room/shop.c
 
-        In diesem Laden wird nun die Standardfackel als mengenmaessig 
-        unbegrenzter Artikel verkauft.
 
-        Der zugehoerige Lagerraum 'mystore.c' kann dann im einfachsten Fall
-        so aussehen:
-          
-          // mystore.c
-          inherit "/std/store";
-          #include <rooms.h>  // Fuer AddItem-Konstanten
-          
-          protected void create() {
-            ::create();
-            // KEINE weiteren Beschreibungen!
-            // 1. erbt der Speicher keine Beschreibungsmodule,
-            // 2. sollen da eh nur Sachen und keine Spieler rein!
-            AddItem("/items/schaufel", REFRESH_REMOVE);
-          }
-        
-        Der Laden verkauft nun auch Schaufeln, jedoch nur eine pro Reset.
+ARGUMENTE
+=========
 
-HINWEISE:        
-        Fuer standardmaessig verkaufte Waren beachte man den Unterschied 
-        zwischen den Funktionen AddItem() und AddFixedObject().
-        Die erstgenannte Funktion ist im Lager zu verwenden, letztere jedoch
-        im Laden.
+   store
+     Dateiname des Lagers, in dem die aufgekauften Objekte aufbewahrt
+     werden.
 
-SIEHE AUCH:
-        Allgemeines:  laden
-        Funktionen:   AddItem(L), AddFixedObject(L), RemoveFixedObject(L) 
-        Basisobjekte: /std/store.c
-        Properties:   P_MIN_STOCK, P_STORE_CONSUME
 
-----------------------------------------------------------------------------
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion wird dem Laden bekannt gegeben, welches Objekt
+   als Lager fuer angekaufte Objekte dienen soll. Jeder Laden muss
+   explizit einen eigenen Lagerraum setzen, ansonsten wird ein
+   Laufzeitfehler ausgeloest und der Laden ist nicht ladbar.
+
+
+
+   Das Speicherobjekt sollte /std/store.c erben, da dort einige
+   Aufraeumfunktionen definiert sind. Entscheidend fuer selbige sind
+   die Properties P_MIN_STOCK und P_STORE_CONSUME.
+
+
+BEISPIELE
+=========
+
+   Der Raum 'myladen.c' koennte etwa so aussehen:
+
+
+
+     // myladen.c
+     inherit "/std/shop";
+     #include <properties.h>
+
+
+
+     protected void create() {
+       ::create();
+       SetProp(...); // Beschreibung wie bei normalen Raeumen
+       SetStorageRoom("/d/beispiel/mystore");
+       AddFixedObject("/items/fackel");
+     }
+
+   In diesem Laden wird nun die Standardfackel als mengenmaessig
+   unbegrenzter Artikel verkauft.
+
+   Der zugehoerige Lagerraum 'mystore.c' kann dann im einfachsten Fall
+   so aussehen:
+
+
+
+     // mystore.c
+     inherit "/std/store";
+     #include <rooms.h>  // Fuer AddItem-Konstanten
+
+
+
+     protected void create() {
+       ::create();
+       // KEINE weiteren Beschreibungen!
+       // 1. erbt der Speicher keine Beschreibungsmodule,
+       // 2. sollen da eh nur Sachen und keine Spieler rein!
+       AddItem("/items/schaufel", REFRESH_REMOVE);
+     }
+
+
+
+   Der Laden verkauft nun auch Schaufeln, jedoch nur eine pro Reset.
+
+HINWEISE:
+   Fuer standardmaessig verkaufte Waren beachte man den Unterschied
+   zwischen den Funktionen AddItem() und AddFixedObject(). Die
+   erstgenannte Funktion ist im Lager zu verwenden, letztere jedoch im
+   Laden.
+
+
+SIEHE AUCH
+==========
+
+   Allgemeines:  laden
+   Funktionen:   AddItem(L), AddFixedObject(L), RemoveFixedObject(L)
+   Basisobjekte: /std/store.c
+   Properties:   P_MIN_STOCK, P_STORE_CONSUME
+
 Last modified: 19-Jun-2015, Arathorn
