blob: a0c5e4181e8391224540d537b24432204e3f5113 [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");
Arathornad58ac62016-08-23 00:39:36 +020054 SetProp(P_INFO, break_string(
55 "Du kannst das Haus mit dem Befehl 'lass haus fallen' abstellen und "
56 "dann mit 'giesse haus' Dein Seherhaus spriessen lassen.",78));
57 SetProp(P_SYNTAX_HELP, QueryProp(P_INFO));
MG Mud User88f12472016-06-24 23:31:02 +020058 SetProp(P_NAME, "Haus");
59 SetProp(P_NEVERDROP, 1);
Arathorn4415ac62016-08-23 00:41:10 +020060 SetProp(P_GENDER, NEUTER);
MG Mud User88f12472016-06-24 23:31:02 +020061 AddId(({"haus", "sehe\rhaus"}));
62 SetProp(P_VALUE, 0);
63 SetProp(P_WEIGHT, 0);
64 AddCmd(({"gies", "giess", "giesse"}), "blas");
65}
66
67string SetOwner(string o)
68{
69 return owner = o;
70}
71
72string QueryOwner()
73{
74 return owner;
75}
76
77string get_mag(mixed dest)
78{
79 mapping reg;
80 string *mag;
81 string ret;
82 int i, j;
83
84 catch(reg = "/obj/mliste"->QueryProp("Magierliste"));
85
86 if (mappingp(reg) && member(reg, getuid(dest)))
87 mag = reg[getuid(dest)];
88 else
89 return capitalize(getuid(dest));
90
91
92 if (!sizeof(mag))
93 return capitalize(getuid(dest)); //Hinzugefuegt Feigling
94
95 if ((i=sizeof(mag)) == 1)
96 return capitalize(mag[0]);
97 else {
98 ret = capitalize(mag[0]);
99 j = 1;
100 while (j < i-1) {
101 ret += ", "+capitalize(mag[j]);
102 j++;
103 }
104 ret += " und "+capitalize(mag[<1]);
105 }
106 return ret;
107}
108
Arathorna55c5fa2016-08-23 00:41:42 +0200109varargs int move(object|string dest, int method)
MG Mud User88f12472016-06-24 23:31:02 +0200110{
111 int nix;
112
113 if ((method & M_GIVE) == M_GIVE)
114 {
115 write("Dein sauer verdientes Seherhaus weggeben? NIEMALS!\n");
116 return 0;
117 }
118 if ((method & M_PUT) == M_PUT)
119 {
120 if ((nix = VERWALTER->Unbebaubar(dest)))
121 {
122 write( ({ "Hier ist das Bauen von Haeusern untersagt!\n",
123 "Du kannst das Haus nicht in geschlossenen Raeumen abstellen.\n",
124 "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"
125 })[nix-1]);
126 return 0;
127 }
128 return ::move(dest, method);
129 }
130 if ((method & M_GET) == M_GET)
131 {
132 if (getuid(this_player())!=owner)
133 {
134 write("Dies ist nicht Dein Haus.\n");
135 return 0;
136 }
137 }
138 return ::move(dest, method);
139}
140
141int blas(string str)
142{
143 object haus;
144
145 notify_fail("Was moechtest Du giessen?\n");
146 if (!str || str!="haus")
147 return 0;
148 if (living(environment()))
149 {
150 write("Du solltest das Haus vielleicht erst mal abstellen.\n");
151 return 1;
152 }
153 if (getuid(this_player())!=owner)
154 {
155 write("Machst Du immer fremde Haeuser nass?\n");
156 return 1;
157 }
158 if (!environment()->QueryProp(P_HAUS_ERLAUBT))
159 {
160 write("Dieser Platz ist nicht als Bauplatz gekennzeichnet, Du solltest mal\n\
161mit dem entsprechenden Magier reden.\nFrag mal "+capitalize(getuid(environment()))+".\n");
162 return 0;
163 }
164 write( "Voller Vorfreude greifst Du nach Deiner Giesskanne und beginnst, Dein mueh-\n\
165sam erspartes Instanthaus zu begiessen. Moment... Giesskanne? Reichlich ver-\n\
166dutzt schaust Du auf die kleine gruene Kanne in Deinen Haenden. Wo mag sie\n\
167nur hergekommen sein? Doch kaum erreichen die ersten Tropfen das Instanthaus,\n\
168wird Deine Aufmerksamkeit auch schon wieder von der Kanne abgelenkt:\n\
169Das Trockenhaus beginnt zu schaeumen und sich ueber den Boden auszubreiten.\n\
170In dem Schaum entstehen und vergehen Waende, Decken und Fenster, als ob sie\n\
171sich noch nicht recht entscheiden koennten, wie sich sich zu einem Ganzen zu-\n\
172sammenfuegen sollen.\n\
173Dann erhebt sich dort, wo Du das Trockenhaus abgestellt hattest, eine grosse,\n\
174schaumige Blase! Sie wird groesser und groesser, bis sie Dich schliesslich\n\
175streift. Dabei platzt sie mit einem leisen *PLOPP* - und es bleibt ein be-\n\
176zugsfertiges Seherhaus zurueck!\n\
177Du wirfst noch einmal einen verstohlenen Blick auf die Giesskanne, musst aber\n\
178feststellen, dass sie verschwunden ist und auch verschwunden bleibt.\n" );
179
Arathornd5c9c022020-01-08 22:04:28 +0100180 say(capitalize(this_player()->name())+" verwandelt mit einem Tropfen Wasser "+
MG Mud User88f12472016-06-24 23:31:02 +0200181 this_player()->QueryPossPronoun(this_object(), WEN) + " Haus.\n");
182
183 VERWALTER->NeuesHaus(owner, environment(this_object()));
184 remove();
185 return 1;
186}
187
188static string _query_autoloadobj()
189{
190 return owner;
191}