Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/add_action b/doc/efun/add_action
new file mode 100644
index 0000000..8b0f778
--- /dev/null
+++ b/doc/efun/add_action
@@ -0,0 +1,149 @@
+add_action(E)
+FUNKTION:
+     void add_action(string fun, string cmd)
+     void add_action(string fun, string cmd, int flag)
+
+ARGUMENTE:
+     fun
+	gerufene Methode
+     cmd
+	ausloesendes Verb
+     flag
+	Flag fuer unscharfe Interpretation
+
+BESCHREIBUNG:
+     Generell: Das Verhalten dieser efun wird durch AddCmd aus
+               /std/thing/commands.c komfortabler widergespiegelt.
+               Darauf sollte man zurueckgreifen.
+
+     Legt fuer "cmd" (ein Kommandoverb) eine im entsprechenden Objekt
+     zu rufende Methode fest.
+
+     Diese Methode bekommt die Argumente als String uebergeben und
+     muss 0 (fuer einen Fehler) oder 1 (fuer Erfolg) zurueckgeben.
+
+     Der Parser durchsucht bei einer Spielereingabe die Liste der
+     eingetragenen Kommandos nach passenden Kommandos und ruft die
+     zugehoerigen Methoden in den Objekten bis eine der Methoden
+     1 zurueckgibt oder die Liste durchlaufen wurde. In dem Fall
+     kommt die Fehlermeldung (notify_fail()) zum Einsatz.
+
+     Mit Werten != 0 fuer "flag" legt man eine unscharfe Auswertung
+     fest, im Beispiel: Die Methode "action_fun" bei einem
+      add_action("action_fun", "hops", 1);
+     wird sowohl beim Kommando "hops" als auch bei Kommandos wie
+     "hopse", "hopseblub", ... gerufen werden.
+     Dieses Flag sollte vorsichtig verwendet werden.
+
+     Es gibt drei moegliche Verhaltensweise, die per "flag" eingeschaltet
+     werden koennen:
+     Wenn das Argument <flag> AA_SHORT (d.h. 1) ist, koennen Argumente von
+     cmd ohne einen Leerschlag an cmd angehaengt sein. An die Funktion fun
+     werden alle Zeichen nach dem ersten Leerschlag als Argument
+     uebergeben.
+
+     Wenn <flag> AA_NOSPACE (d.h. 2) ist, koennen die Argumente wiederum
+     ohne Leerschlag ans Verb angehaengt sein. Im Unterschied zu AA_SHORT
+     werden alle Zeichen nach dem Verb als Argument an die Funktion
+     uebergeben. Die Zeichen, welche nicht durch einen Leerschlag vom
+     Verb getrennt sind, werden ZUSAETZLICH von query_verb() zurueck
+     gegeben.
+
+     Wenn <flag> AA_IMM_ARGS (3) ist, werden alle Zeichen nach dem Verb
+     als Argument uebergeben, nicht aber von query_verb() beruecksichtigt.
+
+
+BEMERKUNGEN:
+     (1) add_action() sollte immer innerhalb von init() benutzt werden
+     (2) das definierende Objekt muss im inventory des Spielers oder
+         environment() des kommandogebenden Lebewesens sein
+     (3) im init() spaeter eingetragene Kommandos oder spaeter hinzu-
+         kommende Objekte werden bei der Kommandoauswertung VOR den
+         alten beruecksichtigt
+         (Daher bewegt sich das Xtool der Magier regelmaessing neu in
+          das Inventory, um immer "erstes" Objekt zu sein.)
+
+BEISPIELE:
+     // ein Kommando in einem Schirm
+     void init() {
+      ::init();
+      add_action("action_oeffne", "oeffne");
+     }
+
+     int action_oeffne(string str) {
+      if(stringp(str) && id(str))	// Argument da und bin ich gemeint?
+       write("Du oeffnest den Schirm.\n");
+       say(break_string(this_player()->Name(WER)+" oeffnet einen Schirm.",78));
+       return 1;
+      }
+      notify_fail("Was willst Du oeffnen?\n");
+      return 0;
+     }
+
+     // frueher beliebt um Spieler lahmzulegen, da es _alle_ Kommandos 
+     // triggert -> siehe heute jedoch dafuer eher P_DISABLE_COMMANDS
+     // Achtung: siehe Implikation von (3)
+     add_action("action_nothing", "",1 );
+     ...
+     int action_nothing(string str) {
+      write("Dir sind die Haende gebunden.\n");
+      return 1;
+     }
+
+     Beispiele fuer die Verwendung des Argumentes "flag":
+      add_action("disfunc", "disconnect", AA_NOSPACE);
+
+        Die Funktion disfunc() wird aufgerufen, wenn der Spieler "disconnect"
+        oder eine Abkuerzung davon (zum Beispiel "di" oder "discon") eingibt.
+        Laengere Worte (zum Beispiel "disconnecting") werden NICHT erkannt.
+        Um rauszufinden, was der Spieler tatsaechlich eingegeben hat, muss
+        query_verb() aufgerufen werden.
+
+      add_action("fun", "cmd");
+      add_action("fun", "scmd", AA_SHORT);
+      add_action("fun", "ncmd", AA_NOSPACE);
+      add_action("fun", "icmd", AA_IMM_ARGS);
+
+        Die folgende Tabelle zeigt, was die oben aufgefuehrten Kommandos bzw.
+        <flag> fuer Werte an query_verb() und als Argumente an die Funktion
+        fun uebergeben:
+        |-------------------|--------------|----------------------------|
+        | Eingabe           | query_verb() | Argument der Funktion fun  |
+        |-------------------|--------------|----------------------------|
+        | "cmd"             | "cmd"        | 0                          |
+        | "cmd bla fasel"   | "cmd"        | "bla fasel"                |
+        |-------------------|--------------|----------------------------|
+        | "scmd"            | "scmd"       | 0                          |
+        | "scmd bla"        | "scmd"       | "bla"                      |
+        | "scmdbla"         | "scmdbla"    | 0                          |
+        | "scmd bla fasel"  | "scmd"       | "bla fasel"                |
+        | "scmdbla fasel"   | "scmdbla"    | "fasel"                    |
+        |-------------------|--------------|----------------------------|
+        | "ncmd"            | "ncmd"       | 0                          |
+        | "ncmd bla"        | "ncmd"       | " bla"                     |
+        | "ncmdbla"         | "ncmdbla"    | "bla"                      |
+        | "ncmd bla fasel"  | "ncmd"       | " bla fasel"               |
+        | "ncmdbla fasel"   | "ncmdbla"    | "bla fasel"                |
+        |-------------------|--------------|----------------------------|
+        | "icmd"            | "icmd"       | 0                          |
+        | "icmd bla"        | "icmd"       | " bla"                     |
+        | "icmdbla"         | "icmd"       | "bla"                      |
+        | "icmd bla fasel"  | "icmd"       | " bla fasel"               |
+        | "icmdbla fasel"   | "icmd"       | "bla fasel"                |
+        |-------------------|--------------|----------------------------|
+
+
+GESCHICHTE
+        Das Argument <flag> < 0 wird seit 3.2@127 unterstuetzt, aber erst ab
+        LDMud 3.2.8 richtig implementiert. LDMud 3.2.9 fuehrte das AA_IMM_ARGS
+        Flag ein. Ab LDMud 3.5 kann man Closures als Funktionen uebergeben.
+
+SIEHE AUCH:
+			remove_action(E), init(E), enable_commands(E)
+     Fehlermeldung:	notify_fail(E), _notify_fail(E)
+     Argumentstring:	query_verb(E), _unparsed_args(L)
+     obsolet:		add_verb(E), add_xverb(E)
+     alternativ:	AddAction(L), AddCmd(L)
+                        P_DISABLE_COMMANDS
+
+24. Maerz 2004 Gloinson@MG