Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/sb_einzahlung.c b/d/seher/haeuser/sb_einzahlung.c
new file mode 100644
index 0000000..1f89196
--- /dev/null
+++ b/d/seher/haeuser/sb_einzahlung.c
@@ -0,0 +1,130 @@
+#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 Einzahlungsschalter" );
+  SetProp( P_INT_LONG,
+     "Du stehst hier am Einzahlungsschalter der Bank. Um eine Rate einzuzahlen,\n"
+    +"musst Du einfach nur Deinen MG MASTER-BLOCK vorlegen. Gib dazu einfach nur\n"
+    +"'lege block vor' ein.\n"
+    +"Der Blick eines schemenhaft erkennbaren Beamten scheint Dich selbst durch\n"
+    +"die dicke Rauchglasscheibe hindurch zu durchbohren.\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( ({ "scheibe", "rauchglas", "glas", "glasscheibe", "rauchglasscheibe" }),
+     "Hinter ihr scheint sich ein Beamter zu verbergen.\n" );
+  AddDetail( ({ "schalter" }),
+     "An diesem Schalter kannst Du eine Rate fuer Dein Haus einzahlen.\n" );
+  AddDetail( ({ "beamte", "beamter", "beamten", "schalterbeamte", "schalterbeamter", "schalterbeamten" }),
+     "Der Schalterbeamte durchbohrt Dich mit seinen Blicken.\n" );
+
+  AddCmd( ({ "leg", "lege" }), "legen" );
+
+  AddExit( "raus", PATH+"seherbank" );
+}
+
+void
+BecomesNetDead(object pl)
+{
+  pl->move(PATH+"seherbank", M_GO, 0, "wird rausgeworfen", "schlafwandelt herein");
+}
+
+int
+legen(string str)
+{
+  object tp, block, vertrag;
+  int *al, *vl, rate;
+
+  if (!str || str != "block vor")
+    return 0;
+
+  tp = this_player();
+  block = present( "\n block", tp);
+  vertrag = present( "sehe\rvertrag", tp );
+
+  if (!IS_SEER(tp))
+    write( "Der Schalterbeamte weist Dich darauf hin, dass hier nur Seher be-\n"
+	  +"dient werden.\n" );
+  else if (tp->QueryProp(P_KILLS))
+    write( "Ein bohrender Blick verkuendet: Verbrecher werden hier nicht bedient!\n" );
+  else if (!block)
+    write( "Du hast keinen Block, den Du vorlegen koenntest!\n" );
+  else if (!vertrag) {
+    write( "Der Schalterbeamte sagt: Sie haben keinen Bausparvertrag! Wozu wollen\n"
+	  +"Sie dann eine Rate einzahlen? Wie sind Sie ueberhaupt an den Block\n"
+	  +"gekommen?\n" );
+    HLOG( "BANK.LOG", "Einzahlung: "+getuid(tp)+" Block ohne Vertrag!\n" );
+  }
+  else if (old_explode(object_name(block),"#")[0] != PATH+"block" ||
+	   old_explode(object_name(vertrag),"#")[0] != PATH+"bausparvertrag") {
+    write( "Der Schalterbeamte faehrt Dich an: DU WILLST SCHUMMELN???\n" );
+    HLOG( "BANK.LOG", "Einzahlung: "+getuid(tp)+" Falscher Block/Vertrag!\n");
+    HLOG( "SCHUMMEL", sprintf("Einzahlung: TP: %O, B: %O, V: %O\n",
+		      this_player(),
+		      block->QueryProp(P_CLONER),
+		      vertrag->QueryProp(P_CLONER)));
+  }
+  else {
+    al = block->Query(P_AUTOLOADOBJ);
+    rate = RATENHOEHE;
+    if (al[V_FLAGS] & B_EXTEND)
+      rate += (6*RATENHOEHE)/10;
+
+    if (al[V_MONEY] < rate) {
+      write( "Der Schalterbeamte weist Dich darauf hin, dass Du noch nicht genug Erfahrung\n"
+	    +"fuer die Rate gelassen hast.\n" );
+      HLOG( getuid(tp), "Einzahlung: "+getuid(tp)+" hatte nicht genug ("+al[V_MONEY]+"/"+rate+").\n");
+    }
+    else {
+      vl = vertrag->Query(P_AUTOLOADOBJ);
+      rate = (al[V_FLAGS] & B_FAST) ? SUMME_S : SUMME_L;
+      if (vl[1] & V_RAUM)
+	rate = rate * 4 /10;
+      write( "Du zahlst Deine Rate ein.\n" );
+      block->remove();
+      if (vertrag->Einzahlung() >= rate) {
+	  write( "Der Schalterbeamte sagt: Sie haben es geschafft! Sie haben nun genug\n"
+		+"Erfahrung eruebrigt. ");
+	if (vl[1] & V_RAUM)
+	  write( "Am Ausgabeschalter koennen Sie nun den neuen Raum\n"
+		+"eintragen lassen.\n" );
+	else
+	  write( "Am Hausausgabeschalter koennen Sie nun Ihr neues\n"
+		+"Heim in Empfang nehmen.\n" );
+	vertrag->Sign( vl[1] | V_COMPL );
+      }
+      else {
+	write( "Der Schalterbeamte beschwoert Blitz und Donner vom Himmel herab. Ein\n"
+	      +"lauter Knall, und ein neuer Ratenblock erscheint in Deinem Inventar.\n" );
+	(block = clone_object(PATH+"block"))->move(tp, M_NOCHECK);
+	block->SetProp("schwer", vl[1] & V_FAST);
+	al = block->Query(P_AUTOLOADOBJ);
+	al[V_FLAGS] |= B_ACTIVE;
+	block->Set(P_AUTOLOADOBJ, al);
+      }
+      HLOG(getuid(tp), "Einzahlung: "+getuid(tp)+" zahlte ein.\n" );
+      tp->force_save();
+    }
+  }
+  return 1;
+}
+