MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | #pragma strict_types |
| 2 | |
| 3 | #include <moving.h> |
| 4 | #include <properties.h> |
| 5 | #include <language.h> |
| 6 | |
| 7 | inherit "std/thing"; |
| 8 | |
| 9 | void 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 | |
| 21 | void 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 | */ |
| 33 | void 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 | |
| 49 | protected 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 | |
| 60 | int _query_autoloadobj() { return 1; } |
| 61 | |
| 62 | void init() |
| 63 | { |
| 64 | ::init(); |
| 65 | if (this_player() == environment()) |
| 66 | start_death(); |
| 67 | } |