diff --git a/doc/lfun/AddInfo b/doc/lfun/AddInfo
index a75a22d..e2774d5 100644
--- a/doc/lfun/AddInfo
+++ b/doc/lfun/AddInfo
@@ -108,7 +108,7 @@
    AddInfo("muenzen",
        "fluestert: Du willst Geld?",
        0,
-       "fluestert @WEM etwas zu.");
+       "fluestert @WEM1 etwas zu.");
 
    // "frage monster nach geld": alle im Raum hoeren
    //  Das Monster sagt: Ich habe zwar kein Geld, aber [...]
@@ -185,7 +185,7 @@
    protected string question_gold() {
      // wieviel Kohle hat der Spieler
      int money = this_player()->QueryMoney();
-     string *y = map(deep_inventory(this_player()),
+     string* y = map(deep_inventory(this_player()),
                    function string(object o) {
                      if(o->QueryMaterial(MAT_GOLD)>0 &&
                         strstr(object_name(o),"/items/money")<0 &&
@@ -232,9 +232,9 @@
    //   Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
    //   Das Monster murmelt: und <object2> aus Gold."
    // - die Umstehenden hoeren:
-   //   "Das Monster murmelt @WEM etwas zu."
+   //   "Das Monster murmelt @WEM1 etwas zu."
    //   oder
-   //   "Das Monster murmelt @WEM etwas zu und glotzt ihn/sie gierig an."
+   //   "Das Monster murmelt @WEM1 etwas zu und glotzt ihn/sie gierig an."
 
 
 SIEHE AUCH
diff --git a/doc/lfun/AddSpell b/doc/lfun/AddSpell
index 1661f8c..b8175e5 100644
--- a/doc/lfun/AddSpell
+++ b/doc/lfun/AddSpell
@@ -6,9 +6,10 @@
 FUNKTION
 ========
 
-   varargs int AddSpell(int rate, int damage, string TextForEnemy,
-                        string TextForOthers, string|string* dam_type,
-                        string|closure func, int|mapping spellarg)
+   varargs int AddSpell(int rate, int damage,
+      string|<int|spell>* TextForEnemy, string|<int|string>*
+      TextForOthers, string|string* dam_type, string|closure func,
+      int|mapping spellarg)
 
 
 DEFINIERT IN
@@ -21,85 +22,104 @@
 =========
 
    rate          - Relative Haeufigkeit der Anwendung (*),
-                   muss >= 0 sein
+      muss >= 0 sein
+
    damage        - Der Schadenswert fuer Defend(),
-                   muss > 0 sein
+      muss > 0 sein
+
    TextForEnemy  - Text, den der Feind erhalten soll
+      String <text> oder Array der Form ({<text>,<messagetype>})
+      (Siehe ReceiveMsg())
+
    TextForOthers - Text, den andere im Raum erhalten sollen
+      String <text> oder Array der Form ({<text>,<messagetype>})
+      (Siehe ReceiveMsg())
+
    dam_type      - Schadenstyp(en) fuer Defend(),
-                   (Default: ({DT_MAGIC}) )
+      (Default: ({DT_MAGIC}) fuer Magische und ({DT_BLUDGEON}) fuer
+      physikalische Angriffe)
+
    func          - Funktionsname oder Closure, die nach Anwendung
-                   aufgerufen werden soll
-                   (Optional, bekommt als Argumente object enemy,
-                   int real_damage, string* dam_type)
+      aufgerufen werden soll (Optional, bekommt als Argumente object
+      enemy, int real_damage, string* dam_type)
+
    spellarg      - Spell-Argument fuer Defend(), Default ist "1"
 
 
 BESCHREIBUNG
 ============
 
-   Ermoeglicht einfache Angriffs-Zaubersprueche fuer NPCs. Das Ausfuehren von
-   Spells verursacht bei dem NPC keine KP-Kosten.
+   Ermoeglicht einfache Angriffs-Zaubersprueche fuer NPCs. Das
+   Ausfuehren von Spells verursacht bei dem NPC keine KP-Kosten.
 
-   Mit P_SPELLRATE wird die generelle Wahrscheinlichkeit der Ausfuehrung
-   solcher Spells im Heartbeat angegeben, mit 'rate' kann man die relative
-   Wahrscheinlichkeit der Spells untereinander steuern.
+   Mit P_SPELLRATE wird die generelle Wahrscheinlichkeit der
+   Ausfuehrung solcher Spells im Heartbeat angegeben, mit 'rate' kann
+   man die relative Wahrscheinlichkeit der Spells untereinander
+   steuern.
 
    (*) Relative Haeufigkeit heisst, dass sich alle 'rate' der Spells
-   aufaddieren und ein einzelnes 'rate' dann in Relation zur Gesamtsumme
-   steht. D.h. drei Spells mit 80, 10, 10 (Summe 100) haben die selben
-   Aufruf-Wahrscheinlichkeiten wie drei Spells mit 120, 15, 15 oder drei
-   Spells mit 160, 20, 20.
+   aufaddieren und ein einzelnes 'rate' dann in Relation zur
+   Gesamtsumme steht. D.h. drei Spells mit 80, 10, 10 (Summe 100)
+   haben die selben Aufruf-Wahrscheinlichkeiten wie drei Spells mit
+   120, 15, 15 oder drei Spells mit 160, 20, 20.
 
    Ein Spell wird immer in folgender Reihenfolge abgearbeitet:
-    1. Die Texte werden an die Beteiligten ausgegeben.
-    2. Es wird ggf. SpellDefend gerufen (wenn kein SP_PHYSICAL_ATTACK).
-       Abbruch bei Schutz.
-    3. Im Opfer wird Defend() mit den angegebenen Werten aufgerufen.
-       Abbruch bei Tod/Zerstoerung des Opfers.
-    4. Eine Funktion, so definiert, wird ausgefuehrt.
+
+   1. Die Texte werden an die Beteiligten ausgegeben.
+
+   2. Es wird ggf. SpellDefend gerufen (wenn kein
+      SP_PHYSICAL_ATTACK). Abbruch bei Schutz.
+
+   3. Im Opfer wird Defend() mit den angegebenen Werten aufgerufen.
+      Abbruch bei Tod/Zerstoerung des Opfers.
+
+   4. Eine Funktion, so definiert, wird ausgefuehrt.
 
 
 BEMERKUNGEN
 ===========
 
-   TextForOthers wird vor der Ausgabe der Meldung durch replace_personal()
-   geschickt, d.h. es koennen Platzhalter wie @WER1, @WEMQP1 und aehnliche
-   verwendet werden (siehe auch die Manpage von replace_personal()).
-   Da Ersetzungen nur fuer das Gegnerobjekt beruecksichtigt werden, koennen
-   nur Platzhalter mit Endziffer 1 verwendet werden. Die Ersetzungen werden
-   so gesteuert, dass die eingefuegten Namen nach Satzanfaengen automatisch
-   gross geschrieben werden.
-   Frueher wurden statt replace_personal() die Platzhalter @WER, @WESSEN,
-   @WEM, @WEN verwendet. Diese funktionieren weiterhin, sollten aber nicht
-   mehr in neuem Code benutzt werden.
+   TextForOthers wird vor der Ausgabe der Meldung durch
+   replace_personal() geschickt, d.h. es koennen Platzhalter wie
+   @WER1, @WEMQP1 und aehnliche verwendet werden (siehe auch die
+   Manpage von replace_personal()). Da Ersetzungen nur fuer das
+   Gegnerobjekt beruecksichtigt werden, koennen nur Platzhalter mit
+   Endziffer 1 verwendet werden. Die Ersetzungen werden so gesteuert,
+   dass die eingefuegten Namen nach Satzanfaengen automatisch gross
+   geschrieben werden. Frueher wurden statt replace_personal() die
+   Platzhalter @WER, @WESSEN, @WEM, @WEN verwendet. Diese
+   funktionieren weiterhin, sollten aber nicht mehr in neuem Code
+   benutzt werden.
 
    In der von AddSpell gerufenen Methode "func" koennen speziellere
-   Sachen mit dem aktuellen Feind angestellt werden koennen. Die Methode
-   muss im selben Objekt definiert sein, sofern der Funktionsname und
-   keine Closure uebergeben wird.
+   Sachen mit dem aktuellen Feind angestellt werden. Die Methode muss
+   im selben Objekt definiert sein, sofern der Funktionsname und keine
+   Closure uebergeben wird.
 
-   Will man einen physischen Angriff ausloesen, MUSS <spellarg> ein Mapping
-   mit ([SP_PHYSICAL_ATTACK: 1]) sein. Bei Uebergeben einer 0 oder Weglassen
-   des Werts wird an Defend das Default '1' (da es Spells sind) uebergeben.
+   Will man einen physischen Angriff ausloesen, MUSS <spellarg> ein
+   Mapping mit ([SP_PHYSICAL_ATTACK: 1]) sein. Bei Uebergeben einer 0
+   oder Weglassen des Werts wird an Defend das Default '1' (da es
+   Spells sind) uebergeben.
 
-   Wenn damage<=0 oder rate<0 oder keine Meldungen uebergeben werden, wird
-   der Spell NICHT eingetragen, sondern die Funktion bricht mit Rueckgabe
-   von 0 ab.
+   Wenn damage<=0 oder rate<0 oder keine Meldungen uebergeben werden,
+   wird der Spell NICHT eingetragen, sondern die Funktion bricht mit
+   Rueckgabe von 0 ab.
 
 
 BEISPIELE
 =========
 
+code-block:
+
    // #1 Einfacher NPC mit drei Spells, Gesamtrate = 100, also sind die
    //    Raten direkt als Prozent Aufrufwahrscheinlichkeit lesbar.
    AddSpell(80, 400,
             "Der Hexer greift Dich mit einem kleinen Feuerball an.\n",
             "Der Hexer greift @WEN mit einem kleinen Feuerball an.\n",
-            ({DT_FIRE, DT_MAGIC}));
+              ({DT_FIRE, DT_MAGIC}));
    AddSpell(10, 800,
             "Der Hexer greift Dich mit einem riesigen Feuerball an.\n",
-            "Der Hexer greift @WEN mit einem riesigen Feuerball an.\n",
+              "Der Hexer greift @WEN mit einem riesigen Feuerball an.\n",
             ({DT_FIRE, DT_MAGIC}));
    AddSpell(8, 100,
             "Der Hexer piekst Dir in die Augen!",
@@ -108,21 +128,28 @@
    AddSpell(2, 5, (string)0, (string)0, (string*)0, "salto_mortalis");
 
    (Kleiner Feuerball mit 80% Wahrscheinlichkeit, riesiger mit 10%,
-    "augen_stechen" mit 8%, "salto_mortalis" mit 2%)
+   "augen_stechen" mit 8%, "salto_mortalis" mit 2%)
+
+code-block:
 
    // Die Funktion "augen_stechen" kann dann so aussehen:
-   void augen_stechen(object enemy, int damage, mixed dam_types ) {
-     if (damage>10 && !enemy->QueryProp(P_BLIND)) {
+   void augen_stechen(object enemy, int damage, mixed dam_types )
+   {
+     if (damage>10 && !enemy->QueryProp(P_BLIND))
+     {
        enemy->SetProp(P_BLIND, 1);
        if(enemy->QueryProp(P_BLIND))
          tell_object(enemy, "Du bist nun blind!\n");
      }
    }
 
+code-block:
+
    // Zur Funktion "salto_mortalis" gibt es keine Meldungen, dennoch
    // wird Defend mit: enemy->Defend(5, ({DT_MAGIC}), 1, this_object())
    // gerufen!
-   void salto_mortalis(object enemy, int damage, mixed dam_types ) {
+   void salto_mortalis(object enemy, int damage, mixed dam_types )
+   {
      // dem geneigten Leser ueberlassen, den Gegner zu toeten
    }
 
@@ -132,6 +159,7 @@
    //    DefendFuncs() ausgewertet). Es muss auch eine physische Schadensart
    //    enthalten sein!
    //    SpellDefend() wird bei diesem Flag nicht mehr am Gegner gerufen.
+
    AddSpell(100, 200+random(200),
      "Die kleine Ratte beisst Dich!\n",
      "@WER wird von einer kleinen Ratte gebissen!\n",
@@ -153,7 +181,7 @@
      "@WER wird von einer kleinen Ratte in die Wade gebissen!\n",
      ({DT_PIERCE, DT_POISON}), (string)0,
      ([SP_PHYSICAL_ATTACK:1, SP_NO_ACTIVE_DEFENSE:1,
-       SP_REDUCE_ARMOUR: armours]));
+     SP_REDUCE_ARMOUR: armours]));
 
    // SP_NO_ACTIVE_DEFENSE = 1 schaltet aktive Abwehr (Karate/Klerus) ab
    // SP_REDUCE_ARMOUR enthaelt eine Liste von Ruestungstypen mit ihren
@@ -164,10 +192,10 @@
 SIEHE AUCH
 ==========
 
-   Sonstiges:  SpellAttack, SpellDefend, Defend, QueryDefend, SelectEnemy
-               replace_personal
-   Properties: P_DISABLE_ATTACK, P_SPELLRATE, P_AGGRESSIVE
-   Abwehr:     Defend, Defend_bsp, SpellDefend
-   Methoden:   modifiers
+   Sonstiges: *SpellAttack()*, *SpellDefend()*, *Defend()*,
+   *QueryDefend()*, *SelectEnemy()*, *ReceiveMsg()*,
+   *replace_personal()*
 
-Zuletzt geaendert: 20.11.2016, Bugfix
+   Properties: *P_DISABLE_ATTACK*, *P_SPELLRATE*, *P_AGGRESSIVE*
+
+Letzte Aenderung: 15.02.2018, Bugfix
diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index 3e40cfc..dd66fa1 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -40,105 +40,104 @@
 BESCHREIBUNG
 ============
 
-   1. Generell
 
-      Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark
-      die Ruestungen und koerpereigenen Abwehrkraefte sind und die
-      Staerke des Schadens dementsprechend vermindert. Ggf. wird der
-      Schaden zugefuegt und der Feind in  die Liste der Feinde
-      aufgenommen. Der Schaden betraegt: (dam-Summe(Ruestungsstaerken
-      )-random(P_BODY+A_DEX))*CheckResistance/10 aber nicht unter 0.
+Generell
+--------
 
-   2. Der Parameter 'spell'
+   Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark die
+   Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke
+   des Schadens dementsprechend vermindert. Ggf. wird der Schaden
+   zugefuegt und der Feind in  die Liste der Feinde aufgenommen. Der
+   Schaden betraegt: (dam-
+   Summe(Ruestungsstaerken)-random(P_BODY+A_DEX))*CheckResistance/10
+   aber nicht unter 0.
 
-      Ist 'spell' 0, dann gilt der Angriff als normale physische
-      Attacke Uebergibt man als 'spell'-Parameter ein Mapping, so gibt
-      es dafuer diverse Flags, die das Ergebnis manipulieren (in
-      new_skills.h enthalten). Nichtangabe eines Flags gilt als 0.
 
-      * SP_PHYSICAL_ATTACK ---------- 0/1 1, wenn Ruestungen wirken
-        sollen, 0 sonst -> entspricht !spell, wenn dieses Int ist
+Der Parameter 'spell'
+---------------------
 
-      * SP_NO_ENEMY ----------------- 0/1 1, falls der Angriff nicht
-        toedlich ist, es also keinen echten Gegner gibt -> es wird
-        dann reduce_hit_points() gerufen statt do_damage()
+   Ist 'spell' 0, dann gilt der Angriff als normale physische Attacke
+   Uebergibt man als 'spell'-Parameter ein Mapping, so gibt es dafuer
+   diverse Flags, die das Ergebnis manipulieren (in new_skills.h
+   enthalten). Nichtangabe eines Flags gilt als 0.
 
-      * SP_NO_ACTIVE_DEFENSE -------- 0/1 1, falls aktive Abwehren
-        (wie zurueckschlagende Amulette, Karateabwehren oder
-        Ausweichmanoever) unterbleiben sollen -> zB bei Kratzen durch
-        Dornen oder Fall aus grosser Hoehe ist aktive Abwehr oder
-        Ausweichen unlogisch
+   * SP_PHYSICAL_ATTACK ---------- 0/1 1, wenn Ruestungen wirken
+     sollen, 0 sonst -> entspricht !spell, wenn dieses Int ist
 
-      * SP_RECURSIVE ---------------- 0/1 1, falls der Spell aus
-        einem Defend gerufen wurde (oder einer DefendFunc) ->
-        verhindert Rekursionsprobleme
+   * SP_NO_ENEMY ----------------- 0/1 1, falls der Angriff nicht
+     toedlich ist, es also keinen echten Gegner gibt -> es wird dann
+     reduce_hit_points() gerufen statt do_damage()
 
-      * SP_NAME --------------------- string Name des Spells
+   * SP_NO_ACTIVE_DEFENSE -------- 0/1 1, falls aktive Abwehren (wie
+     zurueckschlagende Amulette, Karateabwehren oder Ausweichmanoever)
+     unterbleiben sollen -> zB bei Kratzen durch Dornen oder Fall aus
+     grosser Hoehe ist aktive Abwehr oder Ausweichen unlogisch
 
-      * SP_GLOBAL_ATTACK ------------ 0/1 1 bei Flaechenspells
+   * SP_RECURSIVE ---------------- 0/1 1, falls der Spell aus einem
+     Defend gerufen wurde (oder einer DefendFunc) -> verhindert
+     Rekursionsprobleme
 
-      * SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY,
-        values int>=0 Die Schutzwirkung durch P_AC/Magie einer
-        Ruestung wird typabhaengig reduziert. Aufbau eines Mappings im
-        Beispiel:
+   * SP_NAME --------------------- string Name des Spells
 
-           ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht P_BODY:  50,
-           // Koerper zu 50% AT_BELT: 600  // Guertel zu 600% ])
+   * SP_GLOBAL_ATTACK ------------ 0/1 1 bei Flaechenspells
 
-        -> alle 'fehlenden' Eintraege wirken normal
+   * SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY, values
+     int>=0 Die Schutzwirkung durch P_AC/Magie einer Ruestung wird
+     typabhaengig reduziert. Aufbau eines Mappings im Beispiel:
 
-      * SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays 0,
-        fuer keine Treffermeldung, 1 sonst In einem Array koennen
-        Ersatz-Treffermeldungen definiert werden. Format ist:
+     ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht P_BODY:  50,  //
+     Koerper zu 50% AT_BELT: 600  // Guertel zu 600% ]) -> alle
+     'fehlenden' Eintraege wirken normal
 
-              ({
+   * SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays 0, fuer
+     keine Treffermeldung, 1 sonst In einem Array koennen Ersatz-
+     Treffermeldungen definiert werden. Format ist:
 
-           ({ int lphit1, string mess_me, string mess_en, string
-           mess_room }), ({ lphit2, mess_me, mess_en, mess_room }),
-           ... ({ lphitn, mess_me, mess_en, mess_room }), }) wobei
-           lphit1<lphit2<...<lphitn sein muss, d.h. das Array-Array
-           aufsteigend sortiert.
+        ({ ({ int lphit1, string mess_me, string mess_en, string
+        mess_room }), ({ lphit2, mess_me, mess_en, mess_room }), ...
+        ({ lphitn, mess_me, mess_en, mess_room }), }) wobei
+        lphit1<lphit2<...<lphitn sein muss, d.h. das Array-Array
+        aufsteigend sortiert.
 
-        Ist ein Treffer x LP hart, werden die Meldungen des lphit-
-        Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
-        liegt.
+     Ist ein Treffer x LP hart, werden die Meldungen des lphit-Arrays
+     ausgegeben, dessen Wert am naehesten unter dem Schaden liegt.
 
-        In den Meldungen mess_me (an den Getroffenen), mess_en (an den
-        Feind), mess_room (an die restlichen Umstehenden) koennen
-        Ersatzstrings wie folgt verwendet werden:
+     In den Meldungen mess_me (an den Getroffenen), mess_en (an den
+     Feind), mess_room (an die restlichen Umstehenden) koennen
+     Ersatzstrings wie folgt verwendet werden:
 
-           @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen
-           (TO) @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes
-           (enemy)
+     @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+     @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
 
-      * EINFO_DEFEND ------------ Mapping Dieses Mapping liefert
-        erweiterte Informationen zu dem bisherigen Ablauf des aktiven
-        Attacks. Die verfuegbaren Informationen sind in der Manpage zu
-        DefendInfo festgehalten.
+     EINFO_DEFEND ------------ Mapping Dieses Mapping liefert
+     erweiterte Informationen zu dem bisherigen Ablauf des aktiven
+     Attacks. Die verfuegbaren Informationen sind in der Manpage zu
+     DefendInfo festgehalten.
 
-   3. Reihenfolgen in Defend
 
-      * das Living wird angegriffen, wenn - P_NO_ATTACK != 0 -
-        'enemy' existiert und kein netztoter Spieler ist
+Reihenfolgen in Defend
+----------------------
 
-      * P_DEFENDERS werden durchgegangen (und eventuell
-        benachrichtigt)
+   * das Living wird angegriffen, wenn * P_NO_ATTACK != 0 * 'enemy'
+     existiert und kein netztoter Spieler ist
 
-      * P_TMP_ATTACK_HOOK wird abgefragt
+   * P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
 
-      * die Ruestungen werden vom Schaden gegebenenfalls abgezogen
+   * P_TMP_ATTACK_HOOK wird abgefragt
 
-      * magischer Ausweichskill beruecksichtigt
+   * die Ruestungen werden vom Schaden gegebenenfalls abgezogen
 
-      * sensitive Objekte werden ggf. benachrichtigt
+   * magischer Ausweichskill beruecksichtigt
 
-      * InternalModifyDefend wird gerufen
+   * sensitive Objekte werden ggf. benachrichtigt
 
-      * Koerperabwehr abgezogen
+   * InternalModifyDefend wird gerufen
 
-      * der Schaden an do_damage()/reduce_hit_points() uebergeben
+   * Koerperabwehr abgezogen
 
-      * Flucht ueberpruefen mit CheckWimpyAndFlee()
+   * der Schaden an do_damage()/reduce_hit_points() uebergeben
+
+   * Flucht ueberpruefen mit CheckWimpyAndFlee()
 
 
 BEMERKUNGEN
@@ -161,39 +160,38 @@
    Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
    Lebenspunkte des Lebewesens.
 
-BEISPIELE (SIEHE AUCH Defend_bsp):
-   // ein simpler Angriff: enem->Defend(100, ({DT_BLUDGEON}),
-   ([SP_PHYSICAL_ATTACK:1]), this_object());
 
-   // ein magischer Angriff (ohne Treffermeldung): enem->Defend(100,
-   ({DT_BLUDGEON, DT_FIRE}), ([SP_PHYSICAL_ATTACK:0]), this_object());
+BEISPIELE (SIEHE AUCH Defend_bsp)
+=================================
 
-   // ein magischer Angriff mit Treffermeldung: enem->Defend(100,
-   ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+   // ein simpler Angriff:
+   enem->Defend(100, ({DT_BLUDGEON}), ([SP_PHYSICAL_ATTACK:1]), this_object());
 
-      this_object());
+   // ein magischer Angriff (ohne Treffermeldung):
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_PHYSICAL_ATTACK:0]), this_object());
+
+   // ein magischer Angriff mit Treffermeldung:
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+     this_object());
 
 
 SIEHE AUCH
 ==========
 
