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

