When a wizard works on an area he does so in his /wiz directory.  When that area 
has been approved and is going to be put into the game, it is moved into /domains.
What this means is that if you use full path names in your rooms/monster files, 
when we move the area we have to edit every file in order to change the paths.

There are 2 solutions to that problem:

The first is to use relative path names, and will not be covered in this 
document. The second is through the use of an 'include' file.  This file
will define macros that you will use in your area files ( They are very similiar
to the 'aliases' you used as a player, when the mud encounters one of these it 
will replace it with the value its defined as).  When we move the 
area we then only have to change the one include file, and your entire
area is portable.

Below is a partial include file I used in the plants area on misty.

/* differant paths we can use. */
#define MY_DIR                         "/domains/mists/plants/"
#define PLANT_ROOMS                    MY_DIR "rooms/"
#define MY_OBJS                        MY_DIR "obj/"
#define MY_EQ                          MY_DIR "eq/"
#define MY_MONS                        MY_DIR "monsters/"
#define MY_MISC                        MY_DIR "misc/"
#define MY_INHERITS                    MY_DIR "inherits/"

This looks real confusing at first, but lets concentrate on the top part
first (starting with MY_DIR, and ending with MY_INHERITS).

I start by defining the directory that this include file is in in this 
case its /domains/mists/plants/paths.h

And then I define a bunch of other things for monsters, rooms, etc all
using that MY_DIR define as the base.  What this means is that every where
I use MY_MONS in my area files, /domains/mists/plants/monsters will be 
put in. 

Example from a room:

#include "../paths.h"  /* ../paths.h because this file is in /domains/mists/plants/rooms/room1.c */ 
                       /*   and that paths.h file is in /domains/mists/plants/paths.h */

inherit ROOM;
void setup()
{
    ... other stuff here ...
 
   set_objects( ([
          MY_MONS "schizo." : 1, /* this exapands to /domains/mists/plants/mons/schizo */
          MY_MONS "treant" : 1,  /*  this exapands to /domains/mists/plants/mons/treant */
     ]) );

}

Notice the #include as the first line.  You must put this in _all_ files that 
you are creating (depending on how you structure things the value in the  ""
may change.

*** WARNING ***

One common thing I have seen happen is that a wizard will create a #define for ROOM,OBJ,
MONSTER.  This will cause lots of problems with your area as that redefines the 'standard'
ROOM/OBJ/MONSTER object.  That is why I tend to put a MY_ on the front of everything I 
define for an area, that way I dont interfere with any of the standard inherits.