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);
+}