
locate_objects()
****************


FUNKTION
========

   object *locate_objects(string desc, int info);


DEFINIERT IN
============

   /std/container/restrictions.c


ARGUMENTE
=========

   desc
        Die Umschreibung des gesuchten Objektes.

   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:

   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
