From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.5 patchlevel 4 -- Jan ??, 2013

Major changes:

  • The player_name_len @config option is now the maximum length of a player name, instead of the maximum length+1, because doing it that way was rather silly. You may wish to lower yours by 1 now to compensate.
  • Having unescaped commas in the final arg of a function call is now deprecated, and will eventually become illegal. Any existing code which does this will spam you with a warning until you change it.
  • The stack (%0-%9) can now hold up to 30 arguments, with the additional 20 available through v(10) to v(29). $-commands, @functions and many built-in commands and functions (such as ufun(), @mapsql, etc) now make use of these args.


  • @dolist now accepts /inline and related switches, like @switch does.
  • @teleport/list teleports a list of objects to a single destination.
  • @sockset and SOCKSET can now show/set PROMPT_NEWLINES.
  • @halt now takes a /noeval switch, and will always strip curly braces when run /noeval.
  • Added @mail/cstats, which shows the mail stats you see on connection.
  • Added a new switch for @command/add, /rsnoparse, which stops the rightside arguments (after the '=') from being evaluated. Also clarified the help to show that /noparse only affects leftside args.
  • WHO, DOING and SESSION now take wildcard patterns for names, as well as a prefix.


  • lpids()' second argument has been altered slightly, to allow you to list the pids for one specific object only.
  • The "player" field in pidinfo() has been renamed to "executor", for clarity. "player" still works for backwards compatability.
  • stringsecs() can now handle the additional time periods that etime() can return (years, weeks).
  • colors(..., name) is much more efficient.
  • alias(object,) clears object's @alias.
  • v(<integer>) is no longer the same as get(me/<integer>). Instead, it always the <integer>th stack entry.
  • It's now documented that replace() can alter multiple words at once.
  • Some terminfo() information can now be retrieved by mortals on other players' connections.
  • Added a new option to colors() to include ansi underline, invert and flash from the input in the output.
  • locate() takes a new flag, 's', which will only return objects controlled by the looker.

Minor changes:

  • ansi() now accepts a space-separated list of color codes, with later groups overriding earlier ones. Allows you to specify basic ANSI codes after XTERM color codes.
  • Compiler warning fixed.
  • Help fixes.
  • The tables mapping color names and RGB values are now generated by a script in utils/.
  • Converting from named colors to the nearest xterm or ansi equivalent is much more efficient.
  • Converting from extended colors to ansi colors is smarter.
  • Email registration no longer pretends to work with really!old!addresses.
  • Better error reporting in logs and event hooks on failed email registration.
  • @decompile <exit> now reports the exit's source room.
  • You now only need to control an object to change its zone, or to use it as a zone. Previously, ownership was required.
  • The hardcode now always ANSIs a string (such as an object name or help topic), even if the enactor isn't set ANSI. Fixes puppets, etc.


  • %c contained the evaluated input (the same as %u), instead of the unevaluated input.
  • repeat() could write partial ANSI tags, causing buffer overflows.
  • dbcks didn't reset corrupt exit's source room.
  • lmath(and,) returned 1 instead of 0.
  • Mixing old-style ansi colors and xterm colors was broken.
  • Players who couldn't see xterm colors would sometimes get a highlighted foreground color by mistake.
  • colors(<old-style-ansi>, hex) and colors(*, 16color) were broken.
  • ANSI highlight would sometimes bleed when xterm colors were downgraded to the basic 16-color ANSI palette.
  • @entrances didn't correctly report the source of an exit.
  • Fix a crashbug in @command/delete.
  • Fix database corruption on @flag/add.


  • The Builder() macro, which is unused in Penn but exists for backwards compatability, used command_check_byname(), which spammed people who could not build with "Permission denied." errors. It is now spam-free.