[an error occurred while processing this directive]
[<a href="index.shtml">Package Index</a></code> | <a href="index_std.shtml">Mudlib Index</a></code> | <a href="index_eff.shtml">Effect Index</a></code>]<br><h2>File /std/room/basic_room.c</h2>
The standard room inheritable.  This contains all the stuff needed to
construct a standard room.<p><b>See also:</b><br>/std/room/outside.c
<br /><p>Written by Pinkfish<h2>Inherits</h2>
This class inherits the following classes /std/basic/id_match.c, /std/basic/help_files.c, /std/basic/extra_look.c, /std/basic/light.c, /std/basic/init.c, /std/basic/desc.c, /std/basic/cute_look.c, /std/basic/property.c, /std/basic/effects.c, /std/room/basic/wall.c, /std/basic/export_inventory.c and /std/room/basic/linker_base.c<h2>Includes</h2>
This class includes the following files /include/position.h, /include/armoury.h, /include/nroff.h, /include/map_handler.h, /include/dirs.h, /include/room.h, /include/cmds/bury.h, /include/situations.h, /include/obj_parser.h, /include/move_failures.h, /include/door.h and /include/weather.h<h2>Method index</h2>
<ul>
<li><a href="#add_alias">add_alias</a>(mixed, string)<br/>
This method adds an exit alias to the room.
<li><a href="#add_day_item">add_day_item</a>(mixed, mixed, mixed)<br/>
This method sets up an item which will only be displayed during the
day.
<li><a href="#add_enchant">add_enchant</a>(int)<br/>
Adds number to the current enchantment level of the room.
<li><a href="#add_exit">add_exit</a>(string, mixed, string)<br/>
This method adds an exit to the room.
<li><a href="#add_hidden_object">add_hidden_object</a>(object)<br/>
This puts a hidden object into a room.
<li><a href="#add_item">add_item</a>(mixed, mixed, int)<br/>
This method adds an item description to a room.
<li><a href="#add_night_item">add_night_item</a>(mixed, mixed, mixed)<br/>
This method sets up an item which will only be displayed during the
night.
<li><a href="#add_room_chats">add_room_chats</a>(string *)<br/>
Adds more chats to the existing set of room chats
managed by this chatter object.
<li><a href="#add_room_day_chat">add_room_day_chat</a>(string)<li><a href="#add_room_night_chat">add_room_night_chat</a>(string)<li><a href="#add_sign">add_sign</a>(string, mixed, string, mixed, string)<br/>
This method adds a sign into the room.
<li><a href="#add_situation">add_situation</a>(mixed, class situation)<br/>
Adds a situation to the room.
<li><a href="#add_use_internal_object">add_use_internal_object</a>(object)<br/>
This method adds an object whose interior bits want to be able to export
commands.
<li><a href="#add_zone">add_zone</a>(string)<br/>
This method adds a move zone into the current list of movement zones
for the room.
<li><a href="#attack_speed">attack_speed</a>()<br/>
This method sets the default attack speed for the room.
<li><a href="#automate_situation">automate_situation</a>(mixed, mixed, mixed, mixed, mixed)<br/>
Automate starting and ending of a situation.
<li><a href="#calc_co_ord">calc_co_ord</a>()<br/>
This method calculates the co-ordinates of this room.
<li><a href="#calc_exits">calc_exits</a>()<br/>
This method calculates all the exit strings to be used for this room.
<li><a href="#calc_long_exit">calc_long_exit</a>()<br/>
This method creates the long exit description used in the room long
descriptions.
<li><a href="#calc_short_exit_string">calc_short_exit_string</a>()<br/>
This method returns the exit string used when in brief mode.
<li><a href="#calc_short_exit_string_mxp">calc_short_exit_string_mxp</a>()<br/>
This method returns the exit string used when in brief mode, but with MXP.
<li><a href="#can_use_for_co_ords">can_use_for_co_ords</a>(string)<br/>
This method is designed to allow a little more flexability in which rooms
can be used for co-ordinates.
<li><a href="#change_situation">change_situation</a>(mixed, mixed, mixed)<br/>
Starts one or more situations that will end after a
specified duration.
<li><a href="#check_day_night_switch">check_day_night_switch</a>(int)<li><a href="#end_situation">end_situation</a>(mixed)<br/>
Ends a situation previously added and started on the room.
<li><a href="#expand_alias">expand_alias</a>(string)<li><a href="#find_inv_match">find_inv_match</a>(string, object)<br/>
This method returns all the matchable objects in the room.
<li><a href="#flesh_map">flesh_map</a>(string)<li><a href="#flush_co_ord">flush_co_ord</a>()<br/>
This method resets the co-ordinates for the room to zero, and resets
a flag so that calc_co_ord() can be called again to redetermine
the room's co-ordinates.
<li><a href="#is_allowed_position">is_allowed_position</a>(string)<br/>
This method tells us if the passed i nposition is
allowed in this type of room.
<li><a href="#lookmap">lookmap</a>()<li><a href="#make_situation_seed">make_situation_seed</a>(int, int)<br/>
Makes a seed value for the random part of when
situations turn on and off.
<li><a href="#modify_exit">modify_exit</a>(mixed, mixed *)<br/>
This method modifies the parameters for the exit.
<li><a href="#modify_item">modify_item</a>(mixed, mixed)<br/>
This method will modify certain bits of the specified item.
<li><a href="#query_aliases">query_aliases</a>()<br/>
This method returns the current exit aliases for the room.
<li><a href="#query_background_enchant">query_background_enchant</a>()<br/>
This method returns the background enchantment of the room.
<li><a href="#query_bright_mess">query_bright_mess</a>()<br/>
This method returns the message to use when it is too bright to see in
the room.
<li><a href="#query_chatter">query_chatter</a>()<br/>
This method returns the current chatter object.
<li><a href="#query_co_ord">query_co_ord</a>()<br/>
Returns the current co-ordinates of the room.
<li><a href="#query_co_ord_calculated">query_co_ord_calculated</a>()<br/>
This tells us if the co-ordinates were set or if they were calculated.
<li><a href="#query_cover_percentage">query_cover_percentage</a>()<br/>
This is the code to use to determine how much cover the room has.
<li><a href="#query_dark_mess">query_dark_mess</a>()<br/>
This is the message to print instead of the room description when the
room is dark.
<li><a href="#query_day">query_day</a>()<br/>
This method returns whether or not it is daytime.
<li><a href="#query_day_items">query_day_items</a>()<br/>
These are the items only visible during the day.
<li><a href="#query_day_long">query_day_long</a>()<br/>
This method returns the long description of the room during the day.
<li><a href="#query_default_position">query_default_position</a>()<br/>
This method returns the current default position asigned to this
room.
<li><a href="#query_dest_dir">query_dest_dir</a>(object)<br/>
Returns an array containing just the destinations and directions used to
get there.
<li><a href="#query_dest_other">query_dest_other</a>(string)<br/>
This returns information about the exits in the room.
<li><a href="#query_destination">query_destination</a>(string, object)<br/>
This method returns the destination room for an exit.
<li><a href="#query_direc">query_direc</a>(object)<br/>
This method just returns all the directions available to leave from
the room.
<li><a href="#query_door">query_door</a>(mixed, string)<br/>
This method determines if the specified exit is a door or not.
<li><a href="#query_door_control">query_door_control</a>(string, string)<br/>
This returns the information about the door in the specified direction.
<li><a href="#query_door_open">query_door_open</a>(string)<br/>
This method checks to see if the door is open.
<li><a href="#query_dynamic_enchant">query_dynamic_enchant</a>()<br/>
This method returns the current dynamic enchantment of the room.
<li><a href="#query_enchant">query_enchant</a>()<br/>
Returns the current enchantment level of the room.
<li><a href="#query_exit">query_exit</a>(string)<br/>
This method determines if there is an exit in the specified direction.
<li><a href="#query_exits">query_exits</a>()<br/>
This returns the current array of exits.
<li><a href="#query_hidden_objects">query_hidden_objects</a>()<br/>
This returns the current array of hidden objects.
<li><a href="#query_is_room">query_is_room</a>()<br/>
Returns 1 to indicate that this object is a room.
<li><a href="#query_item">query_item</a>()<br/>
This method returns the current item object.
<li><a href="#query_keep_room_loaded">query_keep_room_loaded</a>()<br/>
This method returns the status of the keep room loaded flag.
<li><a href="#query_linker">query_linker</a>()<br/>
This method returns the current linker object.
<li><a href="#query_long_exit">query_long_exit</a>()<br/>
This returns the long exit string.
<li><a href="#query_long_exit_mxp">query_long_exit_mxp</a>()<br/>
This returns the long exit string with mxp codeds added.
<li><a href="#query_look">query_look</a>(string)<li><a href="#query_look_func">query_look_func</a>(string)<li><a href="#query_nice_relative">query_nice_relative</a>(string)<br/>
This method checks to see if the exit is a relative one.
<li><a href="#query_night_items">query_night_items</a>()<br/>
These are the items only visible at night.
<li><a href="#query_night_long">query_night_long</a>()<br/>
This method returns the long description of the room at night.
<li><a href="#query_not_replaceable">query_not_replaceable</a>()<br/>
This method checks to see if the program is replaceable.
<li><a href="#query_not_replaceable_inherit">query_not_replaceable_inherit</a>()<br/>
This method checks to see if the inherit is replaceable (that is, only
setup() is replaceable, and not create()).
<li><a href="#query_notrack">query_notrack</a>()<br/>
This method returns the value of no_track flag associated with the room.
<li><a href="#query_relative">query_relative</a>(string)<br/>
This method checks to see if the exit is a relative one.
<li><a href="#query_room_chats">query_room_chats</a>()<br/>
Returns the current set of room chats
managed by the chatter object.
<li><a href="#query_room_day_chats">query_room_day_chats</a>()<br/>
This returns the set of chats visible only during the day.
<li><a href="#query_room_default_chats">query_room_default_chats</a>()<br/>
This returns the default set of chats, these are mixed with the night
and day chats to generate the current set.
<li><a href="#query_room_night_chats">query_room_night_chats</a>()<br/>
This returns the set of chats visible only at night.
<li><a href="#query_room_size">query_room_size</a>()<br/>
This method queries the size of the room.
<li><a href="#query_room_size_array">query_room_size_array</a>()<br/>
This method returns the size of the room as a three element array always.
<li><a href="#query_short_exit_string">query_short_exit_string</a>()<br/>
This method returns the short exit string.
<li><a href="#query_short_exit_string_mxp">query_short_exit_string_mxp</a>()<br/>
This method returns the short exit string, but with MXP codes.
<li><a href="#query_situation_changer">query_situation_changer</a>()<br/>
This method returns the current situation changer object.
<li><a href="#query_size">query_size</a>(string)<br/>
This method returns the size of the exit.
<li><a href="#query_terrain">query_terrain</a>()<br/>
This method returns the current terrain object.
<li><a href="#query_theft_handler">query_theft_handler</a>()<br/>
This method returns the current theft handler for the room.
<li><a href="#query_tracking">query_tracking</a>()<br/>
This method returns the array of tracking data stored in this room.
<li><a href="#query_use_internal_objects">query_use_internal_objects</a>()<br/>
This method returns all the current use internal objects available.
<li><a href="#query_visibility">query_visibility</a>()<br/>
This method returns the visibility in this room.
<li><a href="#query_zones">query_zones</a>()<br/>
This method returns the set of move zones for this room.
<li><a href="#remove_alias">remove_alias</a>(mixed, string)<br/>
This method removes the exit aliases from the room.
<li><a href="#remove_exit">remove_exit</a>(string)<br/>
This method removes the specified exit from the room.
<li><a href="#remove_hidden_object">remove_hidden_object</a>(object)<br/>
This method removes a hidden object.
<li><a href="#remove_item">remove_item</a>(mixed)<br/>
This method will attempt to remove the item defined by the given string.
<li><a href="#remove_room_chats">remove_room_chats</a>(string *)<br/>
Removes chats from the set of room chats
managed by this chatter object.
<li><a href="#remove_use_internal_object">remove_use_internal_object</a>(object)<br/>
This method removes an object whose interor bits want to export.
<li><a href="#remove_zone">remove_zone</a>(string)<br/>
This method removes a move zone from the current list of movement zones
for the room.
<li><a href="#reset_exits">reset_exits</a>()<br/>
This method removes all the current exits in the room.
<li><a href="#room_chat">room_chat</a>(mixed *, object)<br/>
This method sets up the room chats.
<li><a href="#room_day_chat">room_day_chat</a>(mixed *)<br/>
This method sets up chats for when the room is in the day cycle.
<li><a href="#room_night_chat">room_night_chat</a>(mixed *)<br/>
This method sets up chats for when the room is in the night cycle.
<li><a href="#search_result">search_result</a>(class obj_match)<br/>
This is called if no searched-for object could handle the search, so that you
can still get things done by overriding.
<li><a href="#set_background_enchant">set_background_enchant</a>(int)<br/>
This method sets the background enchantment of the room.
<li><a href="#set_bright_mess">set_bright_mess</a>(string)<br/>
This method sets the bright message associated with the room.
<li><a href="#set_calculated_co_ord">set_calculated_co_ord</a>(int *)<br/>
This method should be used for setting pre-calculated co-ordinates.
<li><a href="#set_chat_min_max">set_chat_min_max</a>(int, int)<br/>
Allows the chat interval to be changed.
<li><a href="#set_co_ord">set_co_ord</a>(int *)<br/>
Sets the current co-ordinates of the room.
<li><a href="#set_cover_percentage">set_cover_percentage</a>(int)<br/>
This is the code to use to determine how busy the room is.
<li><a href="#set_dark_mess">set_dark_mess</a>(string)<br/>
This method sets the dark message associated with the room.
<li><a href="#set_day_long">set_day_long</a>(mixed)<br/>
This method sets the long description to display during the day time.
<li><a href="#set_default_position">set_default_position</a>(mixed)<br/>
This method sets the default position for the room.
<li><a href="#set_dynamic_enchant">set_dynamic_enchant</a>(float)<br/>
This method sets the current dynamic enchantment of the room.
<li><a href="#set_enchant">set_enchant</a>(int)<br/>
Sets the current enchantment level of the room.
<li><a href="#set_is_day">set_is_day</a>(int)<li><a href="#set_keep_room_loaded">set_keep_room_loaded</a>(int)<br/>
This method sets the flag that enables or disables the room being
cleaned up.
<li><a href="#set_linker">set_linker</a>(string *, string, string, string)<br/>
This method sets up a linkage between the current room and othert
rooms.
<li><a href="#set_night_long">set_night_long</a>(mixed)<br/>
This method sets up the night long for the room.
<li><a href="#set_not_replaceable">set_not_replaceable</a>(int)<br/>
This method sets a property to make the program replaceable.
<li><a href="#set_not_replaceable_inherit">set_not_replaceable_inherit</a>(int)<br/>
This method sets a property to make the program replaceable only if it
contains a setup() and no other functions.
<li><a href="#set_notrack">set_notrack</a>(int)<br/>
This method turns the no_track flag on/off for the room.
<li><a href="#set_room_size">set_room_size</a>(mixed)<br/>
This method sets the rooms principle radii.
<li><a href="#set_situation_changer">set_situation_changer</a>(mixed)<br/>
Set a situation changer (in place of the default).
<li><a href="#set_terrain">set_terrain</a>(string)<li><a href="#set_theft_handler">set_theft_handler</a>(string)<br/>
This method sets the current theft handler for the room.
<li><a href="#set_zone">set_zone</a>(string)<br/>
This method adds a move zone into the current list of zones.
<li><a href="#shutdown_all_situations">shutdown_all_situations</a>()<br/>
Shuts down all current and pending situations.
<li><a href="#shutdown_situation">shutdown_situation</a>(int, mixed)<br/>
Shuts down a situation or set of situations initiated with
change_situation based on the call_out handle
returned by the call to change_situation.
<li><a href="#start_situation">start_situation</a>(int, int)<br/>
Starts a situation previously added to the room.
<li><a href="#stop_room_chats">stop_room_chats</a>()<br/>
This method stops all the room chats for the room.
<li><a href="#track_trigger">track_trigger</a>(object, string, object)</ul>
<h2>Public Functions</h2>
These are functions that everyone can access.<p>
<dl>
<dt class="autodocfuncname"><a name="add_alias">
add_alias</a><pre class="autodocfuncdef">
void add_alias(mixed names,
               string word)
