[PENNMUSH-ANNOUNCE] 1.7.5-patch11

dunemush@pennmush.org dunemush at pennmush.org
Thu Oct 31 20:52:01 2002


This is patch11 to PennMUSH 1.7.5. After applying this patch, you will
have version 1.7.5p11

To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
	patch -p1 < 1.7.5-patch11
	make install

If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1',
not just 'patch -p1'.

Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c,
hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically
rebuilt on compile.

Then @shutdown and restart your MUSH.
    - Alan/Javelin

In this patch:

Config:
   * New mush.cnf option only_ascii_in_names (defaults to yes) prohibits
     the use of extended characters in names. Games that are running
     in non-English locales will probably want to set this to no instead. 
     Suggested by Philip Mak. [SW]
Commands:
   * Added @hook/before and @hook/after [SW,3]
Locks:
   * You can now use power^<power> and channel^<channel> in locks
     to test if the enactor has a given power or is on a given channel.
     Patch by Vadiv@M*U*S*H.
   * @lock/dropto, if set on a room, can prevent objects from being
     affected by the room's drop-to. Inspired by Oriens@Alexandria.
Functions:
   * The sha1() function computes the SHA-1 cryptographic hash of a string.
   * A new nosidefx function restriction to allow disabling the side-effect
     version of a function while still enabling the informational version.
     For things like name() and parent(). [SW]
   * @function's report includes more function restrictions in the flags
     field. [SW]
Minor changes:
   * Modularization of code for itemizing lists by Vadiv@M*U*S*H.
   * If there's no connect.html and you're on an html connection,
     connect.txt is now better formatted when sent to you. Same for 
     other cached text files. Suggested by BladedThoth@M*U*S*H.
   * CRYPT_SYSTEM 1 now behaves like CRYPT_SYSTEM 3 (replacing
     system-crypt passwords with SHS passwords). Suggested by Vadiv@M*U*S*H.
   * flag_table is no longer referenced anywhere except when it is used
     to seed the ptab_flag at startup. A stub "flag_add" function has
     been added to make life easier for hardcoders. Suggested by
     Gepht.
Fixes:
   * sig.c was broken on systems without sigprocmask. Reported by
     Arithon@Oracle
   * Bug with paging disconnected players and @away fixed.
     Reported by Vadiv@M*U*S*H.
   * Bashisms that crept into utils/mkcmds.sh has been replaced by
     more portable alternatives based on Configure's results. 
     Reported by Jason Newquist.
   * Trigonometric functions were broken for non-radian degree types.
     Fixed up.
   * @decomp <room>/<attrib> didn't properly use 'here' as the name
     of the object in its output. Reported by Oriens@Alexandria.
   * Wizards can now modify any lock on anything but God. Reported by
     Brian Favela.
   * ex/mortal and ex now produce identical output when a mortal 
     examines an object owned by someone else. Reported by Philip Mak.
   * We do a little better about trying to close html and ansi tags
     in all conditions. Bugs reported by BladedThoth @ M*U*S*H.
   * whisper/@pemit to a puppet should be relayed to the owner, even if the 
     owner is in the same room. Discovered thanks to MUSH sound test
     suite designed by Trispis@M*U*S*H.
   * The --longest switch in game/txt/Makefile was broken. Report by
     Nymeria@M*U*S*H
   * Help fixes by Noltar@Korongil and Intrevis@M*U*S*H
   * The M_READ extmail bit is now renamed M_MSGREAD, as M_READ conflicts
     with an included define on Solaris. Report by Jason Newquist.
   * Setting flags using single characters was not well documented, and
     didn't respect the character case. Reported by Intrevis@M*U*S*H.
   * @chown by a Wizard attempted to debit the Wizard's money, rather than
     that of the new owner of the object, which violated expected conservation
     of money. Reported by Peter Bengtson.
   * Several bugs in wrap()'s output fixed. Reported by Balerion@M*U*S*H. [SW]


Prereq: 1.7.5p10
*** 1_7_5.313/Patchlevel Thu, 19 Sep 2002 22:15:07 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11 600)
--- 1_7_5.363(w)/Patchlevel Thu, 31 Oct 2002 14:49:51 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.12 600)
***************
*** 1,2 ****
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.5p10
--- 1,2 ----
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.5p11
*** 1_7_5.313/README Fri, 13 Sep 2002 12:03:52 -0500 dunemush (pennmush/4_README 1.11 600)
--- 1_7_5.363(w)/README Tue, 01 Oct 2002 22:54:31 -0500 dunemush (pennmush/4_README 1.12 600)
***************
*** 147,153 ****
        and then skip down to step #6 below
     b. Compile with the Cygwin unix emulation tools (http://www.cygwin.com)
        In addition to the base cygwin stuff, you'll want the following packages:
!          binutils, gcc, make, patch, perl
        These are also recommended:
           gettext, gettext-devel, indent, vim or emacs
        It is recommended that you install the tools under C:\CYGWIN and
--- 147,153 ----
        and then skip down to step #6 below
     b. Compile with the Cygwin unix emulation tools (http://www.cygwin.com)
        In addition to the base cygwin stuff, you'll want the following packages:
!          binutils, gcc, make, patch, perl, exim-4.10-1 source code
        These are also recommended:
           gettext, gettext-devel, indent, vim or emacs
        It is recommended that you install the tools under C:\CYGWIN and
***************
*** 194,210 ****
  
  You should not need to change any of the other header files.
  
! 4. Do a "make install". This will build all the necessary files, and
  set up some symbolic links for the restart script.  You will probably
  receive a few compilation warnings, which can generally be ignored.
  
! 5. If you plan to run multiple MUSHes, you may want to do a "make
  customize" which will run a script to help set up a separate customized
  game subdirectory for each MUSH (run it once per MUSH you plan to run).
  Files in these subdirectories will already be customized in many ways,
  so what follows may be slightly different. :)
  
! 6. Read game/README and follow those instructions. 
  
     On cygwin systems, you will likely have to edit the game/restart
     script and explicitly set GAMEDIR (to /usr/src/pennmush/game)
--- 194,213 ----
  
  You should not need to change any of the other header files.
  
! 4. On cygwin systems, add to the CCFLAGS in the Makefile:
!         -I/usr/src/exim-4.10-1/minires
! 
! 5. Do a "make install". This will build all the necessary files, and
  set up some symbolic links for the restart script.  You will probably
  receive a few compilation warnings, which can generally be ignored.
  
! 6. If you plan to run multiple MUSHes, you may want to do a "make
  customize" which will run a script to help set up a separate customized
  game subdirectory for each MUSH (run it once per MUSH you plan to run).
  Files in these subdirectories will already be customized in many ways,
  so what follows may be slightly different. :)
  
! 7. Read game/README and follow those instructions. 
  
     On cygwin systems, you will likely have to edit the game/restart
     script and explicitly set GAMEDIR (to /usr/src/pennmush/game)
***************
*** 226,232 ****
  	Linux
  	FreeBSD
  	AT&T SVR4
! 	Windows 95/NT
  	OS/2
  
  There's no real reason why PennMUSH shouldn't compile on any 32-bit or
--- 229,235 ----
  	Linux
  	FreeBSD
  	AT&T SVR4
! 	Windows 95/NT cygwin and MSVC++
  	OS/2
  
  There's no real reason why PennMUSH shouldn't compile on any 32-bit or
*** 1_7_5.313/CHANGES Thu, 19 Sep 2002 22:15:07 -0500 dunemush (pennmush/g/7_CHANGES 1.27.1.86 600)
--- 1_7_5.363(w)/CHANGES Thu, 31 Oct 2002 14:49:48 -0600 dunemush (pennmush/g/7_CHANGES 1.27.1.116 600)
***************
*** 18,23 ****
--- 18,90 ----
  
  ==========================================================================
  
+ Version 1.7.5 patchlevel 11                     October 31, 2002
+ 
+ Config:
+    * New mush.cnf option only_ascii_in_names (defaults to yes) prohibits
+      the use of extended characters in names. Games that are running
+      in non-English locales will probably want to set this to no instead. 
+      Suggested by Philip Mak. [SW]
+ Commands:
+    * Added @hook/before and @hook/after [SW,3]
+ Locks:
+    * You can now use power^<power> and channel^<channel> in locks
+      to test if the enactor has a given power or is on a given channel.
+      Patch by Vadiv@M*U*S*H.
+    * @lock/dropto, if set on a room, can prevent objects from being
+      affected by the room's drop-to. Inspired by Oriens@Alexandria.
+ Functions:
+    * The sha1() function computes the SHA-1 cryptographic hash of a string.
+    * A new nosidefx function restriction to allow disabling the side-effect
+      version of a function while still enabling the informational version.
+      For things like name() and parent(). [SW]
+    * @function's report includes more function restrictions in the flags
+      field. [SW]
+ Minor changes:
+    * Modularization of code for itemizing lists by Vadiv@M*U*S*H.
+    * If there's no connect.html and you're on an html connection,
+      connect.txt is now better formatted when sent to you. Same for 
+      other cached text files. Suggested by BladedThoth@M*U*S*H.
+    * CRYPT_SYSTEM 1 now behaves like CRYPT_SYSTEM 3 (replacing
+      system-crypt passwords with SHS passwords). Suggested by Vadiv@M*U*S*H.
+    * flag_table is no longer referenced anywhere except when it is used
+      to seed the ptab_flag at startup. A stub "flag_add" function has
+      been added to make life easier for hardcoders. Suggested by
+      Gepht.
+ Fixes:
+    * sig.c was broken on systems without sigprocmask. Reported by
+      Arithon@Oracle
+    * Bug with paging disconnected players and @away fixed.
+      Reported by Vadiv@M*U*S*H.
+    * Bashisms that crept into utils/mkcmds.sh has been replaced by
+      more portable alternatives based on Configure's results. 
+      Reported by Jason Newquist.
+    * Trigonometric functions were broken for non-radian degree types.
+      Fixed up.
+    * @decomp <room>/<attrib> didn't properly use 'here' as the name
+      of the object in its output. Reported by Oriens@Alexandria.
+    * Wizards can now modify any lock on anything but God. Reported by
+      Brian Favela.
+    * ex/mortal and ex now produce identical output when a mortal 
+      examines an object owned by someone else. Reported by Philip Mak.
+    * We do a little better about trying to close html and ansi tags
+      in all conditions. Bugs reported by BladedThoth @ M*U*S*H.
+    * whisper/@pemit to a puppet should be relayed to the owner, even if the 
+      owner is in the same room. Discovered thanks to MUSH sound test
+      suite designed by Trispis@M*U*S*H.
+    * The --longest switch in game/txt/Makefile was broken. Report by
+      Nymeria@M*U*S*H
+    * Help fixes by Noltar@Korongil and Intrevis@M*U*S*H
+    * The M_READ extmail bit is now renamed M_MSGREAD, as M_READ conflicts
+      with an included define on Solaris. Report by Jason Newquist.
+    * Setting flags using single characters was not well documented, and
+      didn't respect the character case. Reported by Intrevis@M*U*S*H.
+    * @chown by a Wizard attempted to debit the Wizard's money, rather than
+      that of the new owner of the object, which violated expected conservation
+      of money. Reported by Peter Bengtson.
+    * Several bugs in wrap()'s output fixed. Reported by Balerion@M*U*S*H. [SW]
+ 
+ 
  Version 1.7.5 patchlevel 10                     September 19, 2002
  
  Major Changes:
***************
*** 42,48 ****
     * Added atan2(). [SW]
     * dist2d() and dist3d() can take floating-point numbers. [SW]
     * Other small cleanups in the math functions. [SW]
! @Mail:
     * The MAIL_SUBJECTS option has been removed. @mail now includes
       subjects mandatorily. Suggested by Vadiv@M*U*S*H.
  Minor Changes:
--- 109,115 ----
     * Added atan2(). [SW]
     * dist2d() and dist3d() can take floating-point numbers. [SW]
     * Other small cleanups in the math functions. [SW]
! Mail:
     * The MAIL_SUBJECTS option has been removed. @mail now includes
       subjects mandatorily. Suggested by Vadiv@M*U*S*H.
  Minor Changes:
***************
*** 78,83 ****
--- 145,151 ----
     * The whisper-pose message is now Player senses: <pose>, with no
       quotation marks added. This matches all other pose-type messages
       in the server. Suggested by Philip Mak.
