blob: 1985e3b4954891db24756cf7d1044ae950c3ad9d [file] [log] [blame]
/*
* 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" );
}