</pre><dd><br />
This method adds an exit alias to the room.
Aliases are convenient extra forms that can be attached to certain
exits. In the above functions, the variable names is either a string
or an array of strings and is, respectively, the alias or aliases
for the direction passed in word. Since, sometimes, the same alias
could be used for more than one exit, remove_alias() requires both
alias(es) and direction in order to remove the correct alias(es).<br />
<br /><dl>
<dd><b>Parameters:</b><br />
names - the exit names to alias<br />
word - the name to alias them too<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_aliases">query_aliases()</a> and <a href="#remove_alias">remove_alias()</a><br /><br /><dd><b>Example:</b>
<br/><pre>add_exit( "north", PATH +"dining_hall", "corridor" );
add_alias( ({ "enter", "enter hall", "enter dining hall" }), "north" );</pre><br/><pre>
add_exit( "board carriage", PATH +"carriage", "door" );
add_alias( "board", "board carriage" );
</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_day_item">
add_day_item</a><pre class="autodocfuncdef">
varargs int add_day_item(mixed shorts,
                         mixed desc,
                         mixed no_plural)
</pre><dd><br />
This method sets up an item which will only be displayed during the
day.  All of the standard add_item things are available with this
method.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="std.room.c.shtml#add_item">/std/room->add_item()</a> and <a href="#add_night_item">add_night_item()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_enchant">
add_enchant</a><pre class="autodocfuncdef">
int add_enchant(int number)
</pre><dd><br />
Adds number to the current enchantment level of the room.
The enchanment level controls things like what happens when you
flip coins and some special messages which give wizards some
idea about magic levels.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
number - the new enchantment level to set<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_enchant">query_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_exit">
add_exit</a><pre class="autodocfuncdef">
int add_exit(string direc,
             mixed dest,
             string type)
</pre><dd><br />
This method adds an exit to the room.   The direction is the direction in
which the exit should go.  This is something like "north" or "enter
gate".  The destination field is where the player will go when they
enter the exit.  The type is a set type that sets a whole bunch of
defaults for the room.  The destination can be either a strong
or an object.
<p>
The types are controlled by /obj/handlers/room_handler.c and the current
types and what this all means are:
<dl>
<dd>
<dl>
<dt>road
<dd>Wide road.
<dt>path
<dd>Narrower path
<dt>door
<dd>And exit with a door.  Defaults to closed but not locked.
<dt>secret
<dd>A secret door.  Defaults to closed but not locked.
<dt>corridor
<dd>A corridor (bing).
<dt>hidden
<dd>A hidden exit without a door
</dl>
</dl>
<p>
The room aliases are used to expand things for exits.  However they
don't expand the entire exit name.  They expand it in bits.  For
instance, if the exit was "enter live eel", you could
add_alias("eel", "live eel"); and add_alias("bing", "enter"); to
get both of the bits of the exit.  So "bing eel", "enter eel",
"bing live eel" etc would work.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()</a>, <a href="#query_dest_dir">query_dest_dir()</a>, <a href="#remove_exit">remove_exit()</a> and /obj/handlers/room_handler
.c<br /><br /><dd><b>Example:</b>
<br/><pre>add_exit("north", PATH + "market2", "road");
add_alias("eel", "live eel");
add_exit("enter live eel", PATH + "live_eel", "secret");</pre><br/><pre>
object fluffy_room;

