Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/rotaugenvampire/.readme b/doc/beispiele/rotaugenvampire/.readme
new file mode 100644
index 0000000..a2ceeb6
--- /dev/null
+++ b/doc/beispiele/rotaugenvampire/.readme
@@ -0,0 +1,3 @@
+Drei Beispielmonster, die wichtige Basiseigenschaften von NPCs sowie
+die Vererbung demonstrieren. Angelehnt an bspmon1.c von Boing.
+(Zesstra)
diff --git a/doc/beispiele/rotaugenvampire/rotaugenvampir.c b/doc/beispiele/rotaugenvampire/rotaugenvampir.c
new file mode 100644
index 0000000..ca464d5
--- /dev/null
+++ b/doc/beispiele/rotaugenvampire/rotaugenvampir.c
@@ -0,0 +1,135 @@
+/*
+   Ein Beispiel-NPC (von Zesstra, angelehnt an Boings bspmon1.c)
+*/
+
+// Diese Pragmas sorgen dafuer, dass der Driver darauf achtet, dass bei
+// Funktionsargumenten, -Rueckgabewerten und teilweise bei Zuweisung von
+// Werten an Variablen der richtige Datentyp verwendet wird (z.b. kein string
+// anstelle eines int verwendet wird). Sollte in keinem Objekt fehlen.
+#pragma strong_types, save_types, rtt_checks
+// Einige Warnungen werden als Fehler betrachtet (empfohlen)
+#pragma pedantic, range_check
+// Schaltet bestimmte Warnungen ein (empfohlen)
+#pragma warn_deprecated, warn_empty_casts, warn_missing_return
+#pragma warn_function_inconsistent
+
+// Erbt den Standard-NPC / das Standard-Monster
+inherit "/std/npc";
+
+// Inkludiert Definitionen fuer Properties und einige Konstanten
+#include <properties.h>
+#include <language.h>
+#include <class.h> // Konstanten fuer AddClass()
+
+// create() wird beim Erzeugen des Objekt vom Driver gerufen und initialisiert
+// diesen NPC. Es bekommt kein Argument, gibt keinen Wert zurueck (Typ: void)
+// und kann nicht von ausserhalb des Objektes gerufen werden (protected).
+protected void create()
+{
+  // Nicht vergessen, ohne das geht nichts. Fuehrt das create() des geerbten
+  // /std/npc aus und initialisiert den Standard-NPC.
+  ::create();
+
+/* Die Kurzbeschreibung wird zum Beispiel angezeigt wenn man in einen Raum
+   mit dem Monster reinlaeuft */
+  SetProp(P_SHORT, "Rotaugenvampir");
+
+/* Beim Anschauen des Monsters wird die long-description angezeigt,
+ * Zeilenumbruch nach Bedarf nach 78 Zeichen. */
+  SetProp(P_LONG, break_string(
+    "Ein finster aussehender Rotaugenvampir.",78));
+
+/* Ein Name muss sein, da sonst z.B. im Todesfall 'Leiche von 0' daliegt */
+  SetProp(P_NAME, "Rotaugenvampir");
+  SetProp(P_NAME_ADJ,"ausgemergelt");
+  
+/* Das Geschlecht des Monsters. Als Geschlechter sind */
+/* die in <language.h> definierten Symbole NEUTER, MALE   */
+/* und FEMALE zulaessig.                                  */
+  SetProp(P_GENDER, MALE);
+
+/* Ein Monster braucht mindestens eine ID, unter der man es ansprechen kann */
+/* Es kann aber auch mehrere verschiedene ID's haben.                       */
+  AddId( ({"vampir","rotaugenvampir"}) );
+
+/* Zuerst sollte man dem Monster einen Grundlevel geben. */
+/* Setzt Standardwerte fuer P_LEVEL, P_MAX_HP (Lebenspunkte), P_MAX_SP
+ * (Magiepunkte), P_HANDS, P_BODY, P_XP und die Attribute A_STR, A_INT, A_DEX
+ * und A_CON. Alle koennen spaeter noch geaendert werden.
+ */
+  create_default_npc( 25 );
+
+/* Nun machen wir es etwas widerstandsfaehiger, indem wir P_BODY setzen.  */
+/* Nie P_TOTAL_AC oder P_AC setzen, P_TOTAL_AC wird automatisch berechnet */
+/* und P_AC ist nur fuer Ruestungen da.                                   */
+  SetProp(P_BODY, 55);
+
+/* Das Monster schlaegt mit blossen Haenden zu, also wird P_HANDS gesetzt.   */
+/* Auch hier weder P_TOTAL_WC noch P_WC setzen.                              */
+  SetProp(P_HANDS, ({" mit seinen Haenden", 135}));
+/*                    ^ dieses Leerzeichen ist wichtig                       */
+/* Beim Kampf erscheint nun: 'Das Monster greift Dich mit seinen Haenden an' */
+/* 135 entspricht der Waffenklasse                                            */
+
+/* Gesinnung des Monsters, 0 ist neutral, negativ boese und positiv gut */
+  SetProp(P_ALIGN, -100);  /* etwas boese, aber nichts besonderes */
+
+/* Die Rasse des Monsters */
+  SetProp(P_RACE, "Vampir");
+
+/* Erfahrungspunkte des Monsters, beim Tod erhaelt der 'Killer' ein   */
+/* hundertstel dieses Wertes. Schon im Kampf erhaelt man bei jedem    */
+/* Schlag weapon_class*schaden/10 punkte (weapon_class hier 55), also */
+/* insgesamt weapon_class*hit_points/10.                              */
+/* Ab 200000 gibt der NPC einen Stufenpunkt, ab 600000 2 Stufenpunkte */
+  SetProp(P_XP, 130000);
+  
+/* Die Groesse des Monsters in cm. Dies wird bei einigen Kampfbefehlen */
+/* ausgewertet, sowie bei einigen Identifikationsspruechen von Gilden.
+ * Irgendwas zwischen 170 und 190 cm.  */
+  SetProp(P_SIZE, 170 + random(21));
+
+/* Ein Gewicht (in Gramm) sollte der NPC haben, irgendwas zwischen 40 und 48
+ * kg.
+ */
+  SetProp(P_WEIGHT, 40000 + random(8000));
+
+/* Weitere Werte: P_(MAX)_FOOD, P_(MAX)_DRINK, P_(MAX)_ALCOHOL,       */
+/* P_MSGIN, P_MSGOUT, P_MMSGIN, P_MMSGOUT, P_MAX_HANDS                */
+
+/* Spezielle Infos (fuer den Identifiziere-Spruch) */
+  SetProp(P_INFO, break_string(
+    "Der Rotaugenvampir laesst sich vielleicht mit Knoblauch vertreiben.",
+    78));
+
+/* NPC koennen einer Klasse angehoeren und Waffen koennten z.B. gegen
+ * bestimmte Klassen/Rassen besonders (in)effektiv sein.
+ */
+  AddClass(({CL_VAMPIRE,CL_UNDEAD}));
+
+/* Resistenzen (negativ) und Anfaelligkeiten (positiv) */
+  SetProp(P_RESISTANCE_STRENGTHS, ([
+        DT_BLUDGEON:0.2,DT_RIP:0.2,
+        DT_MAGIC: -0.2, DT_COLD: -0.1, DT_TERROR: -0.8 ]) );
+  
+// Wer hat den Spieler gekillt und was sagt man dann?
+  SetProp(P_KILL_NAME,"Ein Rotaugenvampir");
+  SetProp(P_KILL_MSG,({"Grossartig %s! Ein weiteres Opfer fuer Zesstra!", 
+                       MSG_SAY}));
+
+  // beschwerde auf -moerder
+  SetProp(P_MURDER_MSG,"Du steckst doch mit Jof im Bunde, %s!");
+  SetProp(P_DIE_MSG," bricht stoehnend zusammen.\n");
+
+  // Auch NPC sollten Details haben:
+  AddDetail( ({"augen","augenlider","lider"}), break_string(
+    "Der Rotaugenvampir schaut Dich mit weit aufgerissenen, rot "
+    "schimmernden Augen wild an.",78));
+  // ...
+
+  // riecht der nach was? -> AddSmells()
+  
+  // Kann man den nach was fragen? -> AddInfo().
+
+}
+
diff --git a/doc/beispiele/rotaugenvampire/rotaugenvampirmagier.c b/doc/beispiele/rotaugenvampire/rotaugenvampirmagier.c
new file mode 100644
index 0000000..a6c5aaf
--- /dev/null
+++ b/doc/beispiele/rotaugenvampire/rotaugenvampirmagier.c
@@ -0,0 +1,77 @@
+/*
+   Ein magisch begabter Beispiel-NPC (von Zesstra, angelehnt an Boings
+   bspmon1.c)
+*/
+
+// Diese Pragmas sorgen dafuer, dass der Driver darauf achtet, dass bei
+// Funktionsargumenten, -Rueckgabewerten und teilweise bei Zuweisung von
+// Werten an Variablen der richtige Datentyp verwendet wird (z.b. kein string
+// anstelle eines int verwendet wird). Sollte in keinem Objekt fehlen.
+#pragma strong_types, save_types, rtt_checks
+// Einige Warnungen werden als Fehler betrachtet (empfohlen)
+#pragma pedantic, range_check
+// Schaltet bestimmte Warnungen ein (empfohlen)
+#pragma warn_deprecated, warn_empty_casts, warn_missing_return
+#pragma warn_function_inconsistent
+
+// Dieser NPC soll ein Rotaugenvampir sein, der ein paar Spells kann. Und nen
+// Rotaugenvampir gibt es schon. Also einfach den normalen Rotaugenvampir
+// aus diesem Verzeichnis erben.
+inherit __DIR__+"rotaugenvampir";
+
+// Inkludiert Definitionen fuer Properties
+#include <properties.h>
+
+protected void create()
+{
+  // Nicht vergessen, ohne das geht nichts. Fuehrt das create() des geerbten
+  // Rotaugenvampir aus und konfiguriert ihn.
+  ::create();
+
+/* Die Kurzbeschreibung wird zum Beispiel angezeigt wenn man in einen Raum
+   mit dem Monster reinlaeuft */
+  SetProp(P_SHORT, "Rotaugenvampirmagier");
+
+/* Beim Anschauen des Monsters wird die long-description angezeigt,
+ * Zeilenumbruch nach Bedarf nach 78 Zeichen. */
+  SetProp(P_LONG, break_string(
+    "Ein finster aussehender Rotaugenvampir in einer Kutte.",78));
+
+/* Ein Name muss sein, da sonst z.B. im Todesfall 'Leiche von 0' daliegt */
+  SetProp(P_NAME, "Rotaugenvampirmagier");
+  SetProp(P_NAME_ADJ,"listenreich");
+
+  // fast alle Eigenschaften uebernehmen wir einfach unveraendert unveraendert
+  // vom normalen Rotaugenvampir. Die Hands nicht, der Magier haut nicht so
+  // gut zu...
+  SetProp(P_HANDS, ({" mit seinen Haenden", 85}));
+
+  // ok, spielt wenig Rolle in diesem Fall, aber damits stilecht ist, kriegt
+  // der hier jetzt etwas mehr an Magiepunkten (spellpoints)
+  SetProp(P_MAX_SP, 350);
+
+  // und noch ein paar Spells
+  // Anmerkung: diese Spells haben nichts mit irgendwelchen Gildenspells zu
+  // tun und - ja, tatsaechlich - verbrauchen keine Magiepunkte...
+
+  // wahrscheinlichkeit in % pro runde, einen Spell zu casten:
+  SetProp(P_SPELLRATE,30);
+  // Ein Spell, der 100 Schadenspunkte macht und in 60% der Faelle ausgewaehlt
+  // wird. Erste Meldung geht an den Spieler, die zweite an den Raum.
+  // Schadenstyp ist Schlagschaden.
+  AddSpell(60,100,
+    break_string(Name(WER) + " macht eine Handbewegung vor Deinem Gesicht. "
+      "So abgelenkt stolperst Du in faellst hart zu Boden.",78),
+    break_string(Name(WER) + " macht eine Handbewegung vor @WESSEN Gesicht. "
+      "@WER stolpert und faellt hart auf den Boden.",78),
+    ({DT_BLUDGEON}) );
+  // Ein Spell, der 800 Schadenspunkte macht und in 40% der Faelle ausgewaehlt
+  // wird. Schadenstyp: Feuer.
+  AddSpell(40,800,
+    break_string(Name(WER) + " schaut Dich mit brennenden Augen "
+      "durchdringend an. Du glaubst, innerlich zu verbrennen.",78),
+    break_string(Name(WER) + " schaut @WEN mit gluehenden Augen an. "
+      "@WER kruemmt sich vor Schmerzen.",78),
+    ({DT_FIRE}) );
+}
+
diff --git a/doc/beispiele/rotaugenvampire/rotaugenvampirmagierin.c b/doc/beispiele/rotaugenvampire/rotaugenvampirmagierin.c
new file mode 100644
index 0000000..b506e1e
--- /dev/null
+++ b/doc/beispiele/rotaugenvampire/rotaugenvampirmagierin.c
@@ -0,0 +1,48 @@
+/*
+   Ein magisch begabter Beispiel-NPC (von Zesstra, angelehnt an Boings
+   bspmon1.c)
+   In diesem Fall soll eine Magierin sein, die aber die gleichen Stats wie der
+   maennliche Kollege hat.
+*/
+
+// Diese Pragmas sorgen dafuer, dass der Driver darauf achtet, dass bei
+// Funktionsargumenten, -Rueckgabewerten und teilweise bei Zuweisung von
+// Werten an Variablen der richtige Datentyp verwendet wird (z.b. kein string
+// anstelle eines int verwendet wird). Sollte in keinem Objekt fehlen.
+#pragma strong_types, save_types, rtt_checks
+// Einige Warnungen werden als Fehler betrachtet (empfohlen)
+#pragma pedantic, range_check
+// Schaltet bestimmte Warnungen ein (empfohlen)
+#pragma warn_deprecated, warn_empty_casts, warn_missing_return
+#pragma warn_function_inconsistent
+
+// Dieser NPC soll eine Rotaugenvampirmagierin sein. Und nen
+// Rotaugenvampirmagier gibt es schon. Also einfach den normalen
+// Rotaugenvampirmagier aus diesem Verzeichnis erben.
+inherit __DIR__+"rotaugenvampirmagier";
+
+// Inkludiert Definitionen fuer Properties
+#include <properties.h>
+#include <language.h> // fuer FEMALE-Define
+
+protected void create()
+{
+  // Nicht vergessen, ohne das geht nichts. Fuehrt das create() des geerbten
+  // Rotaugenvampirmagiers aus und konfiguriert ihn.
+  ::create();
+
+  // Geschlecht aendern.
+  SetProp(P_GENDER, FEMALE);
+
+  // Kurz- und Langbeschreibung aendern.
+  SetProp(P_SHORT, "Rotaugenvampirmagierin");
+  SetProp(P_LONG, break_string(
+    "Eine finster aussehende Rotaugenvampirmagierin in einer Kutte.",78));
+
+  // Name anpassen
+  SetProp(P_NAME, "Rotaugenvampirmagierin");
+
+  // Meldung anpassen.
+  SetProp(P_HANDS, ({" mit ihren Haenden", 85}));
+}
+