// coffin.c
// The outside of the coffin. It's connected by add_action to a room
// which is the inside of the coffin.
#include <mudlib.h>
#define INSIDE_COFFIN "/d/Fooland/coffin_interior.c"
#define VAMPIRE "/d/Fooland/vampire"
#define COFFIN_ROOM "/d/Fooland/tower2"
inherit OBJECT ;
void create() {
object ob ;
seteuid(getuid()) ;
set ("id", ({ "coffin" }) ) ;
set ("short", "a coffin") ;
set ("long", "@@query_long") ;
set ("mass", 12000) ;
set ("bulk", 600) ;
// Load up the vampire if we need to.
ob = find_object_or_load(VAMPIRE) ;
ob = find_object_or_load(INSIDE_COFFIN) ;
move(COFFIN_ROOM) ;
}
void init() {
add_action ("enter_coffin", "enter") ;
add_action ("look_corpse", "look") ;
}
string query_long() {
object inside ;
object *contents ;
int i ;
string str ;
inside = find_object(INSIDE_COFFIN) ;
if (inside && present("vampire",inside)) {
return "It is a mahogany coffin with a purple lining.\nIt contains:\n a pale corpse.\n" ;
} else {
str = "It is a mahogany coffin with a purple lining.\n" ;
contents=all_inventory(find_object_or_load(INSIDE_COFFIN)) ;
for (i=0;i<sizeof(contents);i++) {
if (userp(contents[i])) {
return str+contents[i]->query("cap_name")+" is lying in it.\n" ;
}
}
return str+"It is empty.\n" ;
}
}
int enter_coffin(string str) {
int i ;
if (str && str!="coffin") {
notify_fail("Enter what?\n") ;
return 0 ;
}
i=this_player()->move_player(INSIDE_COFFIN,this_player()->query("cap_name")+" climbs into the coffin.") ;
return 1 ;
}
int look_corpse (string str) {
if (str!="at corpse") return 0 ;
write ("/d/Fooland/vampire.c"->query("long")) ;
return 1 ;
}