mud++0.35/etc/
mud++0.35/etc/guilds/
mud++0.35/help/propert/
mud++0.35/mudC/
mud++0.35/player/
mud++0.35/src/interface/
mud++0.35/src/os/cygwin32/
mud++0.35/src/os/win32/
mud++0.35/src/os/win32/bcppbuilder/
mud++0.35/src/osaddon/
mud++0.35/src/util/
MUD++ change log. Not everything but most of interest.

0.35 - Hints obiwan error fix found by George
	- added preliminary mudasm spell support
	- argument delimiter for interface funs changed from __ to _P_
	- shell utilities moved to util directory
	- ./configure tries to detect boool
	- memory allocator for LList nodes
	- handling of gzipped player files
	- garbage collector moved to mark&sweep (from reference counting)
	- started to implement object LangX data
	- priv bits are handled as bits not numbers in pc.cc - allow mask-checking
	- moved back from .cpp to .cc
	- more small changes

0.34- - Fixed bug in getlong() which was messing up Wizard
	  privelege bits. Wiz commands work again.
	- Minor stuff, file combination (trigs.cc, object.cc < objtypes.cc).
	- MUDC - mc renamed to mcc (mc is Midnight Commander on some systems)
	- few other VM related changes

0.33- String::getArg() handles "a string" as [a string], not ", a, string, "
	- George pointed out email header in one of the MUDAsm files 
	- 4 patches from Artur
	- few bugfixes
	- added sleep opcode and pulse update for VMs
	- there are many VMs now and they are created as needed
	- online server parameters
	- ostat, mstat, rstat
	- Artur started IO class improvements to prepare for merging of
	  files, sockets, buffers and strings.
	- variable args for Error class

0.32- 6 patches from artur
	- new format of argument and local variables definition
	- added static variables
	- compares & jumps changed in way Sektor proposed
	- get rid of image.* special format - now it is just one big .mo file
	- interface for dynamic linking added (have to add user commands :)
	- hints system added
	- case/switches added to MUDAsm
	- stuff for cygnwin32 port
	- various buf fixes
	- Some more MUDC code from me (been busy elsewhere lately)

0.31- More MUDC development
	- MUDAsm now supports named locals (thanks Artur), bug fixes
	- Patches are art030a.dif, mel030a.dif, mel030b.dif

0.30- Arrays added to VM 
	- Alignment patches for VM
	- MUDC started (src/x)

