game/bin/
game/data/
These are the changes to TinyMUX version 1.0 since TinyMUSH 2.0.10
patchlevel 6 (which is documented in the file NOTES).  Refer to the online
help for more information about new features or commands.

Bugs and patches should be sent to:
	lauren@ranger.range.orst.edu
The latest version of this code is normally running at:
	Children of the Atom, bison.range.orst.edu 2099.

TinyMUX 1.0 patchlevel 4:

User level changes:
- New switches to commands:
    @pemit: /list
    @teleport: /quiet
    @dump: /optimize
    @wall: /admin
- New attributes:
    @amail @atofail @mailsucc @otfail @signature @tofail
- New commands: 
    @cpattr @startslave think wiznews +help brief
- New functions:
    alphamax() alphamin() andflags() ansi() art() beep() children() columns()
    cwho() dec() decrypt() default() die() edefault() elements() encrypt()
    eval() findable() foreach() grab() grep() grepi() hasattr() hasattrp()
    haspower() hastype() ifelse() inc() inzone() isword() last() list() lit()
    lparent() matchall() mix() munge() objeval() objmem() orflags() playmem()
    pmatch() ports() scramble() shl() shr() shuffle() sortby() strcat()
    strtrunc() udefault() ulocal() vadd() vdim() vmag() vmul() vsub() vunit()
    visible() zwho()
- Side effect functions:
    create() link() pemit() set() tel()
- New flags:
    AUDITORIUM: Enables SpeechLock checking.
    ROYALTY: Can see things like a wizard, but can't modify.
    FIXED: Can't teleport or go home.
    UNINSPECTED: A marker flag for things which haven't passed inspection.
    NO_COMMAND: Objects with this flag aren't checked for $-commands.
    HEAD: Marker flag for group heads.
    NOBLEED: Prevents color bleeding on systems where ANSI_NORMAL does not
             work.
    TRANSPARENT: Displays exits in a room in a long format.
    STAFF: Marker flag for staff (no powers come with the flag).
    MONITOR: When set on a player, shows MUSHwide connects and disconnects.
    ANSI: When set on a player, enables output of ANSI color codes.
- New config parameters
    commac_database guest_nuker guest_prefix have_comsys have_ident 
    have_macros have_mailer have_zones have_plushelp ident_timeout
    mail_database mail_expiration number_guests parent_recursion_limit
    plushelp_file plushelp_index wiznews_file wiznews_index
    zone_recursion_limit
- New search classes:
    POWER ZONE
- @list powers added.
- @decompile now shows zones, and parents.
- ANSI color support has been introduced. Names of things, rooms, and exits
  may include ANSI color, and in most cases name checks will be matched as
  if the name did not have color.
- In addition to the ansi() function, the %c substitution may be used for
  ANSI color. ANSI_NORMAL will be appended to any string that contains ANSI.
- A channel system/comsystem has been added.
- Comsystem commands:
    @cboot @ccharge @ccheck @cchown @ccreate @cdestroy @cdiscover @cemit
    @clist @coflags @cpflags @csec @cset @csweep @cundiscover @cusersec
    @cwho addcom allcom comlist comtitle clearcom delcom tapcom
- A new mail system has been introduced.
- Mailer commands:
    @mail @malias
- Mailer manages a linked list for each player, hashed table of player
  dbrefs in use.
- Reviewing and retraction of mail sent to players added.
- Mail sending rewritten to be more like Brandy@CrystalMUSH's +mailer.
- A new macro system has been added.
- Macro commands:
    .add .chmod .create .CLEAR .def .del .desc .edit .ex .gex .list .undef
    .status 
- Support for multiple guests characters added, similar to old system, 
  Guests are locked, set ANSI and NO_COMMAND, and inherit the zone,
  parent, money, @desc, @aconnect and @disconnect of the prototype guest
  character.
- Zones have been implemented. Control of a zone object gives a player
  control of all objects zoned to that object. Commands set on a zone object
  will be inherited by all objects in that zone. @aconnects and @disconnects
  are also inherited. @chzone is the command to change zones.
