From the NannyMUD documentation
door - A door object.
/std/basic_lock
set_here set_there set_master set_type
query_direction query_in_long_short
remove_door
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.