Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/seherbank.c b/d/seher/haeuser/seherbank.c
new file mode 100644
index 0000000..4e47265
--- /dev/null
+++ b/d/seher/haeuser/seherbank.c
@@ -0,0 +1,175 @@
+#include <moving.h>
+#include <defines.h>
+#include <rooms.h>
+#include <properties.h>
+#include "queue.h"
+#include "haus.h"
+
+inherit "/std/room";
+
+create()
+{
+    object q;
+    
+    ::create();
+    
+    SetProp( P_INDOORS, 1 );
+    SetProp( P_LIGHT, 1 );
+    SetProp( P_INT_SHORT, "In der MorgenGrauen-Bank" );
+    SetProp( P_INT_LONG,
+             break_string( "Dunkle Schatten erfuellen diesen Raum, nur "
+                           "schemenhaft kannst Du einige Schlangen sowie einen "
+                           "Informationsstand erkennen. Du beginnst zu "
+                           "begreifen:\nDu befindest Dich in der "
+                           "MorgenGrauen-Bank, der 'Bank in Ihrem Ruecken'.\n"
+                           "Wenn Du Seher oder Seherin bist, kannst Du hier "
+                           "einen Bausparvertrag fuer ein Seherhaus erwerben, "
+                           "Raten fuer einen laufenden Bausparvertrag "
+                           "einzahlen und ein abbezahltes Haus abholen. "
+                           "Ausserdem kannst Du hier Geldkarten erwerben und "
+                           "Dein Konto auffuellen. Dazu musst Du Dich nur "
+                           "zu den entsprechenden Schaltern begeben. "
+                           "Nach Sueden kannst Du die Bank wieder "
+                           "verlassen.\n", 78, 0, BS_LEAVE_MY_LFS ) );
+    
+    AddDetail( ({ "wand", "waende" }),
+               "An den Waenden treiben die Schatten unheimliche "
+               "Spielchen.\n" );
+    AddDetail( ({ "boden" }),
+               "Der Boden ist schwarz wie die Nacht.\n" );
+    AddDetail( ({ "decke" }),
+               "Schleimige Faeden scheinen von der dunklen Decke "
+               "zu haengen.\n" );
+    AddDetail( ({ "schatten" }),
+               "Die Schatten erfuellen den ganzen Raum und lassen "
+               "Dich nur schemenhafte Details\nerblicken.\n" );
+    AddDetail( ({ "details", "schemen" }),
+               "Ein Informationsstand sowie vier Schlangen von "
+               "Leuten sind als Schemen in\nden Schatten erkennbar.\n" );
+    AddDetail( ({ "schleim", "faeden", "schleimfaeden" }),
+               "Die Schleimfaeden haengen von der Decke und drohen Dir auf "
+               "den Kopf zu\ntropfen. Ein Froesteln schuettelt Dich.\n" );
+    AddDetail( ({ "schalter" }),
+               break_string( "Vor den Schaltern stehen lange Schlangen von "
+                             "Leuten, die auch gerne ein Haus haetten. Es "
+                             "gibt einen Antragsschalter, einen "
+                             "Ratenzahlungsschalter, einen Ausgabeschalter und "
+                             "einen Geldkartenschalter. Vor jedem Schalter "
+                             "steht eine Schlange von mehr oder weniger "
+                             "geduldig wartenden Leuten. Du wirst Dich wohl "
+                             "anstellen muessen...", 78 ) );
+    AddDetail( ({ "stand", "informationsstand" }),
+               "Hier kannst Du fuer den unverschaemten Preis von 10000 "
+               "Muenzen die Kommen-\ntare zum Bausparvertrag erwerben. "
+               "Das geht mit 'kaufe kommentar', ist aber\n"
+               "angesichts des hohen Preises fast nicht anzuraten.\n" );
+    AddDetail( ({ "ausgabeschalter", "hausausgabeschalter", "hausausgabe" }),
+               "Wenn Du alle Raten fuer Dein Haus eingezahlt hast, kannst "
+               "Du es hier ab-\nholen und mitnehmen. Dafuer musst Du Dich "
+               "an die Hausausgabeschlange an-\nstellen.\n" );
+    AddDetail( ({ "ratenschalter", "ratenzahlungsschalter" }),
+               "Hier kannst Du die Raten fuer Dein Seherhaus einzahlen. "
+               "Du wirst Dich\naber erst an die Zahlungsschlange anstellen "
+               "muessen.\n" );
+    AddDetail( ({ "antragsschalter" }),
+               "An diesem Schalter kannst Du einen Bausparvertrag beantragen. "
+               "Stell Dich\ndazu an die Antragsschlange an.\n" );
+    AddDetail( ({ "geldkartenschalter", "kartenschalter" }),
+               break_string( "Am Geldkartenschalter kannst Du die beruehmte "
+                             "Seer-Card (TM) erwerben und Dein Guthabenkonto "
+                             "auffuellen. Allerdings haben das auch noch "
+                             "andere Leute vor - Du wirst Dich also brav "
+                             "hinten an die Geldkartenschlange anstellen "
+                             "muessen.", 78 ) );
+
+    q=AddItem( PATH+"queue", REFRESH_NONE,
+               ([ P_SHORT : "Eine Schlange vor dem Geldkartenschalter",
+                P_LONG : "Die Seer-Card (TM) muss ja wirklich begehrt sein. "
+                "Zumindest stehen mehrere\nLeute an der Schlange zum "
+                "Geldkartenschalter an.\n"
+                "Syntax: 'stell an kartenschlange an'.\n",
+                P_INT_SHORT : "In der Schlange vor dem Geldkartenschalter",
+                P_INT_LONG : "Du steht in der langen Schlange vor dem "
+                "Geldkartenschalter. Wenigstens geht\nes halbwegs flott "
+                "vorwaerts.\n",
+                Q_LENGTH : 7,
+                Q_CYCLE_TIME : 8,
+                Q_SUSPEND : 1,
+                Q_DEST : PATH+"sc_schalter"
+                ]) );
+
+    q->AddId( ({"geldkartenschlange", "kartenschlange"}) );
+
+    q=AddItem( PATH+"queue", REFRESH_NONE,
+               ([ P_SHORT : "Eine Schlange vor dem Hausausgabeschalter",
+                P_LONG  : "In dieser Schlange stehen Leute vor dem "
+                "Hausausgabeschalter an.\n"
+                +"Syntax: 'stell an ausgabeschlange an'.\n",
+                P_INT_SHORT : "In der Schlange vor dem Hausausgabeschalter",
+                P_INT_LONG  : "Du wartest vor dem Hausausgabeschalter.\n",
+                Q_SUSPEND : 1,
+                Q_DEST : PATH+"sb_ausgabe"
+                ]) );
+    
+    q->AddId( ({"hausausgabeschlange", "ausgabeschlange" }) );
+
+    q=AddItem( PATH+"queue", REFRESH_NONE,
+               ([ P_SHORT : "Eine Schlange vor dem Schalter zur Ratenzahlung",
+                P_LONG  : "Wenn Du eine Rate bezahlen willst, solltest Du "
+                "Dich an dieser Schlange\nanstellen.\n"
+                +"Syntax: 'stell an ratenschlange an'.\n",
+                P_INT_SHORT : "In der Schlange vor dem Schalter zur "
+                "Ratenzahlung",
+                P_INT_LONG  : "Du wunderst Dich ein wenig ueber die "
+                "Massen potentieller Ratenzahler.\n",
+                Q_LENGTH : 8,
+                Q_CYCLE_TIME : 10,
+                Q_DEST : PATH+"sb_einzahlung",
+                Q_SUSPEND : 1
+                ]) );
+    
+    q->AddId( ({"ratenschlange", "ratenzahlungsschlange",
+                    "zahlungsschlange" }) );
+
+    q=AddItem( PATH+"queue", REFRESH_NONE,
+               ([ P_SHORT : "Eine Schlange vor dem Antragsschalter",
+                P_LONG  : "Die Leute in dieser Schlange wollen alle ein "
+                "eigenes Heim.\n"
+                +"Syntax: 'stell an antragsschlange an'.\n",
+                P_INT_SHORT : "In der Schlange vor dem Antragsschalter",
+                P_INT_LONG  : "Du wartest inmitten anderer Antragssteller "
+                "darauf, endlich Deinen\nBausparvertrag beantragen zu "
+                "duerfen.\n",
+                Q_LENGTH : 5,
+                Q_CYCLE_TIME : 20,
+                Q_SUSPEND : 1,
+                Q_DEST : PATH+"sb_antrag"
+                ]) );
+    
+    q->AddId( ({"antragsschlange"}) );
+
+    AddExit( "sueden", "/d/ebene/room/dra_str1" );
+
+    AddCmd( ({ "kauf", "kaufe" }), "kaufen" );
+}
+
+static int
+kaufen(string str)
+{
+  object tp;
+
+  if (!str || str != "kommentar") {
+    notify_fail( "Was willst Du kaufen? Hier gibt es nur Kommentare!\n" );
+    return 0;
+  }
+
+  tp = this_player();
+  if (tp->QueryMoney()<10000)
+    write( "Du hast nicht genug Geld dabei!\n" );
+  else {
+    clone_object(PATH+"kommentar")->move(tp, M_NOCHECK);
+    tp->AddMoney(-10000);
+    write( "Du zahlst 10000 Muenzen und erhaeltst dafuer einen Kommentar.\n" );
+  }
+  return 1;
+}