
moved_where()
*************


FUNKTION
========

   public object moved_where(void);


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

   /std/living/put_and_get.c


ARGUMENTE
=========

   keine


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

   Mit dieser Funktion laesst sich ermitteln, wohin das Lebewesen zuletzt
   mittels put_objects(L) oder give_objects(L) etwas bewegt oder wem es mit
   show_objects(L) etwas gezeigt hat.


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

   Der Container oder das Lebewesen, wohin die Gegenstaende bewegt wurden.


BEISPIEL
========

   siehe give_objects()


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

   put_objects(L), give_objects(L), show_objects(L), NotifyInsert(L),
   P_LAST_CONTENT_CHANGE

Last modified: Thu Aug 28 22:16:15 2008 by Amynthor
