home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.pdx.edu / 2014.02.ftp.ee.pdx.edu.tar / ftp.ee.pdx.edu / pub / people / eric / help.txt < prev    next >
Text File  |  1994-10-16  |  170KB  |  3,991 lines

  1. & help
  2.   This is the MUSH online help facility.
  3.  
  4.   Notes on help descriptions: 
  5.     [text] - Text enclosed in []'s is optional.  The []'s are never typed
  6.                  in as part of the command.
  7.       <parameter> - Information parameter for a command.  The <>'s are
  8.                       never typed in as part of the command.
  9.  
  10.   Syntax of help command:
  11.     help [<command>]
  12.  
  13.   To get a list of MUSH topics:
  14.      help topics
  15.  
  16.   To get a list of MUSH Commands:
  17.      help commands
  18.  
  19.   To get a list of NEVERENDING MUSH (Only) Commands:
  20.      +help
  21.  
  22.   If there are any errors in the help text, please notify a wizard
  23.   in the game, or send mail to lwl@eniac.seas.upenn.edu
  24.  
  25.   All commands listed in this file might not apply to all mushes running
  26.   this code.  This is because some of the commands/effects can be enabled or
  27.   disabled by the site admin of your MUSH.  If a command is not available
  28.   AND it is documented, ask your site admin why it isn't enabled.
  29.   You may use the "@config" command to see the MUSH configuration.
  30.  
  31. & COMMANDS
  32.   Help is available for the following MUSH Commands:
  33.  
  34.   brief          DOING          drop           examine        enter          
  35.   events         get            give           goto           kill           
  36.   leave          LOGOUT         look           move           news           
  37.   page           pose           QUIT           read           rpage         
  38.   RWHO           say            score          slay           take          
  39.   think          use            whisper        WHO           
  40.   "              :              ;              &              +
  41.  
  42.   In addition to these, there are '@' commands.  @-commands usually are
  43.   commands which can modify and affect the database in substantial ways.
  44.   There are several types of '@' commands. The following help entries
  45.   list available '@' commands:
  46.  
  47.   @-ATTRIBUTES   @-BUILDING     @-GENERAL      @-WIZARD
  48.  
  49. & @-ATTRIBUTES
  50.   '@' commands which are attribute-related set game-defined attributes.
  51.   
  52.   These are:
  53.   @aahear        @aclone        @aconnect      @adeath        @adescribe     
  54.   @adisconnect   @aefail        @aenter        @afailure      @ahear         
  55.   @aleave        @amhear        @amove         @apayment      @asuccess      
  56.   @atport        @ause          @away          @charges       @cost          
  57.   @death         @describe      @drop          @ealias        @efail         
  58.   @enter         @failure       @filter        @haven         @idescribe     
  59.   @idle          @infilter      @inprefix      @lalias        @leave         
  60.   @listen        @move          @odeath        @odescribe     @odrop         
  61.   @oefail        @oenter        @ofailure      @oleave        @omove         
  62.   @opayment      @osuccess      @otport        @ouse          @oxenter       
  63.   @oxleave       @oxtport       @payment       @prefix        @runout        
  64.   @sex           @startup       @success       @tport          @use
  65.   
  66. & @-BUILDING
  67.   These '@' commands are building related (they modify the database):
  68.  
  69.   @atrlock       @atrchown      @chown         @chzone        @clone         
  70.   @cpattr        @create        @destroy       @dig           @elock         
  71.   @eunlock       @link          @lock          @name          @nuke          
  72.   @open          @parent        @set           @ulock         @unlink        
  73.   @unlock        @uunlock       @wipe
  74.   
  75. & @-GENERAL
  76.   These '@' commands are general utilities and programming commands:
  77.  
  78.   @@             @channel       @chat          @config        @decompile     
  79.   @doing         @dolist        @drain         @edit          @emit          
  80.   @entrances     @find          @force         @gedit         @grep
  81.   @halt          @lemit         @listmotd      @mail          @map           
  82.   @notify        @oemit         @password      @pemit         @ps            
  83.   @redirection   @remit         @rwall         @rwallemit     @rwallpose
  84.   @scan          @search        @select        @stats         @sweep
  85.   @switch        @teleport      @trigger       @verb          @version
  86.   @wait          @whereis       @zemit
  87.  
  88. & @-WIZARD
  89.   These '@' commands are only usable by wizards:
  90.  
  91.   @allhalt       @allquota      @boot          @chownall      @chzoneall
  92.   @comment       @dbck          @disable       @dump          @enable
  93.   @fixdb         @kick          @motd          @newpassword   @pcreate       
  94.   @poll          @poor          @purge         @quota         @rejectmotd    
  95.   @shutdown      @squota        @toad          @uptime        @wall          
  96.   @wallemit      @wallpose      @wizemit       @wizmotd       @wizpose       
  97.   @wizwall
  98.  
  99. & topics
  100.   Help available on the following Topics:
  101.  
  102.   ATTRIB-OWNERSHIP         ATTRIBUTES               BEING KILLED
  103.   BOGUS COMMANDS           BOOLEAN VALUES           CHAT
  104.   CONTROL                  DROP-TO                  ENACTOR                  
  105.   EVALUATION           EXITS                    FAILURE            
  106.   FLAGS                    FUNCTIONS            GENDER            
  107.   HERE                     HOMES                    LINKING                  
  108.   LISTENING                LISTS                    LOOPING                  
  109.   MASTER ROOM              NON-STANDARD ATTRIBUTES  OBJECT PARENTS
  110.   PARENT ROOMS             PUPPETS                  ROBBERY                  
  111.   SACRIFICING              SEMAPHORES               SPOOFING                 
  112.   STACK                    SUBSTITUTIONS            SUCCESS                  
  113.   SWITCHES                 TYPES OF OBJECTS         VERBS                    
  114.   ZONES
  115.  
  116. & SEMAPHORES
  117.   SEMAPHORES
  118.   
  119.   Semaphores may be used for synchronizing complex objects or for enforcing
  120.   mutual exclusion. Any object, of any type, that you control or that is 
  121.   LINK_OK can be used as a semaphore.
  122.   
  123.   The semaphore state of an object is shown by the SEMAPHORE attribute,
  124.   which cannot be manually changed by mortals. A positive number indicates
  125.   that there are that many commands awaiting "notifies" on the semaphore
  126.   object; a negative number indicates that many waits on that semaphore
  127.   will not block.
  128.   
  129.   The @wait command is used to queue commands on a semaphore, delaying
  130.   them until the semaphore is notified with the "@notify" command.
  131.   The @drain command and "@notify/all" clear the semaphore on the object,
  132.   discarding and executing immediately all pending commands, respectively.
  133.   The object which is doing the @wait executes the commands, NOT the 
  134.   semaphore.
  135.   
  136.   (See 'help semaphores2' for more)
  137.   
  138. & SEMAPHORES2
  139.   You can also specify a timeout value for a semaphore wait with
  140.   @wait <object>/<timeout> = <command>  (instead of the normal form
  141.   of the semaphore wait command: @wait <object> = <command> )
  142.   If the time period expires before the semaphore is notified, then
  143.   the command is executed and the semaphore count decremented, just
  144.   as if the command had been run because the semaphore was notified.
  145.   
  146.   Examples:
  147.   
  148.   > @wait semaphore=:tests.
  149.   > @notify semaphore
  150.   Wizard tests.
  151.   
  152.   > @wait timer/30=:waits 30 seconds.
  153.   [ 30 seconds passes. ]
  154.   Wizard waits 30 seconds.
  155.   
  156.   See also the help for: @wait, @drain, @notify
  157. & SWITCHES
  158.   SWITCHES
  159.  
  160.   Commands can have "switches" which modify the behavior of the
  161.   command. Switches are attached after the end of a command.
  162.   Most switches have a single-command short form; command switches
  163.   are provided in this code to increase compatiblity with TinyMUSH 2.0,
  164.   as well as to reduce the number of commadns that players need to
  165.   remember.
  166.  
  167.   A slash ('/') is used to separate the command and switch. For
  168.   example, the switch-equivalent of the "@nuke" command is
  169.   "@destroy/override".  In some places, the word which is usually the
  170.   command argument can be used as a switch - i.e. "@sweep/connected"
  171.   instead of "@sweep connected".  You do not have to type the full
  172.   name of the switch.
  173.  
  174. & CONTROL
  175.   CONTROL
  176.   <Object> controls <thing> if:
  177.   1. <Object> is a wizard.
  178.   2. <Object> owns <thing>, and <Object> is a player.
  179.   3. <Object> has the same owner as <thing>, and <object> is INHERIT.  
  180.   4. <Object> has the same owner as <thing>, and the owner is INHERIT.
  181.   5. <Object> is in the same zone as <thing>, and <object> passes the
  182.     Enter lock of the zone object. Also, <thing> cannot be INHERIT,
  183.         nor can it be a player.
  184. & ZONES
  185.   ZONES
  186.   Zones are areas of the MUSH which may be controlled by many people.
  187.   Essentially, they allow group ownership of objects.
  188.   The default zone is NOTHING. Any building done by a player defaults 
  189.   to belonging to the same zone that the player belongs to.
  190.   Every zone is defined by a Zone Master Object (ZMO). The ZMO is an
  191.   ordinary MUSH object owned by some player. A wizard may change the
  192.   zone of an object or player to a ZMO.
  193.   If the ZMO is a room, it is called a "Parent room." Most of the
  194.   statements about ZMOs also apply to parent rooms; for details,
  195.   see "help PARENT ROOMS".
  196.   Anyone who can pass the Enter lock of the ZMO has control over all
  197.   objects in that zone. This, in essence, gives that player wizard
  198.   powers within that zone. For this reason, one must be extremely
  199.   careful with the enter locks of ZMOs!
  200.   Also, $commands on a ZMO are treated as global within that zone.
  201.   The game attempts to match $commands for the ZMO of the player's
  202.   location, as well as $commands for the player's own zone.
  203.   For some suggestions on how to use zones, see "help zones2".
  204. & ZONES2
  205.   Some suggested uses of zones:
  206.     1. If you are working on a building project with several people, it
  207.        may be useful to create a zone object and @elock it to all of you,
  208.        and ask a wizard to @chzone the players involved to the zone object.
  209.        That way, all of the players working on the project will be able to
  210.        modify the building.
  211.     2. On a similar thread, if several players are working on a project
  212.        involving only a few objects, it may be simpler to create a zone
  213.        object and @chzone those few objects to the ZMO instead of resetting
  214.        the zones of the players. Note that a player does not have to belong
  215.        to a zone in order to change objects in that zone; all is merely
  216.        required to pass the ZMO's enter lock.
  217.     3. If local wizards are desired, a zone object may be created and enter
  218.        locked to the local wizard. Players building within that zone should
  219.        be @chzone'd to that ZMO. The local wizard will then be able to
  220.        control anything within that domain.
  221.     4. If you want restricted global commands defined over only a small area,
  222.        you can define that area to be part of a zone, and place the desired
  223.        $commands upon the ZMO.
  224. & PARENT ROOMS
  225.   Parent rooms are a subset of zones. If a room is used as as zone oject,
  226.   it is a parent room (PR). PRs are like local "master" rooms. Exits in
  227.   the PR are global to that zone, and $commands on objects in the PR are
  228.   global to that zone. Parent rooms are only defined if globals are used.
  229.   Parent rooms should only be used for very large zones which have a lot
  230.   of global exits. Otherwise, a ZMO thing should be used, because command
  231.   evaluation on a parent room is slower than command evaluation on a ZMO.
  232.   Large numbers of parent rooms may slow down the game significantly.
  233.   See "help ZONES" and "help EVALUATION" for more information.
  234. & MASTER ROOM
  235.   MASTER ROOM
  236.   The Master Room enables global commands and exits. Exits in the Master
  237.   Room may be used from any location on the MUSH. All objects left in the
  238.   Master Room are checked for user-defined $commands. Those $commands are
  239.   considered global. Normally, only wizards will have access to the Master
  240.   Room. See "help EVALUATION" for details on global commands.
  241. & EVALUATION
  242.   EVALUATION ORDER
  243.   Commands are mated in the following order:
  244.   Special game commands: WHO, QUIT, etc.
  245.   "home" command
  246.   Single-token commands: ", :, ;, +
  247.   Exits in the room
  248.   @-commands
  249.   Regular game commands: get, inventory, etc.
  250.   Enter aliases
  251.   Leave aliases
  252.   User-defined commands on nearby objects. All such $commands are matched
  253.     and executed.
  254.   If there are no user-defined commands nearby:
  255.     If the zone of the player's location is a parent room,
  256.     Parent room exits
  257.     Parent room user-defined commands
  258.     Else
  259.     User-defined commands on the zone of the player's location
  260.   If still nothing is matched:
  261.      User-defined commands on the player's personal zone
  262.   If nothing, including zone commands, has been matched:
  263.      Global exits
  264.      Global user-defined commands: all $commands in the Master Room are
  265.     matched. Local commands are always checked first and ALWAYS negate
  266.     global commands.
  267.  
  268.    IMPORTANT: This order is altered a bit when an object is redirecting.
  269.     (See @redirection for further details).
  270.  
  271. & OBJECT PARENTS
  272.   
  273.   Objects may have "parent" objects, from which they can inherit attributes.
  274.   Once an object is given a parent, it may use the attributes on the parent
  275.   just as if the attributes were on the object itself, including checking for
  276.   $commands. Use the @parent command to change the parent of an object.
  277.   See 'help @parent' for details.
  278.   
  279.   For the purposes of automated game checks, the following attributes are
  280.   not inherited: CHARGES, EALIAS, LALIAS, LAST, LASTSITE, LISTEN, QUEUE,
  281.   RQUOTA, SEMAPHORE, and STARTUP. These may be "inherited" via the use of
  282.   functions like get(), but the game does not check inheritance for startup
  283.   triggering, enter/leave aliases, runout checking, etc.  Players cannot
  284.   be @parented, but the parent of an object can be set to a player.
  285.     
  286.   Objects may have multiple levels of parents - thus, if #100 is the
  287.   parent of #101, which is the parent of #102, object #102 checks itself,
  288.   #101, and #100 for attributes. Attributes are checked on the object
  289.   itself first, followed by its parent, followed by that parent's parent,
  290.   and so forth. There is a (configurable) maximum number of ancestors
  291.   an object may have; the default is 10.
  292.    
  293.   See 'help PARENTS2' for more.
  294.   
  295. & PARENTS2
  296.  
  297.   Note that the only properties inherited are attributes. In particular,
  298.   flags and exits are NOT inherited from the parent object. Also, commands
  299.   which walk the attribute list, such as "examine", the LATTR() function,
  300.   @set, and @edit, only affect attributes that are on the object itself.
  301.  
  302.   There are some limitations to the use of @parent. The most important is
  303.   that ^-pattern checking is not done on the parent of an object, regardless
  304.   of what is on the child object.
  305.  
  306.   The attributes inherited from the parent are treated just like its
  307.   own attributes by the child. Thus, when a $-command or @trigger is
  308.   executed, "me", for example, refers to the child, not the parent,
  309.   and the $-command's associated actions are performed by the child.
  310.   Also, the uselock check is done on the child, not on the parent.
  311.  
  312.   Attributes with $-commands _are_ inherited from the parent and
  313.   previous generations. Conflicts are resolved not by the $-command 
  314.   name, but by the attribute name.
  315.  
  316.   See 'help PARENTS3' for more.
  317.  
  318. & PARENTS3
  319.  
  320.   If two attributes are in "conflict", the child's attribute is
  321.   used. Thus, if you have @va #10=$test:@emit I'm the child.
  322.   and @va #11=$moof:@emit I'm the parent., and @parent #10=#11,
  323.   and you type "moof", the parent's command will NOT be matched, 
  324.   because the child's VA is being used. This is true even if
  325.   the child's VA contains no $-command.
  326.  
  327.   If instead, you have @va #11=$test:@emit I'm the parent., and
  328.   you type "test", you will get #10 emitting "I'm the child."
  329.   The command does not get double-matched (presuming, of course,
  330.   that the parent doesn't get triggered normally by being in the
  331.   same room with the person who typed "test").
  332.     
  333.   Since $-command checking only goes one level back, if you had
  334.   a @parent #11=#12, any $-commands on #12 would simply be ignored,
  335.   regardless of what those $-commands were.
  336.   
  337.   See 'help PARENTS4' for more.
  338.  
  339. & PARENTS4
  340.  
  341.   @parent is most useful when several objects use common attributes.
  342.   It is slightly faster to have $commands on the child object which
  343.   in turn @trigger or otherwise retrieve attributes inherited from
  344.   the parent object, rather than having the $commands checked on the
  345.   parent object.
  346.  
  347.   Parent-object $-command checking is at its most efficient when there
  348.   are few or no attributes on the child. Also, each additional level
  349.   of parents further reduces efficiency.
  350.  
  351.   If you are "mass-marketing" your objects, you can create blank copies, 
  352.   and @parent those copies to a template object. You can then customize 
  353.   necessary attributes on the copy. When a buyer @chowns his copy, the 
  354.   parent does not change, so unless you're putting data into the parent 
  355.   that you want to make impossible to read, it's safe to allow the
  356.   purchasers of your object to @chown their copy.
  357.  
  358. & LASTSITE
  359.   LASTSITE
  360.   This attribute gives the name of the site you last connected from.
  361.   Mortals cannot set it.
  362. & @mail
  363.   @mail[/<switches>] [<player>, <msg #>, <command> [= <msg>, <msg #>]]
  364.  
  365.   @mail invokes the built-in MUSH mailer, which allows players to send
  366.   and receive mail. Pronoun/function substitution is performed on
  367.   any messages you may try to send.  
  368.    
  369.   @mail by itself will give you a brief list of all your mail with the user
  370.         name, time the mail was sent, and will mark all NEW mail with a * in
  371.         front of the message.  All the numbers listed here are the ones used
  372.         when you see <msg #>.
  373.   
  374.   @mail <player> = <msg>
  375.         This sends the message <msg> to <player>.  All function subsitutes
  376.         are valid in <msg> including mail(#) which will allow you to forward
  377.         mail you have recieved to other users.
  378.  
  379.   @mail <msg #> 
  380.         This displays the message from your mailbox that has the number 
  381.         <msg #>...
  382.   
  383.   Type 'help @mail2' to continue:
  384. & @mail2
  385.   
  386.   @mail <msg #> = <msg>
  387.         This sends <msg> to the user that sent you the message in your 
  388.         mailbox that has the number <msg #>.  (Essentially a 'reply', but 
  389.         no special effects, just sends <msg> normally)
  390.   
  391.   @mail clear
  392.         This clears ALL mail from your mailbox, unread or not.
  393.   
  394.   @mail clear = <msg #>
  395.         This clears only the message <msg #> and renumbers any messages
  396.         recieved after <msg #>.
  397.   
  398.   Type 'help @mail3' to continue:
  399. & @mail3
  400.   
  401.   The @mail command can also take the following switches:
  402.   
  403.     @mail/stats [<player>]    --  Basic mail statistics.
  404.     @mail/dstats [<player>]   --  Also provides read/unread count.
  405.     @mail/fstats [<player>]   --  Does all that, plus gives space usage.
  406.   
  407.     @mail/debug <action>[=<player>]
  408.   
  409.   Only wizards may stats players other than themselves. The mail statistics
  410.   commands are computationally expensive, and thus are subject to "daytime"
  411.   restrictions. They also cost the same as a @find (100 pennies).
  412.   
  413.   The /debug switch does sanity checking on the mail database, and may only
  414.   be used by a wizard. "@mail/debug sanity" just does the check; the command
  415.   "@mail/debug clear=<player name or dbref number>" wipes mail for an object.
  416.   
  417. & @config
  418.   @config/[<switch>]
  419.   
  420.   This command lists the MUSH configuration parameters, indicating what
  421.   special things are enabled, and the cost of certain commands. If
  422.   something doesn't work the way you expected it to, it might be wise to
  423.   use this command and check the configuration paramters.
  424.   
  425.   This command takes one of three switches:
  426.   
  427.   /defaults   --   Lists parameters set at compile time or startup time,
  428.                    such as quota restrictions.
  429.   /costs      --   Lists costs for various commands.
  430.   /globals    --   Lists runtime parameters, such as logging and "daytime".
  431.   
  432. & @map
  433.   @map <list> = <function or pattern>
  434.  
  435.   This command takes a space-separated list of words, and performs
  436.   pronoun/pattern substitution on each word, returning a list - 
  437.   "mapping" the function onto each item in the list. It returns the
  438.   list in a MAPLIST attribute, automatically set on the object executing
  439.   the @map. The set it always performed before any actions further
  440.   actions are executed.
  441.   
  442.   Brackets are generally necessary in order to make the function
  443.   substitutions evaluate correctly.
  444.   
  445.   See "help @map-2" for examples of @map.
  446.  
  447. & @map-2
  448.  
  449.   Examples of @map:
  450.     @map foobar baz blech=[strlen(##)]
  451.       Returns "6 3 5" in MAPLIST.
  452.     @map testing map-test=[strlen(before(##, est)]
  453.       Returns "1 5" in MAPLIST
  454.     @map Joe Bob Ann=I know ##.
  455.       Returns "I know Joe. I know Bob. I know Ann." in MAPLIST
  456.  
  457.   >  @va Object=$test * * *:@map %0 %1 %2=[strlen(##)];
  458.            @dolist [v(maplist)] = say ##
  459.   Object - Set.
  460.   >  test aaa bb c
  461.   Object says, "3"
  462.   Object says, "2"
  463.   Object says, "1"
  464.    
  465. & @dolist
  466.   @dolist <list> = <action>
  467.   
  468.   @dolist executes the <action> for each element in <list>. If <list> is a
  469.   function, it will be evaluated to obtain the necessary list to use. It
  470.   may be any space-separated list of strings, which can be object numbers,
  471.   attributes, or arbitary words.
  472.   
  473.   <action> is a command or list of commands enclosed in braces { }
  474.   and is performed once for every item in <list>. The special symbol "##"
  475.   is replaced by the corresponding item from <list>.
  476.   
  477.   Example: @dolist [lcon(here)] = "[name(##)]
  478.     would cause you to say the name of all objects in the room.
  479.   
  480. & @fixdb
  481.   @fixdb/<switch> <object>=<value>
  482.   
  483.   This directly sets a field in <object> to <value>.  <value> must be
  484.   an integer.  Note that NO ERROR CHECKING is performed, so if you mess
  485.   up the setting of <value>, you may very well crash or hang the server
  486.   with your database corruption. This command is restricted to wizards
  487.   only and should NEVER be used unless you know PRECISELY what you are
  488.   doing.
  489.   
  490.   - Switch -     - Players/things -       - Rooms -        - Exits -
  491.   location       container object         drop-to          destination
  492.   contents       first object carried     first object     nothing
  493.   exits          home                     first exit       source
  494.   next           pointer to next in contents/exits chain
  495.   
  496. & @kick
  497.   @kick <number>
  498.   
  499.   This wizard-only command forces the immediate execution of <number>
  500.   items from the queue.
  501. & @ealias
  502.   @ealias <object> = <enter alias>
  503.   This allows a player to type the enter alias instead of "enter <object>"
  504.   If you have a chair, you coud "@ealias chair = sit down" and then just
  505.   type "sit down" instead of "enter chair" - using the object name is
  506.   not necessary. Note that the enter alias is checked after normal exits.
  507.   Like an exit, it may have a semi-colon separated list of words,
  508.   i.e. sit down;sit;sit on chair
  509. & @lalias
  510.   @lalias <object> = <leave alias>
  511.   This allows a player to type the leave alias instead of the "leave"
  512.   command, in a fashion similar to enter aliases (see @ealias for details).
  513.   The leave alias may be a semi-colon separated list of words, such as
  514.   stand up;stand;get up
  515. & @comment
  516.   @comment <object> = <comment>
  517.   This is a wizard-only command which sets a COMMENT attribute on
  518.   <object>. The comment can only be seen by other wizards and royalty.
  519. & @away
  520.   @away <player> = <message>
  521.   This message is sent to a player who tries to page you when you are
  522.   not connected.
  523. & @haven
  524.   @haven <player> = <message>
  525.   This message is sent to a player whose pages you are refusing, either
  526.   through use of the HAVEN flag or through the use of a page lock.
  527. & @idle
  528.   @idle <player> = <message>
  529.   This message is sent in return to every page which successfully reaches
  530.   you. It is useful if you are idle for long periods of time and wish to
  531.   inform people where you are, or if you are in a meeting and cannot
  532.   quickly return pages.
  533. & @ulock
  534.   @ulock <object> = <key>
  535.   This type of lock is a use-lock for objects, and a page-lock for players.
  536.   On an object, this restricts who may trigger the "@use" set of registers,
  537.   and who may use the $commands on the objects. If the person who is trying 
  538.   to use the object or its special commands, cannot pass the lock, he is 
  539.   told, "Permission denied."  On a player, it restricts who is allowed to 
  540.   page that person. If the paging person cannot pass the lock, the target 
  541.   player is treated as if he were set HAVEN. Indirect locks and other
  542.   special locking styles are supported; see "help @lock" for details.
  543.   Example: if I want everyone but Bob to be able to page me, I would
  544.   "@ulock me=!*Bob". If I want only Bob to be able to page me, I would
  545.   "@ulock me=*Bob".
  546. & @uunlock
  547.   @uunlock <object> = <key>
  548.   Page-unlocks a player or use-unlocks a thing. Someone who is page-unlocked
  549.   may be paged by anyone; an object which is use-unlocked may be used by
  550.   anyone. See "help @ulock" for more.
  551. & @efail
  552.   @efail <object> = <message>
  553.   This is the message shown to the player who fails to enter the object.
  554. & @oefail
  555.   @oefail <object> = <message>
  556.   This message is shown to the location of a player who fails to enter
  557.   the object.
  558. & @aefail
  559.   @aefail <object> = <action>
  560.   This is the action taken by the object when a player fails to enter it.
  561. & @elock
  562.   @elock <object> = <key>
  563.   Enter-locks an object, restricting who is allowed to enter it. Special
  564.   lock types are supported (see "help @lock" for details). Only objects
  565.   which are ENTER_OK may be entered, regardless of the key.
  566.  
  567.   The enter lock of a room is its Teleport Lock. Only people who pass
  568.   the room's teleport lock, are wizards or royalty, or control the room,
  569.   will be allowed to @teleport into the room. (Note that this is different
  570.   from NO_TEL, which prevents people from teleporting out of a room).
  571.   The teleport lock is evaluated even if the room is JUMP_OK - in other 
  572.   words, if you are trying to teleport into a room you don't control, the 
  573.   room must be JUMP_OK, and you must pass the teleport lock.
  574.  
  575.   Note that the enter lock of an object or room being used as a Zone
  576.   Master Object determines control of that zone. Please note that if
  577.   you're using a room as a ZMO (i.e. as a parent room), only the
  578.   controllers of that zone will be able to teleport into that room
  579.   (which is a good thing for security).
  580.   
  581. & @eunlock
  582.   @eunlock <object>
  583.   Enter-unlocks an object, in a fashion similar to @unlock. For anyone
  584.   to be able to enter an object, it must be both @eunlocked and ENTER_OK.
  585. & @nuke
  586.   @nuke <object>
  587.   Destroys an object, overriding the SAFE flag. Aside from this
  588.   feature, it is identical to @destroy. This command is equivalent
  589.   to @destroy/override.
  590. & drop 
  591.   drop <object>. Drops <object>. Dropping a thing in the temple
  592.   sacrifices it (See SACRIFICING). Otherwise, a dropped thing is 
  593.   relocated to the current room, unless its STICKY flag is set 
  594.   (See STICKY), or the room  has a drop-to (See DROP-TOs). Unlinked 
  595.   exits can only be dropped in rooms you  control. 
  596.   
  597. & examine
  598.   examine[/<switch>] <object>[/<attribute>] 
  599.   
  600.   Displays all available information about <object>.  <object> may be an 
  601.   object, 'me' or 'here'. You must control the object to examine it.  If 
  602.   you do not own the object, or it is not visible, you will just see the 
  603.   name of the object's owner.  May be abbreviated 'ex <object>'.  If the 
  604.   attribute parameter is given, you will only see that attribute (good 
  605.   for looking at code). You can now wild-card match on attributes.  For 
  606.   example. to see all the attributes that began with a 'v' you could do 
  607.   ex <object>/v*
  608.   
  609.   Examine takes two switches, "brief"  (equivalent to the "brief" command),
  610.   and "debug", which is a wizard-only switch.  "debug" examine will show
  611.   the raw values for certain fields in an object.
  612.   
  613. & brief
  614.   brief <object>. It is identical to "examine", except that it does
  615.   not print the attributes on an object. This is useful for just
  616.   glancing at an object to determine its home, owner, lock, etc.
  617.  
  618. & get
  619.   get <object>. Picks up <object>. <object> can be a thing or an 
  620.   unlinked exit. 'take' is the same as 'get'. 
  621.   You can now also do get <thing>'s <object>.  It will fail if 
  622.   either thing is not ENTER_OK or object is locked against you.
  623.  
  624. & give
  625.   give <player>=<pennies/object>. Gives player the specified number of 
  626.   pennies or <object>. You can't give someone pennies if their new total 
  627.   would be greater than 10000 pennies. (No reason to get greedy)  You 
  628.   may also give players objects, but the other player must be set to 
  629.   enter_ok (See FLAGS) to receive something you give. 
  630.  
  631. & goto
  632.   go[to] <direction>; go[to] home. Goes in the specified direction. 
  633.   'go home' is a special command that returns you to your starting 
  634.   location. The word 'go' may be omitted. 'move' is the same as 'go'.
  635.  
  636. & inventory
  637.   inventory. Lists what you are carrying. 
  638.   Can be abbreviated by just 'i', or 'inv'.
  639.  
  640. & kill
  641.   kill <player> [=<cost>]. Attempts to kill the specified player. 
  642.   Killing costs <cost> pennies, which gives you a <cost>% chance of 
  643.   killing the player. Thus, spending 100 pennies always works (except 
  644.   against wizards,  who can never be killed). Players cannot be 
  645.   killed in rooms which have been set HAVEN. (See FLAGS and HAVEN).  
  646.   If you don't specify a cost, the default is 10 (i.e. 10%).  The 
  647.   player, if killed, receives <cost>/2 pennies in insurance.
  648.  
  649. & look
  650.   look[/<switch>] [<object>]. 
  651.   
  652.   Displays the description of <object>, or the room 
  653.   you're in if object is eliminated.  Specifying object as <name> or 
  654.   #<dbref> or 'me' or 'here' is legal. 'read' is the same as 'look'.
  655.   You can also use look to look at object's held by other people, 
  656.   just use 'look <person>'s <object>'.
  657.   'look' may be abbreviated 'l'.
  658.   
  659.   Look does take one switch, "outside". look/outside allows you to
  660.   look at objects outside your current location, as long as your
  661.   immediate location is not a room, and is not OPAQUE.
  662.   
  663. & move
  664.   Same as GO.  (What, you expect me to type it out twice?)
  665. & news
  666.   Shows you the current news for MUSH. It is highly recommended that
  667.   you check the news daily for new information.  Otherwise, the
  668.   wizards will have no pity on you for messing up with the new
  669.   commands.
  670. & events
  671.   A file similar to news, dealing with special events and topics with
  672.   the MUSH. You should check the events daily for new information,
  673.   or you may rapidly become slightly lost.
  674. & page 
  675.   page [<player>] [=<message>]. This tells a player that you are
  676.   looking for them, and tell the player where you are.  They will get
  677.   a message telling them your name and and location if you omit the
  678.   message. This costs 1 penny.  If you include the '=<message>', it
  679.   will tell the player your name and your message, but not your
  680.   location.  If a player is set to HAVEN (See FLAGS), you
  681.   cannot page them, and they will not be notified that you tried.
  682.   If the player is page-locked against you, he is treated as HAVEN.
  683.   Page will also attempt to partial match on the name.  If you omit the
  684.   player, the game will attempt to page the player you paged last.
  685.   If the first character of <message> is a : or a ;, it will send the
  686.   page in pose format.  (see pose, : and ;)
  687.   Objects may page players, but not vice versa. If an object pages
  688.   a NOSPOOF player, that player will see the object's number in
  689.   square brackets, in front of the message, in a fashion similar to
  690.   the way NOSPOOF flags emits.
  691. & QUIT    
  692.   QUIT. Log out and leave the game. Must be in all capitals.  
  693. & LOGOUT
  694.   LOGOUT is similar to QUIT, but instead of disconnecting you from the
  695.   game completely, it merely disconnects you from your current character
  696.   and returns you to the opening welcome screen. This is useful if you
  697.   want to disconnect and then reconnect to another character.
  698. & read 
  699.   See 'look'.  (See move for reason you have to see look)
  700. & "
  701.   See say. 
  702. & :
  703.   See pose.
  704. & ;
  705.   This command is much like pose, however where with pose, the action
  706.   and the person's name who commits the action are separated by a 
  707.   space, with ;, they are not.  Example: ;'s watch beeps. -- The room
  708.   would see <name>'s watch beeps.
  709. & +
  710.   See @chat.
  711. & &
  712.   See NON-STANDARD ATTRIBUTES.
  713. & say
  714.   say <message>. Says <message> out loud. You can also use 
  715.   '"<message>'.  See also 'whisper', 'pose', and ';'. 
  716.   (Note: Say and " append a " to whatever you type in)
  717. & score
  718.   score. Displays how many pennies you are carrying.  Helpful to see if
  719.   any machines are looping.  Also see looping, @ps, and most of the 
  720.   commands that start with @.
  721. & slay
  722.   slay <player/object> This is a Wizard command that kills players 
  723.   without paying any insurance to the victims. It is used in places 
  724.   where 'suicide' should not pay.
  725.   (Su-ic-ide is pain-less... {MASH theme})
  726. & take
  727.   See 'get'.  
  728. & whisper 
  729.   whisper <player>=<message>. Whispers the message to the
  730.   named person, if they are in the same room as you. No one else can
  731.   see the message. You can also whisper to things you are carrying,
  732.   or to things that are carrying you. whisper <player>=:<pose> also 
  733.   works, in a fashion similar to page-pose.
  734.   'whisper' can be abbreviated by just 'w'.  
  735. & WHO
  736.   WHO   Displays a list of players currently connected to the MUSH.
  737.   The WHO tells you how long a player has been on and how long they
  738.   have been inactive. 
  739. & DOING
  740.   This command displays the list of players currently connected to the
  741.   MUSH. For mortals, it is identical to WHO. For wizards, it displays
  742.   the WHO in the format mortals see. The wizard WHO shows location and
  743.   host, but does not show @doing messages. DOING shows @doing messages
  744.   but not location or host.
  745. & @poll
  746.   @poll <poll question>
  747.   This wizard-only command sets the "poll" - the Doing question. If
  748.   "@poll" is used by itself, the question is reset to the default
  749.   string "Doing". 
  750. & @aahear
  751.   An Aahear on an object is activated whenever the listen pattern
  752.   matches anything done/said by anything else in the room, and 
  753.   itself.  (Ahear ignores itself, helpful from keeping machines from 
  754.   triggering itself)  See @listen, @ahear, @amhear.
  755. & @aclone
  756.   The @aclone of an object is the action to be executed when that
  757.   object is @cloned. It works just like other @a<whatever> attributes.
  758.   Please note that there is no @oclone, and that @clone is always a
  759.   command, not an attribute.
  760. & @adescribe
  761.   @adescribe <object> = <actions>. 
  762.   
  763.   Sets the actions to be taken when  <object> is looked at. Actions are 
  764.   lists of commands separated by semi-colons and these commands are 
  765.   executed by the object (see also PUPPET). Things can execute almost any 
  766.   command but rooms and exits are restricted to forcing objects/puppets to 
  767.   do things. Function/percent substitutions are applied to the commands b
  768.   efore they are executed. <object> can be specified as <name> or #<number>, 
  769.   or as 'me' or 'here'.  May be abbreviated @adesc. See also @describe, 
  770.   @idescribe and @odescribe.
  771.   
  772.   Some people find @adescs on people to be annoying. Be aware of this
  773.   before you set one.
  774. & @afailure
  775.   @afailure <object> = <actions>. Sets the actions to be taken on 
  776.   failure to use <object>. Actions are lists of commands separated by
  777.   semi-colons and these commands are executed by the object (see 
  778.   puppet).  Things can execute almost any command but rooms and exits
  779.   are restricted to forcing objects/puppets to do things. Gender 
  780.   substitutions are applied to the commands before they are executed,
  781.   this allows use of the players name who caused the action.  
  782.   <object> can be specified as <name> or #<dbref>, or as 'me' or 
  783.   'here'. May be abbreviated @afail. See also @fail and @ofail.
  784. & @ahear
  785.   @ahear <object> = <actions>. Sets the actions to be taken after a 
  786.   string set in the @listen (See @listen) is matched. Actions are 
  787.   lists of commands separated by semi-colons and these commands are 
  788.   executed by the object (see puppet). Objects can execute almost 
  789.   any command. Gender substitutions are applied to the commands 
  790.   before they are executed, this allows use of the players name who 
  791.   caused the action. 
  792.   See also @aahear and @amhear.
  793. & @adeath
  794.   @adeath <object> = <actions>. Sets the actions to be taken after 
  795.   <object> is killed. Actions are lists of commands separated by semi 
  796.   colons and these commands are executed by the object (see puppet) 
  797.   Objects can execute almost any command. Gender substitutions are 
  798.   applied to the commands before they are executed, this allows use 
  799.   of the players name who caused the action.  
  800.   See also @odeath and @death.
  801. & @amhear
  802.   @amhear is like @ahear, only the @listen string/pattern is only
  803.   applied to statements/strings that the object itself generates.
  804.   @amhear and @ahear together equal @aahear.  See @ahear, @listen,
  805.   and @aahear.
  806. & @apayment
  807.   @apayment <object> = <actions>. Sets the actions to be taken after a
  808.   player gives object pennies (see @cost). Actions are lists of 
  809.   commands separated by semi-colons and these commands are executed 
  810.   by the object (see puppet). Objects can execute almost any command.
  811.   Gender substitutions are applied to the commands before they are 
  812.   executed, which allows use of the player's name who caused the 
  813.   action. May be abbreviated @apay. See also @pay and @opay.
  814. & @ause
  815.   @ause <object> = <actions>. Sets the actions to be taken when an
  816.   object is succesfully "used". Actions are lists of commands separated
  817.   by semi-colons. This functions in a similar manner to the other
  818.   @a-attributes, such as @asuccess and @apayment.
  819. & @asuccess
  820.   @asuccess <object> = <actions>. Sets the actions to be taken on 
  821.   successful usage of <object>. Actions are lists of commands 
  822.   separated by semi-colons and these commands are executed by the 
  823.   object (see puppet). Objects can execute almost any command. Gender
  824.   substitutions are applied to the commands before they are executed,
  825.   this allows use of the players name who caused the action. It can 
  826.   be abbreviated @asucc. <object> can be specified as <name> or 
  827.   #<dbref>, or as 'me' or 'here'. See also @success and @osuccess. 
  828.  
  829. & @adrop <object> = <actions>. Sets the actions to be taken when
  830.   <object> is dropped. See "help @asuccess" for a more detailed
  831.   explanation of action attributes.
  832.  
  833. & use
  834.   use <object>
  835.   Attempts to use an object, triggering its @use/@ouse/@ause attributes.
  836.   The person using the object must pass its uselock; no inheritance check
  837.   is necessary. This is may be done remotely, by using a dbref number;
  838.   it provides an easy way for non-INHERIT objects to perform commands on
  839.   INHERIT objects.
  840.  
  841. & @boot
  842.   @boot <player>    or   @boot/port <descriptor number>
  843.  
  844.   Disconnects the player from the game. The /port switch takes a 
  845.   descriptor number instead (the "Port" number in WHO for wizards).
  846.   Only Wizards can use this command, so you better not be naughty! Heh!
  847.  
  848.   (Well, you can be naughty... it's annoying that gets on the nerves
  849.    of wizards real quickly. Ex: @adesc me = kill %N = 100 will get you 
  850.    @booted real quickly.)
  851.  
  852. & @charges
  853.   @charges <object> = <integer>. Allows you to limit the # of times 
  854.   an action can be used. If there is a charges attribute it is 
  855.   decremented each time an action is triggered, once it reaches zero 
  856.   actions are disabled. See also @runout.
  857.  
  858. & @chown
  859.   @chown <object>=<player>. Changes the ownership of <object> to 
  860.   <player>.  Objects may be things, rooms or exits. To chown things, 
  861.   you have to be carrying the thing. For rooms or exits, you have to 
  862.   be in the room. Objects must have the chown_ok flag set before it 
  863.   can be @chowned (See FLAGS).  In a room, the command used must be
  864.   @chown here = <name>, and for an object, you must be very specific.
  865.   Note:  @chown DOES understand the pronoun me.
  866.   Players can't be @chowned; they always own themselves.
  867.  
  868. & @chzone
  869.   @chzone <object>=<zone object>. Changes the zone of <object> to
  870.   <zone object>. If <zone object> is "none", the zone is reset to
  871.   NOTHING. @chzone'ing a player does not automatically change the
  872.   zone of his objects.
  873.   Anyone may reset the zone of an object he owns; the zone he changes
  874.   the object zone must either be "none", or must be owned by him.
  875.   Only wizards may @chzone an object to an arbitrary zone object.
  876.   Players may @chzone themselves to an object they own; otherwise,
  877.   only wizards may @chzone players. @chzone'ing resets the WIZARD, 
  878.   ROYALTY, and INHERIT flags on non-player objects. See "help ZONES" 
  879.   for an explanation of zones.
  880. & @chzoneall
  881.   @chzoneall <player>=<zone object>. Changes the zone of all objects
  882.   owned by <player> to <zone object>. If <zone object> is "none",
  883.   the zone is reset to NOTHING. Only wizards may use this command.
  884. & @clone
  885.   @clone <object or exit>
  886.   For objects, creates an exact duplicate of it and puts it in the
  887.   current room. For exits, it creates an exact duplicate of that
  888.   exit, except the clone's source is the current room rather than
  889.   whatever the original exit's source was.
  890. & @cost
  891.   @cost <object> = <amount> number of pennies that need to be given to 
  892.   an object to trigger @pay, @opay and @apay. Example: 
  893.   @cost exit-machine=10
  894.   @apay exit-machine=@open %N-exit 
  895.   @pay exit-machine=Your exit has been created.  
  896. & @create
  897.   @create <name> [=<cost>]. Creates a thing with the specified name. 
  898.   Creation costs either <cost> pennies or 10 pennies, whichever is 
  899.   greater. The value of a thing is proportional to its cost. To be 
  900.   exact, value=(cost/5)-1.  Value cannot be greater than 100, any
  901.   values that would be greater than 100 are rounded down to 100.
  902.   (see give re: greed)
  903. & @describe
  904.   @describe <object> [=<description>]. <object> can be a thing, 
  905.   player, exit, or room, specified as <name> or #<number> or 'me' or 
  906.   'here'.  This sets the description a player sees when they use the 
  907.   command 'look <object>'. Without a description argument, it clears 
  908.   the message. It can be abbreviated @desc.  @desc's on everything 
  909.   that isn't dark is considered to be Good Building Practice.
  910. & @destroy
  911.   @destroy[/override] <object>
  912.   
  913.   Recycles <object> and returns the player's investment (the cost of @create)
  914.   You should always @destroy objects you no longer need; this keeps the 
  915.   database down to a manageable size. 
  916.   
  917.   @destroy may be used to recycle any object but will have a delayed 
  918.   effect on rooms.  Rooms are removed approximately every ten minutes, 
  919.   until then, they have the Going (G) flag set on them.  Should you 
  920.   change your mind, simply@set <room> = !Going.  
  921.   
  922.   The queue for destroyed objects is automatically cleared. In addition,
  923.   the equivalent of a @drain is performed: all commands waiting on it
  924.   as a semaphore are immediately discarded(not run at all).
  925.   You should always @destroy objects that you no longer need. This
  926.   keeps the database down to a manageable size.
  927.  
  928.   The SAFE flag protects objects from destruction. The /override
  929.   switch negates this protection (and is equivalent to "@nuke").
  930.   The DESTROY_OK flag allows anyone who is holding an object to
  931.   @destroy it. This is good for "temporary" objects like "Can of Cola".
  932. & @dig
  933.   @dig[/teleport] <name> [= <name>[;<other name>]*[,<name>[;<other name>]*]]
  934.   
  935.   Creates a new room with the specified name and displays its number.
  936.   This costs 10 pennies. If the [= <name>....*] option is used, the
  937.   exit will be opened and linked for you.  The [,<exit>...*] option
  938.   will link a reverse exit for you.
  939.   If the "teleport" switch is supplied, the digger will be teleported
  940.   into the new room automatically.
  941.   
  942.   Example: @dig Kitchen = Kitchen;k;north;n will dig a room called 
  943.     Kitchen, and open an exit called 'Kitchen' in your current room. 
  944.   Example 2: @dig Kitchen = Kitchen;k;north;n,out;o;south;s will dig
  945.     a room called Kitchen, open an exit called 'Kitchen' in the current
  946.     room, AND open an exit 'out' in the room 'Kitchen' leading to the
  947.     current room.
  948.   The ; symbol means that you may enter the exit by typing 
  949.   'k','north' or 'n' also.  Only the first Exit name is displayed in
  950.   the Obvious exits list.
  951. & @drop
  952.   @drop <object> [=<message>]. <object> can be a thing, player, exit,
  953.   or room, specified as <name> or #<number> or 'me' or 'here'. Sets 
  954.   the drop message for <object>. The message is displayed when a 
  955.   player drops <object>. Without  a message argument, it clears the 
  956.   message. 
  957.   See also @odrop and @adrop.
  958. & @gedit
  959.   @edit now takes wildcard patterns, so this command is merely an alias
  960.   for @edit, kept for backwards compatbility. See "@edit" for details.
  961. & @edit
  962.   @edit <object>/<pattern> = <search>,<replace> 
  963.   @edit <object>/<pattern> = $,<string to append>
  964.   @edit <object>/<pattern> = ^,<string to prepend>
  965.  
  966.   This is useful when you don't want to have to retype those obnoxiously 
  967.   long descriptions just to make one little change.  Instead, search and 
  968.   replace via @edit.  
  969.   
  970.   <pattern> is a pattern, optionally containing wildcards, for the attribute 
  971.   names you wish to edit. Only attributes already defined on <object> may be 
  972.   edited. <search> and <replace> are two strings. It's also possible to use 
  973.   "$" and "^" to signal appending and prepending text, respectively.
  974.   
  975.   If the text contains commas, precent signs, or similar special characters,
  976.   it usually must be enclosed in curly braces.
  977.   
  978.   See also ATTRIBUTES.
  979. & @grep
  980.   @grep[/<switch>] <object>[/<attrs>]=<pattern>
  981.   
  982.   This command searches attributes in an object for <pattern>.
  983.   It can taken one of two switches, "list" and "print".  The default
  984.   is "list", and simply lists the attributes in the object which contain
  985.   the pattern.  The "print" switch prints out all the attributes which
  986.   contain the pattern, hiliting the pattern itself in boldface  (you must
  987.   be ANSI_DISPLAY in order to use this switch).
  988.   
  989.   You must be able to see attributes on <object> (i.e. you must control
  990.   the object, it must be VISUAL, or you must be a Wizard or Royalty).
  991.  
  992.   <attrs> is an optional wildcard pattern specifying attributes to
  993.   match (much like @edit). If <attrs> is not provided, all attributes
  994.   are assumed (just as if you had provided "*").
  995.    
  996.   <pattern> is not treated as a wildcard pattern, so you can grep for
  997.   patterns containing '*', '?', etc.  Also, <pattern> is NOT PARSED,
  998.   so '[v(0)]' and the like can be searched for.
  999. & @emit
  1000.   @emit [/room] <message>  This send message to every person in the 
  1001.   current room. However, no identifier marking it as being sent by you 
  1002.   is shown.  For example, @emit foo would show 'foo' to every object in 
  1003.   the room. The /room switch makes this command equivalent to "@lemit".
  1004.   See also @pemit, @remit, @oemit, @lemit, NOSPOOF and SPOOFING.
  1005. & @failure
  1006.   @failure <object> [=<message>]. <object> can be a thing, player, exit,
  1007.   or room, specified as <name> or #<number> or 'me' or 'here'. Sets 
  1008.   the fail message for <object>. The message is displayed when a 
  1009.   player fails to use <object>.  Without a message argument, it 
  1010.   clears the message. May be abbreviated @fail. See also @afail and
  1011.   @ofail. Putting @fails on all exits and objects that are locked is 
  1012.   Good Building Practice.
  1013. & @find
  1014.   @find [<name>] [=<begin>,<end>]
  1015.  
  1016.   Displays the name and number of every room, thing, or
  1017.   player that you control whose name matches <name>. Because the
  1018.   command is computationally expensive, this costs 100 pennies.
  1019.   You can limit the range of the @find by specifying <begin> and
  1020.   <end>, where these are the first and last dbrefs to examine.
  1021.   
  1022. & @force
  1023.   @force <player/object>=<command>. Forces the game to act as though
  1024.   <player/object> had entered <command>.  Only wizards may force
  1025.   players. May be abbreviated @fo.  Wizards cannot be forced by
  1026.   players. Hard luck. You can always force objects you control, 
  1027.   especially puppets.  Puppets can be given abbreviated commands in
  1028.   the form of <name/dbref> <command>.  #<dbref>'s are necessary if
  1029.   the puppet is not in the same room as you.  See Puppets.
  1030. & @death
  1031.   @death <player> [=<message>]. <player> can be specified as <name> or
  1032.   #<dbref> or 'me' or 'here'. Sets the death message for <player>. The
  1033.   message is displayed when <player> is killed. Without  a message 
  1034.   argument, it clears the message.  See also @adeath and @odeath.
  1035. & @idescribe
  1036.   @idescribe <object> [=<message>].  Sets object's internal description. 
  1037.   The internal description of an object will be shown to any object 
  1038.   entering it.  Without a message argument, it shows the usual @desc.
  1039.   (see enter, @enter, @oenter, and enter_ok).  May be abbreviated @idesc
  1040. & @link
  1041.   @link <object>=<number>; @link <object>=here; 
  1042.   @link <dir>|<room>=home. Links <object> to room specified by 
  1043.   <number>. For things and players, sets the home room (See HOMES). 
  1044.   For rooms, sets the drop-to room (See DROP-TOs). For exits, sets 
  1045.   the target room; exits must be unlinked, and you must own/control 
  1046.   the target room unless its LINK_OK flag is set. Linking an exit 
  1047.   costs 1 penny. If the exit was owned by someone else, the former 
  1048.   owner is reimbursed 1 penny. (see @open, @dig)
  1049.   
  1050.   LINK_OK objects can also be used as semaphores, and any object
  1051.   can be @parented to them.
  1052. & @listen
  1053.   @listen <object> = <string>. A wildcard pattern for an object to 
  1054.   listen for.  If/when <string> is heard, the object's ahear is
  1055.   triggered. Note: if @listen is matched the objects contents will
  1056.   also hear the message. See "help LISTEN" for more details.
  1057. & @lock
  1058.   @lock[/<switch>] <object>=<key> 
  1059.   
  1060.   Locks <object> to a specific key(s). <object> can be specified as 
  1061.   <name> or #<number>, or as 'me' or 'here'. 
  1062.   Boolean expressions are allowed, using '&' (and), '|' (or), 
  1063.   '!' (not), and parentheses ('(' and ')') for grouping. To lock to a
  1064.   player, prefix their name with '*' (ex. '*Moonchilde').
  1065.  
  1066.   The available switches on this command are /enter, /tport, /use, and 
  1067.   /page. The first two are equivalent to @elock, and the latter two to
  1068.   @ulock.
  1069.  
  1070.   Example:
  1071.    @lock Purse = me|*Darling will lock object purse so that only you 
  1072.    or player Darling can take it.
  1073.  
  1074.   See "help @lock2" for more.
  1075.  
  1076. & @lock2
  1077.   There are six types of special locks: Indirect, Carry, Is, Owner,
  1078.   Attribute, and Evaluation locks.
  1079.  
  1080.   Indirect locks -- locks an object to the lock of the specified 
  1081.   object.  Good if you have many locks with the same key, simply 
  1082.   lock all the locks to one object, then lock that object to the 
  1083.   common key.
  1084.   Example:
  1085.     @lock foo=@bar    locks foo to bar's key.
  1086.  
  1087.   Carry lock -- You can go though only if you carry foo.  
  1088.   Example:
  1089.     @lock bar = +foo
  1090.   
  1091.   Is lock -- You can only go through if you ARE foo. 
  1092.   Example:
  1093.     @lock bar = =foo
  1094.   The last two are different from @lock foo = bar in that 
  1095.   @lock foo=bar will let you pass either if you carry bar or are bar.
  1096.   
  1097.   See "help @lock3" for more.
  1098.  
  1099. & @lock3
  1100.   
  1101.   Owner lock -- You can only go through if you have the same owner as foo.
  1102.   Example:
  1103.     @lock bar = $foo
  1104.   
  1105.   Attribute lock -- You can only go through if you have an attribute
  1106.   set on yourself which matches the value of the attribute lock.
  1107.   The value is a string which may contain wildcards, greater than,
  1108.   and less than.
  1109.   The locked object must be able to read the attribute from the thing
  1110.   trying to pass the lock; if it cannot do so, the thing cannot pass
  1111.   the lock. (So, mortals can generally only usefully lock to public
  1112.   attributes like 'sex', or to attributes on their own objects).
  1113.   All attribute locks take the format @lock thing=attribuate:value
  1114.   Example:
  1115.     @lock thing=sex:m*      will lock thing to anyone whose sex attribute
  1116.                             starts with an 'm'.
  1117.     @lock exit=name:<g      will lock the exit against any one whose name
  1118.                             is higher than f.
  1119.  
  1120.   See "help @lock4" for more.
  1121.  
  1122. & @lock4
  1123.   Evaluation locks -- These locks take the form @lock thing=attribute/value
  1124.   They are thus very similar in form to attribute locks. These locks are
  1125.   checked by evaluating the contents of <attribute> and comparing it to
  1126.   <value>; a lock is passed if these are equal.
  1127.   
  1128.   <Attribute> may be thought of much like a user-defined function; its
  1129.   contents are evaluated with the equivalent of EVAL(thing, attribute)
  1130.   For the purposes of evaluation, the player trying to pass the lock
  1131.   on thing is the enactor (%N) and the thing is "me" (%!)
  1132.   
  1133.   Example: @lock thing = Ispuppet/1
  1134.            &Ispuppet thing = [hasflag(%#, PUPPET)]
  1135.   
  1136.   This locks thing to puppets only. If player tries to pass the lock on
  1137.   thing, Ispuppet evaluates to: [hasflag(<player dbref>, PUPPET)]
  1138.   and the function returns 0 or 1 depending on whether or not player
  1139.   is a puppet. The lock is passed if the evaluation equals "1".
  1140.  
  1141.   See "help @lock5" for more.
  1142.   
  1143. & @lock5
  1144.   Evaluation locks are extremely flexible; you can even use them to
  1145.   imitate other types of locks. For example, instead of @lock object = #5
  1146.   you can use @lock object = VA/#5   and   @va object = %#
  1147.   (This is somewhat foolish, but you can do it if you want to.)
  1148.   
  1149.   These locks are evaluated with the priviledges of the locked object;
  1150.   thus, if you  @lock object = VA/5   and  @va object = [strlen(get(%#/VZ))]
  1151.   and the object does not have permission to read VZ from the player
  1152.   trying to pass the lock, the player automatically fails to pass the
  1153.   lock.
  1154. & @name
  1155.   @name <object>=<new name> [<password>]. Changes the name of 
  1156.   <object>.  <object> can be a thing, player, exit, or room, 
  1157.   specified as <name> or #<dbref> or 'me' or 'here'. For a player, 
  1158.   it requires the player's password.
  1159. & @newpassword
  1160.   @newpassword <player> =<password>. Only wizards may use this 
  1161.   command.  Changes <player>'s password, informing <player> that you 
  1162.   changed it.  Must be typed in full. If you forget your password, 
  1163.   log on as guest (password = guest) and talk to a Wizard.
  1164. & @odescribe
  1165.   @odescribe <object> [=<message>]. The odescribe message, prefixed 
  1166.   by the player's name, is shown to others when the player looks at 
  1167.   <object>. Without a message argument, it clears the message. 
  1168.   <object> can be specified as <name> or  #<number>, or as 'me' or 
  1169.   'here'. May be abbreviated @odesc. See also @describe, @adescribe 
  1170.   and @idescribe.
  1171. & @odrop
  1172.   @odrop <object> [=<message>]. The @odrop message, prefixed by the 
  1173.   player's name, is shown to others when the player drops <object>. 
  1174.   Without a message argument, it clears the message. <object> can be 
  1175.   specified as <name> or #<number>, or as 'me' or 'here'. See also 
  1176.   @drop and @adrop.
  1177. & @ofailure
  1178.   @ofailure <object> [=<message>]. The @ofail message, prefixed by the 
  1179.   player's name, is shown to others when the player fails to use 
  1180.   <object>. Without a message argument, it clears the message. 
  1181.   <object> can be specified as <name> or #<dbref>, or as 'me' or 
  1182.   'here'.  May be abbreviated @ofail.
  1183.   See also @afail and @fail.  (Note: @ofails on locked exits and
  1184.   objects is considered Good Building Practice.)
  1185. & @odeath
  1186.   @odeath <player> [=<message>]. The @odeath message, prefixed by the 
  1187.   player's name, is shown to others when the player is killed. 
  1188.   Without a message argument, it clears the message. <player> can be 
  1189.   specified as <name> or #<dbref>, or as 'me' or 'here'. See also 
  1190.   @adeath and @death.
  1191. & @opayment
  1192.   @opayment <object> [=<message>]. The opay message, prefixed by the 
  1193.   object's name, is shown to others in the room with object when someone
  1194.   'pays' for something. Without a message argument, it clears the message.
  1195.   <player> can be specified as <name> or  #<dbref>, or as 'me' or 'here'.
  1196.   May be abbreviated @opay. See also @apay, @pay, and @cost.
  1197. & @open
  1198.   @open <direction>[;<other direction>]* [=<number>][,<dir>[;<other dir]*].
  1199.   Creates an exit in the specified direction(s). If <number> is specified,
  1200.   it is linked to that room. Otherwise, it is created unlinked. You or 
  1201.   anyone else may use the '@link' command to specify where the unlinked
  1202.   exit leads.  Opening an exit costs 1 penny. If you specify <number>,
  1203.   linking costs 1 more penny.  If you specify a room, you may also specify
  1204.   an exit leading from that room back to the current room.  This second back
  1205.   exit costs the same as the forward one.  See also @link and @dig.  
  1206. & @osuccess
  1207.   @osuccess <object> [=<message>]. The @osuccess message, prefixed by
  1208.   the player's name, is shown to others when the player successfully 
  1209.   uses <object>.  Without a message argument, it clears the @osuccess
  1210.   message. It can be abbreviated @osucc. <object> can be specified as
  1211.   <name> or #<number>, or as 'me' or 'here'. See also @success and 
  1212.   @asuccess. (Putting @osuccs on all useable exits and takeable 
  1213.   objects is considered Good Building Practice, especially if it
  1214.   allows people to follow people w/o shouting out which exit to take
  1215.   each time you leave a room.)
  1216. & @ouse
  1217.   @ouse <object> [=<message>]. The @use message, prefixed by the player's
  1218.   name, is shown to others when a player successfully does a "use" on
  1219.   the object. Without a message argument, it clears the @ouse message.
  1220.   See also @use and @ause.
  1221. & @tport
  1222.   @tport <object> [=<message>]
  1223.   
  1224.   Sets the <message> shown to <object> when <object> is teleported.
  1225. & @otport
  1226.   @otport <object> [=<message>]
  1227.  
  1228.   Sets the <message>, which will be prefixed by <object>'s name,
  1229.   that will be shown to the others in the room that the <object>
  1230.   is teleported to.
  1231. & @atport
  1232.   @atport <object> [=<action list>]
  1233.  
  1234.   Sets the list of actions that <object> will perform when it is
  1235.   teleported. These actions are done after <object> has arrived
  1236.   in its new location.
  1237. & @oxtport
  1238.   @oxtport <object> [=<message>]
  1239.   
  1240.   Sets the <message>, which will be prefixed by <object>'s name,
  1241.   that will be shown to those in the room that the object has
  1242.   left via @teleport.
  1243. & @password
  1244.   @password <old password>=<new password>. This changes your 
  1245.   password.  It can be abbreviated @pass.
  1246. & @payment
  1247.   @payment <object> [=<message>]. The pay message is shown to the player
  1248.   who paid the object. Without a message argument, it clears the message.
  1249.   <player> can be specified as <name> or  #<number>, or as 'me' or 'here'.
  1250.   May be abbreviated @pay. See also @apay, @opay, and @cost.
  1251. & @pemit
  1252.   @pemit[/<switch>] <object> = <message>
  1253.   
  1254.   The basic form of this command sends <message> to <object> directly.
  1255.   It is very similar in its effects to @emit except only one object
  1256.   will see the message. You may @pemit to objects in the same room,
  1257.   objects you are carrying, and to objects that are carrying you, 
  1258.   or @pemit remotely, using #<object> or *<player name>.
  1259.   
  1260.   The @pemit command can also take the following switches:
  1261.     /contents  -- equivalent to @remit.
  1262.     /silent    -- does not tell the @pemit'ing object a confirmation message.
  1263.   
  1264.   See also @emit, @oemit, @remit, NOSPOOF, and SPOOFING.
  1265. & pose
  1266.   pose <action pose>. Displays your name followed by the statement 
  1267.   you posed.  May be abbreviated by the ':' symbol. Example:
  1268.   > 
  1269.   If you are player Bob, and you type in ':laughs out loud' 
  1270.   everybody in the room will see: "Bob laughs out loud"
  1271.   The "pose" command is obsolete and has been completely replaced by ':'
  1272. & @runout 
  1273.   @runout <object> = <actions> This is an action to be taken when 
  1274.   charges reach zero (See '@charges'). Actions are lists of commands 
  1275.   separated by semi-colons, and these commands are executed by the 
  1276.   object (see puppet). Things can execute almost any command but
  1277.   rooms and exits are restricted to forcing puppets to do things. 
  1278.   Gender substitutions are applied to the commands before they are 
  1279.   executed, this allows use of the players name who caused the 
  1280.   action. 
  1281. & @search
  1282.   @search [<player>] [<class>=<restriction>] [,<begin>,<end>]
  1283.   
  1284.   This command searches the database and lists objects which meet user 
  1285.   specified search criteria.  You can limit the scope of the search by
  1286.   specifying <begin> and <end> as the first and last dbrefs to search.
  1287.   
  1288.   If a <player> argument is supplied, only objects owned by that player 
  1289.   will be listed. If a <class> argument is supplied only objects of a
  1290.   certain class will  be listed. Possible <class>es include (TYPE, NAME,
  1291.   ZONE, PARENT, EXITS, OBJECTS, ROOMS, PLAYERS, and FLAGS).  If <class>=TYPE,
  1292.   possible <restriction>s include (OBJECTS, ROOMS,  EXITS, PLAYERS). 
  1293.   
  1294.   If <class>=NAME, only objects whose name begin with the string <restriction> 
  1295.   will be listed. If <class>=ZONE, only objects in the zone <restriction>
  1296.   will be listed. If <class>=PARENT, only children of parent <restriction>
  1297.   will be listed. For ZONE and PARENT, <restriction> must be specified as a
  1298.   dbref number. 
  1299.   
  1300.   'help @search2' for more.
  1301. & @search2
  1302.   If <class>=EXITS, OBJECTS, ROOMS, or PLAYERS, only objects of that type 
  1303.   and whose  name begin with the string <restriction> will be listed. 
  1304.   
  1305.   Finally if <class>=FLAGS, only  objects with the list of flags specified 
  1306.   by <restriction> will be listed. Flag names should be specified by single
  1307.   letters. Flag names are case-sensitive.
  1308.   
  1309.   For the class TYPE=PLAYER, and for  PLAYER=<player-name>, anyone may 
  1310.   obtain information on any player.  In all other cases, only wizards may 
  1311.   obtain information about other players. This is computationally
  1312.   expensive, costing 100 pennies. It is generally faster than @find.
  1313.   
  1314.   Examples:
  1315.     @search flags=Wc      <-- search for connected wizards.
  1316.     @search type=rooms    <-- list all rooms owned by me.
  1317.     @search zone=#50      <-- list all objects belong to zone #50.
  1318.     @search Joe,100,200   <-- list all objects from #100-#200 owned by Joe.
  1319. & @set
  1320.   @set <object>=<flag>
  1321.   @set <object>=!<flag>;
  1322.   @<pre-defined attribute> <object>=<value>
  1323.   @set <object>=<attribute>:<value>
  1324.   @set <object>=<new>:_<thing>/<old>
  1325.   
  1326.   The first two forms set (and unset) a flag on <object>.
  1327.   The third form sets a pre-defined attribute (such as MOVE, FAIL, etc.)
  1328.   on <object>.
  1329.   The fourth form sets an arbitrary attribute with <value> on <object>.
  1330.   
  1331.   The final form is used for copying attributes. It sets an attribute
  1332.   <new> on <object> with the contents of <thing>'s <old> attribute.
  1333.   (For example: @set me=TEST1:_fluff/fail  would copy the contents of
  1334.   the object "fluff"'s FAIL attribute into an attribute called TEST1 on me)
  1335.   
  1336.   See also FLAGS, NON-STANDARD ATTRIBUTES.
  1337. & @sex
  1338.   @sex <player> = <gender>  Used for pronoun substitution, normally 
  1339.   male or female. Visible to all. Examples:
  1340.   @sex me = Male
  1341.   @sex me = No thank you (silly, but possible)
  1342. & @shutdown
  1343.   @shutdown. Only wizards may use this command. Shuts down the game. 
  1344.   Must be typed in full.
  1345. & @startup
  1346.   @startup <object> = <action list>. This is an action list that gets 
  1347.   triggered the first time the mud comes up.  If the mud crashes, 
  1348.   this list will be triggered when the mud comes back up.  Thus, you 
  1349.   can retrigger objects that need to be running continuously.
  1350.   Setting or resetting this attribute automatically sets or
  1351.   resets the STARTUP (z) flag.
  1352. & @stats
  1353.   @stats. Display the number of objects in the game broken down by 
  1354.   object types.  Wizards can supply a player name to count only 
  1355.   objects owned by that player.
  1356. & @success
  1357.   @success <object> [=<message>]. Sets the success message for 
  1358.   <object>. The message is displayed when a player successfully uses 
  1359.   <object>. Without a message argument, it clears the message. It 
  1360.   can be abbreviated @succ. <object> can be specified as <name> or 
  1361.   #<dbref>, or as 'me' or 'here'. See also @osuccess and @asuccess. 
  1362. & @use
  1363.   @use <object> [=<message>]. Sets the use message for <object>. The
  1364.   message is displayed when a player successfully does a "use" on the
  1365.   object. Without a message argument, it clears the message.
  1366. & @teleport
  1367.   @teleport [<object>=] <room>. Teleports <object> to <room>. 
  1368.     
  1369.   <object> must be a thing; if you do not supply a thing, the object 
  1370.   is assumed to be yourself. The destination must be either JUMP_OK
  1371.   or controlled by you, and you must either control <object> or
  1372.   <object>'s current location. Also, the destination, if a room,
  1373.   cannot be teleport-locked against <object>. Mortals cannot teleport 
  1374.   Royalty or Wizards. If the target room has a drop-to, <object> will go 
  1375.   to the drop-to room instead. Wizards can teleport things into players'
  1376.   inventories.
  1377.   
  1378.   Teleportation from a room can be stopped by setting the NO_TEL flag.
  1379.   Royalty and Wizards can _always_ teleport to any location, regardless
  1380.   of NO_TEL or teleport locks.
  1381.   
  1382.   Teleportation triggers the @oxtport/@tport/@otport/@atport attributes,
  1383.   unless <room> is an exit.
  1384.   
  1385.   See also: JUMP_OK, NO_TEL, @oxtport, @tport, @otport, @atport, @elock
  1386. & @unlink
  1387.   @unlink <dir>; @unlink here. Removes the link on the exit in the 
  1388.   specified direction, or removes the drop-to on the room. Unlinked 
  1389.   exits may be picked up and dropped elsewhere. Be careful, anyone 
  1390.   can relink an unlinked exit, becoming its new owner (but you will 
  1391.   be reimbursed your 1 penny). See @link.
  1392. & @unlock
  1393.   @unlock [/<switch>] <object>. Removes the lock on <object>. See @lock.
  1394.   It can take four switches: /enter, /tport, /use, and /page.
  1395.   The first two are equivalent to @eunlock, and the latter two are
  1396.   equivalent to @uunlock.
  1397. & @wall
  1398.   @wall [/<switch>] <message>. Only wizards may use this command. 
  1399.   In its default form, this command allows the player to shout
  1400.   a message to every player connected. It must be typed in full.
  1401.   It can also take the following switches:
  1402.   /wizard  : broadcast to wizards (like @wizwall)
  1403.   /royalty : broadcast to wizards and royalty (like @rwall)
  1404.   /pose    : pose a message to all (like @wallpose)
  1405.   /emit    : emit a message to all (like @wallemit)
  1406. & @rwall
  1407.   @rwall <message>
  1408.   Only wizards and royalty may use this command. It broadcasts a message to
  1409.   all connected wizards and royals, prefixed with "Admin:". If the first
  1410.   character is : or ; it does the same thing as @wizpose.
  1411. & @rwallpose
  1412.   @rwallpose <pose>
  1413.   Only wizards and royalty may use this command. It's a variant of @rwall,
  1414.   using a pose, and is identical to "@rwall :<pose>"
  1415. & @rwallemit
  1416.   @rwallemit <message>
  1417.   Only wizards and royalty may use this command. It is similar to @wizemit,
  1418.   but broadcasts the message to all connected wizards and royals.
  1419. & @wizwall
  1420.   @wizwall <message>.  Only wizards may use this command.  
  1421.   Shouts <message> to all wizards logged in.  If the first character is
  1422.   a : or ; it does the same thing as @wizpose. (; doesn't attach the space)
  1423. & @wizpose
  1424.   @wizpose <message>.  Only wizards may use this command.
  1425.   Shows the <message> to all wizards logged on in pose format.
  1426. & @wizemit
  1427.   @wizemit <message>.  Only wizards may use this command.
  1428.   Shows <message> to all wizards logged on in emit format.
  1429. & @whereis
  1430.   @whereis <player>. Tells you the location of the player. If you 
  1431.   wish to remain unlocatable, set your UNFINDABLE flag. (See FLAGS). 
  1432.   The person being located will get a message to inform them that you
  1433.   have successfully or unsuccessfully located them.  
  1434.   Ex: @whereis  Moonchilde
  1435. & ATTRIBUTES
  1436.   ATTRIBUTES
  1437.  
  1438.   The following standard attributes can be set on your character.
  1439.   These attributes are set by typing @<attribute> <object> = <value>.
  1440.   Typing help on the @-command associated with each attribute will get
  1441.   you help on that attribute.  Attributes with (*) after them are special,
  1442.   and a) cannot be set by players and b) are possibly only visible to
  1443.   wizards. There is a section also on NON-STANDARD ATTRIBUTES.
  1444.  
  1445.   AAHEAR        ACLONE        ACONNECT      ADEATH        ADESCRIBE
  1446.   ADISCONNECT   ADROP         AEFAIL        AENTER        AFAILURE
  1447.   AHEAR         ALEAVE        AMHEAR        AMOVE         APAYMENT
  1448.   ASUCCESS      AWAY          CHARGES       COST          DEATH
  1449.   DESCRIBE      DOES          DROP          EALIAS        EFAIL
  1450.   ENTER         FAILURE       HAVEN         IDESCRIBE     IDLE
  1451.   LALIAS        LAST (*)      LASTSITE (*)  LEAVE         LISTEN
  1452.   MOVE          ODEATH        ODESCRIBE     ODROP         OEFAIL
  1453.   OENTER        OFAILURE      OLEAVE        OMOVE         OPAYMENT
  1454.   OSUCCESS      OXENTER       OXLEAVE       PAYMENT       PASSWORD (*)
  1455.   QUEUE (*)     RQUOTA (*)    RUNOUT        SEX           STARTUP
  1456.   SUCCESS
  1457.  
  1458.   Those with a (*) above have a separate help section for each of them
  1459.   so that you can find out what each attribute controls.
  1460.   Any attribute name can be shortened, but at shorter forms run the risk
  1461.   of conflicting with other attribute names.  This could result in you
  1462.   setting an unwanted attribute.
  1463. & LAST
  1464.   LAST
  1465.  
  1466.   This attribute shows the last time you connected to the MUSH. It is
  1467.   only visible to objects that control you (wizards, you or your objects)
  1468.   or if you set yourself VISUAL.
  1469. & PASSWORD
  1470.   PASSWORD
  1471.  
  1472.   This attribute stores your encrypted password.  It is not visible to
  1473.   anyone within the game, and cannot be altered except via the @password
  1474.   and @newpassword commands.
  1475. & QUEUE
  1476.   QUEUE
  1477.  
  1478.   This attribute is only visible to objects that control you (wizards, 
  1479.   yourself, and your objects) or unless you are VISUAL.  It tracks how
  1480.   many active commands you have in the queue.
  1481. & RQUOTA
  1482.   RQUOTA
  1483.  
  1484.   This attribute tracks building quota if it is implemented.  It is
  1485.   settable in-game only by a wizard, and is only visible to wizards.
  1486. & NON-STANDARD ATTRIBUTES
  1487.   NON-STANDARD ATTRIBUTES
  1488.   Objects now have the capability of having an unlimited number of
  1489.   attributes.  These attributes can have any name.  In order to preserve
  1490.   backward compatibility, the VA-VZ, WA-WZ, and XA-XZ attributes still
  1491.   exist in their previous form, and are set like a normal attribute.
  1492.   To set a new style attribute, you use the form
  1493.       &<attribute name> <obj> = <value>  OR
  1494.       @_<attribute_name> <obj> = <value> OR
  1495.       @set <obj> = <attribute_name>:<value>
  1496.   All attributes have the ability to be used in attribute locks (see help 
  1497.   @lock).  Attributes also have the new ability to be 'owned' independent
  1498.   of object ownership (see help ATTRIB-OWNERSHIP).  All attributes
  1499.   can be addressed in get() as well as in edit, and %-substitute form,
  1500.   as well as accessed via the V-function.
  1501. & ATTRIB-OWNERSHIP
  1502.   ATTRIBUTE OWNERSHIP
  1503.   The first person to create an attribute on an object is said to 'own'
  1504.   that attribute.  You must control the object in order to create an
  1505.   attribute on it.  ***OWNERSHIP OF ATTRIBUTES IS NOT CHANGED WHEN AN
  1506.   OBJECT IS @CHOWNED***  This allows for 'locks' which cannot be faked
  1507.   as the person who controls the lock and the person who controls the
  1508.   attribute MUST be the same for the lock to succeed.  It is also
  1509.   possible to 'freeze' or 'lock' an attribute so that new owners of the
  1510.   object can not tamper with it.  This allows 'standard' commands on
  1511.   objects and other neat stuff.  Attribute locking is controlled by the
  1512.   new command @atrlock and attribute ownership can be changed via the 
  1513.   @atrchown command.
  1514. & BEING KILLED
  1515.   BEING KILLED  
  1516.  
  1517.   Getting killed is no big deal. If you are killed, you return to
  1518.   your home, and  all things you carry return to their homes. You 
  1519.   also collect 50 pennies in insurance money (unless you have >= 10000 
  1520.   pennies or you were killed via the Wizard slay command). See MONEY.  
  1521.   Generally, killing is not encouraged unless absolutely necessary.
  1522.   (Note: Killing a wizard is a quick way to discover the many uses of
  1523.   the @boot command...  and killing anyone can be very rude.)
  1524. & BOGUS COMMANDS
  1525.   BOGUS COMMANDS    
  1526.   
  1527.   Bogus commands can be made using exits. For example, to
  1528.   make a 'sit' command,  one could "@open sit", then "@link sit=here"
  1529.   (because unlinked exits can be  stolen), "@lock sit=me&!me" 
  1530.   (impossible to be both at once, therefore always fails), and "@fail
  1531.   sit=You sit on the chair."; "@ofail sit=sits on the chair.".  Since
  1532.   nobody can go through it, it always fails. The @fail message is 
  1533.   displayed  to the player, and the @ofail message (preceded by the 
  1534.   player's name) to  everyone else.
  1535.  
  1536.   A better way to do user-defined commands is to use $comands on objects.
  1537.   These are set using &<attrib> <object>=$<command pattern>:<actions>
  1538.   If something a user types matches the command pattern, the actions are
  1539.   executed. In order to execute a $command, you must pass the object's
  1540.   uselock. Otherwise, you will get a "Permission denied." message.  
  1541.  
  1542. & CONTROL
  1543.   CONTROL      
  1544.  
  1545.   There are 3 rules to controlling objects:
  1546.    1) You control anything you own.
  1547.    2) A wizard controls everything.
  1548.    3) Anybody controls an unlinked exit, even if it is locked.
  1549.  
  1550.   Builders should beware of 3, lest their exits be linked or stolen.
  1551. & COSTS
  1552.   COSTS
  1553.   
  1554.   These are usually:
  1555.   
  1556.           kill: 10 pennies (or more, up to 100 pennies)
  1557.           page: 1 penny
  1558.           @dig: 10 pennies
  1559.           @create: 10 pennies (or  more, up to 505M),
  1560.               (sacrifice value=(cost/5)-1.)
  1561.           @find: 100 pennies
  1562.           @search: 100 pennies
  1563.           @entrances: 100 pennies
  1564.           @link: 1 penny (if you  didn't already own it,
  1565.                           +1 to the previous owner).
  1566.           @open: 1 penny (2 pennies if linked at  the same time)
  1567.   
  1568.   Type '@config' to get the costs for the particular MUSH you are on.
  1569. & DROP-TO
  1570.   DROP-TO
  1571.   When the @link command is used on a room, it sets a drop-to
  1572.   location.  Any object dropped in the room (if it isn't STICKY) will
  1573.   go to that location.  If the room is STICKY, the drop-to will be
  1574.   delayed until the last person in the room has left.
  1575. & EXITS
  1576.   EXITS
  1577.   An exit links one room to another room.  If an exit is set DARK it will
  1578.   not show up in the list of obvious exits in a room.
  1579. & FAILURE
  1580.   FAILURE  
  1581.  
  1582.   You fail to use a thing when you cannot take it (because its lock
  1583.   fails). You  fail to use an exit when you cannot go through it
  1584.   (because it's unlinked or  locked). You fail to use a person when
  1585.   you fail to rob them, but you can't rob in a mush. You fail to use
  1586.   a room when you fail to look  around (because it's locked).
  1587.   See ATTRIBUTES, @fail and @ofail.
  1588. & FLAGS
  1589.   FLAGS
  1590.   @set <object> = <Flags> to set, @set <object> = !<Flag> to
  1591.   reset.  Everything in the universe of this MUSH (Rooms, Exits,
  1592.   Objects, Players, etc...) are represented in the same way at the
  1593.   program level.  A room merely has the room flags set and a player
  1594.   has the player flags set.  In addition, flags also give objects
  1595.   abilities or qualities.  For instance, a wizard has the wizard flag
  1596.   set. That is what lets the program know he may use wizard
  1597.   abilities.  An object or room may have the dark flag set. In the
  1598.   case of an object, this makes the object invisible to normal
  1599.   eye-sight.  In the case of a room, the room becomes too dark to see
  1600.   other objects or players.
  1601.   For more specific information on a particular flag, request help on
  1602.   a flag title. Example: help ENTER_OK
  1603.  
  1604.   To get the list of flags, do "help flag list"
  1605.  
  1606. & FLAG LIST
  1607. Flag  Title           Flag  Title                 Flag  Title
  1608. ---------------------------------------------------------------------
  1609.   A - ABODE flag    B - BUILDER flag        C - CHOWN_OK flag
  1610.   D - DARK flag        E - EXIT flag            F - FLOATING flag
  1611.   G - GOING flag    H - HAVEN flag            I - INHERIT flag
  1612.   J - JUMP_OK flag    K - KEY flag            L - LINK_OK flag
  1613.   M - MONITOR flag      N - NOSPOOF flag        O - OPAQUE flag
  1614.   P - PLAYER flag       Q - QUIET flag                R - ROOM flag
  1615.   S - STICKY flag    T - TEMPLE flag             U - UNFINDABLE flag        
  1616.   V - VISUAL flag       W - WIZARD flag                X - SAFE flag
  1617.   Y - REDIRECT flag
  1618.  
  1619.   a - AUDIBLE flag      a - ANSI_DISPLAY flag       c - CONNECTED flag        
  1620.   d - DESTROY_OK flag    e - ENTER_OK flag           g - GAGGED flag
  1621.   h - HALT flag         i - IMMORTAL flag           l - LISTENER flag
  1622.   m - MYOPIC flag       n - NO_TEL flag             p - PUPPET flag
  1623.   r - ROYALTY flag      t - TRANSPARENT flag        u - SUSPECT flag
  1624.   v - VERBOSE flag      x - TERSE flag              z - STARTUP flag
  1625. ---------------------------------------------------------------------
  1626.  
  1627. & ANSI_DISPLAY
  1628.   ANSI_DISPLAY
  1629.   When set on a player, this flag bold-hilites the names and owners
  1630.   of attributes when the player "examines" an object. This makes it
  1631.   much easier to pick out where attributes begin and end, when examining
  1632.   complex objects. You must be using a terminal which supports ANSI
  1633.   control codes in order for this to work. 
  1634. & MONITOR
  1635.   MONITOR
  1636.   When set on a player, this flag notifies that player when anyone
  1637.   connects to or disconnects from the MUSH. It may only be set by
  1638.   wizards, and is only valid for players.
  1639. & AUDIBLE
  1640.   Exits that are AUDIBLE propagate sound to their destinations. In
  1641.   other words, any message - emit, say, or pose - that is heard in the
  1642.   source room of the exit is passed on to the contents of the exit's
  1643.   destination room. The message is prepended with the exit's @prefix
  1644.   attribute; if there is no @prefix, the default is used:
  1645.   "From <name of the exit's source room>,"
  1646.   Messages matching a certain pattern may be filtered out by using
  1647.   @filter on an exit; read 'help @filter' for more.
  1648.   In order for exits in a room to propagate sound, the room must also
  1649.   be set AUDIBLE. If the room is audible, exits that are audible show 
  1650.   up on a @sweep, even if they are set DARK.
  1651.  
  1652.   See "help AUDIBLE2" for more.
  1653.  
  1654. & AUDIBLE2
  1655.   This flag is also valid for things. If an object is set AUDIBLE,
  1656.   any messages which originate from its contents will be broadcasted
  1657.   to the outside world. This makes it very simple to program vehicles.
  1658.   Like AUDIBLE on exits, the message is prepended with the thing's
  1659.   @prefix attribute, and messages matching certain patterns may be
  1660.   filtered with @filter. If there is no @prefix, the message will be
  1661.   prepended with "From <name of AUDIBLE object>,"
  1662.   The AUDIBLE object does not receive its own propagated messages.
  1663.  
  1664.   The AUDIBLE flag allows most "emitters" (objects that listen for
  1665.   messages and broadcast them to other rooms) to be eliminated. The
  1666.   message is propagated only to the next room and no farther, so 
  1667.   there is no danger of looping.
  1668. & LISTENER
  1669.   LISTENER
  1670.   When set on a thing, this flag activates the ^ listen patterns on
  1671.   the object. Objects which have ^ listen patterns but are not set
  1672.   LISTENER do not check those patterns, although they are flagged
  1673.   on a @sweep as listening.
  1674. & STARTUP
  1675.   STARTUP
  1676.   This flag is automatically set or reset when you set or clear the
  1677.   STARTUP attribute on something. Players may not set this flag.
  1678.   The presence of this flag just shows that an object has a STARTUP
  1679.   attribute on it.
  1680. & MYOPIC
  1681.   MYOPIC
  1682.   Myopic is a flag which suppresses the printing of an object's dbref
  1683.   number and abbreviated list of flags when it is looked at. It makes
  1684.   the world appear like you don't control any of it, even if you're a
  1685.   wizard or royalty. It's useful if you don't like to see object numbers.
  1686.   This flag is only valid for players; objects belonging to MYOPIC
  1687.   players are automatically considered to be MYOPIC.
  1688.  
  1689. & INHERIT
  1690.   INHERIT
  1691.   Inherit is a security flag used to prevent objects without authorization
  1692.   from using @force, @set, and @trigger on other objects.
  1693.   Authorization is successful if:
  1694.  
  1695.      1. The enactor is WIZARD.
  1696.      2. The enactor's owner is INHERIT.
  1697.      2. The enactor is INHERIT.
  1698.      3. The target is not INHERIT.
  1699.  
  1700.   Only INHERIT or WIZARD objects may force their owners. Players can
  1701.   always @force, @set, and @trigger their objects. 
  1702.  
  1703.   Read "help Inherit2" for more.
  1704.  
  1705. & INHERIT2
  1706.  
  1707.   Authorization is only denied if the enactor is neither a player nor
  1708.   INHERIT, and the target is WIZARD, INHERIT, or is a player.
  1709.   The INHERIT protection against @trigger may be overridden by setting
  1710.   the target object LINK_OK.
  1711.   Objects which are WIZARD are not subject to any special criterion,
  1712.   although they are automatically considered to be INHERIT.
  1713.   The normal criteria for object control still apply.
  1714.  
  1715.   For zoned objects, the INHERIT flag protects against an object from
  1716.   being controlled by anything not owned by its owner. This prevents
  1717.   someone who controls a zone from doing things like @forcing an
  1718.   INHERIT object to @force its owner.
  1719.   
  1720. & VERBOSE
  1721.   VERBOSE
  1722.   An object set VERBOSE echoes the commands it executes to its owner
  1723.   before executing them. This differs from the PUPPET flag in that the
  1724.   owner sees the command itself, rather than the output from the command.
  1725.   This flag is extremely useful in debugging, especially if used in
  1726.   conjunction with the PUPPET flag. VERBOSE output follows the format
  1727.   "#<object>] <command>". Something like "#1300] @trigger me/va" is a
  1728.   good example of typical VERBOSE output.
  1729.  
  1730. & TERSE
  1731.   TERSE
  1732.   When an object is set TERSE, it does not see the descriptions or
  1733.   success/failure messages in rooms. This is a useful flag if you're
  1734.   on a slow connection or you're moving through a familiar area and
  1735.   don't want to see tons of text. This flag is only valid for players;
  1736.   objects belonging to TERSE players are automatically considered to
  1737.   be TERSE.
  1738.  
  1739. & SUSPECT
  1740.   SUSPECT
  1741.   This flag is only settable by wizards. Players with this flag have
  1742.   their connects, disconnects, name changes, and kills reported to
  1743.   all connected wizards.
  1744. & SAFE
  1745.   SAFE
  1746.   This flag, when set on an object, prevents the object from being
  1747.   destroyed via the @destroy command. The "@nuke" command must be
  1748.   used to recycle the object. Valuable objects should be protected
  1749.   by this flag.
  1750. & NO_TEL
  1751.   NO_TEL
  1752.   The NO_TEL command prevents objects in a room from being @teleported;
  1753.   mortals in the room cannot use @teleport, nor can other objects 
  1754.   @teleport them out. This flag is checked on the "absolute room" of an
  1755.   object; thus, if you are in a container in a room which is NO_TEL,
  1756.   you cannot use @teleport from that container. There is no way to
  1757.   get out of a NO_TEL room except by exiting in some "normal" manner,
  1758.   or by going "home". Puzzle rooms, prisons, and similar locations would
  1759.   probably benefit from this flag.
  1760. & IMMORTAL
  1761.   IMMORTAL
  1762.   If this flag, which is settable only by wizards, is set on an object,
  1763.   that object may not be killed by mortals. In addition, @allhalts do
  1764.   not affect IMMORTAL objects. Also, commands executed by IMMORTAL
  1765.   objects do not cost anything. This is useful for machines which need 
  1766.   to run continuously.
  1767. & ROYALTY
  1768.   ROYALTY
  1769.   If this flag is set on any type of object, then that object will
  1770.   be able to @tel and examine as if it was a wizard. Royalty players
  1771.   do not need money, nor are they affected by quotas or restricted
  1772.   building. Royalty is not able to change things like a wizard could. 
  1773.   Only wizards may set it on players, although players who are ROYALTY
  1774.   may set their objects ROYALTY.
  1775. & TRANSPARENT
  1776.   TRANSPARENT
  1777.   If this flag is set on an exit, when a player looks at the exit they
  1778.   will see the description and contents of the destination room following
  1779.   the exit's description.  The exit list and succ/fail messages of the
  1780.   room will NOT be displayed.
  1781.   If this flag is set on a room, it will display exits in "long" format.
  1782.   Instead of putting all the exits on one line under "Obvious exits:"
  1783.   it prints each exit on a line by itself, in the format:
  1784.   <Exit Name> leads to <Exit Destination>.
  1785.   Thus, you might have:
  1786.      Obvious exits:
  1787.      South leads to Joe's Room.
  1788.      East leads to City Park.
  1789.   instead of
  1790.      Obvious exits:
  1791.      South  East
  1792. & ABODE
  1793.   ABODE  If a room is set ABODE, any player can set his home there,
  1794.   and can set the homes of objects there.  It does not mean that a
  1795.   player can open an exit to that room, only that they can set their
  1796.   home there.  This flag should not be set unless you want to make the
  1797.   room a public 'living area'.
  1798. & CHOWN_OK
  1799.   CHOWN_OK  This flag, when set, allows you to transfer ownership to
  1800.   another player. To set it, you must be carrying the object. You 
  1801.   also have to be in the room if you want to set this flag on rooms 
  1802.   or exits.  After this flag is set, the new player may gain 
  1803.   ownership of the object by using the @chown command (See @chown).
  1804. & CONNECTED
  1805.   CONNECTED  This flag applies only to players and it shows if the 
  1806.   player is connected or not. Thus, each time you are connected to 
  1807.   the game, you should see the 'c' flag set, otherwise, you are DEAD!
  1808.   You cannot reset this flag, and it is used internally by the code 
  1809.   for things like tabulating players for the WHO list, etc.
  1810. & REDIRECT
  1811.   REDIRECT
  1812.   This flag is automatically set or reset when you start or end a
  1813.   redirection on something. Players may not set this flag.
  1814.   The presence of this flag just shows that an object is redirecting.
  1815.   The object redirected to is set in the 'REDIRECTION' attribute.
  1816.   (See @redirection for further details).
  1817. & DARK
  1818.   DARK      If a room is DARK, then no items are shown when a person 
  1819.   'looks' there. If a thing is DARK, then "look" does not list that 
  1820.   object in the room's Contents:, and if an exit is DARK, it doesn't 
  1821.   show up in the Obvious Exits: list.  Puppets and objects that can 
  1822.   listen cannot be DARK.  If your god wishes it so, objects and wizards 
  1823.   that are dark will be slightly disguised in speech and poses.  Such
  1824.   actions by these objects will show as being from Someone or Something
  1825.   depending on whether it was an object or wizard.
  1826. & DESTROY_OK
  1827.   DESTROY_OK   When set on an object, it allows any player to destroy
  1828.   it as long as the object is not locked against them. This is good 
  1829.   for things like notes, whereby the recipient can destroy the note 
  1830.   after reading it, instead of having to look for you to destroy it.
  1831. & ENTER_OK
  1832.   ENTER_OK   If an object or person is ENTER_OK, other players may 
  1833.   enter the object or person by using 'enter <object/person>.
  1834.   Only objects which are ENTER_OK may be entered, regardless of the
  1835.   enter lock. Players must also have the ENTER_OK set if they wish to
  1836.   be able to receive  things given to them by other players via the 
  1837.   'give <player> = <object>'.  
  1838. & GENDER
  1839.   GENDER    @set me=sex:<unassigned|male|female|neuter>. Default 
  1840.   unassigned. If a player's gender is set, %-substitutions will use 
  1841.   the appropriate pronoun for that player. Only  meaningful for 
  1842.   players. 
  1843.   See SUBSTITUTIONS.  
  1844. & GOING
  1845.   GOING     Used internally for the @destroy command, it is set on 
  1846.   rooms that are set to be destroyed. In the event that a player 
  1847.   decides they don't want to destroy the room after all then they can
  1848.   unset it.  
  1849. & HAVEN
  1850.   HAVEN     @set here=haven;@set me=haven. If a room is HAVEN, you 
  1851.   cannot kill in that room. If a player is set HAVEN, he cannot be 
  1852.   paged.  Bummer.
  1853. & KEY
  1854.   KEY     When set on an object prevents puppets from picking it up.
  1855.   When it is set on an exit, it prevents puppets from going through it.
  1856.   Objects that are KEY go home when the thing carrying them teleports
  1857.   or goes home.
  1858. & LINK_OK
  1859.   LINK_OK   If a something is LINK_OK, anyone can link exits to it (but 
  1860.   still not from it). Also, LINK_OK overrides the INHERIT protection
  1861.   against @trigger (although not @force or @set).
  1862.   See @link, INHERIT.
  1863. & UNFINDABLE
  1864.   UNFINDABLE
  1865.   
  1866.   If a player is set UNFINDABLE, he cannot be found by the @whereis 
  1867.   command. You also cannot use loc(), locate(), and similar functions
  1868.   to find his location.
  1869.   
  1870.   If a room is set UNFINDABLE, you cannot locate any of its contents
  1871.   via any means (@whereis, the loc() function, etc.)
  1872.   
  1873.   If a wizard is set UNFINDABLE, and he is idle past the allowable 
  1874.   maximum idle time, he will be set DARK automatically.
  1875. & FLOATING
  1876.   If a room is set floating, you will not be notified every 10 
  1877.   minutes or so that you have a disconnected room.
  1878. & OPAQUE
  1879.   OPAQUE   When set on a player, it prevents other players from 
  1880.   seeing what you are carrying in your inventory. This applies to
  1881.   everyone and everything, even wizards and royalty, or to stuff
  1882.   that you own.
  1883. & PLAYER
  1884.   PLAYER The PLAYER flag identifies you as a player. This flag cannot
  1885.   be reset by any player, not even a Wizard (not, yet, anyway 
  1886.   *grin*).  It is used mainly by the mush code to identify your 
  1887.   commands, check for validity of commands or locks etc. Generally, 
  1888.   just pretend it isn't even there.
  1889. & JUMP_OK
  1890.   When a room is set JUMP_OK, then that room can be teleported into
  1891.   by anyone. See @teleport.
  1892. & PUPPET
  1893.   PUPPET   @set <object> = puppet. Causes an object to grow eyes and 
  1894.   ears, and relay all it sees and hears to its owner.  
  1895.   See: @force, PUPPETS
  1896. & ROOM
  1897.   ROOM   This flag is automatically set on rooms when you @dig a new
  1898.   room. It cannot be changed. Rooms have the added advantage that 
  1899.   they can be saved from destruction by setting the room to !GOING 
  1900.   (SEE GOING).
  1901.   However, this can only be done if no other room/object was created 
  1902.   that overwrote your room when it was set for destruction.
  1903. & VISUAL 
  1904.   VISUAL The flag a lot of players have been waiting for. When set on
  1905.   your object, it allows other players to examine it and see all the
  1906.   object's attributes as if they owned the object. They cannot make 
  1907.   any changes to the object.
  1908. & QUIET
  1909.   QUIET     This flag when set on yourself prevents you from hearing 
  1910.   the 'set' or 'triggered' messages from any objects you own.  When 
  1911.   set on an object, only that object will not relay its messages.
  1912. & HALT
  1913.   HALT    While this flag is set, the object cannot perform any mush 
  1914.   actions, listen, be triggered, etc.
  1915. & GAGGED
  1916.   GAGGED   When set on a player, it disables him from doing anything 
  1917.   except moving and looking.  He cannot talk, page, build, pose, get 
  1918.   or drop objects. (Yet another consequence of annoying the wizards.)
  1919.   Only wizards can set this flag.
  1920. & STICKY
  1921.   STICKY    If a thing is STICKY, it goes home when dropped (See HOMES).
  1922.   It also goes home when an object carrying it teleports or goes home.
  1923.   If a room is STICKY, its drop-to is delayed until the last person leaves 
  1924.   (See DROP-TOs). This flag is only meaningful for things and rooms.  
  1925. & TEMPLE
  1926.   TEMPLE  If a room is TEMPLE, you can sacrifice things for pennies by 
  1927.   dropping them there. It has no meaning for players, things, or 
  1928.   exits. Only wizards can set this flag.  
  1929. & BUILDER
  1930.   BUILDER If a player has the BUILDER flag set, it means that all the
  1931.   building commands will work for them.  Without it, you can only 
  1932.   explore the world but not add to it. This is only settable by 
  1933.   Wizards.
  1934. & WIZARD
  1935.   WIZARD    If a person is WIZARD, they are a wizard, unkillable, 
  1936.   subject to fewer restrictions, and able to use wizard commands.  
  1937.   In general, WIZARDs can do anything using #<number> or *<player>. 
  1938.   Only player #1 can set and unset the WIZARD flag of other players. 
  1939.   No WIZARD can turn their own WIZARD flag off.
  1940. & NOSPOOF
  1941.   NOSPOOF   If an object is set NOSPOOF, @emits, @oemits, @remits and
  1942.   @pemits will be distinctively tagged to help prevent spoofing. This
  1943.   flag is only valid for players; objects belonging to NOSPOOF players
  1944.   are automatically considered NOSPOOF. Beware: the output format of
  1945.   NOSPOOF can mess up @listen and ^ patterns, giving unexpected results.
  1946.   See SPOOFING, @emit, @pemit, @remit, and @oemit.
  1947. & LISTENING
  1948.   There are two ways to listen for something in a room. The easiest way
  1949.   is to use a combination of @listen and @ahear/@aahear/@amhear. The
  1950.   second way is to use a "^" pattern in an attribute, similar to the way
  1951.   "$" is used for user-defined commands. This takes the form of:
  1952.   &<attribute> <object> = ^<pattern>:<action>
  1953.   The criterion for triggering a pattern-listen is the same as that for
  1954.   triggering an @ahear - the object cannot trigger its own listen patterns.
  1955.   Listen patterns are checked after the object's normal @listen attribute.
  1956.   To activate the listen patterns, the LISTENER flag must be set on the
  1957.   object. Only things may have listen patterns.
  1958.   Example:
  1959.   > &TEST object = ^* screams.:"Hello, %0.
  1960.   Object - Set.
  1961.   > :screams.
  1962.   Amberyl screams.
  1963.   > Object says "Hello, Amberyl."
  1964.  
  1965. & HERE
  1966.   HERE    The word 'here' refers to the room you are in. For example,
  1967.   to rename the room  you're in (if you control it), you could enter 
  1968.   "@name here= <new name>". 
  1969. & HOMES
  1970.   HOMES    Every thing or player has a home. This is where things go 
  1971.   when sacrificed,  players when they go home, or things with the 
  1972.   STICKY flag set go when dropped  (See STICKY). Homes are set with 
  1973.   the @link command. A thing's home defaults to  the room where it 
  1974.   was created, if you control that room, or your home. You can link 
  1975.   an exit to send players home (with their inventory) by 
  1976.   "@link <dir>=home".  Drop-tos can also be set to 'home'. 
  1977.   See DROP-TO and @link.
  1978. & LINKING  
  1979.   LINKING  You can link to a room if you control it, or if it is set 
  1980.   LINK_OK or ABODE. Being able to link means you can set the homes of
  1981.   objects or yourself to that  room if it is set ABODE, and can set 
  1982.   the destination of exits to that room if it is LINK_OK.
  1983.   See LINK_OK, ABODE and @link.  
  1984. & ME
  1985.   ME   The word 'me' refers to yourself. Some things to do when 
  1986.   starting out: 
  1987.   1) give  yourself a description with 
  1988.   "@describe me=<description>", then look at yourself  with 
  1989.   "look me". 
  1990.   2) set your gender, if you wish it known, with "@set me=male" or 
  1991.   "@set me=female"  (or "@set me=neuter" to be an 'it').  
  1992. & MONEY
  1993.   You will be given a daily allowance of pennies to spend in anything 
  1994.   you can find to spend it on.  See COSTS and SACRIFICING. 
  1995. & PUPPETS
  1996.   PUPPETS   An object is made into a puppet by doing 
  1997.   @set [object]=puppet.  Once an object is a puppet it will relay all 
  1998.   that it sees and hears to its master.  All objects created by a 
  1999.   puppet are owned by its master.  When puppets spend or earn pennies
  2000.   they are also taken from and given to its master. In order to 
  2001.   prevent puppets from screwing up puzzles objects may have the key 
  2002.   flag set, which will prevent puppets from picking the object up. A 
  2003.   puppet may be commanded by its master by:  
  2004.   @force [object]=command or by the shorthand version, 
  2005.   [name/# of puppet] command
  2006.  
  2007.   example:       
  2008.   @force fred="hi there. or     
  2009.   fred "hi there. or       
  2010.   #4342 "hi there.  
  2011. & ROBBERY
  2012.   ROBBERY   Robbing is not allowed on this MUSH. If you really 
  2013.   need money, ask your friendly neighborhood wizard, or @destroy
  2014.   some objects you no longer need.
  2015. & SACRIFICING
  2016.   SACRIFICING    You sacrifice a thing by dropping it in the temple. 
  2017.   Sacrificing an object gives you the value of an object. You can't 
  2018.   sacrifice something you own, and get money for it. If you have 
  2019.   >= 10000 pennies, all sacrifices are worth only 1 pennies. The 
  2020.   sacrifice value of a thing is set at creation by 
  2021.   "@create frob=cost", by the formula value=(cost/5)-1. Only a wizard
  2022.   can change the value of an object, once created.
  2023. & SUBSTITUTIONS
  2024.   SUBSTITUTIONS  All messages may contain %-substitutions, which 
  2025.   evaluate to gender-specific pronouns if the player's gender is set.
  2026.   They are:
  2027.   %s (subjective) = Name, he, she, it.
  2028.   %o (objective) = Name, him, her, it.
  2029.   %p (possessive) = Name's, his, her, its.
  2030.   %N (player's name) = Name.
  2031.   If you need a '%', use %%.
  2032.   Ex. '@ofail teapot=burns %p hand on the hot teapot.'
  2033.   See GENDER. 
  2034.  
  2035.   Other substitutions, such as %va-%vz, %wa-%wz, %xa-%xz, and %0-%9 
  2036.   may also be used and will be evaluated to v(?) (See V-FUNCTIONS)
  2037.   where ? is a-z or 0-9. In these substitutions and pronoun substituions,
  2038.   if the first letter of the name is capitalized, the first letter of
  2039.   the substitution will also be capitalized.
  2040.  
  2041.   Other possible substitutions are:
  2042.   %# (player number) = #<actor's number>. Equivalent to num(%N)
  2043.   %! (object number) = #<message holder's number>. Equivalent to num(me)
  2044.   %l (location number) = #<actor's location>. Like loc(%N).  This
  2045.      works even if the LOC() function would normally not, since the
  2046.      enactor has "volunteered" his location by triggering another object.
  2047.   %r (newline) = Carriage return and newline in output. Note that this
  2048.      counts as two characters, in functions like strlen().  (puts "\r\n")
  2049.   %t (tab) = Tab character in output.
  2050.   %b (blank) = Space in output.
  2051.   %_<attrname> This will give you the discreet value of ANY attribute you can
  2052.      read on the object.
  2053.  
  2054. & SUCCESS
  2055.   SUCCESS   You successfully use an object when you take it. You use 
  2056.   an exit successfully  when you go through it. You successfully use
  2057.   a room when you look around. See  ATTRIBUTES, @SUCCESS and @OSUCCESS. 
  2058. & TYPES OF OBJECTS
  2059.   TYPES OF OBJECTS    There are 4 types of objects: things, players, 
  2060.   exits, and rooms. The first  letter following an object's ID number
  2061.   indicates the type: P(layer), E(xit),  R(oom), otherwise, thing. 
  2062.   Things are inanimate objects that can be carried.  Players are 
  2063.   animate objects that can move and carry. Exits are the means by 
  2064.   which objects move from room to room. Rooms are locations that 
  2065.   contain objects and linked exits.
  2066. & ENACTOR
  2067.   The enactor is the thing that is doing something.  If one of your 
  2068.   Objects does something (through a @force or @trigger) it is the 
  2069.   enactor.  If one of your links or rooms does something (through a 
  2070.   @Asuc, @Afail or @Aenter) then YOU are the enactor and the action 
  2071.   happens as if you typed it in directly.  To determine the enactor 
  2072.   create an object to listen for the action with @ahear = :[v(N)].
  2073. & STACK
  2074.   V(0) through V(9) are the ten items on the stack.  Stack values can
  2075.   be set by either parameters after an @trigger or asterisk substitution
  2076.   in pattern matching.
  2077.   Example: @listen item=* foo *; @ahear item= [v(1)] bar [v(0)].
  2078. & @switch
  2079.   @switch [/<switch>] <string> = <expr1>, <action1> [,<exprN>, 
  2080.                                  <actionN>]... [,<default>]
  2081.   This is a general control structure which can be thought of as a
  2082.   combination if/then/else and switch/case. It compares <string> against
  2083.   the expressions <expr1>, <expr2>, ..., <exprN> until a match is found.
  2084.   It then performs the associated action list. It matches all expressions
  2085.   which conform to the string pattern, and executes all the associated
  2086.   actions. (To match only the first, use "@select"). If no match is found,
  2087.   the <default> is executed. Wildcards and the < and > operators are 
  2088.   allowed in the targets.
  2089.   This is the default. @switch also can take two switches, /all and
  2090.   /first. The default is /all; /first is equivalent to @select.
  2091.   Example:
  2092.     > @va thing = $foo *:@switch %0=*a*,:acks,*b*,:bars,*c*,:cheeps,:glurps
  2093.     > foo abc
  2094.     thing acks
  2095.     thing bars
  2096.     thing cheeps
  2097.     > foo xxx
  2098.     thing glurps
  2099.  
  2100. & @select
  2101.   @select <string> = <expr1>, <action1> [,<exprN>, <actionN>]... [,<default>]
  2102.   This is similar to @switch, except it only executes the action
  2103.   associated with the first expression which matches <string> - the
  2104.   targets are mutually exclusive. If no target is matched, the default
  2105.   actions are executed. This is equivalent to "@switch/first".
  2106.   Example:
  2107.     > @va thing = $foo *:@select %0=*a*,:acks,*b*,:bars,*c*,:cheeps,:glurps
  2108.     > foo abc
  2109.    thing acks
  2110.     > foo xxx
  2111.    thing glurps
  2112.  
  2113. & @trigger 
  2114.   @trigger can pass control and data (on the stack) between or within
  2115.   items.
  2116.   Example: @va item=@trigger me/vb=[v(0)]; @vb item = :[v(0)];
  2117.   @trigger item/va=foo.
  2118. & VERBS
  2119.   For most verbs there are three forms: Verb (what the Enactor sees),
  2120.   Overb (what others in the area see) and Averb (the action to be 
  2121.   taken when the event happens). Example: @Drop, @Odrop and @Adrop
  2122. & V-function
  2123.   The V() function is used to get attributes on an object, as
  2124.   well as another form of writing certain %-substitutions.
  2125.   v(N) is the name of the enactor, v(#) is the number of the
  2126.   enactor, v(!) is the number of the current object,
  2127.   v(L) is the number of the enactor's location, v(0) to v(9)
  2128.   are the stack variables. These are equivalent to %N, %#, %!,
  2129.   %L, and %0 to %9, respectively.
  2130.  
  2131.   When used to get attributes, this function takes the form
  2132.   V(<name of attribute>). This is equivalent to GET(me/<attribute>)
  2133.   but V() is faster.
  2134.  
  2135. & @scan
  2136.   @scan[/<switch>] <command>
  2137.   
  2138.   @scan gives you a list of all objects containing $commands (user-defined
  2139.   commands) which could match <command>. If given no switches, it checks
  2140.   you, your possessions, your location, objects in your location, the
  2141.   zone/parent room of your location, your zone, and objects in the master
  2142.   room. It does NOT stop when it gets a match, but rather, finds all 
  2143.   possible matches. It also tells how many commands on each object were
  2144.   matched. It does NOT scan objects that you do not control and are not
  2145.   set VISUAL.
  2146.   
  2147.   This command can take four switches:
  2148.      /room     --   just matches on your location and objects in it.
  2149.      /self     --   just matches on you and anything you're carrying.
  2150.      /zone     --   just matches on zones of your location and yourself.
  2151.      /globals  --   just matches on objects in the master room.
  2152. & @sweep
  2153.   @sweep [connected | here | inventory | exits ]
  2154.  
  2155.   @sweep gives you a list of all objects/players that are listening in
  2156.   the room you are currently in, as well as the objects you are
  2157.   carrying. Most objects only listen for a particular string or
  2158.   phrase, so they normally do not pose a problem if you need privacy.
  2159.   You will have to be careful of players and puppets since they will
  2160.   hear everything you say and do. (And might post the same to r.g.m!)
  2161.   AUDIBLE exits are also shown on an ordinary sweep, if the room is
  2162.   also AUDIBLE. (Audible exits aren't active unless the room is audible).
  2163.  
  2164.   The four command options can also be used as switches (i.e., you
  2165.   can use "@sweep/connected" instead of "@sweep connected"). 
  2166.   If the connected flag is given, only connected players and puppets
  2167.   owned by connected players will be shown in the @sweep.
  2168.   The "here" and "inventory" flags check only your location or
  2169.   inventory, respectively. "exits" only checks for AUDIBLE exits.
  2170.  
  2171. & @cpattr
  2172.   @cpattr <obj>/<attr> = <obj1>/<attr1> [,<obj2>/<attr2>,<obj3>/<attr3>,...]
  2173.   
  2174.   This command is used to copy <attr> on <obj> to the object-attribute
  2175.   pairs in a comma-separated list. For example:
  2176.   
  2177.   @cpattr test/va = test/vb, cube/va, tribble/foo
  2178.   
  2179.   would copy the VA attribute from object "test" to VB on "test",
  2180.   VA on "cube", and FOO on "tribble".  <objN> is matched as if
  2181.   you were performing a @set on it.
  2182. & SPOOFING
  2183.   Spoofing is the act of making other characters think that a person
  2184.   said or did something that they did not.  This is very easy to
  2185.   accomplish, and has some good effects, which is why it is allowed.
  2186.   Overabuse of this feature will result in its being made a wizard
  2187.   only feature. (Not to mention perhaps bringing down a few @toads on
  2188.   people) See also @emit, @pemit, @remit, @oemit and NOSPOOF.
  2189. & FUNCTIONS
  2190.   Functions are specialized commands used to manipulate strings and
  2191.   other input. Function take the general form:  [FUNCTION(<input>)]
  2192.     
  2193.   The brackets are used to delimit and force evaluation of the function 
  2194.   (or nested functions). The brackets can also be used to group functions 
  2195.   for the purposes of string concatenation. In general, more than one pair 
  2196.   of brackets is not required, but liberal use of them makes code easier to 
  2197.   read. You can nest an arbitrary number of brackets.
  2198.  
  2199.   Examples:
  2200.       > say [first(rest(This is a nice day))]
  2201.       You say, "is"
  2202.       > @va me=This is a 
  2203.       Wizard - Set.
  2204.       > @vb me=nice day
  2205.       Wizard - Set.
  2206.       > say [first([rest([v(va)] [v(vb)])])]
  2207.       You say, "is"
  2208.   
  2209.   See "help FUNCTION LIST" for a list of available functions.
  2210.  
  2211. & FUNCTION LIST
  2212.  
  2213.   Several major variants of functions are available. The help topics
  2214.   are listed below, together with a quick summary of the function type
  2215.   and some examples of that type of function.
  2216.  
  2217.   Attribute functions: attribute-related manipulations (GET, UFUN)
  2218.   Boolean functions:  produce 0 or 1 (false or true) answers  (OR, AND)
  2219.   Dbref functions: return dbref info related to objects (LOC, LEXITS)
  2220.   Information functions:  find out something about objects (FLAGS, MONEY)
  2221.   List functions:  manipulate lists (REVWORDS, FIRST)
  2222.   Math functions:  number manipuation (ADD, DIV)
  2223.   String functions:  string manipulation (ESCAPE, FLIP)
  2224.   Utility functions: general utilties (TIME, COMP)
  2225.   
  2226. & Attribute functions
  2227.   All these functions access attributes on an object.
  2228.   
  2229.   eval()        get()         grep()        lattr()       obj()
  2230.   poss()        subj()        ufun()        v-function    xget()
  2231.   zfun()
  2232.   
  2233. & Boolean functions
  2234.   Boolean functions all return 0 or 1 as an answer.
  2235.   
  2236.   and()         eq()          gt()          gte()         lt()
  2237.   lte()         neq()         not()         or()          xor()
  2238.     
  2239. & Dbref functions
  2240.   Dbref functions return a dbref or list of dbrefs related to some value
  2241.   on an object.
  2242.   
  2243.   con()         home()        lcon()        lexits()      loc()
  2244.   locate()      lsearch()     next()        num()         owner()
  2245.   parent()      pmatch()      rnum()        room()        zone()
  2246.   
  2247. & Information functions
  2248.   Information functions return values related to objects.
  2249.  
  2250.   conn()        elock()       flags()       hasflag()     idlesecs()
  2251.   lock()        lstats()      lwho()        mail()        money()
  2252.   name()        nearby()      type()
  2253.   
  2254. & List functions
  2255.   List functions take at least one space-separated list of words and 
  2256.   return transformed lists or one or more members of those lists.
  2257.   
  2258.   after()       before()      extract()     first()       iter()
  2259.   match()       member()      remove()      rest()        revwords()
  2260.   setdiff()     setinter()    setunion()    sort()        splice()
  2261.   wordpos()     words()
  2262.    
  2263. & Math functions
  2264.   Math functions take one or more numbers and return a numeric value.
  2265.   
  2266.   abs()         add()         dist2d()      dist3d()      div()
  2267.   max()         min()         mod()         mul()         sign()
  2268.   sub()
  2269.   
  2270. & String functions
  2271.   String functions take at least one string and return a transformed
  2272.   string, parts of a string, or a value related to the string(s).
  2273.   
  2274.   alphamin()    alphamax()    art()         capstr()      cat()
  2275.   comp()        edit()        escape()      flip()        lcstr()
  2276.   merge()       mid()         pos()         repeat()      secure()
  2277.   space()       strcat()      strlen()      switch()      ucstr()
  2278.  
  2279. & Utility functions
  2280.   These functions don't quite fit into any other category.
  2281.   
  2282.   beep()        convsecs()    convtime()    create()      die()
  2283.   dig()         isnum()       isword()        lnum()        open()        
  2284.   rand()        s-function    secs()        time()
  2285.   
  2286. & ISWORD()
  2287.   isword(<string>)
  2288.   
  2289.   This function returns 1 if every character in <string> is a letter,
  2290.   or 0, if any character isn't a letter.  Case does not matter.
  2291.     
  2292. & ISNUM()
  2293.   isnum(<string>)
  2294.  
  2295.   This function returns 1 if <string> is a number, and 0 if it is not.
  2296.   Numbers can begin with a '-' sign (for negatives), but the rest of
  2297.   the characters in the string must be digits.
  2298.   
  2299. & GREP()
  2300.   grep(<object>,<attrs>,<pattern>)
  2301.   
  2302.   This function returns a list of attributes on <object> containing
  2303.   <pattern>.  <attrs> is a wildcard pattern for attribute names to
  2304.   search; if you want to search all attributes, use "*".
  2305.   
  2306.   The list returned is similar to that returned by
  2307.   @grep/list <object>/<attrs>=<pattern>
  2308.   
  2309.   Parsing _does_ occur before this function is invoked. Therefore,
  2310.   "special" characters will need to be escaped out.  <pattern> is
  2311.   NOT wildcard matched.
  2312. & REPEAT()
  2313.   repeat(<string>,<number>)
  2314.   
  2315.   This function simply repeats <string>, <number> times.  No spaces are
  2316.   inserted between each repetition.
  2317.   
  2318.   Example:
  2319.     > say [repeat(Test, 5)]
  2320.     You say, "TestTestTestTestTest"
  2321.   
  2322. & SPLICE()
  2323.   splice(<list1>, <list2>, <word>)
  2324.   
  2325.   This function splices <list1> and <list2> together. <list1> and <list2>
  2326.   are space-separated lists of words
  2327.   
  2328.   If a word in <list1> is the same as <word>, it is replaced by the word
  2329.   in the corresponding position in <list2>.  Both lists must have the
  2330.   same number of words.
  2331.   
  2332.   Example:
  2333.     > say [splice(foo bar baz,eek moof gleep,bar)]
  2334.     You say, "foo moof baz"
  2335.   
  2336. & MERGE()
  2337.   merge(<string1>, <string2>, <character>)
  2338.   
  2339.   This function merges <string1> and <string2>, depending on <character>.
  2340.   If a character in <string1> is the same as <character>, it is replaced
  2341.   by the character in the corresponding position in <string2>.  The two
  2342.   strings must be of the same length.
  2343.   
  2344.   Example:
  2345.     > say [merge(AB--EF,abcdef,-)]
  2346.     You say, "ABcdEF"
  2347.  
  2348.   Spaces need to be treated specially. A null character is considered to
  2349.   equal a space, for <character>.
  2350.   
  2351.   Example:
  2352.     > say [merge(AB[space(2)]EF,abcdef,)]
  2353.     You say, "ABcdEF"
  2354.   
  2355. & EDIT()
  2356.   edit(<string>, <search>, <replace>)
  2357.   edit(<string>, $, <string to append>)
  2358.   edit(<string>, ^, <string to prepend>)
  2359.  
  2360.   This functions in a similar way to the @edit command; instead of
  2361.   taking an attribute from an object, it takes an arbitrary string.
  2362.   The first form of the function searches <string> for <search> and
  2363.   replaces it with <replace>; the other two forms append and prepend
  2364.   text to <string>, respectively.
  2365.   
  2366.   See also "help @edit".
  2367. & SWITCH()
  2368.   switch(<string>, <expr1>, <list1>, [<exprN>, <listN>], ...[<default>])
  2369.  
  2370.   This function matches <string> against the <expr>essions, returning the
  2371.   corresponding <list>. If nothing is matched, the <default> is returned.
  2372.   This is similar to @switch/first, but instead of executing the list,
  2373.   it simply returns it. Wildcard patterns are allowed. There may be
  2374.   a maximum of ten arguments total to the function.
  2375.  
  2376.   Example:
  2377.     > say switch(test, *a*, foo, *b*, bar, *t*, neat, baz)
  2378.     You say, "neat"
  2379.     > say switch(ack, *a*, foo, *b*, bar, *t*, neat, baz)
  2380.     You say, "foo"
  2381.     > say switch(moof, *a*, foo, *b*, bar, *t*, neat, baz)
  2382.     You say, "baz"
  2383.  
  2384. & REVWORDS()
  2385.   revwords(<list of words>)
  2386.  
  2387.   This function reverses the order of words in a list.
  2388.  
  2389.   Example:
  2390.     > say revwords(foo bar baz eep)
  2391.     You say, "eep baz bar foo"
  2392.   
  2393. & SETDIFF()
  2394.   setdiff(<list1>, <list2>)
  2395.  
  2396.   This function returns the difference of two sets -- i.e., the 
  2397.   elements in <list1> that aren't in <list2>. The list that
  2398.   is returned is sorted.
  2399.  
  2400.   Example:
  2401.     > say setdiff(foo baz gleep bar, bar moof gleep)
  2402.     You say, "baz foo"
  2403.  
  2404. & SETINTER()
  2405.   setinter(<list1>, <list2>)
  2406.  
  2407.   This function returns the intersection of two sets -- i.e., the
  2408.   elements that are in both <list1> and <list2>. The list that is
  2409.   returned is sorted.
  2410.  
  2411.   Example:
  2412.     > say setinter(foo baz gleep bar, bar moof gleep)
  2413.    You say, "bar gleep"
  2414.  
  2415. & SETUNION()
  2416.   setunion(<list1>, <list2>)
  2417.  
  2418.   This function returns the union of two sets -- i.e., all the
  2419.   elements of both <list1> and <list2>, minus any duplicate
  2420.   elements. Think of it as CAT() without words duplicated.
  2421.   The list returned is sorted.
  2422.  
  2423.   Example:
  2424.     > say setunion(foo baz gleep bar, bar moof gleep)
  2425.     You say, "bar baz foo gleep moof"
  2426.   
  2427. & CONVSECS()
  2428.   convsecs(<seconds>)
  2429.  
  2430.   This function converts seconds to a time string, based on how many
  2431.   seconds the number is after Jan 1, 1970.
  2432.  
  2433.   Example:
  2434.   > say [secs()]
  2435.   You say, "709395750"
  2436.   > say [convsecs(709395750)]
  2437.   You say, "Wed Jun 24 10:22:54 1992"
  2438.  
  2439. & CONVTIME()
  2440.   convtime(<time string>)
  2441.  
  2442.   This functions converts a time string to the number of seconds since 
  2443.   Jan 1, 1970. A time string is of the format: Ddd MMM DD HH:MM:SS YYYY
  2444.   where Ddd is the day of the week, MMM is the month, DD is the day
  2445.   of the month, HH is the hour in 24-hour time, MM is the minutes,
  2446.   SS is the seconds, and YYYY is the year.
  2447.   If you supply an incorrectly formatted string, it will return -1.
  2448.  
  2449.   Example:
  2450.   > say [time()]
  2451.   You say, "Wed Jun 24 10:22:54 1992"
  2452.   > say [convtime(Wed Jun 24 10:22:54 1992)]
  2453.   You say, "709395774"
  2454.  
  2455. & IDLESECS()
  2456.   idlesecs(<player name>)
  2457.  
  2458.   This function returns the number of seconds a player has been idle,
  2459.   much as WHO does. <player name> must be the full name of a player.
  2460.   Players who are not connected have an idlesecs of "-1", as do
  2461.   dark wizards, when idlesecs() is used on them by a non-priv'ed player.
  2462.  
  2463. & CONN()
  2464.   conn(<player name>)
  2465.  
  2466.   This function returns the number of seconds a player has been
  2467.   connected. <player name> must be the full name of a player.
  2468.   Players who are not connected have a conn value of "-1", as do
  2469.   dark wizards, when conn() is used on them by a non-priv'ed player.
  2470.  
  2471. & PARENT()
  2472.   parent(<object>)
  2473.  
  2474.   This function returns the dbref number of an object's parent. You
  2475.   must control the object. The parent of a player is always #-1.
  2476.  
  2477. & CREATE()
  2478.   create(<object>, <cost>)
  2479.  
  2480.   This function creates an object with name <object> for <cost> pennies,
  2481.   and returns the dbref number of the created object.
  2482.  
  2483. & OPEN()
  2484.   open(<exit name>, <room>)
  2485.  
  2486.   This function opens an exit called <exit name> and links it to
  2487.   <room>, which must be a dbref number. It returns the dbref number
  2488.   of the new exit.
  2489.  
  2490. & DIG()
  2491.   dig(<name>, <exit to>, <exit from>)
  2492.  
  2493.   This function digs a room called <name>, and then opens and links
  2494.   <exit to> and <exit from>, like the normal @dig command. It returns
  2495.   the dbref number of the new room.
  2496.  
  2497. & HOME()
  2498.   home(<object>)
  2499.  
  2500.   Returns the object's 'home'.  This is the home for a player or thing,
  2501.   the drop-to of a room, or source of an exit.
  2502.  
  2503. & ROOM()
  2504.   room(<object>)
  2505.  
  2506.   Returns the "absolute" location of an object. This is always a room;
  2507.   it is the container of all other containers of the object. The
  2508.   "absolute" location of an object is the place @lemit messages are
  2509.   sent to and NO_TEL status determined.
  2510.   You must control the object, be a wizard or royalty, or be near
  2511.   the object in order for this function to work. The exception to this
  2512.   are players; if <object> is a player, the ROOM() function may be
  2513.   used to find the player's absolute location if the player is not
  2514.   set UNFINDABLE.
  2515.  
  2516. & LOCATE()
  2517.   locate(<looker>, <name>, <parameters>)
  2518.  
  2519.   This function attempts to find the number called <name> relative to
  2520.   <looker>. You must control <looker>. This is a bit like the NUM()
  2521.   function, but with a wider, controllable "range".
  2522.  
  2523.   You can control the preferred type of the match with:
  2524.     E   -   Exits
  2525.     L   -   Unlocked exits preferred over locked exits
  2526.     N   -   No type (this is the default)
  2527.     P   -   Players
  2528.     R   -   Rooms
  2529.     T   -   Things
  2530.   If you specify more than one type, the last one will be preferred.
  2531.  
  2532.   (Read "help locate2" for more.)
  2533.  
  2534. & LOCATE2
  2535.  
  2536.   You can control where to look with:
  2537.     a   -   Absolute match (look for #<object>)
  2538.     e   -   Exits in <looker>'s location
  2539.     h   -   "here"  (the location of <looker>)
  2540.     i   -   Inventory of <looker>
  2541.     m   -   "me"  (<looker> itself)
  2542.     n   -   Neighbors (other objects in same location as <looker>)
  2543.     p   -   Player names prefixed by '*'
  2544.     *   -   All of the above (try a complete match)
  2545.  
  2546. Just string all the parameters together, without separating them by
  2547. spaces, i.e.  LOCATE(#100, Test, Tn)  would check #100's neighbors
  2548. for an object named "Test", preferring a thing over other types.
  2549.  
  2550. & BEEP()
  2551.   beep(<number>)
  2552.  
  2553.   Sends <number> "alert" bell characters. <number> must be in the range
  2554.   1 to 5. This function may only be used by wizards.
  2555. & SPACE()
  2556.   space(<number>)
  2557.  
  2558.   Prints <number> number of spaces. Useful for times when you want to
  2559.   be able to use lots of spaces to separate things. For example,
  2560.   "a[space(5)]b  would print, "Amberyl says, "a     b"".
  2561.  
  2562. & LSTATS()
  2563.   lstats(<player>)
  2564.  
  2565.   This function returns the breakdown of objects in the database, in
  2566.   a format similar to "@stats". If <player> is "all", a breakdown is
  2567.   done for the entire database. Otherwise, the breakdown is returned
  2568.   for that particular player. Only wizards can LSTATS() other players.
  2569.   The list returned is in the format:
  2570.   <Total objects> <Rooms> <Exits> <Things> <Players> <Garbage>
  2571. & STRCAT()
  2572.   strcat(<string1>, <string2>)
  2573.  
  2574.   Concatanates two strings together, with no space between them.
  2575.   For example, strcat(foo bar,baz blech) will return the string
  2576.   "foo barbaz blech".
  2577.  
  2578. & ABS()
  2579.   abs(<number>)
  2580.  
  2581.   Returns the absolute value of a number. i.e. ABS(-4) returns 4;
  2582.   ABS(2) returns 2, etc.
  2583. & SIGN()
  2584.   sign(<number>)
  2585.  
  2586.   Essentially returns the sign of a number -- 0 if the number is 0,
  2587.   1 if the number is positive, and -1 if the number is negative.
  2588.   Thus, SIGN(-4) is -1, SIGN(2) is 1, and SIGN(0) is 0.
  2589. & ZFUN()
  2590.   zfun(<user function name>, <arg 0>, <arg1>, ... <arg8>)
  2591.  
  2592.   This is essentially identical to UFUN(), but the attribute corresponding
  2593.   to the user function name is read from the ZMO of the object instead
  2594.   of from the object itself. In order to read the attribute from the ZMO,
  2595.   one of the following criteria must be met:
  2596.  
  2597.   1. The object must be WIZARD or ROYALTY.
  2598.   2. The object must control the ZMO.
  2599.   3. The object's owner must own the attribute on the ZMO.
  2600.   4. The ZMO must be VISUAL.
  2601.   5. The ZMO must be LINK_OK.
  2602.  
  2603.   See the help for UFUN() for more details on user-defined functions.
  2604.  
  2605. & UFUN()
  2606.   ufun([<object>/]<user function name>, <arg 0>, <arg1>, ... <arg 8>)
  2607.  
  2608.   This allows you to create your own functions and evaluate them.
  2609.   <user function name> is the attribute that contains the desired
  2610.   user-defined function. Supplying <object> is optional; if you
  2611.   do not, the attribute will be read off the object that is
  2612.   evaluating the UFUN().
  2613.   
  2614.   <arg 0>, <arg 1>, ... <arg 8> are the functions that get passed
  2615.   to the user function as v(0), v(1), etc. (as in @trigger).
  2616.   You can pass up to 8 arguments. v(9) is always null.
  2617.   
  2618.   This function is also known as U()  (alias for 2.0 compatibility).
  2619.  
  2620.   See "help UFUN2" for more.
  2621.   
  2622. & UFUN2
  2623.   Example:
  2624.   
  2625.   > @va Object=$test *:"[ufun(testfun, v(0))]; @emit [v(0)]
  2626.   > &testfun object=[strlen(v(0))] [ucstr(v(0))]
  2627.   > test string
  2628.   Foo says, "6 STRING"
  2629.   string
  2630.   
  2631.   See "help UFUN3" for more.
  2632.  
  2633. & UFUN3
  2634.   A user-defined function may be as complex as you want it to be.
  2635.   If the evaluation order doesn't quite seem right, adding escapes
  2636.   or breaking up the expression will probably help.
  2637.     
  2638.   Excessive recursion in either a UFUN() or ZFUN() will cause it to
  2639.   return "#-1 EXCESSIVE RECURSION ERROR", and sets the object HALT.
  2640.   An object which is HALT may not evaluate either UFUN() or ZFUN();
  2641.   those functions will then return "#-1 OBJECT HALTED".
  2642.   
  2643. & EVAL()
  2644.   eval(<object>, <attribute>)
  2645.  
  2646.   This function works identically to the XGET function - it retrieves
  2647.   <attribute> from <object> - except that it also performs pronoun 
  2648.   substitution. For example, if something uses "[v(va)]%r[v(vb)]" in
  2649.   its description, EVAL() called on that object's desc will evaluate
  2650.   the VA and VB attributes correctly, with respect to the object,
  2651.   which neither the GET nor XGET do.
  2652.   
  2653. & ESCAPE()
  2654.   escape(<string>)
  2655.  
  2656.   The ESCAPE() function "escapes out" potentially "dangerous" characters,
  2657.   preventing function evaluation in the next pass of the parser. It 
  2658.   returns <string> after adding the escape character ('\') at the 
  2659.   beginning of the string, and before the following characters:
  2660.   %  ;  [  ]  {  }  \
  2661.   
  2662.   This function prevents strings entered by players from causing side 
  2663.   effects, such as performing an unintended GET() of an attribute. It
  2664.   is only needed when the resulting string will be passed through @force
  2665.   or used as an attribute for an object (like the description of a mail
  2666.   message object).  Since the function preserves the original string, 
  2667.   it is, in most cases, a better choice than SECURE().
  2668.   
  2669. & ITER()
  2670.   iter(<list>,<pattern>)
  2671.   
  2672.   This works in a manner very similar to @map, except that it returns
  2673.   a string directly.  <list> is a space-separated list of words, and
  2674.   <pattern> is what will be "mapped" onto each element of the list,
  2675.   with the token "##" being replaced successively by the next word
  2676.   in the list.  The result is concatenated and returned as a space
  2677.   separated list.  This is similar to @dolist, but the results are
  2678.   made into a list rather than executed.
  2679.   
  2680.   <pattern> needs to be put inside curly braces. This prevents the
  2681.   <pattern> from being evaluated before it is passed to ITER().
  2682.   If you use [] function delimiters in <pattern> (because you want
  2683.   the result of more than one function), then those delimiters must
  2684.   be escaped (with '\').
  2685.   
  2686.   See "help ITER2" for more.
  2687.   
  2688. & ITER2
  2689.   Examples:
  2690.   
  2691.   > say [iter(This is a test string., {strlen(##)})]
  2692.   You say, "4 2 1 4 7"
  2693.  
  2694.   (without the braces)
  2695.   > say [iter(This is a test string., strlen(##))]
  2696.   You say, "2 2 2 2 2"
  2697.   
  2698.   > say [iter(lnum(5), {mul(add(##,##),2)})]
  2699.   You say, "0 4 8 12 16"
  2700.   
  2701.   (use of escaped brackets)
  2702.   > say [iter(lexits(here), {\[name(##)\] (owned by \[name(owner(##))\])})]
  2703.   You say, "South (owned by Claudia) North (owned by Roy)"
  2704.   
  2705. & PMATCH()
  2706.   pmatch(<string>)
  2707.  
  2708.   Given the partial name of a player, it returns that player's dbref
  2709.   number. This partial name completion works identically to the partial
  2710.   name completion of the "page" command - i.e. it first attempts to match
  2711.   the normal names of all players (connected or not), and if that fails,
  2712.   it tries to match the partial names of connected players. If no player
  2713.   is matched, it returns "#-1". If more than one match is possible for
  2714.   a partial name, it returns "#-2".
  2715.  
  2716. & BEFORE()
  2717.   before(<string1>, <string2>)
  2718.  
  2719.   Returns the portion of <string1> that occurs before <string2>.
  2720.   If <string2> isn't in <string1>, <string1> is returned.
  2721.  
  2722.   Examples:
  2723.    > think before(foo bar baz,bar)
  2724.    foo
  2725.    > think before(foo bar baz,r)
  2726.    foo ba
  2727.  
  2728. & AFTER()
  2729.   after(<string1>, <string2>)
  2730.  
  2731.   Returns the portion of <string1> that occurs after <string2>.
  2732.   If <string2> isn't in <string1>, the function returns a null string.
  2733.  
  2734.   Examples:
  2735.    > think after(foo bar baz,bar)
  2736.     baz
  2737.    > think after(foo bar baz,ba)
  2738.    r baz
  2739.  
  2740. & DIE()
  2741.   die(<number of times to roll die>, <number of sides on die>)
  2742.  
  2743.   This function simulates rolling dice. It "rolls" a die with a given
  2744.   number of sides, a certain number of times, and sums the results.
  2745.   For example, DIE(2, 6) would roll "2d6" - two six-sided dice,
  2746.   generating a result in the range 2-12.
  2747. & SECS()
  2748.   secs()
  2749.  
  2750.   This function takes no arguments, and returns the number of elapsed
  2751.   seconds since midnight, January 1, 1970. This is a good way of
  2752.   synchronizing things that must run at a certain time.
  2753. & SECURE()
  2754.   secure(<string>)
  2755.  
  2756.   This function returns <string> with all "dangerous" characters replaced
  2757.   by spaces. Dangerous characters are ( ) [ ] { } $ % , and ;
  2758.   This can make output slightly ugly, but it's a good way of preventing
  2759.   other people from doing nasty things with your objects.
  2760.  
  2761.   See also:  ESCAPE()
  2762.  
  2763. & ZONE()
  2764.   zone(<object>)
  2765.  
  2766.   Returns the object's 'zone'. This is the dbref of the master object
  2767.   which defines the zone.
  2768.  
  2769. & LATTR()
  2770.   lattr(<object>)
  2771.  
  2772.   Returns a space-separated list of the attribute names on the object.
  2773.   You must either be a Wizard or Royalty, own the object, or have the
  2774.   object set VISUAL in order to use this function on the object.
  2775.  
  2776. & LSEARCH()
  2777.   lsearch(<player>, <class>, <restriction>)
  2778.  
  2779.   This function is similar to the @search command, except it returns
  2780.   just a list of dbref numbers. It is computationally expensive, and
  2781.   costs 100 pennies to perform.
  2782.   The function must have three arguments. Wizards can specify "all"
  2783.   or <player> for the <player> field; mortals must use "me".
  2784.   If you do not want to restrict something, use "none" for <class>
  2785.   and/or <restriction>.
  2786.  
  2787.   Possible <class>es are TYPE, NAME, ZONE, PARENT EXITS, OBJECTS, ROOMS,
  2788.   PLAYERS, and FLAGS. If <class>=TYPE, the possible <restrict>ions are
  2789.   OBJECTS, ROOMS, EXITS, and PLAYERS. If <class>=NAME, only objects with 
  2790.   <restriction> whose name matches <restriction> will be listed. If 
  2791.   <class>=EXITS, OBJECTS, ROOMS, or PLAYERS, only objects of that type 
  2792.   and whose name matches <restriction> will be listed. If <class>=ZONE, 
  2793.   only objects belonging to the zone <restriction> will be listed. If
  2794.   <class>=PARENT, only children of parent <restriction> will be listed.
  2795.   For ZONE and PARENT, <restriction> must be specified as a dbref number. 
  2796.   If <class>=FLAGS, only objects with the list of flags specified by 
  2797.   <restriction> will be listed. Only wizard and royalty may obtain 
  2798.   information about other players.
  2799.  
  2800.   Examples:
  2801.     lsearch(all, flags, Wc)     <-- lists all connected wizards.
  2802.     lsearch(me, type, rooms)    <-- lists all rooms owned by me.
  2803.  
  2804. & ALPHAMIN()
  2805.   alphamin(<word1>, <word2>, <word3>, ...)
  2806.  
  2807.   Takes up to ten word arguments, and returns the word which is
  2808.   lexicographically smallest.
  2809. & ALPHAMAX()
  2810.   alphamax(<word1>, <word2>, <word3>, ...)
  2811.  
  2812.   Takes up to ten word arguments, and returns the word which is
  2813.   lexicographically biggest.
  2814. & SORT()
  2815.   sort(<word1> <word2> <word3> ...)
  2816.   
  2817.   Takes a list of words, and sorts them into lexicographic order. It 
  2818.   returns a space-separated list of words. Note that the function
  2819.   should can also handle numbers, if the numbers all have the same
  2820.   number of digits.
  2821.   
  2822. & SUBJ()
  2823.   subj(<object>)
  2824.  
  2825.   Returns the subjective pronoun - he/she/it - for an object.
  2826. & OBJ()
  2827.   obj(<object>)
  2828.  
  2829.   Returns the objective pronoun - him/her/it - for an object.
  2830. & POSS()
  2831.   poss(<object>)
  2832.  
  2833.   Returns the possessive pronoun - his/her/its - for an object.
  2834. & TYPE()
  2835.   type(<object>)
  2836.  
  2837.   This function returns the type of an object - PLAYER, THING, EXIT,
  2838.   or ROOM. See "help types of objects" for more.
  2839. & RNUM()
  2840.   rnum(<room number>, <object>)
  2841.  
  2842.   This function returns the dbref number of an object (player, thing, or
  2843.   exit). The object must be in the specified room. This function is
  2844.   essentially identical to NUM(), except it matches things in the
  2845.   specified room rather than the room that you are in. The RNUM()
  2846.   function is meant to be used in conjunction with Master Room objects.
  2847. & MAX()
  2848.   max(<num1>, <num2>, ..., ...)
  2849.  
  2850.   This function returns the largest number in its list of arguments.
  2851.   It can take up to ten numbers as arguments.
  2852. & MIN()
  2853.   min(<num1>, <num2>, ..., ...)
  2854.  
  2855.   This function returns the smallest number in its list of arguments.
  2856.   It can take up to ten numbers as arguments.
  2857. & MAIL()
  2858.   mail(<mail message #>)
  2859.  
  2860.   This function returns a message corresponding to that mail message
  2861.   number in your MUSH mailbox. This function can be used to forward
  2862.   mail, or as a way to simply transfer mail messages to attributes
  2863.   on an object.
  2864. & XGET()
  2865.   xget(<object>, <attribute>)
  2866.  
  2867.   This function is identical to get() in purpose, but a comma instead of
  2868.   a slash separates object and attribute. Unlike get(), xget() allows
  2869.   nesting of functions, and multiple nested xgets. Please see "help get()"
  2870.   for more details on the use of this function.
  2871.  
  2872. & ART()
  2873.   art(<string>)
  2874.  
  2875.   This function returns the proper article, "a" or "an", based on whether
  2876.   or not <string> begins with a vowel.
  2877. & LWHO()
  2878.   lwho()
  2879.  
  2880.   This returns a list of the dbref numbers for all currently-connected
  2881.   players. When mortals use this function, the dbref numbers of DARK
  2882.   wizards do NOT appear on the dbref list.
  2883. & HASFLAG()
  2884.   hasflag(<object>, <flag name>)
  2885.  
  2886.   Returns 1 if the object has the named flag, and 0 if it does not.
  2887.   You do not have to control the object.
  2888.   Example: hasflag(me, connected) will return "1"
  2889. & DIST2D()
  2890.   dist2d(x1, y1, x2, y2)
  2891.  
  2892.   Returns the integer distance between two points in the Cartesian
  2893.   plane that have coordinates (x1, y1) and (x2, y2).
  2894. & DIST3D()
  2895.   dist3d(x1, y1, z1, x2, y2, z2)
  2896.  
  2897.   Returns the integer distance between three points in space, with
  2898.   coordinates (x1, y1, z1) and (x2, y2, z2).
  2899. & WORDPOS()
  2900.   wordpos(<string>, <number>)
  2901.  
  2902.   Returns the number of the word within <string> where the <number>th
  2903.   character falls. Characters and words are numbered starting with 1,
  2904.   and spaces between words are treated as belonging to the word that
  2905.   follows them. If <number> is not within the string, #-1 is returned.
  2906.   Example: wordpos(foo bar baz, 5) returns "2"
  2907. & LCSTR()
  2908.   lcstr(<string>)
  2909.  
  2910.   Returns <string> with all letters converted to lowercase.
  2911.   Example: lcstr(Foo BAR bAz) returns "foo bar baz"
  2912. & UCSTR()
  2913.   ucstr(<string>)
  2914.  
  2915.   Returns <string> with all letters converted to uppercase.
  2916.   Example: ucstr(Foo BAR baz) returns "FOO BAR BAZ"
  2917. & CAPSTR()
  2918.   capstr(<string>)
  2919.   
  2920.   Returns <string> with the first character capitalized.
  2921.   Example: capstr(foo bar baz) returns "Foo bar baz"
  2922. & NEARBY()
  2923.   nearby(<object 1>, <object 2>)
  2924.  
  2925.   Returns 1 if object 1 is "nearby" object 2. "Nearby" is defined as:
  2926.   object 1 is in the same location as object 2, or,
  2927.   object 1 is being carried by object 2, or,
  2928.   object 1 is carrying object 2.
  2929.   You must control at least one of the objects.
  2930. & FLIP()
  2931.   flip(<string>)
  2932.  
  2933.   This function reverses a string. For example, "flip(foo bar baz)"
  2934.   returns "zab rab oof".
  2935. & MONEY()
  2936.   money(<object>)
  2937.  
  2938.   returns the amount of money <object> has.
  2939. & LCON()
  2940.   lcon(<object>)
  2941.  
  2942.   returns a list of the dbrefs of all contents in a room that you can
  2943.   see.
  2944. & LEXITS()
  2945.   lexits(<object>)
  2946.  
  2947.   returns a list of the dbrefs of all the non-dark exits in the current
  2948.   room.
  2949. & WORDS()
  2950.   words(<string>)
  2951.  
  2952.   words() returns the number of words in a string.
  2953. & SUB()
  2954.   sub(<num>, <num>)
  2955.  
  2956.   Sub() returns the integer subtraction of two numbers.
  2957. & LOCK()
  2958.   lock(<object>[/<locktype>])
  2959.  
  2960.   lock() returns the text string equivalent of the lock on an object that
  2961.   you control. You can also provide an "enter", "use", "tport", or "page" 
  2962.   switch after the object, if you want to check something other than the
  2963.   regular lock.
  2964. & ELOCK()
  2965.   elock(<object>[/<locktype>], <victim>)
  2966.  
  2967.   elock() returns 1 if the <victim> would pass the lock on <object>,
  2968.   and 0 if it would fail. You do not need to control either object.
  2969.   
  2970.   You can also provide an "enter", "use", "tport", or "page" switch
  2971.   after the object, if you want to check something other than the
  2972.   regular lock.
  2973. & GET()
  2974.   get(<object>/<attribute>)
  2975.  
  2976.   The get function will be replaced by the string stored in the
  2977.   attribute of the object. You may get the attributes of objects you
  2978.   control, the attributes you control on other objects, and publicly
  2979.   accessible attributes.
  2980.   Note: The substitutions %va for [get(me/va)], %vb for [get(me/vb)] 
  2981.   are legal, assuming it's not in a compound expression. 
  2982.   [first(rest(%va))] would not work where [first(rest(get(me/va)))]
  2983.   would.
  2984. & TIME()
  2985.   time()
  2986.  
  2987.   Gives you the current time on the MUSH.
  2988.   WARNING!  This is the time on the machine that the mud is running
  2989.   on, and not where you are.
  2990. & RAND()
  2991.   rand(<num>)
  2992.  
  2993.   Rand returns an interger between 0 and num-1.
  2994. & EXIT()
  2995.   exit(<object>)
  2996.  
  2997.   Exit returns the first exit on the list of exits in the object.
  2998.   Dark exits are not listed.  See Next for the method for seeing the
  2999.   rest of the exits in an object.
  3000. & ADD()
  3001.   add(<number>,<number>)
  3002.  
  3003.   Add returns the integer sum of the two numbers.
  3004. & MUL()
  3005.   mul(<number>,<number>)
  3006.  
  3007.   Mul returns the integer multiple of the two numbers.
  3008. & DIV()
  3009.   div(<number>,<number>)
  3010.  
  3011.   Div returns the integer quotient of the first number divided by
  3012.   the second number.  See MOD.
  3013. & MOD()
  3014.   mod(<number>,<number>)
  3015.  
  3016.   Mod returns the remainder of the interger division of the first
  3017.   number by the second.  See DIV.
  3018. & LNUM()
  3019.   lnum(<number>)
  3020.  
  3021.   Lnum returns a list of numbers, from 0 to <number - 1>. For example,
  3022.   lnum(4) returns the list "0 1 2 3". This is useful for creating loops.
  3023.  
  3024. & FIRST()
  3025.   first(<string>)
  3026.  
  3027.   Returns the first word of a string, that is, everything to the left
  3028.   of the first space in the string, or the entire string if there are
  3029.   no spaces in the string.  See REST.
  3030. & REST()
  3031.   rest(<string>)
  3032.  
  3033.   Rest takes a string, returns all the string except the first word, 
  3034.   that is, everything to the right of the first space, or an empty 
  3035.   string, or the empty string if there are no spaces in the string.  
  3036.   See FIRST.
  3037. & STRLEN()
  3038.   strlen(<string>)
  3039.  
  3040.   Returns the length of the string in a numerical string.
  3041. & MID()
  3042.   mid(<string>, <first>, <length>)
  3043.  
  3044.   Mid returns a segment of the string, the <length> characters to the
  3045.   right of the <first> character.  Note that the first character in a
  3046.   string is numbered zero, and not one.
  3047. & COMP()
  3048.   comp(<string1>, <string2>)
  3049.  
  3050.   Comp compares two strings.  It returns 0 if they are the same, 1 if
  3051.   string2 is less than/preceeds alphabetically string2, and -1 
  3052.   otherwise.
  3053. & S-FUNCTION
  3054.   s(string)
  3055.  
  3056.   This function performs pronoun substitution in a string, and then 
  3057.   returns that string.  As usual, %n is the name, %s the subjective
  3058.   pronoun, %o the objective, and %p the possessive.  It is important 
  3059.   to note that the pronoun is that of the triggering object.
  3060.  
  3061.   So, if the ve of an object were: "[s(This is %n)], and I were to 
  3062.   type @trigger <object>/ve, it would return "This is <myname>", but 
  3063.   if vf were @trigger me/ve, then triggering the vf makes the ve 
  3064.   return "This is <object>"
  3065.     
  3066. & POS()
  3067.   pos(<string1>,<string2>)
  3068.  
  3069.   This function returns the position that string1 begins in string2,
  3070.   with the first position being 1.  
  3071.   If string1 is not in string2, then it returns -1.
  3072. & MATCH()
  3073.   match(<string>, <pattern>)
  3074.  
  3075.   This function tests if the pattern matches the string.  The pattern
  3076.   can contain the wildcards * and  ?.  ? matches to any one 
  3077.   character, while * matches to any number of characters, including 
  3078.   none.  So s?x would match to sex or six, but not to socx, but s*x 
  3079.   would match to all of them. If no match is found, 0 is returned.
  3080. & STRMATCH()
  3081.   strmatch(<string>, <pattern>)
  3082.   
  3083.   This function is matches <pattern> against the entire <string>.
  3084.   It returns 1 if it matches and 0 if it doesn't. It is not
  3085.   case-sensitive, and <pattern> may contain wildcards.
  3086.  
  3087.   strmatch(Foo bar baz,*Baz) will return 1.
  3088.   strmatch(Foo bar baz,*Foo) will return 0.
  3089.   strmatch(Foo bar baz,*o*a*) will return 1.
  3090.   
  3091. & EXTRACT()
  3092.   extract(<string>,<first>,<length>)
  3093.  
  3094.   Extract returns a string of length words, starting with the first 
  3095.   word. Unlike letters, the first word in a string is number 1, 
  3096.   instead of 0.
  3097.  
  3098.   A word is assumed to be defined as a string beginning and ending 
  3099.   with a space, or a string w/o any interior spaces.
  3100. & FLAGS()
  3101.   flags(<object>)
  3102.  
  3103.   Flags returns a string consisting of the flags attached to the 
  3104.   object. The string is, however, just one word.
  3105. & NUM()
  3106.   num(<object>)
  3107.  
  3108.   Returns the dbref number of the object, which must be in the same 
  3109.   room as the object executing num.
  3110. & CON()
  3111.   con(<object>)
  3112.  
  3113.   Con returns the first object in the list of objects carried by 
  3114.   thing. Just the first, and only the first.  See NEXT.
  3115. & LOC()
  3116.   loc(<object>)
  3117.   
  3118.   Loc returns the dbref of the location that object is at.  The 
  3119.   object has to either be yours or be in the same room as you to 
  3120.   work. The location of an exit is its destination (the source of 
  3121.   an exit is its home). The location of a room is its drop-to
  3122.   (if one is not set, then the location is #-1).
  3123.  
  3124. & OWNER()
  3125.   owner(<object>)
  3126.  
  3127.   Owner returns the dbref of the owner of the object.  The object
  3128.   has to either be yours or else be in the same room as you.
  3129. & NAME()
  3130.   name(<dbref>)
  3131.  
  3132.   Name returns the name of object (dbref).
  3133. & NEXT()
  3134.   next(<thing>)
  3135.  
  3136.   If thing is an exit in a room, then next will return the next 
  3137.   nondark exit in the list of exits for that room.  If thing is an 
  3138.   object, then next will return the next oject in the inventory list 
  3139.   that the object is in.  Otherwise, it returns a '#-1' string.
  3140. & @ps
  3141.   @ps [/<switch>] [*<player> | all | count ]
  3142.   @ps is a useful command for MUSHers.  It lists all commands 
  3143.   currently on your 'to be executed' queue, thus allowing you to 
  3144.   identify infinite (or unnecessary) loops with-out putting in says 
  3145.   or poses. It gives a count of the total commands in each of the
  3146.   queues (Player, Object, Wait, and Semaphore), displayed in the format
  3147.   <Number of your queued commands> / <Total number of queued commands>.
  3148.   @ps can identify that you actually *do* have an infinite loop.  Much
  3149.   better than waking up in the morning with all your money gone!
  3150.  
  3151.   @ps with no arguments will show you your own queue. Wizards may
  3152.   specify the /all switch or option, and see the full queue. They
  3153.   may also specify a player.
  3154.   @ps/summary or the "count" option just displays the queue totals.
  3155. & @redirection
  3156.   @redirection <object>[=<object>]
  3157.   @redirection overrides the normal order of command evaluation. Before
  3158.   it checks for single-token commands, exit matches, @-commands, etc.
  3159.   The first object's input is checked against the commands on the
  3160.   object specified as the second argument. If a match is found, it is
  3161.   executed and no further command matching is done.
  3162.   This redirection persists until either a new redirection order is
  3163.   issued for the object in question (if no second object is specified,
  3164.   the redirection is canceled). Or the object itself can abort the
  3165.   redirection prematurely by typing '@Q' on the command line (must be
  3166.   typed in upper case).
  3167.   (see @redirection2 for examples, also see REDIRECT).
  3168. & @redirection2
  3169.   Example:
  3170.  
  3171.   > @va Test=$ex me:@pemit %#=You are not allowed to do that.
  3172.   Test - Set.
  3173.   > @redirection me=test
  3174.   Initiated redirection [Ermon->Test].
  3175.   Input redirection initiated for you to Test by Ermon.
  3176.   Ermon - Set.
  3177.   > ex me
  3178.   You are not allowed to do that.
  3179.   > @pemit me=Testing..
  3180.   You pemit "Testing.." to Ermon.
  3181.   Testing..
  3182.   > @Q
  3183.   Redirection aborted.
  3184.  
  3185. & Looping
  3186.   Looping in an object can have it's good parts and it's bad parts.
  3187.   The good part is when you activate part of a program multiple times
  3188.   to exhaustively perform an operation.  This is usually done by:
  3189.   va: <list of commands>;@trigger me/vb
  3190.   vb: @switch <test> = <false>,@trigger me/va,<otherwise go on>
  3191.   Looping can be a problem when it goes on without stopping.  The @ps
  3192.   command can be used to see if you are looping.  Beware!  A looping 
  3193.   machine that isn't @halt'd will drain your pennies while you are away
  3194.   from the mush!
  3195.   See @ps.
  3196. & enter
  3197.   enter <object> can be used to enter the inside of an object.
  3198.   Insides of objects are best used for vehicles, or storage spaces 
  3199.   when you don't have a home.  (or even a floating home)  Note that 
  3200.   you can enter only objects you own or that have the Enter_ok flag
  3201.   set.
  3202.   (see @enter, @oenter, @aenter, leave, @lock, and @idesc)
  3203. & @enter
  3204.   @enter <object> = <message>
  3205.   Basically the @succ for the 'enter <object>' exit.  The message is
  3206.   displayed to anyone entering the object.
  3207. & @leave
  3208.   @leave <object> = <message>
  3209.   Basically the @succ for the 'leave <object>' exit.  The message is
  3210.   displayed to anyone leaving the object.
  3211. & @oenter
  3212.   @oenter <object> = <message>
  3213.   Similarly to other omessages, this displays <name> <message> to 
  3214.   everyone inside the object, except for the person who is entering.
  3215. & @oleave
  3216.   @oleave <object> = <message>
  3217.   Similarly to other omessages, this displays <name> <message> to
  3218.   everyone inside the object, except for the person who is leaving.
  3219. & @aenter
  3220.   @aenter <object> = <actionlist>
  3221.   Executes <actionlist> whenever someone enters the object.  Actions 
  3222.   are lists of commands separated by semi-colons and these commands 
  3223.   are executed by the object (see puppet). Objects can execute almost
  3224.   any command.  Gender substitutions are applied to the commands 
  3225.   before they are executed, which allows use of the player's name who
  3226.   caused the action.  See @enter, and @oenter.
  3227. & @aleave
  3228.   @aleave <object> = <actionlist>
  3229.   Executes <actionlist> whenever someone leaves the object. Actions
  3230.   are lists of commands separated by semi-colons and these commands
  3231.   are executed by the object. (see puppet). Objects can execute almost
  3232.   any command.  Gender substitutions are are applied to the commands 
  3233.   before they are executed, which allows use of the player's name who
  3234.   cause the action. See @leave and @oleave.
  3235. & @oxenter
  3236.   @oxenter <object> = <message>
  3237.   This replaces the functionality of the old @oenter.  This message is
  3238.   shown to everyone in the room that the player leaves whenever he enters
  3239.   an object via the command 'enter <object>'. This will be shown in 
  3240.   addition to the leave message of the room, not instead of.
  3241. & @oxleave
  3242.   @oxleave <object> = <message>
  3243.   This message is shown to everyone in the room that a person enters
  3244.   when doing a 'leave' command.  This will be shown in addition to the
  3245.   enter messages of the room, not instead of.
  3246. & BOOLEAN VALUES
  3247.   Boolean values are internally considered to be either 1, generally 
  3248.   interpreted as being true, and 0, which is generally interpreted as
  3249.   being false. Now, any string is interpreted as true(1), except for 
  3250.   the null string (whose length is 0), which is false(0).
  3251.   A #-1 is interpreted as false(0), and any other #<dbref> is 
  3252.   interpreted as true(1).  Any number except 0 is interpreted as 
  3253.   true(1), except 0 which is false(0).  
  3254.   (Yes, even negative numbers are true(1))
  3255.  
  3256.   Examples:
  3257.   not(foo) = 0
  3258.   not(<null string>) = 1
  3259.   not(-66) = 0
  3260.   not(0) = 1
  3261.   not(#-1) = 1
  3262.   not(#12) = 0
  3263.   And so on...
  3264.   (note: These rules only apply when a function expects a Boolean 
  3265.   value, not for strings that expect other values.)
  3266. & AND()
  3267.   [AND(<boolean value>,<boolean value>)]
  3268.  
  3269.   Takes two booleans, and returns 1 is the two boolean values are 
  3270.   each equivalent to true(1).  See BOOLEAN VALUES.
  3271. & OR()
  3272.   [or(<boolean value>,<boolean value>)]
  3273.  
  3274.   Takes two booleans, and returns a 1 if at least one of the inputs 
  3275.   is equivalent to true(1).  See BOOLEAN VALUES.
  3276. & NOT()
  3277.   [not(<boolean value>)]
  3278.  
  3279.   Takes a boolean value, and returns it's inverse.  
  3280.   I.E. if the input is equivalent to true(1), it returns a 0, and if 
  3281.   the input is equivalent to false(0), it returns a 1.
  3282.   See BOOLEAN VALUES.
  3283. & XOR()
  3284.   [xor(<boolean value>,<boolean value>)]
  3285.  
  3286.   Takes two booleans, and returns a 1 if one, and only one of the two
  3287.   inputs is equivalent to true(1).  See BOOLEAN VALUES.
  3288. & gt()
  3289.   [gt(<integer1>,<integer2>)]
  3290.  
  3291.   Takes two integers, and returns 1 if and only if 
  3292.   integer1 > integer2, and 0 otherwise.
  3293. & gte()
  3294.   [gte(<integer1>,<integer2>)]
  3295.  
  3296.   Takes two integers, and returns 1 if and only if
  3297.   integer1 >= integer2, and 0 otherwise.
  3298.  
  3299. & lt()
  3300.   [lt(<integer1>,<integer2>)]
  3301.  
  3302.   Takes two integers, and returns 1 if and only if
  3303.   integer1 < integer2, and 0 otherwise.
  3304. & lte()
  3305.   [lte(<integer1>,<integer2>)]
  3306.  
  3307.   Takes two integers, and returns 1 if and only if
  3308.   integer1 <= integer2, and 0 otherwise.
  3309. & eq()
  3310.   [eq(<integer1>,<integer2>)]
  3311.  
  3312.   Takes two integers, and returns 1 if they
  3313.   are equal, 0 otherwise.
  3314. & neq()
  3315.   [neq(<integer1>,<integer2>)]
  3316.  
  3317.   Basically the same as [not(eq(<integer1>,<integer2>))].
  3318.   (see eq(), not())
  3319. & cat()
  3320.   [cat(<string1>,<string2>)]
  3321.  
  3322.   Cat returns a string made up of the contents of 
  3323.   string1 followed by the contents of string2, separated by a space.
  3324.   So [cat(one, two)] will return 'one two'.
  3325. & member()
  3326.   [member(<list>,<word>)]
  3327.  
  3328.   Member takes a list and a word, and returns the position of <word>
  3329.   if <word> is a word in <list>.  A word is defined as a string which
  3330.   has no interior spaces.  So '  hello  ' would be one word, while
  3331.   'hello there' would be two.  See LISTS
  3332. & LISTS
  3333.   A list is a string, usually stored in an attribute (currently any
  3334.   of the va-vz's), which is a series of words, separated by one or
  3335.   more spaces.  The following would be a list 
  3336.   (denoted on the ends by ', which is not actually in the string):
  3337.   'one two three four five'
  3338.   The functions first(), rest(), cat(), member(), remove(), all work
  3339.   on lists.  Look them up, they can be very helpful.
  3340. & leave
  3341.   The command leave allows you to exit an object you have enter'ed 
  3342.   into. There is not way to stop someone from leaving an object once 
  3343.   they get inside it, and there is not any oenter or enter messages 
  3344.   that get triggered.
  3345.   See enter, enter_ok.
  3346. & remove()
  3347.   [remove(<list>,<word>)]
  3348.  
  3349.   Remove takes a list and a word, and returns the list, with the
  3350.   word deleted from it.  A word is defined as a string which contains
  3351.   no interior spaces.  If the word is not in the list, then the list
  3352.   is returned.
  3353. & RWHO
  3354.   RWHO  This MUSH may be attached to the RWHO server that was created
  3355.   by Marcus Ranum (Jerry_Cornelius).  Every so often, the MUSH sends
  3356.   out information about who is logged in to this server.  The RWHO
  3357.   command is an internal client that talks to this server.  Most MUSHes
  3358.   might not have this command even if they actually send information to
  3359.   an RWHO server.  The reason that PernMUSH has this in-game is because
  3360.   there is also an RWHO server on the same machine.  If it was on a
  3361.   separate machine, network problems could freeze the mud.
  3362. & @remit
  3363.   @remit <object> = <message>.  Sends the message to all contents of
  3364.   <object>, which can be a room, thing, or player. (The TinyMUSH 2.0
  3365.   equivalent is @pemit/contents).
  3366.   See also @emit, @pemit, @oemit, SPOOFING, NOSPOOF and CONTROL.
  3367. & @oemit
  3368.   @oemit <object> = <message>. Sends <message> to all contents of your
  3369.   current location EXCEPT object.  See also @emit, @pemit, NOSPOOF and
  3370.   SPOOFING.
  3371. & @halt
  3372.   @halt <object>  or  @halt <object>=<new_command> or @halt/all
  3373.  
  3374.   This command removes all queued actions in all queues for <object>,
  3375.   and, if <new_command> is specified, places that new command in the
  3376.   queue. If <object> is a player, it clears the queue for the player
  3377.   and all of his objects. You can use "@halt me" to clear your own
  3378.   queue. The /all switch makes this command equivalent to "@allhalt".
  3379.   If no new command is given and the object being halted is not a
  3380.   player, the object is also set HALT.
  3381.   
  3382.   Note that halting an object does NOT affect any objects waiting
  3383.   on it as a semaphore.
  3384.    
  3385. & @allhalt
  3386.   @allhalt.  This commands halts all objects in the game in an effort to
  3387.   free up the queue.  This is a wizard only command. Objects set
  3388.   IMMORTAL are immune to the effects of an @allhalt.
  3389.   This command is equivalent to "@halt/all".
  3390. & @chownall
  3391.   @chownall <player> [= <target_player>].  Tranfers ownership of all items
  3392.   that player owns (except player) to the ownership of target_player.
  3393.   This is a wizard only command.  If target_player is not given, the
  3394.   executing recipient is the subject of the @chownall.
  3395. & @doing
  3396.   @doing [/header] <message>.  If this is compiled in you can set a short 
  3397.   message that will show up in the WHO listing next to your name.
  3398.   The /header switch is equivalent to "@poll", and sets the header at
  3399.   the top of the WHO listing. This switch can only be used by wizards.
  3400. & @motd
  3401.   @motd [/<switch>] [<message>].  
  3402.   The default for this command (and with the /connect) switch, is a
  3403.   wizard only command that will set a short (non-longterm) message that 
  3404.   will be shown to players when they connect.
  3405.   Other switches:
  3406.   /wizard : sets the message for wizards (like @wizmotd)
  3407.   /down   : sets the logins-off message (like @rejectmotd)
  3408.   /list   : list the MOTDs (like @listmotd, can be used by anyone)
  3409. & @wizmotd
  3410.   @wizmotd <message>.  This is a wizard only command that will set a short
  3411.   (non-longterm) message that will be shown to wizards when they connect. 
  3412. & @rejectmotd
  3413.   @rejectmotd <message>.  This is a wizard only command that will set a
  3414.   short (non-longterm) message that will be shown to players that try to
  3415.   connect when logins are disabled. 
  3416. & @listmotd
  3417.   @listmotd.  This is a wizard only command that will display the current
  3418.   motd, wizmotd and rejectmotd to the player.
  3419. & @poor
  3420.   @poor <value>.
  3421.   This is a wizard only command.  It sets every player's money supply to
  3422.   value.
  3423. & @entrances
  3424.   @entrances[/<switch>] <object> [=<begin>,<end>]
  3425.   
  3426.   This command will show you all exits linked to the object you use the
  3427.   command on, as well as where the exit originates.  This command is
  3428.   computationally expensive and costs the same as @find. You can limit
  3429.   the range of the dbrefs searched by specifying <begin> and <end>.
  3430.   
  3431.   It takes four switches:
  3432.   
  3433.   /exits       show only exits linked to <object>
  3434.   /things      show only things which have their homes in <object>
  3435.   /players     show only players who have their homes in <object>
  3436.   /rooms       show only rooms which have a drop-to of <object>
  3437.   
  3438. & @atrlock
  3439.   @atrlock <object>/<attribute> = [on|off].
  3440.   If 'on' is specified, it 'locks' the specified attribute on the object
  3441.   if it is unlocked already.  If the attribute is unlocked, and owned by
  3442.   someone other than you, you will gain ownership of it.  If an attribute
  3443.   is unlocked, then anyone who controls the object or the person who
  3444.   controls the attribute may change it.  Wizards may lock/unlock anyones
  3445.   attributes (but will not transfer ownership).  If you specify 'off' it
  3446.   will unlock a locked attribute. Specifying neither will return the
  3447.   current value of the lock.
  3448. & @atrchown
  3449.   @atrchown <object>/<attribute> = <new_owner>.
  3450.   Like @chown except it changes the control of an attribute from one person
  3451.   to another.. You may only @atrchown attributes that you currently own.
  3452. & @allquota
  3453.   @allquota <limit>
  3454.   This is a wizard level command that is only available if the quota
  3455.   system is being used.  It displays the current max and owned objects
  3456.   of every player and resets their quota left to the new limit minus the
  3457.   current number owned.
  3458. & @disable
  3459.   See '@enable'.
  3460. & @enable
  3461.   @enable <parameter>
  3462.   @disable <parameter>
  3463.   
  3464.   These are wizard commands that allow certain parameters of the game to
  3465.   be changed at runtime. The values of these parameters are listed by
  3466.   the "@uptime" command. Parameters and their effects are as follows:
  3467.   
  3468.   logins       --  When logins are disabled, only wizards and royalty may
  3469.                    log into the game. Mortals attempting to log in will be
  3470.                    given the down text, as well as the @rejectmotd.
  3471.   daytime      --  When daytime is enabled, computationally expensive commands
  3472.                    cannot be run. @find, @search, @entrances, LSEARCH(), and 
  3473.                    @dump cannot be used, although the automatic database save
  3474.                    routines will continue to run.
  3475.   command_log  --  When this is enabled, all commands are logged.
  3476.   huh_log      --  When this is enabled, all commands that produce a "Huh?"
  3477.                    are logged.
  3478.   force_log    --  When this is enabled, @forces done by wizards are logged.
  3479.   
  3480. & @dbck
  3481.   @dbck
  3482.   This is a wizard only command.  It forces the database to do run
  3483.   the internal cleanup and consistency check that normally runs about
  3484.   every 10 minutes or so. (This command implies @purge)
  3485. & @dump
  3486.   @dump [/paranoid] [check interval]
  3487.  
  3488.   This is a wizard only command that saves a copy of the current memory
  3489.   database out to a save file.  This preempts the normal regular dumping
  3490.   that the mud performs on its own.
  3491.  
  3492.   If the /paranoid switch is used, the game performs additional consistency
  3493.   checking which corrects possible data corruption. If a check interval
  3494.   is specified, the game writes confirmation of the dump to the checkpoint
  3495.   log file every <interval> objects. If no interval is specified, it is
  3496.   taken to be the size of the databased, divided by 5.
  3497.   This switch should ONLY be used if a normal @dump is not being done
  3498.   correctly. Paranoid dumps should generally only be done by wizards with 
  3499.   access to the account on which the MUSH is running, since others will
  3500.   not have access to the checkpoint logfile.
  3501.  
  3502. & @pcreate
  3503.   @pcreate <name> = <password>
  3504.   This is a wizard level command that is only available if registration is
  3505.   being enforced.  It creates a player with the given name and password.
  3506. & @purge
  3507.   @purge
  3508.   This is a wizard only command that will check the destroyed object list
  3509.   for corruption, and make sure that all objects there are really there.
  3510. & @quota
  3511.   @quota [/<switch>] <victim>
  3512.   This is a wizard level command that is only available if the quota
  3513.   system is enabled.  It reports the victim's owned objects and the
  3514.   maximum number of objects he may own.
  3515.   The /set and /all switches are equivalent to @squota and @allquota,
  3516.   respectively.
  3517. & @squota
  3518.   @squota <victim> = <limit>
  3519.   This is a wizard level command that is only available if the quota
  3520.   system is enabled.  It reports the victim's owned objects, and sets
  3521.   the maximum number of objects he may own to <limit>. If no limit is
  3522.   specified, this works identically to @quota.
  3523. & @toad
  3524.   @toad <player>
  3525.   This is a wizard only command.  It changes a player into an object, and 
  3526.   @chowns all of the previous players possessions over to the @toading
  3527.   wizard.
  3528. & @uptime
  3529.   @uptime
  3530.   
  3531.   This command, for mortals, gives the time until the next database dump.
  3532.   For wizards, it also gives the system uptime (just as if 'uptime' had
  3533.   been typed at the shell prompt) and process statistics: the process ID,
  3534.   the machine page size, the maximum resident set size utilized (in K),
  3535.   "integral" memory (in K x seconds-of-execution), the number of page 
  3536.   faults ("hard" ones require I/O activity, "soft" ones do not), the
  3537.   number of times the process was "swapped" out of main memory, the
  3538.   number of times the process had to perform disk I/O, the number of
  3539.   network packets sent and received, the number of context switches,
  3540.   and the number of signals delivered to the process.
  3541.   In addition, this command gives wizards the dbref number of the first
  3542.   object in the destroyed object free list.
  3543.  
  3544. & @version
  3545.   @version
  3546.   Tells the player the name of the MUSH, which version of the code is 
  3547.   currently running on the system, when it was compiled, and when
  3548.   the last restart was.
  3549. & @verb
  3550.   @verb <victim>=<actor>,<what>,<whatd>,<owhat>,<owhatd>,<awhat>,<args>
  3551.   
  3552.   This command provides a way to do user-defined verbs with associated
  3553.   @attr/@oattr/@aattr groups. Invoking it does the following:
  3554.   
  3555.   <actor> sees the contents of <victim>'s <what> attribute, or
  3556.     <whatd> if <victim> doesn't have a <what>.
  3557.   Everyone in the same room as <actor> sees the contents of
  3558.     <victim>'s <owhat> attribute, with <actor>'s name prepended,
  3559.     or <owhatd>, also with <actor>'s name prepended, if <victim>
  3560.     doesn't have an <owhat>.
  3561.   <victim> executes the contents of his <awhat> attribute.
  3562.   
  3563.   By supplying up to nine <args>, you may pass those values on
  3564.   the stack (i.e. %0, %1, %2, etc. up through %9).
  3565.   
  3566.   See "help @verb2" for more.
  3567.   
  3568. & @verb2  
  3569.   In order to use this command, at least one of the following criterion
  3570.   must apply:
  3571.     1. The object which did the @verb is a wizard.
  3572.     2. The object which did the @verb controls both <actor> and <victim>
  3573.     3. The thing which triggered the @verb (such as through a $command on
  3574.        the object which did the @verb) must be <actor>, AND the object
  3575.        which did the @verb must be either priviledged or control <victim>
  3576.        or <victim> must be VISUAL.
  3577.   
  3578.   See "help @verb3" for examples.
  3579.   
  3580. & @verb3
  3581.   Examples:
  3582.   
  3583.   > @va test = $frob test:@verb me = %N,FROB,You frobbed test!,OFROB,
  3584.                frobbed test!,AFROB
  3585.   test - Set.
  3586.   > frob test
  3587.   You frobbed test!
  3588.   [ everyone in the same room sees ] Wizard frobbed test!
  3589.   > &FROB test=Nifty. You frobbed test.
  3590.   test - Set.
  3591.   > &OFROB test=frobbed test, cool.
  3592.   test - Set.
  3593.   > &AFROB test=:is frobbed!
  3594.   > frob test
  3595.   Nifty, You frobbed test.
  3596.   [ everyone in the same room sees ] Wizard frobbed test, cool.
  3597.   test is frobbed! 
  3598.   
  3599.   Another example follows in "help @verb4"
  3600.   
  3601. & @verb4
  3602.   If we want to make the "frob" command global and usable for anything,
  3603.   we'll need to put the verb definition on a wizard object in the Master
  3604.   Room. The following (simplified) command would be the easiest way
  3605.   to accomplish this.
  3606.    
  3607.   &DO_FROB Global = $frob *:@switch [locate(v(#),v(0),n)]=#-1,
  3608.                     {@pemit %#=I don't see that here.},
  3609.                     {@verb [locate(v(#),v(0),n)]=v(#),FROB,
  3610.                      You frob [capstr(v(0))]!,OFROB,
  3611.                      frobs [capstr(v(0))]!,AFROB
  3612.     
  3613.   Anyone typing "frob <random object>" would trigger off the approrpiate
  3614.   attributes, if they are set on <random object>, or the default messages,
  3615.   if not.
  3616.     
  3617. & @wait
  3618.   @wait <time> = <command_list>
  3619.   @wait <object> = <command_list>
  3620.   @wait <object>/<time> = <command_list>
  3621.   
  3622.   The basic form of this command puts the command list (a semicolon-separated 
  3623.   list of commands) into the wait queue to execute in <time> seconds.
  3624.   
  3625.   The second form sets up a semaphore wait on <object>. The enactor will
  3626.   execute <command_list> when <object> is @notified.
  3627.   
  3628.   The third form combines the first two: the enactor will execute
  3629.   <command_list> when <object> is @notified or when <time> passes,
  3630.   whichever happens first.
  3631.  
  3632.   See also the help for: SEMAPHORES, @drain, @notify
  3633. & @drain
  3634.   @drain <object>
  3635.   
  3636.   This command discards all commands waiting on the semaphore <object>
  3637.   and resets the semaphore to its initial state (clearing the SEMAPHORE
  3638.   attribute). The pending commands are removed from the queue without
  3639.   being executed.
  3640.   
  3641.   See also the help for: SEMAPHORES, @notify, @wait
  3642. & @notify
  3643.   @notify[/all] <object>[=<count>]
  3644.   
  3645.   This command notifies the semaphore <object>, running the first
  3646.   command that waited on <object> using the semaphore version of
  3647.   @wait. If <count> is specified, it notifies the semaphore that
  3648.   many times. If there are no commands, or less than <count>
  3649.   commands, pending for <object>, then subsequent @waits will not
  3650.   block until the semaphore count reaches zero again.
  3651.   
  3652.   The "/all" switch to this command notifies the semaphore until
  3653.   the semaphore count is exactly zero; all commands pending on that
  3654.   semaphore are executed immediately. <count> is ignored.
  3655.   
  3656. & @adisconnect
  3657.   @adisconnect <object> = <command-list>
  3658.   Sets the actions to be taken by a player right after disconnecting from
  3659.   the game.
  3660.   This attribute is only meaningful for players, and will never be
  3661.   automatically triggered on other object types.
  3662.   Example: @adisconnect me = home
  3663.   It is also possible to check the zone object/objects in the zone parent
  3664.   room, as well as objects in the master room, for an @adisconnect. If one is
  3665.   found, it will be executed when a player disconnects in that zone (or,
  3666.   in the case of the master room, anywhere).
  3667.   See also: @aconnect.
  3668. & @aconnect
  3669.   @aconnect <object> = <command-list>
  3670.   Sets the actions to be taken by a player right after connecting to the
  3671.   game.  This attribute is only meaningful for players, and will never be
  3672.   automatically triggered on other object types.
  3673.   Example: @aconnect me = :stretches luxuriously, as if waking from a nap.
  3674.   It is also possible to check the zone object/objects in the zone parent
  3675.   room, as well as objects in the master room, for an @aconnect. If one is
  3676.   found, it will be executed when a player connects in that zone (or, in
  3677.   the case of the master room, anywhere).
  3678.   See also: @adisconnect.
  3679. & @lemit
  3680.   @lemit <message>
  3681.  
  3682.   Emits a message to the outermost container object. For example, if you
  3683.   are carrying a bird, and are inside a vehicle which is in room #10, and
  3684.   you force the bird to @lemit "Cheep", everyone in room #10 will hear
  3685.   "Cheep". This command is the same as "@emit/room".
  3686. & @zemit
  3687.   @zemit <zone> = <message>
  3688.  
  3689.   Emits a message to all rooms in <zone>. You must have control in that
  3690.   zone in order to use this command. Because it is computationally
  3691.   expensive, it costs 100 pennies.
  3692. & think
  3693.   think <message>
  3694.  
  3695.   You can use this command to send a private message to yourself. Pronoun
  3696.   substitution is performed. This is essentially equivalent to doing a
  3697.   "@pemit me=<message>", but with "think", there's no prepended text.
  3698.   One possible use: @adesc me=think %N just looked at you.
  3699.  
  3700. & @wallpose
  3701.   @wallpose <pose>
  3702.  
  3703.   Sends a pose to all connected players. This command may be abbreviated to
  3704.   "@wall :<pose>". It is only executable by wizards.
  3705. & @wallemit
  3706.   @wallemit <message>
  3707.  
  3708.   Sends an emit to all connected players. It is only executable by wizards.
  3709. & @decompile
  3710.   @decompile <object>
  3711.  
  3712.   This dumps the sequence of commands needed to recreate that object. It
  3713.   is useful for keeping off-MUSH records of your valuable objects, and for
  3714.   transferring code from one MUSH to another. Normal locks and enter locks
  3715.   are decompiled, but attributes are not shown as locks.
  3716. & @move
  3717.   @move <object> = <movement message>
  3718.  
  3719.   This attribute stores the message shown to the object when the object moves.
  3720. & @omove
  3721.   @omove <object> = <message>
  3722.  
  3723.   This is a member of the family of o-messages. This is shown to the contents
  3724.   of the location that the object moves to.
  3725. & @amove
  3726.   @amove <object> = <action>
  3727.  
  3728.   This is the action to be taken whenever an object moves.
  3729.  
  3730. & @prefix
  3731.   @prefix <object> = <message>
  3732.  
  3733.   This attribute is meant to be used in conjunction with the AUDIBLE
  3734.   flag. The @prefix of the object is prepended to messages propagated
  3735.   via AUDIBLE. For example, if you have an audible exit "Outside" 
  3736.   leading from a room Garden to a room Street, with @prefix
  3737.   "From the garden nearby,"  if Joe does a ":waves to everyone." from
  3738.   the Garden, the people at Street will see the message,
  3739.   "From the garden nearby, Joe waves to everyone."
  3740.  
  3741. & @filter
  3742.   @filter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
  3743.  
  3744.   This attribute is meant to be used in conjunction with the AUDIBLE
  3745.   flag. The @filter of an object is a comma-separated list of wildcard
  3746.   patterns (like @switch patterns). Any messages which match one of the 
  3747.   patterns is suppressed and not propagated through the AUDIBLE object
  3748.   with the @filter set. (Note: @filter on rooms has no effect!)
  3749.  
  3750.   See 'help @filter2' for examples.
  3751.  
  3752. & @filter2
  3753.  
  3754.   Example:  in a room with the audible exit "Outside" which leads to
  3755.   a room where a puppet "Wiztoy" is listening, with exit @prefix
  3756.   "From inside," and @filter "Testing *,Puppet *":  
  3757.  
  3758.   > :tests.
  3759.   One tests.
  3760.   Wiztoy> From inside, One tests.
  3761.   > @emit Testing @filter.
  3762.   Testing @filter.
  3763.   > @emit Test.
  3764.   Test.
  3765.   Wiztoy> From inside, Test.
  3766.   > @emit Puppet waves.
  3767.   Puppet waves.
  3768.  
  3769. & @inprefix
  3770.   @inprefix <object> = <message>
  3771.   
  3772.   @inprefix is intended for use with objects with a @listen of "*".
  3773.   It prepends the <message> string to any message propagated to the
  3774.   contents of <object> from the outside. If there is no @inprefix,
  3775.   no string is prepended to the output.
  3776.   
  3777.   Example:
  3778.   
  3779.     [ First, @create Vehicle and Test (objects #103 and #104) and drop them ]
  3780.   
  3781.     > @inprefix Vehicle = From outside,
  3782.     Vehicle - Set.
  3783.     > enter Vehicle
  3784.     Vehicle(#103)
  3785.     > @force #104=:bounces.
  3786.     From outside, Test bounces.
  3787.   
  3788. & @infilter
  3789.   @infilter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
  3790.   
  3791.   @infilter is meant to be used in conjunction with objects that have
  3792.   a @listen of "*". It can be used to prevent certain messages from
  3793.   propagating to the object's contents from the outside; message patterns
  3794.   that match one of the @infilter patterns are suppressed.
  3795.   
  3796.   For an explanation of these patterns, see the help for "@filter".
  3797.  
  3798. & @chat
  3799.   @chat <channel> = <message>
  3800.   
  3801.   This tells everyone on <channel> your <message>. You can prepend
  3802.   <message> with ':' or ';' to pose instead of talk. This command can 
  3803.   also be formatted:  +<channel> <message>
  3804.   You do not need to type the complete name of the channel, only as
  3805.   many letters as needed to make it distinct from another channel.
  3806.  
  3807.   Note: if you use the '+' form of this command, and you do not
  3808.   use the name of a known channel, your command will be processed
  3809.   as normal, preventing user-defined commands like "+last" from
  3810.   being clobbered by the chat system.
  3811.  
  3812. & @channel
  3813.   @channel <channel> = <on | off | who>
  3814.   
  3815.   The basic form of this command allows you to join, leave, or see who
  3816.   is on a certain channel. (Read "help @channel2" for help on extensions
  3817.   and additional switches to this command). You do not need to type the 
  3818.   complete name of the channel, only as many letters as needed to make it 
  3819.   distinct from another channel.
  3820.   
  3821.   You may use command switches with @channel:
  3822.   "@channel/on public" is equivalent to "@channel public=on"
  3823.   Some channels may be restricted to administrators or wizards only.
  3824.   If you do not have the priviledges needed for that channel, you will
  3825.   not be able to see who is on it.
  3826.  
  3827.   More details are provided in "help @channel2".
  3828.  
  3829. & @channel2
  3830.   @channel/list
  3831.   @channel/add <channel> = <priv level>
  3832.   @channel/delete <channel>
  3833.   @channel/name <channel> = <new name>
  3834.   @channel/priv <channel> = <new priv level>
  3835.  
  3836.   These four switches to @channel provide extensions to the basic chat
  3837.   system. Only the "list" switch may be used by non-Wizards; it lists
  3838.   all existing chat channels.
  3839.  
  3840.   The "add" switch allows a wizard to add a new channel. The possible
  3841.   priv levels are "public", "admin", "wizard", and "forbidden". They
  3842.   allow access to everyone, royalty, wizards, and nobody, respectively.
  3843.   A channel name must be unique; you should not have two channels called
  3844.   "Chat1" and "Chat2", for example.
  3845.  
  3846.   The "delete" switch removes an existing channel. The "name" and
  3847.   "priv" switches changed the channel name and priviledge level,
  3848.   respectively.
  3849.   
  3850. & CHAT
  3851.   CHAT SYSTEM
  3852.  
  3853.   The MUSH has a built-in chat system with many different channels.
  3854.   These channels vary from MUSH to MUSH; ask at your local site about
  3855.   which ones are available. The "Public" channel is normally available.
  3856.  
  3857.   You can talk to many people on the MUSH via the chat system, without
  3858.   needing to be in the same room as them. Use the "@channel" command
  3859.   to join, leave, or check who is on a channel, and use the "@chat"
  3860.   or "+" command to communicate.
  3861.  
  3862.   If you examine yourself, you will see a list of channels that you are 
  3863.   currently listening to. Some channels are restricted to wizards or
  3864.   administrators only. See the help for "@chat" and "@channel" for more.
  3865.  
  3866. & @@
  3867.  
  3868.   The "@@" command is a special kind of command; it signals the start
  3869.   of a comment. The comment lasts until a semi-colon is found, just
  3870.   like other MUSH programming statements terminate with a semi-colon.
  3871.   It cannot be put into the middle of a statement, like
  3872.   @va me = $testing:@emit Test. @@ Just a test @@; @vb me=Testing.
  3873.   That will result in the object emitting "Test. @@ Just a test. @@"
  3874.   The correct usage is to make the comment a statement by itself:
  3875.   @va me = $testing:@emit Test.; @@ Just a test @@; @vb me=Testing.
  3876.  
  3877.   It is not necessary to use a closing '@@', but doing so makes the
  3878.   comment stand out much more clearly. A space between the first
  3879.   '@@' and the word following it is not necessary.
  3880.  
  3881. & @wipe
  3882.   @wipe <object>
  3883.   
  3884.   This command clears all attributes from <object>, with the exception of
  3885.   attributes changeable only by wizards, and attributes not controlled by
  3886.   the object's owner (i.e. locked attributes owned by someone else).
  3887.   Only God may use @wipe to clear wiz-changeable-only attributes.
  3888.   The SAFE flag protects objects from @wipe.
  3889.  
  3890. & @parent
  3891.   @parent <object> = <parent>
  3892.  
  3893.   This command sets the parent of <object> to <parent>. <parent> may be
  3894.   an object of any type; <object> can be anything but a player. The
  3895.   player must control <object>. <parent> must either be owned by the
  3896.   player, or LINK_OK, or the player must be a wizard.
  3897.   If <parent> is "none", the object is unparented.
  3898.  
  3899. & rpage
  3900.   rpage[/<switch>] <player>@<MUSHname> = <message>
  3901.  
  3902.   This command allows you to remote-page a player connected to another 
  3903.   MUSH. <Message> may be either text or a pose, and is formatted accordingly.
  3904.   The MUSH you are trying to page to must be registered with the MUSH
  3905.   you are on  (they must know each other's names and rpage passwords;
  3906.   talk to the Gods if they aren't).
  3907.  
  3908.   A remote-page message is prepended with the name of the originating
  3909.   MUSH, in curly braces. When you attempt to remote-page someone, you
  3910.   are not guaranteed to be able to contact the other MUSH; unless you
  3911.   get your message echoed back, you cannot be sure that the remote
  3912.   player received your message. He might have, but then again, he might
  3913.   not have.  The remote-page facility uses UDP datagrams, and thus does
  3914.   not guarantee transmission.
  3915.  
  3916.   Read 'help rpage2' for more.
  3917.  
  3918. & rpage2
  3919.   Example:  Amberyl, on TinyKrynn, wishes to page Polgara, on Belgariad.
  3920.  
  3921.     Amberyl types:  rpage Polgara@Belgariad = Hi there.
  3922.     Polgara sees:  {TinyKrynn} Amberyl pages, 'Hi there.'
  3923.     Amberyl sees:  {Belgariad} To Polgara: Amberyl pages, 'Hi there.'
  3924.  
  3925.     Polgara replies:  rpage Amberyl@TinyKrynn =:waves hello.
  3926.     Amberyl sees:  {Belgariad} Polgara waves hello.
  3927.     Polgara sees:  {TinyKrynn} To Amberyl: Polgara waves hello.
  3928.   
  3929.   Read 'help rpage3' for more.
  3930.   
  3931. & rpage3
  3932.  
  3933.   If the other person is not connected, is set HAVEN, or doesn't exist,
  3934.   the person attempting to page will receive an error message.
  3935.  
  3936.   If the person attempting to page receives no message of acknowledgement
  3937.   other than "Done.", it is likely that the message hasn't gotten through.
  3938.   Often, though, a few seconds will pass between the "Done."  message and
  3939.   the acknolwedgement.
  3940.  
  3941.   Please note that the names of the MUSHes are case-sensitive. You need
  3942.   to make sure that the name of the MUSH you are typing appears in the
  3943.   remote-page connection list, accessed by typing "rpage/list".
  3944.   
  3945.   Read 'help rpage4' for more.
  3946.   
  3947. & rpage4
  3948.  
  3949.   The rpage command takes two additional switches, "add" and "delete",
  3950.   which are restricted to God only. 
  3951.  
  3952.   To add a new server: rpage/add <Name of server> <Password> = <Address>
  3953.   For every server you are "connected" to, you must have one entry which
  3954.   has the full name of the MUSH, as used in @version on that MUSH. This
  3955.   is the "identifying" entry. Both your MUSH and the other MUSH need to
  3956.   share a password.
  3957.   FooMUSH:  rpage/add BazMUSH foobar=bazvax.cowtech.edu
  3958.   BazMUSH:  rpage/add FooMUSH foobar=foovax.cowtech.edu
  3959.  
  3960.   You can have multiple entries for the same MUSH, i.e. you could also do:
  3961.   rpage/add Foo foobar=foovax.cowtech.edu
  3962.  
  3963.   Deleting a server entry is simple: rpage/delete <Name of server entry>
  3964.   
  3965.   Server entries are automatically saved when the database is.
  3966.  
  3967. & COPYRIGHT
  3968.   Any use of this help text must contain this copyright notice.
  3969.   This help text was written by Jin, Moonchilde, Leona, and Amberyl,
  3970.   for TinyMUSH 1.0, PernMUSH 1.02 - 1.15, and PennMUSH 1.16 on,
  3971.   respectively.
  3972.  
  3973. & CREDITS
  3974.   
  3975.   The original TinyMUSH 1.0 code was written by Lawrence Foard, and
  3976.   was based upon James Aspnes' TinyMUD server. Since then, the code
  3977.   has been modified by the programmers of MicroMUSE (then MicroMUSH),
  3978.   and Joseph Traub (Moonchilde of PernMUSH).
  3979.   
  3980.   Since January of 1992, Lydia Leong (Amberyl of PernMUSH / Polgara
  3981.   of Belgariad) has been maintaining the code currently know as
  3982.   PennMUSH 1.50.
  3983.   
  3984.   Additional credits go to:
  3985.     Ambar (PernMUSH):  debugging and lots of other stuff (PernMUSH v1.14)
  3986.     Annalyn (PernMUSH): lots of code ideas, algorithms, general help
  3987.     Javelin and Talek: (Belgariad): lots of ideas for various things
  3988.     Delta (Twilight), Jim Miller: some portability tweaks and error fixing
  3989.     Durnik, Shaav, Varana, Henrik, and other Belgariad players: playtesting
  3990.   ... plus the TinyMUSH 2.0 mushhacks and the myriad people using this server.
  3991.