Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/player/soulhelp.c b/std/player/soulhelp.c
new file mode 100644
index 0000000..27a48f9
--- /dev/null
+++ b/std/player/soulhelp.c
@@ -0,0 +1,317 @@
+// MorgenGrauen MUDlib
+//
+// player/soulhelp.c -- Hilfe zu den Soulkommandos
+//
+// $Id: soulhelp.c 7423 2010-02-07 22:56:38Z Zesstra $
+
+#pragma strong_types,save_types
+
+#include <wizlevels.h>
+#ifdef WECKE
+#undef WECKE
+#endif
+#define WECKE
+
+static string *wizcmds, *plrcmds, *ghostcmds;
+static mapping help;
+
+private string HelpVerb(string v);
+private string* SortIt(string *arr);
+
+
+/**
+  Initialisierung
+*/
+void create()  {
+	plrcmds=({
+		"zuck", "schmieg", "antworte", "applaudiere",
+		"betaste", "cls", "drehe (daeumchen)", "danke",
+		"druecke", "erroete", "flippe", "frage",
+		"furze", "gaehne", "gluckse", "grinse",
+		"guck", "haetschel", "hickse", "huepfe",
+		"huste", "keuche", "kichere", "klatsche",
+		"knabbere", "knickse", "knirsche", "knurre",
+		"knutsche", "kotze", "kuesse", "lache",
+		"laechle", "liebe", "nicke", "niese",
+		"gib", "pfeife", "ruelpse", "runzle",
+		"schmolle", "schmunzle", "schnippe", "schnarche",
+		"schnurre", "schreie", "schuettle", "seufze",
+		"singe", "sniefe/schniefe", "spucke", "starre",
+		"staune", "stiere", "stoehne", "stosse",
+		"streichle", "tanze", "tritt", "troeste",
+		"umarme", "verneige", "wackle", "waelze",
+		"weine", "winke", "zwinkere", "verben",
+		"aechze", "erbleiche", "fluche", "verfluche",
+		"kitzle", "nein", "deute", // "zeige",
+		"denke [text]", "knuddle", "taetschel", "wuschel",
+		"strecke ... [die] zunge raus", "kratz",
+		"grummel", "jubel / juble ... [zu]", "wuerg",
+		"gratuliere / beglueckwuensche", "raeusper",
+		"argl", "rotfl", "grunz", "kuschel", "atme ... auf",
+		"freue", "sniff", "grueble", "bohre ... [in der nase]",
+		"putze [nase]", "bibbere", "quietsche/quieke", "schluchze",
+		"schnaufe", "schnaube", "philosophiere", "sabbere",
+		"stimme [...] zu", "krieche", "mustere", "schaeme",
+		"schnalze ... [zunge]", "stampfe ... [auf]", "zitiere", "lobe",
+		"quake", "reibe ... [die] Augen|Haende", "stutze", "schweige",
+		"klopfe", "wundere", "stupse", "brummel", "entschuldige",
+		"mopper", "zeige", "traeume", "begruesse","jammer",
+	});
+#ifdef WECKE
+	plrcmds+=({"wecke"});
+#endif
+	wizcmds=({
+		"kick", "splash", "flame",
+	});
+	ghostcmds=({
+		"rassel/rassle", "heule", "erschrecke",
+	});
+	// Aufbau des help-mappings:
+	// key    : Verb, wie es in soul.c in CHECK_HELP geschrieben ist
+	// entry 1: &n = [<Name>]   &a = [<Adverb>]    &t=[<Text>}
+	//          ! danach heisst noetige Angabe, also ohne []
+	// entry 2: &g = Verhaelt sich bei Geistern anders
+	//          &a = Man kann "alle" als Ziel angeben
+	//          &d = Defaultadverb; muss am Ende angegeben werden
+	help=([
+		"zuck" : "&a [[mit [den]] schultern]"; "Gibt man nicht mindestens "
+			+"\"schultern\" an, so zuckt man zusammen. Das Defaultadverb gilt "
+			+"nur fuer das Schulterzucken.&dratlos",
+		"schmieg" : "&n &a"; "",
+		"antwort" : "&n &t!"; "",
+		"applaudier" : "&n &a"; "&g&a",
+		"begruess" : "&n! &a"; "",
+		"betast" : "&n! &a"; "",
+		"bibber" : "&a"; "",
+		"bohr" : "&a [[in [der]] nase]"; "",
+		"brummel" : "&a | &t"; "",
+		"cls" : ""; "Loescht den Bildschirm auf vt100-kompatiblen Terminals.",
+		"dreh" : "&a [daeumchen | daumen]"; "",
+		"dank" : "&n! &a"; "",
+		"drueck" : "&n! &a"; "&g&a&dzaertlich",
+		"entschuldig" : "&n &a"; "",
+		"erroet" : "&a"; "&g",
+		"erschreck" : "&n! &a"; "&g&dfuerchterlich",
+		"flipp" : "&a"; "&dtotal",
+		"frag" : "&n![|]&t!"; "",
+		"freu" : "&n &a"; "",
+		"furz" : "&a"; "&gHinterlaesst eine duftige Erinnerung im Raum.",
+		"gaehn" : "&a"; "&g",
+		"glucks" : "&a"; "&dwie ein Huhn",
+		"gratulier" : "&n! &a"; "",
+		"grins" : "&n &a"; "&g&a",
+		"gruebel" : "&a"; "",
+		"grummel" : "&a"; "",
+		"guck" : "&a"; "",
+		"haetschel" : "&n! &a"; "&g&a",
+		"hicks" : "&a"; "&g",
+		"huepf" : "&n &a"; "&g",
+		"hust" : "&n &a"; "&g",
+		"jubel" : "&n &a"; "",
+		"jammer" : "&a"; "",
+		"keuch" : "&a"; "&g&dvor Anstrengung",
+		"kicher" : "&n &a"; "",
+		"klatsch" : "&a"; "&g",
+		"klopf" : "&n! &a"; "",
+		"knabber" : "&n! &a"; "&g",
+		"knicks" : "&n &a"; "&g&a",
+		"knirsch" : "&a"; "&g",
+		"knurr" : "&n &a"; "&a",
+		"knutsch" : "&n! &a"; "&g",
+		"kotz" : "&n &a"; "&g",
+		"kriech" : "&n &a"; "",
+		"kuess" : "&n! &a"; "&gKann ausserdem bei bestimmten Gelegenheiten "
+			+"gewisse Nebeneffekte haben.",
+		"lach" : "&n &a"; "&g&a",
+		"laechel" : "&n &a"; "&g&a",
+		"lieb" : "&n! &a"; "",
+		"lob" : "{&n! &a} | &t!"; "Kann einen Nebeneffekt haben.",
+		"mopper" : "&a"; "",
+		"muster" : "&n! &a"; "",
+		"nick" : "&n &a"; "&a&dzustimmend",
+		"nies" : "&a"; "&g",
+		"gib" : "&n! &a [[eine] ohrfeige]"; "&g&a",
+		"pfeif" : "&n &a [nach]"; "&g&danerkennend",
+		"philosophier" : "&a | &t"; "",
+		"putz" : "&a [[die] nase]"; "",
+		"quak" : "&a"; "Geht als Frosch wesentlich besser.",
+		"quiek" : "&a"; "&dvergnuegt",
+		"raeusper" : "&a"; "",
+		"reib" : "&a [[die] Augen] | [[die] Haende]"; "Ohne weitere Angabe reibt "
+			+"man sich die Augen;&dmuede bzw. vergnuegt",
+		"ruelps" : "&a"; "&g",
+		"runzel" : "&a"; "&g",
+		"sabber" : "&n &a"; "",
+		"schaem" : "&a"; "",
+		"schluchz" : "&a"; "&dherzzerreissend",
+		"schmoll" : "&a"; "&g",
+		"schmunzel" : "&a"; "",
+		"schnalz" : "&a [[mit [der]] zunge]"; "",
+		"schnaub" : "&a"; "&dentruestet",
+		"schnauf" : "&a"; "&dvor Anstrengung",
+		"schnipp" : "&a"; "&g",
+		"schnarch" : "&a"; "&g&dlaut",
+		"schnief" : "&a"; "&g",
+		"schnurr" : "&a"; "&dzufrieden",
+		"schrei" : "&n &a"; "&g",
+		"schuettel" : "&n &a"; "&g&aHat einen Unterschied, je nachdem, ob ein Name"
+			+" angegeben wurde oder nicht.",
+		"schweig" : "&a"; "",
+		"seufz" : "&a"; "&g",
+		"sing" : "&a | &t"; "",
+		"sniff" : "&n &a"; "&dtraurig",
+		"spuck" : "&n &a"; "&g",
+		"stampf" : "&a"; "",
+		"starr" : "&n &a"; "Standardadverb gilt hier nur bei Angabe eines Namens."
+			+"&dvertraeumt",
+		"staun" : "&n &a"; "",
+		"stier" : "&n &a"; "&g",
+		"stimm" : "&n &a"; "",
+		"stoehn" : "&a"; "&g",
+		"stoss" : "&n! &a"; "&g",
+		"streichel" : "&n! &a"; "&g&a",
+		"stups" : "&n! &a"; "",
+		"stutz" : "&a"; "",
+		"tanz" : "&n &a"; "&g",
+		"traeum" : "{&n &a} | &t"; "Es koennen Probleme auftreten, wenn ein Adverb"
+			+" in freiem Text erkannt wird. Text wird genau so an \"traeum(s)t\" "
+			+"angehaengt, wie er angegeben wurde.",
+		"tritt" : "&n &a"; "&g&a",
+		"troest" : "&n! &a"; "",
+		"umarm" : "&n! &a"; "&g&a",
+		"verneig" : "&n &a"; "&g&a",
+		"wackel" : "&a [mit &t!]"; "&gMan kann mit allem moeglichem wackeln.",
+		"waelz" : "&a"; "&dvor Lachen",
+		"wart" : "&n &a"; "Man kann auf alles moegliche warten (warte alles "
+			+"moegliche)",
+		"weck" : "&n {&a | &t}"; "Piepst <Name> an und sendet ihm ggf. den Text.",
+		"wein" : "&n &a"; "&g",
+		"wink" : "&n &a"; "&a",
+		"wuerg" : "&n &a"; "",
+		"wunder" : "&n &a"; "",
+		"zeig" : "<Objekt-ID>"; "&aZeigt das Objekt (Langbeschreibung).",
+		"zitier" : "&n &a"; "Hier uebernimmt das Adverb ggf. die Stelle des "
+			+"zitierten, wenn dieser nicht anwesend ist (zitiere Ja /Jof)",
+		"zitter" : "&a"; "",
+		"zwinker" : "&n &a"; "&g",
+		"aechz" : "&a"; "",
+		"argl" : "&a"; "",
+		"atm" : "&a"; "&derleichtert",
+		"bewunder" : "&n! &a"; "",
+		"erbleich" : "&a"; "&g",
+		"fluch" : "&a"; "&g",
+		"grunz" : "&a"; "",
+		"kuschel" : "&n! &a"; "&g",
+		"rotfl" : "&a"; "",
+		"verfluch" : "{&n &a} | &t!"; "",
+		"kitzel" : "&n! &a"; "&g",
+		"nein" : "&a"; "&g",
+		"deut" : "&n! &a"; "&a",
+		"denk" : "&a | &t"; "&g",
+		"knuddel" : "&n! &a"; "&g&a",
+		"kratz" : "&a"; "",
+		"streck" : "&n &a [[die] zunge raus"; "&g",
+		"taetschel" : "&n! &a"; "&g",
+		"wuschel" : "&n! &a"; "",
+		"rassel" : "&a"; "&g&dfuerchterlich",
+		"heul" : "&a"; "&g&dschauerlich",
+		"kick" : "&n &a"; "&g&a",
+		"splash" : "&n! &a"; "&a",
+		"flame" : "&n! &a"; "&g&a",
+		"rknuddel" : "&n! &a"; "Nur fuer Ferngebrauch gedacht.",
+		"rwink" : "&n! &a"; "Nur fuer Ferngebrauch gedacht.",
+		"verb" : ""; "Listet alle derzeit moeglichen Verben auf.",
+		"adverb" : "[# | $ | {? <Abkuerzung>} | <Abkuerzung> [<Adverb>]]";
+			"Genauere Hilfe mit \"adverb ?\"",
+	]);
+}
+
+/**
+  Gibt die Hilfe zu einem Verb oder die Verbenuebersicht zurueck
+  \param verb   "string"  Ein Verb dessen Hilfe angezeigt werden soll.
+                0 oder "" Ueberblicksseite
+  \return 	String der an den Spieler ausgegeben werden kann.
+*/
+string Help(string verb)  {
+	string out;
+	if (verb && verb!="")
+		return HelpVerb(verb);
+	out="";
+	out+=break_string("Standardverben:\n"+implode(SortIt(plrcmds), ", ")
+		+".", 78, 0, 1);
+	if (IS_WIZARD(this_player()))
+		out+="\n"+break_string("Magierverben:\n"+implode(SortIt(wizcmds), ", ")
+			+".", 78, 0, 1);
+	if (this_player()->ghost())
+		out+="\n"+break_string("Geisterverben:\n"+implode(SortIt(ghostcmds), ", ")
+			+".", 78, 0, 1);
+	out+=break_string("\nAdverbien koennen entweder in der Abkuerzung (bei "
+		+"bereits definierten Adverbien) oder mit \"/<Text>\" angegeben werden. "
+		+"Bei der zweiten Methode wird <Text> so, wie er angegeben wurde, an "
+		+"Stelle des Adverbs eingesetzt.", 78, 0, 1);
+	out+="\n"+break_string("Eine kurze Hilfe zu einem Verb bekommst du mit einem der "
+                +"Befehle \"<Verb> -?\", \"<Verb> /?\", \"<Verb> -h\", \"<Verb> /h\" oder "
+                +"\"<Verb> hilfe\". (Da war jemand wirklich fleissig).", 78);
+	return out+"\n"+break_string("Einige Befehle reagieren auch auf leicht "
+		+"unterschiedliche Schreibweise. Diese Befehlsliste kann sich mit Deinem "
+		+"Zustand aendern.", 78);
+}
+
+/**
+  Sortiert ein array of string alphabetisch. 
+  \param arr Das zu sortierende Array
+  \return    Sortierte Kopie des Arrays
+*/
+private string*
+SortIt(string *arr)  {
+  return sort_array(arr, 
+           function int (string x, string y){ 
+             return lower_case(x) > lower_case(y) ;
+           } 
+         );
+}
+
+#define NO_MORE_E ({"cls","flipp","gruebel","grummel","guck","haetschel",\
+  "jubel","laechel","gib","runzel","schmunzel","schuettel","sniff",\
+  "streichel","tritt", "wackel","argl","rotfl","kuschel","kitzel","knuddel",\
+  "taetschel","wuschel","rassel","kick","splash","flame","verb","adverb",\
+  "nein","brummel","mopper",})
+
+/**
+  Gibt die Hilfe zu einem Verb 
+  \param v     Ein Verb dessen Hilfe angezeigt werden soll.
+  \return 	Hilfe zum Verb in Form eines Strings
+*/
+private string
+HelpVerb(string v)  {
+	string h,t;
+	if (member(m_indices(help),v)<0)
+		return "Dazu ist keine Hilfe vorhanden.\n";
+	h="Syntax:\n* "+v;
+	if (member(NO_MORE_E, v)<0)
+		h+="e";
+	h+=" ";
+	t=help[v,0];
+	t=implode(explode(t,"&t!"), "<Text>");
+	t=implode(explode(t,"&n!"), "<Name>");
+	t=implode(explode(t,"&t"), "[<Text>]");
+	t=implode(explode(t,"&n"), "[<Name>]");
+	t=implode(explode(t,"&a"), "[<Adverb>]");
+	h+=t;
+	t=help[v,1];
+	if (t!="")  {
+		h+="\nBemerkungen:";
+		if ((explode(t,"&"))[0]!="")
+			t="\n"+break_string((explode(t,"&"))[0], 76, "* ", 1)[0..<2]
+				+"&"+implode((explode(t,"&"))[1..<1],"&");
+		t=implode(explode(t,"&g"), "\n* Verhaelt sich bei Geistern anders "
+			+"als sonst.");
+		t=implode(explode(t,"&a"), "\n* Bei diesem Verb geht alle(n) als "
+			+"Zielangabe.");
+		if (strstr(t,"&d")>=0)  {
+			t=implode(explode(t,"&d"), "\n* Standardadverb ist ");
+			t+=".";
+		}
+	}
+	return break_string(h+t, 78, 2, 1);
+}