ProtoMUCK 1.61 was intended to be mostly just a bug fix release, 
though there's a few new features in it as well. Think of it as
a cleaned up version of Proto 1.60. 

Changes from Proto 1.60 -> Proto 1.61
INTERNAL:
April 11, 2001
- Added wiz_zombies @tuneable. Setting this to yes makes it so that
    only wizzes can @set the Z flag on objects of type thing.
- Added min_progbreak_lev @tuneable. Setting this to 0 allows all
    players to use @Q (Or whatever you have made the break command to) 
    to kill foreground or read processes. Increasing this @tuneable 
    will make it so that players with lower than that M or W level
    cannot use it. W2+ can always use the program break command, 
    regardless of how high this @tunable gets set.
- Fixed a minor bug where players set = V could not enter rooms with a
    V flag on it.
- Made it so that DARK players no longer trip @odrop messages like they were.
- Made it so that any program set = GUEST cannot be run by a player set GUEST.
- Made it so that any action set = GUEST cannot be used by a player set GUEST.
- Made it so that things set ZOMBIE cannot use actions set ZOMBIE.
- Fixed it so that @osucc and @succ messages don't get called when puppets
    and vehicles try to move into rooms they are banned from.
- Fixed a bug with the 'lastused' timestamp not getting updated on players 
    except for when they connected.

MUF
April 12, 2001
- Fixed a crasher from RCLEAR()ing locally declared opers in CHECKOP() checks.

***********************************************************************

This file details all the changes made in the ProtoMUCK server in going
    from ProtoMUCK 1.5 to ProtoMUCK 1.6. Even though there isn't a major
    jump in numbers between these two versions, there are a ton of changes
    made to the code, and it is recommended everyone upgrade from any
    previous version of ProtoMUCK to this new 1.6 release. 

Changes from Proto 1.5 -> Proto 1.6
INTERNAL:
Jan 10, 2001
- Added customizing port support. Details to be provided down the line.
    The ability to have MUF programs run when a port on the MUCK is
    connected to is now possible.

Jan 21, 2001
- Made it so that @edit and @program reports the unparsed name of the program
    that is being edited.

- Made it so that the @teleport messages indicate what was moved and to where.

Jan 23, 2001
- Adding the note about the additional ports support in 1.6. This was done a 
    little while back, just making note of it now. 
    To make the MUCK start up and listen to more than than the normal 3 ports
    it has before, simply add more ports in the restart script after the
    initial port. What these additional ports can do is controlled by props
    stored on #0. The props are as follows:
    @ports/<port#>/idle:<time in seconds> - Seconds before connection gets dropped
                                            for being idle. MUF and HTTP ports are
                                            not affected by this idle time. 
    @ports/<port#>/MUF:<muf program dbref>- If the port is to be a MUF port, put the
                                            dbref of the MUF program to call here.
    @ports/<port#>/type:<tupe # for port> - This number determines what the port
                                            type is to be. The options are:     
                                                0 = Text Port     (Telnet)
                                                1 = HTTP/WWW Port (Webserver)
                                                2 = Pueblo Port   (Pueblo)
                                                3 = MUF Port      (MUF Program)

Jan 26, 2001
- Added SHUTDOWN @power which grants that player the ability to shutdown or
    restart the MUCK. Intended for server admin that aren't actually staff on
    the muck.

Jan 27, 2001
- Added CONTROL_MUF @power. A player who has this @power will pass any 'control'
    check if the object is a MUF program. This allows prop viewing, code editing,
    and @chowning to themselves (though not @chowning back to the previous owner).

Feb 02, 2001
- The <meta> tag does not get sent if the descriptor is booted before the end of 
    the MUF program that was called.
- Fixed a glitch concerning booting players connected to the web port and running
    a background process.

Feb 11, 2001
- Made a new WHO interface that has a second wizard WHO.  (WHO !!).
    The new WHO will show DARK players if you are a wizard, or the player
    is yourself.  Also, it will show if the player is IDLE.  The old
    wizard who change the Location dbref number to the port number, and
    the new wizard who shows the inputk, outputk, the number of commands,
    and the connection type name.
- Added an input and output size counting system for descriptors.
- Made the @credits command return in colour and show the new email
    addy.
- Removed the login_huh_command and huh_command @tunes.
- Added new @tune params: tp_mpi_needflag, tp_mortalwho,
    tp_guest_needflag, tp_fb_controls, tp_allow_old_trigs, and
    tp_dump_copies.  All of them replace old #defs.
- Added the ALL_MUF_PRIMS @power. Grants full access to all MUF prims.
- Added CONTROL_ALL @powers. Has 'control' over everything on the MUCK.