+    * Only escape codes described in the help are allowed in timefmt() [SW]
  Fixes:
     * Archaic help reference to FORCE_WHITE removed. Noted by Oriens@Alexandria.
     * Help fixes by Cerekk@bDv TrekMUSH, Julian@M*U*S*H, Letters@M*U*S*H,
*** 1_7_5.313/game/txt/hlp/pennvers.hlp Thu, 19 Sep 2002 22:15:07 -0500 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.14 600)
--- 1_7_5.363(w)/game/txt/hlp/pennvers.hlp Thu, 31 Oct 2002 14:50:01 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.37 600)
***************
*** 1,5 ****
  & changes
! & 1.7.5p10
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
  can probably be gotten via 'help <name of whatever>'. 'help credits'
--- 1,5 ----
  & changes
! & 1.7.5p11
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
  can probably be gotten via 'help <name of whatever>'. 'help credits'
***************
*** 11,16 ****
--- 11,84 ----
  A list of the patchlevels associated with each release can
  be read in 'help patchlevels'.
  
+ Version 1.7.5 patchlevel 11                     October 31, 2002
+ 
+ Config:
+    * New mush.cnf option only_ascii_in_names (defaults to yes) prohibits
+      the use of extended characters in names. Games that are running
+      in non-English locales will probably want to set this to no instead. 
+      Suggested by Philip Mak. [SW]
+ Commands:
+    * Added @hook/before and @hook/after [SW,3]
+ Locks:
+    * You can now use power^<power> and channel^<channel> in locks
+      to test if the enactor has a given power or is on a given channel.
+      Patch by Vadiv@M*U*S*H.
+    * @lock/dropto, if set on a room, can prevent objects from being
+      affected by the room's drop-to. Inspired by Oriens@Alexandria.
+ Functions:
+    * The sha1() function computes the SHA-1 cryptographic hash of a string.
+    * A new nosidefx function restriction to allow disabling the side-effect
+      version of a function while still enabling the informational version.
+      For things like name() and parent(). [SW]
+    * @function's report includes more function restrictions in the flags
+      field. [SW]
+ Minor changes:
+    * Modularization of code for itemizing lists by Vadiv@M*U*S*H.
+    * If there's no connect.html and you're on an html connection,
+      connect.txt is now better formatted when sent to you. Same for 
+      other cached text files. Suggested by BladedThoth@M*U*S*H.
+    * CRYPT_SYSTEM 1 now behaves like CRYPT_SYSTEM 3 (replacing
+      system-crypt passwords with SHS passwords). Suggested by Vadiv@M*U*S*H.
+    * flag_table is no longer referenced anywhere except when it is used
+      to seed the ptab_flag at startup. A stub "flag_add" function has
+      been added to make life easier for hardcoders. Suggested by
+      Gepht.
+ Fixes:
+    * sig.c was broken on systems without sigprocmask. Reported by
+      Arithon@Oracle
+    * Bug with paging disconnected players and @away fixed.
+      Reported by Vadiv@M*U*S*H.
+    * Bashisms that crept into utils/mkcmds.sh has been replaced by
+      more portable alternatives based on Configure's results. 
+      Reported by Jason Newquist.
+    * Trigonometric functions were broken for non-radian degree types.
+      Fixed up.
+    * @decomp <room>/<attrib> didn't properly use 'here' as the name
+      of the object in its output. Reported by Oriens@Alexandria.
+    * Wizards can now modify any lock on anything but God. Reported by
+      Brian Favela.
+    * ex/mortal and ex now produce identical output when a mortal 
+      examines an object owned by someone else. Reported by Philip Mak.
+    * We do a little better about trying to close html and ansi tags
+      in all conditions. Bugs reported by BladedThoth @ M*U*S*H.
+    * whisper/@pemit to a puppet should be relayed to the owner, even if the 
+      owner is in the same room. Discovered thanks to MUSH sound test
+      suite designed by Trispis@M*U*S*H.
+    * The --longest switch in game/txt/Makefile was broken. Report by
+      Nymeria@M*U*S*H
+    * Help fixes by Noltar@Korongil and Intrevis@M*U*S*H
+    * The M_READ extmail bit is now renamed M_MSGREAD, as M_READ conflicts
+      with an included define on Solaris. Report by Jason Newquist.
+    * Setting flags using single characters was not well documented, and
+      didn't respect the character case. Reported by Intrevis@M*U*S*H.
+    * @chown by a Wizard attempted to debit the Wizard's money, rather than
+      that of the new owner of the object, which violated expected conservation
+      of money. Reported by Peter Bengtson.
+    * Several bugs in wrap()'s output fixed. Reported by Balerion@M*U*S*H. [SW]
+ 
+ 
+ & 1.7.5p10
  Version 1.7.5 patchlevel 10                     September 19, 2002
  
  Major Changes:
***************
*** 35,41 ****
     * Added atan2(). [SW]
     * dist2d() and dist3d() can take floating-point numbers. [SW]
     * Other small cleanups in the math functions. [SW]
! @Mail:
     * The MAIL_SUBJECTS option has been removed. @mail now includes
       subjects mandatorily. Suggested by Vadiv@M*U*S*H.
  Minor Changes:
--- 103,109 ----
     * Added atan2(). [SW]
     * dist2d() and dist3d() can take floating-point numbers. [SW]
     * Other small cleanups in the math functions. [SW]
! Mail:
     * The MAIL_SUBJECTS option has been removed. @mail now includes
       subjects mandatorily. Suggested by Vadiv@M*U*S*H.
  Minor Changes:
***************
*** 71,76 ****
--- 139,145 ----
     * The whisper-pose message is now Player senses: <pose>, with no
       quotation marks added. This matches all other pose-type messages
       in the server. Suggested by Philip Mak.
+    * Only escape codes described in the help are allowed in timefmt() [SW]
  Fixes:
     * Archaic help reference to FORCE_WHITE removed. Noted by Oriens@Alexandria.
     * Help fixes by Cerekk@bDv TrekMUSH, Julian@M*U*S*H, Letters@M*U*S*H,
***************
*** 5551,5891 ****
      TinyMUSH 2.0's. The option to examine public attributes by default
      is configurable.
  
