[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/inherit/terrain_map/handler_base.c</h2> Base inherit for terrain map handler.
<p>
When creating a new terrain map, inherit from this file to make your area
handler.
<p>
When inheriting from this file, it is essential that the functions
query_map_file() and setup_handler() be overriden to return the full
pathname of the area map, and to set up type mappings.
<p>
To inherit from this file, use the following lines:
<ul>
<li>#include <terrain_map.h>
<li>
<li>inherit TERRAIN_MAP_HANDLER_BASE
</ul>
<p><b>See also:</b><br>terrain_map_inside.c, terrain_map_outside.c, terrain_map_intro.c and terrain_map_example.c<br /><p>Written by Dek<p>Started Thurs April 12 2001 Too Damn Early BST
<h2>Inherits</h2>
This class inherits the following classes /std/room/inherit/terrain_map/distance_str.c<h2>Includes</h2>
This class includes the following files /include/weather.h, /include/terrain_map.h and /include/dirs.h<h2>Class Index</h2>
<ul><li><a href="#class_char_map_data">char_map_data</a>
<li><a href="#class_feature_data">feature_data</a>
<li><a href="#class_real_coords">real_coords</a>
<li><a href="#class_sign_data">sign_data</a>
</ul><h2>Method index</h2>
<ul>
<li><a href="#add_exit_at">add_exit_at</a>(int, int, string, string, string, mixed)<br/>
This method is used to add a standard exit to a specified location
in a terrain map.
<li><a href="#add_feature">add_feature</a>(string, int, int, int, int, int, string *, mixed, mixed, string *, mixed)<br/>
This method is called to add a new 'feature' to a terrain map.
<li><a href="#add_feature_ob">add_feature_ob</a>(string, object)<br/>
This method is called to add a new 'feature' to a terrain map.
<li><a href="#add_feature_region">add_feature_region</a>(string, object, int, string *, mixed, mixed, string *, mixed, int)<br/>
This method is called to add a new 'feature' to a terrain map.
<li><a href="#add_feature_sentance">add_feature_sentance</a>(string, int, int, int, int, int, string *, mixed, mixed, string *, mixed)<br/>
This method is called to add a new 'feature' to a terrain map.
<li><a href="#add_obstacle_type">add_obstacle_type</a>(string, string, mixed, mixed, string)<br/>
This method is used to add an 'obstacle' to an area map.
<li><a href="#add_random_chat">add_random_chat</a>(string, string *)<br/>
This method is to add to the list of random chats that can be added to
specific room types.
<li><a href="#add_random_desc">add_random_desc</a>(string, string, mixed, mixed)<br/>
This method is to add to the list of random descriptions that can be added to
specific room types.
<li><a href="#add_road_special_type">add_road_special_type</a>(string, string, int, int, int, string, string, mixed, mixed, mapping)<br/>
This method is used to add a standard road type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.
<li><a href="#add_road_type">add_road_type</a>(string, string, string, string, mixed, mixed)<br/>
This method is used to add a standard road type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.
<li><a href="#add_room_type">add_room_type</a>(string, string)<br/>
This method is used to add a standard room type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.
<li><a href="#add_sign">add_sign</a>(int, int, string, mixed, string, mixed, string)<br/>
This method is used to add a signpost into a specified location in a
terrain_map.
<li><a href="#add_special_type">add_special_type</a>(string, string, int, int, int, mapping)<br/>
This method is used to add a standard skip room type to the terrain map.
<li><a href="#add_topology_level">add_topology_level</a>(string, int)<br/>
This method sets the topology mapping for the specific topology
string.
<li><a href="#add_world_room_type">add_world_room_type</a>(string, string)<br/>
This method is used to add a world map based file into the terrain.
<li><a href="#add_z_exit_at">add_z_exit_at</a>(int, int, int, string, string, string, mixed)<br/>
This method is used to add a standard exit to a specified location
in a terrain map.
<li><a href="#add_zones">add_zones</a>(string, string *)<br/>
This method is used to map ASCII characters used in the zone map onto
one or more actual room zones.
<li><a href="#calc_features">calc_features</a>(object)<br/>
<li><a href="#calc_random_chats">calc_random_chats</a>(object, string)<li><a href="#calc_random_descs">calc_random_descs</a>(object, string)<li><a href="#debug_adjacent_terrains">debug_adjacent_terrains</a>()<li><a href="#find_adjacent_terrain">find_adjacent_terrain</a>(int, int)<br/>
THis method finds a terrain adjacent to us from this location
in the specific direction.
<li><a href="#find_all_adjacent_terrains">find_all_adjacent_terrains</a>()<br/>
This is specifically for debug.
<li><a href="#find_next_room_from">find_next_room_from</a>(int, int, int, string)<br/>
This method finds the next room in the path.
<li><a href="#find_room_at_real_coord">find_room_at_real_coord</a>(int, int, int)<br/>
This method finds the room at the specific real coordinate.
<li><a href="#load_room_at">load_room_at</a>(int, int, int)<br/>
This method is used to find a room at the specified coordinates,
or to clone and setup a new one if none exists so far.
<li><a href="#modify_feature">modify_feature</a>(string, string *, mixed)<br/>
This method is used to modify the descriptions and/or item descs of
an established feature.
<li><a href="#normalise_room_exits">normalise_room_exits</a>(object)<br/>
This method fixes up the "obvious" settings for the rooms.
<li><a href="#query_access_control">query_access_control</a>()<br/>
This returns the current access control for this terrain.
<li><a href="#query_adjacent_terrains">query_adjacent_terrains</a>()<li><a href="#query_area_map">query_area_map</a>()<li><a href="#query_base_room">query_base_room</a>(int, int, int, int)<br/>
This returns the destination room in the given directoin, initially
it tries for a normal exit type.
<li><a href="#query_char_map_real_coord">query_char_map_real_coord</a>(int, int)<br/>
This is used by the terrain system to work out what is beside
us.
<li><a href="#query_char_maps">query_char_maps</a>()<li><a href="#query_debug_map">query_debug_map</a>(int, int, int, int, int)<br/>
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.
<li><a href="#query_debug_map_char">query_debug_map_char</a>(int, int)<br/>
This method returns the specific debug map character at the
given location.
<li><a href="#query_debug_map_feature">query_debug_map_feature</a>(string)<br/>
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.
<li><a href="#query_debug_map_feature_distant">query_debug_map_feature_distant</a>(string)<br/>
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.
<li><a href="#query_debug_real_coord">query_debug_real_coord</a>()<li><a href="#query_dest_coordinate_string">query_dest_coordinate_string</a>(int, int, int, string, string)<br/>
This method finds the co-ordinates to use for getting to the
next room.
<li><a href="#query_dimensions">query_dimensions</a>()<li><a href="#query_direction_distance">query_direction_distance</a>(string)<br/>
This method returns the distance that is moved if you go in the
specified direction.
<li><a href="#query_feature_item_desc">query_feature_item_desc</a>(string)<br/>
This method returns the item description.
<li><a href="#query_feature_ob">query_feature_ob</a>(string)<br/>
This method returns the region used when calculating the extents of the
feature.
<li><a href="#query_feature_rooms">query_feature_rooms</a>()<li><a href="#query_features">query_features</a>()<li><a href="#query_ground_room">query_ground_room</a>(int, int)<br/>
This method returns the location of the ground room.
<li><a href="#query_ground_room_co_ords">query_ground_room_co_ords</a>(int, int)<br/>
This method returns the ground room for a specific co-ordinate.
<li><a href="#query_map_file">query_map_file</a>()<li><a href="#query_more_terrains_rooms_from">query_more_terrains_rooms_from</a>(int, int, int, string, int, int, string, int, int)<br/>
This method is used by connecting terrains to find the next room in
sequence.
<li><a href="#query_player_map_internal_template">query_player_map_internal_template</a>(mixed *, mapping, mixed *, int, int, int, int)<br/>
This method does the updating of the map based on the template.
<li><a href="#query_player_map_template">query_player_map_template</a>(int, int, int, int, int)<br/>
This method generates a player map using templates instead of using
lines from the center point.
<li><a href="#query_random_chats">query_random_chats</a>()<li><a href="#query_random_descs">query_random_descs</a>()<li><a href="#query_real_coords">query_real_coords</a>()<li><a href="#query_real_from_terrain_coord">query_real_from_terrain_coord</a>(int, int, int)<br/>
This method returns the real coordinates from the terrain coordinates.
<li><a href="#query_room">query_room</a>(int, int, int)<br/>
This method queries the path of a room.
<li><a href="#query_room_at">query_room_at</a>(int, int, int)<br/>
This method is used to find a room at the specified coordinates,
if one has already been cloned.
<li><a href="#query_room_map">query_room_map</a>()<li><a href="#query_room_zones">query_room_zones</a>()<li><a href="#query_rooms_in_block">query_rooms_in_block</a>(int, int, int, int, int)<br/>
This method is used to find all the rooms currently cloned within a
specified rectangular area.
<li><a href="#query_rooms_in_range">query_rooms_in_range</a>(int, int, int, int, int)<br/>
This method is used to find all the rooms currently cloned within a
specified distance of the specified coordinates.
<li><a href="#query_rooms_in_zone">query_rooms_in_zone</a>(string)<br/>
This method is used to find all rooms currently loaded within the
specified room zone.
<li><a href="#query_rooms_to">query_rooms_to</a>(int, int, int, string, int, string, int, int, int)<br/>
This method find the specific squence of rooms in the given direction
with the given room jump.
<li><a href="#query_signposts">query_signposts</a>()<li><a href="#query_special_exit_base_room">query_special_exit_base_room</a>(int, int, int, int, int ref, int)<br/>
This method returns the basic room as the specified location.
<li><a href="#query_standard_exits">query_standard_exits</a>()<li><a href="#query_terrain_from_real_coord">query_terrain_from_real_coord</a>(int, int, int)<br/>
This method returns the room coordinates from the real coordinates.
<li><a href="#query_topo_map">query_topo_map</a>()<li><a href="#query_visible_distance">query_visible_distance</a>()<br/>
This method returns the distance that you can see in this terrain.
<li><a href="#query_zdiff">query_zdiff</a>()<br/>
This method returns the z diff for the terrain, this is how much
each terrain up is in terms of real co-ordinates
<li><a href="#query_zone_map">query_zone_map</a>()<li><a href="#query_zone_types">query_zone_types</a>()<li><a href="#remove_feature">remove_feature</a>(string)<br/>
This method is used to remove a named feature from the terrain map
<li><a href="#set_access_control">set_access_control</a>(int)<br/>
This method sets the current access control for this terrains.
<li><a href="#set_external_chats">set_external_chats</a>(string, mixed)<br/>
This method is used to setup 'external' chats for a road or obstacle,
which will be added to the room chats of adjacent locations.
<li><a href="#set_feature_chats">set_feature_chats</a>(string, mixed *, mixed *)<br/>
This method is used to add room chats to locations that can view a
particular feature.
<li><a href="#set_newline_mode">set_newline_mode</a>(int)<br/>
This method sets the 'newline' mode for room description extras.
<li><a href="#set_random_chat_limit">set_random_chat_limit</a>(int)<br/>
This method is used to limit the number of random chats that are
picked out for each room.
<li><a href="#set_random_desc_limit">set_random_desc_limit</a>(int)<br/>
This method is used to limit the number of random descs that are
picked out for each room.
<li><a href="#set_real_coordinates">set_real_coordinates</a>(int, int, int, int, int)<br/>
This method sets the real coordinates for the room and informs
the map handler.
<li><a href="#set_real_coordinates_no_inform">set_real_coordinates_no_inform</a>(int, int, int, int, int)<br/>
This method sets the real coordinates for the room without informing
the map handler.
<li><a href="#set_real_offsets">set_real_offsets</a>(int, int, int)<br/>
This method sets the real offsets for movement in the rooms.
<li><a href="#set_visible_distance">set_visible_distance</a>(int)<br/>
This method sets the distance you can see in this terrain based on the
map.
<li><a href="#setup_handler">setup_handler</a>()<li><a href="#setup_room">setup_room</a>(object, string)<br/>
The main nasty func for setting up a room.
<li><a href="#tell_feature">tell_feature</a>(string, mixed)<br/>
This message displays messages in all rooms within range of a feature.
<li><a href="#tell_zones">tell_zones</a>(mixed, string, mixed)<br/>
This method displays a message in all the currently loaded rooms
within the specified zone(s).
</ul>
<h2>Public Functions</h2>
These are functions that everyone can access.<p>
<dl>
<dt class="autodocfuncname"><a name="add_exit_at">
add_exit_at</a><pre class="autodocfuncdef">
varargs void add_exit_at(int x,
                         int y,
                         string direc,
                         string dest,
                         string type,
                         mixed modifiers)
</pre><dd><br />
This method is used to add a standard exit to a specified location
in a terrain map. The chief use is to insert exits to standard rooms
or other terrain maps.
This method is deprecated.  Use add_z_exit_at() instead.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
direc - the direction of the exit (as in add_exit)<br />
dest - the path of the exit's destination (as in add_exit)<br />
type - the type of exit (as in add_exit)<br />
modifiers - an optional array of exit modifiers (as in modify_exit)<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, add_obstacle_type.c, add_exit.c and modify_exit
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_exit_at(8, 0, "south", PEARWOOD + "stream_entrance", "road",
                      ({ "move mess", "You wade along the stream bed.\n",
                         "enter mess", "$N wades in from the north.",
                         "exit mess", "$N wades off to the $T." }));
</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_feature">
add_feature</a><pre class="autodocfuncdef">
void add_feature(string title,
                 int x,
                 int y,
                 int width,
                 int height,
                 int range,
                 string * descs,
                 mixed items,
                 mixed item_desc,
                 string * night_descs,
                 mixed night_items)
</pre><dd><br />
This method is called to add a new 'feature' to a terrain map.
Features have no real existance, but add atmosphere to a whole area,
by being visible across a large number of locations.
You define location, size, item desc, and add an array of 'longs'
sorted by distance, plus the usual item descriptions. Any occurrences
of $D in the longs array will be replaced by the direction in which
the feature lies.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
width - the width of the feature<br />
height - the height of the feature<br />
range - the distance (number of rooms) it can be seen for<br />
descs - array of descriptions to be shown at different ranges.
These are divided equally along the total range<br />
items - add_item name(s) (identical to the 'shorts' parameter in
add_item)<br />
item_desc - a string, or array of strings giving the corresponding<br />
night_descs - the night description array<br />
night_items - the descriptions for the items at night<br />
<br />
<dd><b>See also:</b>
<br />add_road_type.c, add_obstacle_type.c, set_feature_chats.c, modify_feature.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  add_feature("northmountain", 3, 0, 5, 1, 7,
           ({ "A huge snowy mountain towers over you to the $D.",
              "A huge snowy mountain looms to the $D.",
              "A fair way off to the $D, you can see a huge snowy mountain.",
              "A long way $Dwards, you glimpse the snowy peak of a "
              "mountain." }),
              "mountain", "From here, it looks quite astoundingly huge.",
           ({ "A huge black bulk obscures the sky to the $D.",
              "A huge black bulk covers the horizon to the $D.",
              "A black lump obscures the horizon to the $D",
              "" }),
              "The dark black silloette looks like a mountain.");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_feature_ob">
add_feature_ob</a><pre class="autodocfuncdef">
void add_feature_ob(string title,
                    object feature)
</pre><dd><br />
This method is called to add a new 'feature' to a terrain map.
Features have no real existance, but add atmosphere to a whole area,
by being visible across a large number of locations.
You define location, size, item desc, and add an array of 'longs'
sorted by distance, plus the usual item descriptions. Any occurrences
of $D in the longs array will be replaced by the direction in which
the feature lies.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
region - the region object to use in calculating the feature<br />
range - the distance (number of rooms) it can be seen for<br />
descs - array of descriptions to be shown at different ranges.
These are divided equally along the total range<br />
items - add_item name(s) (identical to the 'shorts' parameter in
add_item)<br />
item_desc - a string, or array of strings giving the corresponding<br />
whole_sentance - use a whole sentance for the descriptions or wrap
them up into fragments<br />
<br />
<dd><b>See also:</b>
<br />add_road_type.c, add_obstacle_type.c, set_feature_chats.c, modify_feature.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  region = clone_object(TERRAIN_MAP_REGION_POLYGON);
  region->add_vertex(12, 13);
  region->add_vertex(14,15);
  region->add_vertex(17,18);
  add_feature_region("northmountain", region, 7,
           ({ "A huge snowy mountain towers over you to the $D.",
              "A huge snowy mountain looms to the $D.",
              "A fair way off to the $D, you can see a huge snowy mountain.",
              "A long way $Dwards, you glimpse the snowy peak of a "
              "mountain." }),
              "mountain", "From here, it looks quite astoundingly huge.",
           ({ }), 0 );</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_feature_region">
add_feature_region</a><pre class="autodocfuncdef">
void add_feature_region(string title,
                        object region,
                        int range,
                        string * descs,
                        mixed items,
                        mixed item_desc,
                        string * night_descs,
                        mixed night_items,
                        int whole_sentance)
</pre><dd><br />
This method is called to add a new 'feature' to a terrain map.
Features have no real existance, but add atmosphere to a whole area,
by being visible across a large number of locations.
You define location, size, item desc, and add an array of 'longs'
sorted by distance, plus the usual item descriptions. Any occurrences
of $D in the longs array will be replaced by the direction in which
the feature lies.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
region - the region object to use in calculating the feature<br />
range - the distance (number of rooms) it can be seen for<br />
descs - array of descriptions to be shown at different ranges.
These are divided equally along the total range<br />
items - add_item name(s) (identical to the 'shorts' parameter in
add_item)<br />
item_desc - a string, or array of strings giving the corresponding<br />
whole_sentance - use a whole sentance for the descriptions or wrap
them up into fragments<br />
<br />
<dd><b>See also:</b>
<br />add_road_type.c, add_obstacle_type.c, set_feature_chats.c, modify_feature.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  region = clone_object(TERRAIN_MAP_REGION_POLYGON);
  region->add_vertex(12, 13);
  region->add_vertex(14,15);
  region->add_vertex(17,18);
  add_feature_region("northmountain", region, 7,
           ({ "A huge snowy mountain towers over you to the $D.",
              "A huge snowy mountain looms to the $D.",
              "A fair way off to the $D, you can see a huge snowy mountain.",
              "A long way $Dwards, you glimpse the snowy peak of a "
              "mountain." }),
              "mountain", "From here, it looks quite astoundingly huge.",
           ({ }), 0 );</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_feature_sentance">
add_feature_sentance</a><pre class="autodocfuncdef">
void add_feature_sentance(string title,
                          int x,
                          int y,
                          int width,
                          int height,
                          int range,
                          string * descs,
                          mixed items,
                          mixed item_desc,
                          string * night_descs,
                          mixed night_items)
</pre><dd><br />
This method is called to add a new 'feature' to a terrain map.
Features have no real existance, but add atmosphere to a whole area,
by being visible across a large number of locations.  This method is
different to the normal add_feature in that the system will try
and construct a sentance from the features instead of once sentance
per feature.
You define location, size, item desc, and add an array of 'longs'
sorted by distance, plus the usual item descriptions. Any occurrences
of $D in the longs array will be replaced by the direction in which
the feature lies.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
width - the width of the feature<br />
height - the height of the feature<br />
range - the distance (number of rooms) it can be seen for<br />
descs - array of descriptions to be shown at different ranges.<br />
items - add_item name(s) (identical to the 'shorts' parameter in
add_item)<br />
item_desc - a string, or array of strings giving the corresponding
These are divided equally along the total range<br />
<br />
<dd><b>See also:</b>
<br />add_road_type.c, add_obstacle_type.c, set_feature_chats.c, modify_feature.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  add_feature_sentance("northmountain", 3, 0, 5, 1, 7,
           ({ "a huge snowy mountain towers over you to the $D",
              "a huge snowy mountain looms to the $D",
              "a fair way off to the $D, you can see a huge snowy mountain",
              "a long way $Dwards, you glimpse the snowy peak of a "
              "mountain" }),
              "mountain", "From here, it looks quite astoundingly huge." );</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_obstacle_type">
add_obstacle_type</a><pre class="autodocfuncdef">
varargs void add_obstacle_type(string type,
                               string description,
                               mixed items,
                               mixed item_desc,
                               string room_desc)
</pre><dd><br />
This method is used to add an 'obstacle' to an area map. An obstacle is
effectively an area on the map which cannot be entered, and can be seen
from adjacent locations. Any occurences of $D in the description will
be replaced with the direction(s) in which the obstacle can be seen.
An add_item is automatically performed to allow for consistency.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the obstacle<br />
description - the description of the obstacle, as seen from
neighbouring rooms<br />
items - a string, or array of strings giving the corresponding
add_item name(s) (identical to the 'shorts' parameter in add_item)<br />
item_desc - a string, or array of strings giving the corresponding<br />
items - add_item name(s) (identical to the 'shorts' parameter
in add_item)<br />
item_desc - a string, or array of strings giving the
corresponding item desc<br />
room_desc - allows a description for the obstacle in the key<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, set_external_chats.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  add_obstacle("*", "Thick green bushes block your way to the $D.",
                     ({ "bush", "bushes" }), "Thick and green.",
                     "Thick bushes");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_random_chat">
add_random_chat</a><pre class="autodocfuncdef">
void add_random_chat(string types,
                     string * chats)
</pre><dd><br />
This method is to add to the list of random chats that can be added to
specific room types. A specific random sequence is used so that the randoms
won't vary over time.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
types - the string of ASCII character type(s) that this desc could
apply to<br />
chats - an array of chats to add. Usual add_chat format.<br />
<br />
<dd><b>See also:</b>
<br />set_random_desc_limit.c, set_random_chat_limit.c and add_random_chat
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_random_desc">
add_random_desc</a><pre class="autodocfuncdef">
void add_random_desc(string types,
                     string description,
                     mixed items,
                     mixed item_desc)
</pre><dd><br />
This method is to add to the list of random descriptions that can be added to
specific room types. A specific random sequence is used so that the randoms
won't vary over time.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
types - the string of ASCII character type(s) that this desc
could apply to<br />
items - add_item name(s) (identical to the 'shorts' parameter
in add_item)<br />
item_desc - a string, or array of strings giving the
corresponding item desc<br />
<br />
<dd><b>See also:</b>
<br />set_random_desc_limit.c, set_random_chat_limit.c, add_random_chat.c and add_item
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="add_road_special_type">
add_road_special_type</a><pre class="autodocfuncdef">
varargs void add_road_special_type(string type,
                                   string base_path,
                                   int size,
                                   int road_skip,
                                   int height,
                                   string room_desc,
                                   string description,
                                   mixed items,
                                   mixed item_desc,
                                   mapping height_rooms)
</pre><dd><br />
This method is used to add a standard road type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.
A road is a terrain map room which can be seen from adjacent locations.
The handler uses 'room_desc' to add an entry to the room description,
describing where the road goes. 'description' is added to the
descriptions of adjacent locations, to enable the road to be seen.
In 'room_desc' and 'description', $D will be expanded to the relevant
directions.
A skipped
room is one in which every nth room in the terrain will be skipped
unless it has something interesting in it.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room<br />
size - the number of rooms in each clump to skip over<br />
road_skip - if this is 1 then the skip type is a 'road skip', this
will assume the path is one wide and try to follow around curves<br />
height - the height of the room<br />
room_desc - the 'continuation' description, which added to the
room description to show where the road leads<br />
description - the 'adjacent' description, which is seen from
adjacent locations.<br />
items - add_item name(s) (identical to the 'shorts' parameter
in add_item)<br />
item_desc - a string, or array of strings giving the
corresponding item desc<br />
height_rooms - is a mapping containing what rooms to use at
different height levels<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, set_external_chats.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_road_type("+", ROOMS + "path", "The dusty path leads $D.",
                 "There is a dusty path to the $D.",
                 "path", "Hey! Look! A path!");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_road_type">
add_road_type</a><pre class="autodocfuncdef">
varargs void add_road_type(string type,
                           string base_path,
                           string room_desc,
                           string description,
                           mixed items,
                           mixed item_desc)
</pre><dd><br />
This method is used to add a standard road type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.
A road is a terrain map room which can be seen from adjacent locations.
The handler uses 'room_desc' to add an entry to the room description,
describing where the road goes. 'description' is added to the
descriptions of adjacent locations, to enable the road to be seen.
In 'room_desc' and 'description', $D will be expanded to the relevant
directions.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room<br />
room_desc - the 'continuation' description, which added to the
room description to show where the road leads<br />
description - the 'adjacent' description, which is seen from
adjacent locations.<br />
items - add_item name(s) (identical to the 'shorts' parameter
in add_item)<br />
item_desc - a string, or array of strings giving the
corresponding item desc<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, set_external_chats.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_road_type("+", ROOMS + "path", "The dusty path leads $D.",
                 "There is a dusty path to the $D.",
                 "path", "Hey! Look! A path!");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_room_type">
add_room_type</a><pre class="autodocfuncdef">
void add_room_type(string type,
                   string base_path)
</pre><dd><br />
This method is used to add a standard room type to the terrain map,
mapped to an ASCII character as used in the ASCII room map.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c and add_obstacle_type
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_room_type(".", ROOMS + "field");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_sign">
add_sign</a><pre class="autodocfuncdef">
void add_sign(int x,
              int y,
              string sign_long,
              mixed sign_read_mess,
              string sign_short,
              mixed sign_name,
              string sign_language)
</pre><dd><br />
This method is used to add a signpost into a specified location in a
terrain_map. It is identical to the /std/room/ add_sign, except for
the x and y coordinates which specify where the sign should go.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
x - the x coordinate of the center point<br />
y - the y coordinate of the center point<br />
<br />
<dd><b>See also:</b>
<br />add_sign
.c<br /><br /><dd><b>Example:</b>
<br/><pre>  add_sign(4, 3, "A wooden signpost.\n",
                 "\n-----------------\n"
                   "| Ladder: East  |\n"
                   "| Bridge: South |\n"
                   "-----------------",
                 "signpost", ({ "signpost", "sign" }), "common");
</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_special_type">
add_special_type</a><pre class="autodocfuncdef">
void add_special_type(string type,
                      string base_path,
                      int size,
                      int road_skip,
                      int height,
                      mapping height_rooms)
</pre><dd><br />
This method is used to add a standard skip room type to the terrain map.
Mapped to an ASCII character as used in the ASCII room map.  A skipped
room is one in which every nth room in the terrain will be skipped
unless it has something interesting in it.  The height is used to
do specific sorts of checks, like if a specific direction is passable or not.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room<br />
size - the number of rooms in each clump to skip over<br />
road_skip - if this is 1 then the skip type is a 'road skip', this
will assume the path is one wide and try to follow around curves<br />
height - the height of the room<br />
height_rooms - is a mapping containing what rooms to use at
different height levels<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c and add_obstacle_type
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_room_type(".", ROOMS + "field");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_topology_level">
add_topology_level</a><pre class="autodocfuncdef">
void add_topology_level(string char,
                        int height)
</pre><dd><br />
This method sets the topology mapping for the specific topology
string.  We use this to replace things inside rooms and to add an
extra dimension of control to the terrain system.
<p>
The string it is mapped to is free form and the string of type
%TOPO% in the path will be replaced with this character when
mapped.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
char - the caracter to map<br />
str - what to map it to
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="add_world_room_type">
add_world_room_type</a><pre class="autodocfuncdef">
varargs void add_world_room_type(string type,
                                 string base_path)
</pre><dd><br />
This method is used to add a world map based file into the terrain.
It handles all the options like a special road type, but queries all the
details off the base room instead.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, set_external_chats.c and add_item
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_world_room_type("+", ROOMS + "path", "The dusty path leads $D.",
                 "There is a dusty path to the $D.",
                 "path", "Hey! Look! A path!");</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_z_exit_at">
add_z_exit_at</a><pre class="autodocfuncdef">
varargs void add_z_exit_at(int x,
                           int y,
                           int z,
                           string direc,
                           string dest,
                           string type,
                           mixed modifiers)
</pre><dd><br />
This method is used to add a standard exit to a specified location
in a terrain map. The chief use is to insert exits to standard rooms
or other terrain maps.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
direc - the direction of the exit (as in add_exit)<br />
dest - the path of the exit's destination (as in add_exit)<br />
type - the type of exit (as in add_exit)<br />
modifiers - an optional array of exit modifiers (as in modify_exit)<br />
<br />
<dd><b>See also:</b>
<br />add_room_type.c, add_road_type.c, add_obstacle_type.c, add_exit.c and modify_exit
.c<br /><br /><dd><b>Example:</b>
<br/><pre>   add_exit_at(8, 0, "south", PEARWOOD + "stream_entrance", "road",
                      ({ "move mess", "You wade along the stream bed.\n",
                         "enter mess", "$N wades in from the north.",
                         "exit mess", "$N wades off to the $T." }));
</pre><br /></dl>

<dt class="autodocfuncname"><a name="add_zones">
add_zones</a><pre class="autodocfuncdef">
void add_zones(string type,
               string * zone_names)
</pre><dd><br />
This method is used to map ASCII characters used in the zone map onto
one or more actual room zones.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII character used in the zone map<br />
zones - a zone name or an array of zone names<br />
<br />
<dd><b>Example:</b>
<br/><pre>  add_zones("*", ({ "zone2", "zone1" }));
</pre><br /></dl>

<dt class="autodocfuncname"><a name="calc_features">
calc_features</a><pre class="autodocfuncdef">
mapping calc_features(object room)
</pre><dd><br /><br />
<br /><dl>
<dd><b>Returns:</b>
<br />the blocking data
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="calc_random_chats">
calc_random_chats</a><pre class="autodocfuncdef">
void calc_random_chats(object room,
                       string key)
</pre>
<dt class="autodocfuncname"><a name="calc_random_descs">
calc_random_descs</a><pre class="autodocfuncdef">
void calc_random_descs(object room,
                       string key)
</pre>
<dt class="autodocfuncname"><a name="debug_adjacent_terrains">
debug_adjacent_terrains</a><pre class="autodocfuncdef">
string * debug_adjacent_terrains()
</pre>
<dt class="autodocfuncname"><a name="find_adjacent_terrain">
find_adjacent_terrain</a><pre class="autodocfuncdef">
string find_adjacent_terrain(int x,
                             int y)
</pre><dd><br />
THis method finds a terrain adjacent to us from this location
in the specific direction.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="find_all_adjacent_terrains">
find_all_adjacent_terrains</a><pre class="autodocfuncdef">
void find_all_adjacent_terrains()
</pre><dd><br />
This is specifically for debug.  It finds al the adjacent terrains.
<br />

<dt class="autodocfuncname"><a name="find_next_room_from">
find_next_room_from</a><pre class="autodocfuncdef">
string * find_next_room_from(int x,
                             int y,
                             int z,
                             string direc)
</pre><dd><br />
This method finds the next room in the path.  It returns the next
room as the first element in the array and the list of the directions
to get there as the second element.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the start x position<br />
y - the start y position<br />
z - the start z position<br />
direc - the direction to go from here<br />
<br />
<dd><b>Returns:</b>
<br />({ the end location, directions... })
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="find_room_at_real_coord">
find_room_at_real_coord</a><pre class="autodocfuncdef">
string find_room_at_real_coord(int x,
                               int y,
                               int z)
</pre><dd><br />
This method finds the room at the specific real coordinate.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location<br />
<br />
<dd><b>Returns:</b>
<br />the room, or 0 on failure
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="load_room_at">
load_room_at</a><pre class="autodocfuncdef">
object load_room_at(int x,
                    int y,
                    int z)
</pre><dd><br />
This method is used to find a room at the specified coordinates,
or to clone and setup a new one if none exists so far.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
<br />
<dd><b>Returns:</b>
<br />the room at those coordinates, or 0 if none can be cloned<br /><br />
<dd><b>See also:</b>
<br />load_room_at.c and query_room
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="modify_feature">
modify_feature</a><pre class="autodocfuncdef">
varargs void modify_feature(string title,
                            string * descs,
                            mixed item_desc)
</pre><dd><br />
This method is used to modify the descriptions and/or item descs of
an established feature. Changes will be instantly seen in all the
rooms the feature is visible from.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
descs - array of descriptions to be shown at different ranges.
add_item name(s) (identical to the 'shorts' parameter in add_item)<br />
item_desc - a string, or array of strings giving the corresponding
These are divided equally along the total range<br />
<br />
<dd><b>See also:</b>
<br />set_feature_chats.c, add_feature.c and add_item
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="normalise_room_exits">
normalise_room_exits</a><pre class="autodocfuncdef">
void normalise_room_exits(object room)
</pre><dd><br />
This method fixes up the "obvious" settings for the rooms.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
room - the room object to normalise.
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_access_control">
query_access_control</a><pre class="autodocfuncdef">
int query_access_control()
</pre><dd><br />
This returns the current access control for this terrain.  You can make
terrains pt or cre only.,<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the access control
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_adjacent_terrains">
query_adjacent_terrains</a><pre class="autodocfuncdef">
mapping query_adjacent_terrains()
</pre>
<dt class="autodocfuncname"><a name="query_area_map">
query_area_map</a><pre class="autodocfuncdef">
mixed * query_area_map()
</pre>
<dt class="autodocfuncname"><a name="query_base_room">
query_base_room</a><pre class="autodocfuncdef">
string query_base_room(int x,
                       int y,
                       int z,
                       int map_room)
</pre><dd><br />
This returns the destination room in the given directoin, initially
it tries for a normal exit type.  If that fails, it tries for a climbing
exit type.  A climbing exit type is one that moves up or down from the
current z height.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x co-ordinate<br />
y - the y co-ordinate<br />
z - the z co-ordinate<br />
base - the base path of the parent terrain handler
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_char_map_real_coord">
query_char_map_real_coord</a><pre class="autodocfuncdef">
class char_map_data query_char_map_real_coord(int x,
                                              int y)
</pre><dd><br />
This is used by the terrain system to work out what is beside
us.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x position<br />
y - the y position
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_char_maps">
query_char_maps</a><pre class="autodocfuncdef">
mapping query_char_maps()
</pre>
<dt class="autodocfuncname"><a name="query_debug_map">
query_debug_map</a><pre class="autodocfuncdef">
string query_debug_map(int x,
                       int y,
                       int width,
                       int showx,
                       int showy)
</pre><dd><br />
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x co-ordinate<br />
y - the y co-ordinate<br />
width - the width of the box
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_debug_map_char">
query_debug_map_char</a><pre class="autodocfuncdef">
string query_debug_map_char(int x,
                            int y)
</pre><dd><br />
This method returns the specific debug map character at the
given location.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location<br />
<br />
<dd><b>Returns:</b>
<br />the map character
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_debug_map_feature">
query_debug_map_feature</a><pre class="autodocfuncdef">
string query_debug_map_feature(string name)
</pre><dd><br />
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x co-ordinate<br />
y - the y co-ordinate<br />
width - the width of the box
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_debug_map_feature_distant">
query_debug_map_feature_distant</a><pre class="autodocfuncdef">
string query_debug_map_feature_distant(string feature)
</pre><dd><br />
This method returns a grid of the specified size around the center
point to give creators an overview of where they are currently.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x co-ordinate<br />
y - the y co-ordinate<br />
width - the width of the box
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_debug_real_coord">
query_debug_real_coord</a><pre class="autodocfuncdef">
class real_coords query_debug_real_coord()
</pre>
<dt class="autodocfuncname"><a name="query_dest_coordinate_string">
query_dest_coordinate_string</a><pre class="autodocfuncdef">
string query_dest_coordinate_string(int x,
                                    int y,
                                    int z,
                                    string direc,
                                    string key)
</pre><dd><br />
This method finds the co-ordinates to use for getting to the
next room.  THis handles messing about to make bridges and things<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate<br />
y - the y coordinate<br />
z - the z coordinate<br />
direc - the direction it is from<br />
key - the key is it from<br />
<br />
<dd><b>Returns:</b>
<br />the new mangled co-ordinates
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_dimensions">
query_dimensions</a><pre class="autodocfuncdef">
int * query_dimensions()
</pre>
<dt class="autodocfuncname"><a name="query_direction_distance">
query_direction_distance</a><pre class="autodocfuncdef">
int query_direction_distance(string dir)
</pre><dd><br />
This method returns the distance that is moved if you go in the
specified direction.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the distance
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_feature_item_desc">
query_feature_item_desc</a><pre class="autodocfuncdef">
varargs string query_feature_item_desc(string title)
</pre><dd><br />
This method returns the item description.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the title of the feature<br />
<br />
<dd><b>Returns:</b>
<br />the feature item description
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_feature_ob">
query_feature_ob</a><pre class="autodocfuncdef">
object query_feature_ob(string name)
</pre><dd><br />
This method returns the region used when calculating the extents of the
feature.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
name - the name of the feature to find the region of<br />
<br />
<dd><b>Returns:</b>
<br />the feature region
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_feature_rooms">
query_feature_rooms</a><pre class="autodocfuncdef">
mapping query_feature_rooms()
</pre>
<dt class="autodocfuncname"><a name="query_features">
query_features</a><pre class="autodocfuncdef">
mapping query_features()
</pre>
<dt class="autodocfuncname"><a name="query_ground_room">
query_ground_room</a><pre class="autodocfuncdef">
string query_ground_room(int x,
                         int y)
</pre><dd><br />
This method returns the location of the ground room.  It is basically
just the co-ordates connected onto the terrain_handler definition.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location<br />
<br />
<dd><b>Returns:</b>
<br />the string name of the ground room
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_ground_room_co_ords">
query_ground_room_co_ords</a><pre class="autodocfuncdef">
int * query_ground_room_co_ords(int x,
                                int y)
</pre><dd><br />
This method returns the ground room for a specific co-ordinate.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location<br />
<br />
<dd><b>Returns:</b>
<br />the terrain co-ordinates of the ground room
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_map_file">
query_map_file</a><pre class="autodocfuncdef">
string query_map_file()
</pre>
<dt class="autodocfuncname"><a name="query_more_terrains_rooms_from">
query_more_terrains_rooms_from</a><pre class="autodocfuncdef">
mixed * query_more_terrains_rooms_from(int x,
                                       int y,
                                       int z,
                                       string direc,
                                       int moves_left,
                                       int jump,
                                       string main_key,
                                       int road_jump,
                                       int change_height)
</pre><dd><br />
This method is used by connecting terrains to find the next room in
sequence.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the real x coordinate<br />
y - the real y coordinate<br />
moves_left - the number of moves left to pop along<br />
jump - the jump length we are looking for<br />
main_key - the key, this is only used for non-road jumps<br />
road_jump - is this a road jump
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_player_map_internal_template">
query_player_map_internal_template</a><pre class="autodocfuncdef">
mapping query_player_map_internal_template(mixed * map,
                                           mapping key,
                                           mixed * colours,
                                           int x_c,
                                           int y_c,
                                           int z_c,
                                           int distance)
</pre><dd><br />
This method does the updating of the map based on the template.
Pretty easy really, check each location in the map to see if it
exists and what we should do with it.
<br />

<dt class="autodocfuncname"><a name="query_player_map_template">
query_player_map_template</a><pre class="autodocfuncdef">
string query_player_map_template(int x_c,
                                 int y_c,
                                 int z_c,
                                 int visibility,
                                 int max_size)
</pre><dd><br />
This method generates a player map using templates instead of using
lines from the center point.  This is more efficent than a
line drawing method.  THe max_size is used to
make sure the size of the visible area is squashed, if we want a
smaller partial map for other displays.  The max size must be
an odd number.
<br />

<dt class="autodocfuncname"><a name="query_random_chats">
query_random_chats</a><pre class="autodocfuncdef">
mapping query_random_chats()
</pre>
<dt class="autodocfuncname"><a name="query_random_descs">
query_random_descs</a><pre class="autodocfuncdef">
mapping query_random_descs()
</pre>
<dt class="autodocfuncname"><a name="query_real_coords">
query_real_coords</a><pre class="autodocfuncdef">
mixed * query_real_coords()
</pre>
<dt class="autodocfuncname"><a name="query_real_from_terrain_coord">
query_real_from_terrain_coord</a><pre class="autodocfuncdef">
class coord query_real_from_terrain_coord(int x,
                                          int y,
                                          int z)
</pre><dd><br />
This method returns the real coordinates from the terrain coordinates.
For simplicity we always assume the terrain sits at the water level.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate<br />
y - the y coordinate
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_room">
query_room</a><pre class="autodocfuncdef">
mixed query_room(int x,
                 int y,
                 int z)
</pre><dd><br />
This method queries the path of a room. If it takes the form:
'/d/full/path/name.c:x:y' where x and y are integers, it clones
a new room at the specified coordinates, sets it up fully, and returns it.
If the room path is of the standard form, it simply returns the loaded
room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
room_path - the full pathname of the room to be cloned.<br />
<br />
<dd><b>Returns:</b>
<br />the cloned/loaded room, or 0 if it could not be cloned/loaded<br /><br />
<dd><b>See also:</b>
<br />load_room_at.c and query_room_at
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_room_at">
query_room_at</a><pre class="autodocfuncdef">
object query_room_at(int x,
                     int y,
                     int z)
</pre><dd><br />
This method is used to find a room at the specified coordinates,
if one has already been cloned.
If a room has been cloned at those coordinates, it is returned,<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of the room (internal coordinate system)<br />
y - the y coordinate of the room (internal coordinate system)<br />
<br />
<dd><b>Returns:</b>
<br />the room at those coordinates, or 0 if none has been cloned<br /><br />
<dd><b>See also:</b>
<br />load_room_at.c, query_room.c, query_rooms_in_block.c and query_rooms_in_range
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_room_map">
query_room_map</a><pre class="autodocfuncdef">
mixed * query_room_map()
</pre>
<dt class="autodocfuncname"><a name="query_room_zones">
query_room_zones</a><pre class="autodocfuncdef">
mapping query_room_zones()
</pre>
<dt class="autodocfuncname"><a name="query_rooms_in_block">
query_rooms_in_block</a><pre class="autodocfuncdef">
object * query_rooms_in_block(int x,
                              int y,
                              int z,
                              int width,
                              int height)
</pre><dd><br />
This method is used to find all the rooms currently cloned within a
specified rectangular area.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of rectangle's bottom left corner<br />
y - the y coordinate of rectangle's bottom left corner<br />
width - the width of the rectangle<br />
height - the height of the rectangle<br />
<br />
<dd><b>Returns:</b>
<br />an array containing any rooms currently cloned within the
specified rectangle<br /><br />
<dd><b>See also:</b>
<br />query_room_at.c, query_rooms_in_range.c and query_rooms_in_zone
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_rooms_in_range">
query_rooms_in_range</a><pre class="autodocfuncdef">
varargs object * query_rooms_in_range(int x,
                                      int y,
                                      int z,
                                      int max,
                                      int min)
</pre><dd><br />
This method is used to find all the rooms currently cloned within a
specified distance of the specified coordinates.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate of the center point<br />
y - the y coordinate of the center point<br />
max - the maximum distance of rooms to be returned<br />
min - the minimum distance of rooms to be returned. Defaults to 0<br />
<br />
<dd><b>Returns:</b>
<br />an array containing any rooms currently cloned within the
specified range<br /><br />
<dd><b>See also:</b>
<br />query_room_at.c, query_rooms_in_block.c and query_rooms_in_zone
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_rooms_in_zone">
query_rooms_in_zone</a><pre class="autodocfuncdef">
object * query_rooms_in_zone(string zone)
</pre><dd><br />
This method is used to find all rooms currently loaded within the
specified room zone.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
zone - the name of the room zone<br />
<br />
<dd><b>Returns:</b>
<br />an array containing all the currently cloned rooms within this zone<br /><br />
<dd><b>See also:</b>
<br />query_rooms_in_block.c and query_rooms_in_range
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="query_rooms_to">
query_rooms_to</a><pre class="autodocfuncdef">
mixed * query_rooms_to(int x,
                       int y,
                       int z,
                       string direc,
                       int len,
                       string main_key,
                       int jump_len,
                       int road_type,
                       int change_height)
</pre><dd><br />
This method find the specific squence of rooms in the given direction
with the given room jump.  We do not worry about contents here.  Only if
it is a special interest marker or if there are two different ways from
the location of the same type.  Items in the map are set as being
special interest to stop a jump.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x co-ordinate to start from<br />
y - the y co-ordinate to start from<br />
<br />
<dd><b>Returns:</b>
<br />the list of rooms
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_signposts">
query_signposts</a><pre class="autodocfuncdef">
mapping query_signposts()
</pre>
<dt class="autodocfuncname"><a name="query_special_exit_base_room">
query_special_exit_base_room</a><pre class="autodocfuncdef">
string query_special_exit_base_room(int x,
                                    int y,
                                    int z,
                                    int map_room,
                                    int ref new_z,
                                    int height_here)
</pre><dd><br />
This method returns the basic room as the specified location.  A climb
room type means a room that is up or down on the z axis from where we
are, but we are allowed to climb to.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x location<br />
y - the y location<br />
z - the z location<br />
map_room - check down through the air for the room for the map<br />
new_z - the updated z co-ordinate<br />
height_here - the height of the room we are leaving, this is only
       valid in the case of exit finding<br />
<br />
<dd><b>Returns:</b>
<br />the basic room for the location
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_standard_exits">
query_standard_exits</a><pre class="autodocfuncdef">
mapping query_standard_exits()
</pre>
<dt class="autodocfuncname"><a name="query_terrain_from_real_coord">
query_terrain_from_real_coord</a><pre class="autodocfuncdef">
class coord query_terrain_from_real_coord(int x,
                                          int y,
                                          int z)
</pre><dd><br />
This method returns the room coordinates from the real coordinates.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x - the x coordinate<br />
y - the y coordinate
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_topo_map">
query_topo_map</a><pre class="autodocfuncdef">
mixed * query_topo_map()
</pre>
<dt class="autodocfuncname"><a name="query_visible_distance">
query_visible_distance</a><pre class="autodocfuncdef">
int query_visible_distance()
</pre><dd><br />
This method returns the distance that you can see in this terrain.<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the visible distance in the terrain
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_zdiff">
query_zdiff</a><pre class="autodocfuncdef">
int query_zdiff()
</pre><dd><br />
This method returns the z diff for the terrain, this is how much
each terrain up is in terms of real co-ordinates<br />
<br /><dl>
<dd><b>Returns:</b>
<br />the zdiff
<br /><br />
<br /></dl>

<dt class="autodocfuncname"><a name="query_zone_map">
query_zone_map</a><pre class="autodocfuncdef">
mixed * query_zone_map()
</pre>
<dt class="autodocfuncname"><a name="query_zone_types">
query_zone_types</a><pre class="autodocfuncdef">
mapping query_zone_types()
</pre>
<dt class="autodocfuncname"><a name="remove_feature">
remove_feature</a><pre class="autodocfuncdef">
void remove_feature(string title)
</pre><dd><br />
This method is used to remove a named feature from the terrain map<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
<br />
<dd><b>See also:</b>
<br />add_feature
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_access_control">
set_access_control</a><pre class="autodocfuncdef">
void set_access_control(int access)
</pre><dd><br />
This method sets the current access control for this terrains.  You
can set the terrain to be pt or cre only.  1 for pt only and 2 for
cre only.
<br />

<dt class="autodocfuncname"><a name="set_external_chats">
set_external_chats</a><pre class="autodocfuncdef">
void set_external_chats(string type,
                        mixed chats)
</pre><dd><br />
This method is used to setup 'external' chats for a road or obstacle,
which will be added to the room chats of adjacent locations. You
should supply the ASCII character corresponding to the road/obstacle
type, and an array of chat strings (in the same format as supplied to
room_chat)<br />
<br /><dl>
<dd><b>Parameters:</b><br />
type - the ASCII type used on the map to denote the room<br />
base_path - the full pathname of the source file for the room
   set_external_chats("=",
                ({ "The stream bubbles merrily on its way.",
                   "You hear a faint splashing sound from the stream." }));<br />
<br />
<dd><b>See also:</b>
<br />add_road_type.c, add_obstacle_type.c, set_feature_chats.c and room_chat
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_feature_chats">
set_feature_chats</a><pre class="autodocfuncdef">
void set_feature_chats(string title,
                       mixed * chats,
                       mixed * night_chats)
</pre><dd><br />
This method is used to add room chats to locations that can view a
particular feature. $D substitution is carried out on the chats.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature<br />
chats - an array of strings (room chats related to the feature)<br />
<br />
<dd><b>See also:</b>
<br />add_feature.c, modify_feature.c and room_chat
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_newline_mode">
set_newline_mode</a><pre class="autodocfuncdef">
void set_newline_mode(int mode)
</pre><dd><br />
This method sets the 'newline' mode for room description extras.
If set to 1, a newline will be inserted after all feature and
neighbouring room items. 1 is the default.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
mode - the new mode.
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_random_chat_limit">
set_random_chat_limit</a><pre class="autodocfuncdef">
void set_random_chat_limit(int new_limit)
</pre><dd><br />
This method is used to limit the number of random chats that are
picked out for each room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
new_limit - the new chat limit<br />
<br />
<dd><b>See also:</b>
<br />set_random_desc_limit.c, add_random_desc.c and add_random_chat
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_random_desc_limit">
set_random_desc_limit</a><pre class="autodocfuncdef">
void set_random_desc_limit(int new_limit)
</pre><dd><br />
This method is used to limit the number of random descs that are
picked out for each room.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
new_limit - the new desc limit<br />
<br />
<dd><b>See also:</b>
<br />set_random_chat_limit.c, add_random_desc.c and add_random_chat
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="set_real_coordinates">
set_real_coordinates</a><pre class="autodocfuncdef">
varargs void set_real_coordinates(int x1,
                                  int y1,
                                  int x2,
                                  int y2,
                                  int zdiff)
</pre><dd><br />
This method sets the real coordinates for the room and informs
the map handler.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x1the - start x location<br />
y1 - the start y location<br />
x1 - the end x location<br />
y1 - the end y location<br />
zdiff - the coord difference between z values (150 if not specified)
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_real_coordinates_no_inform">
set_real_coordinates_no_inform</a><pre class="autodocfuncdef">
varargs void set_real_coordinates_no_inform(int x1,
                                            int y1,
                                            int x2,
                                            int y2,
                                            int zdiff)
</pre><dd><br />
This method sets the real coordinates for the room without informing
the map handler.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
x1 - the start x location<br />
y1 - the start y location<br />
x1 - the end x location<br />
y1 - the end y location<br />
zdiff - the coord difference between z values (150 if not specified)
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_real_offsets">
set_real_offsets</a><pre class="autodocfuncdef">
void set_real_offsets(int xoff,
                      int yoff,
                      int zoff)
</pre><dd><br />
This method sets the real offsets for movement in the rooms.  This
is needed in rooms that do not have real co-ordinates set but still
require movement to generate the correct messages.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
xoff - how far you move in the x direction<br />
yoff - how far you move in the y direction<br />
zoff - how far you move in the z direction
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="set_visible_distance">
set_visible_distance</a><pre class="autodocfuncdef">
void set_visible_distance(int distance)
</pre><dd><br />
This method sets the distance you can see in this terrain based on the
map.  The distance is used to determine nice little map things to show
the players.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
distance - the distance you can see
<br />
<br />
<br /></dl>

<dt class="autodocfuncname"><a name="setup_handler">
setup_handler</a><pre class="autodocfuncdef">
void setup_handler()
</pre>
<dt class="autodocfuncname"><a name="setup_room">
setup_room</a><pre class="autodocfuncdef">
void setup_room(object room,
                string base_path)
</pre><dd><br />
The main nasty func for setting up a room. It adds all the necessary exits,
and adds to the room's extra_look & add_items for anything outside the room
which should be visible. It's fairly nasty. But hey - it works.
<br />

<dt class="autodocfuncname"><a name="tell_feature">
tell_feature</a><pre class="autodocfuncdef">
varargs void tell_feature(string title,
                          mixed message)
</pre><dd><br />
This message displays messages in all rooms within range of a feature.
The message can be either a string, which goes to all the rooms, or an
array of strings, in which case they get spread across the distances (in
which case you should supply the same number of array elements as in the
descriptions in the original add_feature. Any occurences of $D in the
message(s) will be replaced in each room with the direction that the
feature lies in.<br />
<br /><dl>
<dd><b>Parameters:</b><br />
title - the name of the feature, as used in add_feature<br />
message - the message to be displayed<br />
<br />
<dd><b>See also:</b>
<br />tell_rooms_in_zone.c, add_feature.c, modify_feature.c and set_feature_chats
.c<br /><br /><br /></dl>

<dt class="autodocfuncname"><a name="tell_zones">
tell_zones</a><pre class="autodocfuncdef">
varargs void tell_zones(mixed zones,
                        string message,
                        mixed mess_class)
</pre><dd><br />
This method displays a message in all the currently loaded rooms
within the specified zone(s).<br />
<br /><dl>
<dd><b>Parameters:</b><br />
zones - a zone name as a string, or an array of zone names<br />
message - the message to be displayed<br />
mess_class - the message type. Normally this need not be specified<br />
<br />
<dd><b>See also:</b>
<br />query_rooms_in_zone.c and tell_feature
.c<br /><br /><br /></dl>

</dl>
<h2>Classes</h2>
These are nice data types for dealing with...  Data!<p>
<ul>
<li><a name="class_char_map_data">
char_map_data</a><pre>
class char_map_data {
                      string char;
                      string colour;
                      string path;
                      string room_desc;
                      mixed items;
                      mixed item_desc;
                      mixed chats;
                      int type;
                      int height;
                      mapping height_rooms;
                      int whole_sentance;
                      mixed adjacent_desc;
                      int room_jump;
                      int room_jump_matching;
}

</pre>
<li><a name="class_feature_data">
feature_data</a><pre>
class feature_data {
                     int range;
                     string * descs;
                     string * night_descs;
                     mixed f_items;
                     mixed f_item_desc;
                     mixed f_item_night_desc;
                     int whole_sentance;
                     mixed chats;
                     mixed night_chats;
                     object feature_ob;
}

</pre>
<li><a name="class_real_coords">
real_coords</a><pre>
class real_coords {
                    int x1;
                    int y1;
                    int x2;
                    int y2;
                    int xdiff;
                    int ydiff;
                    int xydiff;
                    int zdiff;
                    int in_world_map;
}

</pre>
<li><a name="class_sign_data">
sign_data</a><pre>
class sign_data {
                  string long;
                  string read_mess;
                  string short;
                  string name;
                  string language;
}

</pre>
</ul>
[an error occurred while processing this directive]

