Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/d/seher/haeuser/moebel/wasch.c b/d/seher/haeuser/moebel/wasch.c
new file mode 100644
index 0000000..7789350
--- /dev/null
+++ b/d/seher/haeuser/moebel/wasch.c
@@ -0,0 +1,220 @@
+// Name des Objects:    Waschobjekt
+// Letzte Aenderung:    01.04.2005
+// Magier:              Seleven
+// Dieses File gibt dem Spieler die Moeglichkeit, eine Waschgelegenheit in
+// seinem Seherhaus aufzustellen. Das beim Kommando wasch(e), dusch(e) laesst
+// sich die Medung ueberschreiben (Test per raum->QueryProp("h_commands"))
+// 01.07.2007 (Zesstra): GetOwner() definiert.
+//----------------------------------------------------------------------------
+#pragma strong_types,rtt_checks
+
+#include "schrankladen.h"
+inherit LADEN("swift_std_container");
+
+string *wcmd;
+string *objekte =
+  (({"\nstinkobj","\nzesstra_asche","seleve\nscheisse","\npopc",
+     "\nsspbollen","seleve\nstinkobj","\nq2p_gestank","ber\tram_skot",
+     "bambi\nschmutzigehaende"}));
+/* Wurzel(Klo/Imbiss), Zesstra(Vulkan/Illuminatos), Seleven(Klo/Nebelelfen),
+ * Seleven(Popcorn/Nebelelfen), Boing(Schleimschmeisser,SSP), STANDART
+ */
+
+static void wasch_fun();
+
+protected void create()
+{
+  if (!clonep(this_object())) return;
+  ::create();
+
+  wcmd = (({"wasche","wasch","dusche","dusch"}));
+  AddId(({"duschkabine","kabine","dusche","waschgelegenheit"}));
+  SetProp(P_NAME,"Duschkabine");
+  
+  SetProp("cnt_version_obj",1);
+
+  SetProp("obj_cmd",
+  "wasch(e), dusch(e)\n"+
+  "   Damit laesst sich das Stinken aus dem Imbissklo beseitigen.\n"+
+  "   Wenn kein Befehl 'wasch(e)' im Raum beschrieben ist, erfolgt eine\n"+
+  "   Standartmeldung, selbiges gilt fuer 'dusch(e)'.\n"+
+  "ssetz(e) waschbefehl\n"+
+  "   Damit kann man die Befehlsliste erweitern, die das Waschen \n"+
+  "   ausloesen\n"+
+  "sloesch(e) waschbefehl\n"+
+  "   Damit kann man einen Befehl aus der Liste loeschen\n"+
+  "waschbefehlslite, wbl"+
+  "   Zeigt eine Liste der Befehle an, die das Waschen ausloesen.\n");
+
+  SetProp(P_SHORT,"Eine Duschkabine");
+  SetProp(P_LONG,BS("Die Duschkabine hat einen Rahmen aus hellem Holz. "
+   "Dazwischen wurden matte Scheiben eingelassen, damit man niemanden beim "
+   "Duschen beobachten kann."));
+  AddDetail("rahmen","Der Rahmen ist aus hellem Holz.\n");
+  AddDetail(({"scheiben","scheibe"}),"Die Scheiben der Duschkabine sind "+
+   "matt und absolut undurchsichtig!\n");
+  AddDetail(({"duschen","beim duschen"}),
+   "Man kann niemanden beim Duschen beobachten.\n");
+
+  SetProp(P_GENDER, FEMALE);
+  SetProp(P_WEIGHT, 5000);         // Gewicht 5 Kg
+  SetProp(P_MAX_WEIGHT, 0);        // Soll nur n pseudo-Container
+  SetProp(P_WEIGHT_PERCENT, 100);  // Dafuer macht er auch nix leichter :)
+  SetProp(P_MAX_OBJECTS, 0);       // Kein Container :)
+  SetProp(P_VALUE, 0);             // Ist eh nicht verkaufbar.
+  SetProp(P_NOBUY, 1);             // Fals doch: zerstoeren!
+  SetProp(P_NOGET,
+    "Das geht nicht. "+Name(WER,1)+" haftet wie magisch am Boden.\n");
+  SetProp(P_MATERIAL, ({MAT_MISC_WOOD, MAT_MISC_MAGIC}) );
+  SetProp(P_INFO, "Versuchs mal mit: \"skommandos "+QueryProp(P_IDS)[1]+"\" !\n");
+
+  AddCmd(wcmd,"cmd_waschen");
+  RemoveCmd(({"oeffne","oeffn","schliesse","schliess"}));
+  AddCmd(({"ssetze","ssetz"}),"cmd_setzen");
+  AddCmd(({"sloesche","sloesche"}),"cmd_loeschen");
+  AddCmd(({"wbl","waschbefehlsliste"}),"liste");
+}
+
+// Zesstra, 1.7.07, fuers Hoerrohr
+string GetOwner() {return "seleven";}
+
+varargs int PreventInsert(object ob) {return 1;} //Das ist kein Container :)
+
+static void wasch_fun()
+{
+  int i;
+  object ob;
+  i = sizeof(objekte);
+  i--;
+  while(i > -1)
+  {
+
+    if(!TP) return;
+    ob = present(objekte[i],TP);
+    while(ob)
+    {
+      if(query_once_interactive(ob))
+	  {
+	    tell_object(TP,BS("Du scheinst jemanden in Deinem Inv zu haben!\n"
+	     "Das sollte sich vielleicht ein Magier anschauen."));
+	    i--;
+	    return;
+      }
+      ob->remove(1);
+      if(present(objekte[i],TP));
+       ob = present(objekte[i],TP);
+    }
+    i--;
+
+  }
+}
+
+int cmd_waschen(string str)
+{
+  string verb;
+  verb = query_verb();
+  if(!environment()) return 0;
+  if( !erlaubt() )
+  {
+      write("Du solltest den Besitzer vielleicht um Erlaubnis bitten.\n");
+      return 1;
+  }
+  if(member(environment()->QueryProp("h_commands"),verb) == 0)
+  {
+    write(
+     "Du springst schnell unter die Dusche und waeschst Dich gruendlich.\n");
+    say(this_player()->Name(WER)+" springt schnell unter die Dusche.\n");
+    wasch_fun();
+    return 1;
+  }
+  wasch_fun();
+  return 1;
+}
+
+
+static int cmd_setzen(string str)
+{
+  string bef;
+  notify_fail("Moechtest Du einen Waschbefehl setzen?\n"+
+    "Syntax: ssetz(e) waschbefehl [befehl]\n");
+  if(!str || !stringp(str) || sizeof(str) == 0) return 0;
+  sscanf(str,"waschbefehl %s",bef);
+  if(!bef) return 0;
+  if(bef[sizeof(bef) .. sizeof(bef)-1] == "e")
+   bef = bef[sizeof(bef) .. sizeof(bef)-2];
+  notify_fail("Der Befehl steht schon auf der Liste.\n");
+  if(member(wcmd,bef) != -1) return 0;
+  wcmd += (({bef,bef+"e"}));
+  AddCmd(wcmd,"cmd_waschen");
+  write(BS("Du hast die Befehle "+bef+" und "+bef+"e an die Liste "
+   "angefuegt."));
+  return 1;
+}
+
+static int cmd_loeschen(string str)
+{
+  string bef;
+  notify_fail("Moechtest Du einen Waschbefehl loeschen?\n"+
+    "Syntax: sloesch(e) waschbefehl [befehl]\n");
+  if(!str || !stringp(str) || sizeof(str) == 0) return 0;
+  sscanf(str,"waschbefehl %s",bef);
+  if(!bef) return 0;
+  notify_fail("Der Befehl steht gar nicht auf der Liste.\n");
+  if(member(wcmd,bef) == -1) return 0;
+  wcmd -= (({bef}));
+  RemoveCmd(bef);
+  write(BS("Du hast die Befehle "+bef+" und "+bef+"e von der Liste "
+   "entfernt."));
+  return 1;
+}
+
+static int liste(string str)
+{
+  write("Du hast folgende Befehle auf der Waschliste stehen:\n"+
+   break_string(implode(wcmd,", "),78,3));
+  return 1;
+}
+
+
+
+// oeffnen und schliessen ausbauen.
+varargs int skommandos(string str)
+{
+  notify_fail( "Fehler: Dieser Befehl benoetigt eine gueltige Objekt-Id als Parameter.\n"
+    +"Beispiel: skommandos "+QueryProp(P_IDS)[1]+"\n");
+  if(!str) return 0;
+  if(present(str)!=TO ) // Bin ich gemeint?
+    return 0;
+  write("=============================================================================\n");
+  write("Aktuelle Version: "+QueryProp("cnt_version_std")+QueryProp("cnt_version_obj")+"\n");
+  write( BS(Name(WER,1)+" kann nur in diesem Seherhaus verwendet werden, "
+    +"da "+QueryPronoun(WER)+" speziell dafuer gekauft wurde. "+CAP(QueryPronoun(WER))
+    +" verfuegt ueber folgende Kommandos:")
+    +"-----------------------------------------------------------------------------\n"
+    +"serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"zweities\"]\n"
+    +"  Erlaubt Personen, "+name(WEN,1)+" mitzubenutzen.\n"
+    +"  serlaube + Objekt-Id (ohne Spielername/hausfreunde)\n"
+    +"  listet alle Personen mit Zugriff auf "+name(WEN,1)+"\n\n"
+    +"verschiebe [Objekt-Id] nach [Ausgang]\n"
+    +"  Damit kannst Du "+name(WEN,1)+" innerhalb Deines Seherhauses verschieben.\n\n"
+  //Seleven 07.12.2005
+    +"sverstecke [Objekt-Id]\n"
+    +"  Damit machst Du "+name(WEN,1)+" unsichtbar.\n"
+    +"shole [Objekt-Id] hervor\n"
+    +"  Damit machst Du "+name(WEN,1)+" wieder sichtbar.\n"
+  // Bis hier
+    +"zertruemmer [Objekt-Id]\n"
+    +"  Damit zerstoerst Du "+name(WEN,1)+".\n\n");
+
+
+  if( QueryProp("obj_cmd") )
+    write( QueryProp("obj_cmd")+"\n" );
+
+  write("[Objekt-Id] muss eine gueltige Id sein, in diesem Fall z.B. "
+      +QueryProp(P_IDS)[1]+"\n");
+  write("=============================================================================\n");
+
+
+  return 1;
+}
+