MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | /* |
| 2 | * bausparvertrag.c -- Wir geben unsern Sehern ein Zuhause... |
| 3 | * |
| 4 | * Grundversion von Jof, weiterbearbeitet von Wargon. |
| 5 | * |
| 6 | * $Date: 1994/12/17 15:56:11 $ |
| 7 | * $Revision: 1.4 $ |
| 8 | * $Log: bausparvertrag.c,v $ |
| 9 | * Revision 1.4 1994/12/17 15:56:11 Wargon |
| 10 | * Etwas mehr Sicherheit gegen Zugriffe von aussen. |
| 11 | * |
| 12 | * Revision 1.3 1994/10/21 09:52:03 Wargon |
| 13 | * zerreissen eingebaut. |
| 14 | * |
| 15 | * Revision 1.2 1994/10/09 21:00:59 Wargon |
| 16 | * Laufzeit etc. ausgebaut, da das ueber den Block abgewickelt |
| 17 | * wird. |
| 18 | * Funktion Einzahlung() eingebaut (wird von der Bank aufgerufen). |
| 19 | * |
| 20 | * Revision 1.1 1994/10/09 20:49:28 Wargon |
| 21 | * Initial revision |
| 22 | * |
| 23 | */ |
| 24 | #pragma strong_types,rtt_checks |
| 25 | |
| 26 | #include "haus.h" |
| 27 | #include <properties.h> |
| 28 | #include <moving.h> |
| 29 | |
| 30 | inherit "/std/thing"; |
| 31 | |
| 32 | protected void create() |
| 33 | { |
| 34 | if (!clonep(this_object())) return; |
| 35 | ::create(); |
| 36 | SetProp(P_SHORT,"Ein Bausparvertrag"); |
| 37 | SetProp(P_NAME,"Bausparvertrag"); |
| 38 | Set(P_AUTOLOADOBJ, ({0, V_EP}) ); |
| 39 | Set(P_AUTOLOADOBJ, SECURED, F_MODE); // Sicher ist sicher... |
| 40 | SetProp(P_NODROP,1); |
| 41 | SetProp(P_NEVERDROP,1); |
| 42 | SetProp(P_ARTICLE,1); |
| 43 | SetProp(P_WEIGHT, 0); |
| 44 | SetProp(P_GENDER,1); |
| 45 | AddId( ({"bausparvertrag", "vertrag", "sehe\rvertrag"}) ); |
| 46 | AddCmd("lies","lesen"); |
| 47 | AddCmd( ({ "unterschreibe", "unterschreib" }), lambda( ({}), |
| 48 | ({#',, ({#'notify_fail, "Hier kannst Du den Vertrag nicht unterschreiben!\n" }), |
| 49 | ({#'return, 0}) |
| 50 | }) ) ); |
| 51 | AddCmd( ({ "zerreiss", "zerreisse" }), lambda( ({ 'str }), |
| 52 | ({#',, ({#'notify_fail, "Was willst Du zerreissen?\n"}), |
| 53 | ({#'?!, ({#'id, 'str}), ({#'return, 0}) }), |
| 54 | ({#'=, 'blk, ({#'present, "\n block", ({#'this_player}) }) }), |
| 55 | ({#'write, "Du zerreisst Deinen Vertrag.\n"}), |
| 56 | ({#'write_file, PATH+"log/BANK.LOG", ({#'sprintf, "%s - Vertrag: %s zerriss ihn.\n", |
| 57 | ({#'dtime, ({#'time}) }), ({#'getuid, ({#'this_player})})})}), |
| 58 | ({#'?, 'blk, ({#'call_other, 'blk, "remove", 1}) }), |
| 59 | ({#'remove, 1}), |
| 60 | ({#'return, 1}) |
| 61 | }) ) ); |
| 62 | } |
| 63 | |
| 64 | string _query_long() |
| 65 | { |
| 66 | int max; |
| 67 | |
| 68 | max = (Query(P_AUTOLOADOBJ)[1] & V_FAST) ? SUMME_S : SUMME_L; |
| 69 | if (Query(P_AUTOLOADOBJ)[1] & V_RAUM) |
| 70 | max = max * 4/10; |
| 71 | return sprintf( |
| 72 | "Dies ist ein Bausparvertrag. Du hast bisher %d (von %d) Punkten eingezahlt.\n", |
| 73 | QueryProp(P_AUTOLOADOBJ)[0], max); |
| 74 | } |
| 75 | |
| 76 | #if 0 |
| 77 | int query_prevent_shadow(object ob) |
| 78 | { |
| 79 | HLOG("SHADOW", sprintf("%s, von %O im Vertrag.\n", dtime(time())[5..], ob)); |
| 80 | return 1; |
| 81 | } |
| 82 | #endif |
| 83 | |
| 84 | int lesen(string str) |
| 85 | { |
| 86 | if (id(str)) |
| 87 | { |
| 88 | if (Query(P_AUTOLOADOBJ)[1] & V_RAUM) |
| 89 | this_player()->More(PATH+"txt/vertrag_raum.txt",1); |
| 90 | else |
| 91 | this_player()->More(PATH+"txt/vertrag.txt",1); |
| 92 | return 1; |
| 93 | } |
| 94 | return 0; |
| 95 | } |
| 96 | |
| 97 | int Einzahlung() |
| 98 | { |
| 99 | int *al; |
| 100 | object env, po; |
| 101 | |
| 102 | if (old_explode(object_name(po=previous_object()),"#")[0] != PATH+"sb_einzahlung") { |
| 103 | env = environment(); |
| 104 | HLOG( (env ? getuid(env) : "BANK.LOG"), sprintf("Vertrag: Einzahlung von aussen! TI = %O, PO = %O\n", this_interactive(), previous_object())); |
| 105 | } |
| 106 | al = Query(P_AUTOLOADOBJ); |
| 107 | return Set(P_AUTOLOADOBJ, ({ al[0]+RATENHOEHE, al[1] }) )[0]; |
| 108 | } |
| 109 | |
| 110 | void Sign(int flag) |
| 111 | { |
| 112 | Set(P_AUTOLOADOBJ, ({ Query(P_AUTOLOADOBJ)[0], flag }) ); |
| 113 | } |
| 114 | |
| 115 | public int move(mixed dest, int meth) |
| 116 | { |
| 117 | object penv; |
| 118 | int ret; |
| 119 | |
| 120 | penv = environment(); |
| 121 | ret = ::move(dest, meth); |
| 122 | |
| 123 | if (ret == 1 && (penv || (object_name(previous_object()) != PATH+"sb_antrag" && |
| 124 | object_name(previous_object()) != (stringp(dest) ? dest : object_name(dest))))) |
| 125 | HLOG("MOVING", sprintf("Vertrag: von %O -> %O mit %O (%O)\n", environment(), dest, previous_object(), getuid(previous_object()))); |
| 126 | return ret; |
| 127 | } |
| 128 | |
| 129 | mixed _set_autoloadobj(mixed al) |
| 130 | { |
| 131 | // Loggen, wenn nicht vom Spielerobjekt selber via den |
| 132 | // Autoloader-Mechanismus gesetzt. |
| 133 | if (previous_object(1) |
| 134 | && strstr(load_name(previous_object(1)),"/std/shells") != 0) |
| 135 | HLOG("SET_AL",sprintf("Vertrag: TP = %O, PO = %O, ENV = %O\n", |
| 136 | this_player(), previous_object(), environment())); |
| 137 | |
| 138 | /* Kompatibilitaet zu alten Vertraegen */ |
| 139 | if (pointerp(al) && !(al[1] & V_EP)) { |
| 140 | al[0] *= 4; |
| 141 | al[1] |= V_EP; |
| 142 | call_out("notifyChange", 0, this_player()); |
| 143 | } |
| 144 | return Set(P_AUTOLOADOBJ, al); |
| 145 | } |
| 146 | |
| 147 | void notifyChange(object wem) |
| 148 | { |
| 149 | tell_object(wem, |
| 150 | "\nNACHRICHT VON DER SEHERBANK:\n" |
| 151 | +"Die Vertragsmodalitaeten haben sich geaendert! Bitte lesen Sie den\n" |
| 152 | +"Vertrag noch einmal genau durch (insbes. Art. 4)!\n" |
| 153 | +"Statt Geld haben Sie jetzt Erfahrungspunkte zu zahlen!\n\n" ); |
| 154 | } |
| 155 | |