- & 1.7.5p10
- Version 1.7.5 patchlevel 10                     July 16, 2002
- 
- Fixes:
-    * enter <exit> no longer returns Permission denied, but 
-      "I can't see that here", as you can only enter things. 
-      Suggested by Philip Mak.
-    * A one-time, one-pointer memory leak in plyrlist.c fixed
-      by Vadiv@M*U*S*H.
- 
- 
- & 1.7.5p9
- Version 1.7.5 patchlevel 9                     July 16, 2002
- 
- Minor Changes:
-    * /noeval switch added to @wall/@rwall/@wizwall and variants.
-      Suggested by Philip Mak.
- Fixes:
-    * Added a missing space in the @function report for softcoded 
-      @functions. [SW]
-    * MUX-style @function foo=obj/attr works right. [SW]
-    * Cleaned up some multiple includes of the same header files. [SW]
-    * Lots of cleanup of old _() macros and similar by Vadiv@M*U*S*H.
-    * Added help for @stats/table. Suggested by Intrevis@M*U*S*H.
-    * Fixes to csrimalloc #ifdefs that broke in last patchlevel. [SW]
-    * A typo that could crash @function on certain operating systems
-      has been fixed. Report by Jeff Heinen.
-    * Improved switch() help. [SW]
-    * Changes in the way switchinc.c is generated, to reduce the number
-      of patches that attempt to patch it due to indentation changes. [SW]
- 
- & 1.7.5p8
- Version 1.7.5 patchlevel 8                     June 26, 2002
- 
- Minor Changes:
-   * Added @nspemit and nspemit(). Wizard-only versions of @pemit and
-     pemit() that don't print nospoof information. Suggested by many people,
-     most recently Mike Griffiths and Nymeria@M*U*S*H. [SW]
-   * Help updates. [SW]
-   * Force the pipes to compression program for database reads and saves to be
-     block-buffered. [SW]
-   * @function name=obj/attrib now works, as well as
-     @function name=obj,attrib [TAP]
-   * The AF_PREFIXMATCH flag is no longer shown on attributes it's set
-     on when you examine them.
- Fixes:
-   * A bunch of internal code cleanup, especially around casts. [SW]
-   * The disconnected room check is skipped on GOING rooms. Suggested
-     by Philip Mak.
-   * The dbck check for nameless rooms was only checking disconnected
-     rooms; now it checks all rooms.
-   * hasflag() did not work with single-character flag abbreviations.
-     Report by Mystery8.
-   * The variable named 'template' in src/strutil.c has been renamed
-     to avoid clashes with the C++ reserved word. Suggested by Mac@M*U*S*H.
-   * Improvement to help @filter. Suggested by Philip Mak. [SW]
-   * Files in the patches directory ending in ~ are ignored
-     when patches.h is rebuilt. [SW]
-   * Removed a // comment from strutil.c, as we're still
-     just following the c89 standard, not c99. Report by
-     Vadiv@M*U*S*H. [SW]
-   * make indent now indents the .dst files before the .c ones.
-     Fixes some spurious warnings from later makes. Suggested by
-     Vadiv@M*U*S*H. [SW]
-   * Code cleanup, mostly tprintf() and unneeded header file
-     checking elimination. [SW]
-   * Since a Windows header #defines OPAQUE, which conflicts with a
-     #define for the mush flag of the same name, rename
-     our #define rather than #undefining the Windows one. [SW]
-   * Fixes from 1.7.4p19
- 
- 
- & 1.7.5p7
- Version 1.7.5 patchlevel 7                     May 14, 2002
- 
- Utilities:
-   * 'make globalinstall' will install executables, scripts, and
-     a game/ directory structure in a global location (/usr/libexec/pennmush
-     by default). Facilitates rpm builds. By Vadiv@M*U*S*H.
-   * The utils/ln-dir.sh script can be used to clone a globalinstall'd
-     pennmush for an individual MUSH/user. In combination, these two
-     are a replacement for 'make customize', especially for mud hosters.
-     By Vadiv@M*U*S*H.
-   * You can now configure options.h settings from the command line
-     using: make DEFINE="OPTION OPTION=value" UNDEFINE="OPTION" update
-     This will mostly be useful for autoinstallers and packaging scripts.
-     Suggested by Vadiv@M*U*S*H.
- Minor Changes:
-   * The default gcc compile flags now include some extra warnings.
-   * The prefix-table code now only aliases down to unique prefixes.
-     This prevents @w from calling @wipe (reported by Philip Mak),
-     and means that you'll need to use alias.cnf to get some of those
-     short aliases. [SW]
-   * Attribute lookups only do prefix-matching on attributes with the
-     AF_PREFIXMATCH flag. Most standard atr_tab.h attributes have this
-     flag, but newly added @attributes won't. Solves a problem with 
-     inadvertant prefix-matching of @attribs reported by Sam Knowlton.
- Fixes:
-   * Fixes from 1.7.4p18
-   * @decomp/skipdefaults skips @lsets of default lock flags.
-     Suggested by Oriens@Alexandria. [SW]
-   * Typo in src/bsd.c corrected. Reported by Nymeria@M*U*S*H.
-   * Missing prototype in src/help.c. Reported by Nymeria@M*U*S*H.
-   * A bunch of linting.
-   * Win32 portability fixes. [EEH]
-   * Updated MSVC++ project files for win32. [EEH]
-   * @newpassword = foo would change the password of an arbitrary player.
-     This is now corrected. Report by Oriens@Alexandria.
- 
- & 1.7.5p6
- Version 1.7.5 patchlevel 6                     April 22, 2002
- 
- Config:
-   * New attribute_alias config directive, and some default attribute
-     aliases added to alias.cnf. Based on a report from Hilikiradi.
- Functions:
-   * textfile() returns help/news/etc. entries. Suggested by Trispis@M*U*S*H.
- Minor changes:
-   * New @warnings type lock-checks that reports problems with @locks. [SW]
-   * exit-unlinked checks do some sanity checks on variable exits. [SW]
-   * Improved error-checking in evaluation of @locks. [SW]
-   * No more hdrs/warnings.h file. [SW]
-   * New @nameaccent attribute to add accent marks to object
-     names in speech and things like look. Idea from Elendor. [SW]
-   * accent() understands a few more things. [SW]
-   * The accented characters->html entities table and other
-     lookup tables are now in a seperate file, src/tables.c,
-     which can be regenerated if needed by utils/gentables.c [SW]
-   * Improvements in caching of cached text files. [SW]
- Fixes:
-   * Buglet in ansi display of high-bit characters fixed. Report by
-     Trispis@M*U*S*H. [SW]
-   * Improved @clock2 help by Linda Antonsson.
-   * Fixes from 1.7.4p17
-   * A truly perverse database could cause an infinite loop on load. [TAP]
-   * Win32 portability fixes. [NJG, EEH]
-   * The notify code assumed that integers could be directly stored in
-     pointers. This isn't always true. [SW]
-   * Removed some un-used code. [SW]
-   * Fixed some compiler warnings and general code cleanup. [SW]
-   * Changed signal handlers to always use the ANSI/ISO C form (Returning
-     void, basically) [SW]
-   * A null string no longer prefix-matches anything. Report by Prot Diryn
-     and Cheetah@M*U*S*H.
-   * @sitelock/remove could remove entries it shouldn't if you remove the first
-     one after the '@sitelock will add sites...' line. Reported by
-     Ambrosia@M*U*S*H. [SW]
-   * The last line of the access.cnf file sometimes wouldn't get read 
-     properly. [SW]
- 
- 
- & 1.7.5p5
- Version 1.7.5 patchlevel 5                     March 11, 2002
- 
- Commands:
-   * @notify and @drain now accept a new switch /any. [TAP]
-   * Added @remit/list. Suggested by Tareldin@M*U*S*H [SW]
- Minor changes:
-   * We now use the Mersenne Twister pseudo-random number generator,
-     which is better that that available in most C libraries.
-     Moreover, we seed with /dev/urandom, if it's available. [SW]
-   * The 'T' type character (for THING) is now shown when one-character
-     flag lists are displayed. This is more consistent with other types,
-     and makes it harder to confuse #23O (#23, opaque) with #230
-     (#230, no flags). Suggested by Eratl@M*U*S*H.
-   * @lock/use on a parent used to apply to attempts to use $commands on
-     a child. This is no longer necessary, given inheritable locks,
-     so the behavior has been changed. Parents' locks are no longer checked
-     when deciding if a $command inherited from the parent should be run
-     via a child.
-   * New 'call_limit' config option can limit the number of recursive
-     parser calls to control process stack size and avoid crashes 
-     on systems with limited stack. Defaults to unlimited, however, because
-     setting this value too small breaks mushcode. Report by Bellemore 
-     and BladedThoth @ M*U*S*H.
- Fixes:
-   * Code cleanup - some stuff from 1.7.4 got left in that isn't
-     used in 1.7.5 any more. [SW]
-   * Fixes from 1.7.4p16, notably an important fix for timed semaphores.
-   * Cygwin portability fixes. [NJG]
-   * Updated MSVC++ project files. [EEH]
- 
- 
- & 1.7.5p4
- Version 1.7.5 patchlevel 4                     February 15, 2002
- 
- Major changes:
-   * The mush recognizes telnet-aware connections. This is
-     neccessary for properly sending them some 8-bit characters. [SW]
-   * Much more support for handling accented characters in the ISO 8859-1
-     character set. See help for accent(), stripaccents(), and NOACCENTS.
-     Inspired by Elendor. [SW]
-   * Things that do first-unique-prefix matching (command, attribute and flag
-     names) now use a more space-efficient data structure than before.
-     This adds two new files, src/ptab.c and hdrs/ptab.h [SW]
- Commands:
-   * @sitelock/remove removes a sitelock entry. [SW]
- Functions:
-   * ord() and chr() functions for converting characters to/from numerical
-     values that represent them. [SW]
- Minor changes:
-   * The useless FORCE_WHITE flag is really, truely, gone. [SW]
-   * Use the new arglens argument to functions in more places. [SW]
-   * capstr() and before() fixes reimplemented using arglens. [SW]
-   * We now use the Mersenne Twister PRNG algorithm. [SW]
- Fixes:
-   * setunion() no longer eats empty list elements. [SW]
-   * Setting an inherited lock on a child could change the parent's lock.
-     Reported by Riverwolf. [SW]
-   * Help fixes. [SW, Nymeria]
-   * Players waiting at the connect screen weren't being disconnected
-     by the idle_timeout.
-   * Detection of cygwin in Configure may be improved.
-   * Fixes from 1.7.4p15.
- 
- & 1.7.5p3
- Version 1.7.5 patchlevel 3                     January 24, 2002
- 
- Fixes:
-   * before() was broken in 1.7.5p2. Reported by Sam Knowlton.
-   * capstr() was broken in 1.7.5p2.
-   * Win32 portability fixes by Noltar@Korongil.
- 
- & 1.7.5p2
- Version 1.7.5 patchlevel 2                     January 23, 2002
- 
- Major changes:
-   * Implementations for softcode functions get the lengths of their arguments
-     passed to them, and this is taken advantage of in a number of places. [SW]
- Minor changes:
-   * It's harder to get a partial dbref because of end-of-buffer truncation. [SW]
-   * Code cleanup. In particular, safe_str() and friends are no longer
-     macros for a safe_copy_str() or the like, because hardly anything
-     used a different buffer length than BUFFER_LEN, and those places
-     can be handled other ways. [SW]
- Fixes:
-   * Win32 portability fixes by Noltar@Korongil and Eric Koske.
-   * When you have two hidden connections, one idle over the inactivity limit,
-     and the other not, @hide/off on the active connection unhides both,
-     but you also see the Inactivity re-hide message from the other
-     connection. Reported by Trispis.
-   * iname() function actually added to function table so it works.
-     Reported by K. Shirow.
-   * @lock obj=attrib:value locks didn't work properly. Reported by
-     Linda Antonsson.
-   * Fixes from 1.7.4p14.
- 
- & 1.7.5p1
- Version 1.7.5 patchlevel 1                     December 3, 2001
- 
- Minor Changes:
-   * PCRE updated to 3.7. [SW]
-   * player_name_len is now runtime configurable. Suggested by
-     Linda Antonsson. [SW]
-   * Any object of any type may be a ZMO, and any object of any type
-     may be zoned to a ZMO of any type. However, searching for
-     $commands has not changed, so $commands on a ZMO are only
-     searched when the ZMO is not a room, and $commands on objects
-     within the ZMO are only searched when the ZMO is a room. [TAP]
-   * @chzoneall nows directly calls @chzone, and @chzone now tells
-     you when it's not changing a zone. [TAP]
-   * The term "Zone Master" (player) has been replaced by "Shared
-     Player" in the help. [TAP]
-   * Many obsolete db formats are no longer readable. hdrs/oldattrib.h
-     and src/convdb.c are no more. [SW]
-   * Code cleanup. [SW]
- Fixes:
-   * Help file for mix updated. Report by Cmintrnt@M*U*S*H
-   * Updated win32 config.h file and other fixes by Noltar@Korongil
-   * WHO wasn't showing unconnected players. Report by Noltar@Korongil. [SW]
-   * Help fixes. [SW]
- 
- & 1.7.5p0
- Version 1.7.5 patchlevel 0                     November 14, 2001
- 
- Major Changes:
-   * This is now the development minor version. This first release includes
-     relatively few changes, to make converting to it easier.
-   * Internal changes to the lock system. This requires a new minimal.db,
-     which is now distributed. [SW]
-   * Locale-based string collation throughout.
-   * Only ANSI C compilers are still supported; no more K&R. Files are
-     gradually going to be converted to ANSI C only.
-   * There is now an option to make ZMOs and ZMRs not count for
-     control of objects, only ZMPs. [SW]
- Flags:
-   * The ZONE player flag has been renamed SHARED, to help seperate the
-     ZMP control-only meaning from the command-matching of ZMOs and ZMRs. [SW]
- Commands:
-   * /preserve switch for @link prevents @chowning. Suggested by Vexon@M*U*S*H
-   * Admin WHO and SESSION now includes unconnected descriptors. [SW]
-   * Unconnected descriptors can now be booted. Patch by Bellemore@M*U*S*H.
-   * Unconnected descriptors can now be paged by admin with page/port. [SW]
- Functions:
-   * mix() can take more than 10 lists and of unequal length. [3,SW]
-   * iname() returns the name of an object from inside (honoring nameformat)
-     Idea by Jeffrey@TheHotel.
-   * lplayers() returns a list of players in the location. Handy for
-     room parents. By Vexon@M*U*S*H.
-   * lvplayers(), lvcon(), lvexits() are like lplayers/lcon/lexits, but
-     leave out dark things (and disconnected players). Handy for room
-     parents. By Vexon@M*U*S*H.
- Minor Changes:
-   * munge() now passes its delimiter as %1 to make generic sorting easier. [SW]
-   * Word-based attribute compression is faster than before, for both
-     compression and decompression. [SW]
-   * Windows memory-usage information for wizards is now in @uptime, not
-     @stats [SW]
-   * Word-based attribute compression stats can be viewed on non-Windows
-     mushes as well, by defining COMP_STATS. See externs.h for details. [SW]
-   * Setting of the internal QUEUE and semaphore attributes does not modify
-     an object's last-modified timestamp. [SW]
-   * Speaking on a channel that you're gagging is now treated like
-     speaking on a channel that you're not on. Suggested by rodregis@M*U*S*H
-   * You can use @exitto in place of &DESTINATION to set the destinatino
-     for variable exits, though DESTINATION is checked first. [3]
-   * WATCHER is another name for the MONITOR flag. [3]
-   * max_guest_pennies and guest_paycheck config options. Inspired by [SW]
-   * Lock and unlock messages now show object name and dbref, and tell
-     you if you unlock an already unlocked object. Suggested by Jamie Warren.
-   * A version of portmsg for Win32 is in the win32 directory.
-     Donated by CU5@WCX
-   * Tweaks to info_slave, which now uses readv/writev. [SW]
-   * Lots of code cleanup. [SW]
-   * CHAT_SYSTEM, INFO_SLAVE, and FUNCTION_SIDE_EFFECTS are now #define'd
-     by default. [TAP]
- Fixes:
-   * Indentation fixes [SW]
-   * Fixes up to 1.7.4p12 merged in.
- 
  & patchlevels
  For information on a specific patchlevel of one of the versions listed,
  type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
  
! 1.7.5: 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10
  1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20
  1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
--- 5620,5630 ----
      TinyMUSH 2.0's. The option to examine public attributes by default
      is configurable.
  
  & patchlevels
  For information on a specific patchlevel of one of the versions listed,
  type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
  
! 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
  1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20
  1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
*** 1_7_5.313/game/txt/hlp/penntop.hlp Thu, 19 Sep 2002 22:15:07 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.6 600)
--- 1_7_5.363(w)/game/txt/hlp/penntop.hlp Wed, 30 Oct 2002 14:46:47 -0600 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.10 600)
***************
*** 134,140 ****
      Test 2, success.
      Test 3, success.
  
! See also: ATTRIBUTES, SUBSTITUTION, @asuccess, @dolist
  & ATTRIB-OWNERSHIP
    ATTRIBUTE OWNERSHIP
    
--- 134,140 ----
      Test 2, success.
      Test 3, success.
  
!   See also: ATTRIBUTES, SUBSTITUTION, @asuccess, @dolist
  & ATTRIB-OWNERSHIP
    ATTRIBUTE OWNERSHIP
    
***************
*** 149,155 ****
  
    You must control an object in order to set attributes on it.
  
! See also: @atrlock, @atrchown, ATTRIBUTES
  & ATTRIBUTES
  & ATTRIBUTES LIST
  & ATTRIBUTE LIST
--- 149,155 ----
  
    You must control an object in order to set attributes on it.
  
!   See also: @atrlock, @atrchown, ATTRIBUTES
  & ATTRIBUTES
  & ATTRIBUTES LIST
  & ATTRIBUTE LIST
***************
*** 195,201 ****
    of conflicting with other attribute names.  This could result in you
    setting an unwanted attribute. 
  
! For example:
      @adesc me=think %N looks at you.
    will set your ADESCRIBE attribute just as
      @adescribe me=think %N looks at you.
--- 195,201 ----
    of conflicting with other attribute names.  This could result in you
    setting an unwanted attribute. 
  
!   For example:
      @adesc me=think %N looks at you.
    will set your ADESCRIBE attribute just as
      @adescribe me=think %N looks at you.
