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
