Version 2.0.0
-------------

Initial upgrade release.


2.1.0
-----

1.
Added macros for the command numbers.

2.
Added macros for printing fight levels. This does not affect the damage
inflicted, simply what is seen on screen during the fight.

3.
Added "clearline" command to clear hung logins. Logins will be timed out
anyway but this is if they need to be cleared in a hurry.

4.
Added room option to purge command.

5.
Altered the syntax of the halt, restart and detail commands.

6.
Master objects are no longer destructed then recreated during a reset, they
are kept. This prevents the id numbers of master objects going up after a
reset which as well as making the output of the masters command look less
messy it allows wizes to remember the master id and always be able to use it,
not have to look up the new one after a reset.

7.
move_object() now writes a message to the system log if a link to a null or
nonexistent room is found.

8.
Fixed bug in mud_shutdown(). Was freeing object structures then referencing
them again afterwards using a for loop - changed to a while loop. Only 
noticed this bug using Linux when mud was mysteriously still on the process
table when it had shut down - in fact it had crashed and hung while shutting
down. Other unixes didnt seem concerned by it.

9.
Added global reset_done variable. This allows rooms etc to spot if a reset 
has been done without having to check the reset_time which is fiddly. It
allows them to do their own resetting. 

10.
Server now traps segmentation faults and bus errors sensibly rather than
just ignoring them.

11.
Made other minor alterations based on warnings from lint.



2.2.0
-----

1. 
Added another call to objects (com = 5). This is called before they are
destructed and is intended to allow them to free any malloc'ed memory that
would otherwise be orphaned. Of course its open to abuse and they could do
other things too.

2. 
obj_given element of object structure not being set (or cleared) when a
user or npc was given something.

3. 
Changed a write_room() call to write_room_except() in move_object. See code
comments for more info.

4.
Can now use a dot '.' as shorthand for the say command and exclamation mark
'!' as shorthand for shout.

5.
whoami command now gives wizards & gods their object id too.

6.
Improved detail command output.

7.
Added auto reset facility in main2.c and changed code in mud_reset() in main.c
to accomodate it.

8.
Made macro that selects whether you wish the size of a container to limit the
size of an object that can be put it. This is to allow magic bags that are 
small but can contain huge things. Macro is SIZE_LIMITED.

9.
Other minor changes.


Version numbers 2.3 & 2.4 were skipped because of the large number of changes,
some causing incompatibilities, between 2.2 and the next version , 2.5.


2.5.0
-----

1.
The mud now opens a status/info port which will allow the mud admins (and 
anyone else if the port number is public knowledge) to find out mud statistics
without having to log on at all.

2.
Added "viewlog" command.

3.
Did some major rearrangement of the startup code in main(). The socket and
signal init code is now in seperate functions.

4.
exits_contents() function now prints nothing if there are no obvious exits.
previously it was just printing "Obvious exits:" then a blank.

5.
Fixed a potential bug in move_object(). The function now returns -1 if
direction parameter is out of scope. Previously it just used it blindly.

6.
Items cloned by master objects as they are constructed are now destroyed
during the make_start_objects() call since they were a waste of memory as 
they never got used.

7.
Added write_sock() function.

8.
object_have(), npc_wield() and npc_wear() now return type OBJECT , either 
a pointer to an object they've cloned or NULL. Previously they returned 
integer 0 or 1 depending on success or failure.

9.
Removed SIZE_LIMITED macro and warning about size_limit > size. On further 
reflection I felt its introduction was based on flawed logic. A magic bag can 
always have its size_limit flag set to a huge number whilst its size stays 
small.

10.
Added STREN_MUL macro. Basically this * the objects strength gives the max 
weight it can carry. Formally max weight = object strength but this was a bit 
limiting.

11.
Added auto_clone feature and function plus accompanying listrecl command.

12.
Level descriptions are now seperate for each individual class

13.
Added killed_by element to regen_list structure so listreg command can show
which object/user killed the object (if any).

14.
Event structure for event functions in object structure is now an array.

15.
Improved system command output.

16.
Added prompt command which changes the look of the prompt. This adds another
line to the user data file which will cause problems with stored skills
when migrating from an older type data file.

17.
Added suicide & charecho commands. The charecho command adds a new field to
the same new line in the data file as the prompt command.

18.
The race and class arrays have become structures that not only contain the
names but the stats which are given to the new user when he first connects.
The class stats for strength , weapon skill and dodge speed are added to 
the same for his race to give unique stats for each race-class combination.

19.
The hit and attack commands are now aliases for kill as opposed to being
commands in their own right which called the same function. This saves space
in the command array. A new alias 'k' has also been added for kill to make 
attacks quick. Also made "take" an alias for "get" instead of being a 
seperate command.

20.
Command number macros have been changed to an enumerated type called
com_enum.

