blob: aea7c10320fd95c903fd6ba8ec82c455b4c4d9d7 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// (c) by Padreic (Padreic@mg.mud.de)
2/* Changelog:
3 * 09.11.06 Zesstra
4 object_info()[11] durch query_next_reset() ersetzt.
5 */
6#include "../files.h"
7
8inherit "/std/thing";
9
10static int leichen;
11
12void create()
13{
14 leichen=0;
15 if (!clonep(ME))
16 set_next_reset(-1);
17 else {
18 ::create();
19 SetProp(P_INVIS, 1);
20 SetProp(P_NODROP, 1);
21 SetProp(P_NEVERDROP, 1);
22 AddId(WALDID("leichenmp"));
23 set_next_reset(3600*3); // erster reset nach 3h
24 }
25}
26
27int remove()
28{
29 closure clo;
30 if (environment()) {
31 clo=environment()->Query(P_MAX_SP, F_QUERY_METHOD);
32 if (clo && to_object(clo)==ME)
33 environment()->Set(P_MAX_SP, 0, F_QUERY_METHOD);
34 }
35 destruct(ME);
36 return 1;
37}
38
39int calculate_mp()
40{
41 int mp;
42 switch(leichen) {
43 case 1: mp = 5; break;
44 case 2: mp = 9; break;
45 case 3: mp = 12; break;
46 case 4: mp = 14; break;
47 case 5: mp = 15; break;
48 default: mp = 0;
49 }
50 SetProp(P_X_HEALTH_MOD, ([P_SP:mp]) );
51}
52
53void new_corpse()
54{
55 closure clo;
56 clo=PL->Query(P_MAX_SP, F_QUERY_METHOD);
57 if (clo && to_object(clo)!=ME) {
58 call_out("remove", 0);
59 return;
60 }
61 if (leichen<5) {
62 leichen++;
63 set_next_reset(3600+3);
64 }
65 else set_next_reset( (query_next_reset(ME)-time())+3600 );
66 calculate_mp();
67}
68
69void reset()
70{
71 leichen--;
72 if (environment()) {
73 tell_object(environment(), "Du spuerst wie Deine mentalen Kraefte schwaecher werden...\n");
74 if (environment()->QueryProp(P_SP) > environment()->QueryProp(P_MAX_SP))
75 environment()->SetProp(P_SP, environment()->QueryProp(P_MAX_SP));
76 }
77 calculate_mp();
78 if (leichen<=0)
79 remove();
80 else set_next_reset(3600);
81}