fluffy_room = clone_object(PATH + "fluffy_room");
add_exit("north", fluffy_room, "road");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_hidden_object">
add_hidden_object</a><pre class="autodocfuncdef">
int add_hidden_object(object thing)
</pre><dd><br />
This puts a hidden object into a room. A hidden object is an object that
exists in the room as far as all the find_match calls go. So, for look at's
and so on, but does not actually exist in the room so it does not show up
in the inventory when the player does a look. This is the method used for
putting signs and doors into rooms, that actually have shorts and you can
do things to, but do not show up in the inventory. The function init is also
called on these objects when init is called in the room. The only thing you
cannot put in your init function is an add_action. You can however define
up bunches of add_commands...
<p>
If this sounds complicated. Think of it as an object that IS in the room, but
you cannot see it.
<p>
A word of warning here, the init() function will *not* be called on all
the players when the object is added as hidden.  This means that the
commands on it will not be available until the player re-enters the room.
You could get around this by moving everyone out of the room and
then back in again.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - the hidden object to add<br />
<br />
<dd><b>Returns:</b>
<br />1 if successful, 0 on a failure
<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_hidden_object">query_hidden_object()</a> and <a href="#remove_hidden_object">remove_hidden_object()</a><br /><br /><dd><b>Example:</b>
<br/><pre>#include <room.h>
sign = clone_object(PATH + SIGN);
add_hidden_object(sign);</pre><br/><pre>
// Add a hidden object that has actions we want players to be able to
// use.
add_hidden_object(fluffy_container);
players = filter(all_inventory(), (: living($1) :));
players->move(ROOM_VOID);
// This forces init() to be recalled.  (This is realtivatively icky
// way of doing it, but the driver does not give us many alternatives).
players->move(this_object());</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_item">
add_item</a><pre class="autodocfuncdef">
varargs int add_item(mixed shorts,
                     mixed desc,
                     int no_plural)
</pre><dd><br />
This method adds an item description to a room.  This allows you to
set up objects which do not as such exist, but can be looked at for
instance.  There should be a lot of these in rooms.  The name of
the item can be multiple word, and the plural for it is
automagicaly added, unless the no_plural flag is set.  If the name
is an array all of the elements in the array respond to the
description.
<p>
If the desc is set to an array, you can use this for handling
things like read messages and so on too.  Every second element in
the array is the description/text to be printed and the other
element is the command upon which the text should be printed.  The
special command 'long' is used to set the long description.
<p>
The special type 'position' is used to allow people to use that
item to do positions on, like stand, sit, lie etc.
<p>
This method also allows you to setup add_command patterns.  If the
name after the verb is just a string, then the string will be printed
when that verb is used.  If it is just a function pointer then the
function will be evaluated and the return result printed.  If it
is an array, then the first element must be a function pointer and
the second optional element is the pattern to use for that method.
Multiple patterns and functions may be specified.
<p>
The first element in the short desc array will be used if someone
glances at the item, so you should try and make that the most complete
form of the short.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
shorts - the short description of the item<br />
desc - the description of the item<br />
no_plural - do not automaticaly add a plural for the item<br />
<br />
<dd><b>Returns:</b>
<br />1 if successfully added, 0 if not<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_item">query_item()</a>, <a href="#remove_item">remove_item()</a> and <a href="#modify_item">modify_item()
</a><br /><br /><dd><b>Example:</b>
<br/><pre>add_item("green pot plant", "It is a nasty green pot plant lurking by "
                            "the door.\n");</pre><br/><pre>
add_item(({ "telephone", "red phone" }),
         "Sitting in the corner is the red phone, it is staring unhappily "
         "into space thinking of cupcakes and better times.\n");</pre><br/><pre>
add_item("small book", ({ "long", "A small red book with dots on the
                                  "cover.\n",
                          "read", "It says 'Rabbit!' in big letters.\n" }) );</pre><br/><pre>
add_item("green leather couch",
         ({ "long", "The green leather couch is wonderful , so comfy!  "
                    " So... Comfy!\n",
            "position", "the green leather couch" }) );</pre><br/><pre>
add_item("rotating hologram", (: query_current_hologram_string() :));</pre><br/><pre>
add_item("glue stick",
         ({ "long", "The glue stick looks sticky, like you could slime "
                    "something with it.\n",
            "slime", ({ (: do_slime :),
                        "<indirect:living> with <direct:object>" }) }) );</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_night_item">
add_night_item</a><pre class="autodocfuncdef">
varargs int add_night_item(mixed shorts,
                           mixed desc,
                           mixed no_plural)
</pre><dd><br />
This method sets up an item which will only be displayed during the
night.  All of the standard add_item things are available with this
method.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="std.room.c.shtml#add_item">/std/room->add_item()</a> and <a href="#add_day_item">add_day_item()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_room_chats">
add_room_chats</a><pre class="autodocfuncdef">
void add_room_chats(string * new_chats)
</pre><dd><br />
Adds more chats to the existing set of room chats
managed by this chatter object.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
new_chats - an array of new chat strings<br />
<br />
<dd><b>See also:</b>
<br />remove_room_chats.c, query_room_chats.c and /std/room/basic/chatter
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_room_day_chat">
add_room_day_chat</a><pre class="autodocfuncdef">
int add_room_day_chat(string str)
</pre>
<dt class="autodocfuncname"><a name="add_room_night_chat">
add_room_night_chat</a><pre class="autodocfuncdef">
int add_room_night_chat(string str)
</pre>
<dt class="autodocfuncname"><a name="add_sign">
add_sign</a><pre class="autodocfuncdef">
varargs object add_sign(string sign_long,
                        mixed sign_read_mess,
                        string sign_short,
                        mixed sign_name,
                        string sign_language)
</pre><dd><br />
This method adds a sign into the room.  Any of these elements can
be set to 0, except the long description.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
sign_long - the long description of the sign<br />
sign_read_mess - the readable message on the sign<br />
sign_short - the short description of the sign<br />
sign_name - the name of the sign<br />
sign_language - the language the sign is written in<br />
<br />
<dd><b>Returns:</b>
<br />the object for the sign
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="add_situation">
add_situation</a><pre class="autodocfuncdef">
void add_situation(mixed label,
                   class situation sit)
</pre><dd><br />
Adds a situation to the room.  These situations can be
invoked manually with start_situation or automatically via
automate_situation.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
label - string or number labelling the situation<br />
sit - a structure (class) containing all the bits
of the situation you want to add.  It should be a
variable of class situation.  You should include
situations.h where this class is defined.
Every part is optional.
eg.
start_func  function to be called at start of situation
            that might be used to load NPC's or anything
            beyond a message.

            The start function is passed the label,
            a do_start_mess flag and the room object.
            If the flag is 1 the situation is starting
            rather than being reloaded.  Thus if
            do_start_mess is 0 then you should avoid
            any obvious start messages and make it look
            like the situation is already underway.

end_func    function to be called an the end of a situation.
            The end function is only
            passed the label and the room object.

start_mess  message told to the room at start of situation

end_mess    message told to the room at end of situation

extra_look  extra look string appended to rooms long
            during the situation
chat_rate   an array of 2 numbers giving the minimum and
            maximum delay between chats.  If this is set
            then the chats are not merged with the
            existing chats but added independently with
            their own chat rates as given.

chats       an array of chat strings to be active
            during the situation

add_items   a mixed array of ({ item, item description })
            pairs to be active during the situation