21.
Changed boot command to bootoff 'cos boot had other connotations.

22.
Added a config file within which everything is optional except the 2 port
numbers which MUST be in it. All other variables have a hardwired default
setting in init_globals(). The following ex-macros are now variables which
can be optionaly defined in the config file:
	DECAY_AFTER, AUTOSAVE_FREQ, TIME_OUT, HEARTBEAT, PASSWORD_ECHO,
	DOS_NEWLINE, IGNORE_SIGTERM, MAX_USERS, GAME_PORT, INFO_PORT, START_ROOM

CHAR_MODE_ECHO has gone altogether and is now a user definable option.

23.
Changed lockout_level to minlogin_level as this was a more sensible name
and changed the command lockout to minlogin aswell.

24.
There is now an option to have users start in the same room as they were in
when they last logged off. This is set by the start_ilr option in mudconfig.

25.
Added autofighting on re-encoutering last adversary code for users. Basically
this means that if they walk into a room where the adversary is they will
automatically start to fight it unless they set autofighting to off. The time
out on this is controlled by a config definable variable.

26.
Other minor mods.


2.5.1
-----

1. Fixed bug that place user in a room before he'd completed his login
   if start_irl was set.


2.5.2
-----

1. move_object() now displays "Ghost of X goes .." when a ghost moves instead
   of just "X goes ...". Same for entering a room. Also for object_say() and 
   emote()etc.

2. Ghosts can now use the "help" and "emote" commands.


2.5.3
-----

1. Kill_object function can now take NULL argument for attacker.

2. Bug fixes.


2.5.4
-----

1. Worn_wield now being zeroed in object_inven_add();


2.6.0
-----

1. The mud now has a wizport allowing wizards and above to log in on a port
   that is not affected by the max_users variable. A wiz_port option has been
   added to the config file.

2. Another new option added to config file is crash_recovery. See config_file
   doc for further information.

3. Objects now have will_create_corpse element. It set to 1 (default) then when
   they are killed a corpse will be created else their inventory will be dropped
   on the ground.

4. Bug fixed which prevented money being aquired from dead npcs/users as it
   wasn't being included in the corpse object.

5. Can enter "who" and "version" at login prompt.

6. Can now ban users as well as sites. The bansite and unbansite commands
   have come ban and unban with sub options for sites and users.


2.6.1
-----

1. Bug fixes to do with items not being dropped when a player is killed.


2.6.2
-----

1. Added max_stam field to object structure which allows npcs and users to have
   a reduced stamina limit which is usefull in many scenarios which I'm sure 
   you can imagine :)

2. Gods (level 22 players) can now clone or purge objects even if the object 
   flags disallow this *unless* the object is a user object.


2.6.3
-----

1. Changed FOLLOW enum to FOLLOWCOM as former is already used on recent
   versions of Solaris for something else and hence Ogham would not compile 
   under it.

2. Users can no longer auto follow (using the follow command) anything they're 
   fighting since allowing this was unfair as their opponent could never get 
   away from them if they tried to flee.

3. Whereis command now prints out all instances of a given object rather
   than just the first one it comes across in the object list and can do
   exact or non exact matches.

4. Count command can also now do exact or non exact matches.

5. Got rid of externs.h & defs.h files as globals.h now contains everything.

6. this_room and this_region global values now preserved in a number of
   functions which can now be called from within a room function without
   messing these vars up. eg: look().

7. Fixed problems with detail, purge, halt and restart commands not 
   recognizing objects in the current room.

8. Added corpse_keep_inven object structure element. See objects doc file
   for more info.

9. Fixed bug with drop command that allowed you to drop money into a closed
   container.

10. Added com_stage & events_stage crash debug vars.

11. Other minor bug fixes & code tidying.


2.6.4
-----

1. Fixed inactivate crash bug.

2. Fixed bug in crash code.

3. Made "score" an alias for "status".

4. Added sex, race and class to status command for users.

5. Other minor code mods.


2.6.5
-----

1. Experience points gained now shown to player when he's killed something.

2. Added will_gain_exps option for npcs. Default is YES which means that 
   they will gain exps if they kill something.

3. Fixed some bugs, tidied up some code and other minor changes.


2.7.0
-----

1. Rewrote the skills code so that it is now more efficient and added 
   descriptions for skills which are shown in the skills command output and
   skills can now be 2 word commands. 

2. Added intelligence and dexiterity (intel and dex) to user attributes and
   also to race and class data structures. The server does not use them for 
   anything, they are intended for you to use as you see fit.

3. Added magic statistic for users. This and the above stats mean that the
   userdata files are no longer compatable with older versions of the server
   though older versions will load in 2.7 but the skills and gen values
   will be corrupted.

