Dokumentations-Update

Change-Id: Ic0c93ff3aadb8754fb4e98533d053bd7e28045d6
diff --git a/doc/lfun/AddExtraLook b/doc/lfun/AddExtraLook
index 1fc29c2..1658030 100644
--- a/doc/lfun/AddExtraLook
+++ b/doc/lfun/AddExtraLook
@@ -30,7 +30,8 @@
 
       * > 0: Dauer der Gueltigkeit des Extralooks in Sekunden.
 
-      * 0:   Unbegrenzt gueltiger Eintrag. Rebootfest.
+      * 0:   Unbegrenzt gueltiger Eintrag. Rebootfest. (Kann nur von
+        Blueprints registriert werden.)
 
       * < 0: Bis Ende/Reboot bestehender Eintrag.
 
@@ -81,92 +82,75 @@
      wenn der Extralook der Lebewesen das erste Mal nach Ablauf der
      Gueltigkeit aufgerufen wird.
 
-   * Das uebergbene Objekt sollte fuer permanente Eintraege eine
-     Blueprint sein, da Clones irgendwann (spaetestens mit Reboot)
-     zerstoert werden und der Eintrag dann bei Abfrage automatisch
-     geloescht wird.
+   * Im Fall von permanenten Eintraegen muss das uebergbene Objekt
+     eine Blueprint sein, da Clones irgendwann (spaetestens mit
+     Reboot) zerstoert werden und der Eintrag dann bei Abfrage
+     automatisch geloescht wird.
 
    * Folgerung: Clone-Objekte koennen fuer selbst beschraenkt
      temporaere Extralooks benutzt werden.
 
+   * Die Endemeldung wird nicht genau mit Ablauf der angegebenen
+     Zeit ausgegeben, sondern beim ersten Abruf der Langbeschreibung
+     *nach* Ablauf der Zeit.
+
 
 RUECKGABEWERTE
 ==============
 
    Siehe auch /sys/living/description.h fuer Konstanten.
 
-   * 1, falls der Eintrag erfolgreich registriert wurde.
+   * XL_OK: falls der Eintrag erfolgreich registriert wurde.
 
-   * < 0 sonst.
+   * ansonsten:
 
-     * -1: <key> war nicht gueltig und es konnte keiner ermittelt
-       werden.
+     * XL_NOKEY: <key> war nicht gueltig und es konnte keiner
+       ermittelt werden.
 
-     * -2: <look> war kein gueltiger String.
+     * XL_INVALIDEXTRALOOK: <look> war kein gueltiger String.
 
-     * -3: <duration> war kein Integer.
+     * XL_KEYDOESNOTEXIST: <duration> war kein Integer.
 
-     * -4: unter <key> gibt es schon einen Eintrag.
+     * XL_KEYEXISTS: unter <key> gibt es schon einen Eintrag.
 
 
 BEISPIELE
 =========
 
    // (1) einfacher Eintrag, "fuer die Ewigkeit"
+
    living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
 
    // (2) Eintrag der nach 1h automatisch weg ist.
+
    living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
 
-   // (3) Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann
+   // (3) Eintrag mit bestimmtem Schluessel, damit man ihn wieder entfernen
+   // kann.
+
    living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
                         "humni_marmeladen_look");
 
-   // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel
+   // (4) Mit "Ende"-Meldung, aber kein eigener Schluessel.
+
    living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
                         "Du bist endlich wieder trocken. Puuh.");
 
-   // (5) Mit Objekt, welches den Extralook dynamisch erzeugt
+   // (5) Mit Objekt, welches den Extralook dynamisch erzeugt.
+
    living->AddExtraLook("get_my_special_extralook", 3600, 0, 0,
                         this_object());
+
    // In diesem Fall muss this_object() natuerlich die Funktion
-   // "get_my_special_extralook()" definieren, die einen String zurueckgibt
+   // "get_my_special_extralook()" definieren, die einen String zurueckgibt.
 
    // (6) Mit Objekt, welches den Extralook dynamisch erzeugt
    // Hier wird explizit die Blueprint uebergeben, der Extralook ist also
    // rebootfest.
+
    living->AddExtraLook("get_my_special_extralook", 3600, 0,
                         "extralookende", blueprint(this_object()));
 
-   // Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
-   // und keine festgelegte Existenzdauer hat, sondern sich aufgrund
-   // eigener Konditionen entsorgt
-   void set_extra_look(object living) {
-     object dyntemplook = clone_object("/path/to/some/object");
-     if(living->AddExtraLook("get_my_special_extralook", 0,
-                             object_name(dyntemplook),
-                             0, dyntemplook) == XL_OK)
-       dyntemplook->SetProp(P_INTERNAL_EXTRA_LOOK, living);
-     else
-       dyntemplook->remove();
-   }
-
-   // entsprechendes Objekt:
-   varargs int remove(int silent) {
-     object ob = QueryProp(P_INTERNAL_EXTRA_LOOK);
-     // wenn der Spieler da ist, entfernen wir den Look regulaer
-     if(objectp(ob))
-       ob->RemoveExtraLook(object_name(this_object()));
-     return ::remove(silent);
-   }
-
-   void reset() {
-     if(!random(10))
-       remove();
-     else
-       ::reset();
-   }
-
 
 SIEHE AUCH
 ==========
@@ -180,4 +164,4 @@
    Fuer Spielerobjekte:
       P_EXTRA_LOOK
 
-5. Juni 2017 Gloinson
+Letzte Aenderung: 2021-01-21, Arathorn
diff --git a/doc/lfun/create_default_npc b/doc/lfun/create_default_npc
index fac3fe2..1fae71a 100644
--- a/doc/lfun/create_default_npc
+++ b/doc/lfun/create_default_npc
@@ -52,6 +52,10 @@
    P_HP und P_SP werden auf dieselben Werte wie P_MAX_HP bzw. P_MAX_SP
    eingestellt.
 
+   Die Attribute werden ueber SetAttr() gesetzt und damit auf 20 limitiert.
+   Sollen hoehere Attribute als 20 gesetzt werden, ist im Anschluss an
+   den Aufruf von create_default_npc() P_ATTRIBUTES direkt zu setzen.
+
 
 BEISPIEL
 ========
@@ -73,7 +77,7 @@
 
    Funktionen:  AddExp(), GiveKillScore()
    Properties:  P_XP
-                P_LEVEL, P_MAX_HP, P_MAX_SP, P_HANDS, P_BODY
+                P_LEVEL, P_MAX_HP, P_MAX_SP, P_HANDS, P_BODY, P_ATTRIBUTES
    Sonstiges:   npcs
 
 14.Feb 2007 Gloinson