Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/help/GMCP b/doc/help/GMCP
new file mode 100644
index 0000000..600ad88
--- /dev/null
+++ b/doc/help/GMCP
@@ -0,0 +1,356 @@
+General Mud Communication Protocol im MorgenGrauen
+==================================================
+
+0. Einleitung
+   GMCP wird benutzt, um Daten zwischen MUD und Client "out of band" zu
+   uebertragen. "Out of band" bedeutet hier, dass der Datenaustausch hinter
+   den Kulissen passiert statt in der normalen textuellen Spielausgabe,
+   welcher vom Client mittels mehr oder weniger komplizierter Trigger
+   ausgewertet werden muss.
+
+   Vorteile:
+   * keine komplexen Trigger (Regexps) mehr.
+   * Daten werden in einem definierten Format uebertragen, welches der Client
+     fuer euch interpretiert.
+   * keine Gagtrigger mehr noetig, um empfangenen Text auszublenden
+   * keine stoerenden Ausgaben, falls man diese Gagtrigger nicht hat.
+   * Daten koennen auch uebertragen werden in Situationen, in denen eine
+     normale Textausgabe nicht so gut geht, z.B. in Editoren.
+   * Daten, die die Clientscripte nicht verarbeiten, stoeren nicht den
+     Textfluss.
+   * Der Client kann konfigurieren, welche Informationen er bekommen will.
+   * Im MG ist neben Dingen wie LP und KP die Uebertragung div. anderer Dinge
+     geplant, vor allem andere Informationen  ueber den Char oder den Raum
+     (z.B. eindeutige Raum-IDs (in den meisten Faellen)).
+
+
+1. Unterstuetzte Module
+
+1.1. Core (aus IRE (Iron Realms Entertainment) MUDs)
+  Das Core Modul ist immer aktiv. Es verwaltet die grundsaetzlichen
+  Einstellungen von GMCP. Die MG-Variante ist fast identisch zur IRE-Variante,
+  hat allerdings zusaetzliche das "Debug"-Kommando.
+
+  Vom Client gesendet:
+    - Core.Hello
+        Muss die erste Nachricht sein, welche der Client nach Aktivierung von
+        GMCP sendet.
+        Die Daten sind ein Objekt mit den Schluesseln "client" und "version",
+        welche entsprechend den Clientnamen und seine Versionskennung
+        enthalten.
+      Core.Hello { "client": "Nexus", "version": "3.1.90" }
+    - Core.Supports.Set
+        Informiert das MUD ueber die Pakete/Module, die der Client
+        unterstuetzt, d.h. die der Client empfangen kann. Es ist immer noch
+        Entscheidung des Muds, welche dieser Module ihre Daten senden (z.B.
+        wird MG einem "MG.char" den Vorzug geben vor einem generischen "Char",
+        falls vom Client beide unterstuetzt werden.
+        Wenn bereits vorher ein Core.Supports.* Kommando empfangen wurde, wird
+        die Liste der unterstuetzten Module durch die neue ersetzt.
+        Daten sind ein Array von Strings, welche jeweils den Modulnamen und
+        die Versionsnummer angeben (mit einem Leerzeichen getrennt).
+        Die Versionsnummer muss eine positive Ganzzahl sein.
+        Die meisten Clients werden Set nur einmal am Anfang senden und
+        brauchen kein Add/Remove.
+      Core.Supports.Set [ "MG.char 1", "MG.room 1" ]
+    - Core.Supports.Add
+        aehnlich zu Set, aber es fuegt die angegeben Module an die in der
+        Vergangenheit uebermittelten an.
+        Wenn noch keine Liste gesendet wurde, ist das Ergebnis wie bei Set.
+        Wenn die Liste Module enthaelt, die bereits aktiv sind, wird die neue
+        Versionsnummer Prioritaet vor der alten haben, selbst wenn die kleiner
+        ist.
+        Die Daten sind identisch zu Set.
+    - Core.Supports.Remove
+        Entfernt die angebenen Module aus der Liste der unterstuetzen Module.
+        Die Daten sind identisch zu Set. Die Modulversionen sind NICHT
+        optional (anders als bei IRE). Allerdings werden auch Module anderer
+        Version abgeschaltet. (Insofern koennte man - zur Zeit - einfach immer 1
+        als Versionsnummer senden.)
+    - Core.KeepAlive
+        Vom MG ignoriert, weil Verbindungen nicht automatisch getrennt werden.
+    - Core.Ping
+        Veranlasst das MG mit einem Core.Ping zu antworten.
+        Die Daten ist eine Ganzzahl, welche die durchschnittliche Pingzeit
+        aus verherigen Pings enthaelt, falls verfuegbar.
+        (Anmerkung: IRE macht keine Angabe ueber die Einheit dieser Zahl. MG
+         geht von Millisekunden aus.)
+      Core.Ping 120
+    - Core.Debug
+        Kann gesendet werden, um die Ausgabe von menschenlesbaren
+        Debugmeldungen vom GMCP zu aktivieren.
+        Die Daten sind eine Ganzzahl. Je groesser, desto mehr Debugmeldungen
+        werden ausgegeben.
+        0 schaltet die Debugmeldungen aus.
+        1 schaltet nur die Ausgabe von GMCP-Fehlern an.
+        100 schaltet alles an.
+      Core.Debug 1
+  Vom Server gesendet:
+    - Core.Ping
+        Als Antwort eines vom Client empfangenen Core.Ping gesendet.
+        Keine Daten.
+    - Core.Goodbye [NOT IMPLEMENTED YET!]
+        Gesendet vom MUD unmittelbar vor Verbindungstrennung.
+        Die Daten sind eine Nachricht (string), welche dem User angezeigt
+        werden kann und koennen den Grund fuer den Disconnect erklaeren.
+      Core.Goodbye "Goodbye, adventurer"
+
+1.2. MG.char 1 (angelehnt an Aardwolf, aber modifiziert)
+  Die Uebertragung der Kommandos in diesem Modul wird aktiviert, wenn
+  "MG.char" aktiv ist. Es gibt keine Submodule, die getrennt aktiviert werden
+  muessten. Die jeweiligen Kommandos werden gesendet, wenn sich eins der
+  gesendeten Daten aendert.
+  Alle Kommandos werden einmal bei Modulaktivierung gesendet (auch wenn ein
+  Modul durch ein Core.Supports.Set (erneut) aktiviert wird).
+  Ist dieses Modul vom Client unterstuetzt, werden keine Daten aus den
+  Modulen "Char" und "char" gesendet.
+  (Spieler aelter als 12.05.2013 muessen einmalig den textuellen Report mit
+   "report ein" und "report vorsicht" einschalten, damit die Uebertragung
+   via GMCP freigeschaltet wird. Der Report kann danach wieder
+   ausgeschaltet werden.)
+
+1.2.2. MG.char.base
+  Vom Server gesendet:
+    - MG.char.base
+      Einige grundlegende Eigenschaften des Chars, die sich selten aendern.
+      Ein "wizlevel" von 1 zeigt an, dass der Char ein Seher ist.
+      Der "title" kann am Anfang ein Backspace "\b" gefolgt von "," oder "'"
+      enthalten.
+      MG.char.base { "name": "Jof", "guild": "Abenteurer",
+                     "race": "Elf", "presay": "Mudgott",
+                     "title": "idlet.", "wizlevel": 101 }
+
+1.2.3. MG.char.vitals
+  Vom Server gesendet:
+    - MG.char.vitals
+      Aktuelle Lebenspunkte, Konzentrationspunkte und Vergiftungzustand.
+      Im Falle von Gift: je groesser, desto staerker die Vergiftung.
+      MG.char.vitals { "hp": 210, "sp": 90, "poison": 3 }
+    - MG.char.maxvitals
+      Aktuelle Maximalwerte fuer LP, KP und Vergiftungszustand. Werden in
+      einer separaten Gruppe uebertragen, weil sie sich viel seltener aendern.
+      MG.char.maxvitals { "max_hp": 210, "max_sp": 226, "max_poison": 10 }
+
+1.2.4. MG.char.attributes
+  Vom Server gesendet:
+    - MG.char.attributes
+      Aktuelle Attribute des Chars.
+      Die Daten sind ein Objekt Name-Wert-Paaren von Attributen.
+      MG.char.attributes { "int": 12, "con": 10, "str": 8, "dex": 12 }
+
+1.2.5. MG.char.infoVars
+  Vom Server gesendet:
+    - MG.char.infoVars
+      Diese Nachricht gibt den "technischen" Namen aus MG.char.info einen
+      Namen, der dem Spieler stattdessen angezeigt werden sollte.
+      Diese Nachricht wird nur bei Modulaktivierung gesendet.
+      Die Daten sind ein Objekt von Name-Beschreibung-Paaren.
+      MG.char.infoVars { "level": "Stufe", "guildlevel": "Gildenstufe" }
+
+1.2.6. MG.char.info
+  Vom Server gesendet:
+    - MG.char.info
+      Uebertraegt (ausgewaehlte) Daten aus dem Kommando <info>.
+      Die Daten sind ein Objekt von Name-Wert-Paaren.
+      (Moegliche weitere Angaben in der Zukunft: Questpunkte, Stufenpunkte
+       (Genauigkeit 20% einer Stufe), ...)
+      MG.char.info { "level": 210, "guildlevel": 9 }
+
+1.2.7. MG.char.wimpy
+  Vom Server gesendet:
+    - MG.char.wimpy
+      Aktuelle Vorsicht und ggf. Fluchtrichtung des Char.
+      Die Daten sind ein Objekt Name-Wert-Paare von Vorsicht+Fluchtrichtung.
+      Ist keine Fluchtrichtung gesetzt, wird 0 uebertragen.
+      Fuer die Uebermittlung der Vorsicht muss der Char die Quest "Der Schrat
+      kann nicht einschlafen" geloest haben und fuer die Fluchtrichtung
+      Seher sein.
+      MG.char.wimpy { "wimpy": 50, "wimpy_dir": "norden" }
+
+
+1.3. char 1 (Aardwolf)
+  Dieses Modul ist so aehnlich zum "char" Modul von Aardwolf wie es geht, d.h.
+  es benutzt die gleichen Schluesselnamen. Es ist aber reduziert im Umfang der
+  Daten, d.h. es uebertraegt weniger Daten als Aardwolf es tut.
+  Wann immer moeglich, wird empfohlen, das Modul MG.char stattdessen zu
+  verwenden.
+  Wenn MG.char aktiv ist, werden von diesem Modul keine Daten uebertragen.
+  ES WIRD DAVON ABGERATEN, DIESES MODUL ZU VERWENDEN.
+  Wann immer moeglich, solltet ihr es in euren Clients abschalten!
+
+1.3.1. char.base
+  Vom Server gesendet:
+    - char.base
+      Einige grundlegende Eigenschaften des Chars, die sich selten aendern.
+      char.base { "name": "Jof", "race": "Elf",}
+
+1.3.2. char.vitals
+  Vom Server gesendet:
+    - char.vitals
+      Aktuelle Lebens- und Konzentrationspunkte.
+      char.vitals { "hp": 210, "mana": 90}
+
+1.3.3. char.stats
+  Vom Server gesendet:
+    - char.stats
+      Aktuelle Attribute des Spielers.
+      Die Daten sind ein Objekt Name-Wert-Paaren von Attributen.
+      char.stats { "int": 12, "con": 10, "str": 8, "dex": 12 }
+
+1.3.4. char.status
+  Vom Server gesendet:
+    - char.status
+      Aktueller Level des Chars. (Dies ist die einzige Angabe aus dem Aardwolf
+      char.status, welche das MG machen kann.)
+      Die Daten sind ein Objekt Name-Wert-Paaren von Attributen.
+      char.status { "level": 210 }
+
+
+1.4. Char 1 (IRE)
+  Dieses Modul ist so aehnlich zum "Char" Modul von IRE wie es geht, d.h.
+  es benutzt die gleichen Schluesselnamen. Es ist aber reduziert im Umfang der
+  Daten, d.h. es uebertraegt weniger Daten als IRE es tut.
+  Wann immer moeglich, wird empfohlen, das Modul MG.char stattdessen zu
+  verwenden.
+  Wenn MG.char aktiv ist, werden von diesem Modul keine Daten uebertragen.
+  ES WIRD DAVON ABGERATEN, DIESES MODUL ZU VERWENDEN.
+  Wann immer moeglich, solltet ihr es in euren Clients abschalten!
+
+1.4.1. Char.Vitals
+  Vom Server gesendet:
+    - Char.Vitals
+      Aktuelle und maximale Lebens- und Konzentrationspunkte.
+      Char.Vitals { "hp": 210, "mp": 90, "maxhp": 210, "maxmp": 226 }
+
+1.4.2. Char.Status
+  Vom Server gesendet:
+    - Char.Status
+      Aktueller Level und Gilde des Chars. 
+      Die Daten sind ein Objekt Name-Wert-Paaren von Attributen.
+      Char.Status { "level": 210, "guild": "Zauberer" }
+
+1.4.3. Char.StatusVars
+  Vom Server gesendet:
+    - Char.StatusVars
+      Diese Nachricht gibt den "technischen" Namen aus Char.Status einen
+      Namen, der dem Spieler stattdessen angezeigt werden sollte.
+      Dieses Kommando wird nur bei Modulaktivierung gesendet.
+      Die Daten sind ein Objekt von Name-Beschreibung-Paaren.
+      Char.StatusVars { "level": "Spielerstufe", "guild": "Gilde" }
+
+
+1.5. comm.channel 1 (Aardwolf)
+  Dieses Modul ist genauso wie es Aardwolf definiert. Allerdings werden
+  natuerlich aus dem MG andere Ebenen uebertragen. ;-)
+  Vom Server gesendet:
+    - comm.channel
+      Diese Nachricht wird immer dann gesendet, wenn jemand was auf einer
+      eingeschalteten Ebene sagt. (Nicht bei Abruf der History!)
+      Zur Zeit ist es nicht moeglich, Ebenen per GMCP ein- oder auszuschalten.
+      Wenn dieses GMCP-Modul eingeschaltet ist, wird die Ausgabe der
+      Ebenenmeldung in der normalen Spielausgabe des MG unterdrueckt.
+      Achtung: Zur Zeit erfolgt (noch) keine Beruecksichtung eurer
+      "ignoriere"-Einstellungen bei den via GMCP uebertragenen
+      Ebenenmeldungen.
+      comm.channel { "chan": "allgemein",
+          "msg": "[Allgemein:Maharet] Guten Morgen, Grauen!", 
+          "player": "Maharet" }
+
+
+1.5. MG.team 1 (eigene Variante, inspiriert von Aardwolf)
+     Kommt spaeter. ;-)
+
+
+1.6. MG.room 1 (eigene Variante, inspiriert von Aardwolf)
+  MG.room beinhaltet Informationen ueber den aktuellen Raum des Spielers
+
+  Vom Server gesendet:
+  - MG.room.info
+    Diese Nachrichtig wird immer nach Betreten eines neuen Raumes gesendet
+    und enthaelt folgende Informationen:
+    * id: Eine eindeutige ID des Raumes (technisch: ein MD5-Hash)
+        Diese Angabe fehlt in Labyrinthraeumen (nicht gewollt) und in einigen
+        speziellen Raeumen (technische Gruende, z.B. manche 'virtual
+        compiler'). In diesem Fall ist die ID "" (leerer String).
+    * short: Die Kurzbeschreibung des Raumes
+    * domain: Die Region, in der der Raum liegt
+        Manche Raeume liegen nicht in den Regionen. In dem Fall fehlt diese
+        Angabe.
+    * exits: eine Liste von sichtbaren Ausgaengen (d.h. unsichtbare Ausgaenge
+        werden nicht angezeigt).
+    Hinweis: es ist moeglich, dass der Spieler in einen Raum bewegt wird,
+    der zwar technisch ein anderer Raum ist, aber kein anderer Ort. In
+    diesem Fall unterbleibt diese Nachricht.
+    room.info { "id": "d41d8cd98f00b204e9800998ecf8427e",
+                "short": "Die beruehmte Abenteurergilde",
+                "domain": "Ebene",
+                exits: [ "norden", "oben" ] }
+
+
+2. Vergleich mit GMCP in Aardwolf und IRE Muds
+   Im Morgengrauen wird GMCP letztendlich nur als Spezifikation des Transport
+   Layers betrachtet, da bei den Modulen jedes Mud seine eigene Definition der
+   uebertragenen Daten und ihrer Bedeutung vornimmt.
+
+   Das Modul "Char" ist aus den IRE-Muds, welches nur existiert, weil einige
+   Clients es standardmaessig schonmal einschalten. Es sendet aber nur einen
+   Minimalsatz an Daten.
+   Das Modul "char" ist aus Aardwolf, welches nur existiert, weil einige
+   Clients es standardmaessig schonmal einschalten. Es sendet aber nur einen
+   Minimalsatz an Daten.
+
+   Dem Modul MG.char sollte immer der Vorzug vor "Char" oder "char" gegeben
+   werden, da dort deutlich mehr Daten uebertragen werden.
+
+   Das Modul "Room" aus IRE wird nicht unterstuetzt, weil seine Daten vom MG
+   groesstenteils nicht in der geforderten Form bereitgestellt werden koennen
+   (zumindest nicht ohne ungerechtfertigten Aufwand).
+
+3. Transport Specification
+   Einstweilen am besten auf http://www.gammon.com.au/gmcp nachlesen.
+
+   Kommt hier vielleicht spaeter noch, einstweilen am besten im Netz
+   nachgucken.
+
+4. Implementationsdetails
+  Im MG ist Gross-/Kleinschreibung des Modulnamens wichtig, im Gegensatz zum
+  IRE. Meines Wissens (bitte korrigiert mich ggf.), machte die
+  Transportspezifikation keine Aussage in diesem Punkt, sondern IRE hat dies
+  entschieden.
+  Jetzt ist es so, dass Aardwolf teils Module mit dem gleichen Namen, aber
+  anderer Funktion wie IRE gebaut hat. Alle Doku von Aardwolf schreibt aber
+  immer von kleingeschriebenen Modulnamen. Insofern ist das jetzt ein Versuch,
+  die Module von IRE/Aardwolf doch irgndendwie auseinander zu halten.
+
+
+5. Client-Kram
+5.1. Tips und Hinweiss
+  Manche Clients zeigen die empfangenen GMCP-Daten standardmaessig auf dem
+  Bildschirm an.
+  Normalerweise sortieren sie die Daten  aber in von Scripten nutzbare
+  Tabellen ein, so dass es entfaellt, irgendeinen Text zu parsen.
+  In der Regel ist es dann auch so, dass der Client Moeglichkeiten anbietet,
+  auf den Empfang von GMCP-Daten reagieren zu koennen (z.B. nen Script
+  aufrufen zu lassen).
+
+5.2. Clients mit GMCP-MG-Support
+
+5.3. Clients mit GMCP-Support (Transport Spec)
+  * Mudlet (http://forums.mudlet.org/viewtopic.php?f=7&t=1547)
+    Im Netz sind div. weitere Quellen und Tutorial zu finden.
+  * Tintin++ (http://tintin.sourceforge.net/board/viewtopic.php?p=4651)
+  * TF 5 (http://mikeride.chaosnet.org/abelinc/scripts/telopt.html)
+  * CMUD (http://forums.zuggsoft.com/forums/viewtopic.php?p=158455#158455)
+  * Mushclient (http://www.aardwolf.com/wiki/index.php/Clients/MushclientGMCP)
+
+
+6. Angedachte Module fuer die Zukunft
+Ob und wann etwas aus diesem Bereich kommt, ist voellig offen. Haengt auch vom
+Interesse der Spielerschaft ab.
+
+6.3. Char.Items (IRE)
+  Eigentlich eher weniger geplant...
+
+LETZTE AeNDERUNG:
+09.01.2016, Zesstra
+