From the NannyMUD documentation

NAME

        door - A door object.

INHERITS

	/std/basic_lock

FUNCTIONS

SETUP FUNCTIONS

	set_here
	set_there
	set_master
	set_type

QUERY FUNCTIONS

	query_direction
	query_in_long_short

OTHER FUNCTIONS

	remove_door

PROPERTIES

INTERNAL PROPERTIES


PROPERTY NAME

        room_desc - 

DESCRIPTION

	This property can contain the description that appears in the
	long description of the room. If not set the room desc is
	"There is a $S $C to the $X". To have the door not show in
	the room desc set this property to 1.

EXAMPLE

	add_property("room_desc","To the $X is a $S $C");
	add_property("room_desc");	/* no desc in room */

PROPERTY NAME

        check_mess - 

DESCRIPTION

	This property can be set to a new message which is shown
	when a player tries to walk trough a closed door. Normally
	the message is "The $N is closed.\n".

EXAMPLE

	add_property("check_mess","You walk into a closed door.\n");

DESCRIPTION

	The file /std/door.c contains code for making door
	objects. The door is added to the room with add_object(),
	either by having the door in a separate file or by having a
	"@make_door()" function in the room.

	A door must be present in both the rooms that should be
	connected.  Two clones of the door is therefore needed, one in
	each room. That means you must have an add_object() in both
	rooms.  In the door, the rooms and direction is set up with
	the set_here() and set_there() functions, and both are
	required for the room to work properly.

	The description of the door is seen in the long description of
	the room, and this description can be changed with the
	room_desc property. The door will also automatically install
	an exit in the room.

	If no name is set for the door it will name itself after the
	direction where it leads. It is always possible to refer to
	the door with the direction name. In the example below the
	door has the ids "big door", "east door" and "door" in the
	room "outside". If there are several doors in a room each must
	have an unique name, like "north iron door", "west iron door".
	If you want to have a lock on the door use the set_lock()
	function. Read more about that in basic_lock.doc.
	Don't use set_short() unless you want to have the door appear
	in the inventory of the room.

EXAMPLE

	The file "irondoor.c":

	  inherit "/std/door";
	  reset(arg) {
	    ::reset(arg);
	    if (arg) return;
	    set_name("iron door");
	    set_here("east","outside");
  	    set_there("west","treasury");
	    set_lock("abc123");
	  }

	In the reset() function in a room:

	  add_object("irondoor");

	Look in /examples/door/doors1 for more examples of doors.

NOTE

	Don't name the door "door", give it a unique name instead. 
	It already has the id "door" and it can bug if you have
	several doors in a room with set_name("door") or the same
	name.

	Destructing, updating, redoing or refreshing the rooms
	with the doors can make them behave strange. Best thing
	to do is clean away all doors and rooms with destruct and
	update. "redo" doesn't work because the old copy of the
	door isn't destructed.

	Both door clones must have exactly the same calls to set_here
	and set_there, otherwise they don't recognize each other and 
	bugs.  Build the doors as the /example rooms.

FUNCTION


NAME

        set_here - Set the exit for one of the rooms.

SYNTAX

	void set_here(string direction,
                      string where
                      [,string leave_message
                      [,string check_function]]);

DESCRIPTION

	Set the exit of the door in the direction 'direction' in the
	room 'where'. This is opposite of the add_exit semantics.
	The other optional arguments works exactly as add_exit in
	/std/basic_room, except that you must give check_function
	as an eval string, ie. "@check_south()".

EXAMPLE

	set_here("east","outside");
	will make an exit "east" in the	room outside.c and the door
	in that room will have the alias "east door".

NOTE

	This function sets the master room for the door. Set this for
	the room which the player is most likely to enter first. Both
	set_here and set_there must be set up for a door.

FUNCTION


NAME

        set_there - Set the exit for the other of the rooms.

SYNTAX

	void set_there(string direction,
                      string where
                      [,string leave_message
                      [,string check_function]]);

DESCRIPTION

	Set the exit of the door in the direction 'direction' leading
	to the room 'where'. Otherwise it works exactly as add_exit
	in /std/basic_room, except that you must give check_function
	as an eval string, ie. "@check_south()".

NOTE

	Both set_here and set_there must be set up for a door.

FUNCTION


NAME

        set_master - Set master door.

SYNTAX

	void set_master(string master, string where)

DESCRIPTION

	Sets which master door and room this door have. It makes this
	door a copy. By using this function it is possible to have
	different door files with different descriptions, locks and
	functions.

EXAMPLE

	In file irondoor_front.c
	  set_name("iron door");
	  set_long("This is a big iron door with strange symbols on it.\n");
  	  set_here("east","outside");
  	  set_there("west","treasury");

	In file irondoor_backside.c
	  set_name("black door");
	  set_long("This is a door painted in black.\n");
  	  set_here("east","outside");
  	  set_there("west","treasury");
	  set_master("iron door","outside");

FUNCTION


NAME

        set_type - Set the type of the door.

SYNTAX

	void set_type(string type)

DESCRIPTION

	If you want to set the type of the door to something else than
	"door",	for example "hatch" or "gate", you can use this function.
	If you set the type to 0, the door only has the id set by
	set_name(), which can be useful in hidden doors.

SEE ALSO

        hidden_door in std/misc/hidden_door

FUNCTION


NAME

        query_direction - 

SYNTAX

	string query_direction();

DESCRIPTION

	Returns the exit direction for the door.

FUNCTION


NAME

        query_in_long_short - 

SYNTAX

	string query_in_long_short();

DESCRIPTION

	Returns the short description of the door that shows in the
	long description of the room.

FUNCTION


NAME

        remove_door - 

SYNTAX

	string remove_door();

DESCRIPTION

	This function destructs the door and makes the exits open
	passages.