blob: 44d9976f47a1c8897534347d63962860c1dc837d [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" }), lambda( ({}),
({#',, ({#'notify_fail, "Hier kannst Du den Vertrag nicht unterschreiben!\n" }),
({#'return, 0})
}) ) );
AddCmd( ({ "zerreiss", "zerreisse" }), lambda( ({ 'str }),
({#',, ({#'notify_fail, "Was willst Du zerreissen?\n"}),
({#'?!, ({#'id, 'str}), ({#'return, 0}) }),
({#'=, 'blk, ({#'present, "\n block", ({#'this_player}) }) }),
({#'write, "Du zerreisst Deinen Vertrag.\n"}),
({#'write_file, PATH+"log/BANK.LOG", ({#'sprintf, "%s - Vertrag: %s zerriss ihn.\n",
({#'dtime, ({#'time}) }), ({#'getuid, ({#'this_player})})})}),
({#'?, 'blk, ({#'call_other, 'blk, "remove", 1}) }),
({#'remove, 1}),
({#'return, 1})
}) ) );
}
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 }) );
}
public int move(mixed 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" );
}