- @aconnects and @adisconnects set on the master room are global.
- Powers have been introduced, granting certain aspects of wizard power to
  individual characters using @power.
- Page command modified to take a list of players, in the format
      page [<player-list>] = <message>
  The last paged player or list of players can be paged with just
      page <message>
- Wizards may now 'cd' at the login screen to connect DARK.
- Two new indexed files, for +help and wiznews. The file for +help may
  include percent substitutions for color.
- BUILDER is no longer a flag, converted to a power.
- Wizards no longer obey any kind of lock.
- RWHO code has been removed.
- iter(), parse(), and @dolist now use #@ as a marker to show the position
  within the list.
- @edit now hilites the changed text.
- Log now shows exact failed connect string.
- #1 can no longer @newpassword itself.
- Updated to read flat file databases up to PennMUSH 1.50 p13, will also
  read DarkZone variant of PennMUSH database.
- Speechlocks are now implemented, depends on the AUDITORIUM flag.
- OUTPUT_BLOCK_SIZE defined in config.h, tune for your memory needs.
- The commands SESSION, DOING, WHO, QUIT, LOGOUT, OUTPUTPREFIX, and
  OUTPUTSUFFIX are no longer case sensitive after login.
- The flags wizard, and hidden may now be @set on attributes.
- Mail expiration checking added. Mail is automatically deleted after a
  certain number of days. 
- Minor bug in setinter() fixed, ex: setinter(a a a b b b, a a b b) 

Internal code changes:
- New functions nhash_firstentry and nhash_nextentry for numbered hashtables.
- search_nametab now returns -2 if permission is not given.
- Logged out commands no longer checked when player is connected, and have
  been included in regular command table. SESSION, DOING, WHO, QUIT, LOGOUT,
  OUTPUTPREFIX, and OUTPUTSUFFIX, when connected, affect all of the player's
  logged in descriptors.
- Username and hostname lookups now done by a slave process, to prevent lag
  when a nameserver or ident server is locked up. Ident processing is done
  much more reliably, with a 5 minute timeout.
- functions.c split into functions.c and funceval.c. Most new functions are
  in funceval.c.
- The GNU database manager is required for use.
- Attribute caching has been eliminated, object caching always used.
- Beta port concentrator code introduced, not recommended.
- When a switch is used, the permission for that command will no longer be
  checked before the permission for the switch.
- MOTD message length extended to 4096 bytes.
- GOING objects are no longer saved, blank spaces are filled with GOING
  objects when the database is loaded.
- A bug which permits overflow of certain buffers from the connect screen
  has been fixed.
- @readcache memory leaks fixed, as well as possible buffer corruption in
  decode_flags and flag_describe.
- @alias now checks to see if the alias is a valid player name.
- 'Three message' bug in @destroy, when two objects of the same name are
  nearby, is fixed.
- Many notify()'s in @list changed to raw_notify().

TinyMUX 1.0 patchlevel 5:

- New config parameters
  fixed_home_message fixed_tel_message wizard_pass_locks
- Code made clean to work with 64-bit systems.
- @cpattr bugs fixed.
- @aconnects and @adisconnects are now checked for every object in the
  master room.
- zfun crash bug with no arguments fixed.
- Now loads parents from Penn systems correctly.
- Problems with locks on Penn 1.50 p13 and p14 fixed.
- Now able to load databases from TinyMUSH 2.2.1.
- strcpy, strncmp rewritten as StringCopy, and StringCopyTrunc and made
  inline (tested for future version).
- Quota and RQuota attribute conversion from 2.2 done correctly now.
- @set object/attribute=hidden|wizard works correctly.
- New attribute flags displayed: M (mortal dark) W (wizard only)
- Problems with attribute names of exactly 32 characters fixed.
- Division by zero problem in COLUMNS() fixed.

TinyMUX 1.0 patchlevel 6:

- @cpattr modified to be more flexible.
- Database compression works.
- Events checking system added, only @daily implemented at the moment.
  'eventchecking' parameter added to @enable/@disable.
- Config parameter signal_action altered. On a fatal signal, the MUX either
  dumps a crash database, attempts to dump core, and reloads the last
  checkpointed database, or attempts to dump core and exits.
