Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/sefun/replace_personal b/doc/sefun/replace_personal
new file mode 100644
index 0000000..2a18dc7
--- /dev/null
+++ b/doc/sefun/replace_personal
@@ -0,0 +1,84 @@
+FUNKTION:
+ varargs string replace_personal(string str, mixed *obs [, int caps]);
+
+DEFINIERT IN:
+ /secure/simul_efun.c
+
+ARGUMENTE:
+ str - zu bearbeitender String
+ obs - Liste von Objekt1, Objekt2, ..., Objekt9
+ (Objekte oder Strings)
+ caps - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
+ 0 sonst
+
+BESCHREIBUNG:
+ Ersetzt in Strings
+ @WERx, @WESSENx, @WEMx, @WENx durch
+ Objectx->name(<casus>, 1);
+ @WERUx, @WESSENUx, @WEMUx, @WENUx durch
+ Objectx->name(<casus>);
+ @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
+ Objectx->QueryPronoun(<casus>);
+ @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
+ Objectx->QueryArticle(<casus>, 1, 1);
+ @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
+ Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
+ oder den entsprechenden String bei "Objektx".
+
+BEMERKUNGEN:
+ 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.
+ Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
+ besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
+ bestimmt.
+
+RUeCKGABEWERT:
+ durchersetzter String
+
+Beispiele:
+
+ replace_personal("@WER1", ({find_player("gloinson")}))
+ == "Gloinson"
+
+ replace_personal("@WEMQP1", ({find_player("gloinson")}))
+ == "ihm"
+
+ // 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."
+
+ // 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."
+
+ // 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:
+ AddCmd(L)
+
+05. September 2015, Arathorn