exit()
******


FUNKTION
========

   varargs void exit(object liv, object dest);


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

   /std/room/description.c


ARGUMENTE
=========

   liv - (object) Das bewegte Lebewesen.
   dest - (object) Das Environment, in welches bewegt wird.


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

   Diese Funktion wird immer dann aufgerufen, wenn ein Lebewesen den
   Raum verlaesst. Standardmaessig werden hier ggf. die Raummeldungen
   abgestellt, man kann aber auch eigene Checks einhaengen. In dem Fall MUSS
   man aber das geerbte exit() auf jeden Fall aufrufen.


RUeCKGABEWERT
=============

   keiner


BEMERKUNG
=========

   Man beachte, dass this_player() 0 sein kann, wenn z.B. ein netztoter Spieler
   Spieler den Raum verlaesst.
   Man beachte ausserdem, dass this_player() nicht unbedingt das bewegte Living
   sein muss. Wenn z.B. jemand ein Lebewesen bewegt, ist TP der, der die
   Bewegung durchfuehrt, nicht das Lebewesen.


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

   init(), this_player(), previous_object(), caller_stack(),
   NotfiyLeave(), NotifyRemove(), NotifyDestruct()

Last modified: 25.02.2009, Zesstra
