blob: f79fb36bb23404b5ee2b8aa46a5cbafd3adf859b [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001/*
2 * traghaus.c -- Wie suess! ;)
3 *
4 * (c) 1994 Boing@MorgenGrauen
5 * Be- und ueberarbeitet von Jof und Wargon.
6 *
7 * HINWEIS: Um einen Bauplatz zu kennzeichnen, muss dort die
8 * Propertie "haus_erlaubt" auf 1 gesetzt werden!
9 *
10 * 17.11.2003 Feigling - Bugfix: Fehlenden Regionsmagier abgefangen
11 *
12 * $Date: 1994/10/24 08:25:18 $
13 * $Revision: 1.5 $
14 * $Log: traghaus.c,v $
15 * Revision 1.5 1994/10/24 08:25:18 Wargon
16 * Macht jetzt Gebrauch von VERWALTER->Unbebaubar() und dem geaenderten
17 * VERWALTER->NeuesHaus().
18 *
19 * Revision 1.4 1994/10/19 10:03:29 Wargon
20 * Hinweis eingebaut (s.o.)
21 * Beschraenkung auf ein Seherhaus pro Raum rausgenommen.
22 *
23 * Revision 1.3 1994/10/09 20:17:03 Wargon
24 * In blas() haus->Save() eingefuegt.
25 *
26 * Revision 1.2 1994/10/07 22:13:17 Wargon
27 * Etwas aufgeraeumt.
28 * Text beim Giessen geaendert.
29 * Falls in dem Raum schon ein Seherhaus steht, kann kein weiteres mehr
30 * aufgestellt werden.
31 *
32 * Revision 1.1 1994/10/07 14:40:54 Wargon
33 * Initial revision
34 *
35 */
36#include <properties.h>
37#include <moving.h>
38#include "haus.h"
39
40inherit "std/thing";
41
42static string owner;
43
44void create()
45{
46 if (!clonep(this_object())) return;
47 ::create();
48 owner = getuid(this_player());
49 SetProp(P_SHORT, "Ein tragbares Instanthaus");
50 SetProp(P_LONG, "Dies ist Dein Haus. Du kannst es abstellen und giessen, dann wird daraus ein\n\
51richtiges Seherhaus, in das Du sofort einziehen kannst. Es ist allerdings\n\
52noetig, dass der Magier, der den Raum erschaffen hat, in dem Du es abstellen\n\
53moechtest, dem Bau eines Seherhauses in diesem Raum zustimmt.\n");
54 SetProp(P_NAME, "Haus");
55 SetProp(P_NEVERDROP, 1);
56 SetProp(P_GENDER, 0);
57 AddId(({"haus", "sehe\rhaus"}));
58 SetProp(P_VALUE, 0);
59 SetProp(P_WEIGHT, 0);
60 AddCmd(({"gies", "giess", "giesse"}), "blas");
61}
62
63string SetOwner(string o)
64{
65 return owner = o;
66}
67
68string QueryOwner()
69{
70 return owner;
71}
72
73string get_mag(mixed dest)
74{
75 mapping reg;
76 string *mag;
77 string ret;
78 int i, j;
79
80 catch(reg = "/obj/mliste"->QueryProp("Magierliste"));
81
82 if (mappingp(reg) && member(reg, getuid(dest)))
83 mag = reg[getuid(dest)];
84 else
85 return capitalize(getuid(dest));
86
87
88 if (!sizeof(mag))
89 return capitalize(getuid(dest)); //Hinzugefuegt Feigling
90
91 if ((i=sizeof(mag)) == 1)
92 return capitalize(mag[0]);
93 else {
94 ret = capitalize(mag[0]);
95 j = 1;
96 while (j < i-1) {
97 ret += ", "+capitalize(mag[j]);
98 j++;
99 }
100 ret += " und "+capitalize(mag[<1]);
101 }
102 return ret;
103}
104
105int move(mixed dest, int method)
106{
107 int nix;
108
109 if ((method & M_GIVE) == M_GIVE)
110 {
111 write("Dein sauer verdientes Seherhaus weggeben? NIEMALS!\n");
112 return 0;
113 }
114 if ((method & M_PUT) == M_PUT)
115 {
116 if ((nix = VERWALTER->Unbebaubar(dest)))
117 {
118 write( ({ "Hier ist das Bauen von Haeusern untersagt!\n",
119 "Du kannst das Haus nicht in geschlossenen Raeumen abstellen.\n",
120 "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"
121 })[nix-1]);
122 return 0;
123 }
124 return ::move(dest, method);
125 }
126 if ((method & M_GET) == M_GET)
127 {
128 if (getuid(this_player())!=owner)
129 {
130 write("Dies ist nicht Dein Haus.\n");
131 return 0;
132 }
133 }
134 return ::move(dest, method);
135}
136
137int blas(string str)
138{
139 object haus;
140
141 notify_fail("Was moechtest Du giessen?\n");
142 if (!str || str!="haus")
143 return 0;
144 if (living(environment()))
145 {
146 write("Du solltest das Haus vielleicht erst mal abstellen.\n");
147 return 1;
148 }
149 if (getuid(this_player())!=owner)
150 {
151 write("Machst Du immer fremde Haeuser nass?\n");
152 return 1;
153 }
154 if (!environment()->QueryProp(P_HAUS_ERLAUBT))
155 {
156 write("Dieser Platz ist nicht als Bauplatz gekennzeichnet, Du solltest mal\n\
157mit dem entsprechenden Magier reden.\nFrag mal "+capitalize(getuid(environment()))+".\n");
158 return 0;
159 }
160 write( "Voller Vorfreude greifst Du nach Deiner Giesskanne und beginnst, Dein mueh-\n\
161sam erspartes Instanthaus zu begiessen. Moment... Giesskanne? Reichlich ver-\n\
162dutzt schaust Du auf die kleine gruene Kanne in Deinen Haenden. Wo mag sie\n\
163nur hergekommen sein? Doch kaum erreichen die ersten Tropfen das Instanthaus,\n\
164wird Deine Aufmerksamkeit auch schon wieder von der Kanne abgelenkt:\n\
165Das Trockenhaus beginnt zu schaeumen und sich ueber den Boden auszubreiten.\n\
166In dem Schaum entstehen und vergehen Waende, Decken und Fenster, als ob sie\n\
167sich noch nicht recht entscheiden koennten, wie sich sich zu einem Ganzen zu-\n\
168sammenfuegen sollen.\n\
169Dann erhebt sich dort, wo Du das Trockenhaus abgestellt hattest, eine grosse,\n\
170schaumige Blase! Sie wird groesser und groesser, bis sie Dich schliesslich\n\
171streift. Dabei platzt sie mit einem leisen *PLOPP* - und es bleibt ein be-\n\
172zugsfertiges Seherhaus zurueck!\n\
173Du wirfst noch einmal einen verstohlenen Blick auf die Giesskanne, musst aber\n\
174feststellen, dass sie verschwunden ist und auch verschwunden bleibt.\n" );
175
176 say(capitalize((string)(this_player()->name()))+" verwandelt mit einem Tropfen Wasser "+
177 this_player()->QueryPossPronoun(this_object(), WEN) + " Haus.\n");
178
179 VERWALTER->NeuesHaus(owner, environment(this_object()));
180 remove();
181 return 1;
182}
183
184static string _query_autoloadobj()
185{
186 return owner;
187}