4. Changed code so halted NPCs & users can now be attacked by others but cannot
   fight back. Changed halt & restart commands so user objects can be halted
   too which means they cannot use any commands. Usefull for certain spells or 
   traps you may create.

5. Added armour sub types HARD & SOFT. These allow someone to wear 2 items of
   of the same type of armour as long as they are different sub types. 
   eg: Can now wear chainmail and a jerkin where chainmail is hard (metallic)
       and jerkin is soft (fabric).

6. Added enums for room, region & object functions to be used in their
   main switch statements instead of just using numbers as before. Also added
   new calls which are RM_SETUP, RM_RESET, RG_SETUP, RG_RESET. See the
   documentation and the code itself.

7. Added enums for return values of object_inven_add and add_* functions.

8. Rewrote find_sent_objects() parser function so that list position numbers 
   can be given following object name. eg: "get sword 3 from chest 2" which 
   would get the 3rd sword in the chest examine list of the 2nd chest in the 
   room inventory list. This required changing some commands which had an 
   optional room number following an object name (purge, detail etc). It also 
   now allows "the" to be included into the input following the noun.

9. Upgraded masters command so it can do matches on names like the count
   command and also just list items or npcs.

10. Ban user command now boots them off if they're logged on at the time.

11. Added hostres command and hostname_resolve config file option allowing 
    hostname resolution to be switched on or off. This is usefull if name 
    lookups are taking a long time and are hanging the mud.

12. Added listinac command which lists all the inactive objects.

13. Remote port number is now stored allowing manual auth lookups to be done on
    the user.

14. Added login stage enums.

15. Put user levels in "who" command (as opposed to the "people" command).

16. Upgraded prompt to show autofight opponent and object we're following if
    required.

17. Autofight will no longer work in unlit rooms. After all, if you can't see 
    your opponent...

18. "Obvious exits: " message in room descs changed to "Obvious directions: "
    as it makes more sense for rooms that make up an outdoors area and region
    number now included alongside room number in wizdata "look" output.

19. Users can no longer use any skills if they're dead. This was an oversight.

20. user->misc_func now set to NULL on death.

21. Changed attack_damage code so damage is a random value between zero and
    a possible max damage worked out from stats. Also the effect of weapon
    skill on weapon damage has been reduced from 0 - 1 multiplication factor 
    to 0.5 to 1 so the weapon still will do some reasonable damage even if 
    players ws is crap.

22. User alignment only changed on killing opponent rather than after every
    hit as it changed too quickly.

23. Improved crash debug info.

24. Renamed MOTD1 & MOTD2 to INTRO_SCREEN & LOGIN_SCREEN respectively and
    login now pauses at LOGIN_SCREEN.

25. Bug fixes and lots of other code mods.



2.8.0
-----

1. Added "fights" command which shows fights currently in progress.

2. Added help for races and classes during new character creation.
   The files are in helpfiles/racehelp and helpfiles/classhelp.

3. Added command line options -d and -c <config file>. -d makes the MUD run 
   automatically in the background , the default has now changed to foreground.
   -c specifies an alternative config file to boot

4. Added crash_events_halt option to config file. 

5. All NPCs now default to a weapon skill of 100 allowing them full use of
   their weapons power.

6. will_gain_exps now defaults to NO for NPCs.

7. Added extra fields to "detail" command and put (glowing) notification for
   glowing objects in examine and inven command outputs.

8. Added master_obj global variable which allows OB_CONSTRUCT part of object
   function to know if its going to be a master or game object.
   See npcs/beggar.c for an example of its use.

9. Added exec_extra_com() in main2.c which allows you to put in extra 
   commands without having to hack main.c.

10. Added object_has() which finds items in an objects inventory.

11. Added extra alignments: "bad" & "worthy".

12. Split will_gain_exps into will_gain_fight_exps and will_gain_death_exps.

13. Added will_see_writes flag and write_data array to object structure. If
    the former is set to YES then all npcs and items will get the last string
    from write_user stored in their write_data array for them to look at.

14. Users cannot now flee into a room they wouldn't normally be able to enter
    or in a direction that is restricted by something. See move_object().

15. Made skills.c & main2.c compile into a seperate modules rather than having
    them #include'd in main.c

16. Added MAX_STAM macro to globals.h

17. Changed RING armour macro to MISCARM as other types of "armour" such as
    amulets, pendants etc can be created which arn't a ring but which a user
    can also wear a multiple number of.

18. Renamed intro_screen to login_screen and login_screen to motd_screen.
    Changed screen filename macro names to match.

19. Added some more default macros for things such as HEARTBEAT etc instead
    of having default values coded as numbers into main.c

20. Added game_timeout to config file and changed time_out to login_timeout.
    Also added auto_sell_rate.

21. minlogin command now boots of any users of a lower level than the new
    limit.

