                       A Guide to Building Rooms
                       -------------------------
This is intended as a set of guidelines to those who are just beginning
as Builders.  Nothing here is written in stone, this file is based on my
experience and the online help files.   (Herne the Hunter)
 
Making a Map as a Staring Point
-------------------------------
Before doing any building, a Creator level Immortal should make a basic
outline of their intended area layout on paper (Graph paper works well
for this).  Mapping out how each room relates to another will save a lot
of time when you go to link the rooms with exits.  Once you have your
outline mapped out with "boxes" or "circles", go ahead and number each
box with your vnumbers, the starting point doesn't really matter, as long
as it makes sense to you.  It's also a good idea to mark NORTH on your
paper map while you're at it, then you'll always know which direction
you're looking.

Example map;                       A map can be as complicated or as
                                   simple as you like, it is merely a
  N     .----.   .----.   .----.   tool to help you when you're making
  ^     |1000|---|1001|---|1002|   rooms and linking exits.
 w+e    `----'   `----'  /`----'   A "room" can represent a 10x10 room
  s                |    /          in a house, or a mile of trail. How
                 .----./  .----.   many "rooms" you use to represent
                 |1003|---|1004|   what you want is up to you.
                 `----'   `----'

Once you have created a map, you're ready to go online and begin creating
your new area.  But before jumping too far, you should become familiar
with the following commands; REDIT, RSTAT, and RLIST (help files follow).

Creating Rooms out of Thin Air
------------------------------
After you have read and understood these three files, you are ready to
start creating new rooms.  In order to link an exit to a room, the room
must first exist in the MUD. To "make" a room exist simply GOTO that room
vnum (You can only "make" a new room within your assigned vnum range). 
Since you already have a map, you know approximately how many rooms you
require, so a method I use is to create small groups of rooms (20-25
rooms) by using GOTO several times in succession, (ex; goto 1000, goto
1001, goto 1002, ...goto 1025) and once I have a body of rooms MADE, I
can begin linking those rooms together.  I prefer to make a "skeleton" of
my linked rooms before I "flesh out" the rooms with roomflags, etc.  Most
importantly, be sure to SAVEAREA after you make any additions or changes
to your new area.

   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   = SAVEAREA LOADAREA                                           =
   = Syntax: savearea  [Savearea will save your prototype area.] =
   =         loadarea  [Loadarea will load your prototype area.] =
   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Getting to the Proper Commands
------------------------------
The most important command in room creation is "REDIT".  Simply typing
REDIT by itself will return this file to you.

REDIT                    
Syntax: redit <field> value
Field being one of:
  name desc ed rmed
  exit bexit exdesc exflags exname exkey
  flags sector teledelay televnum tunnel
  rlist exdistance

There are two ways of using REDIT;  You can either type REDIT every time
you wish to enter a new value (ex: redit flags dark) or you can type
REDIT ON and you will be locked into editing the room you are currently
standing in, with the MUD assuming that anything you type is preceded by
the REDIT command (ex: flags dark).  I prefer the first method.

The second most important command is RSTAT (shortform RST);
HELP RSTAT
Syntax:  rstat 
Syntax:  rstat <location>

RSTAT shows you statistics on a location.  The location may be specified
as a roomvnum (ex; rst 1200), as the name of a mobile (ex; rst Seth), or
as the name of an object (ex; rst post).  RSTAT with no argument returns
the statistics on your present room.
 
The third command you have for rooms is RLIST (shortform RLI);
HELP RLIST
Syntax: rlist
Syntax:	rlist <first room>                [ex: rlist 1000]
Syntax:	rlist <first room> <last room>    [ex: rlist 1000 1010]

This command will list all of the prototype rooms in your area, when used
with no arguments.  When used with a single argument it will list all 
rooms including and after the argument, and when used with two arguments,
it will list all rooms including and between the two. 

The Help Files...
-----------------
HELP REDIT
Syntax: REDIT FIELD [parameter list]
Syntax: REDIT ON