0.29- Bug fix (overflow in PC::out() )
	- Bug fix (crash on reconnect due to new GC code)
	- Comment support for mudasm (use #)
	- Added couple of mudasm functions (say, getCharRoom, benchmark)

0.28- Virtual Machine Added by Artur (doc/vm for docs)
      Executes a bytecode binary, if you can learn the assembler
	  language you can go ahead and start writing scripts.
	  Full compiler will come sometime. 
	- mudasm and mudln (assembler and linker) added (in mudC directory)
	- SocketBuf class almost finished, but code is still in my
	  VCL component waiting to be moved back to MUD++.
	  Socket classes have been majorly reworked and improved and
	  tested on Win32 side, waiting to be ported.

0.27- Changed default C++ source file extension from .cc to .cpp
	  I added to shell scripts which rename cc -> cpp and cpp -> cc
	  in case you have a preference (cctocpp.sh and cpptocc.sh).
	  .cpp is needed for Borland C++ Builder and probably makes it
	  easier for others too. Also created seperate directory (bcppbuilder)
	  for Borland C++ Builder project files.
	- Socket class patches, added automatic winsock initialization to
	  class so it is not required to call it from main anymore.
	  Win32 patches
	- Started a little thread stuff
	- Moved ltoa and ultoa to ltoa.cpp
	- Renamed Stream, OStream and IStream to
	  MPPStream, MPPOStream, and MPPIStream
	- Major patches from Artur for Virtual Machine and Garbage Collection

0.26- Last minute patches from Artur
	- bug, idea and type commands added along with online viewing/purging
	  of these files.

0.25- Bug fixes in new socket code
	- Lots of patches from Arthur
	- Objects redesigned into a class hierarchy with one class per
	  object type
	- Allocation info in classes and memory command implemented (Arthur)

0.24- Bug fixes in socket code
	- SunOS and ULTRIX were failing because of getsockname() being
	  called before the socket was bound to an address. Hope
	  to get good reports from those platforms now.
	- New classes started (Buf and SocketBuf)
	  (Now that we are doing buffered Socket classes we need to
	   merge all IO class (Desc, Stream*, File*, Buf and Socket*) into
	   one hierarchy)

0.23- Added Arthur's 022b patch
	- Bug fixes in LList code (report by Arthur)
	- Bug fixes, additions, reorgs to Socket class, new methods
	  CanReadWait( sec, usec ) and CanWriteWait( sec, usec )
	  for testing on slow connections
	- New class started - SocketBuf for encapsulation of network
	  I/O and processing of data

0.22 ( All Arthur's patches )
	- Help system changed - added HashTable for quick lookups, and make it
	  privilage-bit based in addition to level-based access.
	- removed write/readProto funs from Streamable interface and changed code
	  accordingly
	- added base for developing guild/class code - for now just skeleton, it
	  saves all things in external files, so it will be possible to edit all
	  on-line
	- changed Makefile to use automatic dependency system
	- added growable Array class
	- added Erratum class ( for critical errors )
	- few small changes throughout the code

0.21- Help editor added by Arthur
	- Help system improved by Arthur (no more array! :) )
	  (may still want to use HashTable<> instead of LList<>)
	- Trigger improvements by Arthur
	- Various other utility stuff, memory command work, etc.

0.20- Finished repop editor in redit (still need to add alternate repops)
	- Crash bug fixes and mods to oedit/medit
	- Combat code re-organization and additions
	- Changes and cleanups to character and object pulsing and extraction
	- Moved motd, title and socials.db to ../etc directory
	- Cleanups for DEC C++ (not complete)
 
0.19- Reconnect security bug fix
	- values array added to object editor (for food, drink, weapons, etc. need it)
	- finished eat/drink
	- patches to OLC for triggers (Arthur)
	- patches to trigger code
	- collect command
 
0.18- Descriptor leak found by Arthur B.
	- Trigger patches from Arthur
	- More shop stuff (collect) by Arthur
	- Added eat and drink (wizards can also eat anything)
	- fixed blank chat/immtalk/say (Hostage's recommendation)

0.17- Merged Win32 patches
	- Added shop patches from Arthur B. (lots more to come!!)
	- Bug fix in goto in room editor
	- Crash bug fix in "where" command

0.16- Release under the GNU Public License
	- Check the diff, lots of stuff :P
	- Purge bug fixed
	- Multiple connect/shell bug fixed (report by Casper)
	- Saving of room char was in fixed (reported by David)
	- toggle command, wiznet channel toggleable (request by David)
	- grant/revoke all (request by David)
	- Finished the 'get' command, works with containers (David :) )
	- 'peace' command to stop fights (request by David)
	- 'goto' added to room editor (request by David)
	- Area format changes, size, race saved as strings

0.15- Various bug fixes, one bad zone saving bug fix
	- Title screen can now be as big as you want but it is
	  now loaded only once at boot, 'reboot title' to reload.
	- OLC enhancements, bug fixes, 'list' command added to
	  medit, oedit and redit. Listing commands in aedit also.
	- autoexit, autodir, 'look' output cleaned up as well
	- mwhere, owhere, mstat, ostat (stub commands, not fancy)
	- Lots of code converted to use 'for_each()' macro, really
	  cuts down on code size.

0.14
	- Tiny memory leak fixed in Socket::accept()
	- Don't exit when an accept fails in Server class.
	- Added for_each() macro to use for llist operations
	  for_each( list, ptr ) { code ... } expands to
	  for( list.reset(); ( ptr = list.peek() ); list.next() ) { code ... }
	- fixed up do_prompt
	- triggers and actions started, spell casting doesn't use wait
	  state lag anymore and spells are interruptable
	- converted rest of spells to work with new code, tweaked spells
	- fixed bug in do_cast that didn't allow a spell with no cmd line
	- class MudObject, anything that takes part in the mud world.
	  Different from Thing which has weight, volume, etc.

0.13
	- Major shell work/pseudo-ttys work correctly now with terminal
  	  emulation (for Linux & Alpha at least). Mini-telnetd state
	  machine handles shells (needs beefing up).
	- Room editor uses 'spico' for default editor instead of line editor.
	  Secure pico must be installed seperate.
	- InFile::getstring() now adds \r for each \n if missing.
	- PC::view() does \n to \n\r translation also.
	- Socket mods
	- exit_bits[] wasn't "terminated" with 0, was crashing
	- InFile::getstring will not bug on EOF, will terminate string and return
	- Lots of function name changes for clarity
	- String class mods/additions

0.12
	- 1000 lines of new code, too much to remember, gonna start using RCS  :)
	- 'uptime' command, server runtime, login counts
	- Socket bug, was overwriting buffer if read more than one
	  packet in a call.
	- Socket bug, wasn't handling TCP RST packet which caused
	  the server to exit. Now just handle it like an EOF.
	- Started UDP support in Socket class
	- 'uptime' command added, user counts
	- 'smite' added for wizzes
	- Races started, race selection on new player login added
	- OLC majorly worked on, most stats on NPCs and Objects,
	  "save" added to all editors, line editor bug fixes over 0.11
	- Area formats extended, so old files have to be converted
	- redit has repop editing and default bitmask for new rooms
	- Orientation - player can get lost, exits appear scrambled
	  Added compass object type and 'use' command for orientation
	  Orientation not active now, to test it use the 'smite' command
	  to make someone confused. I think this is unique to MUD++, at
	  least I haven't seen it before. This gives races like minotaur
	  an advantage. 

