#define EXTRA_MOVE /* nothing */ string name,short_desc,long_desc,dir1,dir2,dest; id(s) { if(!s) return; return(s==name); } short() { return short_desc; } long() { write(long_desc); } init() { if(name) add_action("enter","enter"); if(dir1) add_action("go_room",dir1); if(dir2) add_action("go_room",dir2); } set_name(s) { name=s; } set_short(s) { short_desc=s; } set_long(s) { if(s) long_desc=s; } set_dirs(d1,d2) { if(d1) { dir1=d1; dir2=d2; } } set_dest(s) { if(s) dest=s; } enter(s) { if(!id(s)) return; EXTRA_MOVE this_player()->move_player("into the "+name+"#"+dest); return 1; } go_room() { EXTRA_MOVE this_player()->move_player(dir1+"#"+dest); return 1; } reset(arg) { if(arg) return; dest="room/church"; long_desc="You see nothing special.\n"; }