-   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()* Schaden:
-   *P_ENABLE_IN_ATTACK_OUT*,
+   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()*
 
-      *P_LAST_MOVE*, *do_damage()*, *reduce_hit_points()*
+   Schaden:   *P_ENABLE_IN_ATTACK_OUT*, *P_LAST_MOVE*, *do_damage()*,
+   *reduce_hit_points()*
 
-   Schutz:    *P_DEFENDERS*, *InformDefend()*,
-      *DefendOther()*, *P_ARMOURS*, *P_AC*, *P_DEFEND_FUNC*,
-      *QueryDefend()*, *P_BODY*
+   Schutz:    *P_DEFENDERS*, *InformDefend()*, *DefendOther()*,
+   *P_ARMOURS*, *P_AC*, *P_DEFEND_FUNC*, *QueryDefend()*, *P_BODY*
 
-   Daten:     *P_LAST_COMBAT_TIME*,
-      *P_LAST_DAMTYPES*, *P_LAST_DAMTIME*, *P_LAST_DAMAGE*,
-      *P_DAMAGE_MSG*
+   Daten:     *P_LAST_COMBAT_TIME*, *P_LAST_DAMTYPES*,
+   *P_LAST_DAMTIME*, *P_LAST_DAMAGE*, *P_DAMAGE_MSG*
 