0.11
	- 3 BUGS all related: Reboots were failing. (reported by me!)
	  Server::boot( int, int ) was not setting masterdesc, masterport,
	  Daemon creation code was being called again if the server was
	  rebooted which was screwing descriptor numbers by closing stdin
	  which was being used by Server port.
	- Area load failure fix due to switch/case bug (reported by Chris)
	- Line delete bug in text editor fixed. (reported by Hoo-Sun)
	- String class no longer calls memmove(): Alvin reported his SunOS
	  box doesn't have memmove() 

0.10- Now saves what room player was in (Char::room_index)
	  NPC class can use this field as well for cryo-saving
	- 'afk' and 'title' commands, afk allows you to leave a reply for tells 
	- Stuart wrote a decent who list, flags show also (afk,editor,linkdead)
	- PC::prompt changed from char * to String
	- Changed class Node from a template to a void * implementation.
	  This cut 97k off of exe + debug size.
	- Random class changed to use gettimeofday for millisecs for seed
	- class changes: IndexList to HashTable, Indexable to HashNode
	  indexable.h -> hash.h, indexable.cc -> hash.cc
	  HashNode no longer a template (uses void *) and HashTable
	  uses only a String as key now, is not aware of class Index
	  Index::scope now handled externally from HashTable
	  ** CODE MUCH EASIER TO UNDERSTAND!! :) **
	- class changes: Spell changed to SpellType, new class for Spell
	  Spell represents an instance of a SpellType with level also.
	- Zone format has new fields in Objects, NPC, Room and Area
	- pager works right from editor now

	** COMMANDS **
	- afk, title, and..... snoop (by popular demand =P )

	** BUGS **
	- main loop, wasn't checking return code from readInput before
	  calling command(), bug showed up for example, CTRL-D would
	  put data into inbuf without CR-LF so every time through the
	  loop it tried to issue a command.
	- Server::canRead(), canWrite()
	  Backwards, canRead() was checking write fd_set and vice-versa.
	  Fixed and now main loop is much more efficient, was calling
	  readInput() regardless of whether socket could be read or
	  not which was a lot of extra system calls:
	  1 read() system call x 10 per second x number of players  :(
	- installSigHandlers() : replaced sa.sa_mask = 0 with
	  sigemptyset( &sa.sa_mask ), reported by Donald Richardson
	- SIGCLD changed to SIGCHLD (dunno what I was thinking)
	- Bugs fixed in line editor. 
	- Somehow in 0.9 I messed up NPC/ShopKeeper saving
	  so a zone save would lose all NPC data - Reported by Kai

	** OLC **
	- Added Object and NPC creation to oedit/medit
	- Added room_bits to class Room and redit 
	- Added object_bits to oedit
	- Added npc_bits to medit
	- Line delete added to line editor
	- Added helps to all editors 
	- Added new members to class Area min_level, max_level, and
	  title string. Title can be the original author's info
	  while the area name can be used more in the game.

0.9 - MUD++ now runs as a true daemon. Command line doesn't need &
		Logging goes to mud++/log/server.log
	- 'show' command added (currently 'show cluster' is only option)
	- Distributed cluster started. Now MUD++ loads its port info from
		mud++/etc/HOSTS so to change port edit that file.
		New class Host.
 	- New member function InFile::skipline() 
	- Create lower level class 'Descriptor' out of Socket class to
		provide the read/write interface outside of Socket context.
	- Infinite loops in do_grant, do_revoke temporarily patched
		until I change getBitName() globally to return NULL
	- Can now reconnect even in an editor

	** Crash bug fixes **
	- null deref bug fix in Server destructor (fork() made it show up)
	- unitialized vars in class Index constructor (redit dig&save)
		Reported by Kai (thanks!)
	- empty string door names on new rooms created with redit caused
		area file fail to reload

0.8 - BUG report from Casper concerning memory mapped io, fixed.
	  Was not checking if the cache was mmapped before I tried to unmap it.
	- Change signal handler to RETSIGTYPE which is defined by configure script.
	- Cleaned up some shadowed variable names.

0.7 - buy, sell, price, value added although you can sell anything to
		any shopkeeper, but the framework is in. Shopkeeper wont buy more
		than 3 of any item.
	- 'where' command show players in zone, although many muds will
		want to disable this for morts since it makes sense enhancing
	    skills useless (or almost)

0.6 - Bug fix release. 0.5 unuseable due to password bug in Nanny()

0.5	- Maintennance release mostly:
	  Cleaned up source to compile under Solaris Proworks C++
	- Naming changes, *::writeTo(), *::readFrom() is now save(), load()
	- More OLC code.

0.4	- SOCIALS!! Finally, since everyone was complaining, I coded em.
	  Check the area/socials.db file or look at Char::interp() to learn how
	  to write your own. Mail any good ones to the list.
	- Added character's sex. Socials had to have it to work. Char creation now
	  asks player for sex.
	- player idling code, 'users' command reports idle time in pulses
	  code automatically logs player out after MAX_IDLE pulses in pulse.cc
	- Added 'privileges' command to show your privs or another's
		For now anyone with WIZARD privs can see other folks privs
	- area/motd file is now the Messages of the Day
	- wizLog() function added. Logs a string to imms.
	- Tinkered with paging/prompt code
	- Typo in socket.h reported by Alastair <quest@newline.newl.com> 
	- took out the bitNum() function in utils.cc since it was useless
	- reboot command changed. You must specify what you want to reboot/reload
	  Can reload socials, or whole server. Area reloading currently done
	  from aedit.
	- Little more spell code. objCanCast boolean now to keep Object::cast()
	  from calling spells that were not written for object cases.
	  Try 'cast lightning sword' for some fun :)
	- BUG: lookupSpell() now returns NULL instead of spellNone
	  other fixes like leading whitespace making cast fail.