Field  | Parameters              | Description / notes
-------+-------------------------+-----------------------------------
name   | <room name>             | Sets the room name / short description
exit   | <direction> [vnum] [exittype] [key] [keywords]
bexit  | same as above, but does the exit in both directions
desc   | none                    | Places you into the buffer editor. 
exdesc | <direction> [text]      | Sets/clears an exit's description
ed     | <keyword(s)>            | Adds/edits an extra desc to the room
rmed   | <first keyword>         | Removes an extra desc from the room
sector | <value>                 | Sets the sector type [See SECTORTYPES]
flags  | <flag> [flag]           | Toggles room flags [See ROOMFLAGS]
exflags| <dir> [flags]           | Displays/toggles exit flags
exname | <dir> [keywords]        | Sets an exit's keywords
exkey  | <dir> <key vnum>        | Sets an exit's key vnum [See OBJECTS]

Examples;
1. redit name The Captain's Room  [sets room name - watch capitals]
2. redit exit n 1001              [sets a 1-way exit north to room 1001]
3. redit bexit n 1001             [sets a 2-way exit north to room 1001]
4. redit exdesc n Looking into a bare room.  [sets the north exit desc]
5. redit exname n gate            [sets the north exit name to 'gate']
    [It's not a good idea to have 2 exits with the same exname in a room]
6. redit ed wall scratches runes  [puts you into an edit buffer that's ]
    [keyed to the words 'wall scratches runes'.  When PC types 'look]
    [wall' or 'look runes', they'll see this edit.]
7. redit rmed wall                [will delete the 'wall' edit and any ]
    [related keywords. (as shown above; 'wall scratches runes')]

REDIT ON will lock you into a mode in which 'redit' is implied in each
command sequence, and hitting enter will give you an instant rstat of
whichever room you are in at the time. To get out of REDIT ON, simply
type the word DONE. 

Example;  redit on
          name A dark and foreboding hallway
          flags dark indoors
          done

See EXITTYPES, EXFLAGS, EXITMAKING, SECTORTYPES and ROOMFLAGS.


HELP DOORDIRS
When making an exit, the direction can be specified numerically or as a
character.  Here is the order of the exits, and their corresponding
bitvector values:

   Direction | Value | Short    Direction | Value | Short          
   ----------+-------+------    ----------+-------+------
   North     |   0   |  N       Northeast |   6   |  NE
   East      |   1   |  E       Northwest |   7   |  NW
   South     |   2   |  S       Southeast |   8   |  SE
   West      |   3   |  W       Southwest |   9   |  SW
   Up        |   4   |  U       Somewhere |  10   |  ?
   Down      |   5   |  D 
 
See REDIT, RSTAT and RESETCMDS.


HELP EXITTYPES
When making an exit, you can include the bitvectors for any flags at the
time of making the exit (the hard way) or you simply redit the exflags
after the exit is made (the easy way).
These are the currently valid exit-types:

    Bit | Flag 
  ------+-------------------------------------------------------
      0 | Plain exit
      1 | Door exists         (Required to be closed or locked)
      2 | Door is Closed
      4 | Door is Locked
      8 | Door is Secret      (Trying to go that way won't reveal door)
     32 | Door is Pickproof   (Door can't be picked by spell or skill)
     64 | Need to be able to fly to go that way
    128 | Need to be able to climb to go that way
   1024 | Door is Passdoor proof

NOTE: You must ADD the values together to generate an exit-type:
        3 = a closed door
        7 = a closed and locked door
       11 = a closed secret door
       15 = a closed, locked and secret door

-- Use the 'redit exflags' command to change these flags, and to set the
   advanced exit flags, most of which are not shown above.

See EXFLAGS and EXITMAKING.


HELP EXITMAKING
The 'redit exit' command is used to create, modify and remove exits in a
room.  For more than one exit in the same direction see ADVANCEDEXITS.

The syntax of the 'redit exit' command is as follows:
redit exit <direction> [vnum] [exit-type] [key] [keyword(s)]

direction: one of: n, s, e, w, u, d, ne, nw, se, sw or ?
vnum     : the room number in which the exit leads to.
exit-type: the bitvector numbers for the exflags on this door.
key      : a vnum corresponding to a key object to unlock this door.
keywords : keywords used to refer to the door, (or exit).

If only 'redit exit <direction>' is specified, the exit will be removed.
The 'key' field is optional when specifying keywords.  All other fields
are required previous to the field desired.

Examples:
redit exit n 3001           - Creates an exit north to room 3001
redit exit n 3001 3 gate    - Changes the exit n to have a closed "gate"
redit exit n 3001 3 15 gate - Changes the gate to allow a key (vnum 15)
redit exit n                - Removes the north exit

See EXITTYPES for generating the exit-type value.


HELP ADVANCEDEXITS
SMAUG supports having more than one exit in the same direction,
as well as the special direction 'somewhere', represented by a '?'.
 
If you already have an exit leading north, and would like another one,
use a plus sign '+' in front of the direction:
redit exit +n 3001          - Adds another exit north to room 3001
 
To modify an extra exit like this, or to remove it, you'll have to
refer to it by number:
redit exit #2 3002          - Change the second exit to go to room 3002
 
To know what number an exit is, do an "rstat".
 
For someone to be able to use the second north exit, you have to set one
of the extra flags (see EXFLAGS) like CAN_CLIMB.  It is also usually a
good idea to set the HIDDEN flag for any special exit so that it looks
nicer with autoexits on.
 
The AUTO flag makes it possible to go in a direction by simply typing the
keyword for that exit:
redit exit ? 3001           - Create a 'somewhere' exit to 3001
redit exflags ? auto hidden - Set the proper flags
redit exname ? swim         - Set the keyword "swim"
If a player types 'swim' in the room, they will move to room 3001.


HELP EXFLAGS
Syntax  : redit exflags <dir> [flag]
Examples: redit exflags n isdoor closed locked
                (Flags can be stacked as shown)
          redit exflags n
                (By itself will show the current flags set)   

The following flags are accepted:
Flag          | Description
--------------+-------------------------------------------------------
ISDOOR        | A door exists in that direction
CLOSED        | The door is closed
LOCKED        | The door is locked
SECRET        | The door is a secret door
SWIM        * | Must be able to swim to go that way (not implemented)
PICKPROOF     | Door is pickproof
FLY           | Must be able to fly to go that way
CLIMB         | Must be able to climb to go that way
DIG           | Passage is blocked and must be dug out
NOPASSDOOR    | Door is resistant to the passdoor spell
HIDDEN        | Door is not "obvious" -- doesn't appear with autoexits
CAN_CLIMB     | Can use the climb command to go this way
CAN_ENTER     | Can use the enter command to go this way
CAN_LEAVE     | Can use the leave command to go this way
AUTO          | Keyword can be typed to go this way
SEARCHABLE    | Searching in this direction can remove the SECRET flag
BASHED        | Door has already been bashed in
BASHPROOF     | Door cannot be bashed open
NOMOB         | Mobs will not go through this exit (includes pets)
WINDOW        | Can scan through but cannot go through this exit unless
              |  'isdoor' is added - doesn't appear with autoexits 
CAN_LOOK      | Allows Player to view destination room with 'look'

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|  My method of making exits;                                       |
|                                                                   |
| 1. Set the exit (either 1-way or 2-way) and direction.            |
| 2. Set the exit flags.                                            |
| 3. Set the exit description.                                      |
| 4. Set the exit name (if required).                               |
| 5. Set the exit keyvnum (if required) [note: a key is an OBJECT]  |
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


HELP SECTORTYPES
Flag            |Sector| Comments
----------------+------+------------------------------------
INSIDE          |   0  | Weather doesn't show.
CITY            |   1  | 
FIELD           |   2  | 
FOREST          |   3  | 
HILLS           |   4  | 
MOUNTAIN        |   5  |
WATER_SWIM      |   6  | PC needs aqua_breath/fly/float or boat
WATER_NOSWIM    |   7  | PC needs aqua_breath/fly/float or boat
UNDERWATER      |   8  | PC needs aqua_breath
AIR             |   9  |
DESERT          |  10  |
UNKNOWN         |  11  |
OCEANFLOOR      |  12  | PC needs aqua_breath.  Can dig here.
UNDERGROUND     |  13  | Can dig here.


HELP ROOMFLAGS
Flag Name     | Description
--------------+--------------------------------------------------
DARK          | Room is always dark 
DEATH         | Room causes instant death (a DT)
NOMOB         | Mobs cannot wander into this room
INDOORS       | Room is indoors - MUST also use sectortype 0
LAWFUL        | Room is oriented to those of lawful alignment
NEUTRAL       | Room is oriented to those of neutral alignment
CHAOTIC       | Room is oriented to those of chaotic alignment
NOMAGIC       | Magic cannot be used in this room
TUNNEL        | Room is a tunnel - x number of players allowed
                (use 'redit tunnel #' to  set the number)
PRIVATE       | Room is private (restricted to 2 people)
SAFE          | Room is safe... no violence allowed
SOLITARY      | Room is solitary (restricted to 1 person)
PETSHOP       | Petshop (next vnum must be the storeroom)
NORECALL      | Players cannot recall out of this room
DONATION      | Donation room... cannot get all
NODROPALL     | Cannot drop all in this room
SILENCE       | Not a sound can be made or heard in this room
LOGSPEECH     | All speech in this room is logged (Don't use)
NODROP        | Nothing can be dropped in this room
CLANSTOREROOM | Clan storage room (Room contents is saved)
NOSUMMON      | Player cannot be summoned out of this room
NOASTRAL      | People cannot astral/mistwalk/teleport to this room
TELEPORT      | People in this room will be teleported out
TELESHOWDESC  | Players will see the room desc of the dest room
NOFLOOR       | Room has no floor: exit down + no fly = fall
PROTOTYPE     | Room is a prototype, (under construction)


HELP EXDISTANCE
Syntax : redit <direction> exdistance <# of rooms>
Example: redit n exdistance 5

This is relatively new and mostly unsupported programming.  When an exit
has an exdistance specified, the MUD will generate the number of rooms
called for and give each of these "virtual rooms" a random description
based on the sectortype and roomflags in the originating room.  Players
that quit in these virtual rooms will find themselves in Limbo when they
re-enter the game as the rooms only exist as long as there's an active
player in them.  Similarly, objects left in these rooms will probably be
lost as soon as the player leaves the area.
 
For example;
Room 1000 is sectortype 12 and has a roomflag "dark", and an exdistance
between room 1000 and 1001 of 3 has been specified.  When a player leaves
in the direction with the exdistance, the 3 rooms will be generated, all
will be sectortype 12 and all will be dark.  The room desc in each will
be generated randomly from a file that has been made for each sectortype
(ie: sector 12 would have a "seafloor" type description).  ** Note: These
description files aren't completely fleshed out as of yet.  Unless exdist
is specified as being in both directions, it will only function 1-way.  


A Final Word
-------------
When making rooms for the first time, it's a good idea to make yourself
some kind of checklist so that you don't miss adding something to the
room that should be there.  This will save time for those who have to
check your work, and it will save you having to go back to re-write all
those things you missed.  Remember; Spelling and grammar count!
 
The REDIT menu makes an easy checklist;
  Name      : Every room needs a unique and descriptive name.
              (Mazes are the exception.)
  Desc      : Descriptions should give the "layout" of the room so that
              a player can imagine where they are.  Avoid weak 2 or 3
              line descriptions.
  Ed        : Extra descriptions add more flavor to the room descs.
  Exdesc    : EVERY exit from a room MUST have an exdesc.
  Exflags   : These are optional.
  Exname    : These are optional.  Avoid 2 identical exnames in the room.
  Exkey     : If your door is locked, you'll need a key.
  Exdistance: This is optional. (Not fully supported yet)
  Flags     : These are optional, unless sectortype is 0.
  Sector    : EVERY room MUST have a sectortype.
  Teledelay : An option for those teleporting rooms.
  Televnum  : If the room is a teleport room.
  Tunnel    : Optional.  Mobs are included in the number specified.
