diff --git a/doc/sphinx/lfun/init.rst b/doc/sphinx/lfun/init.rst
index a2855e5..ebd7191 100644
--- a/doc/sphinx/lfun/init.rst
+++ b/doc/sphinx/lfun/init.rst
@@ -3,89 +3,88 @@
 
 FUNKTION
 --------
-::
 
-	void init();
+  public varargs void init(object origin);
 
 DEFINIERT IN
 ------------
-::
 
-	/std/room/description.c
+  /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.
+  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.
+  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(). 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.
 
 RUeCKGABEWERT
 -------------
-::
 
-	keiner
+  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.
+  * Wenn man init() ueberschreibt und vergisst, in etwaigen geerbten Programmen
+    das init() zu rufen, resultiert das in schweren Bugs
 
 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 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
+    1. D->init();  // this_player() == X
+    2. 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:
+  Gelangt dagegen ein nichtlebendiges Objekt nach D, so sieht das Ganze
+  wie folgt aus:
 
-	  X->init();    // this_player() == L1
+    1. X->init();    // this_player() == L1
 
 SIEHE AUCH
 ----------
-::
 
-	exit(), AddCmd(), add_action(),
-  NotifyInsert()
+  :doc:`exit`, :doc:`AddCmd`, :doc:`NotifyInsert`
 
-Last modified: 04.08.2007, Zesstra
+  add_action(E)
+
+Last modified: 07.03.2018, Zesstra
 
