*** Users ***

Users are simply a type of object in Ogham (an object being a structure within
a linked list of structures) and generally they are similar to NPCs though
there are some differences. The main one is the users data file of which the
format is the following...

Line
1: encrypted password
2: last login time
3: last login site
4: description
5: enter into room phrase
6: exit from room phrase
7: level, gender, race, class, dead, exps
8: stamina, strength, weap. skill, dodge speed/prob, alignment, wimpy,
9: money, accept items, accept money, stam. gain, stam gain freq, wizdata>
10: prompt, charecho, last_room, autofight
11: gen[0]
12: gen[1]
.
.
.
gen[GEN_SIZE-1]
stored skill commands (command name)
.
.

The userdata file is read in by load_user_stats(user) and is saved out by
save_user_stats(user) , both in main.c. If at any time the user database
gets screwed up and there are no logins or no god logins simply log in as
a new user, exit the mud , then edit the <level> element in the new users
file directly and set it to 22 (currently the value of the GOD macro) then
log in again as that user.


These are parts of the object structure that apply to user objects but not
others....

int (*misc_func)() - This is a function pointer that is checked and if not
   NULL is called without calling exc_com. This is done so that the normal
   mud command shell can be bypassed with an alternative one.

skill structure - This stores any learned skills in the form of the skill name
   and a function pointer to the function that runs the skill. exec_com()
   tries to match any user input with any skills that may exist.

event functions - These apply to users as much as they do other objects.


More about skills
-----------------

The server comes with a whole host of commands for the ordinary user but they
are not enough for any mature mud. There are a number of ways of implementing
extra commands - they can be coded in rooms, regions or objects but the only
way of guaranteeing that a user will have access to a certain command (other
than by adding it to the server code) its to make the command a skill. I
generally envisige skill commands being used as such so for instance a mage
may have some magic commands at his disposal, a thief may have a "pinch"
command and so on. The names of the commands that the user has at his
disposal are stored in his data file and are loaded into his skill list when
he logs in. If the name does not match any skills the mud has stored (which
are held in the structure array skills[]) then a "Failed to load" error will
appear in the syslog. Because a users always has the skill commands they are
overidden by any local commands in the room or in objects in the room.


Races & Classes
---------------

You will notice that some races and classes are set up already. They don't do
anything as far as the mud is concerned so far , they are mearly a framework
for you to build on. 
