
init()
******


FUNKTION
========

   void init();


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

   /std/room/description.c


ARGUMENTE
=========

   keine


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

   init() wird immer dann aufgerufen, wenn ein lebendes Objekt in die
   Naehe anderer Objekte bewegt wird oder ein nicht lebendiges Objekt
   in die Naehe von Lebewesen gelangt. init() wird dabei in allen
   Objekten aufgerufen, bei denen es notwendig ist.

   Der Hauptzweck dieser Funktion besteht darin, den Objekten
   untereinander ihre jeweiligen Befehle zugaenglich zu machen.
   Waehrend dies in anderen MudLibs durch eine Reihe von
   add_action()-Aufrufen im Rumpf von init() geschah, geschieht dies in
   der MG-MudLib bei Objekten, die /std/thing/commands.c erben
    (das sind zB. alle Standardobjekte) quasi automatisch
    (dort werden die Befehle dann per AddCmd() im create() angemeldet,
     man spart sich die Implementierung von init() und dem Mud somit
     Speicher). Der andere Weg ist aber natuerlich immer noch moeglich.


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

   keiner


BEMERKUNGEN
===========

   Der Ablauf der init()-Kette ist wie folgt:
   o Ist das Objekt X, welches ins Zielobjekt D bewegt wurde, ein
     Lebewesen, so wird in D init() aufgerufen, wobei this_player() auf
     X gesetzt ist.
   o Dann wird fuer jedes Objekt C in D folgendes ausgefuehrt:
     + Ist C ein Lebewesen, dann wird init() in X aufgerufen, wobei
       this_player() auf C gesetzt ist.
     + Ist X ein Lebewesen, dann wird init() in C aufgerufen, wobei
     this_player() auf X gesetzt ist.
   o Schliesslich wird in dem Fall, dass D lebendig ist, in X init()
     aufgerufen, wobei this_player() auf D gesetzt ist.


BEISPIELE
=========

   D sei ein Raum, in dem sich das Lebewesen L1 sowie die Gegenstaende
   N1 und N2 befinden.
   Betritt ein Spieler X diesen Raum, so werden folgende init()s
   aufgerufen:

     D->init();  // this_player() == X
     X->init();  // this_player() == L1
     L1->init(); // this_player() == X
     N1->init(); // this_player() == X
     N2->init(); // this_player() == X

   Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
   wie folgt aus:

     X->init();    // this_player() == L1


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

         exit(), AddCmd(), add_action(),
   NotifyInsert()

Last modified: 04.08.2007, Zesstra