***************
*** 224,230 ****
    longer and descriptive names for attributes, which makes it much easier
    to examine and work on objects.
  
! See also: ATTRIB-OWNERSHIP, @set, examine, @atrchown, @atrlock, hasattr()
            get(), v(), NON-STANDARD ATTRIBUTES, SETTING-ATTRIBUTES
  & BEING KILLED
   
--- 224,230 ----
    longer and descriptive names for attributes, which makes it much easier
    to examine and work on objects.
  
!   See also: ATTRIB-OWNERSHIP, @set, examine, @atrchown, @atrlock, hasattr()
            get(), v(), NON-STANDARD ATTRIBUTES, SETTING-ATTRIBUTES
  & BEING KILLED
   
***************
*** 237,243 ****
  
    Many MUSHes choose to disable the kill command.
  
! See also: kill, slay, @death
  & BOOLEAN VALUES 
  
    A boolean variable, for those of you not familiar with programming, 
--- 237,243 ----
  
    Many MUSHes choose to disable the kill command.
  
!   See also: kill, slay, @death
  & BOOLEAN VALUES 
  
    A boolean variable, for those of you not familiar with programming, 
***************
*** 287,293 ****
    (note: These rules only apply when a function expects a Boolean
    value, not for strings that expect other values.)
  
! See also: BOOLEAN FUNCTIONS, not(), t()
  & CLIENTS
    Clients are special software programs that you can use to connect to 
    MUSHes. They are usually much nicer to use than raw telnet and give you
--- 287,293 ----
    (note: These rules only apply when a function expects a Boolean
    value, not for strings that expect other values.)
  
!   See also: BOOLEAN FUNCTIONS, not(), t()
  & CLIENTS
    Clients are special software programs that you can use to connect to 
    MUSHes. They are usually much nicer to use than raw telnet and give you
***************
*** 332,338 ****
    There's also one special case: anyone can @link an unlinked exit
    (at which point the exit is @chowned to the linker).
  
! See also: controls(), TRUST, ZONES, SHARED PLAYERS
  & COSTS
    These are usually:
    
--- 332,338 ----
    There's also one special case: anyone can @link an unlinked exit
    (at which point the exit is @chowned to the linker).
  
!   See also: controls(), TRUST, ZONES, SHARED PLAYERS
  & COSTS
    These are usually:
    
***************
*** 349,355 ****
    
    Type '@config/costs' to get the costs for the particular MUSH you are on.
  
! See also: MONEY, money(), score
  & CREDITS
    Maintainer: Javelin
    Developers: Talek [TAP], Trivian [TN], Halatir [LdW], Raevnos [SW]
--- 349,355 ----
    
    Type '@config/costs' to get the costs for the particular MUSH you are on.
  
!   See also: MONEY, money(), score
  & CREDITS
    Maintainer: Javelin
    Developers: Talek [TAP], Trivian [TN], Halatir [LdW], Raevnos [SW]
***************
*** 370,376 ****
    and Rhost [Rhost] servers, as well as to the players of Belgariad MUSH,
    DuneMUSH, and M*U*S*H, and everyone else using this server!
  
! See also: help code, help license
  & DATABASE
  & DBREFS
  & DBREF NUMBER
--- 370,376 ----
    and Rhost [Rhost] servers, as well as to the players of Belgariad MUSH,
    DuneMUSH, and M*U*S*H, and everyone else using this server!
  
!   See also: help code, help license
  & DATABASE
  & DBREFS
  & DBREF NUMBER
***************
*** 410,431 ****
    flag is 'O' (o), which looks like '0' (zero) on some clients. Make sure 
    you have the right number before using it in your code!
  
! See also: MYOPIC, OPAQUE, MUSHCODE
  & DROP-TOS
  
!   When you use the @link command on a room, it sets another room or object
!   as the DROP-TO location. Any object that someone drops in the room will
!   automatically be sent to the drop-to location, rather than staying in the
!   room.
! 
!   If the object is set STICKY, it will instead go to its home. If the 
!   room is set STICKY, all objects dropped in the room will stay there
!   until the last player leaves/disconnects, at which point all of them
!   will be sent to the drop-to location.
  
!   This is very useful for keeping rooms uncluttered. 
  
! See also: @link, STICKY, LINK_OK
  & %#
  & %N
  & ENACTOR
--- 410,436 ----
    flag is 'O' (o), which looks like '0' (zero) on some clients. Make sure 
    you have the right number before using it in your code!
  
!   See also: MYOPIC, OPAQUE, MUSHCODE
  & DROP-TOS
  
!   When you use the @link command on a room, it sets another room or
!   object as the DROP-TO location. By default, any non-STICKY object that
!   someone drops in the room will automatically be transported to the
!   drop-to location, rather than staying in the room. Any STICKY object
!   droped in the room will go to its home.
! 
!   If the room is set STICKY, objects dropped in the room will stay there
!   until the last player leaves/disconnects, at which point they will be
!   transported as described above.
! 
!   If the room has a @lock/dropto set on it, only objects that pass the
!   lock will be transported (either immediately or when the last player
!   leaves if the room is STICKY). This can be used to prevent the dropto
!   from acting on, say, objects containing connected players.
  
!   Drop-tos are useful for keeping rooms uncluttered. 
  
!   See also: @link, STICKY, LINK_OK, @lock
  & %#
  & %N
  & ENACTOR
***************
*** 441,447 ****
    replaced with the name of the enactor (the person who typed 'get <object>'
    in this case). 
    
! See also: EXECUTOR, SUBSTITUTION, DBREF
  & EVALUATION ORDER
    Whenever some text is entered by an object or thing, the MUSH program
    attempts to match it against a valid game command in the following 
--- 446,452 ----
    replaced with the name of the enactor (the person who typed 'get <object>'
    in this case). 
    
!   See also: EXECUTOR, SUBSTITUTION, DBREF
  & EVALUATION ORDER
    Whenever some text is entered by an object or thing, the MUSH program
    attempts to match it against a valid game command in the following 
***************
*** 491,497 ****
    same. There is a %-substitution, %!, that is replaced by the dbref # of
    the executor of the command.
  
! For example:
      @emit %N is the enactor and %! is the executor!
      > Cyclonus is the enactor and #6 is the executor!
      @create Box
--- 496,502 ----
    same. There is a %-substitution, %!, that is replaced by the dbref # of
    the executor of the command.
  
!   For example:
      @emit %N is the enactor and %! is the executor!
      > Cyclonus is the enactor and #6 is the executor!
      @create Box
***************
*** 505,511 ****
    command on the box, so Cyclonus was still the enactor, but the box was
    the object that was actually doing the @emit, and was thus the executor.
  
! See also: ENACTOR, SUBSTITUTION
  & EXITS
    An exit is a one-way link that takes you from its source room to its 
    destination room. To open an exit from a room, you must control that room.
--- 510,516 ----
    command on the box, so Cyclonus was still the enactor, but the box was
    the object that was actually doing the @emit, and was thus the executor.
  
!   See also: ENACTOR, SUBSTITUTION
  & EXITS
    An exit is a one-way link that takes you from its source room to its 
    destination room. To open an exit from a room, you must control that room.
***************
*** 536,542 ****
    will be evaluated for the dbref # of the destination room when the exit 
    is used. 
     
