
moved_objects()
***************


FUNKTION
========

   public object *moved_objects(void);


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

   /std/living/put_and_get.c


ARGUMENTE
=========

   keine


BESCHREIBUNG
============

   Mit dieser Funktion lassen sich die Objekte ermitteln, die das Lebewesen
   beim letzten Aufruf von drop_objects(L) oder einer aehnlichen Funktion
   bewegt hat.


RUECKGABEWERT
=============

   Array mit den zuletzt bewegten Objekten, oder ein leeres Array, falls
   keine Objekte auf die Beschreibung des letzten drop_objects() /
   pick_objects() / put_objects() / give_objects() passten.


BEISPIELE
=========

   siehe drop_objects() und give_objects()


SIEHE AUCH
==========

   drop_objects(L), give_objects(L), pick_objects(L), put_objects(L),
   show_objects(L), NotifyMove(L)

Last modified: Thu Aug 28 22:19:26 2008 by Amynthor