22. Assorted other parameter tweaks, code mods and bug fixes.


2.8.1
-----

1. Added memlists which are lists allowing objects to remember more complex
   data that the gen arrays up till now allowed. This data gets saved in the
   userfile for users but userfile still compat with 2.8.0

2. Players can now "wear all".

3. Corpse object is now created *after* the OB_DEATH death code is called 
   so that objects can add stuff to their inventorys at the last minute which
   is usefull in quests where you may want the item hidden until the end (ie
   you don't want it appearing in an examine).

4. A warning is now given to a player 1 minute before a game timeout occurs.

5. Added MAX_MAGIC, MAX_INTEL, MAX_DEX & SIZE_NOLIMIT, USE_ALIGN_IN_AD macros.

6. Upper size and weight restrictions have been removed as they seemed
   fairly pointless. 

7. Skills command can now show the skills of others a la the inven and status
   commands.

8. Other minor code changes and a bug fix.


2.8.2
-----

1. Added option class for weapons and armour so that they can be limited to
   being used by a certain class.

2. Added count_memlist() function which returns the number of elements in 
   an objects memlist.

3. Initial player stats are now affected by gender as well as race and
   class.

4. Users now have sizes and weights for when corpses are formed or for use
   in the game (eg when crossing flimsy bridges or squeezing through holes).

5. Added ALIGN_* macros for get_align_test() function.

6. Bug fixes and code mods.


2.8.3
-----

1. Changed unwield command so that it no longer requires an object name. The
   name was redundant since only one weapon can be wielded at a time anyway.

2. Created version.h file. This means I don't have to release a new version
   of globals.h with every patch release simply to update the version number.

3. Added "all" option to remove command.

4. Added some more helpfiles.

5. Bug fixes.


2.8.4
-----

1. Added get_alignment() function.

2. Bug fixes and code mods.


2.8.5
-----

1. Fixed a long term problem whereby the server only read up to the 1st 
   newline in the read buffer and discarded the rest which cuased problems
   if a number of commands were sent by the client in quick succession.
   Server now deals with all commands in the buffer.

2. Having an info port is now optional. If it is not required simply comment
   it out of the config file.

3. Removed Fight field from people command output to give more room for the
   site address. With the fights command this field had become redundant 
   anyway.

4. Renamed main2.c to main_extra.c

5. Other minor mods & bug fixes as per usual.


2.8.6
-----

1. Modified code so that "look at/in/into <object>" does the same as
   "examine <object>"

2. Moved money setup code line in init_rooms() to before RM_SETUP call so
   setup can change the value if required.

3. Fixed bug where user_count and login_count were erronously being reset to
   zero in mud_reset().

4. Changed "Age" to "On for" in detail command when detailing a user.

5. Fixed bug in follow() command function.


2.8.7
-----

1. Added inv_weight_pct field to object struct for use with bags of
   holding etc.

2. Added "Total weight" field to detail command.

3. Added macros for more() and move_object() functions.

4. Removed addmoney limit.

5. user->last_room now checked for valid room/value if start_ilr set. 
   If invalid then set to START_ROOM

6. Fixed bug in object_inven_add

7. Added FOR_ALL_OBJECTS & FOR_ALL_USERS shortcut macros.

8. Lots of other code mods.


6. Added REGEN_DELAY macro.


2.8.8
-----

1. Inactivated objects now moved to a special room INACTIVES_ROOM so that
   checks for objects in a given room no longer have to check the inactives
   flag. This means however that obj->room will no longer contain the final
   room when OB_DESTRUCT is called.

2. Users are put into a special login room (LOGIN_ROOM) during logon instead 
   of -1.

3. Fixed bug that allowed you to put money into a non container.

4. Added see_thru item flag to the object structure. This allows a user to 
   see inside a closed container if the flag is set. This is intended for 
   containers made of glass or a cage etc..

5. Events are no longer run via a SIGALRM (as this could potentially cause
   problems if the signal handler function is called partway through an 
   important data structure being altered) but by select() timeouts.

6. Added weapon damage to detail command.

7. Wizards and above are now notified if a user has suicided.

8. Removed redundant code from get_ip_address().

9. Added shortcut ">" for tell command.

10. Updated the helpfiles

11. Other minor code mods and bug fixes.


2.8.9
-----

1. Fixed major crash bug introduced by changes made for 2.8.8 :(

2. A container with the see_thru flag set will now glow if a glowing object
   is put inside it. 

3. Added see_light_inside flag which decides whether an open object with 
   a glowing object inside it will light the room.

4. Objects can now be dropped in darkness but not into a container (as you
   wouldn't be able to see it).

5. Other misc code tidy ups.


2.8.10
------

1. Fixed bug introduced by an earlier patch whereby when a user was killed the 
   money he was carrying was lost and did not end up in the corpse.

