Update diverser Manpages und Beispiele

Change-Id: I07094305b7697550dac8667a26e150ca23560e41
diff --git a/doc/sefun/process_string b/doc/sefun/process_string
index fbc7018..4d72259 100644
--- a/doc/sefun/process_string
+++ b/doc/sefun/process_string
@@ -8,41 +8,43 @@
 FUNKTION
 ========
 
-   string process_string(string str)
-   string process_string(closure cl)
+   string process_string(string str) string process_string(closure cl)
 
 
 BESCHREIBUNG
 ============
 
-   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
-   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
-   durch einen impliziten Funktionsaufruf.
+   Beschreibung s. efun/process_string.
 
-   Der zu ersetzenden Substring hat die Form:
-   @@function[:filename][|argument1|argument2]@@
+   Abweichend zu der Beschreibung gibt es im MG folgende wichtige
+   Punkte:
 
-   Die entsprechende Funktion muss einen String zurueckgeben, oder der
-   process_string() uebergebene String str wird nicht modifiziert.
+   * nicht in neuem Code nutzen, aus altem Code ausbauen
 
-   process_string() arbeitet nicht rekursiv, object_name und argument sind
-   optionale Werte.
+   * nicht nutzbar fuer Objekte mit einer UID mit einem Level > 30.
 
-   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
-   und nicht gefiltert.
+   * nicht rufbar durch Magiershells
 
+   * kann Funktionen in anderen Objekten nur rufen, wenn diese zum
+     gleichen Magier gehoeren.
 
-ANMERKUNGEN
-===========
+   Folgendes Properties und Details werden bei der Abfrage ueber
+   process_string() gefiltert:
 
-   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
-                 anfangen, '_' ist nicht moeglich!
-   - folgendes Properties und Details werden bei der Abfrage ueber
-     process_string() gefiltert:
-     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
-     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
-   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
-     process_call()
+   * P_LONG
+
+   * P_SHORT
+
+   * Details
+
+   * NPC-Chats
+
+   * P_INT_LONG
+
+   * P_INT_SHORT
+
+   Die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
+   process_call().
 
 
 BEISPIEL
@@ -58,7 +60,6 @@
 
    -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
 
-
    // Teilersetzung
    SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
    ...
@@ -72,6 +73,6 @@
 SIEHE AUCH
 ==========
 
-   notify_fail(E), process_call(E), replace_personal(E)
+   process_call(), replace_personal()
 
-22. Nov. 2006 Arathorn
+02.09.2020 Zesstra
diff --git a/doc/sefun/replace_personal b/doc/sefun/replace_personal
index 3804be3..a8946e5 100644
--- a/doc/sefun/replace_personal
+++ b/doc/sefun/replace_personal
@@ -47,8 +47,6 @@
 
    x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
 
-
-
    Besonderheiten beim Possessivpronomen (@WERQPPGNx):
    G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
    oder P) ersetzt werden.
@@ -62,47 +60,45 @@
 
    durchersetzter String
 
+
 Beispiele
+=========
 
-   replace_personal("@WER1", ({find_player("gloinson")})) ==
-   "Gloinson"
+   replace_personal("@WER1", ({find_player("gloinson")})) ==> "Gloinson"
 
-   replace_personal("@WEMQP1", ({find_player("gloinson")})) == "ihm"
+   replace_personal("@WEMQP1", ({find_player("gloinson")})) ==> "ihm"
 
-   // unbestimmter und bestimmter Artikel: replace_personal("@WER1
-   zueckt @WENU2 und verhaut @WEN3.",
+   // unbestimmter und bestimmter Artikel:
+   replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.",
+                    ({find_player("gloinson"),
+                      find_object("/obj/mpa"),
+                      find_object("/obj/wanderer")}))
+   ==> "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
 
-      ({find_player("gloinson"),
-         find_object("/obj/mpa"), find_object("/obj/wanderer")}))
-
-   == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
-
-   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ, //
-   Femininum, Plural) auf die Taschen, nicht auf Kessa:
+   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
+   // Femininum, Plural) auf die Taschen, nicht auf Kessa:
    replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
+                    "Taschen.",
+                    ({find_player("kessa"),
+                      find_player("gloinson")}))
+   ==> "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
 
-      "Taschen.", ({find_player("kessa"),
-
-         find_player("gloinson")}))
-
-   == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
-
-   // Ein Beispiel mit laengerem >>*<<obs: replace_personal("@WER1
-   zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
-
-      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die " "@WEN4
-      haut und die Schuhe in @WEMQPPFS2 Tasche " "verschwinden laesst.
-      @WERU5 schaut zu und kichert " "irre. Wenn das @WER6 gesehen
-      haette!", ({find_player("gloinson"),
-
-         find_player("kessa"), find_object("/obj/mpa"), "Birne",
-         find_object("/obj/wanderer"), find_netdead("jof")}),1)
-
-   == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so
-   beeindruckt, "
-      "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in
-      ihrer " "Tasche verschwinden laesst. Ein Wanderer schaut zu und
-      kichert " "irre. Wenn das Jof gesehen haette!"
+   // Ein Beispiel mit laengerem *obs:
+   replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
+                    "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
+                    "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
+                    "verschwinden laesst. @WERU5 schaut zu und kichert "
+                    "irre. Wenn das @WER6 gesehen haette!",
+                    ({find_player("gloinson"),
+                      find_player("kessa"),
+                      find_object("/obj/mpa"),
+                      "Birne",
+                      find_object("/obj/wanderer"),
+                      find_netdead("jof")}),1)
+   ==> "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so "
+       "beeindruckt, dass sie ihm eine Zeitung auf die Birne haut und die "
+       "Schuhe in ihrer Tasche verschwinden laesst. Ein Wanderer schaut "
+       "zu und kichert irre. Wenn das Jof gesehen haette!"
 
 
 SIEHE AUCH
diff --git a/doc/sefun/send_debug b/doc/sefun/send_debug
new file mode 100644
index 0000000..f47b748
--- /dev/null
+++ b/doc/sefun/send_debug
@@ -0,0 +1,45 @@
+
+send_debug()
+************
+
+
+FUNKTION
+========
+
+   varargs void send_debug(object|string wiz, string msg, string
+   msg_prefix)
+
+
+BESCHREIBUNG
+============
+
+   Sendet <msg> via ReceiveMsg() an das Spielerobjekt <wiz> (wenn es
+   als string angegeben wird, wird es per find_player gesucht).
+   Hierbei wird mit dem Nachrichtentyp MT_DEBUG gesendet, d.h. die
+   Meldung wird nur angezeigt, wenn das Spielerobjekt Magier oder
+   Testspieler mit aktiviertem P_WIZ_DEBUG ist.
+
+   Magier koennen P_WIZ_DEBUG mit dem Kommando 'mschau' umschalten,
+   Testspieler benoetigen hierfuer einen Magier.
+
+   Diese Debugmeldungen koennten sehr praktisch sein, aber man sollte
+   es in produktivem Code auch nicht uebertreiben, auch wenn keine
+   Ausgabe an Spieler erfolgt, wird die Zustellung jedoch bei jedem
+   Aufruf zumindest geprueft.
+
+
+BEISPIEL
+========
+
+      send_debug("zesstra", "Verbrauchte evalcosts: 42");
+
+      send_debug(this_player(), "Verbrauchte evalcost: 42",
+                 "Unit-Debug: ");
+
+
+SIEHE AUCH
+==========
+
+   ReceiveMsg()
+
+14.10.2020, Zesstra