blob: 1f8919657927f368ea1259582b94a30137831ca8 [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 Einzahlungsschalter" );
15 SetProp( P_INT_LONG,
16 "Du stehst hier am Einzahlungsschalter der Bank. Um eine Rate einzuzahlen,\n"
17 +"musst Du einfach nur Deinen MG MASTER-BLOCK vorlegen. Gib dazu einfach nur\n"
18 +"'lege block vor' ein.\n"
19 +"Der Blick eines schemenhaft erkennbaren Beamten scheint Dich selbst durch\n"
20 +"die dicke Rauchglasscheibe hindurch zu durchbohren.\n" );
21
22 AddDetail( ({ "boden" }),
23 "Der tiefschwarze Boden gibt Dir das Gefuehl, im absoluten Nichts zu stehen.\n" );
24 AddDetail( ({ "wand", "waende" }),
25 "Dunkle Schatten tanzen ueber die Waende.\n" );
26 AddDetail( ({ "decke" }),
27 "Sie scheint Dir in dieser unheimlichen Umgebung auf den Kopf fallen zu\n"
28 +"wollen.\n" );
29 AddDetail( ({ "nichts" }),
30 "Du siehst nichts.\n" );
31 AddDetail( ({ "schatten" }),
32 "Die Schatten irritieren Dich sehr.\n" );
33 AddDetail( ({ "scheibe", "rauchglas", "glas", "glasscheibe", "rauchglasscheibe" }),
34 "Hinter ihr scheint sich ein Beamter zu verbergen.\n" );
35 AddDetail( ({ "schalter" }),
36 "An diesem Schalter kannst Du eine Rate fuer Dein Haus einzahlen.\n" );
37 AddDetail( ({ "beamte", "beamter", "beamten", "schalterbeamte", "schalterbeamter", "schalterbeamten" }),
38 "Der Schalterbeamte durchbohrt Dich mit seinen Blicken.\n" );
39
40 AddCmd( ({ "leg", "lege" }), "legen" );
41
42 AddExit( "raus", PATH+"seherbank" );
43}
44
45void
46BecomesNetDead(object pl)
47{
48 pl->move(PATH+"seherbank", M_GO, 0, "wird rausgeworfen", "schlafwandelt herein");
49}
50
51int
52legen(string str)
53{
54 object tp, block, vertrag;
55 int *al, *vl, rate;
56
57 if (!str || str != "block vor")
58 return 0;
59
60 tp = this_player();
61 block = present( "\n block", tp);
62 vertrag = present( "sehe\rvertrag", tp );
63
64 if (!IS_SEER(tp))
65 write( "Der Schalterbeamte weist Dich darauf hin, dass hier nur Seher be-\n"
66 +"dient werden.\n" );
67 else if (tp->QueryProp(P_KILLS))
68 write( "Ein bohrender Blick verkuendet: Verbrecher werden hier nicht bedient!\n" );
69 else if (!block)
70 write( "Du hast keinen Block, den Du vorlegen koenntest!\n" );
71 else if (!vertrag) {
72 write( "Der Schalterbeamte sagt: Sie haben keinen Bausparvertrag! Wozu wollen\n"
73 +"Sie dann eine Rate einzahlen? Wie sind Sie ueberhaupt an den Block\n"
74 +"gekommen?\n" );
75 HLOG( "BANK.LOG", "Einzahlung: "+getuid(tp)+" Block ohne Vertrag!\n" );
76 }
77 else if (old_explode(object_name(block),"#")[0] != PATH+"block" ||
78 old_explode(object_name(vertrag),"#")[0] != PATH+"bausparvertrag") {
79 write( "Der Schalterbeamte faehrt Dich an: DU WILLST SCHUMMELN???\n" );
80 HLOG( "BANK.LOG", "Einzahlung: "+getuid(tp)+" Falscher Block/Vertrag!\n");
81 HLOG( "SCHUMMEL", sprintf("Einzahlung: TP: %O, B: %O, V: %O\n",
82 this_player(),
83 block->QueryProp(P_CLONER),
84 vertrag->QueryProp(P_CLONER)));
85 }
86 else {
87 al = block->Query(P_AUTOLOADOBJ);
88 rate = RATENHOEHE;
89 if (al[V_FLAGS] & B_EXTEND)
90 rate += (6*RATENHOEHE)/10;
91
92 if (al[V_MONEY] < rate) {
93 write( "Der Schalterbeamte weist Dich darauf hin, dass Du noch nicht genug Erfahrung\n"
94 +"fuer die Rate gelassen hast.\n" );
95 HLOG( getuid(tp), "Einzahlung: "+getuid(tp)+" hatte nicht genug ("+al[V_MONEY]+"/"+rate+").\n");
96 }
97 else {
98 vl = vertrag->Query(P_AUTOLOADOBJ);
99 rate = (al[V_FLAGS] & B_FAST) ? SUMME_S : SUMME_L;
100 if (vl[1] & V_RAUM)
101 rate = rate * 4 /10;
102 write( "Du zahlst Deine Rate ein.\n" );
103 block->remove();
104 if (vertrag->Einzahlung() >= rate) {
105 write( "Der Schalterbeamte sagt: Sie haben es geschafft! Sie haben nun genug\n"
106 +"Erfahrung eruebrigt. ");
107 if (vl[1] & V_RAUM)
108 write( "Am Ausgabeschalter koennen Sie nun den neuen Raum\n"
109 +"eintragen lassen.\n" );
110 else
111 write( "Am Hausausgabeschalter koennen Sie nun Ihr neues\n"
112 +"Heim in Empfang nehmen.\n" );
113 vertrag->Sign( vl[1] | V_COMPL );
114 }
115 else {
116 write( "Der Schalterbeamte beschwoert Blitz und Donner vom Himmel herab. Ein\n"
117 +"lauter Knall, und ein neuer Ratenblock erscheint in Deinem Inventar.\n" );
118 (block = clone_object(PATH+"block"))->move(tp, M_NOCHECK);
119 block->SetProp("schwer", vl[1] & V_FAST);
120 al = block->Query(P_AUTOLOADOBJ);
121 al[V_FLAGS] |= B_ACTIVE;
122 block->Set(P_AUTOLOADOBJ, al);
123 }
124 HLOG(getuid(tp), "Einzahlung: "+getuid(tp)+" zahlte ein.\n" );
125 tp->force_save();
126 }
127 }
128 return 1;
129}
130