| /* |
| * bausparvertrag.c -- Wir geben unsern Sehern ein Zuhause... |
| * |
| * Grundversion von Jof, weiterbearbeitet von Wargon. |
| * |
| * $Date: 1994/12/17 15:56:11 $ |
| * $Revision: 1.4 $ |
| * $Log: bausparvertrag.c,v $ |
| * Revision 1.4 1994/12/17 15:56:11 Wargon |
| * Etwas mehr Sicherheit gegen Zugriffe von aussen. |
| * |
| * Revision 1.3 1994/10/21 09:52:03 Wargon |
| * zerreissen eingebaut. |
| * |
| * Revision 1.2 1994/10/09 21:00:59 Wargon |
| * Laufzeit etc. ausgebaut, da das ueber den Block abgewickelt |
| * wird. |
| * Funktion Einzahlung() eingebaut (wird von der Bank aufgerufen). |
| * |
| * Revision 1.1 1994/10/09 20:49:28 Wargon |
| * Initial revision |
| * |
| */ |
| #pragma strong_types,rtt_checks |
| |
| #include "haus.h" |
| #include <properties.h> |
| #include <moving.h> |
| |
| inherit "/std/thing"; |
| |
| protected void create() |
| { |
| if (!clonep(this_object())) return; |
| ::create(); |
| SetProp(P_SHORT,"Ein Bausparvertrag"); |
| SetProp(P_NAME,"Bausparvertrag"); |
| Set(P_AUTOLOADOBJ, ({0, V_EP}) ); |
| Set(P_AUTOLOADOBJ, SECURED, F_MODE); // Sicher ist sicher... |
| SetProp(P_NODROP,1); |
| SetProp(P_NEVERDROP,1); |
| SetProp(P_ARTICLE,1); |
| SetProp(P_WEIGHT, 0); |
| SetProp(P_GENDER,1); |
| |
| AddId( ({"bausparvertrag", "vertrag", "sehe\rvertrag"}) ); |
| |
| AddCmd("lies","lesen"); |
| AddCmd("unterschreibe|unterschreib&\nimp", 0, |
| "Hier kannst Du den Vertrag nicht unterschreiben!\n"); |
| AddCmd("zerreiss|zerreisse&@ID", function int (string str) { |
| object blk = present_clone(HAEUSERPFAD+"block", this_player()); |
| write("Du zerreisst Deinen Vertrag.\n"); |
| write_file(HAEUSERPFAD+"log/BANK.LOG", sprintf( |
| "%s - Vertrag: %s zerriss ihn.\n", |
| dtime(time()), getuid(this_player()))); |
| if (objectp(blk)) |
| blk->remove(1); |
| remove(1); |
| return 1; |
| }, "Was willst Du zerreissen?"); |
| } |
| |
| string _query_long() |
| { |
| int max; |
| |
| max = (Query(P_AUTOLOADOBJ)[1] & V_FAST) ? SUMME_S : SUMME_L; |
| if (Query(P_AUTOLOADOBJ)[1] & V_RAUM) |
| max = max * 4/10; |
| return sprintf( |
| "Dies ist ein Bausparvertrag. Du hast bisher %d (von %d) Punkten eingezahlt.\n", |
| QueryProp(P_AUTOLOADOBJ)[0], max); |
| } |
| |
| #if 0 |
| int query_prevent_shadow(object ob) |
| { |
| HLOG("SHADOW", sprintf("%s, von %O im Vertrag.\n", dtime(time())[5..], ob)); |
| return 1; |
| } |
| #endif |
| |
| int lesen(string str) |
| { |
| if (id(str)) |
| { |
| if (Query(P_AUTOLOADOBJ)[1] & V_RAUM) |
| this_player()->More(PATH+"txt/vertrag_raum.txt",1); |
| else |
| this_player()->More(PATH+"txt/vertrag.txt",1); |
| return 1; |
| } |
| return 0; |
| } |
| |
| int Einzahlung() |
| { |
| int *al; |
| object env, po; |
| |
| if (old_explode(object_name(po=previous_object()),"#")[0] != PATH+"sb_einzahlung") { |
| env = environment(); |
| HLOG( (env ? getuid(env) : "BANK.LOG"), sprintf("Vertrag: Einzahlung von aussen! TI = %O, PO = %O\n", this_interactive(), previous_object())); |
| } |
| al = Query(P_AUTOLOADOBJ); |
| return Set(P_AUTOLOADOBJ, ({ al[0]+RATENHOEHE, al[1] }) )[0]; |
| } |
| |
| void Sign(int flag) |
| { |
| Set(P_AUTOLOADOBJ, ({ Query(P_AUTOLOADOBJ)[0], flag }) ); |
| } |
| |
| varargs public int move(object|string dest, int meth) |
| { |
| object penv; |
| int ret; |
| |
| penv = environment(); |
| ret = ::move(dest, meth); |
| |
| if (ret == 1 && (penv || (object_name(previous_object()) != PATH+"sb_antrag" && |
| object_name(previous_object()) != (stringp(dest) ? dest : object_name(dest))))) |
| HLOG("MOVING", sprintf("Vertrag: von %O -> %O mit %O (%O)\n", environment(), dest, previous_object(), getuid(previous_object()))); |
| return ret; |
| } |
| |
| mixed _set_autoloadobj(mixed al) |
| { |
| // Loggen, wenn nicht vom Spielerobjekt selber via den |
| // Autoloader-Mechanismus gesetzt. |
| if (previous_object(1) |
| && strstr(load_name(previous_object(1)),"/std/shells") != 0) |
| HLOG("SET_AL",sprintf("Vertrag: TP = %O, PO = %O, ENV = %O\n", |
| this_player(), previous_object(), environment())); |
| |
| /* Kompatibilitaet zu alten Vertraegen */ |
| if (pointerp(al) && !(al[1] & V_EP)) { |
| al[0] *= 4; |
| al[1] |= V_EP; |
| call_out("notifyChange", 0, this_player()); |
| } |
| return Set(P_AUTOLOADOBJ, al); |
| } |
| |
| void notifyChange(object wem) |
| { |
| tell_object(wem, |
| "\nNACHRICHT VON DER SEHERBANK:\n" |
| +"Die Vertragsmodalitaeten haben sich geaendert! Bitte lesen Sie den\n" |
| +"Vertrag noch einmal genau durch (insbes. Art. 4)!\n" |
| +"Statt Geld haben Sie jetzt Erfahrungspunkte zu zahlen!\n\n" ); |
| } |
| |