Umbauen und Support fuer neue Extralooks

Das Waschen wurde einmal neu gebaut und unnuetzes Zeug
entschlackt.
Duschkabine kann jetzt auch Extralooks aus
AddExtraLook() entfernen und kennt jetzt 3 XL-IDs
aus Saithas Gesellenstueck.

Kleinere Umbauten und Materialaenderung
Dusch-Befehl aendern abgeschafft. Das vergeben zusaetzlicher
eigener Befehle zum Duschen hatte Fehler und wurde offenbar
nicht oder kaum benutzt. Daher ersatzlos entfernt.

Change-Id: I298660280664a8afec4fc00b928809fbfdf83eef
diff --git a/d/seher/haeuser/moebel/wasch.c b/d/seher/haeuser/moebel/wasch.c
index 1dd8204..92ee2a5 100644
--- a/d/seher/haeuser/moebel/wasch.c
+++ b/d/seher/haeuser/moebel/wasch.c
@@ -2,8 +2,7 @@
 // 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"))
+// seinem Seherhaus aufzustellen.
 // 01.07.2007 (Zesstra): GetOwner() definiert.
 //----------------------------------------------------------------------------
 #pragma strong_types,rtt_checks
@@ -11,7 +10,6 @@
 #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",
@@ -19,32 +17,29 @@
 /* Wurzel(Klo/Imbiss), Zesstra(Vulkan/Illuminatos), Seleven(Klo/Nebelelfen),
  * Seleven(Popcorn/Nebelelfen), Boing(Schleimschmeisser,SSP), STANDART
  */
+#define XLOOK_IDS ({"saitha_unterwelt_staub_haende",\
+ "saitha_unterwelt_staub_ueberall","saitha_unterwelt_schimmel",\
+ })
 
 static void wasch_fun();
 
 protected void create()
 {
-  if (!clonep(this_object())) return;
+  if (!clonep(this_object()))
+  {
+      set_next_reset(-1);
+      return;
+  }
   ::create();
 
-  wcmd = (({"wasche","wasch","dusche","dusch"}));
   AddId(({"duschkabine","kabine","dusche","waschgelegenheit"}));
   SetProp(P_NAME,"Duschkabine");
-  
-  SetProp("cnt_version_obj",1);
+  SetProp("cnt_version_obj",2);
 
   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"+
-  "waschbefehlsliste, wbl"+
-  "   Zeigt eine Liste der Befehle an, die das Waschen ausloesen.\n");
+  "   Damit lassen sich verschiedene Verunreinigungen von Deinem Koerper\n"
+  "   abwaschen.\n");
 
   SetProp(P_SHORT,"Eine Duschkabine");
   SetProp(P_LONG,BS("Die Duschkabine hat einen Rahmen aus hellem Holz. "
@@ -57,22 +52,20 @@
    "Man kann niemanden beim Duschen beobachten.\n");
 
   SetProp(P_GENDER, FEMALE);
-  SetProp(P_WEIGHT, 5000);         // Gewicht 5 Kg
+  SetProp(P_WEIGHT, 25000);        // Gewicht 25 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_NOBUY, 1);             // Falls 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_MATERIAL, ([MAT_MISC_WOOD:20, MAT_GLASS: 30,
+                        MAT_MARBLE: 40,
+                        MAT_MISC_MAGIC:5, MAT_BRASS:5]) );
   SetProp(P_INFO, "Versuchs mal mit: \"skommandos "+QueryProp(P_IDS)[1]+"\" !\n");
 
-  AddCmd(wcmd,"cmd_waschen");
+  AddCmd(({"wasche","wasch","dusche","dusch"}),"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
@@ -82,101 +75,34 @@
 
 static void wasch_fun()
 {
-  int i;
-  object ob;
-  i = sizeof(objekte);
-  i--;
-  while(i > -1)
+  if(!TP) return;
+  foreach(string obj_id : objekte)
   {
-
-    if(!TP) return;
-    ob = present(objekte[i],TP);
-    while(ob)
+    object ob;
+    while(ob = present(obj_id,TP))
     {
-      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--;
-
+  }
+  foreach(string xlid: XLOOK_IDS)
+  {
+    TP->RemoveExtraLook(xlid);
   }
 }
 
 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;
-  }
+  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;
 }
 
-
-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)
 {
@@ -188,23 +114,21 @@
   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");
+    "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"
+    "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"
+    "zertruemmer [Objekt-Id]\n"
+    "  Damit zerstoerst Du "+name(WEN,1)+".\n\n");
 
 
   if( QueryProp("obj_cmd") )