blob: 1e6dd20c4101c0c84df0a20a0f6c78bbaada22a3 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001#include <properties.h>
2#include <wizlevels.h>
3#include <moving.h>
4#include "haus.h"
5
6inherit "std/room";
7
8create()
9{
10 ::create();
11
12 SetProp( P_INDOORS, 1 );
13 SetProp( P_LIGHT, 1 );
14 SetProp( P_INT_SHORT, "Am Antragsschalter" );
15 SetProp( P_INT_LONG,
16 "Du stehst am Antragsschalter der Bank. Hinter einer Rauchglasscheibe scheint\n"
17 +"sich ein Schalterbeamter zu befinden, Du kannst aber nichts genaueres er-\n"
18 +"kennen.\n"
19 +"Wenn Du Dich traust, kannst Du hier einen Bausparvertrag beantragen und einen\n"
20 +"beantragten Vertrag unterschreiben.\n"
21 +"Die Syntax dazu lautet:\n"
22 +"beantrage vertrag (fuer einen Bausparvertrag)\n"
23 +"beantrage ausbauvertrag (fuer den Ausbau des Hauses)\n"
24 +"unterschreibe vertrag (um den jeweiligen Vertrag zu unterschreiben)\n" );
25
26 AddDetail( ({ "boden" }),
27 "Der tiefschwarze Boden gibt Dir das Gefuehl, im absoluten Nichts zu stehen.\n" );
28 AddDetail( ({ "wand", "waende" }),
29 "Dunkle Schatten tanzen ueber die Waende.\n" );
30 AddDetail( ({ "decke" }),
31 "Sie scheint Dir in dieser unheimlichen Umgebung auf den Kopf fallen zu\n"
32 +"wollen.\n" );
33 AddDetail( ({ "nichts" }),
34 "Du siehst nichts.\n" );
35 AddDetail( ({ "schatten" }),
36 "Die Schatten irritieren Dich sehr.\n" );
37 AddDetail( ({ "schalter" }),
38 "An diesem Schalter kannst Du einen Bausparvertrag beantragen und unter-\n"
39 +"schreiben.\n" );
40 AddDetail( ({ "beamte", "beamter", "beamten", "schalterbeamte", "schalterbeamten", "schalterbeamter" }),
41 "Du kannst ihn nur schemenhaft hinter der Rauchglasscheibe des Schalters er-\n"
42 +"kennen. Die Umrisse scheinen allerdings zu keiner Lebensform zu gehoeren,\n"
43 +"derer Du Dich erinnern koenntest.\n" );
44 AddDetail( ({ "scheibe", "glasscheibe", "rauchglas", "rauchglasscheibe" }),
45 "Ein schemenhafter Beamter sitzt dahinter.\n" );
46 AddDetail( ({ "umrisse" }),
47 "Sie sind aeusserst beunruhigend.\n" );
48
49 AddCmd( ({ "beantrage" }), "beantragen" );
50 AddCmd( ({ "unterschreib", "unterschreibe" }), "unterschreiben" );
51 AddExit( "raus", PATH+"seherbank" );
52}
53
54void
55BecomesNetDead(object pl)
56{
57 pl->move(PATH+"seherbank", M_GO, 0, "wird rausgeworfen", "schlafwandelt herein");
58}
59
60int
61beantragen(string str)
62{
63 object tp, vertrag;
64 int haus;
65
66 tp = this_player();
67
68 if (!str || (haus = member( ({"ausbauvertrag", "vertrag", "bausparvertrag"}), str)) <0) {
69 notify_fail( "Versuch mal 'beantrage vertrag'!\n" );
70 return 0;
71 }
72
73 if (!IS_SEER(tp)) {
74 notify_fail( "Nur Seher koennen einen Bausparvertrag beantragen!\n" );
75 return 0;
76 }
77 if (tp->QueryProp(P_KILLS)) {
78 write("Verbrecher werden hier nicht bedient!\n");
79 return 1;
80 }
81 if (vertrag = present("sehe\rvertrag", tp))
82 write( "Der Beamte schnarrt: Aber Sie haben doch schon einen Vertrag!\n" );
83 else if (haus && (present("sehe\rhaus", tp) || VERWALTER->FindeHaus(getuid(tp)))) {
84 write( "Der Beamte schnarrt: Sie duerfen nur EIN Haus besitzen!\n" );
85 HLOG( "BANK.LOG", "Antrag: "+getuid(tp)+" stellte zweiten Antrag.\n" );
86 }
87 else if (!haus && !VERWALTER->FindeHaus(getuid(tp))) {
88 write( "Der Beamte faucht: Haben sie denn ueberhaupt schon ein Haus aufgestellt?\n"
89 +"Vorher koennen sie natuerlich keine Erweiterungen beantragen!\n" );
90 }
91 else {
92 if (!haus && VERWALTER->HausProp(getuid(tp),HP_ROOMS) == 9) {
93 write( "Der Beamte droehnt: Ihr Haus hat schon die hoechste Ausbaustufe erreicht!\n");
94 return 1;
95 }
96 (vertrag = clone_object(PATH+"bausparvertrag"))->move(tp, M_NOCHECK);
97
98 write( "Die Schatten verdichten sich zu einem Blatt Papier, welches in Deine Haende\n"
99 +"geweht wird. Mit droehnender Stimme erklaert der Schalterbeamte:\n"
100 +"Dies ist Ihr Bausparvertrag. Bitte lesen Sie ihn sich gruendlich durch, be-\n"
101 +"vor Sie ihn unterschreiben! Wenn Sie ihn erst einmal unterschrieben haben,\n"
102 +"koennen sie nicht wieder davon zuruecktreten (es sei denn, Sie zerreissen\n"
103 +"ihn oder ueberziehen die Ratenzahlungen)! Sie sind nicht gezwungen, den Ver-\n"
104 +"trag sofort zu unterschreiben. Im Hauptraum der Bank befindet sich ein In-\n"
105 +"formationsstand, an dem Sie Kommentare zu diesem Vertrag kaeuflich erwerben\n"
106 +"koennen. Wenn Ihnen einige Passagen des Vertrags unverstaendlich sind, wird\n"
107 +"Ihnen in den Kommentaren sicherlich geholfen.\n"
108 +"Das Leisten der Unterschrift ist jedoch nur hier an diesem Schalter\n"
109 +"moeglich!\n" );
110 if (!haus)
111 vertrag->Sign(V_RAUM);
112 HLOG( "BANK.LOG", "Antrag: "+getuid(tp)+" bekam einen "+(haus ? "Haus" : "Raum")+"vertrag.\n" );
113 }
114 return 1;
115}
116
117int
118unterschreiben(string str)
119{
120 object tp, vertrag;
121 int flag;
122
123 tp = this_player();
124
125 notify_fail( "Was willst Du denn unterschreiben?\n" );
126 if (!str || !(vertrag = present(str, tp)) || !vertrag->id("sehe\rvertrag"))
127 return 0;
128
129 if ((flag = vertrag->QueryProp(P_AUTOLOADOBJ)[1]) & V_SIGNED) {
130 write( "Der Schalterbeamte sagt: Aber der Vertrag ist doch schon unterschrieben!\n" );
131 return 1;
132 }
133
134 write( "Der Schalterbeamte sagt: Fuer welche Vertragsvariante haben sie sich\n"
135 +"entschieden? Tippen Sie 'sanft' fuer den sanften Weg zum eigenen Heim\n"
136 +"oder 'schnell' fuer den schnellen Weg.\n] " );
137 input_to("sign", 0, vertrag, flag|V_EP);
138 return 1;
139}
140
141void
142sign(string str, object vertrag, int flag)
143{
144 object block;
145 string s;
146 int *al;
147
148 if (str == "sanft" || str == "schnell") {
149 write( "Der Schalterbeamte gibt Dir einen Fuellfederhalter sowie ein Skalpell.\n"
150 +"Schwungvoll setzt Du Deine Unterschrift unter den Vertrag. Dann piekst\n"
151 +"Du Dir mit dem Skalpell in den Finger und bestaetigst die Unterschrift\n"
152 +"mit einem dunklen Tropfen Deines Blutes.\n"
153 +"Ploetzlich zucken Blitze um Dich herum auf, und der Schalterbeamte lacht\n"
154 +"droehnend auf. Du hast das Gefuehl, dass hier etwas nicht ganz mit rechten\n"
155 +"Dingen vor sich geht. Dann bestaetigt der Beamte die Unterschrift und\n"
156 +"uebergibt Dir den ersten Block, auf dem Deine Raten vermerkt werden.\n"
157 +"Der Beamte erklaert: Damit auf den Block auch eingezahlt wird, muss man\n"
158 +"ihn wie eine Ruestung anziehen!\n" );
159
160 this_player()->reduce_hit_points(50);
161 vertrag->Sign(flag | (str == "sanft" ? V_SIGNED : V_SIGNED | V_FAST));
162 (block = clone_object(PATH+"block"))->move(this_player(), M_NOCHECK);
163 block->SetProp("schwer", V_FAST & vertrag->QueryProp(P_AUTOLOADOBJ)[1]);
164 al = block->QueryProp(P_AUTOLOADOBJ);
165 al[V_FLAGS] |= B_ACTIVE;
166 block->SetProp(P_AUTOLOADOBJ, al);
167 s = "Antrag: "+getuid(this_player())+" unterschrieb den Vertrag ("+str+").\n";
168 HLOG( "BANK.LOG", s );
169 HLOG( getuid(this_player()), s );
170 }
171 else {
172 write( "Der Schalterbeamte sagt: Nur 'sanft' oder 'schnell', bitte!\n" );
173 input_to("sign", 0, vertrag, flag);
174 }
175}