This is the changes file for PennMUSH 1.8.1. 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) [TAP] is T. Alexander Popiel, a PennMUSH developer (aka Talek) [SW] is Shawn Wagner, a PennMUSH developer (aka Raevnos) [EEH] is Ervin Hearn III, a PennMUSH developer (aka Noltar) [GM] is Greg Millam, a PennMUSH developer (aka Walker) [3] refers to code by (or inspired by) TinyMUSH 3.0 [MUX] refers to code by (or inspired by) TinyMUX 2.x [Rhost] refers to code by (or inspired by) RhostMUSH ========================================================================== Version 1.8.1 patchlevel 10 September 13, 2006 Fixes: * Cleaned up some compiler warnings. [SW] * The AAHEAR and AMHEAR attribute flags work on listening parents. Report by PAD@M*U*S*H. [GM] * Flags without a letter would truncate the list of set flag letters. Reported by Intrevis@M*U*S*H and Nathan Baum. Patched by latter. * Win32 lacks the LC_MESSAGES setlocale() category. Reported by Intrevis. * Trying to ignore signals could crash on Win32. Reported by Intrevis. * Fixed parse errors in non-C99 compilers. Reported by Intrevis. * Help fixes by Talvo, Sketch * Fixes for 64-bit platforms [SW] * @dump/paranoid produced corrupt databases. Reported by Marvin@M*U*S*H. [SW] * Better support for dealing with databases with a different number of attributes on an object than expected. Marvin and Luke. [SW] * Fixed the example in cmdlocal.c. Reported by Tokeli [SW] * Fix in CHAT_TOKEN_ALIAS. [GM] Functions: * link() now takes an optional third argument to make it act like @link/preserve. Suggested by qatoq@ST:Foundations. Minor Changes: * The hash table code now calls a cleanup function on data when deleting an entry. [SW] * The above is used in db.c, function.c and plyrlist.c [SW] * @config compile reports if MySQL support is present. (This does not mean the game is configured to use it.) [SW] * restart copies log files from the last time the mush was running to game/save/ instead of deleting them. [SW] Version 1.8.1 patchlevel 9 July 9, 2006 Fixes: * Fixes from 1.8.0p13. Version 1.8.1 patchlevel 8 June 3, 2006 Attributes: * New 'AAHEAR' and 'AMHEAR' attribute flags, when set on an ^listen attribute, cause it to behave like @aahear or @amhear respectively, instead of like @ahear. Suggested by Jules@M*U*S*H. Patch by Talvo@M*U*S*H. * New UNIMPLEMENTED_COMMAND command handles commands that are known but not implemented (currently just @SQL). By default, produces a standard message, but can now be @hooked, etc. Suggested by Talvo@M*U*S*H. [TAP]. * @conformat and @invformat are now passed a |-delimited list of object names, unparsed in the default fashion, as %1. Patch by Talvo@M*U*S*H. Functions: * default() can now take any number of obj/attr cases. Suggested by Nathan Baum, patch by Talvo@M*U*S*H. * lwhoid(), mwhoid(), xwhoid(), xmwhoid() work like lwho(), etc. but return objids instead of dbrefs. Patch by Talvo@M*U*S*H. * stringsecs() converts timestrings to seconds. Patch by Talvo@M*U*S*H. Minor changes: * %u is now set to the evaluated typed $command (when a $command is matched) and is available to locks. Suggested by Jules@M*U*S*H, patch by Talvo@M*U*S*H. * Rooms reachable from FLOATING rooms are now considered topologically connected, just like rooms reachable from the base room. Patch by Nathan Baum. * %i0-%i9 evaluates to itext(0)-itext(9) for convenience in iter(). Suggested by Nathan Baum. Patch by Talvo@M*U*S*H. * When safer_ufun is on, you must control an object to @function an attribute on it. This prevents, e.g., mortals with @function power from making attributes on wizard objects into @functions. Suggested by Talvo@M*U*S*H. * Internal eval_lock_with function added to support passing special %0/%1 values to lock evaluations. Suggested by Malix@8bit. * Improved @uptime display by Ambrosia@M*U*S*H. * Players may @search a ZMP if they pass the zone lock. Patch by Talvo@M*U*S*H. Fixes: * cbuffer() crash fixed. Report by qa'toq@ST:Foundations. [GM] * regex crash bug fixed. [GM] * insert() added an extra delimiter when inserting at end of list. Report by Sangman. [SW] * make distclean is more thorough. Patch by Ranmir@M*U*S*H. * EQSPLIT commands with no equal sign that were hooked were passed to the hook attribute with an equal sign (and nothing to the right). Fixed. Suggested by Talvo@M*U*S*H. * zwho/zmwho can now be used by see_all players on any zone. Suggested by Talvo@M*U*S*H. * crecall() now accepts 1 or 2 arguments, as promised. Report by Sketch@M*U*S*H. * attrib_set(obj/attr,) sets the attribute to a single space when EMPTY_ATTRS is off. Patch by Talvo@M*U*S*H. * Portability fix in fun_speak. [EEH] * Fix to TZ parsing in src/funtime.c by Jules@M*U*S*H. * Fix to speak() for fragments of speech by Talvo@M*U*S*H based on report by Trelane@M*U*S*H. * Typo fixes in game/aliascnf.dst by Talvo@M*U*S*H. * Help fixes by Talvo@M*U*S*H, Sketch@M*U*S*H. Version 1.8.1 patchlevel 7 March 21, 2006 Major changes: ** PLEASE READ ** * The FIXED flag's restriction on 'home' is no longer applied in the hardcode but through restrict.cnf. A new entry has been added to restrictcnf.dst for this -- people running existing MUSHes that use the FIXED flag will want to copy this to their restrict.cnf. Locks: * @lock/take controls who may 'get' something from a container or location; note that @lock/enter no longer controls this on containers but only controls who may 'enter'. The container's TAKE_LOCK`*FAILURE attributes provide messages on a failed get. Suggested by BladedThoth@M*U*S*H. Patch by Talvo@M*U*S*H. Commands: * @chan/recall can take an extra argument to specify the line to start the recall from. Suggested by Sholevi@M*U*S*H. Patch by Talvo@M*U*S*H. Functions: * ulambda() is a version of u() that can take #lambdas. [GM] * speak() for language processing. Suggested by Nymeria@M*U*S*H. Patch by Talvo@M*U*S*H. [3] * width() and height() take an optional second argument to set the default values. Patch by Nathan Baum. * unique() function removes contiguous duplicates in lists. [SW] * nextdbref() returns the next dbref on the free list. Suggested by Jules@M*U*S*H. Patch by Talvo@M*U*S*H. * Specifying more than one type to locate() now makes each of them preferred (not just the last one). Suggested by Anyasha@ST:Foundations. * namelist() parses a list of dbrefs and possibly-quoted names a la page and returns the corresponding dbrefs. Patch by Talvo@M*U*S*H. * crecall() is a functional form of @chan/recall. Suggestd by Cheetah and Trinsec@M*U*S*H. Patch by Talvo@M*U*S*H. Flags: * The LIGHT flag now overrides the DARK flag consistently. DARK objects will show up in LIGHT rooms and anything set both LIGHT and DARK is effectively LIGHT. Suggested by Renee@ShoreSide. Patch by Talvo@M*U*S*H. Minor changes: * @poll by itself now displays the current poll instead of clearing it. @poll/clear does that. [SW] * Added aliases for @atrlock/@atrchown/atrlock to 'attr' versions in aliascnf.dst. Suggested by Talvo@M*U*S*H. * Players who already have a forbidden name (as their name or alias) may change to that name. Patch by Talvo@M*U*S*H. * New alias_flag() and alias_power() hardcode functions for hackers. Patch by Talvo@M*U*S*H. * Mortals can use @power/list and @power <power> commands. Patch by Talvo@M*U*S*H. * Restriction-checking by power fixed in cases where no flag restrictions were applied. Patch by Talvo@M*U*S*H. * New type GARBAGE for @search/lsearch type class. * @pemit/list now accepts player names as well as dbrefs, a la page. Patch by Talvo@M*U*S*H. Fixes: * pcre.c includes config.h again. [EEH]. * Help fixes by Talvo@M*U*S*H. * Fixes from 1.8.0p12 Version 1.8.1 patchlevel 6 February 25, 2006 Major Changes: * pcre updated to 6.4. This includes such nifty features and named captures. [SW] * NT_TCP code has been removed from the server. It was deemed less useful than keeping the networking code unitary and the ability to @shutdown/reboot. Patch by Nathan Baum. Flags: * New LOUD flag (admin-settable) causes an object to bypass speech (including chat) and interaction locks. Admin and others with Pemit_All no longer pass interaction locks automatically unless they are also LOUD. Patch by Cheetah@M*U*S*H. Locks: * New DBREFLIST^<attrib> lock key checks to see if the enactor appears in a list of dbrefs/objids stored on an attribute of the object, simplifying a very common need. Suggested by NightDaemon@M*U*S*H, patch by Cheetah@M*U*S*H. Powers: * Many_Attribs power allows an object to have more attributes than the max_attrs_per_obj parameter. Suggested by Nymeria@M*U*S*H. Functions: * decompose() now decomposes ansi codes into ansi() calls. Patch by Sketch@M*U*S*H. * mapsql() efficiently feeds sql query results to an attribute. [GM] * wildgrep()/wildgrepi() are versions of grep()/grepi() that now take wildcard patterns instead of substrings. [SW] * regmatch()/regedit() now has a more flexible syntax for assigning subpatterns to %q-registers. [SW] * decompose() no longer inserts an initial backslash all the time. Suggested by Trinsec@M*U*S*H. * ordinal() returns the spelled-out ordinal form of an integer. Suggested by Malone@HavenMUSH. Minor Changes: * Font size tags (for pueblo) are not quite so huge for room names. * The /noeval switch for @command is now called /noparse. Patch by Nathan Baum. * hints/cygwin.sh has been removed, as no hints were needed to build on cygwin when tested with 1.5.19-4. win32/README.cygwin has been added to document the cygwin build process. * Added hints/darwin-fink.sh and README.OSX. [SW] Fixes: * Track_Money objects with No_Pay still reported coins lost to queue costs, even though they didn't pay them. Report by Cheetah@M*U*S*H. [GM] * Help fixes by Trinsec@M*U*S*H, Cheetah@M*U*S*H. * Various %c weirdnesses fixed by Cheetah@M*U*S*H. * Better message in restart when mush.cnf not found by Talvo@M*U*S*H. * @alias provides more specific error messages for invalid aliases of various sorts. Suggested by Intrevis@M*U*S*H. * Function restriction localize now appears in @function info output. Better error messages when attempting to use invalid function restrictions. Reported by Trinsec@M*U*S*H. * Linting of warnings. [SW] * Command and function names may now really start with punctuation characters. Reported by Talvo@M*U*S*H. * Fixes from 1.8.0p11. Version 1.8.1 patchlevel 5 January 29, 2006 Major Changes: * @attrib/access no longer treats one-word flag lists that don't match a single flag as a set of flag characters. You must now always specify a space-separated list of full flag names. Commands: * @list/locks and list(locks) lists all defined locktypes. Suggested by Jules@M*U*S*H, patch by Walker@M*U*S*H. * New @search classes 'start' (nth element of return list to start with) and 'count' (how many elements to show, from <start>). Useful for getting results a page at a time. Patch by Walker@M*U*S*H. Functions: * nsearch()/nlsearch()/nchildren() return the number of objects that would be returned by the equivalent search/lsearch/children call. Patch by Walker@M*U*S*H. Minor Changes: * delete() can use a negative length argument to delete characters leftward, a la MUX. [MUX, SW]. * In @mail commands, <n>: is now recognized as meaning 'all messages in folder n'. Notably, @mail 3: now lists all messages in folder 3, rather than reading all messages in folder 3. Patch by Sketch@M*U*S*H. * When one alias in a list of aliases being set is invalid, we now report it with specificity. Suggested by Talvo@M*U*S*H. * You no longer need to escape commas in decompose(). Suggested by Trinsec@M*U*S*H. * @sitelock rules for Guest access can now be specified per-guest character. Suggested by Talvo@M*U*S*H. * process_expression now parses for regex pattern captures by default, so lots of things will work better under regedit(). Use of a ufun clears the captured registers so dollar signs in ufuns don't need escaping. Patch by Walker@M*U*S*H. * Refactoring of ufun code by Walker@M*U*S*H. Fixes: * Help fixes by Trinsec@M*U*S*H and Talvo@M*U*S*H and qa'toq@M*U*S*H. * Crash bug in page fixed. Reported by the fine folks at ST:Foundation. Patch by Walker@M*U*S*H. * Win32 portability fixes. [EEH] * Fixes from 1.8.0p10. Version 1.8.1 patchlevel 4 December 6, 2005 Major Changes: * Errors in matching switches to commands are ignored when the command is hook/ignored or hook/overriden, so you can override a built-in command and provide your own switches. Suggested by Trinsec@M*U*S*H. Mail: * @mailfilter attribute causes incoming mail to be be automatically filed to a folder if it evaluates to a folder name/number. Patch by Sketch@M*U*S*H. Commands: * @prompt/@nsprompt work like @pemit/list, but add a telnet GOAHEAD at the end of the message when emitting to players; players whose clients handle GOAHEAD (e.g. tf) will get the message displayed as a prompt in the input window. Suggested by Trinsec@M*U*S*H. * The PROMPT_NEWLINES socket command can be used to add a newline after the GOAHEAD in a prompt, for clients that mix up prompt lines with other output. Functions: * namegrab() and namegraball(). Patch by Walker@M*U*S*H. * prompt() and nsprompt() (the function equivalents of @prompt/@nsprompt). * textentries(). Suggested by Trinsec@M*U*S*H. * cdesc(), cusers(), cmsgs(), cbuffer(), cstatus(), clflags() functions. Suggested by d'Ark@M*U*S*H. * numversion() returns Penn version as an integer (1008001004) for softcode use. Minor changes: * @chan/list works better for people who increase CHAN_NAME_LEN. Suggested by Trinsec@M*U*S*H. * Help fixes by Trinsec@M*U*S*H, Chili@M*U*S*H. * Several powers (tport_anything, tport_anywhere, no_money, no_quota, debit, sql_ok) are now aliased to TinyMUSH/TinyMUX equivalents as well, for better code portability. [3,MUX] Fixes: * center() behaves better when given a fourth argument but not a third one. Also fixes to cases where the right fill string is one longer than the left. Report by Ian@M*U*S*H * Fixes from 1.8.0p9. Version 1.8.1 patchlevel 3 September 15, 2005 Fixes * Bugfixes from 1.8.0p8 applied. Version 1.8.1 patchlevel 2 September 5, 2005 Commands: * @edit/check shows the results of an @edit without actually doing it, to avoid inadvertent overediting. Patch by Walker@M*U*S*H. Functions: * sortkey() sorts a list by mapping each list element through a function and applying a standard sort type. Patch by Walker@M*U*S*H. Minor changes: * "% " (percent-space) is now parsed to a literal percent-space, making it easier to type things like "I'm 50% happy". And % at end of line is parsed to a literal %. Patch by Sketch@M*U*S*H. * @nameformat now receives the default-formatted name as %1 so you can edit from that if you prefer. Suggested by Talvo@M*U*S*H. * Added netbsd hints. Suggested by Tyr@M*U*S*H. * hastype() can take a list of types to check for, not just one. [SW] * Add @function/preserve, which does the same thing as the localize restriction. [MUX] [SW] * Leaving out the <filler> argument to align() defaults it to a space. Suggested by Tyr@M*U*S*H, patch by Walker@M*U*S*H. * Improved error message for setq() with odd arguments. Report by Malix@8bit. * When variable exits fail due to invalid/not permitted destination, the enactor is told what the attempted destination was. Suggested by Nathan Baum. * Rooms may now @search/search() their owners. Suggested by Kali@M*U*S*H. Fixes: * @function/restrict mentioned in help. [SW] * Clearer help on parallel setq. Suggested by Trinsec@M*U*S*H. [TAP] * lsearch() didn't refund pennies when it failed because of lack of permissions or invalid search criteria. Reported by Nathan Baum. [SW] * lsearch() could return garbage objects. Report by Nathan Baum. [SW] * %+ now only records argument count from last ufun, not from other (builtin) functions. Report by Cheetah@M*U*S*H. * Some linting of float comparisons. Report by Cheetah@M*U*S*H. * page <player>= now pages the player with a blank line instead of repaging the last paged player with "<player>". Report by Cheetah@M*U*S*H. Version 1.8.1 patchlevel 1 June 27, 2005 Fixes: * Players could set the 'internal' attribute flag, which causes confusion. Report by Cooee@PDX. * Setting attribute flags by character alias did not work properly. Version 1.8.1 patchlevel 0 June 25, 2005 Major Changes: * Players may have multiple aliases, by specifying a semicolon-separated list to @alias. Players may list their usual @name as one of their aliases, and the @name command may be used to switch to any alias. The maximum number of aliases per non-Wizard player may be limited by the max_aliases config directive. Suggested by Nymeria@M*U*S*H. [3] * 'home' is now a standard command, with no special precedence. It can be @command/disabled and/or @hook'd. Suggested by several people. If 'home' is disabled, 'goto home' will no longer work (but @tel to home is still allowed). Flags: * A player with the TRACK_MONEY flag set gets a message any time their objects spend or lose money. Patch by Walker@M*U*S*H. * New Pueblo_Send power allows use of xch_cmd and send tags. Mail: * The @MAILFORWARDLIST attribute can be set to a list of dbrefs or objids to which any @mail received should be forwarded. Your own dbref may be listed if you wish to retain a copy of the message as well. You must pass the @lock/mailforward of any player listed in your @MAILFORWARDLIST. Suggested by T'orA@M*U*S*H. Functions: * setq()/setr() can set multiple registers in parallel. Suggested by Nathan Baum. [SW] * center() can now take multi-character fills, and can have different left and right fills. Suggested by Boris@M*U*S*H. * attrib_set() is a version of set() for setting attributes that has a more comfortable syntax and that can clear attributes without wiping whole attribute trees like wipe(). Suggested by Kevin@M*U*S*H. [TAP] * extract()'s second and third arguments are now optional, and default to 1. Suggested by Philip Mak. * lsearch() can now take more than one class/restriction pair, and will require them all to be met. New "mindb" and "maxdb" classes specify low and high dbrefs, and replace the old <low>,<high> parameters, which are now deprecated. Suggested by qa'toq@bDv. * alias() and fullalias() functions. [EEH] * New function restriction "localize" causes q-registers to be saved and restored around the function as if localize() or ulocal() were used; handy for @functions. Patch by grapenut. * flip() and reverse() no longer require escaping of commas. Suggested by Yar Kramer. Channels: * Channels, by default, now ignore interaction rules defined in local.c, so they can be used as "OOC" communication between players who wouldn't be able to interact "IC"ly. A new per-channel permission, "interact", changes this behavior back to enforcing interaction rules on the channel. @lock/interact always applies, however. Suggested by Shamash. * New channel_flags config directive sets default permissions for newly-created channels. Minor changes: * The %+ substitution returns the number of arguments passed to a function and is useful in ufuns and @functions. Suggested by Nathan Baum. * The rules for valid command and functions names (e.g. for @command/add) have been relaxed to allow @foo, +blah, and others with punctuation. Suggested by Mike Griffiths. * @hook/list <command> lists hooks on a command. Suggested by Nathan Baum. * @INVFORMAT works like @CONFORMAT for the inventory command. * Help for mail and chat functions moves to pennmail.hlp and pennchat.hlp, respectively. Suggested by Kevin@M*U*S*H. * Settings and resetting multiple attribute flags at once is now supported more flexibly. Suggested by Sholevi@M*U*S*H. * The restart script handles mush.cnf files with Windows-style line endings more gracefully. Reported by CBeilby@M*U*S*H. * @attribute/access now understands the privilege 'none' to mean 'no associated attribute flags'. Report by Tyson Cochrane. * @flag/alias flag=!alias removes a flag alias. Suggested by Relay@MatrixMUSH. * @search now refers to things as things instead of objects. Suggested by Zebranky@M*U*S*H. * Suggested restrictions to disable hardcoded chat and mail are in restrictcnf.dst for those who want to do that. Patch by Kevin@M*U*S*H. * TZ attribute is now visual by default, since time() gets it anyway. Suggested by Mike Griffiths. Fixes: * Fixes include from versions up to 1.8.0p6.