Remove hardwrapping from CHANGES.186 and .185.

This commit is contained in:
talvo 2015-10-24 04:00:01 +01:00
parent 863d609312
commit dc39f465a2
4 changed files with 514 additions and 1216 deletions

View file

@ -1,10 +1,6 @@
This is the most current changes file for PennMUSH. Please look it
over; each version contains new things which might significantly
affect the function of your server. Changes are reported in reverse
chronological order (most recent first)
This is the changes file for PennMUSH 1.8.5. Please look it over; each version contains new things which might significantly affect the function of your server. Changes are reported in reverse chronological order (most recent first)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also
responsible for most unattributed changes.
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also responsible for most unattributed changes.
[GM] is Greg Millam, a PennMUSH developer (aka Walker)
[MG] is Mike Griffiths, a PennMUSH developer (aka Talvo)
[3] refers to code by (or inspired by) TinyMUSH 3.0
@ -16,47 +12,29 @@ chronological order (most recent first)
Version 1.8.5 patchlevel 7 Mar 16, 2015
Fixes:
* Bytes received by connections weren't being properly recorded for
things like SESSION and recv().
* Bytes received by connections weren't being properly recorded for things like SESSION and recv().
* Fix some highly unlikely crash bugs/memory leaks in atr_tab.c [MG]
* @attribute/delete now deletes all aliases for the deleted attr, too. [MG]
* Help fixes. [MG]
* SOCKSET didn't always send the corret lineendings. [MG]
* unsetq() and @include/clearregs were unpredictable, and hopefully now
function more reliably. Reported by spork, Mercutio and others. [MG]
* unsetq() and @include/clearregs were unpredictable, and hopefully now function more reliably. Reported by spork, Mercutio and others. [MG]
* Remove compile warning when info_slave isn't used. [MG]
* %X now always returns the capitalized version of %x, even when the returned
value contains ANSI. [MG]
* Fixed a few niggly bugs in @include, registers() and similar things
making too many or too few registers available at the wrong time. From a
report by Paige. [MG]
* %X now always returns the capitalized version of %x, even when the returned value contains ANSI. [MG]
* Fixed a few niggly bugs in @include, registers() and similar things making too many or too few registers available at the wrong time. From a report by Paige. [MG]
* lit(%) returned %) instead of %. Reported by Ashen-Shugar. [MG]
* PCRE's jit engine causes crashes when passed certain malicious regular
expressions. Disable it for all public-facing uses of REs. Reported by
Ashen-Shugar. [SW]
* align() would sometimes show extra column separators when columns were
merged. [MG]
* @lock/interact was wrongly checked when paging a player with an @pageformat
set. Reported by Odin. [MG]
* Channels you had both @chan/gagged and @chan/combined would still show
connect messages. Reported by Paige. [MG]
* Fix a memory leak in @dolist/inline when used with @break. From a report by
spork. [MG]
* @chan/decompile <hidden channel> by a mortal didn't give an error message.
Reported by Paige. [MG]
* It was impossible to remove a thing from a channel which had been
restricted so only players could join. Reported by Paige. [MG]
* Players with an @pageformat which eval'd to an empty string wouldn't know
they were being paged. Reported by Ashen-Shugar. [MG]
* PCRE's jit engine causes crashes when passed certain malicious regular expressions. Disable it for all public-facing uses of REs. Reported by Ashen-Shugar. [SW]
* align() would sometimes show extra column separators when columns were merged. [MG]
* @lock/interact was wrongly checked when paging a player with an @pageformat set. Reported by Odin. [MG]
* Channels you had both @chan/gagged and @chan/combined would still show connect messages. Reported by Paige. [MG]
* Fix a memory leak in @dolist/inline when used with @break. From a report by spork. [MG]
* @chan/decompile <hidden channel> by a mortal didn't give an error message. Reported by Paige. [MG]
* It was impossible to remove a thing from a channel which had been restricted so only players could join. Reported by Paige. [MG]
* Players with an @pageformat which eval'd to an empty string wouldn't know they were being paged. Reported by Ashen-Shugar. [MG]
* Fix crash in named q-registers. Reported by Qon@M*U*S*H. [DC]
* Enabling the log_commands config option while a LOG`CMD event was set would
cause endless queueing, until the event handler was halted as a runaway
object. Reported by spork. [MG]
* Fix a potential overflow problem in the code that computes queue load
averages for @ps. [SW]
* Enabling the log_commands config option while a LOG`CMD event was set would cause endless queueing, until the event handler was halted as a runaway object. Reported by spork. [MG]
* Fix a potential overflow problem in the code that computes queue load averages for @ps. [SW]
* @motd/down and @motd/full are actually shown now. [MG]
* Properly negotiate telnet with clients who spit out telnet codes instantly
upon connection like MUSHclient. Reported by Mercutio and AND. [MG]
* Properly negotiate telnet with clients who spit out telnet codes instantly upon connection like MUSHclient. Reported by Mercutio and AND. [MG]
* Improved configure support for NetBSD. [SW]
* Fix a compile error on non-Windows, non-BSD, non-Linux OSes. [SW]
@ -64,50 +42,34 @@ Hardcode:
* Improvements to networking code; robustness on errors and portability. [SW]
Functions:
* Added two new column modifiers to wrap(), x and X, to allow truncation of
fields instead of wrapping. Suggested by Qon, spork and others. [MG]
* Added two new column modifiers to wrap(), x and X, to allow truncation of fields instead of wrapping. Suggested by Qon, spork and others. [MG]
Minor changes:
* @attribute/delete now displays the info for an attribute, as per @attrib
<attr>, prior to deleting it. [MG]
* The *div*() and *mod*() math functions now take an unlimited number of
args, instead of exactly 2 args. Suggested by Mercutio, patch by Luke.
* A SUSPECT player changing their name to the same thing doesn't trigger
an alert. Suggested by Rince. [SW]
* valid(attrvalue, <value>, <name>) checks if &<name> obj=<value> is valid.
For @attrib/enum and /limit. [MG]
* Added @flag/decompile and @attribute/decompile, to decompile each table
to copy to another game. Suggested by spork. [MG]
* Newly set player passwords are salted to be more resistant to cracking via
rainbow tables by somebody with a copy of the database. You still shouldn't
be re-using a password for anything important, of course. Existing
passwords aren't automatically updated. [SW]
* @attribute/delete now displays the info for an attribute, as per @attrib <attr>, prior to deleting it. [MG]
* The *div*() and *mod*() math functions now take an unlimited number of args, instead of exactly 2 args. Suggested by Mercutio, patch by Luke.
* A SUSPECT player changing their name to the same thing doesn't trigger an alert. Suggested by Rince. [SW]
* valid(attrvalue, <value>, <name>) checks if &<name> obj=<value> is valid. For @attrib/enum and /limit. [MG]
* Added @flag/decompile and @attribute/decompile, to decompile each table to copy to another game. Suggested by spork. [MG]
* Newly set player passwords are salted to be more resistant to cracking via rainbow tables by somebody with a copy of the database. You still shouldn't be re-using a password for anything important, of course. Existing passwords aren't automatically updated. [SW]
* Added /clearregs to @trigger. Suggested by Volund. [MG]
* @motd with no args now acts like @motd/list, instead of clearing the MotD.
Use @motd/clear to clear the current one. Suggested by Bodin. [MG]
* @motd with no args now acts like @motd/list, instead of clearing the MotD. Use @motd/clear to clear the current one. Suggested by Bodin. [MG]
* @command can now be used by non-players. From a gripe of Kitai's. [MG]
* Update some configure macros to the latest versions. [SW]
Version 1.8.5 patchlevel 6 Jul 29, 2014
Hardcode:
* Removed an old debugging variable to reduce memory usage. Suggested by
spork. [MG]
* ssl_slave now gets passed its settings via a pipe, instead of on the
command line. [SW]
* Rewritten the telnet handler, to make it more manageable/modifiable,
instead of it being a huge bunch of nested switch()es. [MG]
* Removed an old debugging variable to reduce memory usage. Suggested by spork. [MG]
* ssl_slave now gets passed its settings via a pipe, instead of on the command line. [SW]
* Rewritten the telnet handler, to make it more manageable/modifiable, instead of it being a huge bunch of nested switch()es. [MG]
* Update the SFMT random number generator to 1.4.1. [SW]
* Built in and persistant uses of regular expressions are JIT compiled if the
host's PCRE version supports it, for faster matching.
* Built in and persistant uses of regular expressions are JIT compiled if the host's PCRE version supports it, for faster matching.
* Better support for BSD systems.
Functions:
* valid() can now test for valid channel names. Suggested by Volund. [MG]
* valid() now takes an optional <target> argument for some categories,
to see if <string> is a valid name for <target>. [MG]
* tan(90,d) now reports an error instead of a really big number. Suggested by
Peppel. [SW]
* valid() now takes an optional <target> argument for some categories, to see if <string> is a valid name for <target>. [MG]
* tan(90,d) now reports an error instead of a really big number. Suggested by Peppel. [SW]
* More math functions report errors. [SW]
* Added reglmatch[all][i]() functions, regexp versions of match[all](). [MG]
* isdaylight() now accepts time and timezone arguments. [SW]
@ -115,650 +77,357 @@ Functions:
* foreach() is now ansi-aware. Reported by Ashen-Shugar. [MG]
Minor changes:
* @channel/gag no longer persists across a full @shutdown. Suggested by
Trinsec. [MG]
* 'give' now gives more informative error messages when you try and give
pennies to someone who has the maximum, or take pennies from someone who
is broke. [MG]
* The message shown when you need to run 'make update' is now slightly
clearer about what to do and why. By Rince.
* @channel/gag no longer persists across a full @shutdown. Suggested by Trinsec. [MG]
* 'give' now gives more informative error messages when you try and give pennies to someone who has the maximum, or take pennies from someone who is broke. [MG]
* The message shown when you need to run 'make update' is now slightly clearer about what to do and why. By Rince.
* Removed some 20 year old Sun OS workaround code. Suggested by Fraibert.
* Slightly less confusing error message for @chan/buffer suggested by Sketch.
* 'HELP ENTRIES' is generated on the fly, and shows the total number of
pages. Suggested by [MG] and Trinsec. [SW]
* @success/@osuccess/@asuccess now get the old location of the moving object
in %0. Suggested by Riorgan. [SW]
* @mail/review with no args now lists all mail you've sent to everyone.
Suggested by Paige. [MG]
* @mail/review now shows the recipient in the message list, instead of the
sender. This is slightly more useful, since the person using the command
is always the sender. [MG]
* @mail/status now lets you twiddle the 'urgent' status of messages. From a
suggestion by Paige. [MG]
* You can now always see a channel if you've been joined to it and can speak
on it, even if you don't pass its @clock/see. Suggested by Rince. [MG]
* 'page foo=' now produces an error, instead of paging nothing. Suggested by
Paige. [MG]
* 'make localized' now ignores charset when building translation files, which
stops it throwing errors unnecessarily. [MG]
* 'HELP ENTRIES' is generated on the fly, and shows the total number of pages. Suggested by [MG] and Trinsec. [SW]
* @success/@osuccess/@asuccess now get the old location of the moving object in %0. Suggested by Riorgan. [SW]
* @mail/review with no args now lists all mail you've sent to everyone. Suggested by Paige. [MG]
* @mail/review now shows the recipient in the message list, instead of the sender. This is slightly more useful, since the person using the command is always the sender. [MG]
* @mail/status now lets you twiddle the 'urgent' status of messages. From a suggestion by Paige. [MG]
* You can now always see a channel if you've been joined to it and can speak on it, even if you don't pass its @clock/see. Suggested by Rince. [MG]
* 'page foo=' now produces an error, instead of paging nothing. Suggested by Paige. [MG]
* 'make localized' now ignores charset when building translation files, which stops it throwing errors unnecessarily. [MG]
* Use a more robust configure check for timezone data files. [SW]
* Added a /spoof switch to @mapsql, to spoof the enactor a la @trigger/spoof.
Suggested by Mercutio. [MG]
* Added a /spoof switch to @mapsql, to spoof the enactor a la @trigger/spoof. Suggested by Mercutio. [MG]
* Improved error reporting when info_slave or ssl_slave exits unexpectedly. [SW]
* hasflag(<player>, connected) now returns 1 if the caller can see that the
player is online, instead of always returning 0 for mortal callers. Most
recently suggested by Odin@M*U*S*H. [MG]
* hasflag(<player>, connected) now returns 1 if the caller can see that the player is online, instead of always returning 0 for mortal callers. Most recently suggested by Odin@M*U*S*H. [MG]
Fixes:
* Windows compile fixes by ChaosMageX.
* Fix a crash when expanding the flagset size. Reported by spork. [DC]
* @attribute/access incorrectly cleared an @attribute/limit on the same
attr. Reported by Ton Kyrion. [MG]
* @attribute/access incorrectly cleared an @attribute/limit on the same attr. Reported by Ton Kyrion. [MG]
* Help/translation fixes by spork, Riorgan and others. [MG]
* The 'give', 'take' and 'empty' commands displayed the wrong object names
when mogrifiers were used. Reported by Riorgan. [MG]
* Fix crash in ssl_slave when a connection drops in the middle of hostname
lookup.
* The 'give', 'take' and 'empty' commands displayed the wrong object names when mogrifiers were used. Reported by Riorgan. [MG]
* Fix crash in ssl_slave when a connection drops in the middle of hostname lookup.
* Crashbug in SQL fixed. Reported by Mercutio. [MG]
* @mapsql/colnames cleared q-registers in the first (colnames) action list
queued. Reported by Mercutio. [MG]
* @channel/join would give an 'ambiguous' error, even if you couldn't see the
other potentially-matching channels. Reported by Mercutio. [MG]
* Penn negotiated charset as iso-8859-1 (latin1) even if the MUSH was
running using a different charset. Reported by Tyler. [MG]
* Better support for mixing IPv4 and IPv6 connections. FreeBSD and NetBSD
should not need the --disable-ipv6 option to configure any more. [SW]
* Fixed an obscure buffer-overwrite bug in the channel system. Reported by
Volund@M*U*S*H/Roll@Multiverse Crisis MUSH. [MG]
* @mapsql/colnames cleared q-registers in the first (colnames) action list queued. Reported by Mercutio. [MG]
* @channel/join would give an 'ambiguous' error, even if you couldn't see the other potentially-matching channels. Reported by Mercutio. [MG]
* Penn negotiated charset as iso-8859-1 (latin1) even if the MUSH was running using a different charset. Reported by Tyler. [MG]
* Better support for mixing IPv4 and IPv6 connections. FreeBSD and NetBSD should not need the --disable-ipv6 option to configure any more. [SW]
* Fixed an obscure buffer-overwrite bug in the channel system. Reported by Volund@M*U*S*H/Roll@Multiverse Crisis MUSH. [MG]
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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
Version 1.8.5 patchlevel 4 Mar 17, 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.
Suggested by Mercutio. [MG]
* 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. [MG]
* 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. [MG] [MUX] [Rhost]
* 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. Suggested by Mercutio. [MG]
* 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. [MG]
* 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. [MG] [MUX] [Rhost]
Commands:
* @dolist now accepts /inline and related switches, like @switch does.
Suggested by Reaver. [MG]
* @teleport/list teleports a list of objects to a single destination.
Suggested by Nyssa, [MUX]. [MG]
* @dolist now accepts /inline and related switches, like @switch does. Suggested by Reaver. [MG]
* @teleport/list teleports a list of objects to a single destination. Suggested by Nyssa, [MUX]. [MG]
* @sockset and SOCKSET can now show/set PROMPT_NEWLINES. [MG]
* @halt now takes a /noeval switch, and will always strip curly braces when
run /noeval. [MG]
* Added @mail/cstats, which shows the mail stats you see on connection.
Patch by spork.
* 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. Suggested by spork. [MG]
* WHO, DOING and SESSION now take wildcard patterns for names, as well as
a prefix. [MG]
* New option for @sockset/SOCKSET, 'stripaccents', to strip accents for a
single connection as per the NOACCENTS flag. [MG]
* @halt now takes a /noeval switch, and will always strip curly braces when run /noeval. [MG]
* Added @mail/cstats, which shows the mail stats you see on connection. Patch by spork.
* 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. Suggested by spork. [MG]
* WHO, DOING and SESSION now take wildcard patterns for names, as well as a prefix. [MG]
* New option for @sockset/SOCKSET, 'stripaccents', to strip accents for a single connection as per the NOACCENTS flag. [MG]
Functions:
* lpids()' second argument has been altered slightly, to allow you to list
the pids for one specific object only. Suggested by spork. [MG]
* The "player" field in pidinfo() has been renamed to "executor", for
clarity. "player" still works for backwards compatability. From a request
by tsen. [MG]
* stringsecs() can now handle the additional time periods that etime() can
return (years, weeks). [MG]
* lpids()' second argument has been altered slightly, to allow you to list the pids for one specific object only. Suggested by spork. [MG]
* The "player" field in pidinfo() has been renamed to "executor", for clarity. "player" still works for backwards compatability. From a request by tsen. [MG]
* stringsecs() can now handle the additional time periods that etime() can return (years, weeks). [MG]
* colors(..., name) is much more efficient. [SW]
* alias(object,) clears object's @alias. Suggested by spork. [MG]
* v(<integer>) is no longer the same as get(me/<integer>). Instead, it
always the <integer>th stack entry. [MG] [Rhost] [MUX]
* It's now documented that replace() can alter multiple words at once.
Reported by Jules. [MG]
* Some terminfo() information can now be retrieved by mortals on other
players' connections. Suggested by spork. [MG]
* Added a new option to colors() to include ansi underline, invert and
flash from the input in the output. [MG]
* locate() takes a new flag, 's', which will only return objects
controlled by the looker. Suggested by spork. [MG]
* @@() now takes a huge number of arguments, instead of ignoring commas in
the final arg, to stop it giving the 'unescaped comma' warning. Requested
by everyone. [MG]
* terminfo() now tells you whether a connection is having accents stripped,
either via NOACCENTS or @sockset. [MG]
* v(<integer>) is no longer the same as get(me/<integer>). Instead, it always the <integer>th stack entry. [MG] [Rhost] [MUX]
* It's now documented that replace() can alter multiple words at once. Reported by Jules. [MG]
* Some terminfo() information can now be retrieved by mortals on other players' connections. Suggested by spork. [MG]
* Added a new option to colors() to include ansi underline, invert and flash from the input in the output. [MG]
* locate() takes a new flag, 's', which will only return objects controlled by the looker. Suggested by spork. [MG]
* @@() now takes a huge number of arguments, instead of ignoring commas in the final arg, to stop it giving the 'unescaped comma' warning. Requested by everyone. [MG]
* terminfo() now tells you whether a connection is having accents stripped, either via NOACCENTS or @sockset. [MG]
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. Suggested by spork, [Rhost]. [MG]
* 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. Suggested by spork, [Rhost]. [MG]
* Compiler warning fixed by ChaosMageX.
* Help fixes by many, including spork, Wiggles and Bodin. [MG]
* The tables mapping color names and RGB values are now generated by a
script in utils/. [SW]
* Converting from named colors to the nearest xterm or ansi equivalent is
much more efficient. [SW]
* Converting from extended colors to ansi colors is smarter. Based on
work by Padraic. [SW]
* Email registration no longer pretends to work with really!old!addresses.
[SW].
* Better error reporting in logs and event hooks on failed email
registration. Suggested by Padriac. [SW]
* @decompile <exit> now reports the exit's source room. Suggested by
telandra2. [MG]
* You now only need to control an object to change its zone, or to use it
as a zone. Previously, ownership was required. Suggested by Cheetah. [MG]
* 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. [MG]
* When clients negotiate charset via telnet, US-ASCII and ASCII are now
presented as options. If the client picks one of them, that connection
will have accents stripped (as per the NOACCENTS flag). [MG]
* New attribute flag, quiet, suppresses the usual confirmation message
when an attribute's value or flags are changed. Suggested by Trinsec,
bribed by qa'toq. [MG]
* The tables mapping color names and RGB values are now generated by a script in utils/. [SW]
* Converting from named colors to the nearest xterm or ansi equivalent is much more efficient. [SW]
* Converting from extended colors to ansi colors is smarter. Based on work by Padraic. [SW]
* Email registration no longer pretends to work with really!old!addresses. [SW]
* Better error reporting in logs and event hooks on failed email registration. Suggested by Padriac. [SW]
* @decompile <exit> now reports the exit's source room. Suggested by telandra2. [MG]
* You now only need to control an object to change its zone, or to use it as a zone. Previously, ownership was required. Suggested by Cheetah. [MG]
* 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. [MG]
* When clients negotiate charset via telnet, US-ASCII and ASCII are now presented as options. If the client picks one of them, that connection will have accents stripped (as per the NOACCENTS flag). [MG]
* New attribute flag, quiet, suppresses the usual confirmation message when an attribute's value or flags are changed. Suggested by Trinsec, bribed by qa'toq. [MG]
Fixes:
* %c contained the evaluated input (the same as %u), instead of the
unevaluated input. Reported by Ingwaz. [MG]
* repeat() could write partial ANSI tags, causing buffer overflows. From a
report by Ashen-Shugar. [MG]
* %c contained the evaluated input (the same as %u), instead of the unevaluated input. Reported by Ingwaz. [MG]
* repeat() could write partial ANSI tags, causing buffer overflows. From a report by Ashen-Shugar. [MG]
* dbcks didn't reset corrupt exit's source room. Patch by Padriac.
* lmath(and,) returned 1 instead of 0. Reported by Padriac. [SW].
* Mixing old-style ansi colors and xterm colors was broken. [MG]
* Players who couldn't see xterm colors would sometimes get a highlighted
foreground color by mistake. [MG]
* colors(<old-style-ansi>, hex) and colors(*, 16color) were broken.
Reported by Kimiko. [MG]
* ANSI highlight would sometimes bleed when xterm colors were downgraded to
the basic 16-color ANSI palette. Reported by Kimiko. [MG]
* @entrances didn't correctly report the source of an exit. Reported by
spork. [MG]
* Players who couldn't see xterm colors would sometimes get a highlighted foreground color by mistake. [MG]
* colors(<old-style-ansi>, hex) and colors(*, 16color) were broken. Reported by Kimiko. [MG]
* ANSI highlight would sometimes bleed when xterm colors were downgraded to the basic 16-color ANSI palette. Reported by Kimiko. [MG]
* @entrances didn't correctly report the source of an exit. Reported by spork. [MG]
* Fix a crashbug in @command/delete. [MG]
* Fix database corruption on @flag/add [SW]
* Attempting to @mail someone without permission failed silently. Reported
by Kimiko. [MG]
* Players connecting dark with 'cd' were hidden even if they shouldn't have
been. Patch by thomaswdyoung.
* Attempting to @mail someone without permission failed silently. Reported by Kimiko. [MG]
* Players connecting dark with 'cd' were hidden even if they shouldn't have been. Patch by thomaswdyoung.
* Fixed a bug in colors(*,16color) with no ansi. [MG]
Hardcode:
* 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.
By spork.
* 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. By spork.
Version 1.8.5 patchlevel 3 Aug 23, 2012
Fixes:
* Fix a crash bug in new color code. Discovered by ChaosMageX, fixed by
Intrevis and [SW].
* Fix a crash bug in new color code. Discovered by ChaosMageX, fixed by Intrevis and [SW].
Functions:
* name() with no arguments is now an error. It should always have been, but
previously returned nothing for backwards compatability. If you still have
code that relies on that behaviour, you are extremely lazy and should be
ashamed of yourself. [MG]
* name() with no arguments is now an error. It should always have been, but previously returned nothing for backwards compatability. If you still have code that relies on that behaviour, you are extremely lazy and should be ashamed of yourself. [MG]
Version 1.8.5 patchlevel 2 Aug 18, 2012
Hardcode:
* render_string has been modified to work with multiple output formatters,
so it can display the appropriate color syntax for the client. [GM]
* render_string has been modified to work with multiple output formatters, so it can display the appropriate color syntax for the client. [GM]
* Tweak the networking code to try to reduce output latency/queue size. [SW]
Major changes:
* 256 Color support. Using 24 bit internally for representation and
downscaling to the client's possible output values. Use
SOCKSET colorstyle=xterm256 to see 256 color support, with
ansi(+colorname/+colorname,...) or ansi(#hexcode/#hexcode) for
extended color support, or @set me=xterm256. [GM] [MG]
* New SOCKSET socket command for changing socket options. Replaces the
@sockset command added in p1 for mortals, and can be used at the
login screen. Suggested by Sketch. [MG]
* @sockset is now @sockset <desc>[=<opt>,<value>[,...]], to query current
options or set options for any descriptor. [MG]
* The old @doing command has now been removed, and replaced with the normal
standard-attribute command (@doing <object>[=<message>]). [MG]
* 256 Color support. Using 24 bit internally for representation and downscaling to the client's possible output values. Use SOCKSET colorstyle=xterm256 to see 256 color support, with ansi(+colorname/+colorname,...) or ansi(#hexcode/#hexcode) for extended color support, or @set me=xterm256. [GM] [MG]
* New SOCKSET socket command for changing socket options. Replaces the @sockset command added in p1 for mortals, and can be used at the login screen. Suggested by Sketch. [MG]
* @sockset is now @sockset <desc>[=<opt>,<value>[,...]], to query current options or set options for any descriptor. [MG]
* The old @doing command has now been removed, and replaced with the normal standard-attribute command (@doing <object>[=<message>]). [MG]
Commands:
* look now takes an /opaque switch, which hides contents listings. Suggested
by Wiggles. [MG]
* @break and @assert now take a /queued switch, which causes the new <action
list> to be queued instead of run immediately, and an /inline switch which
gives default behaviour. For Rhost compatability. [MG]
* Two completely separate, but equally stupid, bugs made @nsprompt show
nospoof info just like @prompt. [MG]
* @open, open(), @dig, dig() accept specific garbage dbrefs to use
for the exits they make. [SW]
* look now takes an /opaque switch, which hides contents listings. Suggested by Wiggles. [MG]
* @break and @assert now take a /queued switch, which causes the new <action list> to be queued instead of run immediately, and an /inline switch which gives default behaviour. For Rhost compatability. [MG]
* Two completely separate, but equally stupid, bugs made @nsprompt show nospoof info just like @prompt. [MG]
* @open, open(), @dig, dig() accept specific garbage dbrefs to use for the exits they make. [SW]
Functions:
* colors() returns a list of all known color names known by PennMUSH, and
info about a particular color. [GM]
* valid() has two new categories, for validating color names and color code
sequences for ansi(). [MG]
* colors() returns a list of all known color names known by PennMUSH, and info about a particular color. [GM]
* valid() has two new categories, for validating color names and color code sequences for ansi(). [MG]
* etime() formats elapsed times using the same rules as in WHO. [SW]
Minor changes:
* The meaning of the COLOR flag has been restored. ANSI flag once again
means only highlight is supported, while COLOR means all ANSI 8 colors
(8*2 including highlight), flash, invert, etc are supported. [GM]
* Charset negotiation didn't work on MSVC, and now forces iso-8859-1 when
compiled that way instead. Reported by Daniel Powell. [MG]
* @config/set and @config/save now log to the wizard_log. Suggested by
Israphel. [MG]
* The ICLOC attribute, which was set on newly created players but never used
in any way, is no longer set. Suggested by Paige. [MG]
* @destroy'ing, @undestroy'ing, and the actual destruction of players is
now logged. Suggested by Padraic. [MG]
* The meaning of the COLOR flag has been restored. ANSI flag once again means only highlight is supported, while COLOR means all ANSI 8 colors (8*2 including highlight), flash, invert, etc are supported. [GM]
* Charset negotiation didn't work on MSVC, and now forces iso-8859-1 when compiled that way instead. Reported by Daniel Powell. [MG]
* @config/set and @config/save now log to the wizard_log. Suggested by Israphel. [MG]
* The ICLOC attribute, which was set on newly created players but never used in any way, is no longer set. Suggested by Paige. [MG]
* @destroy'ing, @undestroy'ing, and the actual destruction of players is now logged. Suggested by Padraic. [MG]
* Translation fixes by Stoko.
* round(4.5,0) behaved differently on Penn than it did on MUX, and
inconsistantly with rounding to more places on Penn. [SW]
* The 'On for' and 'Idle' time fields in WHO are smarter and won't overflow
their space. Suggested by Ari and Paige. [SW]
* round(4.5,0) behaved differently on Penn than it did on MUX, and inconsistantly with rounding to more places on Penn. [SW]
* The 'On for' and 'Idle' time fields in WHO are smarter and won't overflow their space. Suggested by Ari and Paige. [SW]
* Add a few new test cases. Requested by Sketch. [MG]
* It's now possible to clear/reset a prompt with @prompt <player>. [MG]
* New Pick_Dbref @power for specifying specific garbage dbrefs to use in
@create and friends. [SW]
* New Pick_Dbref @power for specifying specific garbage dbrefs to use in @create and friends. [SW]
Fixes:
* Reordered some checks in tz.c to compile on more distributions. Problem
reported by Zen@M*U*SH. [MG]
* Setting an exit Transparent didn't cause its destination's desc to get
shown as it should have. [MG]
* It became impossible in p1 to give a delimiter to wrap() without also
specifying a first line width. wrap(%0,%1,,%2) will now use the
normal <width> arg for first line width, the same as wrap(%0,%1) does.
Reported by Kitai. [MG]
* Free PCRE-allocated memory with pcre_free() instead of free(). Reported
by ChaosMageX@M*U*S*H. [DC]
* Reordered some checks in tz.c to compile on more distributions. Problem reported by Zen@M*U*SH. [MG]
* Setting an exit Transparent didn't cause its destination's desc to get shown as it should have. [MG]
* It became impossible in p1 to give a delimiter to wrap() without also specifying a first line width. wrap(%0,%1,,%2) will now use the normal <width> arg for first line width, the same as wrap(%0,%1) does. Reported by Kitai. [MG]
* Free PCRE-allocated memory with pcre_free() instead of free(). Reported by ChaosMageX@M*U*S*H. [DC]
* Fix some potential memory leaks in timezone file reading code. [SW]
* Off-by-one error in the helpfile index code. [MG]
* Improve docmentation of ip_addr config option. [SW]
* Fix an edge case in ansi_string_replace that could cause an overflow.
Reported by Ton Kyrion@M*U*S*H. [DC]
* Fix an edge case in ansi_string_replace that could cause an overflow. Reported by Ton Kyrion@M*U*S*H. [DC]
* Fix a memory leak in LOGOUT. [SW]
Version 1.8.5 patchlevel 1 May 15, 2012
Hardcode:
* 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]
* 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]
Deprecation:
* @emit/room and @doing/header have been deprecated. Use @lemit and @poll,
respectively, instead. [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]
* 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]
* 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.
* @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.
Fixes:
* 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]
* 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]
* 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]
* @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]
* 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]
* 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]
* wrap(%0,strlen(%0)) would incorrectly wrap the string onto two lines. Reported by Padraic. [MG]
Commands:
* @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]
* @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.
Functions:
* 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]
* 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]
* 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]
* 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]
Version 1.8.5 patchlevel 0 Feb 12, 2012
Major changes:
* The PCRE library is now required to build Penn, instead of falling
back to an old, buggy version formerly bundled with the MUSH. [SW]
Daniko assisted greatly with Windows changes and documentation.
* The OpenSSL library is now required to build Penn. Again, Daniko has
provided instructions for installing on Windows. [SW]
* A new command prefix, "}", enables debug for a single execution of the
command - }think foo, }+who, etc. See 'help }' for more info. Suggested
by Wiggles and [GM]. [MG]
* The PCRE library is now required to build Penn, instead of falling back to an old, buggy version formerly bundled with the MUSH. [SW] Daniko assisted greatly with Windows changes and documentation.
* The OpenSSL library is now required to build Penn. Again, Daniko has provided instructions for installing on Windows. [SW]
* A new command prefix, "}", enables debug for a single execution of the command - }think foo, }+who, etc. See 'help }' for more info. Suggested by Wiggles and [GM]. [MG]
Minor changes:
* Added a new event, OBJECT`FLAG, triggered when a flag/power with the
"event" restriction is set or cleared. Suggested by [SW]. [MG]
* Added a new event, OBJECT`FLAG, triggered when a flag/power with the "event" restriction is set or cleared. Suggested by [SW]. [MG]
* Expanded help on lock types and @powers. [MG]
* @startups are now processed in db order (#0, #1, etc) on reboot instead
of giving priority to player objects. [MG]
* @startups (and local_startup() in local.c) are now triggered slightly
later, ensuring that the db is fully loaded, and that the connected player
list is loaded on @shutdown/reboot. Suggested by Padraic. [MG]
* Switch names that are defined but not used by any commands are
warned about on startup, and several unused ones have been removed
from the master list. [SW]
* Tweak utils/mkcmds.pl for the above change and to remove references
to generating the obsolete patches.h. [SW]
* Tweak the parameters of the skip list used to store memcheck counts
to save some memory. [SW]
* Bring the scheme scripts in utils up to date with current versions
of chicken scheme (The implementation of the language they're
written for.) [SW]
* The test harness code strips trailing whitespace before attempting to match
against expected results, making it easier to use bounded regexps. [SW]
* @destination (for variable exits) is now a standard attribute, and has
a helpfile. [MG]
* Sound is now propagated through audible variable exits, and exits @linked
to 'home'. Suggested by Mercutio. [SW]
* The internal QUEUE attribute is no longer used to track the number
of action lists an object has queued; the objdata system is used
instead. [SW]
* isobjid() now requires a full object id (with :ctime), and will return 0
for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still
matches both dbrefs and objids. Suggested by Covenent. [MG]
* @entrances and entrances() now use the same internal routines as @search,
and have similar (and saner) privs. From a suggestion by Sketch. [MG]
* Connection messages that are evaluated from an attribute instead of
read from a file get the dbref of the connected player as %1, as
long as they're ones shown post-connection (motd_file, etc.) [SW]
* Passwords are, thanks to OpenSSL digest routines, now stored in a
less error prone, more secure, flexible and extendable
format. Existing player passwords will be upgraded automatically on
login. [SW]
* New script in utils/ for manipulating player passwords in an offline
database. Useful if you forget God's password. [SW]
* The my_vsnprintf function in the hardcode has been renamed to
mush_vsnprintf to avoid a conflict with MySQL. Reported by Balerion @
Blood of Dragons. [MG]
* The enactor (%#) for the PLAYER`DISCONNECT event is now more useful,
instead of always being set to the dbref of the player disconnecting (%0).
Suggested by Padraic. [MG]
* The SOCKET`LOGINFAIL event now gets passed the name that was entered as
%5 when no matching player is found. Suggested by Daniel Powell. [MG]
* @startups are now processed in db order (#0, #1, etc) on reboot instead of giving priority to player objects. [MG]
* @startups (and local_startup() in local.c) are now triggered slightly later, ensuring that the db is fully loaded, and that the connected player list is loaded on @shutdown/reboot. Suggested by Padraic. [MG]
* Switch names that are defined but not used by any commands are warned about on startup, and several unused ones have been removed from the master list. [SW]
* Tweak utils/mkcmds.pl for the above change and to remove references to generating the obsolete patches.h. [SW]
* Tweak the parameters of the skip list used to store memcheck counts to save some memory. [SW]
* Bring the scheme scripts in utils up to date with current versions of chicken scheme (The implementation of the language they're written for.) [SW]
* The test harness code strips trailing whitespace before attempting to match against expected results, making it easier to use bounded regexps. [SW]
* @destination (for variable exits) is now a standard attribute, and has a helpfile. [MG]
* Sound is now propagated through audible variable exits, and exits @linked to 'home'. Suggested by Mercutio. [SW]
* The internal QUEUE attribute is no longer used to track the number of action lists an object has queued; the objdata system is used instead. [SW]
* isobjid() now requires a full object id (with :ctime), and will return 0 for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still matches both dbrefs and objids. Suggested by Covenent. [MG]
* @entrances and entrances() now use the same internal routines as @search, and have similar (and saner) privs. From a suggestion by Sketch. [MG]
* Connection messages that are evaluated from an attribute instead of read from a file get the dbref of the connected player as %1, as long as they're ones shown post-connection (motd_file, etc.) [SW]
* Passwords are, thanks to OpenSSL digest routines, now stored in a less error prone, more secure, flexible and extendable format. Existing player passwords will be upgraded automatically on login. [SW]
* New script in utils/ for manipulating player passwords in an offline database. Useful if you forget God's password. [SW]
* The my_vsnprintf function in the hardcode has been renamed to mush_vsnprintf to avoid a conflict with MySQL. Reported by Balerion @ Blood of Dragons. [MG]
* The enactor (%#) for the PLAYER`DISCONNECT event is now more useful, instead of always being set to the dbref of the player disconnecting (%0). Suggested by Padraic. [MG]
* The SOCKET`LOGINFAIL event now gets passed the name that was entered as %5 when no matching player is found. Suggested by Daniel Powell. [MG]
Commands:
* Added @mail/review for reading mail you've sent, and @mail/retract for
deleting unread mail that you sent. Idea from MUX. Patch by Minion.
* @hook/list now shows error messages if you don't have permission to use
it, or if a command has no hooks, instead of failing silently. Suggested
by Padraic. [MG]
* Wizards can now @pcreate players with restricted names, as well as being
able to rename existing players to forbidden names. Suggested by Nymeria @
Blood of Dragons. [MG]
* Added @mail/review for reading mail you've sent, and @mail/retract for deleting unread mail that you sent. Idea from MUX. Patch by Minion.
* @hook/list now shows error messages if you don't have permission to use it, or if a command has no hooks, instead of failing silently. Suggested by Padraic. [MG]
* Wizards can now @pcreate players with restricted names, as well as being able to rename existing players to forbidden names. Suggested by Nymeria @ Blood of Dragons. [MG]
Functions:
* Functions that take a sort type argument now accept 'mtime' for
sorting based on object's modification time. Patch by Minion.
* New registers() function, like listq() but returns all kinds of registers
(q-registers, %0-%9 args, iter/switch context, regexp captures). Also
takes an output separator arg. Suggested by Wiggles. [MG]
* Functions that take a sort type argument now accept 'mtime' for sorting based on object's modification time. Patch by Minion.
* New registers() function, like listq() but returns all kinds of registers (q-registers, %0-%9 args, iter/switch context, regexp captures). Also takes an output separator arg. Suggested by Wiggles. [MG]
* digest(list) returns all message digest algorithms the server supports. [SW]
* sha0() has been deprecated in favor of digest(). [SW]
Fixes:
* lit() didn't properly handle '\'s. Reported by Wiggles. [MG]
* listq() incorrectly returned all registers (including %0-%9, %i0, etc),
not just %q-registers. Reported by Wiggles. [MG]
* The mud_url code didn't always work correctly in Firefox because http
headers weren't sent. [MG]
* %0 and %1 arguments weren't properly passed through verb attributes after
a change in p8. Reported by Padraic. [MG]
* Fix really stupid copy-and-paste error in magic sorts on strings with
ANSI, which broke setinter() and friends. Reported by Minion. [MG]
* listq() incorrectly returned all registers (including %0-%9, %i0, etc), not just %q-registers. Reported by Wiggles. [MG]
* The mud_url code didn't always work correctly in Firefox because http headers weren't sent. [MG]
* %0 and %1 arguments weren't properly passed through verb attributes after a change in p8. Reported by Padraic. [MG]
* Fix really stupid copy-and-paste error in magic sorts on strings with ANSI, which broke setinter() and friends. Reported by Minion. [MG]
* Help fixes by Wiggles, Mouvar and others. [MG]
* Memory leak in ldelete() fixed. [MG]
* Fix a crashbug reported by Minion. [MG]
* Sorting functions now ignore ANSI when sorting a string as a number
or dbref. From report by Mouvar. [MG]
* strreplace() was broken for overly long length arguments. Reported
by Ashen-Shugar. [SW]
* Sorting functions now ignore ANSI when sorting a string as a number or dbref. From report by Mouvar. [MG]
* strreplace() was broken for overly long length arguments. Reported by Ashen-Shugar. [SW]
* Compile errors on Windows with OpenSSL. Reported by Daniko.
* @uptime could report negative times for the first dump, purge, etc after
a game was started. Reported by Cooee. [MG]
* @uptime could report negative times for the first dump, purge, etc after a game was started. Reported by Cooee. [MG]
* override/inplace hooks from .cnf files didn't work correctly. [MG]
* The portmsg announcer daemon was broken. Reported by Minion. [SW]
* A change in p8 broke the sending of the Pueblo hello string in some cases.
Reported by Mercutio. [MG]
* A change in p8 broke the sending of the Pueblo hello string in some cases. Reported by Mercutio. [MG]
* Fix crash bug in @sitelock/remove [SW]
* ssl_slave would drop connections if it couldn't resolve a valid hostname
for the connecting IP address. [SW]
* Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value
of the previous matching capture. From a report by Sketch. [MG]
* ssl_slave would drop connections if it couldn't resolve a valid hostname for the connecting IP address. [SW]
* Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value of the previous matching capture. From a report by Sketch. [MG]

View file

@ -1,10 +1,6 @@
This is the most current changes file for PennMUSH. Please look it
over; each version contains new things which might significantly
affect the function of your server. Changes are reported in reverse
chronological order (most recent first)
This is the most current changes file for PennMUSH. Please look it over; each version contains new things which might significantly affect the function of your server. Changes are reported in reverse chronological order (most recent first)
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also
responsible for most unattributed changes.
[SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos), also responsible for most unattributed changes.
[GM] is Greg Millam, a PennMUSH developer (aka Walker)
[MG] is Mike Griffiths, a PennMUSH developer (aka Talvo)
[TK] is Tim Krajcar, a PennMUSH developer (aka Rince)
@ -18,9 +14,7 @@ Numbers next to the developer credit refer to Github issue numbers.
Version 1.8.6 patchlevel 0 ?? ??, 201?
NOTE: When updating from an earlier version of PennMUSH, you'll need to run
'make update' and './config.status' in the toplevel PennMUSH directory prior
to running 'make'.
NOTE: When updating from an earlier version of PennMUSH, you'll need to run 'make update' and './config.status' in the toplevel PennMUSH directory prior to running 'make'.
Major changes:
* Hosted on Github. Thanks, Google. [DC]
@ -28,26 +22,17 @@ Major changes:
Functions:
* element() is now an alias for match(). Suggested by Wiggles. [985-TK]
* Added json(), for creating valid JSON-encoded data. [MG]
* Added oob(), for sending out-of-band messages via the General MUD
Communication Protocol (GMCP) telnet option. Requested by Qon. [MG]
* Added oob(), for sending out-of-band messages via the General MUD Communication Protocol (GMCP) telnet option. Requested by Qon. [MG]
* registers() only listed registers whose values were strings, not ints. [MG]
* filter() and filterbool() can now be passed additional arguments, for
Rhost compatability. Requested by Volund. [1019-MG] [Rhost]
* valid() can now validate timezones, locktypes and lockkeys. Suggested by
Volund. [1021,1025-MG]
* convtime() now returns #-1, instead of -1, on error. This change is
-backwards incompatible-, but necessary as -1 is a potentially valid output
for convtime(). Suggested by KimikoMuffin. [1010-MG]
* convsecs() can now accept negative inputs when Extended convtime() is
available. Suggested by Volund. [1010-MG]
* filter() and filterbool() can now be passed additional arguments, for Rhost compatability. Requested by Volund. [1019-MG] [Rhost]
* valid() can now validate timezones, locktypes and lockkeys. Suggested by Volund. [1021,1025-MG]
* convtime() now returns #-1, instead of -1, on error. This change is -backwards incompatible-, but necessary as -1 is a potentially valid output for convtime(). Suggested by KimikoMuffin. [1010-MG]
* convsecs() can now accept negative inputs when Extended convtime() is available. Suggested by Volund. [1010-MG]
* avg() is now an alias for mean(). [1023-TK] [Rhost]
* textsearch() allows searching the contents of helpfiles. [MG]
* speak() no longer has the odd TinyMUSH behaviour of ': foo' being a
semipose; speakpenn() is now an exact alias. [1034-MG]
* timefmt() and isdaylight() can now take a negative number of seconds for
times prior to 1970 when Extended Convtime is available. [MG]
* colors(...,auto) returns colors in the same style as their input. Suggested
by Kimiko. [MG]
* speak() no longer has the odd TinyMUSH behaviour of ': foo' being a semipose; speakpenn() is now an exact alias. [1034-MG]
* timefmt() and isdaylight() can now take a negative number of seconds for times prior to 1970 when Extended Convtime is available. [MG]
* colors(...,auto) returns colors in the same style as their input. Suggested by Kimiko. [MG]
* rjust(str,X,,1) truncated the end of the string, instead of the start. [MG]
* Minor json() bug and documentation fixes. [MG]
@ -55,37 +40,27 @@ Commands:
* The 'kill' and 'slay' commands have been removed. [1033-TK]
* Remove ancient @channel foo=on behavior. Reported by Paige. [870-TK]
* @logwipe can do more than just erasing a log file. [SW]
* @hooks now have a number of named registers (available through
r(<name>,args)) with each of the hooked command's arguments. [MG]
* @hooks now have a number of named registers (available through r(<name>,args)) with each of the hooked command's arguments. [MG]
* Added @if and @skip. [MG] [Rhost] [MUX]
* help/search <pattern> lets you search within helpfiles. [MG] [Rhost]
Minor changes:
* The 'HAVEN' flag can now only be set on players. [1033-TK]
* Added a few more date formats to getdate.template for convtime(). Suggested
by Volund and Mercutio. [1020-MG]
* Most PennMUSH helpfiles are no longer hard-wrapped at 78 characters; noone
connects from clients that can't wrap any more. [1030-MG]
* Added a few more date formats to getdate.template for convtime(). Suggested by Volund and Mercutio. [1020-MG]
* Most PennMUSH helpfiles are no longer hard-wrapped at 78 characters; noone connects from clients that can't wrap any more. [1030-MG]
* Other minor help fixes. [MG]
* Attempting to run an empty SQL query via any command/function now gives a
better error/return value. Reported by Qon. [MG]
* Attempting to run an empty SQL query via any command/function now gives a better error/return value. Reported by Qon. [MG]
* Added some tests for json(), and more tests for ljust()/rjust(). [MG]
Hardcode:
* Clean up some more remnants of the previous configure package's
naming convention in favor of autoconf style ones. [SW]
* Clean up some more remnants of the previous configure package's naming convention in favor of autoconf style ones. [SW]
* OpenBSD compilation fixes. [SW]
* Support authorization of ssl_slave forwarded connections on NetBSD,
OpenBSD. [SW]
* Remove old FAM-based file monitoring code, due to bitrot and FAM's last
release being 2003. [SW]
* Support authorization of ssl_slave forwarded connections on NetBSD, OpenBSD. [SW]
* Remove old FAM-based file monitoring code, due to bitrot and FAM's last release being 2003. [SW]
* Add git revision, if present, to @version & version(). [994-TK]
* Log files that grow over a user-specified size can now be rotated or
trimmed down. [SW]
* Log files that grow over a user-specified size can now be rotated or trimmed down. [SW]
* game/restart is now auto-generated during 'make update'. [928-TK]
* Fixed a memory leak in @switch. [MG]
* A bug in @lock allowed invalid lock names to be used. [MG]
* Added support for the General MUD Communication Protocol (GMCP). See
http://www.gammon.com.au/gmcp for more info. Requested by Qon. [MG]
* Choosing what scheme is used in compressing attribute text in-game is now
a run-time option set in mush.cnf, not options.h [SW]
* Added support for the General MUD Communication Protocol (GMCP). See http://www.gammon.com.au/gmcp for more info. Requested by Qon. [MG]
* Choosing what scheme is used in compressing attribute text in-game is now a run-time option set in mush.cnf, not options.h [SW]

View file

@ -2,47 +2,29 @@
Version 1.8.5 patchlevel 7 Mar 16, 2015
Fixes:
* Bytes received by connections weren't being properly recorded for
things like SESSION and recv().
* Bytes received by connections weren't being properly recorded for things like SESSION and recv().
* Fix some highly unlikely crash bugs/memory leaks in atr_tab.c [MG]
* @attribute/delete now deletes all aliases for the deleted attr, too. [MG]
* Help fixes. [MG]
* SOCKSET didn't always send the corret lineendings. [MG]
* unsetq() and @include/clearregs were unpredictable, and hopefully now
function more reliably. Reported by spork, Mercutio and others. [MG]
* unsetq() and @include/clearregs were unpredictable, and hopefully now function more reliably. Reported by spork, Mercutio and others. [MG]
* Remove compile warning when info_slave isn't used. [MG]
* %X now always returns the capitalized version of %x, even when the returned
value contains ANSI. [MG]
* Fixed a few niggly bugs in @include, registers() and similar things
making too many or too few registers available at the wrong time. From a
report by Paige. [MG]
* %X now always returns the capitalized version of %x, even when the returned value contains ANSI. [MG]
* Fixed a few niggly bugs in @include, registers() and similar things making too many or too few registers available at the wrong time. From a report by Paige. [MG]
* lit(%) returned %) instead of %. Reported by Ashen-Shugar. [MG]
* PCRE's jit engine causes crashes when passed certain malicious regular
expressions. Disable it for all public-facing uses of REs. Reported by
Ashen-Shugar. [SW]
* align() would sometimes show extra column separators when columns were
merged. [MG]
* @lock/interact was wrongly checked when paging a player with an @pageformat
set. Reported by Odin. [MG]
* Channels you had both @chan/gagged and @chan/combined would still show
connect messages. Reported by Paige. [MG]
* Fix a memory leak in @dolist/inline when used with @break. From a report by
spork. [MG]
* @chan/decompile <hidden channel> by a mortal didn't give an error message.
Reported by Paige. [MG]
* It was impossible to remove a thing from a channel which had been
restricted so only players could join. Reported by Paige. [MG]
* Players with an @pageformat which eval'd to an empty string wouldn't know
they were being paged. Reported by Ashen-Shugar. [MG]
* PCRE's jit engine causes crashes when passed certain malicious regular expressions. Disable it for all public-facing uses of REs. Reported by Ashen-Shugar. [SW]
* align() would sometimes show extra column separators when columns were merged. [MG]
* @lock/interact was wrongly checked when paging a player with an @pageformat set. Reported by Odin. [MG]
* Channels you had both @chan/gagged and @chan/combined would still show connect messages. Reported by Paige. [MG]
* Fix a memory leak in @dolist/inline when used with @break. From a report by spork. [MG]
* @chan/decompile <hidden channel> by a mortal didn't give an error message. Reported by Paige. [MG]
* It was impossible to remove a thing from a channel which had been restricted so only players could join. Reported by Paige. [MG]
* Players with an @pageformat which eval'd to an empty string wouldn't know they were being paged. Reported by Ashen-Shugar. [MG]
* Fix crash in named q-registers. Reported by Qon@M*U*S*H. [DC]
* Enabling the log_commands config option while a LOG`CMD event was set would
cause endless queueing, until the event handler was halted as a runaway
object. Reported by spork. [MG]
* Fix a potential overflow problem in the code that computes queue load
averages for @ps. [SW]
* Enabling the log_commands config option while a LOG`CMD event was set would cause endless queueing, until the event handler was halted as a runaway object. Reported by spork. [MG]
* Fix a potential overflow problem in the code that computes queue load averages for @ps. [SW]
* @motd/down and @motd/full are actually shown now. [MG]
* Properly negotiate telnet with clients who spit out telnet codes instantly
upon connection like MUSHclient. Reported by Mercutio and AND. [MG]
* Properly negotiate telnet with clients who spit out telnet codes instantly upon connection like MUSHclient. Reported by Mercutio and AND. [MG]
* Improved configure support for NetBSD. [SW]
* Fix a compile error on non-Windows, non-BSD, non-Linux OSes. [SW]
@ -50,27 +32,17 @@ Hardcode:
* Improvements to networking code; robustness on errors and portability. [SW]
Functions:
* Added two new column modifiers to wrap(), x and X, to allow truncation of
fields instead of wrapping. Suggested by Qon, spork and others. [MG]
* Added two new column modifiers to wrap(), x and X, to allow truncation of fields instead of wrapping. Suggested by Qon, spork and others. [MG]
Minor changes:
* @attribute/delete now displays the info for an attribute, as per @attrib
<attr>, prior to deleting it. [MG]
* The *div*() and *mod*() math functions now take an unlimited number of
args, instead of exactly 2 args. Suggested by Mercutio, patch by Luke.
* A SUSPECT player changing their name to the same thing doesn't trigger
an alert. Suggested by Rince. [SW]
* valid(attrvalue, <value>, <name>) checks if &<name> obj=<value> is valid.
For @attrib/enum and /limit. [MG]
* Added @flag/decompile and @attribute/decompile, to decompile each table
to copy to another game. Suggested by spork. [MG]
* Newly set player passwords are salted to be more resistant to cracking via
rainbow tables by somebody with a copy of the database. You still shouldn't
be re-using a password for anything important, of course. Existing
passwords aren't automatically updated. [SW]
* @attribute/delete now displays the info for an attribute, as per @attrib <attr>, prior to deleting it. [MG]
* The *div*() and *mod*() math functions now take an unlimited number of args, instead of exactly 2 args. Suggested by Mercutio, patch by Luke.
* A SUSPECT player changing their name to the same thing doesn't trigger an alert. Suggested by Rince. [SW]
* valid(attrvalue, <value>, <name>) checks if &<name> obj=<value> is valid. For @attrib/enum and /limit. [MG]
* Added @flag/decompile and @attribute/decompile, to decompile each table to copy to another game. Suggested by spork. [MG]
* Newly set player passwords are salted to be more resistant to cracking via rainbow tables by somebody with a copy of the database. You still shouldn't be re-using a password for anything important, of course. Existing passwords aren't automatically updated. [SW]
* Added /clearregs to @trigger. Suggested by Volund. [MG]
* @motd with no args now acts like @motd/list, instead of clearing the MotD.
Use @motd/clear to clear the current one. Suggested by Bodin. [MG]
* @motd with no args now acts like @motd/list, instead of clearing the MotD. Use @motd/clear to clear the current one. Suggested by Bodin. [MG]
* @command can now be used by non-players. From a gripe of Kitai's. [MG]
* Update some configure macros to the latest versions. [SW]
@ -78,23 +50,17 @@ Minor changes:
Version 1.8.5 patchlevel 6 Jul 29, 2014
Hardcode:
* Removed an old debugging variable to reduce memory usage. Suggested by
spork. [MG]
* ssl_slave now gets passed its settings via a pipe, instead of on the
command line. [SW]
* Rewritten the telnet handler, to make it more manageable/modifiable,
instead of it being a huge bunch of nested switch()es. [MG]
* Removed an old debugging variable to reduce memory usage. Suggested by spork. [MG]
* ssl_slave now gets passed its settings via a pipe, instead of on the command line. [SW]
* Rewritten the telnet handler, to make it more manageable/modifiable, instead of it being a huge bunch of nested switch()es. [MG]
* Update the SFMT random number generator to 1.4.1. [SW]
* Built in and persistant uses of regular expressions are JIT compiled if the
host's PCRE version supports it, for faster matching.
* Built in and persistant uses of regular expressions are JIT compiled if the host's PCRE version supports it, for faster matching.
* Better support for BSD systems.
Functions:
* valid() can now test for valid channel names. Suggested by Volund. [MG]
* valid() now takes an optional <target> argument for some categories,
to see if <string> is a valid name for <target>. [MG]
* tan(90,d) now reports an error instead of a really big number. Suggested by
Peppel. [SW]
* valid() now takes an optional <target> argument for some categories, to see if <string> is a valid name for <target>. [MG]
* tan(90,d) now reports an error instead of a really big number. Suggested by Peppel. [SW]
* More math functions report errors. [SW]
* Added reglmatch[all][i]() functions, regexp versions of match[all](). [MG]
* isdaylight() now accepts time and timezone arguments. [SW]
@ -102,656 +68,363 @@ Functions:
* foreach() is now ansi-aware. Reported by Ashen-Shugar. [MG]
Minor changes:
* @channel/gag no longer persists across a full @shutdown. Suggested by
Trinsec. [MG]
* 'give' now gives more informative error messages when you try and give
pennies to someone who has the maximum, or take pennies from someone who
is broke. [MG]
* The message shown when you need to run 'make update' is now slightly
clearer about what to do and why. By Rince.
* @channel/gag no longer persists across a full @shutdown. Suggested by Trinsec. [MG]
* 'give' now gives more informative error messages when you try and give pennies to someone who has the maximum, or take pennies from someone who is broke. [MG]
* The message shown when you need to run 'make update' is now slightly clearer about what to do and why. By Rince.
* Removed some 20 year old Sun OS workaround code. Suggested by Fraibert.
* Slightly less confusing error message for @chan/buffer suggested by Sketch.
* 'HELP ENTRIES' is generated on the fly, and shows the total number of
pages. Suggested by [MG] and Trinsec. [SW]
* @success/@osuccess/@asuccess now get the old location of the moving object
in %0. Suggested by Riorgan. [SW]
* @mail/review with no args now lists all mail you've sent to everyone.
Suggested by Paige. [MG]
* @mail/review now shows the recipient in the message list, instead of the
sender. This is slightly more useful, since the person using the command
is always the sender. [MG]
* @mail/status now lets you twiddle the 'urgent' status of messages. From a
suggestion by Paige. [MG]
* You can now always see a channel if you've been joined to it and can speak
on it, even if you don't pass its @clock/see. Suggested by Rince. [MG]
* 'page foo=' now produces an error, instead of paging nothing. Suggested by
Paige. [MG]
* 'make localized' now ignores charset when building translation files, which
stops it throwing errors unnecessarily. [MG]
* 'HELP ENTRIES' is generated on the fly, and shows the total number of pages. Suggested by [MG] and Trinsec. [SW]
* @success/@osuccess/@asuccess now get the old location of the moving object in %0. Suggested by Riorgan. [SW]
* @mail/review with no args now lists all mail you've sent to everyone. Suggested by Paige. [MG]
* @mail/review now shows the recipient in the message list, instead of the sender. This is slightly more useful, since the person using the command is always the sender. [MG]
* @mail/status now lets you twiddle the 'urgent' status of messages. From a suggestion by Paige. [MG]
* You can now always see a channel if you've been joined to it and can speak on it, even if you don't pass its @clock/see. Suggested by Rince. [MG]
* 'page foo=' now produces an error, instead of paging nothing. Suggested by Paige. [MG]
* 'make localized' now ignores charset when building translation files, which stops it throwing errors unnecessarily. [MG]
* Use a more robust configure check for timezone data files. [SW]
* Added a /spoof switch to @mapsql, to spoof the enactor a la @trigger/spoof.
Suggested by Mercutio. [MG]
* Added a /spoof switch to @mapsql, to spoof the enactor a la @trigger/spoof. Suggested by Mercutio. [MG]
* Improved error reporting when info_slave or ssl_slave exits unexpectedly. [SW]
* hasflag(<player>, connected) now returns 1 if the caller can see that the
player is online, instead of always returning 0 for mortal callers. Most
recently suggested by Odin@M*U*S*H. [MG]
* hasflag(<player>, connected) now returns 1 if the caller can see that the player is online, instead of always returning 0 for mortal callers. Most recently suggested by Odin@M*U*S*H. [MG]
Fixes:
* Windows compile fixes by ChaosMageX.
* Fix a crash when expanding the flagset size. Reported by spork. [DC]
* @attribute/access incorrectly cleared an @attribute/limit on the same
attr. Reported by Ton Kyrion. [MG]
* @attribute/access incorrectly cleared an @attribute/limit on the same attr. Reported by Ton Kyrion. [MG]
* Help/translation fixes by spork, Riorgan and others. [MG]
* The 'give', 'take' and 'empty' commands displayed the wrong object names
when mogrifiers were used. Reported by Riorgan. [MG]
* Fix crash in ssl_slave when a connection drops in the middle of hostname
lookup.
* The 'give', 'take' and 'empty' commands displayed the wrong object names when mogrifiers were used. Reported by Riorgan. [MG]
* Fix crash in ssl_slave when a connection drops in the middle of hostname lookup.
* Crashbug in SQL fixed. Reported by Mercutio. [MG]
* @mapsql/colnames cleared q-registers in the first (colnames) action list
queued. Reported by Mercutio. [MG]
* @channel/join would give an 'ambiguous' error, even if you couldn't see the
other potentially-matching channels. Reported by Mercutio. [MG]
* Penn negotiated charset as iso-8859-1 (latin1) even if the MUSH was
running using a different charset. Reported by Tyler. [MG]
* Better support for mixing IPv4 and IPv6 connections. FreeBSD and NetBSD
should not need the --disable-ipv6 option to configure any more. [SW]
* Fixed an obscure buffer-overwrite bug in the channel system. Reported by
Volund@M*U*S*H/Roll@Multiverse Crisis MUSH. [MG]
* @mapsql/colnames cleared q-registers in the first (colnames) action list queued. Reported by Mercutio. [MG]
* @channel/join would give an 'ambiguous' error, even if you couldn't see the other potentially-matching channels. Reported by Mercutio. [MG]
* Penn negotiated charset as iso-8859-1 (latin1) even if the MUSH was running using a different charset. Reported by Tyler. [MG]
* Better support for mixing IPv4 and IPv6 connections. FreeBSD and NetBSD should not need the --disable-ipv6 option to configure any more. [SW]
* Fixed an obscure buffer-overwrite bug in the channel system. Reported by Volund@M*U*S*H/Roll@Multiverse Crisis MUSH. [MG]
& 1.8.5p5
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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
* 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]
& 1.8.5p4
Version 1.8.5 patchlevel 4 Mar 17, 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.
Suggested by Mercutio. [MG]
* 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. [MG]
* 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. [MG] [MUX] [Rhost]
* 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. Suggested by Mercutio. [MG]
* 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. [MG]
* 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. [MG] [MUX] [Rhost]
Commands:
* @dolist now accepts /inline and related switches, like @switch does.
Suggested by Reaver. [MG]
* @teleport/list teleports a list of objects to a single destination.
Suggested by Nyssa, [MUX]. [MG]
* @dolist now accepts /inline and related switches, like @switch does. Suggested by Reaver. [MG]
* @teleport/list teleports a list of objects to a single destination. Suggested by Nyssa, [MUX]. [MG]
* @sockset and SOCKSET can now show/set PROMPT_NEWLINES. [MG]
* @halt now takes a /noeval switch, and will always strip curly braces when
run /noeval. [MG]
* Added @mail/cstats, which shows the mail stats you see on connection.
Patch by spork.
* 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. Suggested by spork. [MG]
* WHO, DOING and SESSION now take wildcard patterns for names, as well as
a prefix. [MG]
* New option for @sockset/SOCKSET, 'stripaccents', to strip accents for a
single connection as per the NOACCENTS flag. [MG]
* @halt now takes a /noeval switch, and will always strip curly braces when run /noeval. [MG]
* Added @mail/cstats, which shows the mail stats you see on connection. Patch by spork.
* 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. Suggested by spork. [MG]
* WHO, DOING and SESSION now take wildcard patterns for names, as well as a prefix. [MG]
* New option for @sockset/SOCKSET, 'stripaccents', to strip accents for a single connection as per the NOACCENTS flag. [MG]
Functions:
* lpids()' second argument has been altered slightly, to allow you to list
the pids for one specific object only. Suggested by spork. [MG]
* The "player" field in pidinfo() has been renamed to "executor", for
clarity. "player" still works for backwards compatability. From a request
by tsen. [MG]
* stringsecs() can now handle the additional time periods that etime() can
return (years, weeks). [MG]
* lpids()' second argument has been altered slightly, to allow you to list the pids for one specific object only. Suggested by spork. [MG]
* The "player" field in pidinfo() has been renamed to "executor", for clarity. "player" still works for backwards compatability. From a request by tsen. [MG]
* stringsecs() can now handle the additional time periods that etime() can return (years, weeks). [MG]
* colors(..., name) is much more efficient. [SW]
* alias(object,) clears object's @alias. Suggested by spork. [MG]
* v(<integer>) is no longer the same as get(me/<integer>). Instead, it
always the <integer>th stack entry. [MG] [Rhost] [MUX]
* It's now documented that replace() can alter multiple words at once.
Reported by Jules. [MG]
* Some terminfo() information can now be retrieved by mortals on other
players' connections. Suggested by spork. [MG]
* Added a new option to colors() to include ansi underline, invert and
flash from the input in the output. [MG]
* locate() takes a new flag, 's', which will only return objects
controlled by the looker. Suggested by spork. [MG]
* @@() now takes a huge number of arguments, instead of ignoring commas in
the final arg, to stop it giving the 'unescaped comma' warning. Requested
by everyone. [MG]
* terminfo() now tells you whether a connection is having accents stripped,
either via NOACCENTS or @sockset. [MG]
* v(<integer>) is no longer the same as get(me/<integer>). Instead, it always the <integer>th stack entry. [MG] [Rhost] [MUX]
* It's now documented that replace() can alter multiple words at once. Reported by Jules. [MG]
* Some terminfo() information can now be retrieved by mortals on other players' connections. Suggested by spork. [MG]
* Added a new option to colors() to include ansi underline, invert and flash from the input in the output. [MG]
* locate() takes a new flag, 's', which will only return objects controlled by the looker. Suggested by spork. [MG]
* @@() now takes a huge number of arguments, instead of ignoring commas in the final arg, to stop it giving the 'unescaped comma' warning. Requested by everyone. [MG]
* terminfo() now tells you whether a connection is having accents stripped, either via NOACCENTS or @sockset. [MG]
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. Suggested by spork, [Rhost]. [MG]
* 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. Suggested by spork, [Rhost]. [MG]
* Compiler warning fixed by ChaosMageX.
* Help fixes by many, including spork, Wiggles and Bodin. [MG]
* The tables mapping color names and RGB values are now generated by a
script in utils/. [SW]
* Converting from named colors to the nearest xterm or ansi equivalent is
much more efficient. [SW]
* Converting from extended colors to ansi colors is smarter. Based on
work by Padraic. [SW]
* Email registration no longer pretends to work with really!old!addresses.
[SW].
* Better error reporting in logs and event hooks on failed email
registration. Suggested by Padriac. [SW]
* @decompile <exit> now reports the exit's source room. Suggested by
telandra2. [MG]
* You now only need to control an object to change its zone, or to use it
as a zone. Previously, ownership was required. Suggested by Cheetah. [MG]
* 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. [MG]
* When clients negotiate charset via telnet, US-ASCII and ASCII are now
presented as options. If the client picks one of them, that connection
will have accents stripped (as per the NOACCENTS flag). [MG]
* New attribute flag, quiet, suppresses the usual confirmation message
when an attribute's value or flags are changed. Suggested by Trinsec,
bribed by qa'toq. [MG]
* The tables mapping color names and RGB values are now generated by a script in utils/. [SW]
* Converting from named colors to the nearest xterm or ansi equivalent is much more efficient. [SW]
* Converting from extended colors to ansi colors is smarter. Based on work by Padraic. [SW]
* Email registration no longer pretends to work with really!old!addresses. [SW]
* Better error reporting in logs and event hooks on failed email registration. Suggested by Padriac. [SW]
* @decompile <exit> now reports the exit's source room. Suggested by telandra2. [MG]
* You now only need to control an object to change its zone, or to use it as a zone. Previously, ownership was required. Suggested by Cheetah. [MG]
* 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. [MG]
* When clients negotiate charset via telnet, US-ASCII and ASCII are now presented as options. If the client picks one of them, that connection will have accents stripped (as per the NOACCENTS flag). [MG]
* New attribute flag, quiet, suppresses the usual confirmation message when an attribute's value or flags are changed. Suggested by Trinsec, bribed by qa'toq. [MG]
Fixes:
* %c contained the evaluated input (the same as %u), instead of the
unevaluated input. Reported by Ingwaz. [MG]
* repeat() could write partial ANSI tags, causing buffer overflows. From a
report by Ashen-Shugar. [MG]
* %c contained the evaluated input (the same as %u), instead of the unevaluated input. Reported by Ingwaz. [MG]
* repeat() could write partial ANSI tags, causing buffer overflows. From a report by Ashen-Shugar. [MG]
* dbcks didn't reset corrupt exit's source room. Patch by Padriac.
* lmath(and,) returned 1 instead of 0. Reported by Padriac. [SW].
* Mixing old-style ansi colors and xterm colors was broken. [MG]
* Players who couldn't see xterm colors would sometimes get a highlighted
foreground color by mistake. [MG]
* colors(<old-style-ansi>, hex) and colors(*, 16color) were broken.
Reported by Kimiko. [MG]
* ANSI highlight would sometimes bleed when xterm colors were downgraded to
the basic 16-color ANSI palette. Reported by Kimiko. [MG]
* @entrances didn't correctly report the source of an exit. Reported by
spork. [MG]
* Players who couldn't see xterm colors would sometimes get a highlighted foreground color by mistake. [MG]
* colors(<old-style-ansi>, hex) and colors(*, 16color) were broken. Reported by Kimiko. [MG]
* ANSI highlight would sometimes bleed when xterm colors were downgraded to the basic 16-color ANSI palette. Reported by Kimiko. [MG]
* @entrances didn't correctly report the source of an exit. Reported by spork. [MG]
* Fix a crashbug in @command/delete. [MG]
* Fix database corruption on @flag/add [SW]
* Attempting to @mail someone without permission failed silently. Reported
by Kimiko. [MG]
* Players connecting dark with 'cd' were hidden even if they shouldn't have
been. Patch by thomaswdyoung.
* Attempting to @mail someone without permission failed silently. Reported by Kimiko. [MG]
* Players connecting dark with 'cd' were hidden even if they shouldn't have been. Patch by thomaswdyoung.
* Fixed a bug in colors(*,16color) with no ansi. [MG]
Hardcode:
* 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.
By spork.
* 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. By spork.
& 1.8.5p3
Version 1.8.5 patchlevel 3 Aug 23, 2012
Fixes:
* Fix a crash bug in new color code. Discovered by ChaosMageX, fixed by
Intrevis and [SW].
* Fix a crash bug in new color code. Discovered by ChaosMageX, fixed by Intrevis and [SW].
Functions:
* name() with no arguments is now an error. It should always have been, but
previously returned nothing for backwards compatability. If you still have
code that relies on that behaviour, you are extremely lazy and should be
ashamed of yourself. [MG]
* name() with no arguments is now an error. It should always have been, but previously returned nothing for backwards compatability. If you still have code that relies on that behaviour, you are extremely lazy and should be ashamed of yourself. [MG]
& 1.8.5p2
Version 1.8.5 patchlevel 2 Aug 18, 2012
Hardcode:
* render_string has been modified to work with multiple output formatters,
so it can display the appropriate color syntax for the client. [GM]
* render_string has been modified to work with multiple output formatters, so it can display the appropriate color syntax for the client. [GM]
* Tweak the networking code to try to reduce output latency/queue size. [SW]
Major changes:
* 256 Color support. Using 24 bit internally for representation and
downscaling to the client's possible output values. Use
SOCKSET colorstyle=xterm256 to see 256 color support, with
ansi(+colorname/+colorname,...) or ansi(#hexcode/#hexcode) for
extended color support, or @set me=xterm256. [GM] [MG]
* New SOCKSET socket command for changing socket options. Replaces the
@sockset command added in p1 for mortals, and can be used at the
login screen. Suggested by Sketch. [MG]
* @sockset is now @sockset <desc>[=<opt>,<value>[,...]], to query current
options or set options for any descriptor. [MG]
* The old @doing command has now been removed, and replaced with the normal
standard-attribute command (@doing <object>[=<message>]). [MG]
* 256 Color support. Using 24 bit internally for representation and downscaling to the client's possible output values. Use SOCKSET colorstyle=xterm256 to see 256 color support, with ansi(+colorname/+colorname,...) or ansi(#hexcode/#hexcode) for extended color support, or @set me=xterm256. [GM] [MG]
* New SOCKSET socket command for changing socket options. Replaces the @sockset command added in p1 for mortals, and can be used at the login screen. Suggested by Sketch. [MG]
* @sockset is now @sockset <desc>[=<opt>,<value>[,...]], to query current options or set options for any descriptor. [MG]
* The old @doing command has now been removed, and replaced with the normal standard-attribute command (@doing <object>[=<message>]). [MG]
Commands:
* look now takes an /opaque switch, which hides contents listings. Suggested
by Wiggles. [MG]
* @break and @assert now take a /queued switch, which causes the new <action
list> to be queued instead of run immediately, and an /inline switch which
gives default behaviour. For Rhost compatability. [MG]
* Two completely separate, but equally stupid, bugs made @nsprompt show
nospoof info just like @prompt. [MG]
* @open, open(), @dig, dig() accept specific garbage dbrefs to use
for the exits they make. [SW]
* look now takes an /opaque switch, which hides contents listings. Suggested by Wiggles. [MG]
* @break and @assert now take a /queued switch, which causes the new <action list> to be queued instead of run immediately, and an /inline switch which gives default behaviour. For Rhost compatability. [MG]
* Two completely separate, but equally stupid, bugs made @nsprompt show nospoof info just like @prompt. [MG]
* @open, open(), @dig, dig() accept specific garbage dbrefs to use for the exits they make. [SW]
Functions:
* colors() returns a list of all known color names known by PennMUSH, and
info about a particular color. [GM]
* valid() has two new categories, for validating color names and color code
sequences for ansi(). [MG]
* colors() returns a list of all known color names known by PennMUSH, and info about a particular color. [GM]
* valid() has two new categories, for validating color names and color code sequences for ansi(). [MG]
* etime() formats elapsed times using the same rules as in WHO. [SW]
Minor changes:
* The meaning of the COLOR flag has been restored. ANSI flag once again
means only highlight is supported, while COLOR means all ANSI 8 colors
(8*2 including highlight), flash, invert, etc are supported. [GM]
* Charset negotiation didn't work on MSVC, and now forces iso-8859-1 when
compiled that way instead. Reported by Daniel Powell. [MG]
* @config/set and @config/save now log to the wizard_log. Suggested by
Israphel. [MG]
* The ICLOC attribute, which was set on newly created players but never used
in any way, is no longer set. Suggested by Paige. [MG]
* @destroy'ing, @undestroy'ing, and the actual destruction of players is
now logged. Suggested by Padraic. [MG]
* The meaning of the COLOR flag has been restored. ANSI flag once again means only highlight is supported, while COLOR means all ANSI 8 colors (8*2 including highlight), flash, invert, etc are supported. [GM]
* Charset negotiation didn't work on MSVC, and now forces iso-8859-1 when compiled that way instead. Reported by Daniel Powell. [MG]
* @config/set and @config/save now log to the wizard_log. Suggested by Israphel. [MG]
* The ICLOC attribute, which was set on newly created players but never used in any way, is no longer set. Suggested by Paige. [MG]
* @destroy'ing, @undestroy'ing, and the actual destruction of players is now logged. Suggested by Padraic. [MG]
* Translation fixes by Stoko.
* round(4.5,0) behaved differently on Penn than it did on MUX, and
inconsistantly with rounding to more places on Penn. [SW]
* The 'On for' and 'Idle' time fields in WHO are smarter and won't overflow
their space. Suggested by Ari and Paige. [SW]
* round(4.5,0) behaved differently on Penn than it did on MUX, and inconsistantly with rounding to more places on Penn. [SW]
* The 'On for' and 'Idle' time fields in WHO are smarter and won't overflow their space. Suggested by Ari and Paige. [SW]
* Add a few new test cases. Requested by Sketch. [MG]
* It's now possible to clear/reset a prompt with @prompt <player>. [MG]
* New Pick_Dbref @power for specifying specific garbage dbrefs to use in
@create and friends. [SW]
* New Pick_Dbref @power for specifying specific garbage dbrefs to use in @create and friends. [SW]
Fixes:
* Reordered some checks in tz.c to compile on more distributions. Problem
reported by Zen@M*U*SH. [MG]
* Setting an exit Transparent didn't cause its destination's desc to get
shown as it should have. [MG]
* It became impossible in p1 to give a delimiter to wrap() without also
specifying a first line width. wrap(%0,%1,,%2) will now use the
normal <width> arg for first line width, the same as wrap(%0,%1) does.
Reported by Kitai. [MG]
* Free PCRE-allocated memory with pcre_free() instead of free(). Reported
by ChaosMageX@M*U*S*H. [DC]
* Reordered some checks in tz.c to compile on more distributions. Problem reported by Zen@M*U*SH. [MG]
* Setting an exit Transparent didn't cause its destination's desc to get shown as it should have. [MG]
* It became impossible in p1 to give a delimiter to wrap() without also specifying a first line width. wrap(%0,%1,,%2) will now use the normal <width> arg for first line width, the same as wrap(%0,%1) does. Reported by Kitai. [MG]
* Free PCRE-allocated memory with pcre_free() instead of free(). Reported by ChaosMageX@M*U*S*H. [DC]
* Fix some potential memory leaks in timezone file reading code. [SW]
* Off-by-one error in the helpfile index code. [MG]
* Improve docmentation of ip_addr config option. [SW]
* Fix an edge case in ansi_string_replace that could cause an overflow.
Reported by Ton Kyrion@M*U*S*H. [DC]
* Fix an edge case in ansi_string_replace that could cause an overflow. Reported by Ton Kyrion@M*U*S*H. [DC]
* Fix a memory leak in LOGOUT. [SW]
& 1.8.5p1
Version 1.8.5 patchlevel 1 May 15, 2012
Hardcode:
* 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]
* 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]
Deprecation:
* @emit/room and @doing/header have been deprecated. Use @lemit and @poll,
respectively, instead. [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]
* 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]
* 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.
* @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.
Fixes:
* 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]
* 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]
* 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]
* @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]
* 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]
* 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]
* wrap(%0,strlen(%0)) would incorrectly wrap the string onto two lines. Reported by Padraic. [MG]
Commands:
* @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]
* @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.
Functions:
* 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]
* 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]
* 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]
* 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]
& 1.8.5p0
Version 1.8.5 patchlevel 0 Feb 12, 2012
Major changes:
* The PCRE library is now required to build Penn, instead of falling
back to an old, buggy version formerly bundled with the MUSH. [SW]
Daniko assisted greatly with Windows changes and documentation.
* The OpenSSL library is now required to build Penn. Again, Daniko has
provided instructions for installing on Windows. [SW]
* A new command prefix, "}", enables debug for a single execution of the
command - }think foo, }+who, etc. See 'help }' for more info. Suggested
by Wiggles and [GM]. [MG]
* The PCRE library is now required to build Penn, instead of falling back to an old, buggy version formerly bundled with the MUSH. [SW] Daniko assisted greatly with Windows changes and documentation.
* The OpenSSL library is now required to build Penn. Again, Daniko has provided instructions for installing on Windows. [SW]
* A new command prefix, "}", enables debug for a single execution of the command - }think foo, }+who, etc. See 'help }' for more info. Suggested by Wiggles and [GM]. [MG]
Minor changes:
* Added a new event, OBJECT`FLAG, triggered when a flag/power with the
"event" restriction is set or cleared. Suggested by [SW]. [MG]
* Added a new event, OBJECT`FLAG, triggered when a flag/power with the "event" restriction is set or cleared. Suggested by [SW]. [MG]
* Expanded help on lock types and @powers. [MG]
* @startups are now processed in db order (#0, #1, etc) on reboot instead
of giving priority to player objects. [MG]
* @startups (and local_startup() in local.c) are now triggered slightly
later, ensuring that the db is fully loaded, and that the connected player
list is loaded on @shutdown/reboot. Suggested by Padraic. [MG]
* Switch names that are defined but not used by any commands are
warned about on startup, and several unused ones have been removed
from the master list. [SW]
* Tweak utils/mkcmds.pl for the above change and to remove references
to generating the obsolete patches.h. [SW]
* Tweak the parameters of the skip list used to store memcheck counts
to save some memory. [SW]
* Bring the scheme scripts in utils up to date with current versions
of chicken scheme (The implementation of the language they're
written for.) [SW]
* The test harness code strips trailing whitespace before attempting to match
against expected results, making it easier to use bounded regexps. [SW]
* @destination (for variable exits) is now a standard attribute, and has
a helpfile. [MG]
* Sound is now propagated through audible variable exits, and exits @linked
to 'home'. Suggested by Mercutio. [SW]
* The internal QUEUE attribute is no longer used to track the number
of action lists an object has queued; the objdata system is used
instead. [SW]
* isobjid() now requires a full object id (with :ctime), and will return 0
for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still
matches both dbrefs and objids. Suggested by Covenent. [MG]
* @entrances and entrances() now use the same internal routines as @search,
and have similar (and saner) privs. From a suggestion by Sketch. [MG]
* Connection messages that are evaluated from an attribute instead of
read from a file get the dbref of the connected player as %1, as
long as they're ones shown post-connection (motd_file, etc.) [SW]
* Passwords are, thanks to OpenSSL digest routines, now stored in a
less error prone, more secure, flexible and extendable
format. Existing player passwords will be upgraded automatically on
login. [SW]
* New script in utils/ for manipulating player passwords in an offline
database. Useful if you forget God's password. [SW]
* The my_vsnprintf function in the hardcode has been renamed to
mush_vsnprintf to avoid a conflict with MySQL. Reported by Balerion @
Blood of Dragons. [MG]
* The enactor (%#) for the PLAYER`DISCONNECT event is now more useful,
instead of always being set to the dbref of the player disconnecting (%0).
Suggested by Padraic. [MG]
* The SOCKET`LOGINFAIL event now gets passed the name that was entered as
%5 when no matching player is found. Suggested by Daniel Powell. [MG]
* @startups are now processed in db order (#0, #1, etc) on reboot instead of giving priority to player objects. [MG]
* @startups (and local_startup() in local.c) are now triggered slightly later, ensuring that the db is fully loaded, and that the connected player list is loaded on @shutdown/reboot. Suggested by Padraic. [MG]
* Switch names that are defined but not used by any commands are warned about on startup, and several unused ones have been removed from the master list. [SW]
* Tweak utils/mkcmds.pl for the above change and to remove references to generating the obsolete patches.h. [SW]
* Tweak the parameters of the skip list used to store memcheck counts to save some memory. [SW]
* Bring the scheme scripts in utils up to date with current versions of chicken scheme (The implementation of the language they're written for.) [SW]
* The test harness code strips trailing whitespace before attempting to match against expected results, making it easier to use bounded regexps. [SW]
* @destination (for variable exits) is now a standard attribute, and has a helpfile. [MG]
* Sound is now propagated through audible variable exits, and exits @linked to 'home'. Suggested by Mercutio. [SW]
* The internal QUEUE attribute is no longer used to track the number of action lists an object has queued; the objdata system is used instead. [SW]
* isobjid() now requires a full object id (with :ctime), and will return 0 for simple dbrefs, or objids of destroyed/invalid objects. isdbref() still matches both dbrefs and objids. Suggested by Covenent. [MG]
* @entrances and entrances() now use the same internal routines as @search, and have similar (and saner) privs. From a suggestion by Sketch. [MG]
* Connection messages that are evaluated from an attribute instead of read from a file get the dbref of the connected player as %1, as long as they're ones shown post-connection (motd_file, etc.) [SW]
* Passwords are, thanks to OpenSSL digest routines, now stored in a less error prone, more secure, flexible and extendable format. Existing player passwords will be upgraded automatically on login. [SW]
* New script in utils/ for manipulating player passwords in an offline database. Useful if you forget God's password. [SW]
* The my_vsnprintf function in the hardcode has been renamed to mush_vsnprintf to avoid a conflict with MySQL. Reported by Balerion @ Blood of Dragons. [MG]
* The enactor (%#) for the PLAYER`DISCONNECT event is now more useful, instead of always being set to the dbref of the player disconnecting (%0). Suggested by Padraic. [MG]
* The SOCKET`LOGINFAIL event now gets passed the name that was entered as %5 when no matching player is found. Suggested by Daniel Powell. [MG]
Commands:
* Added @mail/review for reading mail you've sent, and @mail/retract for
deleting unread mail that you sent. Idea from MUX. Patch by Minion.
* @hook/list now shows error messages if you don't have permission to use
it, or if a command has no hooks, instead of failing silently. Suggested
by Padraic. [MG]
* Wizards can now @pcreate players with restricted names, as well as being
able to rename existing players to forbidden names. Suggested by Nymeria @
Blood of Dragons. [MG]
* Added @mail/review for reading mail you've sent, and @mail/retract for deleting unread mail that you sent. Idea from MUX. Patch by Minion.
* @hook/list now shows error messages if you don't have permission to use it, or if a command has no hooks, instead of failing silently. Suggested by Padraic. [MG]
* Wizards can now @pcreate players with restricted names, as well as being able to rename existing players to forbidden names. Suggested by Nymeria @ Blood of Dragons. [MG]
Functions:
* Functions that take a sort type argument now accept 'mtime' for
sorting based on object's modification time. Patch by Minion.
* New registers() function, like listq() but returns all kinds of registers
(q-registers, %0-%9 args, iter/switch context, regexp captures). Also
takes an output separator arg. Suggested by Wiggles. [MG]
* Functions that take a sort type argument now accept 'mtime' for sorting based on object's modification time. Patch by Minion.
* New registers() function, like listq() but returns all kinds of registers (q-registers, %0-%9 args, iter/switch context, regexp captures). Also takes an output separator arg. Suggested by Wiggles. [MG]
* digest(list) returns all message digest algorithms the server supports. [SW]
* sha0() has been deprecated in favor of digest(). [SW]
Fixes:
* lit() didn't properly handle '\'s. Reported by Wiggles. [MG]
* listq() incorrectly returned all registers (including %0-%9, %i0, etc),
not just %q-registers. Reported by Wiggles. [MG]
* The mud_url code didn't always work correctly in Firefox because http
headers weren't sent. [MG]
* %0 and %1 arguments weren't properly passed through verb attributes after
a change in p8. Reported by Padraic. [MG]
* Fix really stupid copy-and-paste error in magic sorts on strings with
ANSI, which broke setinter() and friends. Reported by Minion. [MG]
* listq() incorrectly returned all registers (including %0-%9, %i0, etc), not just %q-registers. Reported by Wiggles. [MG]
* The mud_url code didn't always work correctly in Firefox because http headers weren't sent. [MG]
* %0 and %1 arguments weren't properly passed through verb attributes after a change in p8. Reported by Padraic. [MG]
* Fix really stupid copy-and-paste error in magic sorts on strings with ANSI, which broke setinter() and friends. Reported by Minion. [MG]
* Help fixes by Wiggles, Mouvar and others. [MG]
* Memory leak in ldelete() fixed. [MG]
* Fix a crashbug reported by Minion. [MG]
* Sorting functions now ignore ANSI when sorting a string as a number
or dbref. From report by Mouvar. [MG]
* strreplace() was broken for overly long length arguments. Reported
by Ashen-Shugar. [SW]
* Sorting functions now ignore ANSI when sorting a string as a number or dbref. From report by Mouvar. [MG]
* strreplace() was broken for overly long length arguments. Reported by Ashen-Shugar. [SW]
* Compile errors on Windows with OpenSSL. Reported by Daniko.
* @uptime could report negative times for the first dump, purge, etc after
a game was started. Reported by Cooee. [MG]
* @uptime could report negative times for the first dump, purge, etc after a game was started. Reported by Cooee. [MG]
* override/inplace hooks from .cnf files didn't work correctly. [MG]
* The portmsg announcer daemon was broken. Reported by Minion. [SW]
* A change in p8 broke the sending of the Pueblo hello string in some cases.
Reported by Mercutio. [MG]
* A change in p8 broke the sending of the Pueblo hello string in some cases. Reported by Mercutio. [MG]
* Fix crash bug in @sitelock/remove [SW]
* ssl_slave would drop connections if it couldn't resolve a valid hostname
for the connecting IP address. [SW]
* Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value
of the previous matching capture. From a report by Sketch. [MG]
* ssl_slave would drop connections if it couldn't resolve a valid hostname for the connecting IP address. [SW]
* Non-matching regexp captures ($0, $<foo>, etc) sometimes had the value of the previous matching capture. From a report by Sketch. [MG]

View file

@ -13,9 +13,7 @@ be read in 'help patchlevels'.
Version 1.8.6 patchlevel 0 ?? ??, 201?
NOTE: When updating from an earlier version of PennMUSH, you'll need to run
'make update' and './config.status' in the toplevel PennMUSH directory prior
to running 'make'.
NOTE: When updating from an earlier version of PennMUSH, you'll need to run 'make update' and './config.status' in the toplevel PennMUSH directory prior to running 'make'.
Major changes:
* Hosted on Github. Thanks, Google. [DC]
@ -23,62 +21,45 @@ Major changes:
Functions:
* element() is now an alias for match(). Suggested by Wiggles. [985-TK]
* Added json(), for creating valid JSON-encoded data. [MG]
* Added oob(), for sending out-of-band messages via the General MUD
Communication Protocol (GMCP) telnet option. Requested by Qon. [MG]
* Added oob(), for sending out-of-band messages via the General MUD Communication Protocol (GMCP) telnet option. Requested by Qon. [MG]
* registers() only listed registers whose values were strings, not ints. [MG]
* filter() and filterbool() can now be passed additional arguments, for
Rhost compatability. Requested by Volund. [1019-MG] [Rhost]
* valid() can now validate timezones, locktypes and lockkeys. Suggested by
Volund. [1021,1025-MG]
* convtime() now returns #-1, instead of -1, on error. This change is
-backwards incompatible-, but necessary as -1 is a potentially valid output
for convtime(). Suggested by KimikoMuffin. [1010-MG]
* convsecs() can now accept negative inputs when Extended convtime() is
available. Suggested by Volund. [1010-MG]
* filter() and filterbool() can now be passed additional arguments, for Rhost compatability. Requested by Volund. [1019-MG] [Rhost]
* valid() can now validate timezones, locktypes and lockkeys. Suggested by Volund. [1021,1025-MG]
* convtime() now returns #-1, instead of -1, on error. This change is -backwards incompatible-, but necessary as -1 is a potentially valid output for convtime(). Suggested by KimikoMuffin. [1010-MG]
* convsecs() can now accept negative inputs when Extended convtime() is available. Suggested by Volund. [1010-MG]
* avg() is now an alias for mean(). [1023-TK] [Rhost]
* textsearch() allows searching the contents of helpfiles. [MG]
* speak() no longer has the odd TinyMUSH behaviour of ': foo' being a
semipose; speakpenn() is now an exact alias. [1034-MG]
* timefmt() and isdaylight() can now take a negative number of seconds for
times prior to 1970 when Extended Convtime is available. [MG]
* colors(...,auto) returns colors in the same style as their input. Suggested
by Kimiko. [MG]
* speak() no longer has the odd TinyMUSH behaviour of ': foo' being a semipose; speakpenn() is now an exact alias. [1034-MG]
* timefmt() and isdaylight() can now take a negative number of seconds for times prior to 1970 when Extended Convtime is available. [MG]
* colors(...,auto) returns colors in the same style as their input. Suggested by Kimiko. [MG]
* rjust(str,X,,1) truncated the end of the string, instead of the start. [MG]
* Minor json() bug and documentation fixes. [MG]
Commands:
* The 'kill' and 'slay' commands have been removed. [1033-TK]
* Remove ancient @channel foo=on behavior. Reported by Paige. [870-TK]
* @logwipe can do more than just erasing a log file. [SW]
* @hooks now have a number of named registers (available through
r(<name>,args)) with each of the hooked command's arguments. [MG]
* @hooks now have a number of named registers (available through r(<name>,args)) with each of the hooked command's arguments. [MG]
* Added @if and @skip. [MG] [Rhost] [MUX]
* help/search <pattern> lets you search within helpfiles. [MG] [Rhost]
Minor changes:
* The 'HAVEN' flag can now only be set on players. [1033-TK]
* Added a few more date formats to getdate.template for convtime(). Suggested
by Volund and Mercutio. [1020-MG]
* Most PennMUSH helpfiles are no longer hard-wrapped at 78 characters; noone
connects from clients that can't wrap any more. [1030-MG]
* Added a few more date formats to getdate.template for convtime(). Suggested by Volund and Mercutio. [1020-MG]
* Most PennMUSH helpfiles are no longer hard-wrapped at 78 characters; noone connects from clients that can't wrap any more. [1030-MG]
* Other minor help fixes. [MG]
* Attempting to run an empty SQL query via any command/function now gives a
better error/return value. Reported by Qon. [MG]
* Attempting to run an empty SQL query via any command/function now gives a better error/return value. Reported by Qon. [MG]
* Added some tests for json(), and more tests for ljust()/rjust(). [MG]
Hardcode:
* Clean up some more remnants of the previous configure package's
naming convention in favor of autoconf style ones. [SW]
* Clean up some more remnants of the previous configure package's naming convention in favor of autoconf style ones. [SW]
* OpenBSD compilation fixes. [SW]
* Support authorization of ssl_slave forwarded connections on NetBSD,
OpenBSD. [SW]
* Remove old FAM-based file monitoring code, due to bitrot and FAM's last
release being 2003. [SW]
* Support authorization of ssl_slave forwarded connections on NetBSD, OpenBSD. [SW]
* Remove old FAM-based file monitoring code, due to bitrot and FAM's last release being 2003. [SW]
* Add git revision, if present, to @version & version(). [994-TK]
* Log files that grow over a user-specified size can now be rotated or
trimmed down. [SW]
* Log files that grow over a user-specified size can now be rotated or trimmed down. [SW]
* game/restart is now auto-generated during 'make update'. [928-TK]
* Fixed a memory leak in @switch. [MG]
* A bug in @lock allowed invalid lock names to be used. [MG]
* Added support for the General MUD Communication Protocol (GMCP). See
http://www.gammon.com.au/gmcp for more info. Requested by Qon. [MG]
* Choosing what scheme is used in compressing attribute text in-game is now
a run-time option set in mush.cnf, not options.h [SW]
* Added support for the General MUD Communication Protocol (GMCP). See http://www.gammon.com.au/gmcp for more info. Requested by Qon. [MG]
* Choosing what scheme is used in compressing attribute text in-game is now a run-time option set in mush.cnf, not options.h [SW]