Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/misc/seherhaus.c b/doc/beispiele/misc/seherhaus.c
new file mode 100644
index 0000000..ea127e4
--- /dev/null
+++ b/doc/beispiele/misc/seherhaus.c
@@ -0,0 +1,136 @@
+/*
+Kurze Uebersicht der Termini:
+
+P_HAUS_ERLAUBT Propertie, die das Bauen eines Hauses im Raum er-
+ laubt oder verbietet. Default auf 0
+ Syntax: xcall $h->SetProp(P_HAUS_ERLAUBT,x)
+
+Save() Muss nach Aenderungen am Haus aufgerufen werden.
+ Syntax: xcall /d/seher/haeuser/tillyhaus->Save()
+
+Okay, also ein Seher moechte, dass sein Haus 1) unsichtbar ist, 2) mit
+einem anderen Kommando betreten werden soll und 3) nicht auf die id
+<haus> hoert sondern auf eine andere:
+
+Zu 1): Ganz einfach, man tippe
+
+ 'xcall /d/seher/haeuser/tillyhaus->SetProp(P_SHORT,0)' und
+ 'xcall /d/seher/haeuser/tillyhaus->Save()'
+
+Zu 2) und 3): Das ist nicht so einfach, sondern muss ueber den Raum, in
+ dem das Haus steht, gemacht werden. Deswegen folgend nun
+ ein Beispiel zu Funktionen in so einem Raum.
+
+
+Folgende Dinge stehen natuerlich schon im Raum, sonst liesse er sich
+nicht laden :-)
+*/
+
+#pragma strong_types, save_types, rtt_checks
+
+inherit "/std/room";
+
+#include <properties.h>
+#include <language.h>
+#include <moving.h>
+
+/*
+ Fuer properties und sonstige Definitionen zum Seherhaus.
+*/
+#include "/d/seher/haeuser/haus.h"
+
+/*
+ Aus Gruenden der Uebersichtlichkeit ziehen viele Magier vor, den Hauskrams
+ in eine separate Funktion zusammenzufassen.
+*/
+private void haus_create();
+
+/*
+Es folgt nun das normale create() eines Raumes
+*/
+void create(){
+ ::create();
+ /* ... div. Konfiguration des Raum ... */
+
+ /*
+ Das extra-create() muss natuerlich aufgerufen werden
+ */
+ haus_create();
+}
+
+/*
+Hier kommen wir nun zu der Fkt, die alles am Seherhaus verwaltet
+*/
+private void haus_create()
+{
+ object ob = find_object(HAUSNAME("tilly")); // findet Haus von Tilly
+
+ /*
+ Wenn das Haus im Raum steht. Hat den Vorteil, dass bei einem Verlegen
+ des Hauses, Cmd's usw nicht mehr verfuegbar sind -> Keine evtl Bugs :)
+ */
+ if(objectp(ob))
+ {
+ /*
+ Der Spieler wollte es ja nicht anders
+ */
+ ob->RemoveCmd(({"betret","betritt","betrete"}));
+ ob->RemoveId("haus");
+ ob->RemoveId("haus von tilly");
+ ob->AddId("steinhaufen");
+
+ AddDetail(({"haufen","steinhaufen"}),"Da ist doch ein kleiner Spalt? "
+ +"Vielleicht kannst Du auf den Steinhaufen klettern?\n");
+
+ AddCmd(({"kletter","klettere"}),"kletter_cmd");
+ }
+}
+
+public int kletter_cmd(string str)
+{
+ object ob = find_object(HAUSNAME("tilly"));
+
+ _notify_fail("Wo moechtest Du hinklettern?\n");
+
+ if(!str) return 0;
+
+ if(str=="auf haufen" || str=="auf steinhaufen")
+ {
+ if(objectp(ob))
+ {
+ /*
+ Das ist die Meldung, die ein Spieler bekommt, wenn das Seherhaus
+ abgeschlossen ist und er versucht, es zu 'betreten'.
+ */
+ notify_fail("Du kletterst auf den Haufen, doch der Spalt ist zu "
+ "schmal fuer Dich.\n");
+
+ if(!(ob->QueryProp(H_DOORSTAT) & D_CLOSED))
+ {
+ tell_object(this_player(),
+ "Du kletterst auf den Steinhaufen, rutschst den Spalt runter "
+ "und findest Dich urploetzlich in einer schummrigen Hoehle.\n");
+ tell_room(this_object(),this_player()->name()+" klettert auf einen "
+ "Steinhaufen und ist ploetzlich verschwunden.",({this_player()}));
+ tell_room(RAUMNAME("tilly",0),this_player()->name()+
+ " faellt fluchend herein.\n");
+ this_player()->move(RAUMNAME("tilly",0),M_GO|M_SILENT,0);
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+/*
+Natuerlich gibt es noch viel mehr Moeglichkeiten rund um Seherhaeuser,
+doch sollte dies erstmal reichen. Zu beachten ist bei solcher Vorgehens-
+weise, dass ein 'schliesse|oeffne haus' evtl zu Fehlermeldungen fuehrt.
+Dem Spieler sei nahegelegt, es doch mit 'oeffne haustuer' zu versuchen.
+
+HAUSNAME und RAUMNAME (u.a.) sind Defines aus dem haus.h. Man sollte sich
+dieses File anschauen und die dortigen Defines uebernehmen. Dann bugt auch
+nichts, falls mal etwas an den Haeusern umgestellt wird.
+
+Tilly, 20. Mai 2001, 00:10:24h
+*/