0.3	- Players can now drop link/reconnect like normal
		WARNING: No timeout yet (autologout), or the like
	- Added PORT var per request of Mark <mark@phoenix.mercer.peachnet.edu> 
	- ' for say, still must use space between command and args though
	- (*LOST LINK*) added to who list
	- Char::die() function.
		1) Corpse creation
		2) Inventory/Treasure transfer to corpse
	- do_get minor bug fix
	- get all [in|from] <object>
	- more weapon, combat code
	- Random mod by 0 bug fixed (fpu exception)

0.2
	- Added fields in area file for Rooms, ( terrain, zone, indoors )
	- 'weather' command checks indoors
	- added 'force' command
	- more code on TextEditor class, RoomEditor can build now
	- more repop code
	- Socket bug fix, ident command bug fix
	- Editor bug fix
	- Infinite loop fix in getPCWorld()
	- Lots of String improvements and bug fixes, inlines
	  String [] operator now works, and will auto-extend buffer if needed.
	- Command interpreter improved, pager fixed, output system now faster 
	- 'tell' bug fix
	- 'advance' bug fix
	- if Nanny fails to lookup start room, it will put player in next
	  available room or exit on failure.
	- OLC now saves areas in current format (oops - was out of date)
	  reload works

0.1
	- Fun starts here, released - Mar 28 1996:


