#include "boot.clh" object EXIT parents DESCRIBED_OBJ; name = "Generic Exit"; obj source; /* source room */ obj dest; /* destination room */ str leave; /* message displayed to user on leaving */ str oleave; /* message displayed to others on leaving */ str arrive; /* message displayed to user on arriving */ str oarrive; /* message displayed to others on arriving */ method init if (this == EXIT) this.add_owner(WIZARD); elseif (PERMS_OK) source = NOTHING; dest = NOTHING; pass(); else raise E_PERM; endif endmethod /* init */ method destroy if (PERMS_OK || caller == source) source.rm_exit(this); pass(); else raise E_PERM; endif endmethod method match return match_full(name, args[1], ";"); endmethod /* match */ method dest return dest; endmethod /* dest */ method set_dest if (PERMS_OK) dest = args[1]; else raise(E_PERM); endif endmethod method set_source if (PERMS_OK) source = args[1]; else raise(E_PERM); endif endmethod method activate /* * activate the exit */ var pname; ignore E_SERVERDN; pname = player.name; /* * display leave messages in old room */ if (dest.name == E_SERVERDN) player.tell("You can't go that way right now."); return; elseif (!player.moveto(dest, leave, oleave, arrive, oarrive)) player.tell("You can't go that way."); return; endif endmethod /* activate */ endobject /* EXIT */