[Herne's SMAUG Building Guides]
  [Introduction] [Building Rooms] [Making Resets]
  [FAQ] [Building Objects] [Making Programs]
  [Some of Herne's Ideas] [Building Mobs] [OLC Resources]
 
 

I am also working on making a PDF Version of this page.

This page last updated: Oct 2002
 
 

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

Remember that most important command: SAVEAREA

Please Note: Many of these help files have been written or rewritten by the various hard-working Immortals of the Realms of Despair. Without these people, there would be no need for these guides, nor would they be nearly as comprehensive as they are now.

Table of Contents:
1.  Before you start.
2.  How to create a new room.
3.  The most important commands.
  • Redit     • Rstat     • Rlist
4.  The individual help files. — What each command means.
  • Redit — Room Editing • Doordirs — Door Directions
  • Exittypes — Types of Exits • Exitmaking — How to make Exits
  • Advancedexits — Making Special Exits • Exflags — Adding Exit Flags
  • Herne's Method — How I make Exits • Sectortypes — Room Terrain
  • Roomflags — Setting Room Conditions • Exdistance — Setting Virtual Distances
  • Pullforces — Shovin' players around  
5.  A final word.


Make a Map as a Starting Point

If you are building for the first time and you are wondering how to get started from scratch, you may want to read my Getting Started or Mechanics of Building files first.

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 a North arrow on your paper map while you're at it, then you'll always know your relative directions.

[Example Map]  
Example map;
A map can be as complicated or as simple as you like, it is merely a tool to help you when you're making rooms and linking exits. A "room" can represent a 10x10 room in a house, or a mile of trail. How many "rooms" you use to represent 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).

[Back to Top]

Creating Rooms out of Thin Air

After you have read and understand this file, you will be ready to start creating new rooms.

To begin an area from scratch, it is assumed that you have been assigned vnums. Vnums or Vnumbers are what the MUD uses to reference the rooms, mobs and objects within your area. Every room, mob, or object in the MUD environment has it's own unique vnum. If you haven't been assigned a specific block of vnums then you need to contact your MUD Administrators to find out how to go about getting them assigned. You don't really require access to a MUD to start building, in fact it is often better if you're not online when you start a building project (See Getting Started and Mechanics of Building for more information), but it helps to know what your numbers are.

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. "Goto" is an Immortal command that takes you to whatever room you specify. You can make a room outside of your vnum range, but only rooms within your assigned vnum range will be saved when you type "savearea". 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. If the MUD crashes while you're building, and you haven't saved, then everything you've done since your last save is gone. Save often.

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

To find out whether your area is loaded, type "Score." You should be able to see your assigned vnumbers at the bottom of your scoresheet, and beneath them should be a box that reads "Area Loaded [X]". If there is no X in the box, type "loadarea" to load your area.

If you want to work on an existing area within the MUD, it presents some new problems. See Getting Started for more information.

[Back to Top]

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). To get out of the "redit on" buffer, simply type "done". I prefer the first method of room editing.

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.

[Back to Top]

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 your 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 is 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', or 'look scratches', 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 also: Exittypes, Exflags, Exitmaking, Sectortypes, and Roomflags

[Back to Top]

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
North 0 N
East 1 E
South 2 S
West 3 W
Up 4 U
Down 5 D
Northeast 6 NE
Northwest 7 NW
Southeast 8 SE
Southwest 9 SW
Somewhere 10 ?

See; REDIT, RSTAT and RESETCMDS.

[Back to Top]

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 some of the 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

For the most part, the bitvector flag method is outdated in the newest version of SMAUG — We now use 'redit exflags' to change exit flags, and to set the advanced exit flags (most of which are not shown above).

See also: Exflags and Exitmaking

[Back to Top]

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.

[Back to Top]

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.)

[Back to Top]

HELP EXFLAGS

Syntax : redit exflags {direction} [flag]

Example: redit exflags n isdoor closed locked
     (Flags can be stacked as shown)
Example: 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 supported yet
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 (See: Resets — Dig Exits)
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'
EATKEY Door destroys the key after it unlocks
NOFLEE Players and Mobs can't flee in this direction
ISBOLT* Door can be bolted — Not supported yet
BOLTED* Door is bolted — Not supported yet

[Back to Top]

Herne's Method Of Making Exits

Currently, the way I make exits is to first make the exit, then add exflags and keywords as they are required. Always remember to add an exit description (exdesc).

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]

Example 1:
Syntax Description
redit bexit n 2000 Create a 2-way exit north into room 2000.
redit exflags n isdoor closed Tell the MUD that there is a door here and it is closed. Several exitflags can be combined in this manner.
redit exname n gate Give the exit the keyword "gate". Be sure to use unique exnames for each named exit in the room (every exit does not require a name).
redit exdesc n Into the garden... Add the description "Into the garden..." to the exit, so anyone looking north will see the description.
redit exkey n 2001 The north exit can be locked with the key object 2001, although it is not currently set as "locked".

Example 2:
Syntax Description
redit exit e1000 Create a 1-way exit east from the room you're in into room 1000.
redit exflags e hidden secret Tell the MUD that this exit is hidden and secret (players must use their "search" skill to find it).
redit exdesc e A dark hole... Add the description "A dark hole..." for players to see.