Update Mar 25 1996:
	- ofind, mfind support primitive wild carding
	  Example: ofind *:* or mfind drow:*, mfind *:goblin
	- Started converting all old char * stuff to use String class
	- added argument parsing to String class ( startArgs(), getArg() )
	- So many other changes, I can't even remember
	- For the 12th time, considered recoding LList class using Iterator
	  objects instead of the read-only list copying I do now. Decided not
	  to for the 12th time due to my perpetual waffling. Need to take a
	  look at the Rogue Wave implementation before I go any further.

Update Feb 16 1996:
	- input buffering added, clients work now but still need to clean up.
	  command repeat doesn't work with new code, simple fix
	- owhere command
	- grant, revoke command, privilege system written sorta VMS style :/
	- Hash command tables
	- Bug fixes in LList class
	- LList assign operator and copy constructor. Copy constructor
	  does a node by node copy of a list. Assign operator just makes
	  a efficient but read-only copy of a list for iterating.
	- LList::copy() method
	- String::sprintf() and String::sprintfAdd() methods for formatted
	  String building.
	- Repop code improved. You can now repop an item inside an existing
	  item. New repop codes added for an extremely nice system. Read
	  repop.cc for more info although its not finished.
	- Started moving things out of mud.h and const.h. Both of these files
	  will probably go away. All bitType tables need to be moved to
	  bit.cc

Update Jan 9 1996:
	- New Socket class with constructors what make connections nice.
	- Beginnings of RMPC *Remote Mud Procedure Call* Protocol
	  and distributed server option.
	- BAD bug fixes in DLList class.
	- Replacing DLList with LList because the code is just not
	  benefiting from the double links mainly because when you
	  pass a node into a DLList object member, the object cant
	  just assume that the node you passed is valid so it still
	  has to traverse the list. LList will take less RAM and be
	  identical in performance. 

Update Jan 6 1996:
	- ident protocol support. ident command is blocking right now
	  will incorporate a non-blocking version into the TCP server
	- More combat - corpse function, combat pulse, exp gain

Update Jan 1 1996:
	- OLC - room editor fully functional
	- OLC - area reloading single or all
	- bug fix in ltoa, ultoa
	- mud++ now runs as a daemon, no shell extras needed
	  including unlimit coredumpsize

Update Dec 31 1995:
	- OLC - room editor started.

Update Dec 27 1995:
	- OLC - Area editor done.

Update Dec 21 1995:
	- Spell class done. 3 spells coded for concept.
	- Object loading/saving finished, values load as either
	  numeric or string depending on object type like Envy's spells.
	- Potions, scrolls work. Other magic items are now trivial to
	  finish.
	- Player inventory loads/saves.
	- Combat begun. Klepto is writing a Attack class. A Char has
	  a DLList of attacks. Some more pulse code.

Update Dec 4 1995:
    - Full repop code done (5 types M,O,P,G,N) objects repop inside
      objects and mobs successfully.
    - Derived ShopKeeper class from NPC, Shopkeepers now load in
      repops along with all their inv. The 'list' command coded.
    - Started re-coding online creation.

Update Nov 27 1995:
	- object manipulation - get, drop, wear, remove, put, look in
	- Gold added, containers coded, repops coded, affect/mod support
	- Preliminary magic coding/testing now that affects work
	- goto, transfer, warm reboot ( new exe without killing
		connections )
	- preliminary random mobile movement
	- Unlimited bits