From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.4 patchlevel 3 -- Mar 18, 2011


  • Event system added. Certain things can now trigger events using @config event_handler. See "help events" and "help event <type>".
  • dump events: dump`5min, dump`1min, dump`complete.
  • object events: object`create, object`destroy, object`move, object`rename, object`kill.
  • sql events: sql`connect, sql`disconnect.
  • signal events: signal`usr1, signal`usr2.
  • player events: player`create, player`fail, player`connect, player`disconnect, player`inactivity.
  • socket events: socket`connect, socket`disconnect
  • database events: db`dbck, db`purge, db`wcheck
  • Periodic system events like warnings checks and db consistency checks are now handled by a timed queue and integrated with softcode events. Local hackers: This involves changes to local.c. If you have no changes in local.c, just delete the file. Otherwise, see HACKING.184 for more info.


  • @hook/override/inplace - You can now run softcode with the same priority as hardcode!
  • @lock (and all lock keys) now accepts NAME^<pattern> for matching against an object's name.
  • @mapsql passes row results to attributes.
  • @dig now takes an optional garbage dbref argument to specify the new dbref.
  • The help command now does some auto-expansion of topics. For example, 'help @chan ad2' will be expanded to match 'help @channel admin2'.
  • @force/inplace, @switch/inplace and @select/inplace now run their commands without queueing new events. These are limited by the @include limit.
  • @hide without a switch now toggles hide status, rather than defaulting to @hide/on.
  • @log now takes a /recall switch for showing wizards the most recent activity in a log file.
  • @lemit and @zemit both have /noisy and /silent switches to suppress/show confirmation messages. With no switch, silent_pemit determines whether the message is shown.


  • New no_debug flag, which prevents debug info being shown for an attribute when the object is set DEBUG.


  • New @config option chan_title_len controls the length of @channel/title's.


  • New @lock/pay, controls who can "give" an object pennies or "buy" items from an object.


  • lockfilter() lets you filter a list of dbrefs using a lock key.
  • align() now has '$' (nofill) as an option. Ideal for rightmost columns.
  • dig() now takes an optional garbage dbref argument to specify the new dbref.
  • convutctime() and convtime(
  • powers() with no arguments now returns a list of powers, similar to lflags() with no args.
  • trim() can now trim multiple characters.
  • In some cases, privs are no longer needed to use locate().
  • cmogrifier(), returns the mogrifier object for a channel.

Minor Changes:

  • The Can_Nspemit @power has been renamed to Can_Spoof, to better reflect its uses. Can_Nspemit is still an alias.
  • Considerable improvement in the speed of functions that sort case-insensitively, particularly using 'm' sort (Now default).
  • Combined fun_setinter, fun_setdiff and fun_setunion into fun_setmanip.
  • For hardcoders: list2arr and list2arr_ansi now take a third argument on whether to include empty items.
  • page and @mail will report to you if your recipient(s) cannot reply to you.
  • The debug attribute flag now shows more debug info.
  • @oemit now does better object matching, can match names with spaces when enclosed in double quotes, and, when given a <room> but no matching objects, shows the message to everyone in the room, instead of noone.
  • Paranoid objects now see nospoof messages for their emits.
  • ANSI is now ignored when checking the length of channel titles.
  • @decompile with a <prefix> now shows cmds for setting attribute flags. @decompile/tf still omits cmds for attr flags.
  • @mail <msg-lists> which don't specify a folder now act on your current folder, instead of Folder 0.
  • @dig, @open and @name now set exit aliases into the @alias attribute, instead of including them in the exit name. Also, @name can now set/clear the @alias of players/exits while changing the name. See help @name for details.
  • The logging code has been rewritten to make extending it with further log files easier.
  • When used by a non-player, @search and related functions now search from the perspective of the object's owner.
  • The LASTPAGED attribute now stores objids instead of names, allowing you to repage even when the target changes their name.
  • When zwho() or @chzone fail because you don't pass the @lock/zone, zone failure verbs are triggered (as per 'help failure').
  • sub() can now take more than two arguments. Suggested by Paige. [MG]
  • In the hardcode, disconnected players in the DESC struct are shown as -1 instead of 0, to avoid conflicts with #0.
  • It was sometimes possible to "buy" items from yourself.


  • Fixing list type autodetect.
  • Help fixes.
  • Connect/disconnect messages for combined channels incorrectly showed NOSPOOF data.
  • The delimiter between combined channel names in @chatformat is now '|' instead of ' | ', as documented.
  • ansi(h,) now returns absolutely nothing, instead of an ansi-highlighted nothing. Fixes a few minor/obscure bugs.
  • @edit sometimes displayed a success message even when it failed.
  • @cpattr/@mvattr would sometimes copy attribute flags, even when the attribute value couldn't be copied.
  • Bug in attribute comparisons added in p2 could cause attributes to not be found at times.
  • sortby()s results would sometimes be reversed by mistake.
  • Minor bugfix in @include.
  • round() sometimes returned numbers with more decimal digits than desired.
  • The '*' option in locate() didn't actually include all match types.
  • @include incorrectly refunded the queue_cost, giving people free pennies.
  • lnum() didn't handle negative <step>s well.
  • comp()s results was sometimes negated.