#include <sys.h>
object dest;
string name;
string long_desc;
object owner;
int flags;
int special;
self_destruct() { destruct(this_object()); return 1; }
get_special() { return special; }
set_special(s) { special=s; return 1; }
get_flags() { return flags; }
set_flags(f) { flags=f; return 1; }
get_owner() { return owner; }
set_owner(o) { owner=o; return 1; }
get_long() { return long_desc; }
get_type() { return TYPE_EXIT; }
id(arg) { return instr(name,1,";"+arg+";"); }
set_long(arg) {
long_desc=arg;
return 1;
}
get_name() { if (name) return midstr(name,2,strlen(name)-2); }
get_dest() { return dest; }
set_name(arg) {
int pos;
string x;
while (name) {
pos=instr(name,1,";");
x=leftstr(name,pos-1);
name=rightstr(name,strlen(name)-pos);
if (x) remove_verb(x);
}
arg=";"+arg+";";
name=arg;
while (arg) {
pos=instr(arg,1,";");
x=leftstr(arg,pos-1);
arg=rightstr(arg,strlen(arg)-pos);
if (x) add_verb(x,"go");
}
return 1;
}
set_dest(arg) {
dest=arg;
return 1;
}
static go(arg) {
int pos;
string ename;
if (arg) return 0;
if (!dest) {
tell_player(this_player(),"This exit is unlinked.\n");
return 1;
}
ename=get_name();
pos=instr(ename,1,";");
if (pos)
ename=leftstr(ename,pos-1);
call_other(this_player(),"move_player",dest,ename);
return 1;
}
stat() {
tell_player(this_player(),"Object Type: EXIT\n");
if (flags) tell_player(this_player(),"Flags: "+make_flags(flags)+"\n");
if (special) tell_player(this_player(),"Special: "+itoa(special)+"\n");
if (location(this_object()))
tell_player(this_player(),"Location: "+make_num(location(this_object()))+
"\n");
else
tell_player(this_player(),"Location: void\n");
if (name)
tell_player(this_player(),"Name: "+get_name()+"\n");
if (long_desc)
tell_player(this_player(),"Long: "+long_desc+"\n");
if (dest)
tell_player(this_player(),"Linked To: "+make_num(dest)+"\n");
else
tell_player(this_player(),"Linked To: UNLINKED\n");
if (owner)
tell_player(this_player(),"Owner: "+make_num(owner)+"\n");
return 1;
}