MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | #include <properties.h> |
| 2 | #include <wizlevels.h> |
| 3 | #include <moving.h> |
| 4 | #include "haus.h" |
| 5 | |
| 6 | inherit "std/room"; |
| 7 | |
| 8 | create() |
| 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 | |
| 45 | void |
| 46 | BecomesNetDead(object pl) |
| 47 | { |
| 48 | pl->move(PATH+"seherbank", M_GO, 0, "wird rausgeworfen", "schlafwandelt herein"); |
| 49 | } |
| 50 | |
| 51 | int |
| 52 | legen(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 | |