Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/KURS/raum1 b/doc/KURS/raum1
new file mode 100644
index 0000000..b623c35
--- /dev/null
+++ b/doc/KURS/raum1
@@ -0,0 +1,137 @@
+
+	PROGRAMMIERUNG VON RAEUMEN - TEIL 1
+	von Don Rumata, MudAdm des MorgenGrauens
+	=============================================================
+
+	Ein Raum ist sehr einfach zu programmieren. Man fuellt
+	ihn mit den Informationen, die man in ihm haben will.
+
+	Am besten erklaert sich alles an einem Beispiel. Zu den
+	Funktionen sind in /doc/efuns und /doc/lfuns weitere
+	Informationen erhaeltlich.
+
+	Nachfolgend kannst Du einen (zugegebeneermassen ueber-
+	ausfuehrlich) dokumentierten Beispielraum finden.
+	In /doc/beispiele/raum1.c kannst Du den selben Raum
+	noch einmal (ohne Kommentare) finden. Den Raum
+	kannst Du uebrigens auch betreten.
+
+/* beispielraum.c von Rumata */
+
+inherit "std/room";
+	// Alle Raeume muessen diese Zeile enthalten, da in dem
+	// Standardraum wichtige Funktionen definiert werden, die
+	// innerhalb des Spieles benoetigt werden.
+
+#include <properties.h>
+	// In diesem File sind die Namen der Properties definiert.
+	// Fuer naehre Informationen kannst Du in
+	// /doc/concepts/properties und in /doc/properties.h
+	// nachschauen, da es sehr viele verschiedene Properties
+	// gibt.
+
+#include <language.h>
+	// Diese Module enthalten alle Definitionen im Zusammenhang
+	// mit Sprache. Siehe /doc/language.h
+
+create()
+// Diese Funktion wird automatisch aufgerufen, wenn der Raum geladen
+// wird. Das passiert beim Kommando "load /doc/beispiel/bspraum1" oder
+// wenn ein Spieler den Raum als erster betritt.
+{
+	::create();
+	// Diese Funktion darf NIEMALS fehlen! Sie sorgt dafuer, dass
+	// der Raum auch die allgemeine Initialisierung durchfuehrt,
+	// da diese hier die der "Mutter-Klasse" std/room ueberlaedt.
+
+	SetProp( P_INT_SHORT, "Ein kleines Schreibzimmer" );
+	SetProp( P_INT_LONG,
+		"Du stehst in einem kleinen Schreibzimmer.\n"
+	+	"Es gehoerte wohl irgendwann einmal einem Magier, aber nun\n"
+	+	"ist dieser Raum verwaist und rottet vor sich hin.\n"
+	+	"Ein grosser Schreibtisch in der Mitte des Raumes scheint\n"
+	+	"noch einigermassen gut erhalten zu sein. Durch die Tuer\n"
+	+	"im Norden faellt etwas Licht hinein.\n"
+	);
+	SetProp( P_LIGHT, 1 );
+	SetProp( P_INDOORS, 1 );
+	// Diese Properties MUESSEN in JEDEM Raum gesetzt werden.
+	// P_INT_SHORT	= Beschreibung fuer Spieler im "kurz"-Modus.
+	// P_INT_LONG	= Beschreibung fuer Spieler im "lang"-Modus.
+	// P_LIGHT	= 1 fuer Hell, 0 fuer Dunkel
+	// P_INDOORS	= 1, wenn man den Himmel nicht sehen kann.
+
+	AddDetail( ({ "schreibtisch", "tisch" }),
+		"Auf dem Tisch liegt eine dicke Staubschicht.\n"
+	+	"Eine Schublade findest Du ebenfalls.\n"
+	);
+	AddDetail( ({ "staub", "staubschicht", "schicht" }),
+		"Du malst gelangweilt einige Kreise in den Staub.\n"
+	);
+	AddDetail( "schublade",
+		"So sehr Du Dich anstrengst; Du kannst sie nicht bewegen.\n"
+	);
+	AddDetail( "tuer" ,
+		"Sie steht seit Jahren offen und ist in dieser Lage\n"
+	+	"hoffnungslos festgerostet.\n"
+	);
+	// Details sind Dinge, die man sich in einem Raum anschauen
+	// aber nicht nehmen kann. Je mehr Details ein Raum hat, destso
+	// schoener ist er. Schaut sich ein Spieler ein Detail an,
+	// so bekommt der die angegebene Beschreibung.
+
+	AddRoomCmd( ({ "schliesse", "oeffne", "bewege",
+		"schliess", "beweg" }), "beweg_etwas" );
+	// RoomCommands sind Befehle, die man in diesem ausfuehren kann.
+	// Es wird die angegebene Funktion ausgefuehrt.
+	// WICHTIG: Als Verben sollten immer die IMPERATIVE benutzt
+	//	werden! Also nicht "lese", sondern "lies".
+	
+	AddExit( "norden", "players/rumata/workroom" );
+	// Definition eines Ausgangs. Das zeite Argument bestimmt den
+	// Raum, den ein Spieler erreicht, wenn er in die angegebene
+	// Richtung geht.
+
+}
+
+beweg_etwas( str )
+// Wenn ein Spieler ein Kommando ausfuehrt, so wird alles, was hinter
+// dem Verb steht als String uebergeben, es landet also hier in "str".
+// WICHTIG: Wenn der Befehl abgearbeitet wird, MUSS er eine 1 zurueck-
+//          geben. Wenn der Befehl nichts Sinnvolles tuen konnte, eine 0.
+{
+	notify_fail( "Was willst Du denn bewegen ?" );
+	// Meldung, die der Spieler bekommt, wenn ausser dem Raum auch
+	// kein anderes Objekt den Befehl verarbeiten konnte.
+	if( str == "tuer" )
+	{
+		write( "Die Tuer ist hoffnungslos festgerostet.\n" );
+		// Write gibt eine Meldung an den Spieler (und nur an ihn)
+		// aus.
+		return 1;
+		// Das Kommando bewirkt zwar aus Sicht des Spielers
+		// nichts, aber es konnte abgearbeitet werden.
+		// Also gib eine 1 zurueck.
+	}
+	if ( str == "lade" || str == "schublade" )
+	{
+		write( "Die Schublade klemmt einfach nur.\n" );
+		return 1;
+	}
+	if ( query_verb() == "bewege" &&
+		( str == "tisch" || str == "schreibtisch" ) )
+	{
+		write(
+			"Der Tisch scheint am Boden festgeschraubt zu sein.\n"
+		);
+		say(
+			this_player()->name(WER,2)+" zerrt am Schreibtisch.\n"
+		);
+		// say gibt eine Meldung an alle Spieler im selben
+		// Raum wie der Spieler (aber nicht an ihn selbst) aus.
+		return 1;
+	}
+	return 0;
+	// Der Raum konnte nichts mit dem Kommando anfangen, also gib
+	// eine 0 zurueck.
+}