From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.5 patchlevel 1 -- May 15, 2012


  • The local_data_clone() function now receives an additional argument, which specifies whether @clone/preserve was used. You'll need to either update the definition of local_data_clone in src/local.c from the one in src/local.dst or, if you've made no changes to src/local.c, just remove src/local.c and it'll be rebuilt automatically. [MG]
  • The orator variable (defined in game.c), for tracking the last object which made sound, has been deprecated, and may soon be removed; don't use it. Just pass the correct dbrefs to the notify*() functions if something talks. [MG]
  • Several of the notify_*() family of functions, and the do_*emit() functions now take an extra arg, for properly tracking both the executor and the speaker when spoofing (@pemit/spoof, etc). [MG]


  • @emit/room and @doing/header have been deprecated. Use @lemit and @poll, respectively, instead. [MG]

Major changes:

  • Built-in attributes are now stored in the database. This means that @attribute no longer needs to be in an @startup, as it will persist across reboots and shutdowns. The attribute_alias option in .cnf files is now deprecated as a result. [MG]
  • The database now uses a new versioning scheme (alongside the old one, for backwards compatability), using incrementing integers instead of bitwise flags. Ideas by [GM] and Covenent. [MG]

Minor changes:

  • Logged messages now have events in the LOG tree. Suggested by Padraic. [SW]
  • Objects belonging to destroyed players now get chowned to a configurable player (probate_judge in mush.cnf) instead of God. [SW]
  • Commands involving movement now check the enactor is a player/thing, instead of just relying on the command's restriction. [MG]
  • @switch, switch(), @[in]filter and attribute @locks (foo:bar) now do lte/gte wildcard matches on <=foo and >=foo patterns. Inspired by Wiggles. [MG]
  • New channel mogrifier, MOGRIFY`NOBUFFER, can be used to exclude certain @chats from the channel's recall buffer. Suggested by Wiggles. [MG]
  • Nospoof players now see the nospoof header on @cemits, making @nscemit actually have some use. Report by rimnar@M*U*S*H. [MG]
  • The login screen WHO can now be overridden using the who_file config option, which can be set as the path to a textfile or an obj/attr, like connect_file et al. From suggestions by Paige, Trelane and Mercutio. [MG]
  • Talek's chunk attribute storage system, which pages attribute contents to and from disk as needed, is now optional by popular request. Controlled via options.h [SW]
  • New lock, @lock/dropin, controls who can drop objects into that location. [SW]
  • @ps now shows a running average of the number of queue entries executed per second. [SW]
  • Try to discriminate between ssl_slave and other sources of connections to the local unix socket. [SW]
  • Repeating the PUEBOCLIENT socket command now causes PennMUSH to re-send the 'start parsing HTML' codes, for when Pueblo-enabled clients hiccough and show raw HTML. [MG]
  • The DESTINATION attribute for variable exits now receives the exit name/alias typed by the player as %0 when moving, to allow different destinations based on the exit alias used to move. It also has access to %c, %u, and other %-subs available when moving, Suggested by Javelin and [GM]. [MG]
  • Translation updates and messages fixes by Stoko.
  • Help fixes by Todd@M*U*S*H, Steve Varley, Wiggles and others. [MG]
  • @message now takes a /silent and /noisy switch, the same as @pemit, with the default controlled by the silent_pemit @config option. message() is now silent, like pemit(). Suggested by Padraic. [MG]
  • The MUSH can now negotiate its character set with clients. There's still only one charset available, but now the client can know exactly what it's receiving. Suggested by Sketch. [MG] Make sure your MUSH is running in the right charset; see http://tinyurl.com/penn-charset for more information.
  • Additional test suite tests for setunion/setdiff/setinter() by Sketch.


  • When regexp matching an ansi'd string, named captures weren't set at all. For non-ansi'd strings, non-named (numeric) captures were sometimes overwritten with the values of named captures. Reported by Sketch. [MG]
  • The configure script incorrectly reported that ssl_slave was unavailable when told to disable it via --disable-ssl_slave. Reported by Cheetah. [MG]
  • Sound from an AUDIBLE wagon object used to propagate into other wagon objects in the same location with an @listen of *. It now does so again. Reported by Xeero and Padraic. [MG]
  • Sound will now also propagate through two @listens, instead of just one, as it used to. Reported by Mac@M*U*S*H. [MG]
  • Loading a reboot db is more robust. Inspired by Padraic. [SW]
  • scan() couldn't be used by rooms. Reported by Padraic. [MG]
  • Possible crashbug in the queue triggered by events reported by Rince@Wing Commander: New Horizon. [MG]
  • @list attribute would show duplicates for aliases. [MG]
  • insert(,foo,-1) no longer appends an extra delimiter. [MG]
  • @function/clone didn't work correctly, and could potentially cause a crash. [MG]
  • @clone didn't respect Many_Attribs. [MG]
  • Making a connection to a ssl port on a game not using ssl_slave could hang the mush. Reported by Minion. [SW]
  • @cemit and friends would notify you twice if you cemited to a channel you weren't on. Reported by spork. [MG]
  • regrep() could try to read uninitialized memory. [SW]
  • Fix a possible DOS from a local attacker. [SW]
  • Fix a couple of possible memory leaks. [MG]
  • ordinal(12) now returns twelfth, not twelveth. Patch by Minion.
  • trunc() now ignores ANSI. Reported by Sketch. [MG]
  • Evaluation @locks didn't receive %0-%9 args, even when they should. Reported by Zen@M*U*S*H. [MG]
  • @message/spoof now tracks both the object using @message and the object being spoofed, allowing for more accurate priv checks when evaluating the format messages. Reported by Mercutio. [MG]
  • When spoofing (@pemit/spoof, etc), any errors for failed locks or bad object names incorrectly went to the object being spoofed, not the object doing the spoofing. [MG]
  • @lemit incorrectly ignored an = and anything after it in its arg. [MG]
  • wrap(%0,strlen(%0)) would incorrectly wrap the string onto two lines. Reported by Padraic. [MG]


  • @edit/regexp[/all][/nocase], command version of regedit[all][i](). Suggested by Minion. [MG]
  • The @sql command no longer uses UNIMPLEMENTED_COMMAND when SQL support is not compiled into the MUSH. Instead, it just reports that no SQL db is available, like @mapsql does. [MG]
  • @slave, for restarting the info_slave and ssl_slave daemons from within the game. [SW]
  • @sockset <option>=<value>, for setting options on your descriptor.


  • version() now reports svn revision/date where available. Patch by Padraic.
  • ldelete(), replace(), elements() and extract() now accept negative position arguments, to count backwards from the end of the list, similar to insert(). Suggested by Minion. [MG]
  • replace() now takes an optional output separator. [MG]
  • regmatch() now returns an error for invalid regexps, whether you're storing subpattern matches or not. Reported by Sketch. [MG]
  • time(), timefmt() and convsecs() can use symbolic timezones (US/Pacific, EST, etc.) if the host server has a time zone database installed. [SW]
  • playermem() and objmem() are smarter about calculating space being used by atributes [SW]
  • rnum() has been deprecated in favor of locate(). [SW]
  • step() no longer pads the final call with empty arguments, allowing you to use %+ or registers() to differentiate empty and missing args. [MG]
  • e() and exp() are now the same function internally, with e(), exp() and exp(1) all being equivilent. Suggested by Ari. [MG]
  • When wrap() hyphenates a word, the hyphen will now share the ANSI of the first character of the newline. [MG]