blob: 783d6d0db1c451704b0e58731abacd63f21f71d9 [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);
Arathorn7a053952018-11-15 22:07:37 +010045
MG Mud User88f12472016-06-24 23:31:02 +020046 AddId( ({"bausparvertrag", "vertrag", "sehe\rvertrag"}) );
Arathorn7a053952018-11-15 22:07:37 +010047
MG Mud User88f12472016-06-24 23:31:02 +020048 AddCmd("lies","lesen");
Arathorn7a053952018-11-15 22:07:37 +010049 AddCmd("unterschreibe|unterschreib&\nimp", 0,
50 "Hier kannst Du den Vertrag nicht unterschreiben!\n");
51 AddCmd("zerreiss|zerreisse&@ID", function int (string str) {
52 object blk = present_clone(HAEUSERPFAD+"block", this_player());
53 write("Du zerreisst Deinen Vertrag.\n");
54 write_file(HAEUSERPFAD+"log/BANK.LOG", sprintf(
55 "%s - Vertrag: %s zerriss ihn.\n",
56 dtime(time()), getuid(this_player())));
57 if (objectp(blk))
58 blk->remove(1);
59 remove(1);
60 return 1;
61 }, "Was willst Du zerreissen?");
MG Mud User88f12472016-06-24 23:31:02 +020062}
63
64string _query_long()
65{
Arathorn9d788072021-04-26 18:37:19 +020066 int req_points = (Query(P_AUTOLOADOBJ)[1] & V_FAST) ? SUMME_S : SUMME_L;
67
MG Mud User88f12472016-06-24 23:31:02 +020068 if (Query(P_AUTOLOADOBJ)[1] & V_RAUM)
Arathorn9d788072021-04-26 18:37:19 +020069 req_points = req_points * 4/10;
70
Arathorn3e122612021-04-26 18:34:58 +020071 return break_string(sprintf(
72 "Dies ist ein Bausparvertrag. Du hast bisher %d (von %d) Punkten "
73 "eingezahlt.\n",
Arathorn9d788072021-04-26 18:37:19 +020074 QueryProp(P_AUTOLOADOBJ)[0], req_points));
MG Mud User88f12472016-06-24 23:31:02 +020075}
76
77#if 0
78int query_prevent_shadow(object ob)
79{
80 HLOG("SHADOW", sprintf("%s, von %O im Vertrag.\n", dtime(time())[5..], ob));
81 return 1;
82}
83#endif
84
85int lesen(string str)
86{
87 if (id(str))
88 {
89 if (Query(P_AUTOLOADOBJ)[1] & V_RAUM)
90 this_player()->More(PATH+"txt/vertrag_raum.txt",1);
91 else
92 this_player()->More(PATH+"txt/vertrag.txt",1);
93 return 1;
94 }
95 return 0;
96}
97
98int Einzahlung()
99{
100 int *al;
Arathorneb30a702024-08-27 20:58:29 +0200101 object env;
MG Mud User88f12472016-06-24 23:31:02 +0200102
Arathorneb30a702024-08-27 20:58:29 +0200103 if (old_explode(object_name(previous_object()),"#")[0] != PATH+"sb_einzahlung") {
MG Mud User88f12472016-06-24 23:31:02 +0200104 env = environment();
105 HLOG( (env ? getuid(env) : "BANK.LOG"), sprintf("Vertrag: Einzahlung von aussen! TI = %O, PO = %O\n", this_interactive(), previous_object()));
106 }
107 al = Query(P_AUTOLOADOBJ);
108 return Set(P_AUTOLOADOBJ, ({ al[0]+RATENHOEHE, al[1] }) )[0];
109}
110
111void Sign(int flag)
112{
113 Set(P_AUTOLOADOBJ, ({ Query(P_AUTOLOADOBJ)[0], flag }) );
114}
115
Arathorn7a053952018-11-15 22:07:37 +0100116varargs public int move(object|string dest, int meth)
MG Mud User88f12472016-06-24 23:31:02 +0200117{
118 object penv;
119 int ret;
120
121 penv = environment();
122 ret = ::move(dest, meth);
123
124 if (ret == 1 && (penv || (object_name(previous_object()) != PATH+"sb_antrag" &&
125 object_name(previous_object()) != (stringp(dest) ? dest : object_name(dest)))))
126 HLOG("MOVING", sprintf("Vertrag: von %O -> %O mit %O (%O)\n", environment(), dest, previous_object(), getuid(previous_object())));
127 return ret;
128}
129
130mixed _set_autoloadobj(mixed al)
131{
132 // Loggen, wenn nicht vom Spielerobjekt selber via den
133 // Autoloader-Mechanismus gesetzt.
134 if (previous_object(1)
135 && strstr(load_name(previous_object(1)),"/std/shells") != 0)
136 HLOG("SET_AL",sprintf("Vertrag: TP = %O, PO = %O, ENV = %O\n",
137 this_player(), previous_object(), environment()));
138
139 /* Kompatibilitaet zu alten Vertraegen */
140 if (pointerp(al) && !(al[1] & V_EP)) {
141 al[0] *= 4;
142 al[1] |= V_EP;
143 call_out("notifyChange", 0, this_player());
144 }
145 return Set(P_AUTOLOADOBJ, al);
146}
147
148void notifyChange(object wem)
149{
150 tell_object(wem,
151 "\nNACHRICHT VON DER SEHERBANK:\n"
152 +"Die Vertragsmodalitaeten haben sich geaendert! Bitte lesen Sie den\n"
153 +"Vertrag noch einmal genau durch (insbes. Art. 4)!\n"
154 +"Statt Geld haben Sie jetzt Erfahrungspunkte zu zahlen!\n\n" );
155}
156