From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.5 patchlevel 0 -- Feb 12, 2011

Major changes:

  • The PCRE library is now required to build Penn, instead of falling back to an old, buggy version formerly bundled with the MUSH.
  • The OpenSSL library is now required to build Penn.
  • A new command prefix, "}", enables debug for a single execution of the command - }think foo, }+who, etc. See 'help }' for more info.

Minor changes:

  • Added a new event, OBJECT`FLAG, triggered when a flag/power with the "event" restriction is set or cleared. Suggested by [SW]. [MG]
  • Expanded help on lock types and @powers.
  • @startups are now processed in db order (#0, #1, etc) on reboot instead of giving priority to player objects.
  • @startups (and local_startup() in local.c) are now triggered slightly later, ensuring that the db is fully loaded, and that the connected player list is loaded on @shutdown/reboot.
  • Switch names that are defined but not used by any commands are warned about on startup, and several unused ones have been removed from the master list.
  • Tweak utils/mkcmds.pl for the above change and to remove references to generating the obsolete patches.h.
  • Tweak the parameters of the skip list used to store memcheck counts to save some memory.
  • Bring the scheme scripts in utils up to date with current versions of chicken scheme (The implementation of the language they're written for.)
  • The test harness code strips trailing whitespace before attempting to match against expected results, making it easier to use bounded regexps.
  • @destination (for variable exits) is now a standard attribute, and has a helpfile.
  • Sound is now propagated through audible variable exits, and exits @linked to 'home'.
  • The internal QUEUE attribute is no longer used to track the number of action lists an object has queued; the objdata system is used instead.
  • isobjid() now requires a full object id (with :ctime), and will return 0 for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still matches both dbrefs and objids.
  • @entrances and entrances() now use the same internal routines as @search, and have similar (and saner) privs.
  • Connection messages that are evaluated from an attribute instead of read from a file get the dbref of the connected player as %1, as long as they're ones shown post-connection (motd_file, etc.)
  • Passwords are, thanks to OpenSSL digest routines, now stored in a less error prone, more secure, flexible and extendable format. Existing player passwords will be upgraded automatically on login.
  • New script in utils/ for manipulating player passwords in an offline database. Useful if you forget God's password.
  • The my_vsnprintf function in the hardcode has been renamed to mush_vsnprintf to avoid a conflict with MySQL.
  • The enactor (%#) for the PLAYER`DISCONNECT event is now more useful, instead of always being set to the dbref of the player disconnecting (%0).
  • The SOCKET`LOGINFAIL event now gets passed the name that was entered as %5 when no matching player is found.


  • Added @mail/review for reading mail you've sent, and @mail/retract for deleting unread mail that you sent. Idea from MUX.
  • @hook/list now shows error messages if you don't have permission to use it, or if a command has no hooks, instead of failing silently.
  • Wizards can now @pcreate players with restricted names, as well as being able to rename existing players to forbidden names.


  • Functions that take a sort type argument now accept 'mtime' for sorting based on object's modification time.
  • New registers() function, like listq() but returns all kinds of registers (q-registers, %0-%9 args, iter/switch context, regexp captures). Also takes an output separator arg.
  • digest(list) returns all message digest algorithms the server supports.
  • sha0() has been deprecated in favor of digest().


  • lit() didn't properly handle '\'s.
  • listq() incorrectly returned all registers (including %0-%9, %i0, etc), not just %q-registers.
  • The mud_url code didn't always work correctly in Firefox because http headers weren't sent.
  • %0 and %1 arguments weren't properly passed through verb attributes after a change in p8.
  • Fix really stupid copy-and-paste error in magic sorts on strings with ANSI, which broke setinter() and friends.
  • Help fixes.
  • Memory leak in ldelete() fixed.
  • Fix a crashbug reported.
  • Sorting functions now ignore ANSI when sorting a string as a number or dbref.
  • strreplace() was broken for overly long length arguments.
  • Compile errors on Windows with OpenSSL.
  • @uptime could report negative times for the first dump, purge, etc after a game was started.
  • override/inplace hooks from .cnf files didn't work correctly.
  • The portmsg announcer daemon was broken.
  • A change in p8 broke the sending of the Pueblo hello string in some cases.
  • Fix crash bug in @sitelock/remove
  • ssl_slave would drop connections if it couldn't resolve a valid hostname for the connecting IP address.
  • Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value of the previous matching capture.