blob: 44d9976f47a1c8897534347d63962860c1dc837d [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001/*
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
30inherit "/std/thing";
31
32protected 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
64string _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
77int 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
84int 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
97int 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
110void Sign(int flag)
111{
112 Set(P_AUTOLOADOBJ, ({ Query(P_AUTOLOADOBJ)[0], flag }) );
113}
114
115public 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
129mixed _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
147void 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