From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.4 patchlevel 2 -- Dec 06, 2010

Major Changes:

  • Wildcard matcher completely rewritten to avoid hangs and to provide ansi-aware capturing.
  • connection_fail_limit now lets you limit the # of connection fails in a 10 minute time by any given IP.

Minor Changes:

  • update-cnf.pl perl script now handles optional config lines, by placing A # OPTIONAL above them. This is for message translation.
  • Config options can now be marked as optional. If they don't exist, Penn will not complain in the log.
  • Player names with spaces no longer need to be in given in quotes for @name.
  • @decompile no longer shows flags which can't be set by players, like GOING and CONNECTED.
  • %il substitution as preparation to get rid of ##.
  • hardcode: call_attrib is now a wrapper around call_ufun.
  • The %i<n> substitution, and itext()/inum()/ilev() functions, now work for @dolist as well as iter().
  • iter() context (itext(), inum(), etc) is no longer propagated through ufuns.
  • @hook/overrides on huh_command are now matched against "huh_command" and "huh_command <input>".
  • Various help fixes.
  • @list and list() can now show only built-in or only local commands or functions.
  • Mortals can now use @search to find any objects they can examine.
  • @function names can start with numbers again.
  • @include and @break now work when entered directly from a client.
  • The Drop and Give @locks now trigger verb <name>_LOCK`FAILURE attributes when you fail to pass them, as described in 'help failure'.
  • Set several attributes used internally AF_NOCOPY so they won't be included in @decompile output.
  • The help for the chat system (@channel) has been rewritten.
  • autodetect_list now returns 'm' sort for unknown list types instead of alphanum, so sorting on strings will now treat numbers in them as separate comparisons by default.
  • setunion(), setdiff(), setinter() now autodetect lists in all cases where no sort type is provided instead of just some cases.
  • The pipe (|) character is no longer valid in channel names.


  • ibreak(), for breaking out of an iter() loop.
  • New stext() function and %$N sub, equivilent of #$ in @switch, switch*(), and reswitch*(), but can be used in nested switches/on user input.
  • New slev() function, returns the current nesting depth of switches.
  • maillist() returns a list of @mail messages matching a range, as per @mail/list.
  • New sorttype, lattr, sorts a list of attribute names.


  • @channel/combine and @channel/uncombine let you combine spammy connect messages for channels into one line.
  • @grep now accepts /wild and /regexp switches, for wildcard/globbing and regular expression greps (a la wildgrep() and regrep()). Also /nocase for case-insensitive greps.
  • @attribute now allows limiting attribute values through /enum and /limit switches.
  • @ps <pid> shows info for a single queue entry.


  • Off-by-one bug in 'm' sort when using embedded numbers fixed.
  • Debug output was sometimes sent to the wrong executor.
  • A crashbug in @search was fixed.
  • A crashbug in lpids() was fixed.
  • @search elock class failed to report invalid lock strings.
  • @cpattr and @mvattr could break attribute trees.
  • benchmark() calculated the average incorrectly.
  • map(), iter(), mix() and step() are ansi-aware, now. Using any of the list functions without ansi should also be considerably faster.
  • "look <container>'s <object>" incorrectly stopped working in p1 when <object>'s desc was set "nearby".
  • Attribute names are now sorted better with regard to attribute trees, hopefully fixing the recurring bug of @wipe leaving branch attributes when removing a root attr for good.