Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/traghaus.c b/d/seher/haeuser/traghaus.c
new file mode 100644
index 0000000..f79fb36
--- /dev/null
+++ b/d/seher/haeuser/traghaus.c
@@ -0,0 +1,187 @@
+/*
+ * traghaus.c -- Wie suess! ;)
+ *
+ * (c) 1994 Boing@MorgenGrauen
+ * Be- und ueberarbeitet von Jof und Wargon.
+ *
+ * HINWEIS: Um einen Bauplatz zu kennzeichnen, muss dort die
+ *  Propertie "haus_erlaubt" auf 1 gesetzt werden!
+ *
+ * 17.11.2003 Feigling - Bugfix: Fehlenden Regionsmagier abgefangen
+ *
+ * $Date: 1994/10/24 08:25:18 $
+ * $Revision: 1.5 $
+ * $Log: traghaus.c,v $
+ * Revision 1.5  1994/10/24  08:25:18  Wargon
+ * Macht jetzt Gebrauch von VERWALTER->Unbebaubar() und dem geaenderten
+ * VERWALTER->NeuesHaus().
+ *
+ * Revision 1.4  1994/10/19  10:03:29  Wargon
+ * Hinweis eingebaut (s.o.)
+ * Beschraenkung auf ein Seherhaus pro Raum rausgenommen.
+ *
+ * Revision 1.3  1994/10/09  20:17:03  Wargon
+ * In blas() haus->Save() eingefuegt.
+ *
+ * Revision 1.2  1994/10/07  22:13:17  Wargon
+ * Etwas aufgeraeumt.
+ * Text beim Giessen geaendert.
+ * Falls in dem Raum schon ein Seherhaus steht, kann kein weiteres mehr
+ * aufgestellt werden.
+ *
+ * Revision 1.1  1994/10/07  14:40:54  Wargon
+ * Initial revision
+ *
+ */
+#include <properties.h>
+#include <moving.h>
+#include "haus.h"
+
+inherit "std/thing";
+
+static string owner;
+
+void create()
+{
+   if (!clonep(this_object())) return;
+   ::create();
+   owner = getuid(this_player());
+   SetProp(P_SHORT, "Ein tragbares Instanthaus");
+   SetProp(P_LONG, "Dies ist Dein Haus. Du kannst es abstellen und giessen, dann wird daraus ein\n\
+richtiges Seherhaus, in das Du sofort einziehen kannst. Es ist allerdings\n\
+noetig, dass der Magier, der den Raum erschaffen hat, in dem Du es abstellen\n\
+moechtest, dem Bau eines Seherhauses in diesem Raum zustimmt.\n");
+   SetProp(P_NAME, "Haus");
+   SetProp(P_NEVERDROP, 1);
+   SetProp(P_GENDER, 0);
+   AddId(({"haus", "sehe\rhaus"}));
+   SetProp(P_VALUE, 0);
+   SetProp(P_WEIGHT, 0);
+   AddCmd(({"gies", "giess", "giesse"}), "blas");
+}
+
+string SetOwner(string o)
+{
+   return owner = o;
+}
+
+string QueryOwner()
+{
+  return owner;
+}
+
+string get_mag(mixed dest)
+{
+  mapping reg;
+  string *mag;
+  string ret;
+  int i, j;
+
+  catch(reg = "/obj/mliste"->QueryProp("Magierliste"));
+
+  if (mappingp(reg) && member(reg, getuid(dest)))
+    mag = reg[getuid(dest)];
+  else
+    return capitalize(getuid(dest));
+
+
+  if (!sizeof(mag)) 
+    return capitalize(getuid(dest)); //Hinzugefuegt Feigling
+  
+  if ((i=sizeof(mag)) == 1)
+    return capitalize(mag[0]);
+  else {
+    ret = capitalize(mag[0]);
+    j = 1;
+    while (j < i-1) {
+      ret += ", "+capitalize(mag[j]);
+      j++;
+    }
+    ret += " und "+capitalize(mag[<1]);
+  }
+  return ret;
+}
+
+int move(mixed dest, int method)
+{
+  int nix;
+
+  if ((method & M_GIVE) == M_GIVE)
+  {
+    write("Dein sauer verdientes Seherhaus weggeben? NIEMALS!\n");
+    return 0;
+  }
+  if ((method & M_PUT) == M_PUT)
+  {
+    if ((nix = VERWALTER->Unbebaubar(dest)))
+    {
+      write( ({ "Hier ist das Bauen von Haeusern untersagt!\n",
+		"Du kannst das Haus nicht in geschlossenen Raeumen abstellen.\n",
+		"Dieser Platz ist nicht als Bauplatz gekennzeichnet, Du solltest mal\nmit dem verantwortlichen Magier reden. Die Zustaendigkeit fuer diesen Ort\nliegt bei "+get_mag(dest)+".\n"
+	     })[nix-1]);
+      return 0;
+    }
+    return ::move(dest, method);
+  }
+  if ((method & M_GET) == M_GET)
+  {
+    if (getuid(this_player())!=owner)
+    {
+      write("Dies ist nicht Dein Haus.\n");
+      return 0;
+    }
+  }
+  return ::move(dest, method);
+}
+
+int blas(string str)
+{
+  object haus;
+
+  notify_fail("Was moechtest Du giessen?\n");
+  if (!str || str!="haus")
+    return 0;
+  if (living(environment()))
+  {
+    write("Du solltest das Haus vielleicht erst mal abstellen.\n");
+    return 1;
+  }
+  if (getuid(this_player())!=owner)
+  {
+    write("Machst Du immer fremde Haeuser nass?\n");
+    return 1;
+  }
+  if (!environment()->QueryProp(P_HAUS_ERLAUBT))
+  {
+    write("Dieser Platz ist nicht als Bauplatz gekennzeichnet, Du solltest mal\n\
+mit dem entsprechenden Magier reden.\nFrag mal "+capitalize(getuid(environment()))+".\n");
+    return 0;
+  }
+  write( "Voller Vorfreude greifst Du nach Deiner Giesskanne und beginnst, Dein mueh-\n\
+sam erspartes Instanthaus zu begiessen. Moment... Giesskanne? Reichlich ver-\n\
+dutzt schaust Du auf die kleine gruene Kanne in Deinen Haenden. Wo mag sie\n\
+nur hergekommen sein? Doch kaum erreichen die ersten Tropfen das Instanthaus,\n\
+wird Deine Aufmerksamkeit auch schon wieder von der Kanne abgelenkt:\n\
+Das Trockenhaus beginnt zu schaeumen und sich ueber den Boden auszubreiten.\n\
+In dem Schaum entstehen und vergehen Waende, Decken und Fenster, als ob sie\n\
+sich noch nicht recht entscheiden koennten, wie sich sich zu einem Ganzen zu-\n\
+sammenfuegen sollen.\n\
+Dann erhebt sich dort, wo Du das Trockenhaus abgestellt hattest, eine grosse,\n\
+schaumige Blase! Sie wird groesser und groesser, bis sie Dich schliesslich\n\
+streift. Dabei platzt sie mit einem leisen *PLOPP* - und es bleibt ein be-\n\
+zugsfertiges Seherhaus zurueck!\n\
+Du wirfst noch einmal einen verstohlenen Blick auf die Giesskanne, musst aber\n\
+feststellen, dass sie verschwunden ist und auch verschwunden bleibt.\n" );
+
+  say(capitalize((string)(this_player()->name()))+" verwandelt mit einem Tropfen Wasser "+
+      this_player()->QueryPossPronoun(this_object(), WEN) + " Haus.\n");
+
+  VERWALTER->NeuesHaus(owner, environment(this_object()));
+  remove();
+  return 1;
+}
+
+static string _query_autoloadobj()
+{
+  return owner;
+}