Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/sb_antrag.c b/d/seher/haeuser/sb_antrag.c
new file mode 100644
index 0000000..1e6dd20
--- /dev/null
+++ b/d/seher/haeuser/sb_antrag.c
@@ -0,0 +1,175 @@
+#include <properties.h>
+#include <wizlevels.h>
+#include <moving.h>
+#include "haus.h"
+
+inherit "std/room";
+
+create()
+{
+  ::create();
+
+  SetProp( P_INDOORS, 1 );
+  SetProp( P_LIGHT, 1 );
+  SetProp( P_INT_SHORT, "Am Antragsschalter" );
+  SetProp( P_INT_LONG,
+     "Du stehst am Antragsschalter der Bank. Hinter einer Rauchglasscheibe scheint\n"
+    +"sich ein Schalterbeamter zu befinden, Du kannst aber nichts genaueres er-\n"
+    +"kennen.\n"
+    +"Wenn Du Dich traust, kannst Du hier einen Bausparvertrag beantragen und einen\n"
+    +"beantragten Vertrag unterschreiben.\n"
+    +"Die Syntax dazu lautet:\n"
+    +"beantrage vertrag (fuer einen Bausparvertrag)\n"
+    +"beantrage ausbauvertrag (fuer den Ausbau des Hauses)\n"
+    +"unterschreibe vertrag (um den jeweiligen Vertrag zu unterschreiben)\n" );
+
+  AddDetail( ({ "boden" }),
+     "Der tiefschwarze Boden gibt Dir das Gefuehl, im absoluten Nichts zu stehen.\n" );
+  AddDetail( ({ "wand", "waende" }),
+     "Dunkle Schatten tanzen ueber die Waende.\n" );
+  AddDetail( ({ "decke" }),
+     "Sie scheint Dir in dieser unheimlichen Umgebung auf den Kopf fallen zu\n"
+    +"wollen.\n" );
+  AddDetail( ({ "nichts" }),
+     "Du siehst nichts.\n" );
+  AddDetail( ({ "schatten" }),
+     "Die Schatten irritieren Dich sehr.\n" );
+  AddDetail( ({ "schalter" }),
+     "An diesem Schalter kannst Du einen Bausparvertrag beantragen und unter-\n"
+    +"schreiben.\n" );
+  AddDetail( ({ "beamte", "beamter", "beamten", "schalterbeamte", "schalterbeamten", "schalterbeamter" }),
+     "Du kannst ihn nur schemenhaft hinter der Rauchglasscheibe des Schalters er-\n"
+    +"kennen. Die Umrisse scheinen allerdings zu keiner Lebensform zu gehoeren,\n"
+    +"derer Du Dich erinnern koenntest.\n" );
+  AddDetail( ({ "scheibe", "glasscheibe", "rauchglas", "rauchglasscheibe" }),
+     "Ein schemenhafter Beamter sitzt dahinter.\n" );
+  AddDetail( ({ "umrisse" }),
+     "Sie sind aeusserst beunruhigend.\n" );
+
+  AddCmd( ({ "beantrage" }), "beantragen" );
+  AddCmd( ({ "unterschreib", "unterschreibe" }), "unterschreiben" );
+  AddExit( "raus", PATH+"seherbank" );
+}
+
+void
+BecomesNetDead(object pl)
+{
+  pl->move(PATH+"seherbank", M_GO, 0, "wird rausgeworfen", "schlafwandelt herein");
+}
+
+int
+beantragen(string str)
+{
+  object tp, vertrag;
+  int haus;
+
+  tp = this_player();
+
+  if (!str || (haus = member( ({"ausbauvertrag", "vertrag", "bausparvertrag"}), str)) <0) {
+    notify_fail( "Versuch mal 'beantrage vertrag'!\n" );
+    return 0;
+  }
+
+  if (!IS_SEER(tp)) {
+    notify_fail( "Nur Seher koennen einen Bausparvertrag beantragen!\n" );
+    return 0;
+  }
+  if (tp->QueryProp(P_KILLS)) {
+    write("Verbrecher werden hier nicht bedient!\n");
+    return 1;
+  }
+  if (vertrag = present("sehe\rvertrag", tp))
+    write( "Der Beamte schnarrt: Aber Sie haben doch schon einen Vertrag!\n" );
+  else if (haus && (present("sehe\rhaus", tp) || VERWALTER->FindeHaus(getuid(tp)))) {
+    write( "Der Beamte schnarrt: Sie duerfen nur EIN Haus besitzen!\n" );
+    HLOG( "BANK.LOG", "Antrag: "+getuid(tp)+" stellte zweiten Antrag.\n" );
+  }
+  else if (!haus && !VERWALTER->FindeHaus(getuid(tp))) {
+    write( "Der Beamte faucht: Haben sie denn ueberhaupt schon ein Haus aufgestellt?\n"
+	  +"Vorher koennen sie natuerlich keine Erweiterungen beantragen!\n" );
+  }
+  else {
+    if (!haus && VERWALTER->HausProp(getuid(tp),HP_ROOMS) == 9) {
+      write( "Der Beamte droehnt: Ihr Haus hat schon die hoechste Ausbaustufe erreicht!\n");
+      return 1;
+    }
+    (vertrag = clone_object(PATH+"bausparvertrag"))->move(tp, M_NOCHECK);
+
+    write( "Die Schatten verdichten sich zu einem Blatt Papier, welches in Deine Haende\n"
+	  +"geweht wird. Mit droehnender Stimme erklaert der Schalterbeamte:\n"
+	  +"Dies ist Ihr Bausparvertrag. Bitte lesen Sie ihn sich gruendlich durch, be-\n"
+	  +"vor Sie ihn unterschreiben! Wenn Sie ihn erst einmal unterschrieben haben,\n"
+	  +"koennen sie nicht wieder davon zuruecktreten (es sei denn, Sie zerreissen\n"
+	  +"ihn oder ueberziehen die Ratenzahlungen)! Sie sind nicht gezwungen, den Ver-\n"
+	  +"trag sofort zu unterschreiben. Im Hauptraum der Bank befindet sich ein In-\n"
+	  +"formationsstand, an dem Sie Kommentare zu diesem Vertrag kaeuflich erwerben\n"
+	  +"koennen. Wenn Ihnen einige Passagen des Vertrags unverstaendlich sind, wird\n"
+	  +"Ihnen in den Kommentaren sicherlich geholfen.\n"
+	  +"Das Leisten der Unterschrift ist jedoch nur hier an diesem Schalter\n"
+	  +"moeglich!\n" );
+    if (!haus)
+      vertrag->Sign(V_RAUM);
+    HLOG( "BANK.LOG", "Antrag: "+getuid(tp)+" bekam einen "+(haus ? "Haus" : "Raum")+"vertrag.\n" );
+  }
+  return 1;
+}
+
+int
+unterschreiben(string str)
+{
+  object tp, vertrag;
+  int flag;
+
+  tp = this_player();
+
+  notify_fail( "Was willst Du denn unterschreiben?\n" );
+  if (!str || !(vertrag = present(str, tp)) || !vertrag->id("sehe\rvertrag"))
+    return 0;
+
+  if ((flag = vertrag->QueryProp(P_AUTOLOADOBJ)[1]) & V_SIGNED) {
+    write( "Der Schalterbeamte sagt: Aber der Vertrag ist doch schon unterschrieben!\n" );
+    return 1;
+  }
+
+  write( "Der Schalterbeamte sagt: Fuer welche Vertragsvariante haben sie sich\n"
+	+"entschieden? Tippen Sie 'sanft' fuer den sanften Weg zum eigenen Heim\n"
+	+"oder 'schnell' fuer den schnellen Weg.\n] " );
+  input_to("sign", 0, vertrag, flag|V_EP);
+  return 1;
+}
+
+void
+sign(string str, object vertrag, int flag)
+{
+  object block;
+  string s;
+  int *al;
+
+  if (str == "sanft" || str == "schnell") {
+    write( "Der Schalterbeamte gibt Dir einen Fuellfederhalter sowie ein Skalpell.\n"
+	  +"Schwungvoll setzt Du Deine Unterschrift unter den Vertrag. Dann piekst\n"
+	  +"Du Dir mit dem Skalpell in den Finger und bestaetigst die Unterschrift\n"
+	  +"mit einem dunklen Tropfen Deines Blutes.\n"
+	  +"Ploetzlich zucken Blitze um Dich herum auf, und der Schalterbeamte lacht\n"
+	  +"droehnend auf. Du hast das Gefuehl, dass hier etwas nicht ganz mit rechten\n"
+	  +"Dingen vor sich geht. Dann bestaetigt der Beamte die Unterschrift und\n"
+	  +"uebergibt Dir den ersten Block, auf dem Deine Raten vermerkt werden.\n"
+	  +"Der Beamte erklaert: Damit auf den Block auch eingezahlt wird, muss man\n"
+	  +"ihn wie eine Ruestung anziehen!\n" );
+
+    this_player()->reduce_hit_points(50);
+    vertrag->Sign(flag | (str == "sanft" ? V_SIGNED : V_SIGNED | V_FAST));
+    (block = clone_object(PATH+"block"))->move(this_player(), M_NOCHECK);
+    block->SetProp("schwer", V_FAST & vertrag->QueryProp(P_AUTOLOADOBJ)[1]);
+    al = block->QueryProp(P_AUTOLOADOBJ);
+    al[V_FLAGS] |= B_ACTIVE;
+    block->SetProp(P_AUTOLOADOBJ, al);
+    s = "Antrag: "+getuid(this_player())+" unterschrieb den Vertrag ("+str+").\n";
+    HLOG( "BANK.LOG", s );
+    HLOG( getuid(this_player()), s );
+  }
+  else {
+    write( "Der Schalterbeamte sagt: Nur 'sanft' oder 'schnell', bitte!\n" );
+    input_to("sign", 0, vertrag, flag);
+  }
+}