Added public files
Roughly added all public files. Probably missed some, though.
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}) );
+}
+