PreventInsertLiving()
=====================

FUNKTION
--------
::

     int PreventInsertLiving(object ob);

DEFINIERT IN
------------
::

     /std/container/restrictions.c

ARGUMENTE
---------
::

     ob
          Das Living, das in den Behaelter eingefuegt werden soll.

BESCHREIBUNG
------------
::

     Mit dieser Funktion kann ein Behaelter pruefen, ob er das Living ob
     aufnehmen moechte oder nicht.

RUeCKGABEWERT
-------------
::

     0, wenn das Living aufgenommen werden kann; ein Wert groesser als 0
     zeigt an, dass das Living nicht aufgenommen werden soll.

BEMERKUNGEN
-----------
::

     Wenn ob mit dem Flag M_NOCHECK bewegt wird, wird PreventInsertLiving() 
     zwar aufgerufen, das Living wird jedoch auf jeden Fall in den Behaelter
     bewegt, unabhaengig vom Rueckgabewert!

SIEHE AUCH
----------
::

     PreventLeaveLiving(), /std/container/restrictions.c,
     PreventMove(), PreventInsert(), PreventLeave(),
     NotifyMove(), NotifyInsert(), NotifyLeave(), NotifyRemove(),
     move(), init(), exit(),
     InitAttack(), ExitAttack()


Last modified: 04.08.2007, Zesstra

