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