random_words  sets of words to insert into text to replace
              the special character #n where n is a number.
            The form of the array is ({  #1array, #2array, ... })
            where #1array = ({ "#1word1","#1word2",... }) etc.
            For the duration of the situation one of the strings
            in #1array is used to replace all instances of #1
            in the extra_look, start_mess, end_mess, chats
            and key and the long description part of the add_items.
            In a situation compounded of many situations
            the same random seed is used for choosing all #1's
            for each individual situation for the duration,
            and a different seed for all #2's etc.
<br />
<br />
<dd><b>See also:</b>
<br />start_situation.c, end_situation.c, automate_situation.c, change_situation.c, add_item.c, room_chat.c, add_extra_look.c, set_situation_changer.c, make_situation_seed.c, /include/situation.h and goto learning  search  situation  for working examples.c<br /><br /><dd><b>Example:</b>
<br/><pre>#include <situations.h>

class situation frogs;
frogs = new(class situation,
    start_mess: "Water seeps out of the ground to form puddles.",
    extra_look: "There are large puddles on the ground here.",
    chat_rate: ({ 120,180 }),
    chats: ({"A hidden frog croaks quietly.",
             "There is a blooping sound." }),
    add_items:({ ({"puddle", "The puddles are dark and murky.  "
                   "They will probably dry up given time." }) }) );
add_situation( "frogs", frogs );
</pre><br/><pre>
add_situation( "ship", new(class situation,
     start_mess: "A #1 ship hoves into view.",
     extra_look: "There is a #1 ship forging up the river.",
     chats: ({"The #1 ship's sails flap in the breeze.",
              "Shouts of sailors carry over to you from the #1 ship." }),
     add_items: ({ ({"ship", "The #1 ship, the \"#2\" is a small "
                   "sailing vessel that transports cargo up and "
                   "down the river."}) }),
     random_words: ({ ({ "old","waterlogged","heavily laden" }),
                      ({ "Jemima", "Old Sea Dog", "Randy Mermaid" }) })
     ) );
When the situation is started a random choice (eg. "old") replaces #1
and a name (eg. "Jemima") replaces #2 in the text strings for
the duration.
</pre><br/><pre>
add_situation( "frogs", new(class situation,
     start_mess: "Water seeps out of the ground to form puddles.",
     extra_look: "There are large puddles on the ground here.",
     chats: ({"A hidden frog croaks quietly.",
              "There is a blooping sound." }),
     add_items: ({ ({"puddle", "The puddles are dark and murky.  "
                     "They will probably dry up given time." }) }) ));</pre><br/><pre>
This is an empty situation, useful for making pauses in the action.
add_situation( "pause", new(class situation) );
</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_use_internal_object">
add_use_internal_object</a><pre class="autodocfuncdef">
void add_use_internal_object(object thing)
</pre><dd><br />
This method adds an object whose interior bits want to be able to export
commands.  You can use this for tables an so on, so that stuff on a table
can still be used.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - the thing whose inventory bits are to be exported
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="add_zone">
add_zone</a><pre class="autodocfuncdef">
void add_zone(string zone)
</pre><dd><br />
This method adds a move zone into the current list of movement zones
for the room.  The move zones are used by npcs to see which rooms they
are allowed to move into.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#set_zone">set_zone()</a>, <a href="#query_zones">query_zones()</a> and <a href="obj.monster.c.shtml#add_move_zone">/obj/monster->add_move_zone()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="attack_speed">
attack_speed</a><pre class="autodocfuncdef">
int attack_speed()
</pre><dd><br />
This method sets the default attack speed for the room.
This defaults to 15.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the default attack speed
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="automate_situation">
automate_situation</a><pre class="autodocfuncdef">
varargs void automate_situation(mixed label,
                                mixed duration,
                                mixed when,
                                mixed chance,
                                mixed category)
</pre><dd><br />
Automate starting and ending of a situation.
These situations can be invoked manually with start_situation.
The automated starting and ending is unaffected by the room
unloading.  When the room reloads the situation will be
restarted unless its duration is up.
You must include the file situations.h for the definitions
of the when masks.  The random seed needs to be set
consistently for the situations.  This is probably ok
unless your rooms are clones (see make_situation_seed).<br />
<br /><dl>
<dd><b>Parameters:</b><br />
label - (mixed) label of the situation to start
 up.  If you pass an array such as ({ "frog1", "frog2" }) for the
label then that set of situations are started one at
a time and the total duration is split evenly between them.
Label is usually an integer or a string or an array of
integers and/or strings.
If the string is a list of labels
separated by , then multiple situations
are started using those labels.<br />
duration - (int) total time (seconds) the overall situation
should last.  You can put an array of durations -- one for each
situation if the label lists more than one situation and then
the overall time is the sum of the numbers.
-1 is a special duration.  It means that the situaton given that
duration is not part of the set but a special background or
default situation that occurs all the time except when
this automated situation is going.<br />
when - (int) a time of the day mask.  This limits when
the situation is allowed to occur.  The mask is composed of
the allowed hours in AM time ( 24 hours clock, (1<<hour) and
combined with | (OR) ).   You can just use these
predefined masks and ignore how it works:
 WHEN_WEE_HOURS, WHEN_EARLY_MORNING, WHEN_LATE_MORNING, WHEN_AFTERNOON
 WHEN_EVENING, WHEN_LATENIGHT, WHEN_MIDDAY, WHEN_MORNING,
 WHEN_EARLY_MORNING, WHEN_LATE_MORNING, WHEN_NIGHT, WHEN_DAY
 WHEN_ANY_TIME
The masks are defined in /include/situations.h.<br />
chance -  (int) chance in 1000 of starting the situation
 This is tested every duration seconds.<br />
category - (optional) if you specify a cateory for the situation
                then no situations with the same category will overlap.
                category would usually be a string eg. "boats".<br />
<br />
<dd><b>See also:</b>
<br />add_situation.c, start_situation.c, end_situation.c, situations.h, set_situation_changer.c, make_situation_seed.c and goto learning  search  situation  for working examples.c<br /><br /><dd><b>Example:</b>
<br/><pre>#include <situations.h>

 automate_situation( "frog", 300, WHEN_ANY_TIME, 200 );

This will automatically start the situation labelled "frog"
at a random time that is any time of the day with a 200/1000
chance of it starting per 300 seconds.  It will last for
300 seconds (5 minutes).</pre><br/><pre>
 automate_situation( ({"frog1,pond","frog2,pond"}), 240,
                       WHEN_EVENING|WHEN_NIGHT, 300 );

This will automatically start a situation that is a combination
of "frog1" and "pond" followed by "frog2" and "pond".  They start
at a random time but only in the evening or at night.
There will be a 300/1000 chance of
it starting per 240 seconds.  Both the "frog1" and "frog2"
situations will get half the total time (as there are two),
120 seconds each, for a total duration of 240 seconds (4 minutes).</pre><br/><pre>
 automate_situation( ({"frog1,pond","frog2,pond"}), ({ 80,160 }),
                       WHEN_EVENING|WHEN_NIGHT, 300 );
Same as previous example except the durations of the individual
parts are set: "frog1,pond" for 80 seconds followed by "frog2,pond"
for 160 seconds.  The total time is 80+160.
</pre><br /></dl>

<dt class="autodocfuncname"><a name="calc_co_ord">
calc_co_ord</a><pre class="autodocfuncdef">
void calc_co_ord()
</pre><dd><br />
This method calculates the co-ordinates of this room.  The co-ordinates
are based on the surrounding rooms co-ordinates, if one of those rooms
are loaded.  The function 'query_do_not_use_coords' is called on the
rooms to see if the co-ordinates are allowed to leak out further or
not.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#query_co_ord">query_co_ord()</a> and <a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="calc_exits">
calc_exits</a><pre class="autodocfuncdef">
void calc_exits()
</pre><dd><br />
This method calculates all the exit strings to be used for this room.
<br />

<dt class="autodocfuncname"><a name="calc_long_exit">
calc_long_exit</a><pre class="autodocfuncdef">
void calc_long_exit()
</pre><dd><br />
This method creates the long exit description used in the room long
descriptions.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#query_long_exit">query_long_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="calc_short_exit_string">
calc_short_exit_string</a><pre class="autodocfuncdef">
string calc_short_exit_string()
</pre><dd><br />
This method returns the exit string used when in brief mode.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the brief exit string<br /><br />
<dd><b>See also:</b>
<br /><a href="#calc_exit_string">calc_exit_string()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="calc_short_exit_string_mxp">
calc_short_exit_string_mxp</a><pre class="autodocfuncdef">
string calc_short_exit_string_mxp()
</pre><dd><br />
This method returns the exit string used when in brief mode, but with MXP.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the brief exit string with mxp
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="can_use_for_co_ords">
can_use_for_co_ords</a><pre class="autodocfuncdef">
int can_use_for_co_ords(string other)
</pre><dd><br />
This method is designed to allow a little more flexability in which rooms
can be used for co-ordinates.  It should be overridden by higher up
rooms to do different checks.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 if it can be used, 0 if not
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="change_situation">
change_situation</a><pre class="autodocfuncdef">
varargs mixed change_situation(mixed label,
                               mixed duration,
                               mixed words)
</pre><dd><br />
Starts one or more situations that will end after a
specified duration.  You can use an array and make
further situations commence when others end.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
label - (mixed) label of the situation to start up.
If you pass an array such as ({ "frog1", "frog2" }) for the
label then that set of situations are started one at
a time and the total duration is split evenly between them.
Label is usually an integer or a string or an array of
integers and/or strings.
If the string is a list of labels
separated by , then multiple situations
are started using those labels.<br />
duration - (int) total time (seconds) the overall situation
should last.  You can put an array of durations -- one for each
situation if the label lists more than one situation and then
the overall time is the sum of the numbers.
-1 is a special duration.  It means that the labelled situation goes on
forever (and thus nothing after it in the array will ever go).<br />
words - is a list of replacements for #n in the text OR
a random number seed to use to choose words from random_words.
eg. ({ "#1", "frog", "#2", "honey" }) or 22
<br />
<br />
<dd><b>Returns:</b>
<br />handle useful for halting the changes later.  It is typically
a small positive integer.<br /><br />
<dd><b>See also:</b>
<br />shutdown_situation.c, add_situation.c, automate_situation.c and goto learning  search  situation  for working examples.c<br /><br /><dd><b>Example:</b>
<br/><pre>handle=change_situation( ({ "sew1","sew2" }), ({ 60,60 }) );

if (over) shutdown_situation( handle, ({ "sew1","sew2" }) );</pre><br/><pre>
change_situation( ({ "background,sew1","background,sew2" }), 120 );</pre><br/><pre>
change_situation( ({ "building_falling","rubble" }), ({ 120, -1 }) );</pre><br/><pre>
add_situation( "boat1",
  new(class situation,
    start_mess: "A little fishing boat comes up to the pier.  "
       "It has the name \"#1\" painted on the side.\n"
       "A fisherman jumps off the boat and ties its painter to a post.",
    chats: ({"The little boat bobs up and down next to the pier.",
             "A fisherman hops off the little boat." }),
    chat_rate: ({ 20, 30 }),
    extra_look: "There is a little boat here.",
    add_items: ({ ({ ({ "#1","little boat" }),
      "There is little fishing boat tied up at the pier here.  "
      "The name \"#1\" is painted on the side."   }) }),
    end_mess: "The fishermen get back on board and "
       "the little boat moves on.",
    random_words: ({ ({ "Honey Toad", "Piker", "Bing" }) })
  )
);

change_situation( "boat1", 120, ({ "#1","Floating Egg" }) );
</pre><br /></dl>

<dt class="autodocfuncname"><a name="check_day_night_switch">
check_day_night_switch</a><pre class="autodocfuncdef">
void check_day_night_switch(int old)
</pre>
<dt class="autodocfuncname"><a name="end_situation">
end_situation</a><pre class="autodocfuncdef">
void end_situation(mixed label)
</pre><dd><br />
Ends a situation previously added and started on the room.
These situations can be invoked manually with start_situation
or automatically via automate_situation.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
label - label for the situation<br />
<br />
<dd><b>See also:</b>
<br />add_situation.c, start_situation.c, automate_situation.c and change_situation
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="expand_alias">
expand_alias</a><pre class="autodocfuncdef">
string expand_alias(string word)
</pre>
<dt class="autodocfuncname"><a name="find_inv_match">
find_inv_match</a><pre class="autodocfuncdef">
object * find_inv_match(string words,
                        object looker)
</pre><dd><br />
This method returns all the matchable objects in the room.  This is used
by find_match to determine the group of objects to select from.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
words - the words to match on<br />
looker - the person doing the pmacthing<br />
<br />
<dd><b>Returns:</b>
<br />the array of objects to match on
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="flesh_map">
flesh_map</a><pre class="autodocfuncdef">
string flesh_map(string map)
</pre>
<dt class="autodocfuncname"><a name="flush_co_ord">
flush_co_ord</a><pre class="autodocfuncdef">
void flush_co_ord()
</pre><dd><br />
This method resets the co-ordinates for the room to zero, and resets
a flag so that calc_co_ord() can be called again to redetermine
the room's co-ordinates.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#set_co_ord">set_co_ord()</a>, <a href="#calc_co_ord">calc_co_ord()</a>, <a href="#query_co_ord">query_co_ord()</a> and <a href="#query_co_ord_calculated">query_co_ord_calculated()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="is_allowed_position">
is_allowed_position</a><pre class="autodocfuncdef">
int is_allowed_position(string poss)
</pre><dd><br />
This method tells us if the passed i nposition is
allowed in this type of room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
poss - the position to check
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="lookmap">
lookmap</a><pre class="autodocfuncdef">
string lookmap()
</pre>
<dt class="autodocfuncname"><a name="make_situation_seed">
make_situation_seed</a><pre class="autodocfuncdef">
void make_situation_seed(int xval,
                         int yval)
</pre><dd><br />
Makes a seed value for the random part of when
situations turn on and off.  The two ints should be
constant for a given room -- eg. the coordinates.
If this function is not called the seed is
generated from the file_name of the object.
For this reason, rooms that are clones will produce
erratic results unless this function is called.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
xval - integer to use to make a seed (eg. x coordinate)<br />
yval - integer to use to make a seed (eg. y coordinate)
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="modify_exit">
modify_exit</a><pre class="autodocfuncdef">
int modify_exit(mixed direc,
                mixed * data)
</pre><dd><br />
This method modifies the parameters for the exit.  See the docs in
/doc/new/room/modify_exit for more complete information.
<br />

<dt class="autodocfuncname"><a name="modify_item">
modify_item</a><pre class="autodocfuncdef">
int modify_item(mixed word,
                mixed new_desc)
</pre><dd><br />
This method will modify certain bits of the specified item.  This will
change only the bits of the pattern that are specified.  If you wish to
remove elements a better method would be to remove the item and
then readd it.  The format of the new_desc array is the same as in the
add_item code.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
word - the name of the item to change<br />
new_desc - the bits of the item to change<br />
<br />
<dd><b>See also:</b>
<br /><a href="#remove_item">remove_item()</a> and <a href="#add_item">add_item()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_aliases">
query_aliases</a><pre class="autodocfuncdef">
string * query_aliases()
</pre><dd><br />
This method returns the current exit aliases for the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the exit aliases of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_alias">add_alias()</a> and <a href="#remove_alias">remove_alias()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_background_enchant">
query_background_enchant</a><pre class="autodocfuncdef">
int query_background_enchant()
</pre><dd><br />
This method returns the background enchantment of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the theft handler of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_enchant">query_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_bright_mess">
query_bright_mess</a><pre class="autodocfuncdef">
string query_bright_mess()
</pre><dd><br />
This method returns the message to use when it is too bright to see in
the room.  It defaults to: "It's too bright to see anything!".<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the message to print when it is too bright<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_dark_mess">query_dark_mess()</a>, <a href="#long">long()</a> and <a href="#set_bright_mess">set_bright_mess()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_chatter">
query_chatter</a><pre class="autodocfuncdef">
object query_chatter()
</pre><dd><br />
This method returns the current chatter object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the chatter object<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_room_chat">add_room_chat()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_co_ord">
query_co_ord</a><pre class="autodocfuncdef">
int * query_co_ord()
</pre><dd><br />
Returns the current co-ordinates of the room.  The co-ordinates are
3d, ({ x, y, z }).  So an array with three elements.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the current co-ordinates<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_co_ord">set_co_ord()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_co_ord_calculated">
query_co_ord_calculated</a><pre class="autodocfuncdef">
int query_co_ord_calculated()
</pre><dd><br />
This tells us if the co-ordinates were set or if they were calculated.
If they were set with set_co_ord then the value of this will be 0
otherwise it will be 1.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 if it is calculated, 0 if it is not<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_co_ord">query_co_ord()</a> and <a href="#set_co_ord">set_co_ord()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_cover_percentage">
query_cover_percentage</a><pre class="autodocfuncdef">
int query_cover_percentage()
</pre><dd><br />
This is the code to use to determine how much cover the room has.
This should be used to roughly equate to business in a city and
covering branches and stuff outside.  This is used
by the follow code to determine difficulty in being followed.  100%
means very busy and very hard to follow, 0% means no one else on the
street.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the busy percentage
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_dark_mess">
query_dark_mess</a><pre class="autodocfuncdef">
string query_dark_mess()
</pre><dd><br />
This is the message to print instead of the room description when the
room is dark.  It defaults to the message "It's dark in here isn't it?".<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the dark message<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_dark_mess">set_dark_mess()</a>, <a href="#long">long()</a> and <a href="#query_bright_mess">query_bright_mess()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_day">
query_day</a><pre class="autodocfuncdef">
int query_day()
</pre><dd><br />
This method returns whether or not it is daytime.  The value is
automatically updated whenever anyone enters the room and so is more
efficient than checking with the weather handler.
<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 for day, 0 for night.
<br /><br />
<dd><b>Example:</b>
<br/><pre>void init() {
  ::init();
  if(query_day()) {
    setup_daytime_stuff();
  } else {
    setup_nighttime_stuff();
  }
}</pre><br /></dl>

<dt class="autodocfuncname"><a name="query_day_items">
query_day_items</a><pre class="autodocfuncdef">
mixed * query_day_items()
</pre><dd><br />
These are the items only visible during the day.
<br />

<dt class="autodocfuncname"><a name="query_day_long">
query_day_long</a><pre class="autodocfuncdef">
string query_day_long()
</pre><dd><br />
This method returns the long description of the room during the day.  This is
used to print out different strings for rooms during the day and during
the night.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the night long for the room.
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_default_position">
query_default_position</a><pre class="autodocfuncdef">
mixed query_default_position()
</pre><dd><br />
This method returns the current default position asigned to this
room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the current default position
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_dest_dir">
query_dest_dir</a><pre class="autodocfuncdef">
varargs string * query_dest_dir(object thing)
</pre><dd><br />
Returns an array containing just the destinations and directions used to
get there. This is useful for monster or whatever that you want to scan a
room for exits to leave out of. The array is of the format. ({ direction1,
destination1, direction2, destination2, ... })
<p>
The thing passed in is used as the basis for the relative directions
if it is an object.  If it is not an object then this is ignored
altogether.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - used to get the relative directions according to thing<br />
<br />
<dd><b>Returns:</b>
<br />the array of direction, destination pairs
<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_dest_other">query_dest_other()</a> and <a href="#add_exit">add_exit()</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_dest_other">
query_dest_other</a><pre class="autodocfuncdef">
varargs mixed * query_dest_other(string direc)
</pre><dd><br />
This returns information about the exits in the room.  This is the
information set by modify_exit().  The values from this are probably
not very useful for normal coding.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()</a> and <a href="#query_dest_dir">query_dest_dir()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_destination">
query_destination</a><pre class="autodocfuncdef">
varargs string query_destination(string exit,
                                 object mover)
</pre><dd><br />
This method returns the destination room for an exit.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
exit - the exit name<br />
<br />
<dd><b>Returns:</b>
<br />the path of the destination room, or ROOM_VOID on error<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_dest_dir">query_dest_dir()</a><br /><br /><dd><b>Example:</b>
<br/><pre>#include <room.h>
string dest;

dest = room->query_destination("south");
if (dest == ROOM_VOID) {
   do_error();
} else {
   do_move("south");
}
</pre><br /></dl>

<dt class="autodocfuncname"><a name="query_direc">
query_direc</a><pre class="autodocfuncdef">
varargs string * query_direc(object thing)
</pre><dd><br />
This method just returns all the directions available to leave from
the room.
<p>
The thing passed in is used as the basis for the relative directions
if it is an object.  If it is not an object then this is ignored
altogether.
<p>
<b>Strawberries</b>
<p>
Starting from a above,<br>
Working slowly down under.<br>
Sliding up the sides<br>
Eating a meal, fresh cream and syrup.<br>
<p>
Round and round, and round again<br>
Grining micheviously<br>
One tongue at play<br>
Firm and hard, fresh strawberries today.
<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - used to get the relative directions according to thing<br />
<br />
<dd><b>Returns:</b>
<br />the array of directions
<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_dest_other">query_dest_other()</a> and <a href="#add_exit">add_exit()</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_door">
query_door</a><pre class="autodocfuncdef">
string query_door(mixed dest,
                  string name)
</pre><dd><br />
This method determines if the specified exit is a door or not.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
dest - the destination to check for being a door<br />
name - the name of the door<br />
<br />
<dd><b>Returns:</b>
<br />0 if it is not a door, the direction if it is<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_exit">query_exit()</a> and <a href="#add_exit">add_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_door_control">
query_door_control</a><pre class="autodocfuncdef">
varargs mixed query_door_control(string direc,
                                 string name)
</pre><dd><br />
This returns the information about the door in the specified direction.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the direction to query the door in<br />
name - the name of the exit<br />
<br />
<dd><b>Returns:</b>
<br />the door control information<br /><br />
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_door_open">
query_door_open</a><pre class="autodocfuncdef">
int query_door_open(string direc)
</pre><dd><br />
This method checks to see if the door is open.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the direction of the door<br />
<br />
<dd><b>Returns:</b>
<br />-1 on an error, 0 for closed, 1 for open<br /><br />
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_dynamic_enchant">
query_dynamic_enchant</a><pre class="autodocfuncdef">
float query_dynamic_enchant()
</pre><dd><br />
This method returns the current dynamic enchantment of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the theft handler of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_enchant">query_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_enchant">
query_enchant</a><pre class="autodocfuncdef">
int query_enchant()
</pre><dd><br />
Returns the current enchantment level of the room.  The enchanment
level controls things like what happens when you flip coins and
some special messages which give wizards some idea about magic
levels.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the current enchantment<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_enchant">set_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_exit">
query_exit</a><pre class="autodocfuncdef">
int query_exit(string direc)
</pre><dd><br />
This method determines if there is an exit in the specified direction.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the exit to test for<br />
<br />
<dd><b>Returns:</b>
<br />1 if it exists, 0 if it does now
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_exits">
query_exits</a><pre class="autodocfuncdef">
string * query_exits()
</pre><dd><br />
This returns the current array of exits.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the exits array<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_exit">add_exit()</a>, <a href="#remove_exit">remove_exit()</a> and <a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_hidden_objects">
query_hidden_objects</a><pre class="autodocfuncdef">
object * query_hidden_objects()
</pre><dd><br />
This returns the current array of hidden objects.  The hidden objects
are used to allow things to not actually be in the room description
but be able to be manipulated by commands.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the array of hidden objects
<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_hidden_object">add_hidden_object()</a> and <a href="#remove_hidden_object">remove_hidden_object()</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_is_room">
query_is_room</a><pre class="autodocfuncdef">
int query_is_room()
</pre><dd><br />
Returns 1 to indicate that this object is a room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 to indicate that this is a room
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_item">
query_item</a><pre class="autodocfuncdef">
object query_item()
</pre><dd><br />
This method returns the current item object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the current item object<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_item">add_item()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_keep_room_loaded">
query_keep_room_loaded</a><pre class="autodocfuncdef">
int query_keep_room_loaded()
</pre><dd><br />
This method returns the status of the keep room loaded flag.  If they
flag is non-0 then the room with not be unloaded.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the status of the keep room loaded flag
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_linker">
query_linker</a><pre class="autodocfuncdef">
object query_linker()
</pre><dd><br />
This method returns the current linker object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the linker object
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_long_exit">
query_long_exit</a><pre class="autodocfuncdef">
string query_long_exit()
</pre><dd><br />
This returns the long exit string.  This is calculated when it is
first needed by the calc_long_exit function.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the long exit string<br /><br />
<dd><b>See also:</b>
<br /><a href="#calc_long_exit">calc_long_exit()</a> and <a href="#long">long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_long_exit_mxp">
query_long_exit_mxp</a><pre class="autodocfuncdef">
string query_long_exit_mxp()
</pre><dd><br />
This returns the long exit string with mxp codeds added.
This is calculated when it is
first needed by the calc_long_exit function.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the long exit string<br /><br />
<dd><b>See also:</b>
<br /><a href="#calc_long_exit">calc_long_exit()</a> and <a href="#long">long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_look">
query_look</a><pre class="autodocfuncdef">
string query_look(string direc)
</pre>
<dt class="autodocfuncname"><a name="query_look_func">
query_look_func</a><pre class="autodocfuncdef">
mixed * query_look_func(string direc)
</pre>
<dt class="autodocfuncname"><a name="query_nice_relative">
query_nice_relative</a><pre class="autodocfuncdef">
int query_nice_relative(string direc)
</pre><dd><br />
This method checks to see if the exit is a relative one.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the direction to check<br />
<br />
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_night_items">
query_night_items</a><pre class="autodocfuncdef">
mixed * query_night_items()
</pre><dd><br />
These are the items only visible at night.
<br />

<dt class="autodocfuncname"><a name="query_night_long">
query_night_long</a><pre class="autodocfuncdef">
string query_night_long()
</pre><dd><br />
This method returns the long description of the room at night.  This is
used to print out different strings for rooms during the day and during
the night.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the night long for the room.
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_not_replaceable">
query_not_replaceable</a><pre class="autodocfuncdef">
int query_not_replaceable()
</pre><dd><br />
This method checks to see if the program is replaceable.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 if the program is not replaceable<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_not_replaceable">set_not_replaceable()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_not_replaceable_inherit">
query_not_replaceable_inherit</a><pre class="autodocfuncdef">
int query_not_replaceable_inherit()
</pre><dd><br />
This method checks to see if the inherit is replaceable (that is, only
setup() is replaceable, and not create()).<br />
<br /><dl>
<dd><b>Returns:</b>
<br />1 if setup() must be present to be replaceable<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_not_replaceable">set_not_replaceable()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_notrack">
query_notrack</a><pre class="autodocfuncdef">
int query_notrack()
</pre><dd><br />
This method returns the value of no_track flag associated with the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
<br />
<dd><b>Returns:</b>
<br />the value of the no_track flag.<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_notrack">query_notrack()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_relative">
query_relative</a><pre class="autodocfuncdef">
int query_relative(string direc)
</pre><dd><br />
This method checks to see if the exit is a relative one.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the direction to check<br />
<br />
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_room_chats">
query_room_chats</a><pre class="autodocfuncdef">
mixed * query_room_chats()
</pre><dd><br />
Returns the current set of room chats
managed by the chatter object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />pointer to the mixed array of chat args<br /><br />
<dd><b>See also:</b>
<br />add_room_chats.c, remove_room_chats.c, room_chat.c and /std/room/basic/chatter
.c<br /><br /><dd><b>Example:</b>
<br/><pre> ({ 120, 240, ({ "A frog gimbles the curtains.",
                 "A truly revolting smell drifts insidiously "
                 "from the rug." }) })</pre><br /></dl>

<dt class="autodocfuncname"><a name="query_room_day_chats">
query_room_day_chats</a><pre class="autodocfuncdef">
mixed * query_room_day_chats()
</pre><dd><br />
This returns the set of chats visible only during the day.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the chat array used during the day
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_room_default_chats">
query_room_default_chats</a><pre class="autodocfuncdef">
mixed * query_room_default_chats()
</pre><dd><br />
This returns the default set of chats, these are mixed with the night
and day chats to generate the current set.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the mixed set of chats
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_room_night_chats">
query_room_night_chats</a><pre class="autodocfuncdef">
mixed * query_room_night_chats()
</pre><dd><br />
This returns the set of chats visible only at night.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the chat array used at night.
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_room_size">
query_room_size</a><pre class="autodocfuncdef">
mixed query_room_size()
</pre><dd><br />
This method queries the size of the room.  The default size of a room
is 10x10x10.  A room can be any rectangular size, this method will return
an array of three elements if the room is a non-cube.  If it returns
a single number then the room is assumed to be cubic.
<p>
({ north-south size, east-west size, up-down size })
<p>
The sizes are all radii's so they are half the actual width of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the size of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_room_size">set_room_size()</a> and <a href="#query_room_size_array">query_room_size_array()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_room_size_array">
query_room_size_array</a><pre class="autodocfuncdef">
int * query_room_size_array()
</pre><dd><br />
This method returns the size of the room as a three element array always.
<p>
({ north-south size, east-west size, up-down size })
<p>
The sizes are all radii's so they are half the actual width of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the size of the room as a three element array<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_room_size">query_room_size()</a> and <a href="#set_room_size">set_room_size()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_short_exit_string">
query_short_exit_string</a><pre class="autodocfuncdef">
string query_short_exit_string()
</pre><dd><br />
This method returns the short exit string.  The short exit string is the
string used in 'brief' mode of a players look.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the short exit string<br /><br />
<dd><b>See also:</b>
<br /><a href="#calc_short_exit_string">calc_short_exit_string()</a> and <a href="#query_exit_string">query_exit_string()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_short_exit_string_mxp">
query_short_exit_string_mxp</a><pre class="autodocfuncdef">
string query_short_exit_string_mxp()
</pre><dd><br />
This method returns the short exit string, but with MXP codes.  The short
exit string is the string used in 'brief' mode of a players look.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the short exit string with mxp<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_short_exit_string">query_short_exit_string()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_situation_changer">
query_situation_changer</a><pre class="autodocfuncdef">
object query_situation_changer()
</pre><dd><br />
This method returns the current situation changer object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the situation changer object<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_situation">add_situation()</a>, <a href="#automate_situation">automate_situation()</a> and change_situation
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_size">
query_size</a><pre class="autodocfuncdef">
int query_size(string direc)
</pre><dd><br />
This method returns the size of the exit.  This is used to check to make
sure that people can enter it.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
direc - the direction of the exit to check<br />
<br />
<dd><b>Returns:</b>
<br />the size of the exit<br /><br />
<dd><b>See also:</b>
<br /><a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_terrain">
query_terrain</a><pre class="autodocfuncdef">
object query_terrain()
</pre><dd><br />
This method returns the current terrain object.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the terrain object<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_room_chat">add_room_chat()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_theft_handler">
query_theft_handler</a><pre class="autodocfuncdef">
string query_theft_handler()
</pre><dd><br />
This method returns the current theft handler for the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the theft handler of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_theft_handler">set_theft_handler()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_tracking">
query_tracking</a><pre class="autodocfuncdef">
mixed * query_tracking()
</pre><dd><br />
This method returns the array of tracking data stored in this room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
<br />
<dd><b>Returns:</b>
<br />array of tracking data.<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_notrack">query_notrack(), set_notrack()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_use_internal_objects">
query_use_internal_objects</a><pre class="autodocfuncdef">
object * query_use_internal_objects()
</pre><dd><br />
This method returns all the current use internal objects available.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the list of use internal objects here
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_visibility">
query_visibility</a><pre class="autodocfuncdef">
int query_visibility()
</pre><dd><br />
This method returns the visibility in this room.  The visibility should
be a percentage which represents the percentage of the maximum visibility
in the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the visbility
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_zones">
query_zones</a><pre class="autodocfuncdef">
string * query_zones()
</pre><dd><br />
This method returns the set of move zones for this room.  This is used
by npcs to see which rooms they are allowed to move into.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#add_zone">add_zone()</a> and <a href="obj.monster.c.shtml#add_move_zone">/obj/monster->add_move_zone()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="remove_alias">
remove_alias</a><pre class="autodocfuncdef">
void remove_alias(mixed names,
                  string word)
</pre><dd><br />
This method removes the exit aliases from the room.
Aliases are convenient extra forms that can be attached to certain
exits. In the above functions, the variable names is either a string
or an array of strings and is, respectively, the alias or aliases
for the direction passed in word. Since, sometimes, the same alias
could be used for more than one exit, remove_alias() requires both
alias(es) and direction in order to remove the correct alias(es).<br />
<br /><dl>
<dd><b>Parameters:</b><br />
names - the names to remove<br />
word - what they were aliased to<br />
<br />
<dd><b>See also:</b>
<br /><a href="#add_alias">add_alias()</a> and <a href="#query_aliases">query_aliases()</a><br /><br /><dd><b>Example:</b>
<br/><pre>remove_exit( "board carriage" );
remove_alias( "board", "board carriage" );
</pre><br /></dl>

<dt class="autodocfuncname"><a name="remove_exit">
remove_exit</a><pre class="autodocfuncdef">
int remove_exit(string direc)
</pre><dd><br />
This method removes the specified exit from the room.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#add_exit">add_exit()</a> and <a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="remove_hidden_object">
remove_hidden_object</a><pre class="autodocfuncdef">
int remove_hidden_object(object thing)
</pre><dd><br />
This method removes a hidden object.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - the hidden object to remove<br />
<br />
<dd><b>Returns:</b>
<br />1 on success, 0 on failure<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_hidden_object">add_hidden_object()</a> and <a href="#query_hidden_objects">query_hidden_objects()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="remove_item">
remove_item</a><pre class="autodocfuncdef">
int remove_item(mixed word)
</pre><dd><br />
This method will attempt to remove the item defined by the given string.
This will remove everything associated with that item, verbs, patterns,
everything.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
word - the name of the item to remove<br />
<br />
<dd><b>Returns:</b>
<br />1 if successful, 0 on a failure<br /><br />
<dd><b>See also:</b>
<br /><a href="#add_item">add_item()</a> and <a href="#query_item">query_item()
</a><br /><br /><dd><b>Example:</b>
<br/><pre>add_item("frog", "Cute, green and sitting on a lilly pad.  Yes!\n");
...
remove_item("frog");</pre><br/><pre>
add_item(({ "big bad chicken", "clucker" }),
         "The big bad chicken sits and stares at you.\n");
...
remove_item("big bad chicken");</pre><br /></dl>

<dt class="autodocfuncname"><a name="remove_room_chats">
remove_room_chats</a><pre class="autodocfuncdef">
void remove_room_chats(string * dead_chats)
</pre><dd><br />
Removes chats from the set of room chats
managed by this chatter object.  If there are no chats
left the chatter is destructed.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
dead_chats - an array of chat strings to remove<br />
<br />
<dd><b>See also:</b>
<br />add_room_chats.c, query_room_chats.c and /std/room/basic/chatter
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="remove_use_internal_object">
remove_use_internal_object</a><pre class="autodocfuncdef">
void remove_use_internal_object(object thing)
</pre><dd><br />
This method removes an object whose interor bits want to export.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
thing - the object to remove
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="remove_zone">
remove_zone</a><pre class="autodocfuncdef">
void remove_zone(string zone)
</pre><dd><br />
This method removes a move zone from the current list of movement zones
for the room.  The move zones are used by npcs to see which rooms they
are allowed to move into.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#add_zone">add_zone()</a>, <a href="#query_zones">query_zones()</a> and <a href="obj.monster.c.shtml#add_move_zone">/obj/monster->add_move_zone()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="reset_exits">
reset_exits</a><pre class="autodocfuncdef">
void reset_exits()
</pre><dd><br />
This method removes all the current exits in the room.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#add_exit">add_exit()</a>, <a href="#remove_exit">remove_exit()</a> and <a href="#modify_exit">modify_exit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="room_chat">
room_chat</a><pre class="autodocfuncdef">
varargs void room_chat(mixed * args,
                       object chatobj)
</pre><dd><br />
This method sets up the room chats.
Room chats are strings which are printed at (semi) random intervals
in rooms.  They are used to add atmosphere to a room. A chat will
be picked at random from the array of chats with a frequency
controlled by the times min and max. ie. one will be picked every n
seconds where n varies between min and max seconds. Please don't
make the values for min and max too small or the messages just
become annoying!
<p>
The argument to the room_chat method is an array of the format:<br>
({ int min, int max, ({ string *chats }) }).  In place of a chat
string you may use "#function_name" where function_name is a
function that exists on the room object.
<p>
Repeated calls to this function overwrite the chats for
the default chatter.
<p>
If this function is used in combination with the day/night chats then
this sets the default chat items for the chatter.  The frequency
of chats will be taken from the day/night chats, but the messages from
here will be merged into the day/night chats.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
args - the room chat arguments<br />
chatobj - chatter object in case the default offends you.
               This argument may be omitted in which case you get
               /std/room/basic/item_chatter.c<br />
<br />
<dd><b>See also:</b>
<br /><a href="#stop_room_chat">stop_room_chat()</a>, <a href="#add_room_chats">add_room_chats()</a>, <a href="#remove_room_chats">remove_room_chats()</a> and <a href="#set_chat_min_max">set_chat_min_max()
</a><br /><br /><dd><b>Example:</b>
<br/><pre>room_chat(({ 120, 240, ({ "A string frog wanders past.",
                          "#make_soggy_bread",
                          "A trully revolting smell drifts insidiously "
                               "from the bakery." }) }) );</pre><br /></dl>

<dt class="autodocfuncname"><a name="room_day_chat">
room_day_chat</a><pre class="autodocfuncdef">
void room_day_chat(mixed * args)
</pre><dd><br />
This method sets up chats for when the room is in the day cycle.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
args - the chatter arguements<br />
<br />
<dd><b>See also:</b>
<br /><a href="#room_night_chat">room_night_chat()</a> and <a href="std.room.c.shtml#room_chat">/std/room->room_chat()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="room_night_chat">
room_night_chat</a><pre class="autodocfuncdef">
void room_night_chat(mixed * args)
</pre><dd><br />
This method sets up chats for when the room is in the night cycle.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
args - the chatter arguements<br />
<br />
<dd><b>See also:</b>
<br /><a href="#room_day_chat">room_day_chat()</a> and <a href="std.room.c.shtml#room_chat">/std/room->room_chat()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="search_result">
search_result</a><pre class="autodocfuncdef">
varargs int search_result(class obj_match match)
</pre><dd><br />
This is called if no searched-for object could handle the search, so that you
can still get things done by overriding.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
match - The obj_match class containing the results of the search<br />
<br />
<dd><b>Returns:</b>
<br />Should return the same as a normal do_search:
Success, with tell_object()s to reflect this: 1
Failure, using notify_fail(): 0
Standard failure message: -1
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_background_enchant">
set_background_enchant</a><pre class="autodocfuncdef">
void set_background_enchant(int number)
</pre><dd><br />
This method sets the background enchantment of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the theft handler of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_enchant">set_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_bright_mess">
set_bright_mess</a><pre class="autodocfuncdef">
void set_bright_mess(string word)
</pre><dd><br />
This method sets the bright message associated with the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
word - the new bright message<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_bright_mess">query_bright_mess()</a> and <a href="#long">long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_calculated_co_ord">
set_calculated_co_ord</a><pre class="autodocfuncdef">
void set_calculated_co_ord(int * new_co_ord)
</pre><dd><br />
This method should be used for setting pre-calculated co-ordinates.
Things like walls and the terrain handler should use this function for
setting their co-ordinates.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
new_co_ord - the new co-ordinates
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_chat_min_max">
set_chat_min_max</a><pre class="autodocfuncdef">
void set_chat_min_max(int min,
                      int max)
</pre><dd><br />
Allows the chat interval to be changed.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
min - minimum interval between chats (seconds)<br />
max - maximum interval between chats (seconds)
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_co_ord">
set_co_ord</a><pre class="autodocfuncdef">
void set_co_ord(int * new_co_ord)
</pre><dd><br />
Sets the current co-ordinates of the room.  The co-ordinates are
3d, ({ x, y, z }).  So an array with three elements.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
new_co_ord - the new co-ordinates for the room.<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_co_ord">query_co_ord()</a> and <a href="#query_co_ord_calculated">query_co_ord_calculated()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_cover_percentage">
set_cover_percentage</a><pre class="autodocfuncdef">
void set_cover_percentage(int percentage)
</pre><dd><br />
This is the code to use to determine how busy the room is.  This is used
by the follow code to determine difficulty in being followed.  100%
means very busy and very hard to follow, 0% means no one else on the
street.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
percentage - the busy percentage
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_dark_mess">
set_dark_mess</a><pre class="autodocfuncdef">
void set_dark_mess(string word)
</pre><dd><br />
This method sets the dark message associated with the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
word - the new dark message<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_dark_mess">query_dark_mess()</a> and <a href="#long">long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_day_long">
set_day_long</a><pre class="autodocfuncdef">
void set_day_long(mixed str)
</pre><dd><br />
This method sets the long description to display during the day time.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
str - the new day long description<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_day_long">query_day_long()</a> and <a href="#set_night_long">set_night_long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_default_position">
set_default_position</a><pre class="autodocfuncdef">
void set_default_position(mixed stuff)
</pre><dd><br />
This method sets the default position for the room.  Se the set
default position in the living code for a more complete
example of this.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
pos - the default position<br />
<br />
<dd><b>See also:</b>
<br /><a href="ostd.living.living.c.shtml#set_default_position">/ostd/living/living->set_default_position()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_dynamic_enchant">
set_dynamic_enchant</a><pre class="autodocfuncdef">
void set_dynamic_enchant(float number)
</pre><dd><br />
This method sets the current dynamic enchantment of the room.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the theft handler of the room<br /><br />
<dd><b>See also:</b>
<br /><a href="#set_enchant">set_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_enchant">
set_enchant</a><pre class="autodocfuncdef">
int set_enchant(int number)
</pre><dd><br />
Sets the current enchantment level of the room.  The enchanment
level controls things like what happens when you flip coins and
some special messages which give wizards some idea about magic
levels.
When called from the room itself, it sets a background level of
enchantment that don't decay, when called from another object it
sets the current enchantment which then decays towards the background
level.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
number - the new enchantment level to set<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_enchant">query_enchant()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_is_day">
set_is_day</a><pre class="autodocfuncdef">
void set_is_day(int d)
</pre>
<dt class="autodocfuncname"><a name="set_keep_room_loaded">
set_keep_room_loaded</a><pre class="autodocfuncdef">
void set_keep_room_loaded(int flag)
</pre><dd><br />
This method sets the flag that enables or disables the room being
cleaned up.  If they flag is set to 1, then room is never cleaned up.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
flag - the room being cleaned up flag<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_keep_room_loaded">query_keep_room_loaded()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_linker">
set_linker</a><pre class="autodocfuncdef">
varargs int set_linker(string * rooms,
                       string d_prep,
                       string s_prep,
                       string r_name)
</pre><dd><br />
This method sets up a linkage between the current room and othert
rooms.  The linkage broadcasts things like says and enter/exit
messages between the rooms.
<P>
The dynamic preposition is used when someone enters/exits
the room, the static preposition is used when someone says something
in the room.  The dynamic proposition defaults to "into" and the
static preposition defaults to "in".<br />
<br /><dl>
<dd><b>Parameters:</b><br />
rooms - the rooms to link together<br />
d_prep - the dynamic preposition<br />
s_prep - the static preposition<br />
r_name - the name of the room/area<br />
<br />
<dd><b>Example:</b>
<br/><pre>set_linker( ({ PATH + "room1", PATH + "room2", }),
            "into", "in", "fluffy square");
</pre><br /></dl>

<dt class="autodocfuncname"><a name="set_night_long">
set_night_long</a><pre class="autodocfuncdef">
void set_night_long(mixed str)
</pre><dd><br />
This method sets up the night long for the room.  This will be the
long description displayed at night in the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
str - the new night long description<br />
<br />
<dd><b>See also:</b>
<br /><a href="#set_day_long">set_day_long()</a> and <a href="#query_night_long">query_night_long()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_not_replaceable">
set_not_replaceable</a><pre class="autodocfuncdef">
void set_not_replaceable(int replace)
</pre><dd><br />
This method sets a property to make the program replaceable.  A program
will only be replaced if there is only a setup() or create() function in "
the room. A reset() will stop the room from being replaced, and in fact any
other function existing in there will stop it from being replaced as well.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
replace - 1 to make the room not replacable<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_not_replaceable">query_not_replaceable()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_not_replaceable_inherit">
set_not_replaceable_inherit</a><pre class="autodocfuncdef">
void set_not_replaceable_inherit(int replace)
</pre><dd><br />
This method sets a property to make the program replaceable only if it
contains a setup() and no other functions.  It is intended to be used in
inherits that define add_item()s, chats, or other things in create() that
would otherwise be eaten by replaceing.  Setting this makes it so that
setup() must be present for replacement to take place.  In other words, with
this set, room inherits, which typically do not have a setup(), will not get
replaced and lose the contents of create(), as is possible otherwise (since
efun::replaceable() ignores create() as well as setup())<br />
<br /><dl>
<dd><b>Parameters:</b><br />
replace - 1 to make the inherit not replacable, and require setup() to
be present for replaceing.<br />
<br />
<dd><b>See also:</b>
<br /><a href="#set_not_replaceable">set_not_replaceable()</a> and <a href="#query_not_replaceable_inherit">query_not_replaceable_inherit()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_notrack">
set_notrack</a><pre class="autodocfuncdef">
int set_notrack(int set)
</pre><dd><br />
This method turns the no_track flag on/off for the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
set - 1 for making the room notrack, 0 for letting the room store data (default).<br />
<br />
<dd><b>Returns:</b>
<br />the value set with this method.<br /><br />
<dd><b>See also:</b>
<br /><a href="#query_notrack">query_notrack()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_room_size">
set_room_size</a><pre class="autodocfuncdef">
void set_room_size(mixed number)
</pre><dd><br />
This method sets the rooms principle radii.  If the parameter isa single
number then the room is assumed to be cubic and dimension applies in
all directions.  If the input is a three element array then the elements
apply to all the directions.<br>
({ north-south size, east-west size, up-down size })
<p>
The sizes are all radii's so they are half the actual width of the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
number - the new size of the room<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_room_size">query_room_size()</a> and <a href="#query_room_size_array">query_room_size_array()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_situation_changer">
set_situation_changer</a><pre class="autodocfuncdef">
varargs object set_situation_changer(mixed changer)
</pre><dd><br />
Set a situation changer (in place of the default).
If there is no argument you get the default:
/std/room/basic/situation_changer.
You call this before any other situation related functions.
If you create your own changer it should inherit one of
/std/room/basic/situation_changer or
/std/room/basic/multiroom_situation_changer or
otherwsie provide the functionality of those objects.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
changer - optional parameter specifying either a path for
the changer object or an existing object to use.<br />
<br />
<dd><b>See also:</b>
<br />add_situation.c, start_situation.c, automate_situation.c and change_situation.c<br /><br /><dd><b>Example:</b>
<br/><pre>If you have a special changer object used for more than one room
then in setup for those rooms you should have:
set_situation_changer(load_object("/w/me/mychanger"));
Where /w/me/mychanger inherits
/std/room/basic/multiroom_situation_changer
</pre><br /></dl>

<dt class="autodocfuncname"><a name="set_terrain">
set_terrain</a><pre class="autodocfuncdef">
int set_terrain(string terrain_name)
</pre>
<dt class="autodocfuncname"><a name="set_theft_handler">
set_theft_handler</a><pre class="autodocfuncdef">
void set_theft_handler(string word)
</pre><dd><br />
This method sets the current theft handler for the room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
word - the new theft handler for the room<br />
<br />
<dd><b>See also:</b>
<br /><a href="#query_theft_handler">query_theft_handler()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_zone">
set_zone</a><pre class="autodocfuncdef">
void set_zone(string zone)
</pre><dd><br />
This method adds a move zone into the current list of zones.
This method is deprecated, add_zone should be used instead.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#add_zone">add_zone()</a> and <a href="#query_zones">query_zones()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="shutdown_all_situations">
shutdown_all_situations</a><pre class="autodocfuncdef">
void shutdown_all_situations()
</pre><dd><br />
Shuts down all current and pending situations.  It also turns off the
automated situation manager so no more are added.  It does not
destruct this object so all the add_situations are still loaded
and make be recommenced with automate_situation.  dest_me is
the appropriate call to permanently remove all situations.  The
call is passed to the situation changer object.  If none exists
then nothing happens.  The situation changer is created when
an add_situation call is performed.<br />
<br /><dl>
<dd><b>See also:</b>
<br />add_situation.c, automate_situation.c and change_situation
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="shutdown_situation">
shutdown_situation</a><pre class="autodocfuncdef">
void shutdown_situation(int call,
                        mixed label)
</pre><dd><br />
Shuts down a situation or set of situations initiated with
change_situation based on the call_out handle
returned by the call to change_situation.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
callout - call_out handle.  If 0 then the last
known handle is used.<br />
label - label or array of labels of situations to clean
up with end_situation<br />
the_room - the room<br />
<br />
<dd><b>See also:</b>
<br />automate_situation.c and change_situation
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="start_situation">
start_situation</a><pre class="autodocfuncdef">
void start_situation(int label,
                     int do_start_mess)
</pre><dd><br />
Starts a situation previously added to the room.  These situations can be
invoked manually with start_situation or automatically via
automate_situation.  The call is passed to the situation
changer object.  If there isn't one nothing happens.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
label - label for the situation as passed to add_situation<br />
do_start_mess - 0 to supress the start_mess string
       This is to fake it that a situation has been
       going for a while when really you just loaded it.<br />
<br />
<dd><b>See also:</b>
<br />add_situation.c, end_situation.c, automate_situation.c and change_situation
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="stop_room_chats">
stop_room_chats</a><pre class="autodocfuncdef">
void stop_room_chats()
</pre><dd><br />
This method stops all the room chats for the room.  It also removes
all the room chats, so if you want to have any more you must
add them again.<br />
<br /><dl>
<dd><b>See also:</b>
<br /><a href="#room_chat">room_chat()
</a><br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="track_trigger">
track_trigger</a><pre class="autodocfuncdef">
void track_trigger(object ob,
                   string message,
                   object to)
</pre>
</dl>
[an error occurred while processing this directive]