Feb 13, 2001
- More fixes to the new WHO !! to make it more accurate. 
- Made it so that if the webSurfer character is set both DARK and
    PARENT, then a lot more detail about web activity will be sent
    to LOGWALLed W3's. 

Feb 15, 2001
- Fixed the ++ and -- prims that had gotten broken earlier in 1.6's 
    development.
- Caught sysparms.txt up to date.
- Removed reg_wiz @tuneable. Used to be for @hopper support.

Feb 27, 2001
- Added @powers to unparse.c. They will be listed as lower case letters
    in the unparsed name of players. 
    ANNOUNCE      [a]   BOOT          [b]   CHOWN_ANYTHING [c]
    EXPANDED_WHO  [x]   HIDE          [h]   IDLE           [i]
    LINK_ANYWHERE [l]   LONG_FINGERS  [g]   NO_PAY         [n]
    OPEN_ANYWHERE [o]   PLAYER_CREATE [p]   SEARCH         [s]
    SEE_ALL       [e]   TELEPORT      [t]   SHUTDOWN       [d]
    CONTROL_MUF   [f]   CONTROL_ALL   [r]   ALL_MUF_PRIMS  [m]   
- Added @powers searching to @find. The syntax is:
  '@find <search string>=[<flags>][:<powers>]=<search parameters>'
  Doing '@find =:' all by itself will list all players on the MUCK with
  @powers.
- Made the Proto Wiz Levels @tuneable. By turning this parameter off, 
  all wizards of W2, W3, and W4 have permissions equivalent with Neon's
  W3 bit, or FB's W bit. Only #1 has the permissions of the W4 level when
  this is tuned off. And finally, W1's will be treated as M3's, losing all
  of their mage perks. NOTE: Once this is @tuned to 'no', only #1 can @tune
  it back to 'yes'. Otherwise, it's a W4+ only @tuneable.

Mar 2, 2001
- Added optional messages to @shutdown and @restart. The new syntax is:
  @shutdown <muckname>[=<message>]
  @restart  <muckname>[=<message>]

March 12, 2001
- Made it so that connection related logging only logs to the connects
    log instead of both the connects and status logs like before.

- Fixed some checks in reg.c to patch up the in-server site banning support.
    Working on a MUF front end to take advantage of this mostly unknown feature
    from Neon.

March 24, 2001
- Made the IDLE flag settable. A player can set themselves IDLE. The flag is 
    still removed when they disconnect, or enter another command. A player can
    set when they would like the IDLE flag to be set on them by the system by
    setting an integer prop of _prefs/idletime. If the player has no preference,
    then the flag gets set according to @tune idletime.
- Added a TRUEIDLE flag. This flag is not settable. It gets set by the system 
    when the player reaches the idle point set in @tune idletime. It can be
    checked for in MUF. The TRUEIDLE flag is added at the same time that the
    _idle/ propqueue is called. 
- announce_disconnect is called during shutdowns and restarts. This causes
    the appropriate _disconnect/ propqueue programs to get called before the
    server actually shuts down.
- There is a '_login/' propqueue that can be set on #0. This was in a long time
     ago ( Proto1.5 at least), but somehow escaped mention. It is a propqueue 
     that will be called whenever a someone connects to the MUCK and gets the
     login screen.
- There is a '_disclogin/' propqueue that can be set on #0. This was in a long
     time ago too, just never mentioned. It is a propqueue that will be called
     whenever a player disconnects from the login screen.

March 29, 2001
- Made it so that the descr passed to the various force calls is the least
    idle descr, instead of the first descr. This will make it so that the
    player that gets forced will have their least idle descriptor available
    to the 'descr' prim. -1 is passed if the player is not connected, just 
    like before.
- Re-added the multi-level permissions checks to @force. They were back in 
    Proto1.00, but got lost somewhere along the line. Lower wiz levels can't
    @force higher wiz levels again. 

March 30, 2001
- Fixed it so that the FLAG2 set of flags wasn't getting cleared when players
    unidled.

April 3, 2001
- Fixed the bug when stripping mis-matched ANSI ^ ^ deliminators for players
    not set = C. This change has made it so that custom ANSI tags cannot
    ever have spaces in their name, which shouldn't be a big deal. 

April 5, 2001
- Changed the expanded_debug @tune into an EXPANDED_DEBUG flag. Setting a 
    program = X will make it's debug output display more information than
    the default debug output.
- Fixed the alisten and aolisten propqueues to work correctly, rather than
    starting with an empty string on the stack.