-   Resistenz: *P_RESISTANCE_STRENGTHS*,
-      *CheckResistance()*
+   Resistenz: *P_RESISTANCE_STRENGTHS*, *CheckResistance()*
 
-   Sonstiges: *CheckSensitiveAttack()*,
-      *InternalModifyDefend()*, *UseSkill()*, *DefendInfo()*
+   Sonstiges: *CheckSensitiveAttack()*, *InternalModifyDefend()*,
+   *UseSkill()*, *DefendInfo()*
 
 Letzte Aenderung: 29.12.2017, Bugfix
diff --git a/doc/lfun/GetHelperObject b/doc/lfun/GetHelperObject
new file mode 100644
index 0000000..e879129
--- /dev/null
+++ b/doc/lfun/GetHelperObject
@@ -0,0 +1,93 @@
+
+GetHelperObject()
+*****************
+
+
+FUNKTION
+========
+
+   public varargs object GetHelperObject(int type, int|closure
+   strength
+      varargs mixed* extra)
+
+
+DEFINIERT IN
+============
+
+   /std/living/helpers.c
+
+
+ARGUMENTE
+=========
+
+   type:
+      Eine der in helpers.h definierten Konstanten
+
+   strength:
+      minimal geforderte Staerke des Helfers oder Closure zum Filtern
+      der Helferobjekte.
+
+   extra:
+      Beliebige und beliebig viele Argumente, welche an die Closure
+      <strength> weitergegeben werden.
+
+
+BESCHREIBUNG
+============
+
+   Gibt das zuerst gefundene als Helfer registrierte Objekt zurueck,
+   welches die Anforderungen erfuellt.
+
+   Ist <strength> ein int, muss die Staerke/Guete des Helfers
+   (Rueckgabewert der Callback-Methode, siehe
+   *RegisterHelperObject()*) mindestens so gross sein wie der als
+   <strength> uebergebene Wert.
+
+   Ist <strength> eine Closure, wird diese fuer jeden Helfer
+   ausgewertet und entscheidet, ob der Helfer akzeptiert wird. Die
+   Closure bekommt hierbei das Helferobjekt, die vom Helfer angegebene
+   Staerke/Guete und etwaige hier als <extra> uebergebene Argument
+   uebergeben. Ist der Rueckgabewert von <strength> != 0, wird der
+   Helfer akzeptiert und von GetHelperObject zurueckgegeben (ohne
+   weitere Helfer zu pruefen).
+
+
+RUECKGABEWERT
+=============
+
+   Objekt welches den uebergebenen Anforderungen entspricht.
+
+
+BEISPIELE
+=========
+
+   // Es wird ein Helfer zum Tauchen mit der Staerke 4 gesucht
+   PL->GetHelperObject(HELPER_TYPE_AQUATIC, 4);
+
+   // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
+   // mindestens 60 cm gross und maximal 900 g schwer ist.
+   PL->GetHelperObject(HELPER_TYPE_AERIAL, function int (object h, int s)
+         { return s >= 4
+           && h->QueryProp(P_SIZE) >= 60 && h->QueryProp(P_WEIGHT) <= 900;
+         }
+         );
+
+   // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
+   // mindestens 60 cm gross und maximal 900 g schwer ist, aber diese Grenzen
+   // werden nicht in der Funktion festgelegt, sondern als <extra> uebergeben.
+   PL->GetHelperObject(HELPER_TYPE_AERIAL,
+         function int (object h, int s, int min_s, int minsize, int maxweight)
+           { return s >= min_s
+                  && h->QueryProp(P_SIZE) >= minsize
+                  && h->QueryProp(P_WEIGHT) <= maxweight;
+           },
+         4, 60, 900);
+
+
+SIEHE AUCH
+==========
+
+   *RegisterHelperObject()*, *UnregisterHelperObject()*,
+   *P_AERIAL_HELPERS*, *P_AQUATIC_HELPERS*, *P_HELPER_OBJECTS*
+
+Letzte Aenderung: 9.3.2018, Zesstra
diff --git a/doc/lfun/RegisterHelperObject b/doc/lfun/RegisterHelperObject
index af33a5c..21b75f4 100644
--- a/doc/lfun/RegisterHelperObject
+++ b/doc/lfun/RegisterHelperObject
@@ -138,7 +138,7 @@
 SIEHE AUCH
 ==========
 
