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