- Fixed it so that parameters can be passed to WHO when a player is @forced
    to do WHO. Before, something like '@force <player>=WHO s' would call the
    action 'who' instead of doing the in-server WHO with the 's' parameter.

April 6, 2000
- Took the I flag out of the in-server WHO printout. The text is cramped
    enough as it is, for now.

SERVER CODE:
Jan 10, 2001
- Made changes throughout the code to free up reserved words in C++ in order 
     to prepare for eventually converting to C++ code instead.

Feb 01, 2001
- META tags in the webserver are not output if the descriptor is booted. This
    allows text files to be displayed without the META tags by simply booting
    the descriptor at the end of the program.

Feb 02, 2001
- A lot of the code was cleaned up following FB6's example.
- The restart and proto scripts now accept additional ports for the @ports 
     support.
- The MUCK should now restart safely. Caught an infrequent crasher in the
     restart code.

Feb 11, 2001
- The KEEPDUMPS/tp_dump_copies was rewritten so that it no longer
    keeps all of those extra dumps after a crash.  That was kind of
    a disk space waster.  Also, the lowest number (proto.db.#1#) is
    the newest database number now.  You can define a @tune param
    for how many backups you want (Max is 25).  Define it to 0
    to prevent any backups of databases.
- Added support for extended non-ascii/printable characters if the
    port is not a MUCK, PUEBLO, nor HTML port.
- Fixed the #define DISKBASE so it compiles and runs.
- Made notify_html and {html} notify non-html players with the HTML
    stripped out of it. [Buggy and still needs to be tested]
    [This was eventually removed. Didn't work out too good.]

Feb 13, 2001
- The binary now accepts a -PORT <port> arguement, which forces that
    port to be a text port, no matter what. This is still in the
    process of being implemented.

Feb 18, 2001
- Fixed the MUCK so that it will compile and run with MALLOC_PROFILING
    and CRT_DEBUG_ALSO, thus enabling the @memory command. This command
    is used primarially for debugging purposes and should not normally
    be enabled unless you're trying to debug RAM usage issues.

March 2, 2001
- Changed the malloc reporting functions to report on the lines of code
  where alloc_prog_string() was called from, since this will help us pin
  down the memory leak.

March 4, 2001
- Patched dangling memory leaks in the MUF code.

March 11, 2001
- Removed extract.c from distribution. It no longer compiled and we didn't
    feel it worth fixing. Nor do we like password retrieving tools anywhere
    in Proto, either serverside or in-game.

MPI:
Feb 11, 2001
- Added the MPI functions {descr} and {sysparm:<sysparm>}

April 6, 2001
- Made it so that {flags:} does not include @powers flags.

MUF:
Jan 10, 2001
- Webserver MUF calls are now in BACKGROUND mode. This means that you no
    longer have to seperate the code for in-muck programs and webserver programs.
- NEXTENTRANCE fixed. This was fixed once before, but a bugged version slipped 
    into the Proto 1.5 distribution.

Jan 21, 2001
- Changed SOCKRECV into NBSOCKRECV which now returns an error code as well as
    the string, in order to allow one to tell if a socket has been closed.
    nbsockrecv( socket -- i<error code> s<string returned)
- Added an in-server #define for SOCKRECV that simply uses NBSOCKRECV and pops the 
    integer in order to not interfer with older programs.
- Changed SOCKSEND to return a 0 if the socket is not connected..
- Added a SOCKDESCR prim that will return the descriptor number of a socket.
    Note that this returns the number whether or not the socket is connected,
    since even closed sockets still retain their socket number.
- Made it so that LIGHT can be set on players via MUF as long as the MUF runs at 
    W2 level or higher.

Jan 25, 2001
- File prims now switch between \r and \n correctly when reading in and writing
    out.
- ARRAY_SORT now sorts dbref objects according to the name of the objects, rather
    than their dbref #.

Jan 26, 2001
- Added FNAME-OK? prim. Checks to see if a passed string is a valid file prim
    shortcut, returns 0 if it isn't.

Feb 01, 2001
- Added $LOGS/ and $MUF/ directory file shortcut tokens.
- Added '\n' recognition to the MUF compilier.
- itoc can return extended ASCII characters if the program is running under
    W3 permissions or higher. 

Feb 02, 2001
- SORTTYPE_SHUFFLE was added to the options for array_sort. When this is used,
    the array get shuffled instead of sorted. [From FB6 
- Added WATCHPID [ From FB6 ]
- EVENT_SEND now sends an array. [ From FB6 ]
- COMPILE[ ref int -- int ]
- UNCOMPILE[ ref ]
- NEWPROGRAM[ str -- ref ]
- ITOC now accepts extended characters if running at W3 or higher.
- GETPIDS[ref -- arr]
- GETPIDINFO[int -- dict]
- Added TRY-CATCH-ENDCATCH [From FB6]
- Updated the MCP support to be in line with FB6's recent upgrades.

Feb 12, 2001
- Made getprop, getpropstr, getpropval, getpropfval, envprop,
    envpropstr, name, flag?, etc. work with garbage items.  Setprop does
    *not* work.
- Fixed the TRIG[ -- ref ] prim so that it works in CALL and WIZCALL
    functions.  Everything will work properly with the prim now.
- Added CONTENTS_ARRAY[ ref -- arr ] and EXITS_ARRAY[ ref -- arr ]
- Added GETOBJINFO[ ref -- dict ], GETDESCRINFO[ int -- dict ]
- Added DESCRNOTIFY alias to NOTIFY_DESCRIPTOR
- Made the TRUENAME prim return the alias if it is set and is a
    thing or player.  If it is an exit, then it will return the name
    up until the first ';'.
- Changed the program running permissions around.  If the running
    program is set SETUID and HARDUID, it will run by the triggers
    permissions.  If the program is set HARDUID, then it will run by
    the owner of the trigger.  However, if the program is set both
    HARDUID and QUELL, then it will run by the programs permission
    level.  By default, it will run by the program owners permission
    level.  Also, the maximum mlevel is the program owner.  You can
    no longer set the mlevel above the program owner for security
    purposes.

Feb 18, 2001
- Patched a small memory leak in ARRAY_SORT and a BIG memory leak in
    EXPLODE_ARRAY. Adopted FB6's version of EXPLODE_ARRAY.
- Fixed ARRAY_FILTER_PROP.

Feb 27, 2001
- Patched various small memory leaks in some of the next* prims, 
  some of the property handling prims, and a few misc prims.
- Added a CHECKOFLOW to 2 of the file prims, and to the 'stats' prim, 
  to prevent crashers from stack overflowing.
- Changed flag? to work with the new @tuneable multi_wizlevels option.

March 5, 2001
- Fixed a couple ttyerr.log for attempts to Re-CLEAR() some instructions. 
- Patched a potential minor memory leak in 'force' and 'testlock' that were possibly not 
    CLEAR()'ing their instructions when other MUF code was called from them. 
- Fixed a lot of memory leaks in propqueue, envpropqueue, interp, parseprop, and parsempi.

March 7, 2001
- Fixed memory leak in VAR! [FB6 fix] 
- Fixed interp_loop() MUF prims to respect the TRY stack locking. [FB6 fix] 
- Fixed crasher with having invalid dbrefs in arrays when using things like array_nunion, 
    array_nintersect, etc. This was a Proto 1.6 and newer only bug. 
- Fixed array_nunion, and etc., to not remove multiple dbrefs that have the same name. 
    This was a Proto 1.6 or newer only bug. 

March 9, 2001
- Made it so that ( ) marks can be nested in comments now. Naturally, for every
    nested ( mark, there needs to be a matching nested ) mark, or the comment 
    will not ever end (Compilier error).

March 16, 2001
- Patched a memory leak in array_findvals. This ended the last of the minor memory
    leaks that were being reported by @memory.

March 24, 2001
- Changed all of the next* prims into $defs that use the 'findnext' prim. 

April 1, 2001
- Fixed getprop* prims to check for dbref arguement again. Fixed 'name' to check
    for a dbref arguement as well. These were both bugs that came along in 1.6's
    development.

April 2, 2001
- Added tilde ANSI support to PARSE_ANSI, UNPARSE_ANSI, and ESCAPE_ANSI. 
    Much of the code based on the design in GlowMUCK, however tilde ANSI
    has not been added to the internal notification routines. This means 
    that in order to take advantage of it, one needs to use '3 parse_ansi' 
    to convert it to standard ANSI for output. Sticking a $def like:
    $def notify 3 parse_ansi \notify
    in the top of a program ported from Glow or FB that uses tilde ANSI 
    should do the trick.

April 5, 2001
- Fixed the large arrays and strings in expanded_debug crasher. Granted, 
    this does limit the amount of information one can see in the debug 
    print out a bit more, but it's still a lot more information than the 
    default debug output.
- Fixed descrdbref.

April 6, 2001
- Changed truename to not return the alias of a player if that alias matches
    another player on the MUCK.
- Changed array_matchval to check the names of objects for dbrefs.
- Added find_array. Same behavior as the findnext prim, except that all of
    the results are returned in a list style array.
