blob: 1985e3b4954891db24756cf7d1044ae950c3ad9d [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{
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
Arathorn7a053952018-11-15 22:07:37 +0100115varargs public int move(object|string dest, int meth)
MG Mud User88f12472016-06-24 23:31:02 +0200116{
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