-   Funktionen:  UnregisterHelperObject()
+   Funktionen:  UnregisterHelperObject(), GetHelperObject()
    Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
    Sonstiges:   /sys/living/helpers.h
 
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
diff --git a/doc/lfun/remove b/doc/lfun/remove
index 914c1e1..78d8ada 100644
--- a/doc/lfun/remove
+++ b/doc/lfun/remove
@@ -12,27 +12,36 @@
 DEFINIERT IN
 ============
 
-   /std/thing/moving.c
-   /std/living/moving.c
-   /std/room/moving.c
+   /std/thing/moving.c /std/living/moving.c /std/room/moving.c
+   /std/unit.c
 
 
 ARGUMENTE
 =========
 
-   silent
-        Falls ungleich 0, so werden beim Zerstoeren keine Meldungen
-        ausgegeben.
+   * silent: Falls ungleich 0, so werden beim Zerstoeren keine
+     Meldungen ausgegeben.
 
 
 BESCHREIBUNG
 ============
 
-   Beim Aufruf dieser Funktion entfernt sich das Objekt selbst. Durch
-   Ueberladen dieser Funktion kann man diesen Vorgang noch durch die
-   Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
-   abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg... Mit
-   destruct() kann das Objekt immer noch direkt zerstoert werden!)
+   Die meisten Objekte zerstoeren sich durch den Aufruf von remove()
+   selbst.
+
+   Unitobjekte reduzieren P_AMOUNT um U_REQ Einheiten. Will man ein
+   Unit- Objekt vollstaendig zerstoeren, ist vor dem Aufruf von
+   remove() U_REQ auf P_AMOUNT zu setzen. Wird durch remove() P_AMOUNT
+   0, wird das Objekt natuerlich zerstoert.
+
+   Durch Ueberladen dieser Funktion kann man diesen Vorgang noch durch
+   die Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
+   abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg...
+   Mit destruct() kann das Objekt immer noch direkt zerstoert werden!)
+
+   ACHTUNG: Wenn ein Objekt durch remove() nicht zerstoert wird,
+   koennte das einen Grund haben. Bitte nicht einfach destruct()
+   verwenden, das ist nur fuer Notfaelle wie ein buggendes remove().
 
 
 RUeCKGABEWERT
@@ -44,13 +53,13 @@
 BEMERKUNGEN
 ===========
 
-   Nach einem erfolgreichen ::remove() gelten die selben Einschraenkungen
-   wie nach einem destruct()!
+   Nach einem erfolgreichen ::remove() gelten die selben
+   Einschraenkungen wie nach einem destruct()!
 
 
 SIEHE AUCH
 ==========
 
-   destruct()
+   "../efun/destruct", *U_REQ*, *P_AMOUNT*
 
-Last modified: Wed May 8 10:23:40 1996 by Wargon
+Letzte Aenderung: 24.07.2018, Bugfix
