Update fuer automatisch erzeugte Files.
Change-Id: I4ca905ed2b82c336aed038d8aa23c9e5e9281e18
diff --git a/doc/lfun/init b/doc/lfun/init
index 481eec2..813c8f3 100644
--- a/doc/lfun/init
+++ b/doc/lfun/init
@@ -6,7 +6,7 @@
FUNKTION
========
- void init();
+ public varargs void init(object origin);
DEFINIERT IN
@@ -18,7 +18,9 @@
ARGUMENTE
=========
- keine
+ object origin
+ Ursprungsumgebung der Bewegung / letzte Umgebung des Lebewesen
+ (sofern existent)
BESCHREIBUNG
@@ -32,12 +34,32 @@
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.
+ 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(). Der andere Weg ist aber natuerlich
+ immer noch moeglich.
+
+ Der Ablauf der init()-Kette ist wie folgt:
+
+ 1. 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.
+
+ 2. 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.
+
+ 3. Schliesslich wird in dem Fall, dass D lebendig ist, in X
+ init() aufgerufen, wobei this_player() auf D gesetzt ist.
+
+ Das Argument <origin> kann genutzt werden, um herauszufinden, wo
+ das Lebewesen nun eigentlich herkam.
RUeCKGABEWERT
@@ -49,43 +71,44 @@
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.
+ * Wenn man init() ueberschreibt und vergisst, in etwaigen
+ geerbten Programmen das init() zu rufen, resultiert das in
+ schweren Bugs
+
+ * Das Argument <origin> gab es frueher nicht und es ist
+ weitgehend optional. Die Standardlib uebergibt es, aber nicht
+ alle (speziell) aeltere Programme uebergeben es weiter an ihre
+ geerbten init().
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:
+ 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
+ 1. D->init(); // this_player() == X
- Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
- wie folgt aus:
+ 2. X->init(); // this_player() == L1
- X->init(); // this_player() == L1
+ 3. L1->init(); // this_player() == X
+
+ 4. N1->init(); // this_player() == X
+
+ 5. N2->init(); // this_player() == X
+
+ Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das
+ Ganze wie folgt aus:
+
+ 1. X->init(); // this_player() == L1
SIEHE AUCH
==========
- exit(), AddCmd(), add_action(),
- NotifyInsert()
+ *exit()*, *AddCmd()*, *NotifyInsert()*
-Last modified: 04.08.2007, Zesstra
+ add_action(E)
+
+Last modified: 07.03.2018, Zesstra