blob: aea7c10320fd95c903fd6ba8ec82c455b4c4d9d7 [file] [log] [blame]
// (c) by Padreic (Padreic@mg.mud.de)
/* Changelog:
* 09.11.06 Zesstra
object_info()[11] durch query_next_reset() ersetzt.
*/
#include "../files.h"
inherit "/std/thing";
static int leichen;
void create()
{
leichen=0;
if (!clonep(ME))
set_next_reset(-1);
else {
::create();
SetProp(P_INVIS, 1);
SetProp(P_NODROP, 1);
SetProp(P_NEVERDROP, 1);
AddId(WALDID("leichenmp"));
set_next_reset(3600*3); // erster reset nach 3h
}
}
int remove()
{
closure clo;
if (environment()) {
clo=environment()->Query(P_MAX_SP, F_QUERY_METHOD);
if (clo && to_object(clo)==ME)
environment()->Set(P_MAX_SP, 0, F_QUERY_METHOD);
}
destruct(ME);
return 1;
}
int calculate_mp()
{
int mp;
switch(leichen) {
case 1: mp = 5; break;
case 2: mp = 9; break;
case 3: mp = 12; break;
case 4: mp = 14; break;
case 5: mp = 15; break;
default: mp = 0;
}
SetProp(P_X_HEALTH_MOD, ([P_SP:mp]) );
}
void new_corpse()
{
closure clo;
clo=PL->Query(P_MAX_SP, F_QUERY_METHOD);
if (clo && to_object(clo)!=ME) {
call_out("remove", 0);
return;
}
if (leichen<5) {
leichen++;
set_next_reset(3600+3);
}
else set_next_reset( (query_next_reset(ME)-time())+3600 );
calculate_mp();
}
void reset()
{
leichen--;
if (environment()) {
tell_object(environment(), "Du spuerst wie Deine mentalen Kraefte schwaecher werden...\n");
if (environment()->QueryProp(P_SP) > environment()->QueryProp(P_MAX_SP))
environment()->SetProp(P_SP, environment()->QueryProp(P_MAX_SP));
}
calculate_mp();
if (leichen<=0)
remove();
else set_next_reset(3600);
}