! For example:
    @open South <S>;s;south
    @link s=variable
    &destination s=[switch(rand(3),0,#100,1,#101,2,#102)]
--- 541,547 ----
    will be evaluated for the dbref # of the destination room when the exit 
    is used. 
     
!   For example:
    @open South <S>;s;south
    @link s=variable
    &destination s=[switch(rand(3),0,#100,1,#101,2,#102)]
***************
*** 547,553 ****
    Anyone can create variable exits, but the destinations must be to places
    that the exit can normally @link to.
  
! See also: @link, @open, link_ok, CLOUDY, TRANSPARENT, @firstexit
  & FAILURE
    FAILURE  
  
--- 552,558 ----
    Anyone can create variable exits, but the destinations must be to places
    that the exit can normally @link to.
  
!   See also: @link, @open, link_ok, CLOUDY, TRANSPARENT, @firstexit
  & FAILURE
    FAILURE  
  
***************
*** 564,570 ****
    (@efail/@oefail/@aefail), and for failing to leave an object
    (@lfail/@lefail/@alfail).
  
! See also: @lock, @fail, @efail, @lfail
  & GENDER
  & SEX
    Gender on a MUSH is entirely up to you. You can set yourself (or any
--- 569,575 ----
    (@efail/@oefail/@aefail), and for failing to leave an object
    (@lfail/@lefail/@alfail).
  
!   See also: @lock, @fail, @efail, @lfail
  & GENDER
  & SEX
    Gender on a MUSH is entirely up to you. You can set yourself (or any
***************
*** 574,580 ****
    pronoun substitution by the MUSH. The SEX attribute is visual to
    anyone who wants to see it. 
  
! See also: @sex, SUBSTITUTION
  & GLOBALS
  & GLOBAL COMMANDS
    A command is "global" if it can be used anywhere in the world of the
--- 579,585 ----
    pronoun substitution by the MUSH. The SEX attribute is visual to
    anyone who wants to see it. 
  
!   See also: @sex, SUBSTITUTION
  & GLOBALS
  & GLOBAL COMMANDS
    A command is "global" if it can be used anywhere in the world of the
***************
*** 584,590 ****
    MUSH, but you can usually find MUSH-specific help on them by
    typing "+help". 
  
! See also: MASTER ROOM, USER-DEFINED COMMANDS, EVALUATION
  & HERE
    The word 'here' refers to the room you are in. For example,
    to rename the room  you're in (if you control it), you could enter 
--- 589,595 ----
    MUSH, but you can usually find MUSH-specific help on them by
    typing "+help". 
  
!   See also: MASTER ROOM, USER-DEFINED COMMANDS, EVALUATION
  & HERE
    The word 'here' refers to the room you are in. For example,
    to rename the room  you're in (if you control it), you could enter 
***************
*** 607,613 ****
    You can set the drop-to in a room to home by doing:
          @link <room dbref or "here">=home
  
! See also: DROP-TOS, @link, STICKY, LINK_OK, FIXED, home, EXITS
  & INTERIORS
    Here's a quick description of how to make things that can be entered:
          
--- 612,618 ----
    You can set the drop-to in a room to home by doing:
          @link <room dbref or "here">=home
  
!   See also: DROP-TOS, @link, STICKY, LINK_OK, FIXED, EXITS
  & INTERIORS
    Here's a quick description of how to make things that can be entered:
          
***************
*** 636,647 ****
    @infilter car=* has arrived.,* has left.,* climbs out of the car.,
      * climbs into the car.
  
! (The filters will keep people on the outside from seeing the 'o' messages and 
! people on the inside from seeing the 'ox' messages which is a good thing.)
!         
! See also: enter, leave, @prefix, @filter, AUDIBLE, @listen
! & LAST
! & LASTLOGOUT
    LAST and LASTLOGOUT
  
    These attributes show the last times you connected and disconnected from
--- 641,652 ----
    @infilter car=* has arrived.,* has left.,* climbs out of the car.,
      * climbs into the car.
  
!   (The filters will keep people on the outside from seeing the 'o'
!   messages and people on the inside from seeing the 'ox' messages which
!   is a good thing.)
! 
!   See also: enter, leave, @prefix, @filter, AUDIBLE, @listen
! & LAST & LASTLOGOUT
    LAST and LASTLOGOUT
  
    These attributes show the last times you connected and disconnected from
***************
*** 660,666 ****
    objects or yourself to that  room if it is set ABODE, and can set 
    the destination of exits to that room if it is LINK_OK.
  
! See also: LINK_OK, ABODE, @link
  & LISTENING
    
    There are two basic ways to trigger action on the MUSH. The basic way
--- 665,671 ----
    objects or yourself to that  room if it is set ABODE, and can set 
    the destination of exits to that room if it is LINK_OK.
  
!   See also: LINK_OK, ABODE, @link
  & LISTENING
    
    There are two basic ways to trigger action on the MUSH. The basic way
***************
*** 715,721 ****
  
    Listen patterns are checked after the object's normal @listen attribute.
  
! See also: @listen, @ahear, @amhear, @aahear, MONITOR, 
            USER-DEFINED COMMANDS, LISTEN_PARENT
  
  & LISTS
--- 720,726 ----
  
    Listen patterns are checked after the object's normal @listen attribute.
  
!   See also: @listen, @ahear, @amhear, @aahear, MONITOR, 
            USER-DEFINED COMMANDS, LISTEN_PARENT
  
  & LISTS
***************
*** 734,740 ****
    is made up of similar items (so the fourth list in the example is NOT a 
    typical one).
  
! See also: STRINGS, List Functions
  & LOOPING
    Looping in an object can have its good parts and its bad parts.
    The good part is when you activate part of a program multiple times
--- 739,745 ----
    is made up of similar items (so the fourth list in the example is NOT a 
    typical one).
  
!   See also: STRINGS, List Functions
  & LOOPING
    Looping in an object can have its good parts and its bad parts.
    The good part is when you activate part of a program multiple times
***************
*** 748,754 ****
    machine that isn't @halt'd will drain your pennies while you are away
    from the mush!
  
! See also: @ps, HALT, COSTS, @trigger
  & MASTER ROOM
    
    The Master Room enables global commands and exits. Exits in the Master
--- 753,759 ----
    machine that isn't @halt'd will drain your pennies while you are away
    from the mush!
  
!   See also: @ps, HALT, COSTS, @trigger
  & MASTER ROOM
    
    The Master Room enables global commands and exits. Exits in the Master
***************
*** 759,765 ****
    a global command that you would like to see enabled for the MUSH, speak
    to a wizard.
    
! See also: EVALUATION, GLOBAL COMMANDS
  & ME
    The word 'me' refers to yourself. Some things to do when 
    starting out: 
--- 764,770 ----
    a global command that you would like to see enabled for the MUSH, speak
    to a wizard.
    
!   See also: EVALUATION, GLOBAL COMMANDS
  & ME
    The word 'me' refers to yourself. Some things to do when 
    starting out: 
***************
*** 768,774 ****
    3) lock yourself:                     @lock me==me
    4) set your gender:                   @sex me=<male|female|neuter|plural>
  
! See also: help newbie, help @lock, help @describe, help @sex
  & MONEY
    The MUSH has a built-in money system, which gives a starting amount
    of money to new players and hands out a daily allowance thereafter.
--- 773,779 ----
    3) lock yourself:                     @lock me==me
    4) set your gender:                   @sex me=<male|female|neuter|plural>
  
!   See also: help newbie, help @lock, help @describe, help @sex
  & MONEY
    The MUSH has a built-in money system, which gives a starting amount
    of money to new players and hands out a daily allowance thereafter.
***************
*** 784,790 ****
    pays the object by giving it the right number of pennies, the attributes
    are triggered.
  
! See also: COSTS, give, @cost, @pay, @opay, @apay
  & MUSHCODE
  & SOFTCODE
  
--- 789,795 ----
    pays the object by giving it the right number of pennies, the attributes
    are triggered.
  
!   See also: COSTS, give, @cost, @pay, @opay, @apay
  & MUSHCODE
  & SOFTCODE
  
***************
*** 835,841 ****
    All attributes can be used in attribute locks and can be 'owned' 
    independent of object ownership. 
    
! See also: ATTRIBUTES, ATTRIB-OWNERSHIP, Attribute Functions
  & PARENT
  & PARENTS
  & OBJECT PARENTS
--- 840,846 ----
    All attributes can be used in attribute locks and can be 'owned' 
    independent of object ownership. 
    
!   See also: ATTRIBUTES, ATTRIB-OWNERSHIP, Attribute Functions
  & PARENT
  & PARENTS
  & OBJECT PARENTS
***************
*** 881,888 ****
    name, but by the attribute name. If two attributes are in "conflict", 
    the child's attribute is used.
  
! See also: @parent, $-COMMANDS, ATTRIBUTES
! For example:
  
    > &TEST #10=$test:@emit I'm the parent
    > &TEST #11=$check:@emit I'm the child
--- 886,892 ----
    name, but by the attribute name. If two attributes are in "conflict", 
    the child's attribute is used.
  
!   For example:
  
    > &TEST #10=$test:@emit I'm the parent
    > &TEST #11=$check:@emit I'm the child
***************
*** 923,928 ****
--- 927,934 ----
    parent does not change, so unless you're putting data into the parent 
    that you want to make impossible to read, it's safe to allow the
    purchasers of your object to @chown their copy.
+ 
+   See also: @parent, $-COMMANDS, ATTRIBUTES
  & POWERS LIST
    Powers can be granted only by wizards, using the @power command. 
    Powers cannot be granted to guest characters or players who are set
***************
*** 961,967 ****
    tport_anywhere        Can @teleport to anywhere.
    unkillable            Can not be killed
  
! See also: @power
  & PUPPETS
    A thing is turned into a puppet by setting the PUPPET flag on it.
    A puppet object is an extension of its owner and relays everything
--- 967,973 ----
    tport_anywhere        Can @teleport to anywhere.
    unkillable            Can not be killed
  
!   See also: @power
  & PUPPETS
    A thing is turned into a puppet by setting the PUPPET flag on it.
    A puppet object is an extension of its owner and relays everything
***************
*** 999,1005 ****
    #18 :waves hello
    Punch> Punch waves hello
  
! See also: PUPPET, @force, DBREF
  & QUEUE
    QUEUE
  
--- 1005,1011 ----
    #18 :waves hello
    Punch> Punch waves hello
  
!   See also: PUPPET, @force, DBREF
  & QUEUE
    QUEUE
  
***************
*** 1016,1022 ****
    (wizards, you, and your objects) or unless you are VISUAL.  It 
    tracks how many active commands you have in the queue.
  
! See also: @ps, LOOPING
  & REGEXP
  & REGEXPS
    (This help text is largely from TinyMUSH 2.2.4, with permission)
--- 1022,1028 ----
    (wizards, you, and your objects) or unless you are VISUAL.  It 
    tracks how many active commands you have in the queue.
  
!   See also: @ps, LOOPING
  & REGEXP
  & REGEXPS
    (This help text is largely from TinyMUSH 2.2.4, with permission)
***************
*** 1274,1287 ****
  
    Please see help setq() for more information about the setq registers.
  
! See also: SUBSTITUTIONS, @trigger, USER-DEFINED COMMANDS, setq()
  & RQUOTA
    RQUOTA
  
    This attribute tracks remaining building quota if it is implemented.  
    It is settable in-game only by a wizard, and is only visible to wizards.
  
! See also: @quota, @squota
  & SEMAPHORES
    The most complicated thing about semaphores is their name. Before you try
    to use semaphores, you should first be familiar with the "@wait" command.
--- 1280,1293 ----
  
    Please see help setq() for more information about the setq registers.
  
!   See also: SUBSTITUTIONS, @trigger, USER-DEFINED COMMANDS, setq()
  & RQUOTA
    RQUOTA
  
    This attribute tracks remaining building quota if it is implemented.  
    It is settable in-game only by a wizard, and is only visible to wizards.
  
!   See also: @quota, @squota
  & SEMAPHORES
    The most complicated thing about semaphores is their name. Before you try
    to use semaphores, you should first be familiar with the "@wait" command.
***************
*** 1341,1347 ****
    [ 30 seconds passes. ]
    Wizard waits 30 seconds.
   
! See also: @wait, @drain, @notify
  (continued in help semaphores4)
  & SEMAPHORES4
    Semaphores can be used to enforce mutual exclusion - to prevent
--- 1347,1353 ----
    [ 30 seconds passes. ]
    Wizard waits 30 seconds.
   
!   See also: @wait, @drain, @notify
  (continued in help semaphores4)
  & SEMAPHORES4
    Semaphores can be used to enforce mutual exclusion - to prevent
***************
*** 1426,1439 ****
    want to know who is doing it, you can set yourself NOSPOOF and you will
    be notified who is making the @emits.
  
! See also: @emit, @pemit, @remit, @oemit, and NOSPOOF.
  & STACK
    For those unfamiliar with the term stack, it refers to a programming
    data structure that follows a LIFO (Last-In-First-Out) principle. The
    stack in MUSH holds the ten REGISTERS, which can be accessed via the 
    V-function (v(0) through v(9)) or via %-substitution (%0 through %9).
    
! See also: REGISTERS
  & STRINGS
    A string is simply a bunch of characters.  A word is a string that begins
    and ends with the space character.  A sentence is a string made up of 
--- 1432,1445 ----
    want to know who is doing it, you can set yourself NOSPOOF and you will
    be notified who is making the @emits.
  
!   See also: @emit, @pemit, @remit, @oemit, and NOSPOOF.
  & STACK
    For those unfamiliar with the term stack, it refers to a programming
    data structure that follows a LIFO (Last-In-First-Out) principle. The
    stack in MUSH holds the ten REGISTERS, which can be accessed via the 
    V-function (v(0) through v(9)) or via %-substitution (%0 through %9).
    
!   See also: REGISTERS
  & STRINGS
    A string is simply a bunch of characters.  A word is a string that begins
    and ends with the space character.  A sentence is a string made up of 
***************
*** 1444,1450 ****
  
          Foozle 09blert bar baz foo.
  
! See also: string functions
  & %
  & SUBSTITUTIONS
    The % symbol is used in MUSH commands to indicate a substitution -- some
--- 1450,1456 ----
  
          Foozle 09blert bar baz foo.
  
!   See also: string functions
  & %
  & SUBSTITUTIONS
    The % symbol is used in MUSH commands to indicate a substitution -- some
***************
*** 1505,1511 ****
    %! = #11
    %L = #13
  
! See also: EVALUATION, ENACTOR, EXECUTOR, DBREFS, v()
  & SUCCESS
    A "success" normally occurs when you attempt to do something that is
    restricted by an @lock and you pass the @lock. (Note that if no lock
--- 1511,1517 ----
    %! = #11
    %L = #13
  
!   See also: EVALUATION, ENACTOR, EXECUTOR, DBREFS, v()
  & SUCCESS
    A "success" normally occurs when you attempt to do something that is
    restricted by an @lock and you pass the @lock. (Note that if no lock
***************
*** 1519,1525 ****
    more information. Many of these actions have standard attributes that
    you can set messages in for when someone succeeds.
  
! See also: FAILURE, @lock, VERBS, ATTRIBUTES, @success, @asuccess, @osuccess
  & SWITCHES
    SWITCHES
   
--- 1525,1531 ----
    more information. Many of these actions have standard attributes that
    you can set messages in for when someone succeeds.
  
!   See also: FAILURE, @lock, VERBS, ATTRIBUTES, @success, @asuccess, @osuccess
  & SWITCHES
    SWITCHES
   
***************
*** 1571,1577 ****
      commands. Can send @mail as themselves. You can have $-commands and 
      ^-patterns on things. Things can carry, be carried, and can follow.
  
! See also: EXITS, USER-DEFINED COMMANDS, LISTENING, GLOBALS
  & $-COMMANDS
  & MACROS
  & USER-DEFINED COMMANDS
--- 1577,1583 ----
      commands. Can send @mail as themselves. You can have $-commands and 
      ^-patterns on things. Things can carry, be carried, and can follow.
  
!   See also: EXITS, USER-DEFINED COMMANDS, LISTENING, GLOBALS
  & $-COMMANDS
  & MACROS
  & USER-DEFINED COMMANDS
***************
*** 1613,1619 ****
  
    *BE SURE TO @LOCK/USE ME==ME IF YOU SET MACROS ON YOURSELF!*
  
! See also: STACK, SUBSTITUTIONS, @lock
  & VERBS
    For most verbs there are three forms: Verb (what the Enactor sees),
    Overb (what others in the area see) and Averb (the action to be 
--- 1619,1625 ----
  
    *BE SURE TO @LOCK/USE ME==ME IF YOU SET MACROS ON YOURSELF!*
  
!   See also: STACK, SUBSTITUTIONS, @lock
  & VERBS
    For most verbs there are three forms: Verb (what the Enactor sees),
    Overb (what others in the area see) and Averb (the action to be 
***************
*** 1678,1684 ****
  
    A backslash (\) can be used to escape * and ? if you want to match 
    a literal asterisk or question mark.
! See also: USER-DEFINED COMMANDS, REGEXP
  & ZONE MASTER ROOMS
  & ZMR
    
--- 1684,1690 ----
  
    A backslash (\) can be used to escape * and ? if you want to match 
    a literal asterisk or question mark.
!   See also: USER-DEFINED COMMANDS, REGEXP
  & ZONE MASTER ROOMS
  & ZMR
    
***************
*** 1691,1697 ****
    restricted commands that can go on a separate use-locked object from
    general ones.
  
! See also: ZONES, MASTER ROOM, EVALUATION
  & ZONE MASTERS
  & ZMP
  & SHARED PLAYERS
--- 1697,1703 ----
    restricted commands that can go on a separate use-locked object from
    general ones.
  
!   See also: ZONES, MASTER ROOM, EVALUATION
  & ZONE MASTERS
  & ZMP
  & SHARED PLAYERS
***************
*** 1746,1752 ****
    statements about ZMOs also apply to zone master rooms; for details,
    see the help topic ZONE MASTER ROOMS.
    
! See "help ZONES2" for more.
  & ZONES2
    $commands on a ZMO are treated as global within that zone.
    The game attempts to match $commands for the ZMO of the player's
--- 1752,1758 ----
    statements about ZMOs also apply to zone master rooms; for details,
    see the help topic ZONE MASTER ROOMS.
    
!   See "help ZONES2" for more.
  & ZONES2
    $commands on a ZMO are treated as global within that zone.
    The game attempts to match $commands for the ZMO of the player's
***************
*** 1818,1820 ****
--- 1824,1833 ----
   when the function is called, so restricting @pemit also restricts
   pemit(). However, a function's restrictions are not checked when a
   command is called, to allow disabling side-effect functions.
+ 
+  Some functions (Like name()) have non-side-effect and side-effect versions
+  depending on how many arguments they're called with. The side-effect
+  version can be disabled while keeping the safe non-side-effect form with
+  the 'nosidefx' restriction. This can also be used to disable pure side-effect
+  functions.
+ 
*** 1_7_5.313/game/txt/hlp/pennfunc.hlp Thu, 19 Sep 2002 22:15:07 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.2 600)
--- 1_7_5.363(w)/game/txt/hlp/pennfunc.hlp Wed, 30 Oct 2002 21:53:28 -0600 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.7 600)
***************
*** 204,212 ****
    ifelse()      lcstr()       left()        lit()         ljust()
    merge()       mid()         ord()         pos()         regedit()
    regmatch()    repeat()      reverse()     right()       rjust()
!   scramble()    secure()      space()       spellnum()    squish()
!   strcat()      strinsert()   stripaccent() stripansi()   strlen()
!   switch()      trim()        ucstr()       wrap()
   
    See also: STRINGS
  & Time functions
--- 204,213 ----
    ifelse()      lcstr()       left()        lit()         ljust()
    merge()       mid()         ord()         pos()         regedit()
    regmatch()    repeat()      reverse()     right()       rjust()
!   scramble()    secure()      sha1()        space()       spellnum()    
!   squish()      strcat()      strinsert()   stripaccent() stripansi()   
!   strlen()      strmatch()    switch()      trim()        ucstr()       
!   wrap()
   
    See also: STRINGS
  & Time functions
***************
*** 1863,1874 ****
    lock(<object>[/<locktype>][, <new value>])
  
    lock() returns the text string equivalent of the lock on an object that
!   you control. You can also provide an "enter", "use", "tport", or "page" 
    switch after the object, if you want to check something other than the
    regular lock.  If a new value is specified, it will attempt to change
    the lock before reporting it.
  
    This is a side-effect function and may not be enabled on some MUSHes.
  & LOG()
    log(<number>[, <base>])
   
--- 1864,1877 ----
    lock(<object>[/<locktype>][, <new value>])
  
    lock() returns the text string equivalent of the lock on an object that
!   you control. You can also provide a locktype (e.g. "enter", "use", etc.)
    switch after the object, if you want to check something other than the
    regular lock.  If a new value is specified, it will attempt to change
    the lock before reporting it.
  
    This is a side-effect function and may not be enabled on some MUSHes.
+  
+   See also: @lock, locktypes
  & LOG()
    log(<number>[, <base>])
   
***************
*** 2044,2050 ****
    the user-defined function of the first argument performed on it;
    the element is passed to the function as %0, and its position
    in <list> as %1. <delim> is used as the element delimiter; 
!   if it is not specified, a space is used.
   
    Examples:
    
--- 2047,2054 ----
    the user-defined function of the first argument performed on it;
    the element is passed to the function as %0, and its position
    in <list> as %1. <delim> is used as the element delimiter; 
!   if it is not specified, a space is used. The resulting output is
!   delimited by <osep>, if given, or else by the delimiter
   
    Examples:
    
***************
*** 2073,2085 ****
  
    See also: element(), grab()
  & MATCHALL()
!   Function: matchall(<list>,<pattern>[,<delim>])
   
    This function works identically to the match() function, save that it
    returns all matches, not just the first: It returns the index numbers of
!   all elements in the list <string> which match <pattern>. If none match, an
!   empty string is returned.
!  
    Examples:
   
    > say matchall(This is a test of a test,test)
--- 2077,2090 ----
  
    See also: element(), grab()
  & MATCHALL()
!   Function: matchall(<list>,<pattern>[,<delim>[,<osep>]])
   
    This function works identically to the match() function, save that it
    returns all matches, not just the first: It returns the index numbers of
!   all elements in the list <string> which match <pattern>. If none match,
!   an empty string is returned.  The resulting output is delimited by
!   <osep>, if given, or else by the delimiter
! 
    Examples:
   
    > say matchall(This is a test of a test,test)
***************
*** 2858,2863 ****
--- 2863,2873 ----
      You say, "1.0 1.000 1.1"
      > say setunion(1.1 1.0, 1.000, %b, f)
      You say, "1.0 1.1"
+ & SHA1()
+   sha1(<string>)
+ 
+   Returns the SHA-1 cryptographic hash of the string. See RFC 3174
+   for more information.
  & SHL()
    shl(<number>,<count>)
  
***************
*** 3302,3309 ****
    Monday, the 17th day of July.
  & TIMEFMT2
    All escape codes start with a $. To get a literal $, use $$.
!   Any unrecognized codes or other text will be returned unchanged.
!   Some servers might support more codes than the ones listed below.
  
    $a - Abbreviated weekday name  $p - AM/PM  ($P may also work)
    $A - Full weekday name         $S - Seconds after the minute
--- 3312,3319 ----
    Monday, the 17th day of July.
  & TIMEFMT2
    All escape codes start with a $. To get a literal $, use $$.
!   Invalid codes will return #-1 INVALID ESCAPE CODE. Other text will be
!   passed through unchanged.
  
    $a - Abbreviated weekday name  $p - AM/PM  ($P may also work)
    $A - Full weekday name         $S - Seconds after the minute
*** 1_7_5.313/game/txt/hlp/penncmd.hlp Sun, 15 Sep 2002 15:53:06 -0500 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.5 600)
--- 1_7_5.363(w)/game/txt/hlp/penncmd.hlp Wed, 30 Oct 2002 14:46:34 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.9 600)
***************
*** 67,73 ****
   
    @allhalt       @allquota      @boot          @chownall      @chzoneall
    @comment       @dbck          @disable       @dump          @enable
!   @hide          @kick          @log           @motd
    @newpassword   @pcreate       @poll          @poor          @power
    @purge         @quota         @readcache     @rejectmotd    @shutdown
    @sitelock      @squota        @uptime        @wall
--- 67,73 ----
   
    @allhalt       @allquota      @boot          @chownall      @chzoneall
    @comment       @dbck          @disable       @dump          @enable
!   @hide          @hook          @kick          @log           @motd
    @newpassword   @pcreate       @poll          @poor          @power
    @purge         @quota         @readcache     @rejectmotd    @shutdown
    @sitelock      @squota        @uptime        @wall
***************
*** 1412,1417 ****
--- 1412,1448 ----
    reset.
    
  See also: enter, @enter, ENTER_OK, @describe, look
+ & @hook
+   @hook/<switch> <command>[=<object>, <attribute>]
+ 
+   @hook tells the command parser to evaluate given attributes at certain points
+   in command evaluation. The possible points, indicated by the proper switch:
+ 
+   @hook/before: The attribute is evaluated before the command itself is run.
+   @hook/after: The attribute is evaluated after the command is run.
+ 
+   In all cases, %# is the dbref of the object doing the command, and all
+   hooks share the same set of q-registers. The results of the evaluated
+   attribute is thrown away like it was wrapped in a call of null(). Also,
+   in cases where a command and function do the same thing (e.g., @pemit and
+   pemit()), only the command gets the hooks.
+ 
+   Leaving out the object and attribute clears an existing hook. Wizards can
+   see existing hooks with @command.
+ 
+   See HELP @HOOK2 for an example.
+ & @hook2
+   An example of @hook:
+ 
+   > &top_line #3=pemit(%#, What follows is a the results of a look)
+   > &bottom_line #3=pemit(%#, You're done looking.)
+   > @hook/before look=#3, top_line
+   > @hook/after look=#3, bottom_line
+   > look
+   What follows is the results of a look
+   Room Zero
+   You are in Room Zero. It's very dark here.
+   You're done looking.
  & @idle
    @idle <player> = <message>
  
***************
*** 1550,1559 ****
    to work. If there's no DESTINATION attribute, the EXITTO attribute
    is also tried.
  
    LINK_OK objects can also be used as semaphores, and any object can be
    @parented to them.
  
! See also: EXITS, @open, @dig, DROP-TO, HOME & @listen
  & @listen
    @listen <object> = <string>
  
--- 1581,1593 ----
    to work. If there's no DESTINATION attribute, the EXITTO attribute
    is also tried.
  
+   If the destination is "home", those who travel through the exit will
+   be sent to their homes.
+ 
    LINK_OK objects can also be used as semaphores, and any object can be
    @parented to them.
  
! See also: EXITS, @open, @dig, DROP-TO, HOME
  & @listen
    @listen <object> = <string>
  
***************
*** 1765,1784 ****
  
  (continued in help @lock9)
  & @lock9
!   You can also test for set flags in a lock directly, without using an
!   evaluation lock, with this format:
  
!   @lock <object>=flag^<flag>
  
!   Object types can also be checked, like so:
  
!   @lock <object>=type^<type>
  
!   These locks act like the object the lock is on does a hasflag(%#, <flag>)
!   or hastype(%#, <type>), succeeding if the flag is set.
  
    For example,
- 
      @lock/use Admin Commands=flag^wizard|flag^royalty
  
  See also: locktypes, @clock
--- 1799,1819 ----
  
  (continued in help @lock9)
  & @lock9
!   You can also test for set flags, powers, or object types in a lock directly,
!    without using an evaluation lock, with these formats:
  
!     @lock <object>=flag^<flag>
!     @lock <object>=type^<type>
!     @lock <object>=power^<power>
  
!   These locks act like the object the lock is on does a hasflag(%#, <flag>),
!   hastype(%#, <type>), or haspower(%#, <power>) succeeding if the flag is set.
  
!   You can test for channel membership with:
  
!     @lock <object>=channel^<channel>
  
    For example,
      @lock/use Admin Commands=flag^wizard|flag^royalty
  
  See also: locktypes, @clock
***************
*** 2558,2563 ****
--- 2593,2599 ----
    
    The first form sets (or unsets) a flag on <object>. See 'help flags'.
      Ex: @set me=VISUAL
+   Flags may be specified by full name (recommended) or by flag character.
  
    The second form sets a pre-defined attribute on <object>
      Ex: @fail Heavy Box=You can't pick that up.
***************
*** 2805,2810 ****
--- 2841,2849 ----
    Teleportation triggers the @oxtport/@tport/@otport/@atport attributes,
    unless <room> is an exit or the /silent switch is given.
  
+   As a special case, using "home" as the <room> teleports the object
+   to its home.
+ 
    See also: JUMP_OK, NO_TEL, @oxtport, @tport, @otport, @atport, @lock
  & @tport
    @tport <object> [=<message>]
*** 1_7_5.313/game/txt/hlp/index.hlp Thu, 29 Aug 2002 23:08:19 -0500 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1 660)
--- 1_7_5.363(w)/game/txt/hlp/index.hlp Wed, 30 Oct 2002 14:47:11 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4 660)
***************
*** 76,140 ****
   1.7.5p5                   1.7.5p6                   1.7.5p6                  
   1.7.5p7                   1.7.5p7                   1.7.5p8                  
   1.7.5p8                   1.7.5p9                   1.7.5p9                  
!  1.7.5p10                  1.7.5p10                  :                        
!  ;                         @-attributes              @-building               
!  @-general                 @-wizard                  @@                       
!  @@()                      @aahear                   @aclone                  
  
  For more, see Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @aconnect                 @adeath                   @adescribe               
!  @adestroy                 @adisconnect              @adrop                   
!  @aefail                   @aenter                   @afailure                
!  @afollow                  @agive                    @ahear                   
!  @aidescribe               @aleave                   @alfail                  
!  @alias                    @allhalt                  @allquota                
!  @amhear                   @amove                    @apayment                
!  @areceive                 @asuccess                 @atport                  
!  @atrchown                 @atrlock                  @attribute               
!  @aufail                   @aunfollow                @ause                    
!  @away                     @azenter                  @azleave                 
!  @boot                     @break                    @cemit                   
!  @channel                  @channel2                 @channel3                
!  @channel4                 @channel5                 @charges                 
!  @chat                     @chown                    @chownall                
!  @chzone                   @chzone2                  @chzoneall               
  
  For more, see Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @clock                    @clock2                   @clone                   
!  @command                  @comment                  @config                  
!  @config attribs           @config chat              @config cmds             
!  @config cosmetic          @config cosmetic2         @config costs            
!  @config db                @config dump              @config funcs            
!  @config limits            @config limits2           @config log              
!  @config net               @config parameters        @config tiny             
!  @conformat                @cost                     @cpattr                  
!  @create                   @dbck                     @death                   
!  @decompile                @decompile2               @decompile3              
!  @describe                 @destroy                  @destroy2                
!  @dig                      @dig2                     @disable                 
!  @doing                    @dolist                   @drain                   
!  @drop                     @dump                     @ealias                  
!  @edit                     @efail                    @elock                   
!  @emit                     @enable                   @enter                   
  
  For more, see Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @entrances                @eunlock                  @exitformat              
!  @failure                  @filter                   @filter2                 
!  @find                     @firstexit                @follow                  
!  @force                    @force2                   @forwardlist             
!  @function                 @function2                @function3               
!  @function4                @gedit                    @give                    
!  @grep2                    @grep                     @halt                    
!  @haven                    @hide                     @idescribe               
   @idle                     @infilter                 @inprefix                
   @kick                     @lalias                   @leave                   
   @lemit                    @lfail                    @link                    
--- 76,141 ----
   1.7.5p5                   1.7.5p6                   1.7.5p6                  
   1.7.5p7                   1.7.5p7                   1.7.5p8                  
   1.7.5p8                   1.7.5p9                   1.7.5p9                  
!  1.7.5p10                  1.7.5p10                  1.7.5p11                 
!  :                         ;                         @-attributes             
!  @-building                @-general                 @-wizard                 
!  @@                        @@()                      @aahear                  
  
  For more, see Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @aclone                   @aconnect                 @adeath                  
!  @adescribe                @adestroy                 @adisconnect             
!  @adrop                    @aefail                   @aenter                  
!  @afailure                 @afollow                  @agive                   
!  @ahear                    @aidescribe               @aleave                  
!  @alfail                   @alias                    @allhalt                 
!  @allquota                 @amhear                   @amove                   
!  @apayment                 @areceive                 @asuccess                
!  @atport                   @atrchown                 @atrlock                 
!  @attribute                @aufail                   @aunfollow               
!  @ause                     @away                     @azenter                 
!  @azleave                  @boot                     @break                   
!  @cemit                    @channel                  @channel2                
!  @channel3                 @channel4                 @channel5                
!  @charges                  @chat                     @chown                   
!  @chownall                 @chzone                   @chzone2                 
  
  For more, see Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @chzoneall                @clock                    @clock2                  
!  @clone                    @command                  @comment                 
!  @config                   @config attribs           @config chat             
!  @config cmds              @config cosmetic          @config cosmetic2        
!  @config costs             @config db                @config dump             
!  @config funcs             @config limits            @config limits2          
!  @config log               @config net               @config parameters       
!  @config tiny              @conformat                @cost                    
!  @cpattr                   @create                   @dbck                    
!  @death                    @decompile                @decompile2              
!  @decompile3               @describe                 @destroy                 
!  @destroy2                 @dig                      @dig2                    
!  @disable                  @doing                    @dolist                  
!  @drain                    @drop                     @dump                    
!  @ealias                   @edit                     @efail                   
!  @elock                    @emit                     @enable                  
  
  For more, see Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @enter                    @entrances                @eunlock                 
!  @exitformat               @failure                  @filter                  
!  @filter2                  @find                     @firstexit               
!  @follow                   @force                    @force2                  
!  @forwardlist              @function                 @function2               
!  @function3                @function4                @gedit                   
!  @give                     @grep2                    @grep                    
!  @halt                     @haven                    @hide                    
!  @hook                     @hook2                    @idescribe               
   @idle                     @infilter                 @inprefix                
   @kick                     @lalias                   @leave                   
   @lemit                    @lfail                    @link                    
***************
*** 142,153 ****
   @listmotd                 @lock                     @lock2                   
   @lock3                    @lock4                    @lock5                   
   @lock6                    @lock7                    @lock8                   
-  @lock9                    @log                      @logwipe                 
  
  For more, see Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   @lset                     @map2                     @mail                    
   @malias                   @malias2                  @malias3                 
   @malias4                  @malias5                  @map                     
--- 143,154 ----
   @listmotd                 @lock                     @lock2                   
   @lock3                    @lock4                    @lock5                   
   @lock6                    @lock7                    @lock8                   
  
  For more, see Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  @lock9                    @log                      @logwipe                 
   @lset                     @map2                     @mail                    
   @malias                   @malias2                  @malias3                 
   @malias4                  @malias5                  @map                     
***************
*** 163,174 ****
   @otport                   @oufail                   @ounfollow               
   @ouse                     @oxenter                  @oxleave                 
   @oxmove                   @oxtport                  @ozenter                 
-  @ozleave                  @parent                   @password                
  
  For more, see Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   @payment                  @pcreate                  @pemit                   
   @pemit2                   @poll                     @poor                    
   @power                    @prefix                   @ps                      
--- 164,175 ----
   @otport                   @oufail                   @ounfollow               
   @ouse                     @oxenter                  @oxleave                 
   @oxmove                   @oxtport                  @ozenter                 
  
  For more, see Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  @ozleave                  @parent                   @password                
   @payment                  @pcreate                  @pemit                   
   @pemit2                   @poll                     @poor                    
   @power                    @prefix                   @ps                      
***************
*** 184,195 ****
   @sweep                    @switch                   @switch2                 
   @teleport                 @tport                    @trigger                 
   @trigger2                 @ufail                    @ulock                   
-  @undestroy                @unfollow                 @unlink                  
  
  For more, see Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   @unlock                   @unrecycle                @uptime                  
   @uptime2                  @use                      @uunlock                 
   @verb                     @verb2                    @verb3                   
--- 185,196 ----
   @sweep                    @switch                   @switch2                 
   @teleport                 @tport                    @trigger                 
   @trigger2                 @ufail                    @ulock                   
  
  For more, see Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  @undestroy                @unfollow                 @unlink                  
   @unlock                   @unrecycle                @uptime                  
   @uptime2                  @use                      @uunlock                 
   @verb                     @verb2                    @verb3                   
***************
*** 205,302 ****
   accent3                   accent4                   acos()                   
   action lists              action2                   add()                    
   after()                   ahelp                     alphamax()               
-  alphamin()                and()                     andflags()               
  
  For more, see Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   anews                     ansi                      ansi()                   
   aposs()                   art()                     asin()                   
!  atan()                    atrlock()                 attrcnt()                
!  attrib-ownership          attribute flags           attribute functions      
!  attribute list            attributes                attributes list          
!  attributes2               attributes3               attributes4              
!  audible                   audible2                  band()                   
!  beep()                    before()                  being killed             
!  bitwise functions         bnand()                   bnot()                   
!  boolean functions         boolean values            boolean2                 
!  boolean3                  bor()                     bound()                  
!  brackets()                brief                     builder                  
!  bxor()                    cand()                    capstr()                 
!  case()                    caseall()                 cat()                    
!  cd                        ceil()                    cemit()                  
!  center()                  cflags()                  ch                       
  
  For more, see Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  changes                   channel functions         channel-list             
!  channels()                chat                      checkpass()              
!  chown_ok                  chr()                     clients                  
!  clock()                   clone()                   cloudy                   
!  code                      color                     commands                 
!  communication functions   comp()                    comsys                   
!  con()                     config()                  conn()                   
!  connected                 control                   controls()               
!  convsecs()                convtime()                convutcsecs()            
!  copyright                 copyrite                  cor()                    
!  cos()                     costs                     create()                 
!  credits                   ctime()                   ctitle()                 
!  cv                        cwho()                    dark                     
!  dark2                     database                  dbref #                  
!  dbref functions           dbref number              dbref2                   
!  dbrefs                    debug                     debug2                   
  
  For more, see Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  dec()                     decrypt()                 default()                
!  delete()                  desert                    destroy_ok               
!  die()                     dig()                     dismiss                  
!  dist2d()                  dist3d()                  div()                    
!  doing                     doing()                   drop                     
!  drop-tos                  e()                       edefault()               
!  edit()                    element()                 elements()               
!  elist()                   elock()                   emit()                   
!  enactor                   encrypt()                 endtag()                 
!  enter                     enter_ok                  entrances()              
!  eq()                      escape()                  etimefmt()               
!  etimefmt2                 eval()                    evaluation order         
!  evaluation2               events                    examine                  
!  executor                  exit()                    exits                    
!  exits2                    exp()                     extract()                
!  failure                   fdiv()                    filter()                 
  
  For more, see Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  filterbool()              findable()                first()                  
!  fixed                     flag list                 flags                    
!  flags list                flags()                   flags2                   
!  flip()                    floating                  floating point functions 
!  floor()                   floordiv()                fmod()                   
!  fold()                    fold2                     folderstats()            
!  follow                    followers()               following()              
!  foreach()                 foreach2                  fullname()               
!  function list             functions                 functions()              
!  functions2                gagged                    gender                   
!  get                       get()                     get_eval()               
!  give                      global commands           globals                  
!  go                        going                     goto                     
!  grab()                    graball()                 grep()                   
!  grepi()                   gt()                      gte()                    
!  halt                      hasattr()                 hasattrp()               
  
  For more, see Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  hasattrpval()             hasattrval()              hasflag()                
!  haspower()                hastype()                 haven                    
   here                      hidden()                  home                     
   home()                    homes                     html                     
   html functions            html()                    i18n                     
--- 206,304 ----
   accent3                   accent4                   acos()                   
   action lists              action2                   add()                    
   after()                   ahelp                     alphamax()               
  
  For more, see Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  alphamin()                and()                     andflags()               
   anews                     ansi                      ansi()                   
   aposs()                   art()                     asin()                   
!  atan()                    atan2()                   atrlock()                
!  attrcnt()                 attrib-ownership          attribute flags          
!  attribute functions       attribute list            attributes               
!  attributes list           attributes2               attributes3              
!  attributes4               audible                   audible2                 
!  band()                    beep()                    before()                 
!  being killed              bitwise functions         bnand()                  
!  bnot()                    boolean functions         boolean values           
!  boolean2                  boolean3                  bor()                    
!  bound()                   brackets()                brief                    
!  builder                   bxor()                    cand()                   
!  capstr()                  case()                    caseall()                
!  cat()                     cd                        ceil()                   
  
  For more, see Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  cemit()                   center()                  cflags()                 
!  ch                        changes                   channel functions        
!  channel-list              channels()                chat                     
!  checkpass()               chown_ok                  chr()                    
!  clients                   clock()                   clone()                  
!  cloudy                    code                      color                    
!  commands                  communication functions   comp()                   
!  comsys                    con()                     config()                 
!  conn()                    connected                 control                  
!  controls()                convsecs()                convtime()               
!  convutcsecs()             copyright                 copyrite                 
!  cor()                     cos()                     costs                    
!  create()                  credits                   ctime()                  
!  ctitle()                  ctu()                     cv                       
!  cwho()                    dark                      dark2                    
!  database                  dbref #                   dbref functions          
  
  For more, see Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  dbref number              dbref2                    dbrefs                   
!  debug                     debug2                    dec()                    
!  decrypt()                 default()                 delete()                 
!  desert                    destroy_ok                die()                    
!  dig()                     dismiss                   dist2d()                 
!  dist3d()                  div()                     doing                    
!  doing()                   drop                      drop-tos                 
!  e()                       edefault()                edit()                   
!  element()                 elements()                elist()                  
!  elock()                   emit()                    enactor                  
!  encrypt()                 endtag()                  enter                    
!  enter_ok                  entrances()               eq()                     
!  escape()                  etimefmt()                etimefmt2                
!  eval()                    evaluation order          evaluation2              
!  events                    examine                   executor                 
!  exit()                    exits                     exits2                   
  
  For more, see Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  exp()                     extract()                 failure                  
!  fdiv()                    filter()                  filterbool()             
!  findable()                first()                   fixed                    
!  flag list                 flags                     flags list               
!  flags()                   flags2                    flip()                   
!  floating                  floating point functions  floor()                  
!  floordiv()                fmod()                    fold()                   
!  fold2                     folderstats()             follow                   
!  followers()               following()               foreach()                
!  foreach2                  fullname()                function list            
!  functions                 functions()               functions2               
!  gagged                    gender                    get                      
!  get()                     get_eval()                give                     
!  global commands           globals                   go                       
!  going                     goto                      grab()                   
!  graball()                 grep()                    grepi()                  
  
  For more, see Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  gt()                      gte()                     halt                     
!  hasattr()                 hasattrp()                hasattrpval()            
!  hasattrval()              hasflag()                 haspower()               
!  hastype()                 haven                     help                     
   here                      hidden()                  home                     
   home()                    homes                     html                     
   html functions            html()                    i18n                     
***************
*** 309,347 ****
   inventory                 isdaylight()              isdbref()                
   isint()                   isnum()                   isword()                 
   itemize()                 items()                   iter()                   
-  iter2                     itext()                   judge                    
-  jump_ok                   jury_ok                   kill                     
  
  For more, see Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  last                      last()                    lastip                   
!  lastlogout                lastsite                  lattr()                  
!  lcon()                    lcstr()                   ldelete()                
!  leave                     left()                    lemit()                  
!  lexits()                  license                   light                    
!  link()                    link_ok                   linking                  
!  list functions            list()                    listen_parent            
!  listening                 listening2                listening3               
!  lists                     lit()                     ljust()                  
!  lmath()                   ln()                      lnum()                   
!  loc()                     locale                    localize()               
!  locate()                  locate2                   lock list                
!  lock types                lock types2               lock()                   
!  locking                   locklist                  locks                    
!  locktypes                 locktypes2                log()                    
!  logout                    look                      look2                    
  
  For more, see Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  looping                   lparent()                 lplayers()               
!  lsearch()                 lsearch2                  lsearchr()               
!  lstats()                  lt()                      lte()                    
!  lvcon()                   lvexits()                 lvplayers()              
!  lwho()                    macros                    macros2                  
   mail functions            mail()                    mail-admin               
   mail-folders              mail-other                mail-reading             
   mail-sending              maildstats()              mailfrom()               
--- 311,349 ----
   inventory                 isdaylight()              isdbref()                
   isint()                   isnum()                   isword()                 
   itemize()                 items()                   iter()                   
  
  For more, see Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  iter2                     itext()                   judge                    
!  jump_ok                   jury_ok                   kill                     
!  last & lastlogout         last()                    lastip                   
!  lastsite                  lattr()                   lcon()                   
!  lcstr()                   ldelete()                 leave                    
!  left()                    lemit()                   lexits()                 
!  license                   light                     link()                   
!  link_ok                   linking                   list functions           
!  list()                    listen_parent             listening                
!  listening2                listening3                lists                    
!  lit()                     ljust()                   lmath()                  
!  ln()                      lnum()                    loc()                    
!  locale                    localize()                locate()                 
!  locate2                   lock list                 lock types               
!  lock types2               lock()                    locking                  
!  locklist                  locks                     locktypes                
  
  For more, see Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  locktypes2                log()                     logout                   
!  look                      look2                     looping                  
!  lparent()                 lplayers()                lsearch()                
!  lsearch2                  lsearchr()                lstats()                 
!  lt()                      lte()                     lvcon()                  
!  lvexits()                 lvplayers()               lwho()                   
!  macros                    macros2                   mail                     
   mail functions            mail()                    mail-admin               
   mail-folders              mail-other                mail-reading             
   mail-sending              maildstats()              mailfrom()               
***************
*** 351,363 ****
   matching                  math functions            max()                    
   me                        mean()                    median()                 
   member()                  merge()                   mid()                    
-  min()                     mix()                     mix2                     
-  mod()                     modulo()                  modulus()                
  
  For more, see Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   money                     money()                   monitor                  
   mortal                    move                      mtime()                  
   mudname()                 mul()                     munge()                  
--- 353,365 ----
   matching                  math functions            max()                    
   me                        mean()                    median()                 
   member()                  merge()                   mid()                    
  
  For more, see Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  min()                     mix()                     mix2                     
+  mod()                     modulo()                  modulus()                
   money                     money()                   monitor                  
   mortal                    move                      mtime()                  
   mudname()                 mul()                     munge()                  
***************
*** 372,384 ****
   nor()                     nospoof                   not()                    
   nowarn                    nspemit()                 null()                   
   num()                     obj()                     object parents           
-  objeval()                 objmem()                  oemit()                  
-  on-vacation               opaque                    open()                   
  
  For more, see Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   or()                      ord()                     orflags()                
   owner()                   page                      page2                    
   paranoid                  parent                    parent()                 
--- 374,386 ----
   nor()                     nospoof                   not()                    
   nowarn                    nspemit()                 null()                   
   num()                     obj()                     object parents           
  
  For more, see Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  objeval()                 objmem()                  oemit()                  
+  on-vacation               opaque                    open()                   
   or()                      ord()                     orflags()                
   owner()                   page                      page2                    
   paranoid                  parent                    parent()                 
***************
*** 393,405 ****
   pueblo                    pueblo features           pueblo()                 
   puppet                    puppets                   puppets2                 
   queue                     quiet                     quit                     
-  quota()                   r()                       r-function               
-  rand()                    read                      regedit()                
  
  For more, see Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   regeditall()              regeditalli()             regediti()               
   regexp                    regexp classes            regexp classes2          
   regexp examples           regexp syntax             regexp syntax2           
--- 395,407 ----
   pueblo                    pueblo features           pueblo()                 
   puppet                    puppets                   puppets2                 
   queue                     quiet                     quit                     
  
  For more, see Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  quota()                   r()                       r-function               
+  rand()                    read                      regedit()                
   regeditall()              regeditalli()             regediti()               
   regexp                    regexp classes            regexp classes2          
   regexp examples           regexp syntax             regexp syntax2           
***************
*** 414,426 ****
   restarts()                restarttime()             restrict                 
   restrict2                 restrict3                 reverse()                
   revwords()                right()                   rjust()                  
-  rloc()                    rnum()                    room                     
-  room()                    round()                   royalty                  
  
  For more, see Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   rquota                    rules                     s()                      
   s-function                safe                      say                      
   score                     scramble()                search()                 
--- 416,428 ----
   restarts()                restarttime()             restrict                 
   restrict2                 restrict3                 reverse()                
   revwords()                right()                   rjust()                  
  
  For more, see Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+  rloc()                    rnum()                    room                     
+  room()                    round()                   royalty                  
   rquota                    rules                     s()                      
   s-function                safe                      say                      
   score                     scramble()                search()                 
***************
*** 431,501 ****
   setdiff()                 setinter()                setq()                   
   setq2                     setq3                     setr()                   
   setting-attributes        setunion()                sex                      
!  shared                    shared players            shared players2          
!  shl()                     shr()                     shuffle()                
!  sign()                    sin()                     slay                     
!  softcode                  sort()                    sortby()                 
!  soundex()                 soundex2                  soundlike()              
!  soundslike()              space()                   spellnum()               
  
  For more, see Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  splice()                  spoofing                  sqrt()                   
!  squish()                  stack                     starttime()              
!  stats()                   stddev()                  step2                    
!  step()                    sticky                    strcat()                 
!  string functions          strings                   strinsert()              
!  stripaccents()            stripansi()               strlen()                 
!  strmatch()                sub()                     subj()                   
!  substitutions             substitutions2            substitutions3           
!  substitutions4            success                   suspect                  
!  switch wildcards          switch()                  switch2                  
!  switchall()               switches                  t()                      
!  table()                   tag()                     tagwrap()                
!  take                      tan()                     teach                    
!  tel()                     tel_ok                    temple                   
!  terse                     textfile()                think                    
!  time functions            time()                    timefmt()                
  
  For more, see Entries-23
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-23
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  timefmt2                  timestring()              topics                   
!  topics2                   translation               transparent              
!  transparent2              trim()                    trunc()                  
!  trust                     trust2                    type()                   
!  types of objects          types2                    u()                      
!  u2                        u3                        ucstr()                  
!  udefault()                ufun()                    ufun2                    
!  ufun3                     uldefault()               ulocal()                 
!  ulocal2                   unfindable                unfollow                 
!  uninspected               unregistered              use                      
!  user-defined commands     user-defined2             utctime()                
!  utility functions         v()                       v-function               
!  vadd()                    val()                     valid()                  
!  vdim()                    vdot()                    verbose                  
!  verbs                     version()                 visible()                
!  visual                    vmag()                    vmax()                   
  
  For more, see Entries-24
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-24
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  vmin()                    vmul()                    vrml                     
!  vsub()                    vunit()                   warnings                 
!  warnings list             warnings list2            where()                  
!  whisper                   whisper2                  who                      
!  wildcards                 wipe()                    with                     
!  wizard                    wordpos()                 words()                  
!  wrap()                    xget()                    xor()                    
!  z_tel                     zemit()                   zfun()                   
!  zmo                       zmp                       zmr                      
!  zone                      zone master objects       zone master rooms        
!  zone masters              zone objects              zone()                   
!  zones                     zones2                                             
  
  & &Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--- 433,503 ----
   setdiff()                 setinter()                setq()                   
   setq2                     setq3                     setr()                   
   setting-attributes        setunion()                sex                      
!  sha1()                    shared                    shared players           
!  shared players2           shl()                     shr()                    
!  shuffle()                 sign()                    sin()                    
!  slay                      softcode                  sort()                   
  
  For more, see Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  sortby()                  soundex()                 soundex2                 
!  soundlike()               soundslike()              space()                  
!  spellnum()                splice()                  spoofing                 
!  sqrt()                    squish()                  stack                    
!  starttime()               stats()                   stddev()                 
!  step2                     step()                    sticky                   
!  strcat()                  string functions          strings                  
!  strinsert()               stripaccents()            stripansi()              
!  strlen()                  strmatch()                sub()                    
!  subj()                    substitutions             substitutions2           
!  substitutions3            substitutions4            success                  
!  suspect                   switch wildcards          switch()                 
!  switch2                   switchall()               switches                 
!  t()                       table()                   tag()                    
!  tagwrap()                 take                      tan()                    
!  teach                     tel()                     tel_ok                   
  
  For more, see Entries-23
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-23
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  temple                    terse                     textfile()               
!  think                     time functions            time()                   
!  timefmt()                 timefmt2                  timestring()             
!  topics                    topics2                   translation              
!  transparent               transparent2              trim()                   
!  trunc()                   trust                     trust2                   
!  type()                    types of objects          types2                   
!  u()                       u2                        u3                       
!  ucstr()                   udefault()                ufun()                   
!  ufun2                     ufun3                     uldefault()              
!  ulocal()                  ulocal2                   unfindable               
!  unfollow                  uninspected               unregistered             
!  use                       user-defined commands     user-defined2            
!  utctime()                 utility functions         v()                      
!  v-function                vadd()                    val()                    
!  valid()                   vdim()                    vdot()                   
  
  For more, see Entries-24
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-24
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  verbose                   verbs                     version()                
!  visible()                 visual                    vmag()                   
!  vmax()                    vmin()                    vmul()                   
!  vrml                      vsub()                    vunit()                  
!  warnings                  warnings list             warnings list2           
!  where()                   whisper                   whisper2                 
!  who                       wildcards                 wipe()                   
!  with                      wizard                    wordpos()                
!  words()                   wrap()                    xget()                   
!  xor()                     z_tel                     zemit()                  
!  zfun()                    zmo                       zmp                      
!  zmr                       zone                      zone master objects      
!  zone master rooms         zone masters              zone objects             
!  zone()                    zones