******************************** ROOM INFO *******************************

Rooms are not mearly dumb functions that print the view. They can do
anything you want them to really.

Switch() values for room functions:

	0 - Display room description, exits and contents. Called from look().

	1 - Return room in direction dir. Returns -1 or -2 if no room. If
	    -2 then main.c does not send user "You can't go that way" message.
	    Called from which_dir(),move_user() & randmove().

	2 - Intercept or execute command entered by user. Called from exec_com().

	3 - Run any room events. Called from rooms_events().

All the above functions mentioned are in main.c

The global variable "this_room" is set to the number of the room in the
structure array whenever a rooms function is called. This is usefull for
building a mud when you don't know the rooms final position in the array but
still wish to do things like eg "write_room(this_room,"You hear a noise\n");"
See the castle code castle/castle.c for examples.

Links to other rooms
--------------------

Generally the room links are set on compilation in the array links[] but this
can be dynamically altered if you wish the room to move eg if its a boat or
if you wish to trap the user somewhere once he has entered.
   If you do wish to make a room a boat for instance, you must either link
a room with an object so that when the user types "board boat" the boat object
will reset the users room to the boat room or you can cheat and do everything
in the room including printing a fake notification of a boat being there. Any
normal object commands the user carries out on the boat eg "get boat" must
then be intercepted by the room or the function eg get() will return a no 
object error.

The order of the links in the links[] array is:

north,south,east,west,up,down,northeast,southeast,southwest,northwest

This may seem illogical at first but its the simplest to remember when
you're coding believe me. 

If you wish to have a direction that is not one of the above then you can
use exits_contents() to display the direction (see the well in castle.c) but
thats all it does. You must program the room to intercept the direction word
eg "well" and carry out any actions else the mud will simply not understand.


Null rooms
----------

You can set up null rooms in the room structure by setting the function 
pointer values to null. A null room is really a spacer between valid
rooms and allows you to reserve space in the structure for rooms yet to be 
written. If any other room links to a null room then a crash will more
that likely occur as soon as a monster or user attempts to move into the 
null room since unix will attempt to call a function which doesn't exist
at address NULL. So be carefull!


Room structure
--------------

The elements in the structure defined in globals.h are as follows...

func - room function pointer
region - rooms region 
money - amount of money in room (0 to n)
norm_light - is room lit when no light sources are in it? (0/1)
light - is room lit now? (0/1)

