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 | #include <new_skills.h> |
| 7 | |
| 8 | inherit "std/thing"; |
| 9 | |
| 10 | void create() |
| 11 | { |
| 12 | ::create(); |
| 13 | SetProp( P_NAME, "Stempel des Todes" ); |
| 14 | SetProp( P_GENDER, MALE ); |
| 15 | SetProp( P_SHORT, 0 ); |
| 16 | SetProp( P_INVIS, 1 ); |
| 17 | SetProp( P_NEVERDROP, 1 ); |
| 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 | // Der folgende Code verhindert, dass ein unbedachter Magier im init |
| 47 | // oder exit einen Spieler tötet, und ihn dirket danach movet. |
| 48 | environment()->SetProp(P_TMP_MOVE_HOOK,({time()+10,this_object(),"catch_die_move"})); |
| 49 | } |
| 50 | |
| 51 | varargs int move(mixed dest,mixed method) |
| 52 | { |
| 53 | if (!method & M_NOCHECK) return ME_CANT_BE_DROPPED; |
| 54 | return ::move(dest,method); |
| 55 | } |
| 56 | |
| 57 | int _query_autoloadobj() { return 1; } |
| 58 | |
| 59 | int catch_die_move() { return -1; } |
| 60 | |
| 61 | void init() |
| 62 | { |
| 63 | ::init(); |
| 64 | if (this_player() == environment()) |
| 65 | start_death(); |
| 66 | } |