[Back to Top]

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.
LAVA
14
 
SWAMP
15
 

Example:
redit sector 8   [Set this room as being underwater]

[Back to Top]

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 - a limited number of players are 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 use '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 this without permission.)
NODROP Nothing can be dropped in this room.
CLANSTOREROOM Clan storage room. (Room contents is saved. Use with caution.)
NOSUMMON Player cannot be summoned out of this room.
NOASTRAL People cannot astral, mistwalk, or teleport to
this room.
TELEPORT People in this room will be teleported out to a specified vnum location.
TELESHOWDESC Players will see the room desc of the teleport destination room.
NOFLOOR Room has no floor. (if there is an exit down, then any player who isn't "flying" will fall down. Floating players take no damage.
PROTOTYPE Room is a prototype. (ie; under construction.)
ARENA Room will not trigger illegal pkill logs (Use with caution).
NOMISSILE Missiles cannot be fired into this room.
NOLOCATE Items in this room do not show up with the Locate Object spell.
NOSUPPLICATE Supplicate does not function in this room (No sup recall, etc).
AUCTION Auction channel is visible in this room.
HOUSE For housing. Do not use for building.
DND Immortals in this room with their "Do Not Disturb" flag up can not be disturbed by others.
NOHOVER Fly and float do not function in this room.
NOLOG Players who attempt to enter the game in this room will be moved to the default recall location (21001).
LIGHT This room is always light.
NOQUIT Players cannot quit in this room.
NOYELL Players cannot use yell in this room.
NOEMOTE Players cannot use emotes in this room.

Example:
redit flags nomagic indoors  [This room is inside, and no magic can be used here]

[Back to Top]

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:
Personally, I don't really recommend using exdistance unless there has been some extra work done for it on your MUD.

Specifically, the description files for exdist must be fleshed out in order to effectively use it. Unless exdist is specified as being in both directions, it will only function one-way (ie; You may walk for 3 rooms east, but only 1 room back west on the return journey). As well, virtual rooms are not saved over reboot and any items in them will be deleted. Players who saved in virtual rooms and then log-out are often sent to their recall points when they log back in, while causing the MUD to give a bug warning or hiccup.

[Back to Top]

PULLTYPES

Syntax: redit pulltype <exdir> <pulltype>
Syntax: redit pull <exdir> <force>

Pull forces can be used to move characters/objects from room to room using forces of nature. Pulltypes include the following :

undefined vortex vacuum slip ice mysterious
current wave whirlpool geyser wind storm
coldwind breeze landslide sinkhole quicksand earthquake
lava fire hotair      

Many of the pulltypes have an individualized message that may or may not apply to the force you are looking to use. The amount of pull force ranges from -100 to 100. This effects the quickness at which the pull happens. A negative pull force will PUSH the character in the opposite direction of the direction used.

This can also be accomplished by using a positive "push":

Syntax: redit <dir> push <force>

The more extreme the number, the quicker the pull will happen. To see if a room is affected with a pulltype, type "rstat ex".

See also: OBJECTRESISTANCE, and PULLFORCES


PULLFORCES

The messages given by each force are listed below.
If no specific is given, then the default message is used.

Pull Force Message
Default: Victim is pulled direction.
Victim is pushed direction.
Mysterious: No message
Whirlpool, Vacuum: Victim is sucked direction.
Current, Lava: Victim drifts direction.
Breeze: Object drifts in the breeze.
Geyser, Wave: Victim is pushed direction!
Slip: Victim loses his/her/its footing!
Wind: Victim is blown direction by a strong wind!
Earthquake: The earth opens up and Victim falls direction!
Sinkhole: The ground suddenly gives way beneath Victim!
Quicksand: Victim begins to sink direction into the quicksand!
Landslide: The ground starts to slide direction, taking Victim with it!
Coldwind: Victim is forced direction by a bitter cold wind!
Hotair: Victim is blown direction by a blast of hot air!
Storm: Victim is driven direction by the raging storm!
Vortex: Victim is sucked into a swirling vortex of colors!

Breeze will not move a character, but based on object resistance will move an object.

See also: PULLTYPES, and OBJECTRESISTANCE


OBJECTRESISTANCE

The resistance of an object against a pull/push force is determined by the weight of an object and a few quick math formulas.

The base resistance of an object is equal to its weight. If an object is flagged "metal" it gets an initial addition of 1/5th its weight. The resistances then become based off the item type

For scrolls, notes and trash divide the resistance by 4.
For scraps and containers, divide the resistance by 2.
For pens and quills, multiply the resistance by 5/6.
For mob and pc corpses and fountains, multiply the resistance by 4.

If the absolute value (+/- 100 = 100) of the push value multiplied by 10 is greater than the resistance of the object, the object will eventually be moved by the pull/push force.

See also: PULLTYPES and PULLFORCES

[Back to Top]

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 visual "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. (This is 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.


[  Rooms  ] [ Objects ] [ Mobs ] [ Resets ] [ Programs ] [ Resources ] [  FAQ  ]

[Back To My Homepage][Back to Top]
The entire contents of this page is Copyright ©1997-2007 FoxDesigns