1.8.4p2
Version 1.8.4 patchlevel 2 -- Dec 06, 2010
Major Changes:[edit]
- 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:[edit]
- 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.
Functions:[edit]
- 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.
Commands:[edit]
- @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.
Fixes:[edit]
- 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.