- New attributes:
  @daily
- New commands:
  @program @quitprogram @restart
- New functions:
  empty items peek pop push
- New powers:
  prog
- New switches:
  @mail - /cc
- New config parameters:
  cache_trim events_daily_hour guests_channel public_channel site_chars
  stack_limit
- Config parameters removed:
  abort_on_bug cache_steal_dirty garbage_chunk gdbm_cache_size have_ident 
  have_plushelp ident_timeout recycling
- Logged out commands (WHO, QUIT, etc) now only work for the descriptor that
  executes them.
- Both memory based and disk based (default) database handling are available
  via options in the Makefile.
- Radix string compression is now available via options in the Makefile
  (Andrew Molitor)
- @mail/fwd now allows you to edit a message before sending.
- @mail/read now includes a To: field which shows multiple recipients of a
  message.
- You may now place quotes around a multiple word name when using @mail.
- You may now mix player names, mail aliases, and mail numbers to be replied
  to in any @mail player list.
- Channel usage now costs a set amount of money, specifiable by the channel
  owner or a wizard.
- @nuke of any object (players, exits, things, and rooms) sets an object
  GOING, and destroys the object during the next database check. This is the
  way rooms were destroyed in earlier patchlevels.

Internal code changes:
- Wildcard routines modified slightly for speed.
- Hashing is smart: often used keys are looked up faster.
- Bugs in @malias fixed, mortals can no longer delete global aliases.
- Attribute and evaluation locks are written out using attribute names
  instead of numbers, to be friendlier to database filters. (Andrew Molitor)
- Attributes are looked up on an object using a binary search. (Andrew
  Molitor)
- Database chunk code reworked to make the allocation strategy of large
  continuously growing objects better. (Andrew Molitor)
- An empty third argument to fold() is treated as an empty base case.
- M_READ in mail.h changed to M_ISREAD for Solaris compatibility.
- Floating point exceptions under Linux fixed (Darrin Wilson)
- squish() no longer squishes newlines and tabs.
- Under Linux, optimized versions of string functions are used.
- ToUpper() and ToLower() are now simple macros.
- @mail/stats now works correctly.
- Comsys bug involving large numbers of players on a channel fixed.
- New style of management for mail messages prevents duplicated copies of
  messages to multiple recipients.
- Channel owners may use cwho().
- Fixed memory leaks involving queue overflows.
- Improved malloc debugging, with makefile options.
- Garbage objects are now of type TYPE_GARBAGE, instead of TYPE_THING.
- Minor bug with zone control fixed.
- Fixed memory leaks in sortby, foreach, and zfun.

TinyMUX 1.1 patchlevel 0:

- New config parameters:
  use_http concentrator_port
- New flags:
  VACATION - set only by wizards, reset when player connects. Helps mark
  inactive players who will eventually return.
- WWW support, in conjunction with 'muxcgi' external CGI program.
  (to be enabled in patchlevel 1)
- Concentrator integrated and made part of MUX distribution.
  (to be enabled in patchlevel 1)
- Fixed bug in @mail/quick.
- Fixed bug with names and pennies of cloned objects disappearing.
- Parser changed for speed, and all functions modified to support the new
  parser changes. (idea by T. Alexander Popiel)
- Guests are no longer set ANSI and NO_COMMAND by default, they follow
  the player_flags parameter.
- Names in page and mail lists are now seperated by commas.
- When given a dbref number, pmatch() will evaluate identically to num().
- Fixed bad names bug which allowed multiple players of the same name.
- Fixed bug that corrupted database on disk-based databases when LBUF_SIZE
  was changed. Buffer lengths may be freely changed.
- Buffer lengths doubled.
- WHO now shows the record number of players connected since startup, and
  the maximum number of players allowed online.
- @mail bugs that caused random seg faults fixed.
- Fixed crash bug with push() used with no arguments.
- If an object or it's owner is set DESTROY_OK, it is destroyed immediately.
- Added a 3rd flag word.
- Problems loading some Penn 1.50.p15 databases fixed.
- @list process now shows number of descriptors available to the process.
- pemit() args are now only evaluated once.