blob: 7789350e2b1eef0f66903660d990e61177e6268f [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// Name des Objects: Waschobjekt
2// Letzte Aenderung: 01.04.2005
3// Magier: Seleven
4// Dieses File gibt dem Spieler die Moeglichkeit, eine Waschgelegenheit in
5// seinem Seherhaus aufzustellen. Das beim Kommando wasch(e), dusch(e) laesst
6// sich die Medung ueberschreiben (Test per raum->QueryProp("h_commands"))
7// 01.07.2007 (Zesstra): GetOwner() definiert.
8//----------------------------------------------------------------------------
9#pragma strong_types,rtt_checks
10
11#include "schrankladen.h"
12inherit LADEN("swift_std_container");
13
14string *wcmd;
15string *objekte =
16 (({"\nstinkobj","\nzesstra_asche","seleve\nscheisse","\npopc",
17 "\nsspbollen","seleve\nstinkobj","\nq2p_gestank","ber\tram_skot",
18 "bambi\nschmutzigehaende"}));
19/* Wurzel(Klo/Imbiss), Zesstra(Vulkan/Illuminatos), Seleven(Klo/Nebelelfen),
20 * Seleven(Popcorn/Nebelelfen), Boing(Schleimschmeisser,SSP), STANDART
21 */
22
23static void wasch_fun();
24
25protected void create()
26{
27 if (!clonep(this_object())) return;
28 ::create();
29
30 wcmd = (({"wasche","wasch","dusche","dusch"}));
31 AddId(({"duschkabine","kabine","dusche","waschgelegenheit"}));
32 SetProp(P_NAME,"Duschkabine");
33
34 SetProp("cnt_version_obj",1);
35
36 SetProp("obj_cmd",
37 "wasch(e), dusch(e)\n"+
38 " Damit laesst sich das Stinken aus dem Imbissklo beseitigen.\n"+
39 " Wenn kein Befehl 'wasch(e)' im Raum beschrieben ist, erfolgt eine\n"+
40 " Standartmeldung, selbiges gilt fuer 'dusch(e)'.\n"+
41 "ssetz(e) waschbefehl\n"+
42 " Damit kann man die Befehlsliste erweitern, die das Waschen \n"+
43 " ausloesen\n"+
44 "sloesch(e) waschbefehl\n"+
45 " Damit kann man einen Befehl aus der Liste loeschen\n"+
46 "waschbefehlslite, wbl"+
47 " Zeigt eine Liste der Befehle an, die das Waschen ausloesen.\n");
48
49 SetProp(P_SHORT,"Eine Duschkabine");
50 SetProp(P_LONG,BS("Die Duschkabine hat einen Rahmen aus hellem Holz. "
51 "Dazwischen wurden matte Scheiben eingelassen, damit man niemanden beim "
52 "Duschen beobachten kann."));
53 AddDetail("rahmen","Der Rahmen ist aus hellem Holz.\n");
54 AddDetail(({"scheiben","scheibe"}),"Die Scheiben der Duschkabine sind "+
55 "matt und absolut undurchsichtig!\n");
56 AddDetail(({"duschen","beim duschen"}),
57 "Man kann niemanden beim Duschen beobachten.\n");
58
59 SetProp(P_GENDER, FEMALE);
60 SetProp(P_WEIGHT, 5000); // Gewicht 5 Kg
61 SetProp(P_MAX_WEIGHT, 0); // Soll nur n pseudo-Container
62 SetProp(P_WEIGHT_PERCENT, 100); // Dafuer macht er auch nix leichter :)
63 SetProp(P_MAX_OBJECTS, 0); // Kein Container :)
64 SetProp(P_VALUE, 0); // Ist eh nicht verkaufbar.
65 SetProp(P_NOBUY, 1); // Fals doch: zerstoeren!
66 SetProp(P_NOGET,
67 "Das geht nicht. "+Name(WER,1)+" haftet wie magisch am Boden.\n");
68 SetProp(P_MATERIAL, ({MAT_MISC_WOOD, MAT_MISC_MAGIC}) );
69 SetProp(P_INFO, "Versuchs mal mit: \"skommandos "+QueryProp(P_IDS)[1]+"\" !\n");
70
71 AddCmd(wcmd,"cmd_waschen");
72 RemoveCmd(({"oeffne","oeffn","schliesse","schliess"}));
73 AddCmd(({"ssetze","ssetz"}),"cmd_setzen");
74 AddCmd(({"sloesche","sloesche"}),"cmd_loeschen");
75 AddCmd(({"wbl","waschbefehlsliste"}),"liste");
76}
77
78// Zesstra, 1.7.07, fuers Hoerrohr
79string GetOwner() {return "seleven";}
80
81varargs int PreventInsert(object ob) {return 1;} //Das ist kein Container :)
82
83static void wasch_fun()
84{
85 int i;
86 object ob;
87 i = sizeof(objekte);
88 i--;
89 while(i > -1)
90 {
91
92 if(!TP) return;
93 ob = present(objekte[i],TP);
94 while(ob)
95 {
96 if(query_once_interactive(ob))
97 {
98 tell_object(TP,BS("Du scheinst jemanden in Deinem Inv zu haben!\n"
99 "Das sollte sich vielleicht ein Magier anschauen."));
100 i--;
101 return;
102 }
103 ob->remove(1);
104 if(present(objekte[i],TP));
105 ob = present(objekte[i],TP);
106 }
107 i--;
108
109 }
110}
111
112int cmd_waschen(string str)
113{
114 string verb;
115 verb = query_verb();
116 if(!environment()) return 0;
117 if( !erlaubt() )
118 {
119 write("Du solltest den Besitzer vielleicht um Erlaubnis bitten.\n");
120 return 1;
121 }
122 if(member(environment()->QueryProp("h_commands"),verb) == 0)
123 {
124 write(
125 "Du springst schnell unter die Dusche und waeschst Dich gruendlich.\n");
126 say(this_player()->Name(WER)+" springt schnell unter die Dusche.\n");
127 wasch_fun();
128 return 1;
129 }
130 wasch_fun();
131 return 1;
132}
133
134
135static int cmd_setzen(string str)
136{
137 string bef;
138 notify_fail("Moechtest Du einen Waschbefehl setzen?\n"+
139 "Syntax: ssetz(e) waschbefehl [befehl]\n");
140 if(!str || !stringp(str) || sizeof(str) == 0) return 0;
141 sscanf(str,"waschbefehl %s",bef);
142 if(!bef) return 0;
143 if(bef[sizeof(bef) .. sizeof(bef)-1] == "e")
144 bef = bef[sizeof(bef) .. sizeof(bef)-2];
145 notify_fail("Der Befehl steht schon auf der Liste.\n");
146 if(member(wcmd,bef) != -1) return 0;
147 wcmd += (({bef,bef+"e"}));
148 AddCmd(wcmd,"cmd_waschen");
149 write(BS("Du hast die Befehle "+bef+" und "+bef+"e an die Liste "
150 "angefuegt."));
151 return 1;
152}
153
154static int cmd_loeschen(string str)
155{
156 string bef;
157 notify_fail("Moechtest Du einen Waschbefehl loeschen?\n"+
158 "Syntax: sloesch(e) waschbefehl [befehl]\n");
159 if(!str || !stringp(str) || sizeof(str) == 0) return 0;
160 sscanf(str,"waschbefehl %s",bef);
161 if(!bef) return 0;
162 notify_fail("Der Befehl steht gar nicht auf der Liste.\n");
163 if(member(wcmd,bef) == -1) return 0;
164 wcmd -= (({bef}));
165 RemoveCmd(bef);
166 write(BS("Du hast die Befehle "+bef+" und "+bef+"e von der Liste "
167 "entfernt."));
168 return 1;
169}
170
171static int liste(string str)
172{
173 write("Du hast folgende Befehle auf der Waschliste stehen:\n"+
174 break_string(implode(wcmd,", "),78,3));
175 return 1;
176}
177
178
179
180// oeffnen und schliessen ausbauen.
181varargs int skommandos(string str)
182{
183 notify_fail( "Fehler: Dieser Befehl benoetigt eine gueltige Objekt-Id als Parameter.\n"
184 +"Beispiel: skommandos "+QueryProp(P_IDS)[1]+"\n");
185 if(!str) return 0;
186 if(present(str)!=TO ) // Bin ich gemeint?
187 return 0;
188 write("=============================================================================\n");
189 write("Aktuelle Version: "+QueryProp("cnt_version_std")+QueryProp("cnt_version_obj")+"\n");
190 write( BS(Name(WER,1)+" kann nur in diesem Seherhaus verwendet werden, "
191 +"da "+QueryPronoun(WER)+" speziell dafuer gekauft wurde. "+CAP(QueryPronoun(WER))
192 +" verfuegt ueber folgende Kommandos:")
193 +"-----------------------------------------------------------------------------\n"
194 +"serlaube [Objekt-Id] [Spielername|\"hausfreunde\"|\"zweities\"]\n"
195 +" Erlaubt Personen, "+name(WEN,1)+" mitzubenutzen.\n"
196 +" serlaube + Objekt-Id (ohne Spielername/hausfreunde)\n"
197 +" listet alle Personen mit Zugriff auf "+name(WEN,1)+"\n\n"
198 +"verschiebe [Objekt-Id] nach [Ausgang]\n"
199 +" Damit kannst Du "+name(WEN,1)+" innerhalb Deines Seherhauses verschieben.\n\n"
200 //Seleven 07.12.2005
201 +"sverstecke [Objekt-Id]\n"
202 +" Damit machst Du "+name(WEN,1)+" unsichtbar.\n"
203 +"shole [Objekt-Id] hervor\n"
204 +" Damit machst Du "+name(WEN,1)+" wieder sichtbar.\n"
205 // Bis hier
206 +"zertruemmer [Objekt-Id]\n"
207 +" Damit zerstoerst Du "+name(WEN,1)+".\n\n");
208
209
210 if( QueryProp("obj_cmd") )
211 write( QueryProp("obj_cmd")+"\n" );
212
213 write("[Objekt-Id] muss eine gueltige Id sein, in diesem Fall z.B. "
214 +QueryProp(P_IDS)[1]+"\n");
215 write("=============================================================================\n");
216
217
218 return 1;
219}
220