blob: 8219016dc418a6b8f5f834f84e0a5b4bf61c58bf [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001#pragma strict_types
2
3#include <moving.h>
4#include <properties.h>
5#include <language.h>
6
7inherit "std/thing";
8
9void create()
10{
11 ::create();
12 SetProp( P_NAME, "Stempel des Todes" );
13 SetProp( P_GENDER, MALE );
14 SetProp( P_SHORT, 0 );
15 SetProp( P_INVIS, 1 );
16 SetProp( P_NEVERDROP, 1 );
17 SetProp( P_WEIGHT, 0);
18 AddId(({"death_mark","\ndeath_mark"}));
19}
20
21void reset()
22{
23 ::reset();
24 if (environment() && !query_once_interactive(environment()))
25 remove();
26}
27
28
29/*
30 * Function name: start_death
31 * Description: Start the death sequence.
32 */
33void start_death()
34{
35 if ( !environment() || !query_once_interactive(environment())
36 || !environment()->QueryProp(P_GHOST) )
37 {
38 destruct(this_object());
39 return;
40 }
41
42 say("Du siehst eine dunkle Gestalt, die etwas Dunst einsammelt ... oder vielleicht\n"+
43 "bildest du Dir das auch nur ein ...\n");
44 environment()->move("/room/death/virtual/death_room_"+getuid(environment()),
45 M_GO|M_SILENT|M_NO_SHOW|M_NOCHECK);
46 // direkt in virtuellen Todesraum moven
47}
48
49protected int PreventMove(object dest, object oldenv, int method) {
50 // wenn die marke schon ein Env hat oder der move nicht in einen Spieler
51 // geht, gehts nur mit M_NOCHECK.
52 if ( (environment(this_object()) || !query_once_interactive(dest))
53 && !(method & M_NOCHECK)) {
54 return ME_CANT_BE_DROPPED;
55 }
56
57 return ::PreventMove(dest, oldenv, method);
58}
59
60int _query_autoloadobj() { return 1; }
61
62void init()
63{
64 ::init();
65 if (this_player() == environment())
66 start_death();
67}