Changelog for the Beta Releases
===============================
Where possible, notes in [brackets] indicate when the error was
introduced. Non-specific version numbers indicate the following:
- Penn (Present in PennMUSH and introduced by porting.)
- 2.0 (Introduced in TinyMUSH 2.0.10p6 or earlier.)
- 2.2 (Introduced in TinyMUSH 2.2.5 or earlier.)
- MUX (Introduced in TinyMUX 1.6 or earlier.)
- MUX2 (Present in MUX 2.0 or later and introduced by porting.)
- 3.0 (Introduced in TinyMUSH 3.0 at some point in time.)
- 3.1 (Introduced in TinyMUSH 3.1 at some point in time.)
Names after the bug origin version are the first sources for the bug
reports. Where no name is given, the bug was discovered by the
developers. ("RMG" refers to Robby Griffin, aka Alierak; he joined
the development team on 3.0 beta 18 and is not individually credited
after that point.)
Release history:
TinyMUSH 3.0 beta 1: Initial beta release, 1999/09/27.
TinyMUSH 3.0 gamma: Standard "stable" release, 2000/12/01.
TinyMUSH 3.1 beta 1: Initial beta release, 2002/05/08.
TinyMUSH 3.1 gamma: Standard "stable" release, 2004/06/21.
=============================================================================
TinyMUSH 3.1 Beta History
=============================================================================
06/21/2004: TinyMUSH 3.1 gamma release
- Feature: @pemit/@oemit can take a /move switch, per suggestion by
Mike Whitaker.
- Fix: Fatal bug in structure() fixed; default values should be
optional. [3.0; Traest]
- Fix: Stack items could be set to -1 by pop() or toss(). [3.0; Draci]
- Fix: Evaluating the termination condition in while() or until()
could corrupt the buffer it evaluated in, causing inconsistent
behavior. [3.0; Draci]
- Fix: Better error handling around regular expression matches, fixing
at least one bug where regedit() could use an uninitialized buffer. [Penn]
- Fix: @list memory was counting vattr names twice. [3.1]
- Fix: Fixed a cache memory leak when in standalone mode. [3.1]
- Misc: Added support for Perl-style curly braces in the regedit()
replacement string, i.e. ${1} is the same as $1. The curly braces may
need to be escaped in order to work.
- Misc: Compatibility update for x86_64 cpu types (e.g. opteron).
- Misc: Code cleanup around parser calls, after making sure the parser
always nul-terminates its own output.
- Misc: Miscellaneous minor code cleanup.
-----------------------------------------------------------------------------
08/13/2003: Beta 11
- Fix: @trigger/now switch had no effect. [3.1b7; Draci]
- Fix: Patched gdbm-1.8.0 bugs, based on gdbm-1.8.3:
- gdbm_reorganize (see 'wizhelp opt_frequency') had a small memory leak.
- Too many free blocks in the gdbm database could cause an overflow.
- Fix: Beta 10 cache changes caused some attributes not to be written
out to the gdbm file. [3.1b10]
- Fix: Lookup slave no longer leaves zombie processes; requires rerunning
configure script to look for wait4(). [MUX2; Brazil]
- Misc: If the last line of the logfile is a GDBM panic: write error,
the Startmush script will stop, and direct user to run a Reconstruct first.
-----------------------------------------------------------------------------
07/30/2003: Beta 10
- Fix: The cache now keeps a single freelist. Fixed several bugs. [3.1]
- Fix: Immediate commands that modify the queue are no longer truncated
at the next semicolon, unless the command itself was halted. [3.1a2]
- Fix: @halt checks queue entry ownership more carefully to avoid
referencing Owner(#-1). [MUX]
- Fix: Don't allow tel_anything objects to be teleported by anyone. [3.1a6]
- Fix: If no database is loaded, do not log the name of the player when
setting config permissions. [3.1]
Because this version has cache code changes, games running on this
version should be backed up daily!
-----------------------------------------------------------------------------
04/28/2003: Beta 9
- Feature: Added elockstr(). Idea from Joel Ricketts.
- Fix: Restored missing statement so exits don't get set with the wrong
default flags. [3.1b8; Threnody]
- Fix: Delimiters are passed by reference to avoid a gcc 3.1 bug.
- Fix: The @Ttofail attribute has been corrected to @TOFail. [3.1a8]
- Fix: The MUSH's "dumping" status is cleared more carefully when
a child process exits, making sure it was really a forked dump
process and that it really ended. [MUX; Brazil]
- Fix: Large TRACE output no longer involves the use of freed
memory. [MUX; Brazil]
- Fix: Exits and rooms may not use the "home" command. [2.0]
- Fix: If the Dropto of a room is set to home, it's not really
invalid. [3.1b8]
- Misc: @pemit and related commands/functions avoid duplicate
recipients.
- Misc: If ladd() is given a blank list, it returns 0 instead of
complaining about the number of arguments.
- Misc: Unused lock-related code removed from get(); use lock() to
retrieve locks. [2.0; Brazil]
- Misc: Improved ANSI and delimiter handling in table() and related
functions.
- Misc: Improved ANSI handling in @edit / edit().
- Misc: When logging, garbage isn't out-of-range.
- Misc: Improvements made to lookup-slave buffer overflow protection.
- Misc: Limited lookup-slave child processes to 20 in case of
denial-of-service attack. [MUX; Brazil]
- Misc: Configure always checks for zlib if using MySQL.
- Misc: 'make clean' no longer removes the tinygdbm library.
- Misc: Workaround for broken 'make depend' on MacOS X and possibly
other systems.
-----------------------------------------------------------------------------
12/02/2002: Beta 8
- Feature: speak() now takes a says-string parameter, and obeys the
say_uses_comma conf parameer. Please note that the argument order has
changed, to facilitate the common case of not wanting a total
transformation.
- Feature: If @speechformat has the no_name attribute flag, an empty
result is treated as valid, so all-side-effect results are possible.
- Feature: lpos() can check multiple characters. Based on a suggestion from
Joel Ricketts.
- Feature: Added objcall(), which evalutes the text of an attribute from
another object's perspective, like a combination of u() and objeval().
Idea from Joel Ricketts.
- Feature: Added fcount(), fdepth(), ccount(), cdepth(), for getting
function and command invocation and recursion counters. Based on a
concept from Shadowrun Denver MUSH.
- Feature: A new conf parameter, c_is_command, controls whether %c is
last command (default) or ANSI substitution.
- Feature: @mail supports separate to/cc/bcc lists. Patch from
Simon Bland, plus misc fixes.
- Feature: @doing has a /quiet switch to avoid "Set." messages. Based
on a suggestion from Solace@Evolution.
- Fix: The border() family of functions supports left-indentation (spaces
at the beginning of a line) properly. [3.1; Sally Schreiber]
- Fix: Object stack limits are properly enforced. [3.0; Joel Ricketts]
- Fix: A rare problem with spurious permission denied messages when
setting an attribute has been fixed. [2.0; Joel Ricketts]
- Fix: Running MEMORY_BASED works again. [3.1; Tyr]
- Fix: Since our copy of gdbm includes an important change, we build it
as libtinygdbm.a to avoid linking netmush with an unmodified gdbm, as
sometimes happened on Linux systems.
- Fix: Permission to lock/unlock an attribute should depend on the
victim's CONSTANT flag, not the executor's. [3.0b14]
- Fix: Some integer math results were displayed as "-0".
- Fix: Numeric conf parameters such as sacrifice_factor that are used
in division may not be set to zero.
- Fix: rloc() now works on exits as documented (returns destination).
- Fix: Buffer overflow in SIGTERM handler. [3.0b8]
- Fix: God can't be set GOING or @chowned. [2.0; Brazil]
- Fix: A player being destroyed may lack a Destroyer attribute if
simply set GOING by God. [MUX; Jeff Czyz]
- Fix: Valid hostnames returned by the lookup slave may start with
numbers. [MUX; Brazil]
- Fix: Global registers should be cleared between interactive
commands. [2.0; Brazil]
- Fix: Fatal bug in regedit() fixed. [3.1a4]
- Fix: Infinite loop in regeditall() fixed. [3.1a4]
- Fix: Player names consisting of only whitespace are not allowed.
[3.0; Brazil]
- Fix: Corrected the function that's supposed to avoid random
number generator bias. [3.1b6]
- Fix: children(no such object) should not return all unparented
objects, but children(#-1) should. Similar fixes for inzone and
zwho. [MUX]
- Fix: Extra space no longer appears after columns() output. [MUX]
- Fix: config() can access dbref conf parameters [3.1a8; Eric Kidder],
and dbref conf parameters can be registered by modules. [3.1a8; Tyr]
- Fix: Renamed "mstate" parameters to avoid conflict with the malloc
facility in RedHat 8.0. [2.0; Pete C.]
- Fix: Commands that begin with a single backslash are handled properly
as @emits. [2.0; sTiLe]
- Fix: Spurious CPU limit warnings from a weird clock() on Linux and BSD
have been eliminated. [3.1b1]
- Misc: The global attribute flags no_clone (c) and constant (k) now sohw
up in an examine.
- Misc: Unprivileged exits may destroy themselves, requested by
drdubious.
- Misc: The hide power is also required in order for non-wizard
idlers to be affected by the idle_wiz_dark conf parameter.
[MUX; Dellin@Aftermath]
- Misc: Improved protection against invalid dbrefs in dbref-type
conf parameters.
- Misc: config() can access option conf parameters, of which the
only one is signal_action, readable by God.
- Misc: Logic for 64-bit alignment of the alloc pool_header struct was
wrong, but worked anyway. [3.1a8]
- Misc: The paranoid_allocate conf parameter checks all buffer pools
(previously omitted the player cache pool).
- Misc: Assorted spelling corrections and other minor cleanup.
- Misc: Re-released under the Artistic License.
-----------------------------------------------------------------------------
08/29/2002: Beta 7
- Feature: @verb now takes a no_name switch, which prevents the actor's
name from being prepended to the default o-message.
- Feature: The format and text of a say and pose can be arbitrarily altered,
via the @speechformat attribute and SPEECHMOD flag on the speaker, or the
speaker's location.
- Feature: New conf parameter huh_message lets you change the Huh? message
when a command cannot be matched.
- Fix: A memory leak related to global registers has been fixed. [3.1b6]
- Fix: Wildcard and regexp pattern matching are better at handling worst-case
scenarios. Added new conf parameter wildcard_match_limit. [2.0; Javelin]
- Fix: @listmotd works properly for non-wizards again. [3.1a7; Jaye]
- Misc: check_access() is more efficient. Based on MUX2 algorithm.
- Misc: Assorted bits of code cleanup.
-----------------------------------------------------------------------------
08/14/2002: Beta 6
- Feature: Global registers can now be named arbitrary things, with the
number permitted by an action list limited to the conf parameter
register_limit. setq() can now take multiple name-value pairs.
- Feature: munge() now passes its input delimiter to the u-function
as %1. Idea from PennMUSH.
- Feature: More informative error message when a function is given the wrong
number of arguments. Idea from Philip Mak.
- Feature: Players with the See_Queue power can now @ps other players, not
just @ps/all and themselves.
- Misc: The 'xmatch' attribute flag (added in beta 5) is now called
'rmatch'. Rather than setting the results of the match into x-variables,
the result is set into named global registers. This eliminates the
issues with clobbering variables, needing to use the Now flag, etc.
- Misc: Replaced the random number generator with Mersenne Twister.
Use derived from PennMUSH, which derives it from MUX2.
- Misc: The maximum length of a comsys header is now 64 characters
instead of 32.
- Fix: dbconvert -C crash fixed. [2.0; Jake]
- Fix: Fatal bug in children() fixed. [3.1b4; Pete C.]
- Fix: The Quota power works (this feature originally didn't make it
into 3.0 from MUX, an oversight). [3.0]
- Fix: The ampersand is no longer dropped from unrecognized entities in
html_unescape(). [2.0]
- Fix: A quirk in the truncation of long strings has been fixed. [2.2; Brazil]
- Fix: Exit names are no longer mutilated when ansi() is used to embed
multiple ANSI codes in them. [MUX; Pro]
-----------------------------------------------------------------------------
07/26/2002: Beta 5
- Feature: The new attribute flag 'now' causes a matched $/^-action to
be executed immediately.
- Feature: The new attribute flag 'xmatch' causes wildcard match data
for a $/^-action to be set into x-variables as well as placed on the
stack, i.e. '$hit *{victim} with *{weapon}' to retrieve the victim
and weapon strings via %_<victim> and %_<weapon> is now possible.
Based on an idea from KiliaFae.
- Feature: There are five new search classes -- ueval, uthing, uplayer,
uroom, uexit. They call an obj/attr u-function for evaluation. This
makes it unnecessary to deal with the brackets-escaping issues that
plagued use of search() in conjunction with the eval classes.
- Feature: "Altered reality" realm states like invisibility are supported
through the use of the PRESENCE flag and six new locks (HeardLock,
HearsLock, KnownLock, KnowsLock, MovedLock, and MovesLock). The
module API for did_it() has changed to support this.
- Feature: The new functions hears(), moves(), and knows() check permissions
related to Presence.
- Feature: The new /speech switch to @pemit explicitly marks a @pemit as
speech subject to Presence checks. @oemit now takes two new switches,
/noeval and /speech.
- Feature: The new group() function splits/sorts a list into groups.
- Feature: hasflag() can now detect object types.
- Feature: The new hasflags() function can operate on multiple lists of
flags and types, returning true if all elements in any of the lists
are true.
- Misc: elock(), hasflag(), haspower(), and type() now all return
#-1 NO MATCH when they can't find the object they're checking.
Previously they returned #-1 NOT FOUND; for consistency's sake,
they now behave like everything else.
- Misc: Caution is exercised when a match result could be #-3.
- Misc: The check_paths script (used by other scripts) clarifies which
things are errors and which are warnings.
- Fix: An off-by-one error which could cause crashes and corruption
when saving the database has been fixed. [3.1; Ashen-Shugar]
- Fix: The game/backups directory is now correctly included with the
distribution.
-----------------------------------------------------------------------------
06/27/2002: Beta 4
- Feature: The new no_name attribute flag prevents the actor's name from
being prepended when that attribute is used as an @o-attr (including
with @verb).
- Feature: The new conf parameter say_uses_comma, if enabled, will insert
the grammatically-correct comma into say and @fsay.
- Feature: The new conf parameter say_uses_you, if disabled, will always
show the speaker '<name> says' rather than 'You say'. This is more
convenient for environments where activity is often logged and shared.
- Feature: lpos(), lattr(), lexits(), lcon(), xcon(), children(), lparent(),
and the grep() family now take an output delimiter.
- Feature: Added connrecord(), connected player record (as in WHO).
- Feature: Added @@(), which is like null() except the argument is not
evaluated. Idea from PennMUSH.
- Feature: @conformat and @exitformat get their visible contents/exits
lists passed as %0.
- Feature: Flatfiling now automatically cleans the attribute table.
(Use -q to turn this off.) Removed @dbclean, since this is now unnecessary.
- Feature: Restore script can now handle archives produced by Archive.
- Fix: Minor parts of structure db were not properly cleared at startup:
connected flag, internal 'dirty' flag, and cpu time used. [3.1a8]
- Fix: Prevent infinite loop in cache when cache fills with nothing but
modified attributes (extremely rare, but not impossible). [3.1]
- Fix: Restore script determines database name from archive name by
removing extension, not truncating at second dot. [3.1a9; Scott Schappell]
- Misc: Scripts now use the correct extensions for various compression
formats, and handle the bzip2 compression format.
- Misc: The expanded_who power no longer grants the ability to see
Dark players in WHO. (Previously those with the power could, but
weren't able to get that info via functions.)
- Misc: pos() strips ANSI out of the string to search for, in addition
to the string to search within.
- Misc: @addcommand sanity-checks command names.
- Misc: Minor cleanup.
-----------------------------------------------------------------------------
06/07/2002: Beta 3
- Feature: The new choose() function picks an element from a list on a
weighted-random-choice basis.
- Feature: The new helptext() function retrieves an entry from an indexed
textfile (i.e., help, news, or anything else added via the helpfile or
raw_helpfile conf directives).
- Feature: The new oemit() function provides the equivalent of @oemit.
- Feature: trim() can now take a trim string of arbitrary length.
- Feature: Added cache_put_notify and cache_del_notify modules API hooks.
These hooks are called when data is added, changed, or deleted from the
MUSH cache.
- Fix: Crash bug with entrances() fixed. [3.1b1; Neva]
- Fix: @nameformat, @conformat, and @exitformat now respect the FREE
flag. [3.1b1; Neva]
- Fix: Conf file entries with a dbref, like 'master_room #2', should now
work properly. [3.1a8; H'kar]
- Fix: Update should now work on systems with broken local domain resolution.
[3.1a7; Neva, Christy Schulte]
- Fix: Clearing an attribute updates an object's Last Modified timestamp.
[3.1a6]
- Fix: clock() checking for function CPU time should now work on NetBSD.
[3.1a6]
- Fix: Corrected typo in flag_alias for COMMANDS. [2.2; Felan]
- Fix: Startmush still didn't back up module dbs correctly. [3.1b2]
- Fix: Space between dbref and flags was missing for MARKER9. [3.0; Taran]
- Fix: Failed to link with zlib when needed by mysql. [3.0; Michael Broggy]
- Fix: Database structure initialization for modules is done correctly.
[3.1a6; Taran]
- Misc: FREE flag is respected for @conformat and friends. [3.1b1; Neva]
- Misc: The Hide power or Wizard status is always required to avoid
connection detection. [3.1a7]
- Cosmetic: Shout messages include the grammatically correct comma after
"shouts". [2.0; Neva]
-----------------------------------------------------------------------------
05/19/2002: Beta 2
- Feature: istrue() and isfalse() functions added (basically iter()-style
filterbool() and reverse).
- Feature: speak() function added, for speech-formatting and parsing.
- Feature: If invoked with the -f switch, the Backup script only makes
a flatfile.
- Feature: The Build script accepts options to be passed to the configure
script, enabling simple custom installation.
- Feature: Introduced do_second() module API hook. Useful for modules which
must update regularly.
- Fix: The game/data directory is once again included in the
distribution. [3.1; Neva]
- Fix: Compilation error when no modules were enabled. [3.1; d@vid.org.uk]
- Fix: Potential crash if netmush or dbconvert is invoked without
a slash in the name. [3.1]
- Fix: dbconvert should print usage message instead of crashing if
invoked without a gdbm file. [3.1a9]
- Fix: Numeric hashtable entries could have different struct layout
than string entries, causing hashtable functions not to work. [3.1b1]
- Fix: Objects with dbrefs higher than mudstate.attr_next were not
written to the database. [3.1; Christy Schulte]
- Fix: Backup invoked tar with wrong options. [3.1a10]
- Fix: *player changes broke *dbref, as in num(*#1). [3.1b1]
- Fix: Memory leak in let(). [3.1b1]
- Fix: If a non-null attribute default is available, the server-supplied
default string should never be used. [3.1a2]
- Fix: log_perror() cleared errno before trying to log the error. [2.0]
- Fix: Startmush could remove module databases due to inconsistent
glob handling in some shells. [3.1a9; Christy Schulte]
- Fix: Fixed typo in module call to db_write(). [3.1b1]
- Misc: Avoid scanning the entire help table when asked for a
nonexistent, non-wildcard entry. [2.0]
- Misc: Reduced stack memory usage of functions such as shuffle(),
with a rewrite of helper function list2arr().
- Cosmetic: Shout messages include the grammatically correct comma after
"says". [2.0; Neva]
=============================================================================
TinyMUSH 3.0 Beta History
=============================================================================
9/28/99: Beta 2
- Fix: Compilation problem with MEMORY_BASED defined. [3.0; Roloran]
- Fix: XFREE macro missing argument compiler error. [3.0; Roloran]
- Fix: Fatal error in let(). [3.0a8; RMG]
- Fix: Off-by-one, integer overflow, and bounds-checking issues. Verified
with Purify. [RMG]
- Fix: Cannot set/reset ROBOT flag on players. [MUX]
-----------------------------------------------------------------------------
9/29/99: Beta 3
- Fix: Pueblo support works again. [3.0; GrimJim]
- Fix: Structure names cannot contain periods. [3.0a8; stile]
- Fix: translate() works as documented, and handles backslashes correctly.
[MUX; RMG]
- Fix: pmatch() correctly handles dbrefs. [3.0a11; RMG]
- Fix: Command switch issues fixed for @mail, @malias, @wipe. [2.0; RMG]
- Fix: Side-effect function permissions are checked more thoroughly. [MUX; RMG]
- Fix: Double-free issue in switchall(). [3.0a8; RMG]
- Change: mix() can take up to twelve arguments (rather than ten).
- Cosmetic: Dealt with a compiler warning in flags.c.
- Docs: Updated mailing list subscription info in help.
-----------------------------------------------------------------------------
9/30/99: Beta 4
- Fix: @clone correctly copies all flags. [3.0; RMG]
- Fix: @open requires the invoker to have contents. [2.0; RMG]
- Fix: Parent recursion issues have been prevented in various places.
[2.0; RMG]
- Fix: parse() checks function invocations in a manner identical to iter().
[2.0; Myrrdin]
- Fix: Slaves are reaped with waitpid() so zombies are not created by
@restart (may be Linux-specific problem). [MUX; Myrddin]
- Fix: Signals are unblocked at startup, allowing SIGUSR1 to be invoked
for later instances in restarts. [MUX; RMG]
- Misc: The unused parentable_control_lock parameter has been removed.
- Misc: A variety of compiler warnings related to uninitialized variables,
unused variables, implicit function declarations, etc. have been taken
care of.
-----------------------------------------------------------------------------
10/2/99: Beta 5
- Feature: lstructures() and linstances() functions added.
- Fix: @dbclean has been rewritten, and now works (and is more efficient).
[3.0; Thomas Wouters]
- Fix: Where pow() is used in conjunction with htonl(), it is cast to
unsigned int. This fixes a compilation issue with Linux and gcc -O.
[3.0a5; stile]
- Fix: Some structures are no longer allocated as lbufs, but are explicitly
malloc'd in a type-specific manner. [2.0]
- Fix: Forwardlists are loaded before startups are run. [2.0]
- Fix: @mail/fwd now explicitly checks to see if a mail message is in
progress. [MUX; Morris]
- Fix: INFO now works when used by logged-in players. [3.0a2; RMG]
- Fix: trunc() truncates rather than rounds. [MUX; Keran]
- Fix: Dumping and shutdown check to make sure the game is not already
dumping. [2.0; Geoff Gerrietts]
- Fix: The display of exit destinations for Transparent rooms now handles
"special" exit destinations. [2.2/MUX; RMG]
- Fix: Some oddities with attribute renaming have been taken care of.
[2.0; RMG]
- Fix: The static buffers for Name and PureName are of the appropriate type.
[MUX; RMG]
- Fix: Instance name lengths are restricted to half an sbuf. [3.0a8; RMG]
- Fix: Startmush handles checking if the game is running in a better manner.
[RMG]
- Misc: The GDBM bucket cache size has been reduced to 1 bucket.
-----------------------------------------------------------------------------
10/4/99: Beta 6
- Fix: Money is no longer deducted twice when creating an object. [3.0]
- Fix: Another pow()/htonl() fix. [3.0a5; Markus Stenberg]
- Fix: Various compile-time option #ifdef's cleaned up. [3.0]
- Fix: Removed spurious spaces in columns() when a string is truncated.
[3.0b2; Keran]
- Fix: Cosmetic change to @list textfiles. [3.0a5]
- Misc: chown_anything also lets you @chown to anyone.
- Misc: Doubled the size of the function and user function hash tables.
- Misc: Got rid of the SIDE_EFFECT_FUNCTIONS compile-time option, since
you can simply function_access the side-effect functions to 'disabled'.
-----------------------------------------------------------------------------
10/5/99: Beta 7
- Feature: New conf parameter stripped_flags determines what flags are
stripped when an object is subject to a @chown, @chownall, or @clone.
These commands now take a /nostrip switch, which negates stripping.
For consistency, @clone/inherit no longer preserves IMMORTAL (only
INHERIT).
- Fix: Side-effect function prototypes exist again. [3.0b6; Tina Verras]
- Fix: You can no longer set the cost of non-things in @clone (consistent
with other object-creation commands). [MUX]
- Fix: The value of @clone'd objects is now correctly set. (Previously,
all cloned objects had a value, i.e. Pennies, of zero.) [MUX]
- Misc: All @clone switches except /inventory and /location can be combined.
- Misc: @clone/preserve can be used by anyone, but you must control the
original object's owner.
- Misc: ansi() compacts the ANSI codes, and makes a better attempt against
avoiding bleeding.
-----------------------------------------------------------------------------
10/7/99: Beta 8
- Feature: @cron implemented, providing Unix-style cron scheduling.
@daily has been re-implemented using the @cron facility.
- Feature: Functions that take output delimiters can now take a null
output delimiter, signified by the token '@@'.
- Feature: The examine command has a new switch, /pairs. This shows
paren/bracket/braces-matching in ANSI color. (Based on the engine
from ChaoticMUX's parenmatch() function.)
- Feature: New conf directive raw_helpfile allows the addition of
non-evaluated helpfiles.
- Feature: Added the MUSH Manual to the distribution in helpfile format.
(Thanks to Alierak and sTiLe.)
- Feature: delete(), mid(), left() and right() no longer strip ANSI
characters.
- Fix: SQL queries error out properly when support is not compiled in.
[3.0a13; Blane Dabney]
- Fix: @clone/nostrip can be combined with all other @clone switches.
[3.0b7]
- Fix: The 2.2 database conversion converts the Builder flag to the
Builder power, rather than just discarding the flag. [3.0a4]
- Fix: Comtitles are terminated with ANSI_NORMAL where appropriate.
[MUX; Brazil]
- Fix: sortby() no longer ignores its output delimiter. [2.2]
- Fix: translate() can handle compacted ANSI strings generated by
ansi(). [3.0b7]
- Fix: hastype() can be used on an object, even if you can't examine it,
since you can type() anything. [MUX; stile]
- Misc: Typecast time_t to int when using it in conjunction with printf().
- Did a diff between ChaoticMUX-S3, and TinyMUX 1.6p0. Derived a suite
of bugfixes and some enhancements, as follows:
- Feature: @function/noeval defines a user-defined function whose
arguments are not pre-evaluated.
- Feature: An ANSI underline code, %xu, has been added.
- Feature: log() can take an optional second argument, the base.
- Fix: elock() obeys the pass_locks power. [MUX]
- Fix: Pool headers are 64-bit aligned. [2.0]
- Fix: Calls to site_check() check the return value ANDed against the flag.
[2.0]
- Fix: The overflow buffer for functions is terminated properly. [MUX]
- Fix: Missed some places where see_hidden should apply. [3.0a14]
- Fix: OUTPUTSUFFIX without OUTPUTPREFIX works. [2.0]
- Misc: All calls to abort() log a message. [2.0]
- Misc: mail() and mailfrom() check arg ranges in the standard way. [MUX]
- Misc: ANSI defines are used rather than embedding raw codes. [MUX]
- Misc: No spurious extra args to raw_broadcast() calls. [MUX]
-----------------------------------------------------------------------------
10/8/99: Beta 9
- Feature: @destroy/instant instantly destroys an object, rather than
queueing it for recycling. The new conf option instant_recycle
controls whether or not objects set Destroy_OK (or which have
Destroy_OK owners) get instantly destroyed; it defaults to 'yes'.
- Feature: @list options now shows just boolean parameters, and the
display format is now much neater (and in alphabetical order of
the actual parameter names). A new command, @list params, shows
a variety of other conf options.
- Fix: left() works properly again. [3.0b8; Jeff Hulsey]
- Fix: format_exits conf parameter is recognized again. [3.0]
- Misc: Unused conf parameters eliminated.
-----------------------------------------------------------------------------
10/8/99: Beta 10
- Feature: edit() can now edit ANSI strings. @edit also handles ANSI
in a better manner.
- Fix: Conf parameter unowned_safe is back. (Oops.) [3.0b9; utoxin]
- Fix: Failed movement through a global or zone exit results in
"You can't go that way." rather than no output.
[2.0/2.2; Markleford Friedman]
- Fix: Fixed an obscure bug where, in the match confidence calculation,
the "you can pass this lock" check always succeeded. [MUX]
- Fix: A variety of inappropriate malloc()s have been dealt with,
and XMALLOC/XFREE are now used by the mail code. [2.0/MUX]
- Misc: sql_init()'s shutdown of a SQL socket calls sql_shutdown()
instead of doing just doing it.
- Misc: A variety of compiler warnings have been dealt with.
- Went through the TinyMUSH 2.2 changes log again, looking for code
that was not incorporated. Resulted in the following changes:
- Fix: Never show HTML to non-HTML players. [MUX]
- Fix: A variety of buffer overflow issues have been dealt with. [2.0]
- Fix: Null pointer dereference in con/exit formatting. [2.2]
- Misc: Some minor improvements to the queueing of output.
-----------------------------------------------------------------------------
10/11/99: Beta 11
- Feature: iter(), list(), switch(), and switchall() can now be nested
(i.e., the special tokens ##, #@, and #$ are substituted in-scope).
The new token '#!' gives nest level within iter() and list(), and
switch() and switchall().
This changes the parsing of these tokens, which are no longer blindly
substituted for, particularly with regard to escapes (for instance,
'\##' now results in a literal '##'). For backwards compatibility,
use parse() instead of iter() -- parse() behaves like it always has --
and use loop() instead of list(). There is no backwards-compatible
function for switch(), as it's unlikely there's softcode out there
that relies on a particular escaping behavior for '#$'.
- Feature: Two new flag_access permission types have been implemented,
'restrict_player' makes a flag only settable on players by Wizards,
but on objects of other types by mortals (FIXED, for instance).
'privileged' makes a flag only settable on players by God, but
it can be set on objects of other types by non-robot players
who themselves have the flag.
- Fix: Backspaces and deletes on an empty line should no longer result
in negative input totals. [2.0; RMG]
- Fix: You can no longer give anything to an exit. [2.0; RMG]
- Fix: Obvious Exits lists are no longer eaten for non-HTML players.
[3.0b10; Keran]
- Misc: 'th' now aliases to 'think' rather than 'throw', by default.
- Misc: udefault() can take up to 12 arguments.
- Misc: Perl versions of the sed scripts for database conversion
now exist, and are recommended. (The vast majority of users will
have perl, and the perl regular expressions are less likely to
result in "false positive" conversions.)
-----------------------------------------------------------------------------
10/13/99: Beta 12
- Feature: '%r' is now a legal output delimiter. lnum() now treats its
delimiter like an output delimiter (so '@@' and '%r' are both legal).
sql() now treats both of its delimiters like output delimiters.
- Fix: dark_sleepers conf option is displayed in reverse. [3.0b9; Tina Verras]
- Fix: Structure-related data is cleared out when an object is
destroyed. [3.0a8; RMG]
- Fix: Absurd channel charges are no longer allowed. [MUX; RMG]
- Fix: There are no spurious spaces embedded between the psuedo-HTML tags
and exit names, for Pueblo display of exits. [MUX]
- Fix: @emit/room/html no longer produces double output. [2.2/MUX; GrimJim]
- Misc: You can no longer use addcom to join a channel multiple times.
(Previously, it was permitted, but you got a warning; there didn't seem
to be a good reason to ever allow it, though.)
- Misc: Dealt with a few more compiler warnings, and got rid of some
unnecessarily clumsy constructs.
-----------------------------------------------------------------------------
10/17/99: Beta 13
- Feature: New comsystem.
- You MUST convert your old comsystem using the provided script; if
you don't, you will not be able to load the comsys database.
Go into your game directory, and type:
cp comsys.db comsys.db.save
./convert_comsys.pl < comsys.db.save > comsys.db
Make sure to keep comsys.db.save in a safe place, in case anything
goes wrong.
- This is a from-scratch re-implementation. There are some syntax
changes, and some changes in functionality.
- @cchown, @ccharge, @cset, @coflags, @cpflags, and channel objects have
been replaced by the @channel command, which allows you to do
administrative things to channels. All channel information is now
directly associated with the channel, rather than being kept on a
channel object. The information from old channel objects will be
assimilated upon initial load of the database produced through
the comsys conversion above.
- Multiple aliases for a single channel work for real now. Each alias
can be associated with a different comtitle.
- If you do not have a comsys database (i.e., you are starting a game
from scratch), a basic comsys database is now created, with the
Public and Guests channels.
- Feature: Attributes can now be retrieved with %=<variable>, where
the angle-brackets are literal. In other words, '%=<test>' is
equivalent to 'v(test)' is equivalent to 'get(me/test)'.
- Feature: Multi-letter variables set with setx() can now be retrieved
with %_<variable>, where the angle-brackets are literal.
- Misc: Use of *VARIABLE* as the object name associated with #-2 is
now consistent. [3.0a3; Keran]
- Misc: Corrected a typo in @quota. [2.0; RMG]
- Misc: Startmush script saves a copy of the old comsys.db and mail.db files.
- Misc: Minor cleanup in various places.
-----------------------------------------------------------------------------
10/20/99: Beta 14
- Feature: If conf parameter dark_actions (disabled by default) is on,
objects set Dark still trigger @a-actions when they move, unless the
/quiet switch is specified.
- Feature: If conf parameter no_ambiguous_match (disabled by default)
is on, ambiguous matches resolve to a random selection from the
available matches (i.e., you will never see "I don't know which
one you mean!" messages).
- Feature: New flag, CONSTANT. Prevents attributes from being set/altered
on an object. Can only be set by Wizards.
- Feature: New conf directive, power_access. Like flag_access, but for
powers.
- Feature: New function, command(). Allows the execution of a variety of
built-in MUSH commands through a functional means, such as @name and
@parent.
- Feature: New function, step(). Iterates through a list N elements at a
time, passing the elements as %0, %1, etc. in a manner similar to map().
map([<obj>/]<attr>,<list>) is equivalent to step([<obj>/]<attr>,<list>,1)
where 1 is the step size.
- Feature: @chboot takes a /quiet switch, which doesn't suppress the
"has left" channel message, but suppresses the "booted off" announcement
to the channel.
- Fix: The attribute list of a minimal database is handled properly,
when the game is being run memory-based. [MUX; Brazil]
- Fix: Creation of minimal db does not choke on vanilla comsys issues,
and vice versa. [3.0a13; RMG]
- Fix: columns() sanity-checks its arguments one by one. [3.0b2; RMG]
- Fix: Buffer size issues with weird-size quotas fixed. [2.2; RMG]
- Fix: Buffer size issues with logging some errors fixed. [2.0; RMG]
- Fix: perl version of MUX db conversion works correctly. [3.0b11; overlord]
- Misc: You cannot set quotas to less than zero.
- Misc: Channel names can contain spaces.
- Misc: Don't announce channel has joined / has left messages, unless
it's an object or connected player.
- Misc: The owner of a channel must be a non-robot player. Channels
owned by destroyed players are chowned to the destroyer. The comsys
database is checked for sanity at load time, and strangeness dealt
with.
- Misc: @addcommand now returns 'Command <foo> added.'
- Misc: The Startmush script also looks in the $DATA directory for
the comsys and mail databases.
-----------------------------------------------------------------------------
10/25/99: Beta 15
- Feature: @cron supports the /<step> syntax, ala Vixie cron.
- Feature: New conf parameter exit_calls_move (defaults to No) makes an
attempt to go through an exit by typing its name, literally identical
to typing 'move <exit name>', allowing an @addcommand interception.
- Feature: New conf parameter move_match_more (defaults to No) makes the
move command match exits like the main command parser does, i.e., it
also checks global and zone exits, and in the case of multiple matches,
picks a random match.
- Feature: @mail/reply and @mail/replyall, based on a code contribution
by Morris. A /quote switch allows optional quoting of the message
being replied to.
- Feature: MySQL is supported as an external database. Code contributed
by Dan Evans. (Untested by the 3.0 development team, as we don't have
a MySQL installation.)
- Fix: Creating a minimal db, when the comsys is enabled, works again.
(This time for real.) [3.0b14; RMG]
- Fix: The comsys conversion script now escapes out quotes, and ensures
that all aliases are for existing channels. [3.0b13; RMG]
- Fix: Typo resulted in channels being chowned to God at load time.
[3.0b14; utoxin]
- Fix: Evaluation and other unusual locks are handled properly by the
comsys load. Note that if you have eval locks in a 3.0b13 or 3.0b14
comsys, you will need to manually delete those locks (there's no
way to write an automated heuristic to cope with this). [3.0b13; RMG]
- Fix: Connections/disconnections on loud channels are only reported when
the player is active on the channel. [3.0b13; Roloran]
- Fix: Object list confounding has been fixed; among other things,
this makes an eval @search with lattr() work properly. Code
contributed by Robby Griffin. [2.0; RMG]
- Fix: Tokens are once again correctly replaced when iter() and switch()
are nested. [3.0b11]
- Fix: command() handles command switches properly. [3.0b14; RMG]
- Fix: pos() and lpos() no longer count ANSI sequences as part of the
string characters. This enables them to interoperate properly with
delete() and other functions depending on string positioning, that
no longer strip ANSI characters. [3.0b8]
- Fix: Flag unparsing looks at See_Hidden rather than Wizard for permission
to see Dark flag on connected players. [3.0a14; Keran]
- Fix: You can no longer insert arbitrary characters via url_unescape().
[2.2/MUX; RMG]
- Fix: Corrected a typo that could result in an infinite loop when
Radix compression is enabled. [MUX; RMG]
- Fix: Prevented a memory leak when an @addcommand's attribute lacks
a command string. [MUX; RMG]
- Fix: Typo in Startmush script was attempting to copy the mail db to
itself. [3.0b14; RMG]
- Fix: The Quota, RQuota, and Semaphore attributes are visible on
objects again. [3.0a4; Adam]
- Misc: Valid numbers and integers can have a leading + sign.
- Misc: Use character table lookup in certain parts of the parser;
concept and some code derived from MUX 2.0.
- Misc: Memory is not allocated for comsys connected lists unless there
are players connected on the channel.
- Misc: Some safe_str() calls replaced with safe_chr() calls. Calls to
safe_long_str() are now simply calls to safe_str(), pending a better
future heuristic.
- Misc: Strict ANSI compilers objected to use of typecasts within XFREE().
-----------------------------------------------------------------------------
10/30/99: Beta 15 patchlevel 1
- Fix: Typing a bare channel alias results in a 'No message.' error,
rather than garbage. [3.0b14]
- Fix: Fixed fatal error in regparse(). [3.0a4; Sorien]
- Fix: @shutdown takes switches again. [3.0; jonespl]
- Fix: @tel/quiet works. [MUX; Xidus]
- Fix: Prevented a buffer overflow. [3.0b15]
-----------------------------------------------------------------------------
11/2/99: Beta 16
- Feature: Dynamic hashtable resizing via @hashresize.
- Fix: Objects with a @daily, that also have a @startup, now cron-schedule
the @daily properly.
- Misc: @timecheck can take a compile-time TRACK_USER_TIME definition,
to get user time used via getrusage() rather than the clock time.
- Misc: Various bits of code cleanup and efficiency improvements.
-----------------------------------------------------------------------------
11/13/99: Beta 17
- Fix: Typing a bare channel alias consistently results in a 'No message.'
error. [3.0b14]
- Fix: Don't requeue '-' if we don't have the mailer turned on. [3.0; RMG]
- Fix: ANSI terminates properly in a sequence of characters. [3.0b15; Keran]
- Fix: Channels properly announce disconnects again. [3.0b15; utoxin]
- Fix: Conversion of the 2.2 Control_OK flag is handled properly. [3.0; RMG]
- Fix: The /delimit switch to @dolist can be used in conjunction with the
/notify switch. [MUX; jonespl]
- Fix: The "You see nothing special." default desc works again. [MUX; RMG]
- Fix: Non-existent attributes no longer prematurely truncate the output
of strings. (Bug which made 3.0b17 into 3.0b17p1.) [3.0b16; utoxin]
- Misc: The resize factor used by @hashresize is now dependent upon the
hash factor itself. The command table is now also resized. God is not
notified of resizes, when the game is restarting.
-----------------------------------------------------------------------------
11/20/99: Beta 18
- Fix: Null store results (from CREATE and DROP) no longer cause
segvs for MySQL users. [3.0b15; Dan Evans]
- Fix: arr2list() no longer zaps the last character of the list being
output, if a null delimiter is specified. [3.0b8]
- Fix: encrypt() and decrypt() exist again. [3.0; Chimera]
- Misc: Robby Griffin has joined the 3.0 development team.
-----------------------------------------------------------------------------
11/28/99: Beta 19
- Feature: examine/brief now works MUX-style again (it shows everything but
the attributes). To get the 2.2-style show-owner-only, use the new /owner
switch. Also, /parent can be combined with other switches.
- Feature: Conf parameter opt_frequency controls how often the database
is optimized. (Defaults to every dump.)
- Feature: Conf parameter guest_starting_room allows guests to start in
a room different than the usual player starting room.
- Feature: For semaphore waits on non-Semaphore attributes, @ps shows
the name of the attribute being waited upon.
- Feature: New wizard-only function config() shows the value of most
config parameters.
- Fix: Channel transmit locks are set properly. [3.0b13; utoxin]
- Fix: Global registers work reliably again; regmatch(), preservation, and
some queue uses were broken on some operating systems. [3.0b16]
- Fix: Memory leak in edit_string_ansi(). [3.0b10]
- Fix: Lastpaged instability issues have been dealt with. [3.0b16]
- Misc: A significant chunk of the page routine has been rewritten; it
should be more efficient and more robust.
- Misc: The HAS_FORWARDLIST flag is usually checked before trying to fetch
a forwardlist.
- Misc: Some minor general cleanup.
-----------------------------------------------------------------------------
5/24/2000: Beta 20
- Feature: A new script, ReportCrash, analyzes a core file and automatically
emails the results to the bug-report address.
- Feature: Log diversion. You may divert the logfile for a given type of
logging to a separate file from the main logfile.
- Feature: Readability of configuration parameters is now controlled
via the config_read_access conf param, and can be listed with
@list config_read_perms. config() now checks read permissions, and
thus can be used by non-wizards.
- Feature: Vector functions have been cleaned up and made more efficient.
Vector dimensions are no longer limited. vunit() can take an output
delimiter.
- Feature: Boolean determination is made in a more intelligent manner.
The dbref #0 is now true, and all negative dbrefs are false; lists of
dbrefs are true; the string '#-1 <error string of some sort>' is false;
other non-zero non-empty strings are true. Old-style booleans can be
gotten by enabling the new conf parameter booleans_oldstyle.
- Feature: New function lrand() generates a delimiter-separated list of
N random numbers between X and Y.
- Feature: New config parameter 'autozone'. If this is off (it's on by
default), newly-created objects do not get zoned to their creator's
zone.
- Fix: 'admin' is now recognized as a valid permission parameter. [MUX]
- Fix: elock() checks if the victim, not the calling object, can
Pass_Locks. [3.0b8; Xidus]
- Fix: Buffer overflow fixed in center(). [3.0b16]
- Fix: Buffer overflows fixed in reverse() and revwords(). [3.0]
- Fix: Buffer overflow fixed in raw_broadcast(). [3.0]
- Fix: setq() register checking is enforced again. [3.0b16; Meran Kal]
- Fix: A problem with %q-substitutions has been fixed. [3.0; Kevlin]
- Fix: "<foo> has reconnected." message is back. [3.0b8]
- Fix: strtok_r() is used instead of strtok(), for re-entrancy. This
fixes a problem with pagelocks and @pemit/list, among other things. [MUX]
- Fix: A problem with mail flags has been corrected. [MUX; Dan Ryan]
- Fix: Handle behavior correctly when the creator of an object is #-1. [3.0]
- Fix: Only God can set attributes on himself. [3.0b14]
- Fix: Dates of the year 2000 and later are now logged as 00, 01, etc.
rather than 100, 101, etc. [2.0]
- Fix: rawdump now works again (modified to work with new gdbm version). [3.0]
- Misc: Newly-created Guest characters now have the same flags as the
Guest-prototype object; the same flags stripped by @clone are also
stripped here.
- Misc: Only God can @program himself. (This is a better fusion of the
2.2 and MUX permission models.)
- Misc: Floating point cleanup. ncomp() now handles floating points as well.
- Misc: The page routine has been completely rewritten, fixing a variety of
issues and non-ideal behaviors. Among other things, 'p =<message>' now
works as expected (equivalent to 'p <message>').
- Misc: ansi() and translate() now do table lookups for the ANSI codes.
ansi() handles invalid input more elegantly.
- Misc: INLINE is used correctly now.
- Misc: Miscellaneous cleanup, including clean compilation under Solaris.
-----------------------------------------------------------------------------
6/12/2000: Beta 21
- Fix: Whitespace in @cron entries is now handled properly. [3.0b8]
- Fix: Logic bug in setting drop-tos. [3.0a3]
- Fix: Idle time is now updated when a user enters input into a @program.
[MUX]
- Fix: Small problem in @list site_information. [2.2]
- Fix: An off-by-one error in attribute compression has been fixed. [3.0b16]
- Misc: The behavior of the main and diverted logfiles across @restart
and @logrotate commands is now consistent. Old logfiles are given a
timestamp; the current logfile being written to is always the
"basic" name of the logfile. This allows old logfiles to be
readily removed to reclaim disk space, and allows any external
log-processing tools to always operate on the same filename.
The 'game_log' parameter needs to be defined appropriately
in netmush.conf (or equivalent).
- Misc: The definition of '#!' has been changed, with the first nesting
level as 0 rather than 1. This has been done for PennMUSH compatibility
reasons. (In all likelihood, nobody was using it anyway, since it's
not useful until the next release introduces itext(), etc.)
- Misc: When an object of typing Thing has only marker flags, an
underscore is used to separate the dbref from the flags, i.e.,
dbref #3 with marker flag 2 is now '#3_2'.
- Misc: There can only be a space between the function name and the
open-parens if the parser is being required to interpret parens
as a function call; i.e.m 'say space (3)' is treated differently
from 'say [space (3)]'.
- Misc: A_USER_START is no longer used in defining the size of the
command table.
- Misc: More floating-point cleanup.
- Misc: Startmush script now looks for 'Cleanup completed' rather than
'Startup processing complete', since cleanup is now the last stage
in initialization (since 3.0b16).
- Misc: Some configuration parameters have been moved from config.h
to the Makefile. It should no longer be necessary to edit config.h
before compiling, unless you are changing something pretty esoteric.
-----------------------------------------------------------------------------
11/4/2000: Beta 22
- Feature: The Startmush script now writes a mush.pid file, and checks
it when restarting. This eliminates the need to edit Startmush if
you have a non-BSDish 'ps' command on your system, or have multiple
MUSHes running on the same system.
- Feature: The new Logclean script handles cleanup of logfiles, included
diverted logs. Startmush now calls it.
- Feature: The new Archive script creates a tarball of files desirable
for offsite backup. These include mush.config, the main conf file, a
flatfile, comsys and mail databases, and text files that are not help,
wizhelp, or mushman.txt.
- Feature: @chzone behavior now matches @chown, with regards to flags and
powers, including a new /nostrip switch. @chzone with no second argument
unzones the object ("none" still works as well).
- Feature: @destroy/instant can now be used to immediately destroy objects
that are currently queued for destruction.
- Feature: New conf parameter objeval_requires_control allows you to
prevent wizard-owned objects from using objeval() to evaluate functions
on objects with the same owner that it does not have permission to
control (i.e., respects Inherit). Defaults to no.
- Fix: You can escape out a colon in a $-command/^-listen match now. [2.0]
- Fix: A variety of game-internal attributes are no longer copied by
@clone. [2.0]
- Fix: The flags and owner of an attribute used as a semaphore are now
preserved. [MUX]
- Fix: HTML is escaped on channels. [MUX; GrimJim]
- Fix: Clearing @daily clears the cron entry. [3.0b16]
- Fix: @decompile name ANSIfication is consistent. [MUX]
- Fix: The parent of an object is cleared when it is destroyed. [2.0]
- Fix: @mail/debug and @mail/nuke hashtable problems dealt with. [MUX]
- Fix: @mail and @mail/review headers are now consistently centered. [MUX]
- Fix: elock() now correctly detects lock attributes. [MUX]
- Fix: The method of tracking connect times of open descriptors is now
consistent with that of tracking login times. [2.0]
- Fix: Invalid syntax in an alias now logs an error message. [2.0]
- Fix: The GARBAGE type is now denoted with '_' rather than '-' to
avoid conflict with the NOBLEED flag. [MUX]
- Fix: ANSI bleeding in exits is now fixed. [MUX]
- Fix: Double output in pipes for disconnected players is now fixed. [MUX;
MUX 2.0]
- Fix: Cleanup of conf-file parsing functions. [2.0]
- Fix: Don't let the slave close its own pipe. Also check the game port
when a bad file descriptor is encountered. [MUX; MUX 2.0]
- Fix: Player name may not overflow a buffer at connect screen. [MUX; MUX
2.0]
- Fix: case() works as documented. [MUX]
- Fix: Teleport locks work as documented. [MUX]
- Fix: File descriptor leak during @restart fixed. [3.0]
- Fix: @poll sanitizes the value passed to it in the same way @doing does.
- Fix: Function recursion and invocation limits are checked for user defined
functions. [2.0; MUX 2.0]
- Fix: printf() call removed from encrypt() and decrypt() functions [MUX;
MUX 2.0]
- Fix: encrypt() and decrypt() do proper checking for printable characters
on the key value. ANSI handling fixed. [MUX; MUX 2.0]
- Fix: When a mortal who controlled an zoned object examined the object,
they could see incorrect attribute names. [MUX; MUX 2.0]
- Fix: An optimized dump leaked a few bytes of memory. [MUX]
- Fix: Misplacement of the stderr file descriptor at restart could cause
database corruption. Fixed by logging to a filename specified on the
command line rather than to stderr. [3.0b21; S-Edge]
- Misc: 'game_log' configuration paramater removed. Log filename is now
specified on the command line with '-l <filename>'. This is handled
automatically by the Startmush and Logclean scripts.
- Misc: Garbage objects may no longer be manipulated (examined, teleported,
linked to, etc) in any way.
- Misc: When you give money to someone, their ReceiveLock is now checked,
instead of their UseLock.
- Misc: Players set Nospoof will now see Nospoof-formatted comsys messages.
Things on channels can now obtain the cause of a comsys message.
- Misc: Players set FLOATING do not get floating-room messages.
- Misc: Gagged players can no longer talk on channels.
- Misc: Zone adisconnects are also passed the reason as %0.
- Misc: Some additional length-checking is done in the mail system.
- Misc: Don't call Name() twice in a row.
- Misc: Flag aliases are now set more sanely.
- Misc: Attempting to change a constant conf parameter is now treated as
an error, instead of silently ignored.
- Misc: The Build script now tee's off a Compile.log file, for easier
reporting of compilation problems to the developers.
- Misc: Alias attribute may no longer be directly modified; use @alias.
- Misc: Logindata attribute is now viewable, but not modifiable by wizards.
- Misc: Connection monitor functionality moved to WATCHER flag. New power
'watch_logins' allows a player to set the WATCHER flag on themselves or
any object they own.
- Misc: Global register preservation uses bcopy() rather than strcpy().
- Misc: A variety of unused code has been removed.
-----------------------------------------------------------------------------
11/21/2000: Beta 23
- Feature: Going and Unknown categories have been adding to the @stats
display, and stats().
- Fix: @halt/all properly credits object owners. [2.0; Ashen-Shugar]
- Fix: children() permission was incorrectly restricted to Wizards. You
must now either control the object, or have See_All-equivalent
privileges. [MUX; MUX 2.0]
- Fix: Corrupted mail db version numbers, or empty mail databases, no
longer cause a problem when trying to load mail. [MUX; MUX 2.0]
- Fix: The '-' and '~' commands are no longer defined by default, if
have_mailer is set to 'no' in the conf file. [3.0]
- Fix: If an $-command attribute is set REGEXP, if the regexp match fails,
a wild match should not be attempted. [2.2]
- Fix: alphamax() and alphamin() can take the maximum number of function
arguments, not just 10. [MUX]
- Fix: A fatal error that occurs when the Solaris SUNWspro C compiler
is used has been fixed. [3.0a13]
- Fix: Recycling works properly once more. [3.0b22; Matt Totney-Roberts]
- Misc: The freelist is now constructed in ascending order.
- Misc: Garbage objects now have their names unparsed as *GARBAGE*
rather than *ILLEGAL*.
- Misc: @search/search() is more logical about how it handles garbage,
and behavior is closer to how it was in 3.0b21 and previous.
- Misc: Some minor code cleanup in string functions.
- Misc: Scott Dorr (Myrddin) has joined the 3.0 development team.
-----------------------------------------------------------------------------
12/01/2000: TinyMUSH 3.0 gamma release
- Feature: A new conf parameter, page_requires_equals, has been added
(defaults to no). It requires that the page command always contain an
equals sign; i.e., 'page =<message>' to page the last person you paged,
rather than 'page <message>'. This prevents embarassing accidental
mispages caused by, for instance, typo'ing a - rather than a =.
- Fix: exit() works properly again. [3.0b15; S'ryon]
- Fix: The \t, \r, \n, and \x characters are disallowed in locks. [2.0]
- Fix: Don't close gdbm before a panic dump. [MUX]
- Misc: 'news' is no longer helpfile'd by default. You should add this in
your conf file instead: 'helpfile news text/news' for evaluation of
percent-subs (historical MUX behavior), or 'raw_helpfile news text/news'
for no evaluation of percent-subs (historical TinyMUSH 2.2 behavior).
This avoids compatibility conflicts, having to escape out a ton of
percent signs in news files with ASCII graphics, etc.
- Misc: On login, don't print MOTD and WIZMOTD on login if they're not set,
and avoid extra line feeds from mail check.
- Misc: 'version' for wizards reports build information.
- Misc: ReportCrash reports more information.
- Misc: Archive script dumps file with a .tar.gz extension, for clear
user identification of file type.
- Misc: 'help patchlevel' returns changes and conversion notes for 3.0.
- Misc: Some minor cleanup.
=============================================================================