diff --git a/doc/lfun/locate_objects b/doc/lfun/locate_objects
index 1d56e9a..5854980 100644
--- a/doc/lfun/locate_objects
+++ b/doc/lfun/locate_objects
@@ -1,54 +1,79 @@
+
 locate_objects()
+****************
 
-FUNKTION:
-     object *locate_objects(string desc, int info);
 
-DEFINIERT IN:
-     /std/container/restrictions.c
+FUNKTION
+========
 
-ARGUMENTE:
-     desc
-          Die Umschreibung des gesuchten Objektes.
+   object *locate_objects(string desc, int info);
 
-     info
-          Ist ungleich 0, wenn diese Funktion von /std/living/put_and_get.c
-          aus aufgerufen wurde.
 
-BESCHREIBUNG:
-     Diese Funktion erweitert die Funktionalitaet von present_objects()
-     insofern, als dass es moeglich ist, auch noch Behaelter innerhalb des
-     Behaelters zu durchsuchen. Das genaue Verhalten haengt von desc ab:
+DEFINIERT IN
+============
 
-     Ist desc von der Form "<id>", so wird das Ergebnis von
-     present_objects(desc) zurueckgegeben.
+   /std/container/restrictions.c
 
-     Ist desc von der Form "<gesucht> in <id>", so wird in allen Objekten,
-     die von present_objects("<id>") erfasst wurden,
-     locate_objects("<desc>") aufgerufen. Zurueckgegeben werden alle auf
-     diese Weise gefundenen Objekte.
 
-RUeCKGABEWERT:
-     Array von Objekten, die auf die oben geschilderte Art und Weise
-     ermittelt wurden. Konnte kein Objekt ermittelt werden, wird ein leeres
-     Array zurueckgegeben.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     Theoretisch sollte es moeglich sein, ueber desc rekursiv mehrere
-     Behaelterebenen erfassen zu koennen (etwa mit "schwert in beutel in
-     beutel in wargon"). In der aktuellen Implementierung klappt das jedoch
-     nicht; nach dem ersten "in" ist Schluss!
+   desc
+        Die Umschreibung des gesuchten Objektes.
 
-BEISPIELE:
-     Was steckt alles dem Beutel, den der Spieler bei sich traegt?
+   info
+        Ist ungleich 0, wenn diese Funktion von /std/living/put_and_get.c
+        aus aufgerufen wurde.
 
-     object *obs;
-     obs = this_player()->locate_objects("alles in beutel");
 
-     Traegt der Spieler keinen Beutel bei sich oder ist dieser leer, so wird
-     ein leeres Array zurueckgegeben.
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-     present_objects(), /std/container/restrictions.c
+   Diese Funktion erweitert die Funktionalitaet von present_objects()
+   insofern, als dass es moeglich ist, auch noch Behaelter innerhalb des
+   Behaelters zu durchsuchen. Das genaue Verhalten haengt von desc ab:
 
-----------------------------------------------------------------------------
+   Ist desc von der Form "<id>", so wird das Ergebnis von
+   present_objects(desc) zurueckgegeben.
+
+   Ist desc von der Form "<gesucht> in <id>", so wird in allen Objekten,
+   die von present_objects("<id>") erfasst wurden,
+   locate_objects("<desc>") aufgerufen. Zurueckgegeben werden alle auf
+   diese Weise gefundenen Objekte.
+
+
+RUeCKGABEWERT
+=============
+
+   Array von Objekten, die auf die oben geschilderte Art und Weise
+   ermittelt wurden. Konnte kein Objekt ermittelt werden, wird ein leeres
+   Array zurueckgegeben.
+
+
+BEMERKUNGEN
+===========
+
+   Theoretisch sollte es moeglich sein, ueber desc rekursiv mehrere
+   Behaelterebenen erfassen zu koennen (etwa mit "schwert in beutel in
+   beutel in wargon"). In der aktuellen Implementierung klappt das jedoch
+   nicht; nach dem ersten "in" ist Schluss!
+
+
+BEISPIELE
+=========
+
+   Was steckt alles dem Beutel, den der Spieler bei sich traegt?
+
+   object *obs;
+   obs = this_player()->locate_objects("alles in beutel");
+
+   Traegt der Spieler keinen Beutel bei sich oder ist dieser leer, so wird
+   ein leeres Array zurueckgegeben.
+
+
+SIEHE AUCH
+==========
+
+   present_objects(), /std/container/restrictions.c
+
 Last modified: Wed May 8 10:20:36 1996 by Wargon
