1.8.5p5

From The Fairy Garden MUSH
Jump to navigation Jump to search

Version 1.8.5 patchlevel 5 Nov 20, 2013

Commands:

* Added @moniker, to allow colored names. See 'help monikers' for more. Requested by Mikoto Misaka. Idea from [MUX]. [MG]
* After a year of deprecation, @emit/room has been removed as an alias for @lemit. [MG]
* @chan/list now takes /on and /off switches, to filter the channels shown, and a /quiet switch to give a less verbose output. From a suggestion by Fraibert. [MG]
* @trigger now takes a /spoof switch, which preserves the enactor. [MG]
* New @hook/extend, which allows adding new functionality to built-in commands via softcode, while preserving the original command. [MG] [Rhost]

Major changes:

* Regexp $-commands can now used name captures. They can be accessed via r(<name>, args). Suggested by Mercutio. [MG]

Hardcode:

* A number of changes have been made to accomodate monikers. Notably, a lot of calls to the Name() macro now use the AName() macro. See the HACKING.185 file for more info. [MG]
* wild_match_case_r(), regexp_match_case_r(), pe_regs_set_rx_context() and pe_regs_set_rx_context_ansi() now take an extra argument, a PE_REGS* flag to determine how matching subpatterns are stored in pe_regs. [MG]
* add_flag_generic() now returns an enum, and takes an additional final pointer arg, where the new flag will be stored. add_flag() and add_power() pass this pointer as NULL. [MG]
* Improve heuristics used for resizing the flagcache hash table. [DC]
* Update hashing functions used by various hash table implementations. [DC]

Fixes:

* Commands which take multiple right-hand-side arguments could only have 8191-length arguments, instead of the usual 8192. Reported by Jules. [MG]
* It was possible to return non-printable characters from an SQL database, which could cause undefined weirdness. Reported by spork. [MG]
* Many things which listed attributes from a parent, like lattrp() or examine/parent, didn't respect no_inherit fully. [MG]
* Minor crashbug in @boot fixed. Reported by thomaswdyoung. [MG]
* @grep now ignores ansi when looking for a value. Suggested by Mouvar. [MG]
* colors() now complains when the color is 'n', 'd' or 'D', since they have no actual color value. Reported by spork. [MG]
* Buffer overflow bug in ansi() fixed. Reported by tsen. [MG]
* Flag corruption issue due to incorrect flagset refcounts fixed. [DC]
* When a player was nuked, any @mail they had filed into another folder would be retained, and visible to a new player created later with the same dbref. Reported by Valkyrie. [MG]
* Crashbug in @message. Reported by Yuriko. [MG]
* linsert(,1,foo) now returns "foo", like it always used to, instead of returning an empty list. [MG]
* SSL connections which had not yet logged into a player weren't always fully cleaned up. Patch by Fraibert.
* channels() could include an extra delimiter in some cases. Reported by Mouvar. [MG]
* Translations weren't working in the chat system. Reported by Riorgan. [MG]

Minor changes:

* strreplace() now works harder to keep existing ANSI intact, when you replace an un-ansi'd string into an ansi'd one. [MG]
* colors(...,xterm256) can now return colors 0 to 15, to avoid confusion when converting xterm -> hex -> xterm. Reported by Trinsec. [MG]
* New substitution, %k, returns the enactor's monikered name. [MUX] [MG]
* Help fixes and tweaks. [MG]
* PennMUSH can now read MUX-style passwords, to make moving dbs from MUX to Penn less painful. Requested by Muse. [MG]
* Commands are no longer queued for HALTed non-players. (Since they'd be dropped from the queue anyway, rather than being run, it saves us jumping through a series of hoops for no good reason.) From a report by Muse and Ashen-Shugar. [MG]
* The connect-screen WHO now shows moniker'd (ansi'd) names, if so configured. Requested by Trinsec. [MG]
* @mapsql and mapsql()'s attributes now receives named arguments. That is, '@mapsql me/foo=SELECT bar FROM table' receives the value of the 'bar' field as both %1 and [r(bar,args)]. [MG]
* Wizards can now give players names with spaces, even when the player_name_spaces option is off. Suggested by Paige. [MG]
* Removed the last traces of the 'events' help-style command. Noone ever uses it, and we removed the helpfiles for it ages ago when the Event System was added, anyway. [MG]
* Updated the README for adding help-style commands, with clearer examples. Requested by AnnePearn. [MG]
* Per-player mail limits can be set with @mailquota, to override the mail_limit @config option selectively. Suggested by Ricochet. [MG]
* Attempting to create a character (at the login screen or via @pcreate) is now specific about whether the name is already in use or invalid, rather than leaving you guessing. [MG]
* Likewise, when failing to connect, the login screen tells you whether there is no such player, or whether the password is wrong. [MG]
* beep() now returns out of range, instead of permission denied, when given an arg which is not between 1 and 5. [MG]
* When an evaluation @search hits the CPU limit, it will now tell you which object it failed on, to make it easier for you to continue with a partial search. [MG]
* Players are now warned when setting an unanchored regexp $-command, as this is often an oversight which is problematic to track down later. [MG]
* More effort now goes into checking whether an attribute contains a valid $-command when it's set, to avoid doing so unnecessarily during command matching; the latter happens a lot more often. [MG]
  

Functions:

* delete(), replace() and insert() have been renamed to strdelete(), lreplace() and linsert(), respectively, for clarity and conformity. The original names remain as aliases. [MG]
* moniker(<object>) returns an object's monikered name. [MUX] [MG]
* mapsql() only stored 10 columns, instead of the advertised 30. Reported by Mercutio. [MG]
* fn() now takes an <obj>/ prefix to its first arg, to evaluate the built-in function as <obj>. Useful when overriding side-effect functions. [MG]
* r() now takes two arguments, allowing it to return the stack (%0-%9), itext() and stext() values, as well as q-registers(). [MG]
* Mortals can now use playermem() and objmem() on their own objects. Suggested by Paige. [MG]
* ljust() and rjust() now take an optional <trunc?> arg which, if true, causes strings already longer than <len> to be truncated. Suggested by many people over the years, most recently Rince and Quasar. [MG]