pennmush/game/data/
pennmush/game/log/
pennmush/game/save/
pennmush/game/txt/evt/
pennmush/game/txt/nws/
pennmush/os2/
pennmush/po/
pennmush/win32/msvc.net/
pennmush/win32/msvc6/
& COMMANDS
Help is available for the following MUSH commands:
 
  ahelp          anews          brief          DOING          drop
  examine        enter          events         follow         get            
  give           go             index          kill           leave          
  LOGOUT         look           move           news           page           
  pose           QUIT           read           rules          say
  score          slay           take           teach          think          
  unfollow       use            whisper        WHO            with
  "              :              ;              +              ]
 
  In addition to these, there are several types of '@' commands. @-commands 
  are usually commands which have permanent effects on the MUSH (such as
  creating a new object). Here are the help topics on @-commands:
 
  @-ATTRIBUTES   @-BUILDING     @-GENERAL      @-WIZARD
 
& @-ATTRIBUTES
These '@' commands set standard message/action sets on objects. Each comes
in 3 versions: @<whatever>, @o<whatever>, and @a<whatever>. Only the
@<whatever> version is listed below, but help is available for each:
 
  @death         @describe      @drop          @efail         @enter
  @failure       @follow        @give          @idescribe     @leave
  @lfail         @move          @payment       @receive       @success
  @tport         @ufail         @unfollow      @use           @zenter        
  @zleave

These '@' command set other standard attributes on objects that don't
follow the pattern above:

  @aahear        @aclone        @aconnect      @adisconnect   @amhear
  @away          @charges       @cost          @conformat     @descformat
  @ealias        @exitformat    @filter        @forwardlist   @haven         
  @idescformat   @idle          @infilter      @inprefix      @lalias        
  @listen        @nameformat    @oxenter       @oxleave       @oxmove        
  @oxtport       @prefix        @runout        @sex           @startup       

See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
& @-BUILDING
These '@' commands are building-related (they create or modify objects):
 
  @atrlock       @atrchown      @chown         @chzone        @clone         
  @cpattr        @create        @destroy       @dig           @elock         
  @eunlock       @firstexit     @link          @lock          @mvattr        
  @name          @nuke          @open          @parent        @recycle       
  @set           @undestroy     @ulock         @unlink        @unlock        
  @uunlock       @wipe
  
& @-GENERAL
These '@' commands are general utility and programming commands:

  @@             @alias         @break         @channel       @chat
  @cemit         @command       @config        @decompile     @doing
  @dolist        @drain         @edit          @emit          @entrances
  @find          @force         @function      @gedit         @grep
  @halt          @lemit         @listmotd      @mail          @map
  @notify        @nsemit        @nslemit       @nsoemit       @nspemit
  @nsremit       @nszemit       @oemit         @password      @pemit
  @ps            @remit         @restart       @scan          @search
  @select        @stats         @sweep         @switch        @teleport
  @trigger       @verb          @version       @wait          @whereis
  @zemit

& @-WIZARD
These '@' commands are only usable by wizards or privileged players:
 
  @allhalt       @allquota      @boot          @chownall      @chzoneall
  @comment       @dbck          @disable       @dump          @enable
  @flag          @hide          @hook          @kick          @log           
  @motd          @newpassword   @pcreate       @poll          @poor          
  @power         @purge         @quota         @readcache     @rejectmotd    
  @shutdown      @sitelock      @sql           @squota        @uptime        
  @wall          @wizmotd       @wizwall       cd             ch             
  cv
 
& ]
  The "]" command-prefix instructs the MUSH that the rest of the command
  input that follows should not be evaluated. Here's an example:

  > say [add(1,1)]
  You say, "2"

  > say \[add(1,1)\]
  You say, "[add(1,1)]"

  > ]say [add(1,1)]
  You say, "[add(1,1)]"

  > ]"[add(1,1)]
  You say, "[add(1,1)]"
  
  This can be used to pass unevaluated MUSHcode to softcoded commands
  without having to escape every special character, or to help objects
  set attributes to contain unevaluated code.

& @@
 
  The "@@" command is a special kind of command; it signals the start
  of a comment. The comment lasts until a semi-colon is found, just
  like other MUSH programming statements terminate with a semi-colon.
  It cannot be put into the middle of a statement, like
  @va me = $testing:@emit Test. @@ Just a test @@; @vb me=Testing.
  That will result in the object emitting "Test. @@ Just a test. @@"
  The correct usage is to make the comment a statement by itself:
  @va me = $testing:@emit Test.; @@ Just a test @@; @vb me=Testing.
 
  It is not necessary to use a closing '@@', but doing so makes the
  comment stand out much more clearly. A space between the first
  '@@' and the word following it is necessary.
& @aahear
  @aahear <object> = <action list>

  An aahear on an object is activated whenever the object's listen pattern 
  is matched by anything done/said by either anything else in the room OR 
  the object itself. In contrast, an ahear on an object cannot be activated 
  by anything the object itself does.

See also: @listen, @ahear, @amhear, LISTENING
& @aclone
  @aclone <object> = <action list>

  Sets the actions to be taken whenever <object> is @cloned. This command 
  can be useful for notifying the owner of a vending machine or parent 
  object when someone uses the machine.

  Please note that there is no @oclone, and that @clone is always a
  command, not an attribute.

See also: @clone, @create, ACTION LISTS
& @aconnect
  @aconnect <object> = <action list>

  Sets the actions to be taken by a player right after connecting to
  the game.

  Example: @aconnect me = :stretches luxuriously, as if waking from a nap.

  Note that long and spammy @aconnect messages, whether in your room or
  on a channel, are frequently found annoying by other players.

  The player's location, and zone object/objects in the zone parent
  room of the location, as well as objects in the master room, are
  also checked for an @aconnect. If one is found, it will be executed
  when a player connects in that location or zone (or, in the case of
  the master room, anywhere).

See also: @adisconnect, ACTION LISTS
& @adeath
  @adeath <object> = <action list>

  Sets the actions to be taken after <object> is killed. 
 
See also: @odeath, @death, kill, BEING KILLED, ACTION LISTS
& @adescribe
  @adescribe <object> = <action list>
  
  Sets the actions to be taken when  <object> is looked at. 
  A common use of this command is:

    @adesc me=think %N just looked at you.

  which will inform you whenever someone looks at you. %N will be 
  replaced by the name of the person who looked. While it is possible to
  set a message to be broadcasted to everyone in the area when someone
  looks at you, this is strongly discouraged, as many people find it 
  annoying.

See also: @describe, @aidescribe, look, SUBSTITUTION, ACTION LISTS
& @adestroy
  @adestroy <object> = <action list>

  Sets the actions to be taken by the object when it is destroyed
  (via @rec or @nuke). This can only be set by a Wizard.
  If @adestroy doesn't work, try &adestroy. :)
& @adisconnect
  @adisconnect <object> = <action list>

  Sets the actions to be taken by a player right after disconnecting
  from the game.

  Example: @adisconnect me = home

  The player's location, and zone object/objects in the zone parent
  room of the location, as well as objects in the master room, are
  checked for an @adisconnect. If one is found, it will be executed
  when a player disconnects in that location or zone (or, in the case of
  the master room, anywhere).

  Several descriptor variables are passed to @adisconnect:
  %1 = number of remaining connections (0 if a full disconnect)
  %2 = bytes received by the disconnecting descriptor
  %3 = bytes sent by the disconnecting descriptor
  %4 = commands issued by the disconnecting descriptor

See also: @aconnect, ACTION LISTS, recv(), sent(), cmds()
& @adrop
  @adrop <object> = <action list>

  Sets the actions to be taken when <object> is dropped. 
  If <object> is an exit, sets an action to be done after a player
  has passed through the exit.

See also: @odrop, @drop, drop, ACTION LISTS
& @aefail
  @aefail <object> = <action list>

  Sets the actions to be taken by the object when someone fails to enter
  it.

See also: enter, FAILURE, ACTION LISTS
& @aenter
  @aenter <object> = <action list>

  Sets the actions taken by the object whenever someone enters it.

See also: @enter, @oenter, enter, ACTION LISTS
& @aufail
& @oufail
& @ufail
  @ufail <object> = <message>
  @oufail <object> = <message>
  @aufail <object> = <action>

  Sets message shown to a player who fails to use an object via
  the 'use' command (@ufail), message shown to others in the room
  (@oufail), and action for the object to take (@aufail).

  Note that these attributes are @ufail, NOT @ufailure, for
  TinyMUSH compatibility.

& @afailure
  @afailure <object> = <action list>

  Sets the actions to be taken on failure to pass the @lock on an
  object. For players and things, this means failure to pick them up
  with get/take. For exits, this means failure to go through an exit.
  
  May be abbreviated @afail. 

See also: @fail, @ofail, get, EXITS, @lock, ACTION LISTS
& @afollow
  @afollow <object> = <action list>

  Sets the actions to be taken after someone or something begins 
  following the object. 

See also: follow, unfollow, followers(), @follow, @ofollow, ACTION LISTS
& @aunfollow
  @aunfollow <object> = <action list>

  Sets the actions to be taken after someone or something stops 
  following the object. 

See also: follow, unfollow, followers(), @unfollow, @ounfollow, ACTION LISTS
& @ahear
  @ahear <object> = <actions>

  Sets the actions to be taken after the object's @listen is matched. 
  Note that @ahear ignores any messages that the object itself creates, 
  so it can only be triggered by other things. If you want the object to
  be able to trigger itself, try using @amhear or @aahear.
  
See also: @aahear, @amhear, @listen, ACTION LISTS, LISTENING
& @aleave
  @aleave <object> = <action list>

  Sets the actions to be taken whenever someone leaves the object.

See also: leave, @leave, @oleave, ACTION LISTS
& @alfail
  @alfail <object> = <action list>

  Sets the actions to be taken whenever someone tries to leave the 
  object and fails (because the object is set NO_LEAVE or because
  the person fails the @lock/leave on the object). 

See also: leave, @lfail, @olfail, ACTION LISTS
& @alias
  @alias <player>=<alias>
 
  @alias is a special attribute. When a player sets an @alias, he is
  effectively giving himself a secondary name; he can be paged by his
  @alias, and matched with *<alias>, and all other game functions which
  look up player names will also accept the alias. The attribute is
  visible to all players.
  
  Aliases cannot be longer than the limit allowed for player names, 
  cannot contain spaces, and must be unique -- no other player may
  have the same alias or name as any other player's alias or name.

  @alias has no effect on non-players.
& @allhalt
  @allhalt

  This command halts all objects in the game in an effort to free up 
  the queue. Wizard-only command.
  
  This command is equivalent to "@halt/all".

See also: QUEUE, @ps
& @allquota
  @allquota[/quiet] [<limit>]

  This is a God level command that is only available if the quota
  system is being used.  It displays the current max and owned objects
  of every player (unless the /quiet switch is used) and resets their 
  quota left to the new limit minus the current number owned if a limit 
  is given.
& @amhear
  @amhear <object> = <action list>

  Sets the actions to be taken whenever the @listen on the object is
  matched by something that the object itself does. It will not react
  if anyone else in the area does anything that matches the @listen
  pattern. If you want other objects to be able to set off the action
  list, try using @ahear or @aahear.

See also: @listen, @ahear, @aahear, LISTENING, ACTION LISTS
& @amove
  @amove <object> = <action list>

  This is the action to be taken whenever an object moves.

See also: @move, @omove, @oxmove, ACTION LISTS, go
& @apayment
  @apayment <object> = <action list>

  Sets the actions to be taken after a player gives an object some
  amount of pennies. The amount paid is passed in as %0.

See also: give, @pay, @opay, @cost, MONEY, ACTION LISTS
& @atport
  @atport <object>=<action list>

  Sets the list of actions that <object> will perform when it is
  teleported. These actions are done after <object> has arrived
  in its new location.

See also: @tel, ACTION LISTS
& @atrchown
  @atrchown <object>/<attribute> = <new_owner>.
  Like @chown except it changes the control of an attribute from one person
  to another. You may only @atrchown attributes that you can normally set,
  and unless you're a wizard, you can only @atrchown attributes to yourself.

See also: @atrlock, ATTRIBUTES, NON-STANDARD ATTRIBUTES
& @atrlock
  @atrlock <object>/<attribute> = [on|off].

  If 'on' is specified, it 'locks' the specified attribute on the object.
  If the attribute is owned by someone other than you, you will gain
  ownership of it.  If an attribute is unlocked, then anyone who controls
  the object may change it.  If it is locked, only wizards and the attribute's
  owner (Assuming the owner controls the object) can change it. Wizards may
  lock/unlock anyones attributes.  If you specify 'off' it will unlock a
  locked attribute. Specifying neither will return the current value of the
  lock. You can only lock or unlock attributes you can normally set.

See also: @atrchown, ATTRIBUTES, NON-STANDARD ATTRIBUTES
& @asuccess
  @asuccess <object> = <action list>

  Sets the actions to be taken when the @lock of an object is passed.
  For things/players, this means picking them up. For exits, this means
  going through them. 

See also: @success, @osuccess, get, @lock, EXITS, ACTION LISTS
& @attribute
  @attribute <attrib>
  @attribute/access[/retroactive] <attrib> = <flag list>
  @attribute/delete <attrib>
  @attribute/rename <attrib> = <new name>

  @attribute is a wizard-only command which modify's the MUSH's
  table of standard attributes (use @list/attribs to list them).
  A standard attribute is one that can be set with @<attrib> instead
  of &<attrib>, and which, when set, has a predefined set of
  initial permissions.

  *** Unlike TinyMUSH, changes to the PennMUSH attribute table
  *** are not saved across shutdowns. Use these commands from
  *** God's @startup to insure they are run at each startup.

  Used without switches, @attribute shows info about a standard attrib.

  @attribute/access adds a new standard attribute into the table,
  associating it with the given space-separated list of flags.
  See 'help @set' for possible flags.
  If the /retroactive switch is added, the flags are set on every copy
  of the attribute that already exists in the database.

  @attribute/delete removes a standard attribute from the table.
  @attribute/rename renames a standard attribute. 
& @ause
  @ause <object> = <action list>

  Sets the actions to be taken when an object is successfully "used".
  
See also: use, @use, ACTION LISTS, @charges, @runout
& @away
  @away <player> = <message>

  This message is sent to a player who tries to page you when you are
  not connected, if it evaluates to something non-null.

  Example: @away me=I'm not here, please send me @mail instead.

& @boot
  @boot[/silent] <player>
  @boot/port[/silent] <descriptor number>
  @boot/me

  Disconnects the player from the game, with a standard message unless
  the /silent switch is given. 

  The /port switch takes a descriptor number instead (the "Port" number
  in WHO for wizards).

  The /me switch boots any single descriptor for the same player which
  has been idle for at least 1 minute. Players can use this command
  to terminate hung connections.

  Only admin and those with the "boot" power can @boot other players. 

& @BREAK
& @ASSERT
  @break  <boolean>[=<command list>]
  @assert <boolean>[=<command list>]

  @break stops the execution of further commands in the current action
  list if <boolean> is a true value. It doesn't affect new queue entries
  made by previous commands in the action list. Very useful to people who
  don't like @switch. If <command> is given, it is executed instead of
  the rest of the commands in the current queue.

  @assert does the inverse: stopping execution if <boolean> evaluse to false.

  Examples:
  > @va obj=$testme *:@pemit %#=Before break;@break %0;@pemit %#=After break
  > testme 0
  Before break
  After break
  > testme 1
  Before break

  > @force me={@switch 1=1, think Third; think First; @break 1; think Second}
  First
  Third
  (The @switch is run, which queues 'think Third', think First is
   run, displaying 'First', command execution is broken (so we never
   think Second, and then the queued 'think Third' is run, displaying
   Third. If you figured that out, you have a very good understanding
   of the PennMUSH queue. :)

  See also: ACTION LISTS, QUEUE, BOOLEAN VALUES
& @charges
  @charges <object> = <integer>

  Allows you to limit the number of times an object can be "used". 
  The "charges" attribute will be decreased by one each time the
  object's @ause is triggered, and once it reaches zero, the object 
  cannot be used anymore.

See also: use, @runout, @ause
& @chown
  @chown[/preserve] <object>=<player>

  Changes the ownership of <object> to <player>. You can chown things,
  rooms, or exits. To chown a thing, you have to be carrying it. 
  If you do not own an object, you can only chown it if it is CHOWN_OK.
  If you're not a Wizard, you can only @chown objects to yourself or
  to a Zone Master whose zone-lock you pass.

  Normally, @chown'ing an object clears privileged flags and powers,
  and sets the object halt.  Wizards may use @chown/preserve to chown
  an object, preserving these privileges and not setting the object
  halt. Doing this to an active object with queued commands is not
  recommended, and may have strange and insecure effects.

  Examples:
    (for a room)    @chown here=me
    (for an object) @chown box=Soundwave
  
  Players can't be @chowned; they always own themselves.

See also: CHOWN_OK, Zone Masters
& @chownall
  @chownall[/preserve] <player> [= <target_player>]

  Transfers ownership of all the objects that the player owns to 
  <target_player>. If the target player is not included, then all 
  the objects are chowned to the person executing the command. 
  This is a wizard-only command. The /preserve switch keeps privileged
  flags and powers instead of clearing them, and doesn't halt them.

See also: @chown
& @chzone
  @chzone <object>=<zone master> 
  @chzone <object>=none

  The first form of this command changes the ZONE of <object> to
  <zone master>. This puts the object on that zone and may (if the
  zone_control_zmp_only option is off) allow anyone who passes the
  zone-lock of the zone master to make changes to the object. Any
  kind of object can be @chzoned, and any kind of object can be used
  as the zone master.

  The second form of this command resets the zone of <object> to *NOTHING*.
  Anyone can reset the zone of an object s/he owns.

  If a player is @chzoned, anything s/he makes afterwards will start out
  with that Zone, but none of the objects that s/he presently owns will
  have their Zone changed. Players can @chzone themselves to a master if
  they own it. Otherwise, only wizards can @chzone players.

(continued in help @chzone2)
& @chzone2

  To see the Zone of an object, you can use either 'brief' or 'examine'
  to examine it. The Zone is listed on the same line as the Owner of
  the object.

  Players can @chzone objects they own if they own the zone master or
  if they pass its @lock/chzone.  Wizards can @chzone objects to any
  zone master as long as the object has a zone-lock.

  Whenever an object besides a player is @chzoned to a zone master, the
  WIZARD, ROYALTY, and TRUST flags will be reset, as will all @power's
  (for security purposes). For similar reasons, it is strongly recommended
  that you do not @chzone admin- or wizard-owned objects to any zone
  that less privileged players have access to.

See also: ZONES, @chzoneall
& @chzoneall
  @chzoneall <player>=<zone master>

  Changes the zone of all objects owned by <player> to <zone master>. 
  If <zone object> is "none", the zone is reset to NOTHING. Only wizards 
  may use this command.
  
See also: @chzone, ZONES
& @clone
  @clone <object, room, or exit>[=<new name>]
  @clone/preserve <object, room, or exit>[=<new name>]

  For objects, creates an exact duplicate of it and puts it in the
  current room. For exits, it creates an exact duplicate of that
  exit, except the clone's source is the current room rather than
  whatever the original exit's source was. For rooms, creates an
  exact duplicate of the room, without contents or exits. The name
  of the duplicate object can be provided; it defaults to the same
  as the name of the original object.

  The thing to be cloned must be controlled by the @cloning player.
  The clone will be owned by the @cloning player.

  If creation times are enabled, a clone will have a different creation
  time than the object it was cloned from, but will have the same
  modification time, to make tracking revisions of code easier.

  A wizard may use @clone/preserve, which has the effect of preserving
  all the bits, powers, and warnings of the original object.

  To clone a room and all its exits, use code like:
    @tel [setq(0,%l)][clone(here)]; @dol lexits(%q0)=@clone ##

See also: @create
& @command
  @command <command>
  @command/<switch> <command>
  @command/alias <command>=<new command name>

  @command provides information about and controls the availability 
  of other commands.

  With no switches, @command shows all sorts of interesting information
  about how a command is parsed.

  Switches include:
  /disable   : Disable the <command>
  /off       : Synonym for /disable
  /enable    : Enable the <command>
  /on        : Synonym for /enable
  /alias     : Creates an alias for a command.
  /quiet     : Don't make noisy output when doing one of the above
  /add       : Creates a useless command. @hook/override it.
  /delete    : Deletes a command added by @command/add, or aliases.

  See HELP RESTRICT for more.
(continued in help @command2)  
& @command2
  @command/add and @command/delete are powerful tools in that they let
  you write $-commands which may or may not parse their arguments, and
  have the precedence of a built-in command, being checked before
  $-commands on objects. Only God may use these switches.

  Additional switches are used in @command that only apply when used
  with @command/add. These switches are:

  /noeval    : The command does not evaluate arguments passed to it.
  /eqsplit   : The parser parses leftside and rightside
  /lsargs    : Comma-separated arguments on the left side are parsed.
  /rsargs    : In conjunction with eqsplit, the right-side arguments,
               comma-separated, are parsed individually and passed
               to the $-command in @hook/override.

  Any command added without the /noeval switch is provided with the
  /noeval switch itself, so if you @command/add foo, then foo's arguments
  are parsed by default, but you can call foo/noeval. Note: the $-command
  needs to make allowances for the /noeval switch in it's matching.

  Commands added with @command/add, like other standard commands,
  are never case-sensitive (regardless of CASE flag on the attribute).

(examples in help @command3)
& @command3
  Examples:

  > @create Dining Machine
  > &eat dining=$eat *:@remit %L=%N takes a bite of %0.
  > @command/add/noeval eat
  > @hook/override eat=dining machine,eat
  > eat meat loaf
  Walker takes a bite of meat loaf.
  > eat randword(apple tomato pear)
  Walker takes a bite of randword(apple tomato pear)

  > &drink dining=$^drink(/noeval)? (.*)$:@remit %L=%N drinks %1.
  > @set dining/drink=regexp
  > @command/add drink
  > @hook/override drink=dining machine,drink
  > drink reverse(tea)
  Walker drinks aet.
  > drink/noeval reverse(tea)
  Walker drinks reverse(tea).

& @comment
  @comment <object> = <comment>

  This is a wizard-only command which sets a COMMENT attribute on
  <object>. The comment can only be seen by other wizards and royalty.
& @config
  @config/functions
  @config/commands
  @config/attribs
  @config/flags
  @config/list[/lowercase] [<option|option-type>]
  @config/set option=value
  
  This command lists the MUSH configuration parameters, indicating what
  special things are enabled, and the cost of certain commands.
  Switches include:

  /functions  --   Lists all functions.
  /commands   --   Lists all commands.
  /flags      --   Lists all flags.
  /attribs    --   Lists all standard attributes.
  /list       --   Lists the value of a particular <option> or <option-type>
                   if given one; lists the option-types if not.
  /set        --   Wizard only, changes parameters from the mush. See
                   help @config parameters for available ones.
& @conformat
  @conformat <object> [=<format>]

  Replaces the usual "Contents:" or "Carrying:" format when an object
  is looked at, by a player-specified contents format. This is evaluated
  as if it were a description or other similar message on the room.
  The objects that the looker would normally be able to see is passed
  as a dbref list in %0; all contents can be acquired through 'lcon(me)'.
 
  One could change the format to 'Contents: Object1 Object2 Object3'
  through '@conformat here = Contents: [iter(%0,name(##))]',
  for example. More complex things are, obviously, possible.
 
  See also: @exitformat, @nameformat, @descformat
& @descformat
  @descformat <object> [=<text>]

  Replaces the usual description of the object when it is looked at
  by player-specified text. The evaluated DESCRIBE attribute is
  passed as %0; the unevaluated DESCRIBE can be acquired through
  v(DESCRIBE).

  This is useful for things like room parents that enforce a consistent
  "look" for each room's @desc.

  See also: @exitformat, @nameformat, @conformat, @idescformat
& @idescformat
  @idescformat <object> [=<text>]

  Replaces the usual description of the object when it is looked at from
  within by player-specified text. The evaluated IDESCRIBE attribute
  is passed as %0; the unevaluated IDESCRIBE can be acquired through
  v(IDESCRIBE).

  This is useful for things like object parents that enforce a consistent
  "look" for each object's @idesc.

  See also: @exitformat, @nameformat, @conformat, @descformat
& @nameaccent
  @nameaccent <object> [=<accent template>]

  When this attribute holds an accent template that has the same
  length as the object's name, it is used to change the object's name
  in some situations (How it shows up in speech, look, and a few other
  commands). This allows for accented names without having to use the 
  accented characters directly in a name, which can make it harder for
  people to type.

  If a container has both a @nameaccent and a @nameformat, the
  @nameformat is used.

  See also: accent(), @nameformat
& @nameformat
  @nameformat <object> [=<format>]

  Customizes the usual display of the object's name to people who
  are inside it and 'look'. It is evaluated as if it were a description
  or similar message on the room. The room's dbref is passed as %0.

  @nameformat is not used when people outside the object look at it.

  Example: Show the room's zone after its name.
  @nameformat here = [name(%0)] [if(isdbref(zone(%0)),<[name(zone(%0))]>)]

  See also: @exitformat, @conformat, @descformat
& @cost
  @cost <object> = <amount> 

  This sets the number of pennies that need to be given to an object to
  trigger its @pay/@opay/@apay attributes. It is evaluated, so you
  may use functions as well as simple integers; the amount given by
  the player is passed as %0.

  Example:
    @cost exit-machine=10
    @apay exit-machine=@open %N-exit 
    @pay exit-machine=Your exit has been created.  
 
    give exit-machine=10
    > Your exit has been created.
    (The exit will also have been opened by the machine.)

    @cost charity=%0
    @pay charity=Thanks for your donation of %0.

See also: give, MONEY, @pay, money()
& @cpattr
& @mvattr
  @cpattr[/noflagcopy] <obj>/<attr> = <obj1>[/<attr1>] [,<obj2>/<attr2>,...]
  @mvattr[/noflagcopy] <obj>/<attr> = <obj1>[/<attr1>] [,<obj2>/<attr2>,...]
  
  @cpattr copies an attribute from one object to another, or several 
  others. @mvattr does the same thing, except it also removes the original
  attribute from the original object. Attribute flags ARE copied as well,
  unless you use the /noflagcopy switch, which you probably want if you're
  copying from a non-standard attribute to a standard one.

  For example:
    @cpattr box/test = box/test1, cube/random, tribble/describe

  would check the object "box" for an attribute named TEST and then
  copy it to the attributes TEST1 on "box", RANDOM on the object named
  "cube", and DESCRIBE on the object named "tribble".

  If you leave out the destination attribute, the attribute is copied
  to one of the same name on the new object. For example:
    @cpattr box/test=cube
  would copy the TEST attribute from "box" to TEST on "cube".

See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES
& @create
  @create <name> [=<cost>]

  Creates a thing with the specified name. Creating an object costs
  a certain amount of MUSH money, which usually defaults to 10 pennies.
  You can specify a higher cost if you wish, but not a lower one.
  This cost is refunded if you @destroy/@recycle the object.

  Once you have created an object, you can use it as a PUPPET, to store
  USER-DEFINED COMMANDS, or just as a prop. Some MUSHes choose to limit 
  the number of objects that players can create by setting a QUOTA.
 
  See also: give, @quota, MONEY
& @dbck
  @dbck
  This is a wizard only command.  It forces the database to perform a
  series of internal cleanup and consistency checks that normally run 
  approximately every 10 minutes:

  1. For every object, make sure its location, home, next, contents,
     parent, and zone fields are valid objects.
  2. Check for disconnected rooms that aren't set FLOATING
  3. For every exit, player, or thing, make sure there is exactly one
     way to reach it from a room by following the contents fields of
     non-exits, the next fields of non-rooms, and the exits fields of
     rooms.
  4. For every thing or player, make sure that it is in the contents
     list of its location. Make sure every exit is in the exits list
     of its location.
  5. Check that objects being used as zones have a @lock/zone.

  @dbck no longer performs an @purge. The results of @dbck are written
  to the game's error log, and not reported to the Wizard.

& @death
  @death <player> [=<message>]

  This command sets the message displayed to the killer when <player>
  is killed. Typing just '@death <player>' or '@death <player>=' 
  without a message will clear the currently set message.

  Example:
   @death me=You have just slain Cyclonus!

  Note that some MUSHes choose to disable the KILL command, which makes
  this attribute rather pointless.

See also: kill, BEING KILLED, @odeath, @adeath
& @decompile
  @decompile[</switch>] <object>[/<attribute-pattern>]
  @decompile/prefix <object>[/<attribute-pattern>]=<prefix>

  This command produces a list of the commands that you would have to
  enter in order to recreate <object>. Useful for either copying objects
  from one MUSH to another, or for making logs of important objects to
  protect against an accidental @nuke or a crash.

  When the /prefix switch is specified, and a prefix given, all output
  lines will be prefixed with <prefix>. Good for creating client-side
  scripts to edit code with.

  You can either @decompile an entire object, or just certain parts of it.
  To @decompile just a few attributes, for example, you could type:

      @decompile <object>/<attribute name>

  for each attribute. You can also use wildcards in <attribute name> to
  @decompile a list of similarly-named attributes.

(continued in help @decompile2)
& @decompile2
  @decompile takes five switches: /db, /flags, /attribs, /tf, /skipdefault
  Multiple switches may be usefully combined (other than /tf).

  @decompile/db
    This command makes @decompile use the object's DBREF # instead of its
    name, which is useful for editing code off-MUSH.
  @decompile/flags
    Only the code to @create the object and set flags/powers/locks is printed.
  @decompile/attribs
    Only the code to set the object's attributes is printed.
  @decompile/skipdefault
    Don't output commands to set attribute flags if those flags are the
    defaults for that attribute on that MUSH.

(continued in help @decompile3)
& @decompile3

  @decompile/tf <object>[/<attribute>]

  Supplying the /tf switch makes @decompile act exactly as if you typed:
  @decompile/prefix <object>[/<attribute>]=FugueEdit >%b

  You can use a string other than "FugueEdit > " by setting your TFPREFIX
  attribute.  You are strongly urged to do so. Using @decompile/tf with
  the default prefix presents the opportunity for a malicious player
  to load your TinyFugue command line with a harmful command for you to
  execute inadvertantly.

  The /tf switch is handy for grabbing code and placing it right
  into your input window. To do this:

    In TinyFugue:
      /def -ag -mglob -p100 -t"FugueEdit > *" fe = /grab %-2

    In SimpleMU:
      Set your Options -> Grab Password
      @set me=tfprefix:<grabpassword>FugueEdit >%b

See also: CLIENTS, ATTRIBUTES, WILDCARDS, MUSHCODE
& @describe
  @describe <object> [=<description>]

  This command sets the description of the object, which will be seen 
  whenever something looks at the object with the command 'look <object>'.
  Every object should have a description, even if just a short one 
  describing its purpose. If the [=<description>] is left out, the desc.
  on the object will be reset to nothing. When you look at something that
  has no desc., you are told, "You see nothing special."

  @describe can be abbreviated as @desc

See also: look, @adescribe
& @destroy
& @recycle
& @nuke
& @undestroy
& @unrecycle
  @destroy[/override] <object>  OR   @recycle[/override] <object>
  @undestroy <object>           OR   @unrecycle <object>
  @nuke <object>

  NOTE: @destroy and @recycle are the same command - some MUSHes
  choose to use @recycle instead of @destroy to avoid the typo of
  '@dest obj' for '@desc obj'. Others use @destroy. @nuke is an alias
  for @dest/override.

  Recycles <object> and returns the player's investment (the cost of
  @create). You should always @destroy objects you no longer need;
  this keeps the database down to a manageable size.  When an object
  is @destroyed, it is set GOING, its queue is cleared and any
  semaphores are drained, and its ADESTROY attribute is immediately
  triggered. 

(continued in help @destroy2)
& @destroy2

  GOING objects are actually removed from the db approximately every
  10-20 minutes. Until then, you may use the @undestroy/@unrecycle
  command to abort the destruction sequence. If you @undestroy an
  object, its STARTUP attribute is triggered. If you @destroy a
  GOING object, it is purged immediately.

  Wizards may @nuke players. If the DESTROY_POSSESSION config option
  is set (see @config), destroying a player destroys all non-SAFE
  things the player owns, and @chowns SAFE things to God. If not,
  destroying a player @chowns all their objects to God.

See also: SAFE, GOING, DESTROY_OK  
& @dig
  @dig[/teleport] <room name>[=<exit name>;<alias>*,<exit name>;<alias>*]
  
  This command is used to create a new room, possibly with exits linking
  it to the room you are standing in. This command normally costs 10 pennies,
  although some MUSHes may have different amounts or may restrict this 
  command to those with the builder @power.
  
  @dig/teleport will automatically @tel the digger to the new room.

  If you use the long form of this command, an exit to the new room
  from the one you are standing in and an exit back from the new room
  will both be automatically @open'ed and @link'ed. You may have as 
  many or as few exit aliases for an exit as you like, separated in the
  command by semicolons. The exit leading to the new room is separated
  from the exit leading back by a single comma.

(continued in help @dig2)
& @dig2
  Examples: 
  @dig Kitchen
    This command will create a new room named 'Kitchen'. You will be informed
    what the dbref # of this room is.

  @dig Kitchen = Kitchen <N>;n;north;kitchen;k
    This will create the room as above and also open an exit leading
    to it named "Kitchen <N>;n;north;kitchen;k". It will appear in the 
    list of Obvious exits as just "Kitchen <N>", but you will be able to
    go through it by typing any of the following: n, k, north, kitchen
    It will NOT create an exit coming back from the Kitchen room.

  @dig Kitchen = Kitchen <N>;n;north;kitchen;k,Out <S>;s;south;out;o
    This will do just the same as the above, except it will also create
    an exit named "Out <S>;s;south;out;o" coming back from the kitchen
    to whatever room you are currently in.
    
See also: @open, @link, EXITS, @create
& @doing
  @doing <message>
  @doing/header <message>

  This command sets a short message that shows up in the WHO/DOING listing
  next to your name. @doing/header <message> works exactly like @poll and
  can only be used by Wizards or those with the poll power.

See also: @poll, WHO, DOING
& @dolist
  @dolist[/notify][/delimit] [<delim>] <list> = <action>
  
  @dolist executes the <action> for each element in <list>. If <list> is a
  function, it will be evaluated to obtain the necessary list to use. It
  may be any space-separated list of strings, which can be object numbers,
  attributes, or arbitrary words. If the /delimit switch is given, the first
  character of the list is used as the separator, instead of space.
  
  <action> is a command or list of commands enclosed in braces { }
  and is performed once for every item in <list>. The special symbol "##"
  is replaced by the corresponding item from <list>.  The special symbol
  "#@" is replaced by the position of that item in the list.
 
  If the /notify switch is used, a "@notify me" is queued after all the
  list commands. This is useful for object synchronization with semaphores.
   
  Example: @dolist [lcon(here)] = "[name(##)]
    would cause you to say the name of all objects in the room.
& @drain
  @drain[/any][/all] <object>[/<attribute>][=<number>]
  
  This command discards commands waiting on a semaphore without
  executing them.

  If the /any switch is given, then all semaphores associated with
  <object> are @drained.  Otherwise, the only the specified semaphore
  attribute (or SEMAPHORE if no attribute is specified) is @drained.

  If the /all switch is given, then all queue entries associated
  with the selected semaphore(s) are discarded, and the semaphore
  attribute(s) are cleared.  Otherwise, only the indicated <number>
  of queue entries are discarded.  If no <number> is given, then
  the /all switch is assumed.

  You may not specify both the /any switch and a specific attribute.
  Similarly, you may not specify both the /all switch and a number.

  See also the help for: SEMAPHORES, @notify, @wait
& @drop
  @drop <object> [=<message>]. <object> can be a thing, player, exit,
  or room, specified as <name> or #<number> or 'me' or 'here'. Sets 
  the drop message for <object>. The message is displayed when a 
  player drops <object>. Without  a message argument, it clears the 
  message. 

  On an exit, this message is sent to a player after they pass through
  the exit.

  See also: drop, @odrop, @adrop.
& @dump
  @dump [/paranoid] [check interval]
 
  This is a wizard only command that saves a copy of the current memory
  database out to a save file.  This preempts the normal regular dumping
  that the mud performs on its own.
 
  If the /paranoid switch is used, the game performs additional consistency
  checking which corrects possible data corruption. If a check interval
  is specified, the game writes confirmation of the dump to the checkpoint
  log file every <interval> objects. If no interval is specified, it is
  taken to be the size of the database, divided by 5.
  This switch should ONLY be used if a normal @dump is not being done
  correctly. Paranoid dumps should generally only be done by wizards with 
  access to the account on which the MUSH is running, since others will
  not have access to the checkpoint log file.
& @ealias
  @ealias <object> = <enter alias>

  This allows a player to type the enter alias instead of "enter <object>"
  If you have a chair, you could "@ealias chair = sit down" and then just
  type "sit down" instead of "enter chair" - using the object name is
  not necessary. Note that the enter alias is checked after normal exits.
  Like an exit, it may have a semi-colon separated list of words,
  i.e. sit down;sit;sit on chair
& @edit
& @gedit
  @edit[/first] <object>/<pattern> = <search>,<replace> 
  @edit <object>/<pattern> = $,<string to append>
  @edit <object>/<pattern> = ^,<string to prepend>

  This is useful when you don't want to have to retype those obnoxiously 
  long descriptions just to make one little change.  Instead, search and 
  replace via @edit.  
  
  <pattern> is a pattern, optionally containing wildcards, for the attribute 
  names you wish to edit. Only attributes already defined on <object> may be 
  edited. <search> and <replace> are two strings. It's also possible to use 
  "$" and "^" to signal appending and prepending text, respectively.
  
  If the text contains commas, percent signs, or similar special characters,
  it usually must be enclosed in curly braces.

  If the /first switch is used, only the first occurrence of <search>
  is replaced.
  
  See also ATTRIBUTES, edit()
& @efail
  @efail <object> = <message>
  This is the message shown to the player who fails to enter the object.
& @elock
  @elock <object> = <key>
  Enter-locks an object, restricting who is allowed to enter it. Special
  lock types are supported (see "help @lock" for details). Only objects
  which are ENTER_OK may be entered, regardless of the key.
 
  Rooms don't use ENTER_OK or @elock; they use @lock/teleport
  instead. Only people who pass the room's teleport lock, are wizards
  or royalty, or control the room, will be allowed to @teleport into the
  room. (Note that this is different from NO_TEL, which prevents people
  from teleporting out of a room).  The teleport lock is evaluated even
  if the room is JUMP_OK - in other words, if you are trying to teleport
  into a room you don't control, the room must be JUMP_OK, and you must
  pass the teleport lock.

  Note that the enter lock of an object or room being used as a Zone
  Master Object determines control of that zone. Please note that if
  you're using a room as a ZMO (i.e. as a zone master room), only the
  controllers of that zone will be able to teleport into that room
  (which is a good thing for security).
& @emit
& \  
  @emit[/<switch>] [<message>]
  \<message>

  This sends <message> to every person in the current room. However, no
  identifier marking it as being sent by you is shown.  For example,
  @emit foo would show 'foo' to every object in the room. 

  The /room switch makes this command equivalent to "@lemit". 
  The /silent switch in combination with /room suppresses the
   @lemit confirmation. It has no effect without /room.
  The /noeval switch prevents the MUSH from evaluating the message.
  The /spoof switch causes nospoof notifications to show the enactor's
    dbref instead of the executor's dbref, and requires control over
    the enactor or the Can_nspemit power.

  @emit can be abbreviated "\"

  See also @pemit, @remit, @oemit, @lemit, NOSPOOF and SPOOFING.
& @enable
& @disable
  @enable <parameter>
  @disable <parameter>
  
  These are wizard commands that allow certain parameters of the game to
  be changed at runtime. The values of these parameters are listed by the
  "@config" command. Common parameters and their effects are as follows:
  
  logins       --  When logins are disabled, only wizards and royalty may
                   log into the game. Mortals attempting to log in will be
                   given the down text, as well as the @rejectmotd.
  guests       --  When guests are disabled, players can not log in as
                   guest characters.
  pueblo       --  Turns on HTML output for the Pueblo client.
  log_commands --  When this is enabled, all commands are logged.
  log_huhs     --  When this is enabled, all commands that produce a "Huh?"
                   are logged.
  log_forces   --  When this is enabled, @forces done by wizards are logged.
  log_walls    --  When this is enabled, @walls are logged.

  Actually, any boolean (Yes/No) runtime option can be enabled or
  disabled with these commands, as a shortcut for @config/set.

  @enable <option> is the same thing as @config/set <option>=yes
  @disable <option> is the same thing as @config/set <option>=no
& @zenter
& @ozenter
& @azenter
  @zenter <ZMO> = <message>
  @ozenter <ZMO> = <message>
  @azenter <ZMO> = <action>
  
  These attributes set the message shown to a player who enters a room in
  a new zone (@zenter), the message shown to others in the room in the
  new zone when the player enters (@ozenter), and the action triggered
  by the entry (@azenter).

  Entry into a new zone is said to occur when a player goes from 
  a room not in the zone to a room in the zone. "Room" in this context
  means the player's absolute room (outermost container), so entering
  and leaving unzoned objects within a zoned room doesn't trigger these.

  Zone entry is assumed to occur before room entry, so these are
  triggered before the room's @[oa]enter.

See also: @zleave, @ozleave, @azleave, ZONES
& @zleave
& @ozleave
& @azleave
  @zleave <ZMO> = <message>
  @ozleave <ZMO> = <message>
  @azleave <ZMO> = <action>
  
  These attributes set the message shown to a player who leaves a room in
  a zone (@zleave), the message shown to others in the room in the
  old zone when the player leaves (@ozleave), and the action triggered
  by the leave-taking (@azleave).

  Leaving a zone is said to occur when a player goes from a room in
  the zone to a room not in the zone. "Room" in this context means the
  player's absolute room (outermost container), so entering and leaving
  unzoned objects within a zoned room doesn't trigger these.

  Zone leaving is assumed to occur after room leaving, so these are
  triggered after the room's @[oa]leave.

See also: @zenter, @ozenter, @azenter, ZONES
& @enter
  @enter <object> = <message>

  This sets the message that is displayed to anyone entering the 
  object. Works just as @success on an exit does.

  Example:
    @enter Chair = You sit down on the comfy chair.
    enter chair
    > You sit down on the comfy chair.

See also: @oenter, @oxenter, enter
& @entrances
  @entrances[/<switch>] <object> [=<begin>,<end>]
  
  This command will show you all exits linked to the object you use the
  command on, as well as where the exit originates.  This command is
  computationally expensive and costs the same as @find. You can limit
  the range of the dbrefs searched by specifying <begin> and <end>.
  
  It takes four switches:
  
  /exits       show only exits linked to <object>
  /things      show only things which have their homes in <object>
  /players     show only players who have their homes in <object>
  /rooms       show only rooms which have a drop-to of <object>
& @eunlock
  @eunlock <object>

  Enter-unlocks an object, in a fashion similar to @unlock. For anyone
  to be able to enter an object, it must be both @eunlocked and ENTER_OK.
  You can also simply type 
    @lock/enter <object> 
  to unlock an object.

See also: @lock, locktypes, @elock
& @exitformat
  @exitformat <object> [=<format>].

  Replaces the usual "Obvious Exits:" format when an object is looked
  at, by a player-specified exits format. This is evaluated as if it
  were a description or similar message on the room.  The objects that
  the looker would normally be able to see is passed as a dbref list
  in %0; all exits can be acquired through 'lexits(me)'.
 
  One could change the format to 'Exits: Exit1 Exit2 Exit3' through
  '@exitformat here = Exits: [iter(%0,name(##))]', for example.

  See also: TRANSPARENT, @conformat, @nameformat, @descformat
& @failure
  @failure <object> [=<message>]

  Sets the message shown to someone who fails to pass the object's
  basic @lock. For a thing or player, this would be when someone tries
  to pick the object up and fails. For an exit, this occurs when someone
  tries to go through the exit and fails.

  If [=<message>] is omitted, any currently set message will be reset.

  Can be abbreviated @fail. It is recommended that you put an @fail message
  on any locked object.

See also: FAILURE, @ofailure, @afailure
& @firstexit
  @firstexit <name of exit>

  Makes the named exit the first in the listing of Obvious Exits in a
  room. You must control the room in order to use this command.

See also: EXITS, @open, @link
& @filter
  @filter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
 
  This attribute is meant to be used in conjunction with the AUDIBLE
  flag. The @filter of an object is a comma-separated list of wildcard
  patterns (like @switch patterns). Any messages which match one of the 
  patterns is suppressed and not propagated through the AUDIBLE object
  with the @filter set. (Note: @filter on rooms has no effect!)
 
  Please note that you should NOT use curly brackets {} in an @filter
  pattern. If you want to filter a message containing a comma, you
  need to put a \ before it. Also note that AUDIBLE exits will not
  take effect unless the room they lead from is also set AUDIBLE.

  See 'help @filter2' for more.
& @filter2
 If the @filter attribute is flagged REGEXP, the patterns are considered
 regular expressions, not wildcards. The CASE attribute flag is also
 respected. 

Example: 
  An exit leads from the room where Wizard is standing to another
  room where the puppet "Wiztoy" is standing. The exit is set AUDIBLE.
  
    @prefix exit=From inside,
    :tests.
    > Wizard tests.
    Wiztoy> From inside, Wizard tests.
    @filter exit=* jumps.,* tests.
    :jumps.
    > Wizard jumps.
    :tests.
    > Wizard tests.
  (Wiztoy doesn't hear anything, because it is filtered out.)
    :tests again.
    > Wizard tests again.
    Wiztoy> From inside, Wizard tests again.

See also: AUDIBLE, @infilter, LISTENING
& @find
  @find [<name>] [=<begin>,<end>]

  Displays the name and number of every room, thing, or
  player that you control whose name matches <name>. Because the
  command is computationally expensive, this costs 100 pennies.
  You can limit the range of the @find by specifying <begin> and
  <end>, where these are the first and last dbrefs to examine.

  Some MUSHes may choose to restrict @find only to Royalty. Even if 
  not, it is recommended that you use @search instead, as it can be
  limited more effectively.

See also: @search
& @follow
  @follow <object> = <message>

  Sets the message shown to someone after they begin following 
  the object (using the 'follow' command). 

See also: follow, unfollow, followers(), @ofollow, @afollow
& @FORWARDLIST
  @forwardlist <object> [=<list of dbrefs>]

  When an object set AUDIBLE hears sound that passes its @filter, its
  @forwardlist attribute is checked, and if present, the sound (Prefixed
  by the object's @prefix attribute) is forwarded to all the dbrefs in the
  @forwardlist, like puppets do to their owners.

  The @forwardlist must be a space-seperated list of dbrefs. 
  In order to forward to an object, you must either control it,
  have the pemit_all power, or, if it has a @lock/forward set,  pass 
  its @lock/forward.  (If you want to allow all objects you own to
  forward to you, regardless of whether or not they control you, use
  @lock/forward me=$me)

See also: @filter, @prefix, AUDIBLE, PUPPET
& @unfollow
  @unfollow <object> = <message>

  Sets the message shown to someone after they stop following 
  the object (using the 'unfollow' command). 

See also: follow, unfollow, followers(), @ounfollow, @aunfollow
& @force
  @force[/noeval] <object>=<command>

  This forces the object to perform the command just as if it had
  typed it in itself. Only wizards may @force other players. You
  can @force any object which you own or control. Useful for
  manipulating puppets. If <object> is not in the same room as you,
  you can instead use the object's dbref number. 

  @force can be shortened to @fo or @for, or abbreviated as:
    <dbref #> <command>

(continued in help @force2)
& @force2

  Normally, the command is parsed for function evaluation and 
  substitutions twice - once when @force is run, once when
  the forcee runs the command. @force/noeval will only
  evaluate the command when the forcee runs it.

Example:
  @create Lackey
  > Created: Object #103 
  @fo Lackey = go east
  > Lackey goes east.
  > Lackey has left.
  @fo #103 = page Cyclonus = Hi there!
  > Lackey pages: Hi there!
  #103 page Cyclonus = Whee
  > Lackey pages: Whee

See also: PUPPET, DBREF 
& @flag
  @flag <flag name>
  @flag/list [<flag name pattern>]
  @flag/add <flag name>=[<letter>], [<type(s)>], [<setperms>], [<unsetperms>]
  @flag/delete <flag name>
  @flag/alias <flag name>=<alias>
  @flag/letter <flag name>[=<letter>]
  @flag/restrict <flag name>=[<setperms>], [<unsetperms>]
  @flag/type <flag name>=<type(s)>
  @flag/enable <flag name>
  @flag/disable <flagname>

  This command manipulates the list of flags in the database.
  When given a flag name as an argument, the command displays information
  about the flag, including aliases and permissions. @flag/list
  lists names of enabled flags, and may be given a wildcarded pattern
  to restrict which names it will show.

  All other switches to this command are restricted to God:
    /disable disables a flag, making it invisible and unusable
    /enable re-enables a disabled flag
    /alias adds a new alias for an existing flag
    /letter changes or removes a single-letter alias for an existing flag.
    /restrict changes flag permissions (see help @flag2)
    /type changes flag type(s) (see help @flag2)
    /delete deletes a flag completely, removing it from all objects
      in the database and the removing it permanently from the 
      flag table. It requires the exact flag name or alias to be used.
      Be very very careful with this. 

  See also: help flags. See help @flag2 for information on @flag/add
& @flag2
  @flag/add is used to add a new flag with the given name. Arguments
  other than the flag name are optional:

  <letter> gives the flag's one-letter abbreviation, which must
    not conflict with the one-letter abbreviation of another flag that
    could be applied to the same object type(s). It defaults to none, which 
    means it won't appear in a list of flag characters but can still be 
    tested for with hasflag(), andlflags(), and orlflags(). 
  <type> specifies the space-separated list of types to which the flag
    applies, and may be 'any' or one or more of 'room', 'thing', 'player',
    or 'exit'. It defaults to 'any'.
  <setperms> specifies the space-separated list of permissions for who can
    set and/or see the flag. See 'help flag permissions' for details.
    It defaults to 'any'
  <unsetperms> specifies the space-separated list of permissions for who
    can clear the flag on an object they control. It defaults to 
    whatever <setperms> is given, or 'any'.

  Flags added with @flag/add are saved with the database when it
  is dumped, and do not need to be re-added at startup. They are
  treated exactly as any other flag in the server.
& flag permissions
  The following permissions can be used when specifying whether
  <actor> may set or clear a flag on an <object> they control:

   trusted     <actor> must pass a TRUST check (see help TRUST)
   royalty     <actor> must be ROYALTY or WIZARD
   wizard      <actor> must be WIZARD
   god         <actor> must be God (#1)

  The following permissions can be used to specify whether <looker>
  can see the flag on an <object>, and are given along with the
  <setperms> in @flag/add. By default, anyone can see the flag:

   dark        <actor> must be Only God (#1) to see the flag on objects.
   mdark       <actor> must be WIZARD or ROYALTY 
   odark       <actor> must own the <object> (or be WIZARD or ROYALTY)

  The following permissions control other behavior related to the flag:
  
  log          Log when the flag is set or cleared. Only meaningful in
               <setperms>.

& @function
  @function [<function name>]
  @function <name>=<obj>,<attrib>[,<min args>, <max args>[,<restrictions>]]
    or @function <function name>=<object>/<attribute>
  @function/<switch> <function name>
  
  When used without any arguments, this command lists all global
  user-defined functions. For wizards and others with the Functions
  power, it also lists the dbref number and attribute corresponding
  to the listed functions.

  When used with a function name, it displays some information
  about how that function is parsed, and how many arguments it
  takes.
  
  <switch> can be one of:
  /disable, to disable a built in function.
  /enable, to re-enable it.
  /delete, to remove a user-defined function.

  Otherwise, this command defines a global function with the name
  <function name>, which evaluates to <attribute> on <object>.
  <object> can be anything that the player using the @function command
  controls. <function name> must be 30 characters or less.

(continued in help @function2)
& @function2
  A function defined using @function works just like any of the normal
  MUSH functions, from the user's perspective. The functions are
  executed by the object, with its powers. 
 
  Functions defined via @function should follow the format used by
  UFUN() - %0 is the first argument passed, %1 is the second argument
  passed, and so forth. Option third and fourth arguments to @function
  can be used to set a parser-enforced number of arguments for the function.
  
  Example:
  
    > &WORD_CONCAT #10=%0 %1
    > say "[ufun(#10/word_concat,foo,bar)]
    You say, "foo bar"
  
    > @function word_concat = #10, word_concat
    > say "[word_concat(foo,bar)]
    You say, "foo bar"
 
(continued in help @function3)
& @function3
  Global user-defined functions are not automatically loaded when the
  game is restarted. In order to avoid objects which attempt to use
  functions that have not been loaded, a @startup containing @function
  commands should be set on a wizard object with as low a dbref number 
  as possible; object #1 (generally God) is suggested for this use.

  For example, if you have one object that stores all your global
  functions, you could set the following command (the object is #100
  in the example):

    @startup #1=@dol lattr(#100)=@function ##=#100,##

  And then store each function as an attribute of the same name on 
  object #100.
(continued in help @function4)
& @function4
 Normally, built in functions cannot be overriden by @functions.
 However, if a built-in function is deleted with @function/delete,
 you can then make a @function with the same name. 
 @function/restore will delete the @function and turn the built in
 version back on.

 For example:
  @function/delete ansi
  &ansi_fun #1234=%0
  @function ansi=#1234, ansi_fun, 2, 2, noguest

 will create a new version of ansi() that doesn't do any
 colorization, and that requires it to be called with exactly
 2 arguments, like the built-in version. It will be restricted to
 non-guest players.

See also: RESTRICT, FUNCTIONS, @startup
& @grep
  @grep[/<switch>] <object>[/<attrs>]=<pattern>
  
  This command searches attributes in an object for <pattern>. It takes
  four switches:
  @grep/list
    Lists the names of the attributes on the object containing <pattern>.
  @grep/ilist
    Same as above, but is case-insensitive when trying to match <pattern>.
  @grep/print
    Prints out all the attributes, highlighting the pattern itself in 
    boldface, if you're ANSI.
  @grep/iprint
    Same as above, case-insensitive.

  When used without a switch, @grep defaults to @grep/list.
(continued in help @grep2)
& @grep2

  You must be able to see attributes on <object> (i.e. you must control
  the object, it must be VISUAL, or you must be a Wizard or Royalty).
 
  <attrs> is an optional wildcard pattern specifying attributes to
  match (much like @edit). If <attrs> is not provided, all attributes
  are assumed (just as if you had provided "*").
   
  <pattern> is not treated as a wildcard pattern, so you can grep for
  patterns containing '*', '?', etc.  Also, <pattern> is NOT PARSED,
  so '[v(0)]' and the like can be searched for.
& @halt
  @halt <object> [=<new_command>] 
  @halt/all
 
  The @halt command removes all queued actions for <object>. 
  If <new command> is specified, that new command is placed
  in the queue for the object instead. If no new command is
  specified, the object is set HALT.

  If <object> is a player, it clears the queue for the player and
  and all of his objects. You can use "@halt me" to clear your own
  queue without setting yourself HALT. Only wizards can @halt 
  other players.
  
  Note that halting an object does NOT affect any objects waiting
  on it as a semaphore.

  @halt/all is a synonym for @allhalt and is a wizard-only command.

See also: HALT, QUEUE, @ps
& @haven
  @haven <player> = <message>

  This message is sent to a player whose pages you are refusing, either
  through use of the HAVEN flag or through the use of a page lock, if
  it evaluates to something non-null.

See also: HAVEN, page, @lock, @away
& @hide
  @hide[/<switch>]
  
  This command enables a royalty, wizard, or player with the Hide
  power to disappear from the WHO list for mortals. "@hide/yes" or "@hide/on"
  hides the player, "@hide/no" or "@hide/off" unhides the player.
  Hidden players are marked as "(Hide)" in the privileged WHO listing.
 
  Mortals can not use the CONN(), IDLE(), or LWHO() functions to find 
  hidden players.

& @idescribe
& @oidescribe
& @aidescribe
  @idescribe <object> [=<description>]
  @oidescribe <object> [=<message>]
  @aidescribe <object> [=<action list>]

  @idescribe command sets the internal description for an object, which is 
  shown to anyone who enters or looks while inside the object. Meaningless 
  for rooms and exits. May be abbreviated to @idesc.

  @oidescribe sets the message seen by others when someone looks at the 
  idesc, and @aidescribe sets the action the object will take (just as 
  with @desc, @odesc, @adesc). 

  If there is no IDESCRIBE set for an object, those who enter or look 
  inside it will see its @desc, and no o-message or action will be
  available. If you want to use @aidescribe without @idescribe, set 
  @idescribe to a blank string.

  If [=<description>] or [=<message>] omitted, the attribute will be 
  reset.
  
See also: enter, @enter, ENTER_OK, @describe, look, @idescformat
& @hook
  @hook/<switch> <command>[=<object>, <attribute>]

  @hook tells the command parser to evaluate given attributes at certain points
  in command evaluation. The possible points, indicated by the proper switch:

  @hook/ignore: The attribute is evaluated before the built-in command is run.
                If it returns a false value, the command is skipped
                (the input is still matched against softcoded commands)
  @hook/override: The object/attribute is matched for a $command,
                and if it matches, it is run instead of the built-in command,
                but with the precedence of the built-in command (thus
                overriding not only the built-in command but any local
                $commands that might match). If the match fails, normal
                built-in command processing continues. Note that all locks
                and flags on the object (HALT, etc.) still apply.
  @hook/before: The attribute is evaluated before the built-in command is run.
  @hook/after: The attribute is evaluated after the built-in command is run.

  In all cases, %# is the dbref of the object doing the command, and all
  hooks share the same set of q-registers. With /before and /after, 
  the results of the evaluated attribute is thrown away like it was
  wrapped in a call of null(). Also, in cases where a command and function
  do the same thing (e.g., @pemit and pemit()), only the command gets
  the hooks.

  Leaving out the object and attribute clears an existing hook. Wizards can
  see existing hooks with @command.

  See HELP @HOOK2 for an example.
& @hook2
  An example of @hook:

  > &top_line #3=pemit(%#, What follows is the results of a look)
  > &bottom_line #3=pemit(%#, You're done looking.)
  > @hook/before look=#3, top_line
  > @hook/after look=#3, bottom_line
  > look
  What follows is the results of a look
  Room Zero
  You are in Room Zero. It's very dark here.
  You're done looking.
& @idle
  @idle <player> = <message>

  This message is sent in return to every page which successfully reaches
  you if it evaluates non-null. It is useful if you are idle for long 
  periods of time and wish to inform people where you are, or if you
  are in a meeting and cannot quickly return pages.

  Clever example: 

   @idle me=[switch(gt(idlesecs(me),120),1,I'm idle. Use @mail,)]

  Players paging me will only see the "I'm idle" message if I've been
  idle for over 2 minutes (120 seconds).
& @infilter
  @infilter <object> = <pattern 1>, <pattern 2>, <pattern 3>, ...
  
  @infilter is meant to be used on objects that have an @listen of "*"
  (ie, objects that listen to everything, which is commonly used for 
  things like chairs so that someone inside the object can hear 
  everything said/done outside it). @infilter filters out any messages
  that match one of the patterns and prevents those inside the object
  from hearing them. It does not stop the @ahear of the listening object
  from being triggered by things that match the @listen.
 
  For an explanation of infilter patterns, see the help for "@filter".

See also: @filter, @listen, AUDIBLE, LISTENING
& @inprefix
  @inprefix <object> = <message>
  
  @inprefix is intended for use with objects with a @listen of "*".
  It prepends the <message> string to any message propagated to the
  contents of <object> from the outside. If there is no @inprefix,
  no string is prepended to the output.
  
  Example:
  
  [ First, @create Vehicle and Test (objects #103 and #104) and drop them ]
    > @inprefix Vehicle = From outside,
    Vehicle - Set.
    > enter Vehicle
    Vehicle(#103)
    > @force #104=:bounces.
    From outside, Test bounces.

See also: @prefix, @listen, @infilter
& @kick
  @kick <number>
  
  This wizard-only command forces the immediate execution of <number>
  items from the queue. Rarely useful. If your MUSH is lagging badly,
  chances are high that it stems from network problems. Check the queue
  before using this command.

See also: @ps, QUEUE
& @lalias
  @lalias <object> = <leave alias>

  Sets the leave alias(es) of an object that is ENTER_OK. Setting a leave 
  alias allows people to type the leave alias instead of the "leave"
  command in order to get out of the object. Meaningless for exits and
  rooms.

  You can set multiple leave aliases on an object by separating them with
  semi-colons.
  Example:
      @lalias chair=stand up;stand;get up;rise

See also: @ealias, leave, @leave, @lfail
& @leave
  @leave <object> = <message>
  
  Sets the message that is displayed to anyone leaving <object>. 
  
See also: leave, @lfail
& @lemit
  @lemit[/<switch>] <message>

  Emits a message to the outermost container object. For example, if you
  are carrying a bird, and are inside a vehicle which is in room #10, and
  you force the bird to @lemit "Cheep", everyone in room #10 will hear
  "Cheep". This command is the same as "@emit/room". 

  The /silent switch suppresses the normal confirmation message.
  The /noeval switch prevents <message> from being evaluated.
  The /spoof switch causes nospoof notifications to show the enactor's
    dbref instead of the executor's dbref, and requires control over
    the enactor or the Can_nspemit power.
& @lfail
  @lfail <object> = <message>

  This is the message shown to the player who fails to leave the object,
  either because the object is set NO_LEAVE or because the person leaving
  fails the leave-lock.

See also: leave, @leave, NO_LEAVE, locktypes
& @list
  @list/<switch>[/lowercase]
  @list[/lowercase] <switch>

  The @list command lists useful MUSH information.

  Switches include:
  /motd      : Alias for @listmotd, shows current messages of the day.
  /functions : Alias for @config/functions, shows all functions
  /commands  : Alias for @config/commands, shows all commands
  /attribs   : Alias for @config/attribs, shows all standard attribs
  /flags     : Alias for @flag/list, shows all flags
  /powers    : Alias for @powers/list, shows all powers
  /lowercase : Show whatever you're showing in lowercase, rather than upper.
& @listmotd
  @listmotd

  This command lists the current MOTD (message of the day) for the MUSH.
  If used by a wizard or admin, it will also include the wizard, full, and
  down MOTDs to the user. Same as @list/motd.

See also: @list
& @link
  @link[/preserve] <object>=<dbref | here | home | variable>

  Links <object> to either a room or a thing. If a thing or player is
  linked, that sets the object's HOME. If a room is linked, that sets 
  the object's drop-to room, which is where objects that are dropped
  in the room will be sent to.

  Most often, @link is used to link or relink an exit to a destination 
  room. In order to link an exit to a room, you must either own or
  control the room, OR the room must be set LINK_OK. If the exit is
  currently unlinked, and you pass its @lock/link, you may link it even
  if you do not own it. In this case, the exit will be @chowned to you
  (and set HALT).  Linking an exit may have a cost (usually 1 penny.)
  The Wizard-only /preserve switch can be used to link without @chowning
  and HALTing the exit.

  If the destination of an exit is "variable", its destination is
  determined at the time of travel by the attribute DESTINATION on the
  exit, which is evaluated like a U()-function. You must have permission
  to link to whatever the DESTINATION evaluates to in order for the exit
  to work. If there's no DESTINATION attribute, the EXITTO attribute
  is also tried.

  If the destination is "home", those who travel through the exit will
  be sent to their homes.

  LINK_OK objects can also be used as semaphores, and any object can be
  @parented to them.

See also: EXITS, @open, @dig, DROP-TO, HOME
& @listen
  @listen <object> = <string>

  Sets the object's listen pattern to <string>, which can have wildcards.
  Whenever something the object hears matches the pattern, the object's
  ahear/amhear/aahear attribute will be triggered. In addition, anything 
  inside the object will hear it as well.

For example:
  @listen Chair = *  
    Since the wildcard (*) matches anything, anyone inside the object will
    hear anything said outside it.
  @listen Butler = * has arrived.
  @ahear Butler = :walks over to the new arrival and takes %p coat.
  > Cyclonus has arrived.
  > Butler walks over to the new arrival and takes his coat.
    In this case, the listen pattern is met whenever someone 'arrives' in
    the room, and then the object does whatever is inside its @ahear 
    attribute.

(continued in help @listen2)
& @listen2
  An object "hears" anything that another player standing in the same room
  would hear. For example, if you type in a command, the object does NOT
  hear it. If the command has a result that people in the room hear, the
  object will hear it.

For example:
  @listen Recorder = @emit *
  @ahear Recorder = :records {%0}
  @emit Whee!
  > Whee!
    In this example, the Recorder's listen-pattern is NOT matched, because
    it doesn't hear the '@emit Whee!', it only hears the 'Whee!' part, which
    doesn't match.

  @listen Recorder = Cyclonus says, "*"
  "Whee!
  > Cyclonus says, "Whee!"
  > Recorder records: Whee!

See also: LISTENING, @ahear, @amhear, @aahear
& NEW LOCKS
  In PennMUSH 1.7.5, several new features have been added to locks.

  Locks can now be inherited off of parents, just like attributes.
  By default, locks are set no_inherit, but this flag can be cleared.

  There are now lock flags including ones to control inheritance,
  copying in a @clone, who can set them, and so on. Details are
  in HELP @LSET.
  
  Indirect lock keys (@#1234) can now refer to other lock names on
  objects, not just a lock of the same name. See HELP @LOCK4.

  There is a new lock key for testing flags and object types. 
  See HELP @LOCK9 for more information.
& LOCKING
& LOCKS
& @lock
  @lock[/<switch>] <object>=<key> 
  
  This command "locks" the object, specifying (by the key) who or what can
  do certain things with the object. There are many different types of locks,
  all of which are described in "help locktypes" and which are designated by
  the switch. The "basic" lock determines, for players and objects, who can
  pick them up. For exits, it determines who can go through the exit.
  All other locks can be set the same way as the basic lock.

  Whenever you "pass" the basic lock, you succeed in doing something with
  the object. This triggers the @success/@osuccess/@asuccess
  messages and actions. If you fail to pass the basic lock, you trigger
  the @failure/@ofailure/@afailure messages and actions. Other locktypes
  may also have such success/failure messages.

  You can specify <object> and <key> as either the name of an object in
  the immediate area, a DBREF number, "me", or "here". 

  Many new features have recently been added to locks. See HELP NEW LOCKS
  for details.

(continued in help @lock2)  
& @lock2
  You can lock an object in several different ways. The simplest lock is to
  lock it to one other thing:
   @lock My Toy = = me
     This locks the object "My Toy" to you and you alone. It is recommended
     that you @lock me == me in order to prevent anyone else from picking
     you up. The two = signs are NOT a typo!

  You can lock an object -against- one other object as well, using the '!' 
  symbol:
    @lock Shared Toy = !Vector Sigma
      This locks the object "Shared Toy" to everyone -except- Vector Sigma.
      Everyone except Vector will be able to pick up the object.

(continued in help @lock3)
& @lock3
  You can lock an object to something that has to be carried:
    @lock Door = +Secret Door Key
      This locks the exit "Door" to someone carrying the object "Secret Door
      Key". Anyone carrying that object will be able to go through the exit.

  You can lock an object to -either- an object or to someone carrying the
  object with:
    @lock Disneyworld Entrance = Child
      This locks the exit "Disneyworld Entrance" to either the object 
      "Child" -or- to someone carrying the object "Child". (OK, so it's
      a weird example.)
  
  You can lock an object to a specific player by using a *:
    @lock Note == *Jazz
      Only the player "Jazz" will be able to pick up the Note object.
  
(continued in help @lock4)
& @lock4
  An "owner" lock allows you to lock something to anything owned by the
  same player:
    @lock Box = $My Toy
      This locks "Box" to anything owned by the owner of "My Toy" (since
      players own themselves, that includes the owner as well).

  An "indirect" lock allows you to lock something to the same thing as
  another object (very useful in setting channel locks; see help @clock):
    @lock Second Puppet = @First Puppet
      This locks the object "Second Puppet" to whatever the object 
      "First Puppet" is locked to. Normally, the lock type that is checked
      is the same as the lock on the first. You can specify a different
      lock type with @object/LOCKNAME. For example:
      @lock Second Puppet = @First Puppet/Use
      Second Puppet's basic lock now checks First Puppet's use lock.

  There are also some more complex locks called attribute and evaluation
  locks. In addition, you can make complex locks (combining several types
  or reversing them).

(continued in help @lock5)
& @lock5
ATTRIBUTE LOCKS
  You can lock an object to an attribute on the person trying to pass 
  the lock (as long as the object can "see" that attribute):

    @lock <object>=<attribute>:<value>

  <value> can contain wildcards (*), greater than (>) or less than (<)
  symbols.

  For example:
    @lock Men's Room = sex:m*
      This would lock the exit "Men's Room" to anyone with a SEX attribute
      starting with the letter "m". 
    @lock A-F = icname:<g
      This would lock the exit "A-F" to anyone with a ICNAME attribute
      starting with a letter "less than" the letter "g". This assumes
      that ICNAME is visual or the object with the lock can see it.

(continued in help @lock6)
& @lock6
COMPLEX LOCKS
  You can combine or reverse locks very easily using the following 
  BOOLEAN symbols and parentheses () to group them:
    &      - "and"
    |      - "or"

  For example:
   @lock My Toy = =me | !*Chromia | +Toy Box Key
      This locks "My Toy" to me, -against- the player Chromia, or to anyone 
      carrying the object "Toy Box Key". 
   @lock My Toy = *Marissa & +Toy Box Key
      This locks "My Toy" to the player Marissa, who needs to be carrying
      the object "Toy Box Key".
   @lock My Toy= *Chromia | ( *Marissa & +Toy Box Key )
      This locks it to Chromia, OR to Marissa if she is carrying the Key.

(continued in help @lock7)
& @lock7
EVALUATION LOCKS
  An evaluation lock is set using this format:

    @lock <object>=<attribute>/<value>

  The difference between this and an attribute lock is that the <attribute>
  is taken from <object> rather than from the person trying to pass the
  lock. When someone tries, <attribute> is evaluated, and the result is 
  compared to <value>. If it matches, then the person passes the lock.

  The person trying to pass the lock is %# and <object> is %! when the
  evaluation takes place. The evaluation is done with the powers of
  <object>. If you try to do something (like [get(%#/<attribute>)]) and
  <object> doesn't have permission to do that, the person will automatically
  fail to pass the lock.

(continued in help @lock8)
& @lock8

  Example: 
    @lock Stage = ispuppet/1
    &ispuppet Stage = hasflag(%#, PUPPET)
      This locks the object "Stage" to puppets only.

      Whenever someone tries to pick up the object, the attribute 
      "ispuppet" will be checked, substituting in the person's DBREF number
      for %#. 
 
      [hasflag(<dbref>, PUPPET)] will come out to 1 if the object with 
      <dbref> has the "PUPPET" flag. Otherwise, it will come out to be 0. 
      Since the value in the @lock is 1, only objects with the PUPPET flag
      will be able to pass this lock.

(continued in help @lock9)
& @lock9
  You can also test for set flags, powers, or object types in a lock directly,
  without using an evaluation lock, with these formats:

    @lock <object>=flag^<flag>
    @lock <object>=type^<type>
    @lock <object>=power^<power>

  These locks act like the object the lock is on does a hasflag(%#, <flag>),
  hastype(%#, <type>), or haspower(%#, <power>) succeeding if the flag is set.

  You can test for channel membership with:

    @lock <object>=channel^<channel>

  For example,
    @lock/use Admin Commands=flag^wizard|flag^royalty

  You can test for an object id, instead of a dbref, with:

    @lock <object>=objid^<object id>

See also: locktypes, @clock, objid()
& locktypes
& locklist
& lock types
& lock list
  Your MUSH will almost certainly support these standard lock types:

  @lock/basic           Who can pick up the player/object, or go through
                        the exit.
  @lock/enter           Who can enter the player/object (aka @elock)
  @lock/teleport        Who can teleport to the room
  @lock/use             Who can use the object (aka @ulock)
  @lock/page            Who can page/@pemit the player
  @lock/zone            Who can control objects on this zone
  @lock/parent          Who can @parent something to this object/room
  @lock/link            Who can @link something to this object/room
                        or who can @link this unlinked exit.
  @lock/mail            Who can @mail the player
  @lock/user:<name>     User-defined. No built-in function of this lock,
                        but users can test it with elock()

  See 'help locktypes2' for more
& lock types2
& locktypes2
  More standard lock types:

  @lock/speech          Who can speak/pose/emit in this room
  @lock/listen          Who can trigger my @ahear/^-pattern actions
  @lock/command         Who can trigger my $-pattern commands
  @lock/leave           Who can leave this object (or room, via exits/@tel)
  @lock/drop            Who can drop this object or in this room
  @lock/give            Who can give this object
  @lock/follow          Who can follow this object
  @lock/examine         Who can examine this object if it's VISUAL
  @lock/chzone          Who can @chzone to this object if it's a ZMO
  @lock/forward         Who can @forwardlist a message to this object 
  @lock/control		Who can control this object (only if set)
  @lock/dropto		Who can trigger this container's drop-to.
  @lock/destroy		Who can destroy this object if it's DESTROY_OK
  @lock/interact        Who can send sound (say/pose/emit/etc) to this object

  See also: @lock, @lset, @clock, FAILURE
& @lset
  @lset <object>/<lock type>=[!]<flag>

  This commands sets or clears flags on locks.
  Valid flags include:
  
  visual     (v)     This lock can be seen even if the object it's on
                     isn't visual.
  no_inherit (i)     This lock isn't inherited off of parents. All locks
                     are set no_inherit by default.
  no_clone   (c)     This lock isn't copied by @clone.
  wizard     (w)     This lock can only be set by wizards.
  locked     (+)     This lock can only be set by the owner of the lock.

& @log
  @log[/<switch>] <message>

  This wizard-only command puts <message> in a log file, tagged with
  the time and object executing the command.  The available switches
  are /check, /cmd, /conn, /err, /trace, and /wiz, specifying which
  file to log to.  /cmd is default.

  See also: @logwipe
& @logwipe
  @logwipe/<switch> <password>

  This God-only command erases one of the MUSH logs. Available switches
  are /check, /cmd, /conn, /trace, and /wiz. God must give the 
  log wipe password from the MUSH's configuration file to use this
  command.

  See also: @log
& @map
  @map[/delim] [<delim>] <list> = <function or pattern>
 
  This command takes a space-separated list of words, and performs
  pronoun/pattern substitution on each word, returning a list - 
  "mapping" the function onto each item in the list. It returns the
  list in a MAPLIST attribute, automatically set on the object executing
  the @map. The set is always performed before any actions further
  actions are executed. 
  
  If the /delim switch is given, the first character of the list is
  used as the delimiter, instead of space.

  Brackets are generally necessary in order to make the function
  substitutions evaluate correctly.
  
  @map is an obsolete command provided for backwards compatibility;
  the ITER() or MAP() functions should probably be used instead.
 
  See "help @map2" for examples of @map.
 
& @map2
 
  Examples of @map:
    @map foobar baz blech=[strlen(##)]
      Returns "6 3 5" in MAPLIST.
    @map testing map-test=[strlen(before(##, est)]
      Returns "1 5" in MAPLIST
    @map Joe Bob Ann=I know ##.
      Returns "I know Joe. I know Bob. I know Ann." in MAPLIST
 
  >  @va Object=$test * * *:@map %0 %1 %2=[strlen(##)];
           @dolist [v(maplist)] = say ##
  Object - Set.
  >  test aaa bb c
  Object says, "3"
  Object says, "2"
  Object says, "1"
& @motd
  @motd [/<switch>] [<message>].  
 
  The default for this command (and with the /connect) switch, is a
  wizard only command that will set a temporary message that 
  will be shown to players when they connect. This MOTD is cleared
  every time the MUSH restarts.

  Note that @motd by itself clears the message. Use @motd/list or
  @listmotd to see the current messages.
 
  Other switches:
  /wizard : sets the message for wizards (like @wizmotd)
  /down   : sets the logins-off message (like @rejectmotd)
  /full   : sets the max-players-logged-in message
  /list   : list the MOTDs (like @listmotd, can be used by anyone)
& @move
  @move <object> = <movement message>

  This sets the message that is shown to <object> whenever it moves.
  Example:
       @move me=You moved! You are now in the room: [name(loc(me))].

See also: go, @omove, @oxmove, @amove
& @name
  @name <object>=<new name>

  Changes the name of <object>, which can be a thing, player, exit,
  or room. You can refer to object by name, DBREF number, or as "me"
  or "here".

  When changing a player's name on games that support multi-word player
  names, the name should be enclosed in quotes:
    @name me = "James Bond"

  When changing a player's name to their alias, their current name and
  their alias are swapped.

  Changing the name of <object> will cause object to execute its
  ONAME and ANAME. The old name will be passed at %0 to these;
  the new name will be passed as %1.
& @newpassword
  @newpassword <player> = <password>

  This wizard-only command changes <player>'s password. If <player>
  is logged in, s/he will be informed that the password was changed.

See also: @password
& @notify
  @notify[/any][/all] <object>[/<attribute>][=<number>]
  
  This command notifies a semaphore, allowing commands queued for
  that semaphore to be executed.

  If the /any switch is given, then all semaphores associated with
  <object> are @notified.  Otherwise, only the specified semaphore
  attribute (or SEMAPHORE if no attribute is specified) is @notified.

  If the /all switch is given, then all queue entries associated
  with the selected semaphore(s) are executed.  Otherwise, only the
  first <number> of queue entries are run.  If no <number> is given,
  then only one queue entry is run.

  If the /all switch was not used, and there were not enough queue
  entries waiting to satisfy the requested <number> (or 1, if no
  number was given), then subsequent @waits will not block until
  the requested <number> have been run.
  
  You may not specify both the /any switch and a specific attribute.
  Similarly, you may not specify both the /all switch and a number.

See also: SEMAPHORES, @drain, @wait
& @nspemit
& @nsemit
& @nslemit
& @nsremit
& @nszemit
& @nsoemit
  @nsemit[/<switch>] [<message>]
  @nslemit[/<switch>] <message>
  @nspemit[/switches] <object>=<message>
  @nsremit[/switches] <object> = <message>.
  @nsoemit[/<switch>] [<room>/]<object> [<object>...] = <message>
  @nszemit <zone> = <message>

  These wizard-only commands work like @emit, @lemit, @pemit, @remit,
  @oemit, and @zemit, respectively, but will not include nospoof information.
  They are meant to be used by commands in the master room where the
  nospoof information is just useless noise. They take all switches
  of their respective commands.

See also: @emit, @lemit, @pemit, @remit, @oemit, @zemit, nsemit(), nslemit(),
          nspemit(), nsremit(), nsoemit(), nszemit()
& @odeath
  @odeath <player> [=<message>]

  This sets the ODEATH attribute on the player, which contains the
  message that will be shown to others when s/he is killed. The
  @odeath message will automatically have the player's name included.

Example:
     @odeath me=falls to the ground and vanishes.
     (if I am killed, others in the room then see:)
     > Cyclonus falls to the ground and vanishes.

  If the =<message> part is omitted, the ODEATH attribute will be reset.

See also: @death, @adeath, kill
& @odescribe
  @odescribe <object> [=<message>]

  This sets the message that will be shown to others whenever anyone
  looks at <object>. The name of the person looking will be added to
  the beginning of the message. Please note that @odescs are often found
  annoying. 

  If the =<message> part is omitted, the message will be reset.

See also: look, @describe, @idescribe
& @odrop
  @odrop <object> [=<message>]

  This sets the message that will be shown to others whenever anyone drops
  <object>. The name of the person dropping the object will be added to the
  beginning of the message automatically.

  If set on an exit, the @odrop is shown in the exit's destination room
  when someone goes through the exit.

  If the =<message> part is omitted, the message will be reset.

See also: drop, @drop, @adrop, NONAME, NOSPACE
& @oefail
  @oefail <object> [= <message>]

  This sets the message that will be show to others whenever anyone tries
  to enter <object> and fails, usually because they fail the enter-lock.

  If the =<message> part is omitted, the message will be reset.

See also: enter, @efail, @aefail, @lock
& @oemit
  @oemit[/<switch>] [<room>/]<object> [<object>...] = <message>
 
  This command shows <message> to everyone in the location of <object>
  EXCEPT <object>. The object can be specified by name if in your current
  location, or by DBREF number. A list of objects can be given, in
  which case the message is shown in all locations to all except those
  objects.
  
  If a room is specified (usually via dbref), this command shows
  <message> to everyone in <room> except for <object> (which may be
  a list, as above). In this case, object(s) are matched with reference to
  <room>. Therefore, if you want to send a message to everything but an
  object called "spy" in #100, you can simply use "@oemit #100/spy=Test";
  you don't need to know the dbref of "spy".

  The /noeval switch prevents the MUSH from evaluating the message.
  The /spoof switch causes nospoof notifications to show the enactor's
    dbref instead of the executor's dbref, and requires control over
    the enactor or the Can_nspemit power.
 
See also: @emit, @pemit, NOSPOOF and SPOOFING.
& @oenter
  @oenter <object> [= <message>]

  This sets the message that will be show to others whenever anyone
  enters the object. It will be seen by those already -inside- the
  object and will automatically add the name of the person entering
  at the beginning. If you wish to set a message to be seen by those
  -outside- the object, use @oxenter.

See also: enter, @enter, @oxenter
& @ofailure
  @ofailure <object> [=<message>]

  This sets the message that will be show to others whenever anyone
  fails to pass <object>'s basic lock. For players and things, this means
  failing to pick them up. For exits, this means failing to go through 
  the exit. It automatically prefixes the name of the player.

Example:
  @ofail Locked Door=tries to open the door, but it seems to be locked.

  If the =<message> part is omitted, the message will be reset.

See also: FAILURE, @lock, @failure, @afailure, NONAME, NOSPACE
& @ofollow
  @ofollow <object> [= <message>]

  Sets the message shown to others in the room after someone
  begins following the object (using the 'follow' command). 
  Similar to @omove or @osucc, this command prepends the name
  of the person doing the following.

  If the =<message> part is omitted, the message will be reset.

Ex: @ofollow me=falls into step behind Cyclonus.

See also: follow, unfollow, followers(), @follow, @afollow
& @ounfollow
  @ounfollow <object> [= <message>]

  Sets the message shown to others in the room after someone
  stops following the object (using the 'unfollow' command). 
  Similar to @omove or @osucc, this command prepends the name
  of the person doing the unfollowing.

  If the =<message> part is omitted, the message will be reset.

Ex: @ounfollow me=stops following [name(me)].

See also: follow, unfollow, followers(), @unfollow, @aunfollow
& @oleave
  @oleave <object> [= <message>]
  
  This sets the message that will be displayed to the people inside
  <object> whenever someone leaves <object>. If you want to set a 
  message to be displayed to people outside the object, use @oxleave.
  This command automatically inserts the name of the person leaving
  at the start of the message.

  If the =<message> part is omitted, the message will be reset.

See also: leave, @leave, @aleave, @oxleave
& @olfail
  @olfail <object> [= <message>]
  
  This sets the message that will be shown to others whenever someone
  tries to leave <object> and fails (usually if the person fails the
  leave-lock, or if <object> is set NO_LEAVE). It automatically inserts
  the name of the person trying to leave at the start of the message.

  If the =<message> part is omitted, the message will be reset.

See also: leave, @lfail, @alfail, @lock
& @omove
  @omove <object> [= <message>]

  Sets the message that will be shown to others whenever <object> moves.
  It is shown in the destination room or object and automatically inserts
  the name of the <object> at the beginning. Please note that long @omoves
  are frequently found annoying.

Example:
 @omove me=stalks into the room wearing the latest in malevolent expressions.
  
  If the =<message> part is omitted, the message will be reset.

See also: go, @move, @amove, @oxmove
& @oxmove
  @oxmove <object> [= <message>]

  Sets the message shown to others in the source room whenever <object> 
  moves elsewhere. <object>'s name is automatically inserted at the
  beginning of this message. Note that long @oxmoves are annoying.

 Example:
  @oxmove me=stalks away, glaring.

  If the =<message> is omitted, the message is cleared.
  
See also: go, @move, @omove, @amove
& @opayment
  @opayment <object> [=<message>]

  Sets the message that will be show to others whenever someone "pays"
  <object> (by giving the object a certain amount of MUSH money). The
  name of the person giving the money will be automatically inserted at
  the beginning of the message.
  
  If the =<message> part is omitted, the message will be reset.

Ex: @opay Vending Machine=sticks a quarter in the vending machine.

See also: give, @cost, @payment, @apayment, MONEY
& @open
  @open <exit name>
  @open <exit name>;<exit aliases>=<destination>
  @open <exit name>;<exit aliases>=<destination>,<exit name>;<exit aliases>

  This command opens an exit in the room you are standing in with the 
  specified name. You can then use the @link command to set the exit's
  destination, or you can set it automatically by using the DBREF of a
  destination, which can be a room or object. (Note that you CANNOT open
  exits from objects.) If you also include the second exit name, an exit
  from the destination room will be opened back to the room you are in.

  NOTE: you can have as many exit aliases as you like by adding more,
  separated by semicolons. An exit alias allows you to type that instead of 
  the full exit name to go through the exit. Only the exit name appears in
  the list of Obvious Exits in a room.

Ex: @open Up;u;climb = #255, Down;dow;do;d;fall

See also: EXITS, @link, @dig
& @osuccess
  @osuccess <object> [=<message>]

  Sets the message that is shown to others whenever someone passes the 
  object's Basic lock. For players and things, this means picking them up.
  For exits, this means going through the exit, and the osuccess message
  is shown to those in the room the player has just left. This message 
  automatically inserts the name of the person at the beginning.

  @osucc's are very useful for allowing people to follow someone around
  if the name of the exit is included in the message. It is recommended 
  that you put @osuccs on all exits and all takeable objects.

Ex: @osucc North=heads north into the catacombs.
  
  If the =<message> part is omitted, the message will be reset.

See also: take, @success, @asuccess, @lock, FAILURE, NONAME, NOSPACE
& @otport
  @otport <object> [=<message>]

  Sets the <message>, which will be prefixed by <object>'s name,
  that will be shown to the others in the room that the <object>
  is teleported to. If you want to set a message that will be shown
  to the room that the object is teleported OUT of, use @oxtport.

  If the =<message> part is omitted, the message will be reset.

See also: @teleport, @oxtport
& @ouse
  @ouse <object> [=<message>]

  Sets the message that will be shown to others whenever someone successfully
  uses <object>. The name of the person using the object will automatically
  be inserted at the beginning.

  If the =<message> part is omitted, the message will be reset.

See also: use, @use, @ause, @charges, @runout
& @oxenter
  @oxenter <object> [= <message>]

  Sets the message that will be shown to others outside the object whenever
  someone enters the object. The name of the person entering will be
  inserted at the beginning of the message automatically. If you want
  to show a message to everyone inside the object, use @oenter.

  If the =<message> part is omitted, the message will be reset.

See also: enter, @oenter, leave
& @oxleave
  @oxleave <object> [= <message>]

  This message is shown to everyone in the room that a person enters
  when doing a 'leave' command.  This will be shown in addition to the
  enter messages of the room, not instead of.

  If the =<message> part is omitted, the message will be reset.

See also: leave, @leave, @oleave, @aleave
& @oxtport
  @oxtport <object> [=<message>]
  
  Sets the <message>, which will be prefixed by <object>'s name,
  that will be shown to those in the room that the object has
  left via @teleport. If you want to show a message to the room the
  object has arrived in, use @otport.

  If the =<message> part is omitted, the message will be reset.

See also: @teleport, @otport, @atport
& @parent
  @parent <object> = <parent>
 
  This command sets the parent of <object> to <parent>. <parent> may be
  an object of any type; <object> can be anything but a player. The
  player must control <object>. <parent> must be controlled by the
  player or LINK_OK.
  If <parent> is "none" or blank, the object is unparented.

See also: PARENTS, parent(), lparent()
& @password
  @password <old password>=<new password>

  This changes your password. Please note that passwords ARE case-sensitive.
  
& @payment
  @payment <object> [=<message>]

  Sets the message that is shown to anyone who pays the object, by giving
  it a certain amount of MUSH money. If =<message> is omitted, the message
  is reset to nothing. May be abbreviated @pay. 

See also: give, @apay, @opay, and @cost.
& @receive
& @oreceive
& @areceive
  @receive <recipient> [=<message>]
  @oreceive <recipient> [=<message>]
  @areceive <recipient> [=<message>]

  @receive sets the message that is shown to the recipient who 
  acquires an object by 'get'ing it or having it 'give'n to them.
  @oreceive is a message shown to others in the recipient's location,
  and @areceive is an action run by the recipient. If not set,
  the recipient gets a default message ("Jane gave you A Headache").
  
  %0 will be set to the dbref of the object received.
  %1 will be set to the dbref of the giver if a 'give' was performed.

See also: give
& @give
& @ogive
& @agive
  @give <giver> [=<message>]
  @ogive <giver> [=<message>]
  @agive <giver> [=<message>]

  @give sets the message that is shown to the giver when giving an object
  to someone else.  @ogive is a message shown to others in the giver's
  location, and @agive is an action run by the giver. If not set,
  the giver gets a default message.

  %0 will be set to the dbref of the object given.
  %1 will be set to the dbref of the recipient.

See also: give
& @pcreate
  @pcreate <name> = <password>

  This wizard-only command creates a player with the given name and
  password.
& @pemit
  @pemit[/<switch>] <object> = <message>
  
  The basic form of this command sends <message> to <object> directly.
  It is very similar in its effects to @emit except only one object
  will see the message. You may @pemit to objects in the same room,
  objects you are carrying, and to objects that are carrying you, 
  or @pemit remotely, using #<object> or *<player name>.
 
  The /list switch to this command allows you to @pemit a message to
  a list:  @pemit/list <object 1> [<object 2> <object N>] = <message>
  There can be any number of objects in the list. The objects must be
  specified by dbref number. You will not get back a "confirmation"
  message for the /list form of this command. 

(continued in help @pemit2)
& @pemit2
  The @pemit command can take the following additional switches:
    /contents  -- equivalent to @remit.
    /silent    -- does not tell the @pemit'ing object a confirmation message.
    /noisy     -- tells the @pemit'ing object a confirmation message.
    /noeval    -- the message will not be evaluated for substitutions 
    /spoof     -- the enactor's dbref will be used for nospoof notifications
                  instead of the executor's dbref. Requires control
                  over enactor or Can_nspemit power. 

  Note that page-lock and the HAVEN flag will block @pemits as well, 
  except from Wizards or those with the pemit_all power.

See also @emit, @oemit, @remit, NOSPOOF, and SPOOFING.
& @poll
  @poll <poll question>
  This wizard-only command sets the "poll" - the Doing question. If
  "@poll" is used by itself, the question is reset to the default
  string "Doing". It can also be used by those with the poll @power.

See also: @doing, WHO, DOING
& @poor
  @poor <value>.
  This is a wizard only command.  It sets every player's money supply to
  value.

See also: MONEY
& @power
  @power/list [<power name pattern>]
  @power <power>
  @power <object>=[!]<power>
  
  This is a wizard-only command which manipuates powers, special privileges
  that can be granted to objects. See also "help powers".

  @power/list lists the defined powers.  A list of standard powers with
  explanations is given in "help powers list".

  When given a power name as an argument, @power displays information
  about a power.

  @power <object>=[!]<power> sets (or clears) the given power on an 
  object.

  God can add, delete, and otherwise manipulate power definitions.
  See help @power2 for these commands.
& @power2
  @power/add <power name>=[<letter>], [<type(s)>], [<setperms>], [<unsetperms>]
  @power/delete <power name>
  @power/alias <power name>=<alias>
  @power/letter <power name>[=<letter>]
  @power/restrict <power name>=[<setperms>], [<unsetperms>]
  @power/type <power name>=<type(s)>
  @power/enable <power name>
  @power/disable <powername>
  
  These commands manipulate power definitions. Only God may use them.
    /disable disables a power, making it invisible and unusable
    /enable re-enables a disabled power
    /alias adds a new alias for an existing power
    /letter changes or removes a single-letter alias for an existing power.
    /restrict changes power permissions (see help @power3) 
    /type changes power type(s) (see help @power3) 
    /delete deletes a power completely, removing it from all objects
      in the database and the removing it permanently from the 
      power table. It requires the exact power name or alias to be used.
      Be very very careful with this. 
  
  See help @power3 for information on @power/add
& @power3
  @power/add is used to add a new power with the given name. Arguments
  other than the power name are optional:
  
  <letter> gives the power's one-letter abbreviation, which must
    not conflict with the one-letter abbreviation of another power that
    could be applied to the same object type(s). It defaults to none, which
    means it won't appear in a list of power characters but can still be 
    tested for with haspower(), andlpowers(), and orlpowers(). 
  <type> specifies the space-separated list of types to which the power
    applies, and may be 'any' or one or more of 'room', 'thing', 'player',
    or 'exit'. It defaults to 'any'. 
  <setperms> specifies the space-separated list of permissions for who can
    set and/or see the power. See 'help flag permissions' for details.
    It defaults to 'any'
  <unsetperms> specifies the space-separated list of permissions for who
    can clear the power on an object they control. It defaults to
    whatever <setperms> is given, or 'any'.

  Powers added with @power/add are saved with the database when it
  is dumped, and do not need to be re-added at startup. They are
  treated exactly as any other power in the server.
& @prefix
  @prefix <object> = <message>
 
  This attribute is meant to be used in conjunction with the AUDIBLE
  flag. The @prefix of the object is prepended to messages propagated
  via AUDIBLE.   Pronoun substitution is done on @prefix messages.
  
  For example, if you have an audible exit "Outside" leading from a room 
  Garden to a room Street, with @prefix  "From the garden nearby,"  if
  Joe does a ":waves to everyone." from the Garden, the people at Street
  will see the message,   "From the garden nearby, Joe waves to everyone."

See also: @inprefix, AUDIBLE, @listen
& @ps
  @ps[/<switch>] [*<player>]
  
  @ps is a useful command for MUSHers.  It lists all commands currently on
  your 'to be executed' queue, thus allowing you to identify infinite (or
  unnecessary) loops with-out putting in says or poses. It gives a count of
  the total commands in each of the queues (Player, Object, Wait, and
  Semaphore), displayed in the format:
      <Number of your queued commands> / <Total number of queued commands>.
      
  @ps with no arguments will show you your own queue. Wizards may specify
  the /all switch, and see the full queue. They may also specify a player.
  @ps/summary just displays the queue totals for the whole queue.
  @ps/quick displays the queue totals for just your queue.
& @purge
  @purge is a wizard only command that calls the internal purge routine to 
  advance the clock of each object scheduled to be destroyed, and destroy 
  those things whose time is up. The internal purge routine is normally
  run automatically approximately every 10 minutes. 

  The @purge command should almost never need to be performed
  manually. If you do use it manually, you may want to use it twice in
  a row to make sure that everything marked GOING is actually
  destroyed.

See also: @dbck
& @quota
  @quota [/<switch>] [<victim>]

  This command is only available if the quota system is enabled.
  It reports the victim's owned objects and the maximum number of objects 
  s/he may own. You must be a Wizard to see another player's quota.

  The /set and /all switches are equivalent to @squota and @allquota,
  respectively.
& @readcache
  @readcache
  
  This wizard-only command reads special text files into a cache and
  rebuilds the help and news indices. This must be done every time the
  text files (connect text, help files, etc.) are changed while the
  game is running. It does not need to be used after changing the
  names.cnf file of bad player names.
 
  A site admin can achieve the same effect by sending the MUSH process
  a kill -1 or kill -HUP.
 
& @rejectmotd
  @rejectmotd <message>

  This is a wizard only command that will set a short (non-longterm) message 
  that will be shown to players that try to connect when logins are disabled. 
  This is the "Down MOTD" in the @listmotd listing. The siteadmin can set a
  more permanent message for this by editing the file "down.txt".
  
See also: @motd, @list, @listmotd
& @remit
  @remit[/switches] <object> = <message>.

  Sends the message to all contents of <object>, which can be a room,
  thing, or player. The message is also sent to the <object> itself.
  (The TinyMUSH equivalent is @pemit/contents).

  The /silent switch stops the remitter from getting feedback if they're
   in a different location than the target.
  The /noisy switch always gives feedback to the remitter if they are
   not in the target location. Without /silent or /noisy, the silent_pemit
   config option is used to determine noisiness.
  The /list switch will send the message to the contents of multiple
   objects at the same time. The <OBJECT> argument is treated as a
   space-separated list of targets.
  The /spoof switch causes nospoof notifications to show the enactor's
   dbref instead of the executor's dbref, and requires control over
   the enactor or the Can_nspemit power.

See also: @emit, @pemit, @oemit, SPOOFING, NOSPOOF and CONTROL.
& @restart
  @restart <object> or @restart/all
  
  This command halts <object> (as described in @halt), and then triggers
  the STARTUP attribute on the object, if set. If <object> is a player,
  it affects the player and all of their objects. Players can use
  @restart me to restart their own objects. The /all switch halts
  all objects (see @allhalt) and restarts them, and can only be used
  by a wizard.


See also: @halt, @startup
& @runout 
  @runout <object> = <action list> 

  Sets the actions to be taken when the charges of the object reaches
  zero. 

See also: @charges, use, ACTION LISTS
& @rwall
  @rwall[/emit] <message>

  Only wizards and royalty may use this command. It broadcasts a
  message to all connected wizards and royals. If the /emit switch
  is given, it's done as a prefixed emit. Otherwise, it acts like
  a @channel.

See also: @wall, @wizwall
& @scan
  @scan[/<switch>] <command>
  
  @scan gives you a list of all objects containing $commands (user-defined
  commands) which could match <command>. If given no switches, it checks
  you, your possessions, your location, objects in your location, the
  zone/zone master room of your location, your zone, and objects in the 
  master room. It does NOT stop when it gets a match, but rather, finds all 
  possible matches. It also tells how many commands on each object were
  matched, and what attributes they are in. It does NOT scan objects
  that you do not control and are not set VISUAL.
  
  This command can take four switches:
     /room     --   just matches on your location and objects in it.
     /self     --   just matches on you and anything you're carrying.
     /zone     --   just matches on zones of your location and yourself.
     /globals  --   just matches on objects in the master room.
& @search
  @search [<player>] [<class>=<restriction>] [,<begin>,<end>]
  
  This command searches the database and lists objects which meet user
  specified search criteria.  You can limit the scope of the search by
  specifying <begin> and <end> as the first and last dbrefs to search.
  
  If a <player> argument is supplied, only objects owned by that player
  will be listed. If a <class> argument is supplied only objects of a
  certain class will  be listed. Possible <class>es include TYPE, NAME,
  ZONE, PARENT, EXITS, OBJECTS (Or THINGS), ROOMS, PLAYERS, FLAGS, LFLAGS,
  POWERS, EVAL, EPLAYER, EROOM, EEXIT, and EOBJECT (Or ETHING).

  If <class>=TYPE, possible <restriction>s include OBJECT (Or THING), ROOM,
  EXIT, PLAYER. This shows all objects of the specified type.
  
  If <class>=NAME, only objects whose name begin with the string <restriction>
  will be listed. If <class>=ZONE, only objects in the zone <restriction>
  will be listed. If <class>=PARENT, only children of parent <restriction>
  will be listed. For ZONE and PARENT, <restriction> must be specified as a
  dbref number.
  
  'help @search2' for more.
& @search2
  If <class>=EXITS, OBJECTS, ROOMS, or PLAYERS, only objects of that type
  will be listed.

  If <class>=FLAGS or LFLAGS, only objects with the list of flags
  specified by <restriction> will be listed. For FLAGS, flags to match
  should be given as a string of single flag letters, with appropriate
  case. For LFLAGS, flags to match should be given as a space-separated
  list of flag names.

  If <class>=POWERS, only objects with the given power are listed. Only
  one power may be specified.
  
  If <class>=EVAL, only objects for which <restriction> evaluates to a
  true boolean value will be listed. The token '##' in <restriction>, which
  is a function, is replaced by each dbref sequentially. Classes EPLAYER,
  EROOM, EEXIT, and EOBJECT work like EVAL but are restricted to a single type.
  
  See "help @search3" for more.
& @search3
  For the class TYPE=PLAYER, and for  PLAYER=<player-name>, anyone may
  obtain information on any player.  In all other cases, only wizards may
  obtain information about other players. This is computationally
  expensive, costing 100 pennies. It is generally faster than @find.
  
  Examples:  
    @search flags=Wc      <-- search for connected wizards.
    @search type=room     <-- list all rooms owned by me.
    @search zone=#50      <-- list all objects belong to zone #50.
    @search Joe eval=1,100,200   <-- list objects from #100-#200 owned by Joe.
    @search eval=gt(money(##),10)     <-- list all objects owned by me  
                                          worth more than 10 coins.
  
  If <class>=POWERS, only objects with the given power are listed. Only
  one power may be specified.
  
  If <class>=EVAL, only objects for which <restriction> evaluates to a
  true boolean value will be listed. The token '##' in <restriction>, which
  is a function, is replaced by each dbref sequentially. Classes EPLAYER,
  EROOM, EEXIT, and EOBJECT work like EVAL but are restricted to a single type.
& @select
  @select <string>=<expr1>,<action1>[,<exprN>,<actionN>]...[,<default>]
  This is similar to @switch, except it only executes the action
  associated with the first expression which matches <string> - the
  targets are mutually exclusive. If no target is matched, the default
  actions are executed. This is equivalent to "@switch/first".

  Example:
    &FOO thing = $foo *:@select %0=*a*,:acks,*b*,:bars,*c*,:cheeps,:glurps
    foo abc
    > thing acks
    foo xxx
    > thing glurps

  The string "#$" in <action>'s will be expanded to the evaluated result
  of <string> before it is acted on.

  If the /notify switch is given, a "@notify me" is queued after 
  the selected <action>. This is useful for synchronization with semaphores.

  If the /regexp switch is given, the expressions are case-insensitive regular
  expressions.

See also: @switch, switch()
& @set
  @set <object>=[!]<flag> [[!]<flag> ...]
  @<pre-defined attribute> <object>=<value>
  @set <object>=<attribute>:<value>
  @set <object>/<attribute>=[!]<atrflag>
  
  The first form sets (or unsets) flag(s) on <object>. See 'help flags'.
    Ex: @set me=VISUAL
  Flags may be specified by full name (recommended) or by flag character.
  Flags are set or reset in the order supplied.

  The second form sets a pre-defined attribute on <object>
    Ex: @fail Heavy Box=You can't pick that up.

  The third form sets an arbitrary attribute with <value> on <object>.
  You can also do this with &<attribute> <object>=<value>
    Ex: @set Test Object=random:This is a random attribute.
        &random Test Object=This is a random attribute.
  An important difference between these two forms is that @set will
  evaluate the <value> before setting it on <object>, while the
  &<attribute> form will not (and is usually what you want).
  
  The fourth form sets (or unsets) an attribute flag on the specified
  attribute. See 'help attribute flags'.
& attribute flags
  Attribute flags are set on an object's attributes using @set, or applied
  to attributes globally using @attrib. Their names (and, when applicable,
  the character used in examine as shorthand for the flag) include:
 
  no_command ($)    Attribute will not be checked for '$' commands and
                    '^' listen patterns. 
  visual (v)        Attribute can be seen by anyone via get(), eval(),
                    ufun(), zfun(), and similar functions. 
  no_inherit (i)    Attribute will not be inherited by the children of
                    this object. 
  no_clone (c)      Attribute will not be copied if the object is @clone'd.
  regexp (R)        Match $-commands and ^-listens using regular expressions.
                    See 'help regexps'.
  case (C)          Match $-commands and ^-listens case sensitively.
  safe (S)          Attribute may not be modified, without unsetting this flag.
  mortal_dark (m)   Attribute cannot be seen by mortals. This flag can only 
                    be set by royalty and wizards.  "hidden" is a synonym.

  Continued in 'help attribute flags2'
& attribute flags2
  noname (N)        Attribute won't show name in @o-* messages.
  nospace (s)       Attribute won't append a space in @o-* messages.
  wizard (w)        Attribute can only be set by wizards. 
                    This flag can only be set by royalty and wizards.
  veiled (V)        Attribute value will not be shown on default examine,
                    but is still otherwise accessible (for spammy attribs).
  debug (b)         Show debug output when this attribute is evaluated.
  nearby (n)        Even if this attribute is visual, it can only be
                    retrieved if you're co-located with the object.
  public (p)        This attribute can be evaluated by any object, even
                    if safer_ufun is in use. DANGEROUS! AVOID!
  prefixmatch       When a user attempts to set an attribute using @<attrib>,
                    this attribute will be matched down to its unique
                    prefixes. This flag is primarily used internally.
  `                 This attribute is a branch. See: help ATTRIBUTE TREES
& @sex
  @sex <player> = <gender>  

  You can use this command to set yourself or any of your objects to be
  male, female, neuter, or plural. The SEX attribute is used for pronoun 
  substitution by the MUSH, and anything not recognizable will be treated
  as neuter. 

  @sex me = Male
  @sex me = Female
  @sex me = Woman
  @sex me = They
  @sex me = Plural
  @sex me = No thank you (silly, but possible)

See also: GENDER, SUBSTITUTION
& @shutdown
  @shutdown[/panic][/reboot][/paranoid]

  @shutdown shuts down the game. It may only be used by Wizards and
  must be typed in full.

  @shutdown/panic performs a panic shutdown of the game, using a seperate
  database file, not the normal one. It may only be used by God.

  @shutdown/reboot restarts the game without disconnecting the users.

  If the /paranoid switch is added, the shutdown dump will be a paranoid
  dump (see @dump).
& @sitelock
  @sitelock
  @sitelock/name <name>
  @sitelock <host-pattern> = <options>[,<name>]
  @sitelock[/<ban|register>] <host-pattern>
  @sitelock/check <host>
  @sitelock/remove <string>

  The @sitelock command adds rules to the access.cnf file, controlling
  a host's level of access to the MUSH, or adds banned player names to
  the names.cnf file. Only Wizards may use @sitelock.

  @sitelock without arguments lists all sites in access.cnf.
  Rules are processed in the order listed, and the first matching
  rule is applied. @sitelock/check tells you which rule will match
  for a given <host>.

  @sitelock/name adds a name to the list of banned player names.
  Use !<name> to remove a name from the list.

  @sitelock <host-pattern> = <options>[,<name>] controls the access options
  for hosts which match <host-pattern>, which may include wildcard
  characters "*" and "?". See help @sitelock2 for the list of options,
  and help @sitelock3 for an explanation about the name argument.

  For backward compatibility, @sitelock/ban is shorthand for
  setting options "!connect !create !guest", and @sitelock/register
  is shorthand for options "!create".

& @sitelock2

  Sitelock allow/deny options:
   connect   --  allow this site to connect to non-guest players
   !connect  --  don't allow this site to connect to non-guest players
   guest     --  allow this site to connect to guest players
   !guest    --  don't allow this site to connect to guest players
   create    --  allow this site to create players
   !create   --  don't allow this site to create players
   default   --  allow any of the above
   none      --  don't allow any of the above
   !god      --  God can't connect from this site.
   !wizard   --  Wizards can't connect from this site.
   !admin    --  Wizards and Royalty can't connect from this site.

  Allow/deny options not set are assumed to be allowed.

  Sitelock special options:
   register    -- allow this site to use 'register <name> <email>'
                  at the connection screen to register players.
                  Players will be emailed their character's password.
                  This should be used with !create to be effective.
   suspect     -- set all players who connect from this site SUSPECT.
   deny_silent -- don't log failed access attempts from this site.
   regexp      -- Treat the hostname pattern as a regular expression
                  instead of a wildcard pattern.
& @sitelock3
 If you specify a character name after the options, the options
 are only checked if the host pattern matches, AND the character
 being checked for connect support matches the one you gave.
 Use it only with connect and !connect options, since they're
 the only ones where an existing character is used.

 For example, to disallow anyone from connecting to 'Twink' from
 one domain, but to allow connections to the character from others,
 use something like:

 @sitelock *.somesite.com=!connect,Twink

 If you want to disallow connections to a character from anywhere,
 use @newpassword or @sitelock *=!connect,Twink.

  @sitelock/remove will delete entries that were added with @sitelock
  if their host-pattern matches <string> exactly.
 
& @sql
  @sql <query>

  This command issues and SQL query if the MUSH supports SQL and
  can connect to an SQL server. You must be WIZARD or have the
  Sql_Ok power to use @sql.

  Generally, the sql() function is more useful for coding, as it
  delimits its return values, but @sql is handy for INSERT-type
  queries and quick checks. If you pass arbitrary data to @sql,
  be sure you call sqlescape() on it (see the example in help sql()).

  Example: @sql SHOW TABLES

  See also: sql(), sqlescape()
& @squota
  @squota <victim> [= [+|-] <amount>]

  This is a wizard level command that is only available if the quota
  system is enabled.  It reports the victim's owned objects, and sets
  the maximum number of objects s/he may own to <amount>. If no limit is
  specified, this shows current quota, and reminds you to set one.
  Using + or - you can add <amount> to the limit, or subtract it.
& @startup
  @startup <object> = <action list>

  Sets the list of actions on <object> that will happen whenever the MUSH
  is restarted. This lets you start up objects that need to be running 
  continuously. It is also useful for use with @function. 
  
See also: @function, ACTION LISTS
& @stats
  @stats [<player>]
  @stats/table
  @stats/chunks
  @stats/regions
  @stats/paging

  In its first form, display the number of objects in the game broken
  down by object types.  Wizards can supply a player name to count only
  objects owned by that player.

  In its second form, display statistics on internal tables.

  In the remaining forms, display statistics or histograms about the
  chunk (attribute) memory system.
& @success
  @success <object> [=<message>]. 

  Sets the message that is shown to someone who successfully passes
  the basic lock of <object>. For things and players, this means picking
  them up. For exits, this means going through the exit.

  Ex.: @succ Box=You pick up the box.
       @succ Door=You walk through the door.

See also: @osuccess, @asuccess
& @sweep
  @sweep [connected | here | inventory | exits ]
 
  @sweep gives you a list of all objects/players that are listening in
  the room you are currently in, as well as the objects you are
  carrying. Most objects only listen for a particular string or
  phrase, so they normally do not pose a problem if you need privacy.
  You will have to be careful of players and puppets since they will
  hear everything you say and do. (And might post the same to r.g.m!)
  AUDIBLE exits are also shown on an ordinary sweep, if the room is
  also AUDIBLE. (Audible exits aren't active unless the room is audible).
 
  The four command options can also be used as switches (i.e., you
  can use "@sweep/connected" instead of "@sweep connected"). 
  If the connected flag is given, only connected players and puppets
  owned by connected players will be shown in the @sweep.
  The "here" and "inventory" flags check only your location or
  inventory, respectively. "exits" only checks for AUDIBLE exits.
& @switch
  @switch [/<switch>] <string> = <expr1>, <action1> [,<exprN>, 
                                 <actionN>]... [,<default>]
  For those of you familiar with programming, this command acts like
  if/then/else or switch/case. It compares <string> against whatever
  each <expr> evaluates to. If <string> and <expr> match, the action list
  associated with that <expr> is carried out. If no match is found, the
  <default> action list is carried out. 

  The string "#$" in <action>'s will be expanded to the evaluated result
  of <string> before it is acted on.
  
  @switch/all   will carry out the action lists for -all- of the 
                expressions that match <string>. This is the default.
  @switch/first will carry out the action list for only the -first-
                expression that matches <string>. This is the same as
                @select, and it is less computationally expensive than 
                /all in many cases.
  @switch/notify will cause a "@notify me" to be queued after 
                the selected <action>. 
  @switch/regexp will cause the expressions to be matched as case-insensitive
                 regular expressions.

(continued in help @switch2)
& @switch2
Examples: 
    &SWITCH_EX thing = $foo *:@switch %0=*a*,:acks,*b*,:bars,:glurps
    foo abc
    > thing acks
    > thing bars
    foo xxx
    > thing glurps

    &SWITCH_EX thing = $foo *:@switch/first %0=*a*,:acks,*b*,:bars,:glurps
    foo abc
    > thing acks

    &SWITCH_EX thing = $test:@switch hasflag(%#,PUPPET)=1,"Puppet!,"Not Puppet!
    test
    > thing says, "Not Puppet!"
See also: switch wildcards, @select, switch()
& @teleport
  @teleport[/silent][/inside] [<object>=] <room>. 

  Teleports <object> to <room>.  <object> must be a thing; if you do not
  supply a thing, the object is assumed to be yourself. The destination
  must be either JUMP_OK or controlled by you, and you must either
  control <object> or <object>'s current location. Also, the destination,
  if a room, cannot be teleport-locked against <object>. Mortals cannot
  teleport HEAVY objects. If the target room has a drop-to, <object>
  will go to the drop-to room instead. 

  Privileged players who teleport a player to another player send them
  to the location of the target, unless the /inside switch is used,
  in which case they are sent to the inventory of the target.

  Teleportation from a room can be stopped by setting the NO_TEL flag.
  Royalty and Wizards can _always_ teleport to any location, regardless
  of NO_TEL or teleport locks.

  Teleportation triggers the @oxtport/@tport/@otport/@atport attributes,
  unless <room> is an exit or the /silent switch is given.

  As a special case, using "home" as the <room> teleports the object
  to its home.

  See also: JUMP_OK, NO_TEL, @oxtport, @tport, @otport, @atport, @lock
& @tport
  @tport <object> [=<message>]

  Sets the <message> shown to <object> when <object> is teleported.
& @trigger
  @trigger <object>/<attribute> [=<value 0>,<val. 1>,...,<val 9>]

  @trigger can be used to set off commands stored in an attribute on 
  an object. It can also pass values to that attribute on the stack 
  as %0 - %9.

  Example:
    &GREET me=POSE waves hi.
    @tr me/GREET
    > Cyclonus waves hi.

    &GREET me=POSE waves to %0! ; say Hi there, %1.
    @trig me/GREET = Gears, Arcee
    > Cyclonus waves to Gears.
    > You say, "Hi there, Arcee."

(continued in help @trigger2)
& @trigger2
  @trigger is very useful for splitting up large commands and for making
  them neater, but it does cause a time delay in execution, because the 
  commands are put into the queue a second later. For very commonly-used
  globals that you want to execute quickly, you should probably avoid using 
  @trigger. However, in most cases, the time saved by cramming everything 
  into one attribute is outweighed by the time spent debugging.

& @ulock
  @ulock <object> = <key>

  This is an abbreviation of @lock/use.

  This lock determines who is allowed to "use" the object or to set off
  any of the $-commands on the object. 

  Example: if I want everyone but Bob to be able to use my toy, I would
  "@ulock toy=!*Bob". If I want only Bob to be able to use it, I would
  "@ulock toy=*Bob".

See also: @lock, locktypes
& @uptime
  @uptime[/mortal]
  
  This command, for mortals, gives the time until the next database dump.
  For wizards, it also gives the system uptime (just as if 'uptime' had
  been typed at the shell prompt) and process statistics, some of which
  are explained in the next help entry.
  Wizards can use the /mortal switch to avoid seeing the extra process
  statistics.

  Continued in HELP @UPTIME2
& @UPTIME2
  While the exact statistics displayed depends on the operating system
  of the game's server, typical things might include the process ID,
  the machine page size, the maximum resident set size utilized (in K),
  "integral" memory (in K x seconds-of-execution), the number of page 
  faults ("hard" ones require I/O activity, "soft" ones do not), the
  number of times the process was "swapped" out of main memory, the
  number of times the process had to perform disk I/O, the number of
  network packets sent and received, the number of context switches,
  and the number of signals delivered to the process.

  Under Linux, memory usage is split into a number of different categories
  including shared libraries, resident set size, stack size, and some 
  other figures. Also under linux, more information on signals is printed.
& @unlink
  @unlink <exit>
  @unlink <room>

  The first form of this command unlinks an exit from its destination
  room. Unlinked exits may be picked up and dropped elsewhere or relinked
  by anyone else. (Note that relinking an unlinked exit will @chown it to
  you if you do not already own it.)

  The second form removes the DROP-TO on the room.

See also: @link, DROP-TO
& @unlock
  @unlock[/<switch>] <object>

  Removes the lock on <object>. It can take as many switches as @lock can. 

See also: @lock, locktypes
& @use
  @use <object> [=<message>]

  Sets the message that is displayed to someone who successfully uses 
  <object>. If =<message> is omitted, the message is reset to nothing.

See also: use, @ouse, @ause, @charges, @runout
& @uunlock
  @uunlock <object>

  Un-use-locks the object. See also: @lock, @ulock
& @version
  @version
  Tells the player the name of the MUSH, which version of the code is 
  currently running on the system, when it was compiled, and when
  the last restart was.
& @verb
  @verb <victim>=<actor>,<what>,<whatd>,<owhat>,<owhatd>,<awhat>,<args>
  
  This command provides a way to do user-defined verbs with associated
  @attr/@oattr/@aattr groups. Invoking it does the following:
  
  <actor> sees the contents of <victim>'s <what> attribute, or
    <whatd> if <victim> doesn't have a <what>.
  Everyone in the same room as <actor> sees the contents of
    <victim>'s <owhat> attribute, with <actor>'s name prepended,
    or <owhatd>, also with <actor>'s name prepended, if <victim>
    doesn't have an <owhat>.
  <victim> executes the contents of his <awhat> attribute.
  
  By supplying up to ten <args>, you may pass those values on
  the stack (i.e. %0, %1, %2, etc. up through %9).
  
  See "help @verb2" for more.
  
& @verb2  
  In order to use this command, at least one of the following criterion
  must apply:
    1. The object which did the @verb is a wizard.
    2. The object which did the @verb controls both <actor> and <victim>
    3. The thing which triggered the @verb (such as through a $command on
       the object which did the @verb) must be <actor>, AND the object
       which did the @verb must be either privileged or control <victim>
       or <victim> must be VISUAL.
  
  See "help @verb3" for examples.
  
& @verb3
  Example:
  
  &VERB_EXAMPLE Test Object=$test:@verb me=%#,TEST,You just tested.,OTEST,
       just tested the example.,ATEST,%N
  test
  > You just tested.
  > [others see] Cyclonus just tested the example.

  &TEST Test Object=You have just tested this object!
  &ATEST Test Object=@emit %0 has failed!
  &OTEST Test Object=tests test object.
  test
  > You have just tested this object!
  > [others see] Cyclonus tests test object.
  > Cyclonus has failed!

  Another example follows in "help @verb4"
& @verb4
  In order to make this into a global command that anyone can use, we
  need to put it on a WIZARD object in the Master Room. 

  &DO_TEST Global=$test *:@select locate(%#,%0)=#-1,
                  {@pemit %#=I don't see that here.},
                  {@verb locate(%#,%0,n)=%#,
                   TEST,You test [capstr(%0)].,
                   OTEST,tests [capstr(%0)].,
                   ATEST}
 
  &TEST Example=You test this fun example.
  &ATEST Example=POSE has been tested!
  test example
  > You test this fun example.
  > [others see] You test Example.
  > Example has been tested!

See also: USER-DEFINED COMMANDS, STACK, @trigger, @select
& @wait
  @wait[/until] <time> = <command_list>
  @wait <object> = <command_list>
  @wait[/until] <object>/<time> = <command_list>
  
  The basic form of this command puts the command list (a semicolon-separated 
  list of commands) into the wait queue to execute in <time> seconds. If the
  /until switch is given, the time is taken to be an absolute value in seconds,
  not an offset.
  
  The second form sets up a semaphore wait on <object>. The enactor will
  execute <command_list> when <object> is @notified.
  
  The third form combines the first two: the enactor will execute
  <command_list> when <object> is @notified or when <time> passes,
  whichever happens first.
 
  More forms that support semaphores on arbitrary attributes are described in
  help @wait2
  See also the help for: SEMAPHORES, @drain, @notify
& @wait2
  Normally, a semaphore wait depends on the SEMAPHORE attribute of the object
  in question. However, it is useful to be able to use other attributes as
  semaphores, so one object can be used as the blocker for multiple different
  things at once. Possible attribute names aren't completely arbitrary. See
  HELP SEMAPHORES5 for details.

  The syntax for these are:
 
  @wait <object>/<attribute> = <command list>
  @wait[/until] <object>/<attribute>/<time> = <command list>

  You cannot do a non-timed semaphore on an attribute with a numeric name,
  as that is taken as a timeout instead.
& @wall
  @wall[/<switch>] <message>

  Only wizards can use this command, which allows the player to shout
  or pose a message to every player connected. It must be typed in full.
  It can also take the following switches
  /emit    : emit a prefixed message to all.
  /noeval  : Don't evaluate the message.

  You can also use @wall :<pose> to @wallpose.

See also: @wizwall, @rwall
& @warnings
  @warnings <object|me>=<warning list>

  If the building warning system is enabled, this command will set
  the types of warnings which should be reported on an object or
  to a player. You must control the object to use this command.

  When an object is checked for warnings (via @wcheck by the owner, or
  automatically), only warnings which are set to be reported on the
  object will be reported. If no warnings are set on the object, the
  owner's warning settings will be used. When admin use @wcheck to
  check non-owned objects, their personal warnings are always used.

  For a list of warnings, see 'help warnings list'
  See also 'help @wcheck' and 'help NO_WARN'

  For examples, see 'help @warnings2'

& @warnings2

  Example 1: Normal building situations
  Most people will simply want to leave their @warnings set to "normal"
  and their objects' @warnings set to "none". They will then receive 
  normal warnings for all their objects.

  Example 2: Warning-lover
  People who find warnings very helpful (like heavy builders) may want
  to set their personal @warnings to "extra" or "all", and keep their
  objects' warnings at "none". If a specific object should be treated 
  less strictly, set that object's @warnings differently. If an object
  shouldn't be warned on at all, set the NO_WARN flag on the object.

(continued in help @warnings3)
& @warnings3
  Example 3: Warning-hater
  People who prefer not to be warned except for specific object may
  set their personal @warnings to "none" and set the @warnings on
  those objects to appropriate levels.

  Example 4: I need some peace!
  Players who @set themselves NO_WARN will receive no warnings ever
  until they unset the flag.

& @wcheck
  @wcheck <object>
  @wcheck/all 
  @wcheck/me

  This command is enabled if the building warning system is enabled.

  The first form of the command performs warning checks on a specific
  object. The player must own the object or be see_all. When the owner
  runs the command, the @warnings of the object are used to determine
  which warnings to give. If the object has no @warning's set, the
  @warnings of the owner are used. When a non-owner runs the command,
  the @warnings of the non-owner are used.

  The second form of the command runs @wcheck on every object in the
  database and informs connected owners of warnings. It is usually
  automatically run by the MUSH at intervals. Only Wizards may use
  @wcheck/all.

  The third runs it on all objects the player owns that aren't set NO_WARN.

See also: @warnings, WARNINGS, NO_WARN
& @whereis
  @whereis <player>

  If <player> is not set UNFINDABLE, this command will tell you where
  the player is. It will also inform the player that you attempted to
  locate their position, and whether you succeeded or not.

  To avoid being found this way, just do: @set me=UNFINDABLE

  Ex: @whereis  Moonchilde

See also: UNFINDABLE, loc()
& @wipe
  @wipe <object>[/<attribute pattern>]
  
  This command clears attributes from <object>, with the exception of
  attributes changeable only by wizards, and attributes not controlled by
  the object's owner (i.e. locked attributes owned by someone else).
  Only God may use @wipe to clear wiz-changeable-only attributes.
  The SAFE flag protects objects from @wipe.
 
  If no <pattern> is given, this gets rid of all the attributes, with
  exceptions as given above. If <pattern> is given, it gets rid of
  all attributes which match that pattern. Note that the restrictions
  above still apply.
& @wizwall
  @wizwall[/emit] <message>

  This wiz-only command works similarly to @rwall or @wall, sending
  a message in either say, pose, or emit format to all wizards who
  are currently logged in. 

See also: @wall, @rwall
& @wizmotd
  @wizmotd <message>

  This is a wizard only command that will set a short temporary message
  that will be shown to all wizards when they connect. It is listed in
  @listmotd as the Wiz MOTD. A more permanent message can be set by
  the siteadmin by editing the file "wiz.txt".
& @zemit
  @zemit <zone> = <message>

  Emits a message to all rooms in <zone>. You must have control in that
  zone in order to use this command. Because it is computationally
  expensive, it costs 100 pennies.
& ahelp
  ahelp [<topic>]

  Shows the current admin help for the MUSH. Only ROYALTY and WIZARDS
  can use this command.

See also: anews
& anews
  anews [<topic>]

  Shows the current admin news for the MUSH. Only ROYALTY and WIZARDS
  can use this command.

See also: ahelp
& brief
  brief <object> 

  This command works like an abbreviated version of examine. It does not
  print out all the attributes on the object. 

See also: examine
& cd
& ch
& cv
  cd <name> <password>
  ch <name> <password>
  cv <name> <password>

  Not really a MUSH command, but a command available at the connect
  screen for Wizards. If enabled, Wizards who use 'cd' instead of
  'connect' to connect will be set DARK as they connect, and will not
  show arrival messages. Their arrival will, however, be broadcast
  to other admin, but not to MONITOR-flagged mortals.

  ch is a variant of cd that allows Royalty to connect @hidden.
  cv is a variant that forces a non-dark, non-hidden connection.

See also: DARK, @hide
& DOING
  DOING

  This command displays the list of players currently connected to the
  MUSH. For mortals, it is identical to WHO. For wizards, it displays
  the WHO in the format mortals see. The wizard WHO shows location and
  host, but does not show @doing messages. DOING shows @doing messages
  but not location or host.

See also: WHO, @poll, @doing
& OUTPUTPREFIX
& OUTPUTSUFFIX
  OUTPUTPREFIX <string>
  OUTPUTSUFFIX <string>

  Sets your output prefix or suffix. These strings will be shown
  before and after the output of any command that you initiate,
  respectively. They are primarily useful for bots and the like.

& IDLE
  IDLE

  This command does nothing. It does not reset a connection's
  idle time. It is useful for people who are connecting from behind
  a NAT gateway with a short fixed timeout; if you're in this situation,
  have your client send the IDLE command every minute or so, and the 
  NAT connection won't time out (but you won't appear, to other players,
  to be active).

& SESSION
  SESSION

  This admin-only form of WHO includes information on how much text
  has been received and sent to the connections. It has three fields:

  Sent, which is the number of characters sent TO the mush from that
  connection. Recv, the number of characters sent FROM the mush to that
  connection, and Pend, the number of characters still waiting to be sent
  from the mush to the connection.

See also: WHO, DOING
& teach
  teach <command>

  Shows <command> (unparsed) to others in your room and then causes
  you to execute <command> as if you'd typed it in directly from 
  the socket (even if you're an object). Useful for helping newbies:

  > say To do a pose, use :<action>
  You say "To do a pose, use :<action>"
  > teach :waves hello.
  Javelin types --> :waves hello.
  Javelin waves hello.

  > teach "[sort(c b a)]
  Javelin types --> "[sort(c b a)]
  Javelin says, "a b c"

& drop 
  drop <object>

  Drops <object>, if you are presently carrying it. If the room the object
  is dropped in has a DROP-TO set, the object may automatically be sent
  to another location. Some MUSHes may have @lock/drop enabled, which 
  allows you to set who is permitted to drop the object.

  Note that as of 1.6.6, the TEMPLE flag and SACRIFICING have been 
  disabled.

See also: STICKY, DROP-TO
& enter
  enter <object>

  Used to enter a thing or player. You can only enter an object if 
  you own it or if it is set ENTER_OK. You must also pass the enter-lock,
  if it is set. Entering an object triggers is @enter/@oenter/@oxenter
  messages and its @aenter actions. If you fail the enter-lock, the
  object's @efail/@oefail/@aefail messages and actions are triggered.

  Insides of objects are best used for vehicles, or storage spaces
  when you don't have a home. You can describe the interior of an
  object differently from its exterior by using @idescribe.  

See: @enter, @oenter, @oxenter, @aenter, leave, @lock, @idesc, INTERIORS
& events
& rules
  events [<topic>]
  rules [<topic>]

  These commands, like news, work the same way as the help command, except
  that the information provided in them is specific to this particular
  MUSH. Not all MUSHes will have both or either of these commands enabled.

See also: news, help
& examine
  examine[/<switch>] <object>[/<attribute>] 
  
  Displays all available information about <object>.  <object> may be an 
  object, 'me' or 'here'. You must control the object to examine it.  If 
  you do not own the object, or it is not visible, you will just see the 
  name of the object's owner.  May be abbreviated 'ex <object>'.  If the 
  attribute parameter is given, you will only see that attribute (good 
  for looking at code). You can also wild-card match on attributes. 
  The * wildcard matches any number of characters except a backtick (`).
  The ? wildcard matches a single character except a backtick (`).
  The ** wildcard matches any number of characters, including backticks.
  For example. to see all the attributes that began with a 'v' you could do 
  ex <object>/v**
  
  The /brief switch is equivalent to the 'brief' command.
  The /debug switch is wizard-only and shows raw values for certa
    in fields in an object. 
  The /mortal switch shows an object as if you were a mortal other than
    the object's owner and is primarily useful to admins. This switch
    ignores the object's VISUAL flag (but not its attribute flags)
  The /parent switch show attributes that would be inherited from the
    object's parents, if you have permission to examine the attributes
    on the parent.
  The /all switch shows the values of VEILED attributes.

  See also: ATTRIBUTE TREES
& follow
  follow <object>

  If you pass the object's follow lock, you begin following it. As the
  object moves around (except if it @teleports away or goes home), you
  will automatically move around with it, so long as you pass all the
  locks and enter/leave locks on the exits and things the object moves
  through. This doesn't prevent you from going somewhere else on your
  own.

See also: unfollow, dismiss, desert, followers(), following(), 
          @follow, @ofollow, @afollow
& dismiss
  dismiss <object>
  dismiss

  The dismiss command stops <object> from following you. If no object
  is given, it stops everyone from following you.

See also: follow, unfollow, desert, followers()
& desert
  desert <object>
  desert
 
  The desert command stops <object> from following you and stops you
  from following <object>. That is, it's shorthand for 'unfollow <object>'
  and 'dismiss <object>'. If no object is given, it stops everyone from
  following or leading you.

See also: follow, unfollow, dismiss, followers(), following()
& empty
  empty <object>

  The empty command attempts to move all the contents of <object>
  to <object>'s location. You must either be holding <object>
  (in which case the command is like getting <object>'s <item>
  for each item) or be in the same location as <object> (in which
  case the command is like getting <object>'s <item> and dropping it).

  The empty command assumes that all <object>'s items pass through the
  hands of the player running the command. Therefore, the same kinds of
  locks and messages that are applied in a possessive get (and, possibly,
  a drop) are applied to each item in <object>. It is therefore possible
  to fail to empty an object for many reasons, even when you could do so
  using "extraphysical" methods (teleporting items, forcing the object
  to drop them, or forcing the items to leave the object.)

See also: get, drop
& get
& take
  get <object>
  take <object>

  You pick up object, if you pass the object's @lock. You can also do 
  get <thing>'s <object>, which will fail if either thing is not ENTER_OK 
  or the object is locked against you. Some MUSHes choose to disable the 
  ability to take an object in someone else's inventory.
  
See also: @lock, ENTER_OK, give, drop, @success, inventory
& @abuy
  @abuy <object> = <action list>

  Sets the actions to be taken after a player buys an item
  from PRICELIST. The item purchased is passed in as %0,
  and the amount paid as %1

  See also: buy, @buy, @obuy, @pricelist, MONEY, ACTION LISTS
& @buy
  @buy <object> [=<message>]

  Sets the message that is shown to anyone who buys something from
  the object, using the 'buy' command. The item purchased is passed
  in as %0, and the amount paid as %1.

  See also: buy, @abuy, @obuy, @pricelist, MONEY
& @obuy
  @obuy <object> [=<message>]

  Sets the message that will be show to others whenever someone buys
  an item from the object's PRICELIST using the 'buy' command. The
  name of the person giving the money will be automatically inserted at
  the beginning of the message. The item purchased is passed in as %0,
  and the amount paid as %1.

  See also: buy, @abuy, @obuy, @pricelist, MONEY
& @pricelist
  @pricelist <object>=<item1>:<price1>[,<price2>][ <item2>:...]

  The PRICELIST attribute is a space-delimited list of item names
  and prices that are checked when the 'buy' command is run.
  
  An item name may have '_'s where the player would use a space in
  the name.

  A price is either a number (20), a range of numbers (10-30), or
  a minimum number (10+).

  ex:
    @PRICELIST vendor=mansion:1000+ large_house:100-200 house:20,30,50

  See also: buy, @abuy, @buy, @obuy, MONEY
& buy
  buy <item>[ from <vendor>][ for <cost>]

  When you try buying an item, PRICELIST attributes on nearby objects
  (or <vendor> if given) will be checked for matching item:costs. If
  <cost> is given, the first item that matches that cost will be purchased.
  Otherwise, the first matching item that you can afford will be purchased.

  If the pricelist match contains a list of prices,
  ITEM:30,20,10, the first one you can afford will be the resulting price.

  ex:
  > &PRICELIST vendor=coke:20 pepsi:20
  > &drink.coke vendor=You enjoy a delicious coke.
  > &drink.pepsi vendor=It tastes like a funny coke.
  > @BUY vendor=u(drink.%0)
  > buy coke
  You enjoy a delicious coke.

  See also: @ABUY, @BUY, @PRICELIST
& give
  give[/silent] <player>=<number>
  give[/silent] <number> to <player>
  give <player>=<object>
  give <object> to <player>

  Gives player the specified <number> of pennies or <object>. You can't give 
  someone pennies if their new total would be greater than 100000 pennies. 
  (No reason to get greedy).  The /silent switch suppresses the default 
  message indicating how many pennies were given. Wizards may "give"
  a negative number of pennies.

  You may also give players objects, but the other player must be set
  ENTER_OK in order to receive something you give.

  Giving money to an object gives the money to the object's owner. Some
  MUSHes may have @lock/give enabled, which determines who is allowed
  to give an object.

See also: @pay, @cost, @lock, inventory, @receive, @give
& go
& goto
& move
  go[to] <direction> 
  go[to] home
  move <direction>
  move home

  Goes in the specified direction. <Direction> can be the name or alias of
  an exit in your area, the enter alias of an object in your area, or
  the leave alias of the object you are in. You do not need to use the
  word 'go' or 'move', in fact -- simply typing the direction will have the
  same effect.

  'go home' is a special command that returns you to your home room/object.
  Some MUSHes may disable this command.

See also: HOME, @link, @ealias, @lalias, EXITS
& index
  index

  A file similar to news, often indexing the news and events files.
  May not be available on some MUSHes.
& INFO
  INFO

  This command returns some information about the MUSH you are on, such
  as its version number, time of last restart, number of players currently
  connected, and size of database. It can be issued from the connect
  screen.
& inventory
  inventory

  Lists what you are carrying. Can be abbreviated by just 'i', or 'inv'.
  It also tells you how much MUSH money you have. If you are not set
  OPAQUE, others will also be able to see what is in your inventory by
  looking at you.

  Note that on some MUSHes it is possible to take things that are in 
  someone else's inventory. To be safe, @lock any objects that you do
  not want to lose.
  
See also: score, take, drop, OPAQUE, @lock
& kill
  kill <player> [=<cost>]

  Attempts to kill the specified player. Killing costs <cost> pennies, which 
  gives you a <cost>% chance of killing the player. Thus, spending 100
  pennies always works (except against wizards,  who can never be killed).
  If you don't specify a cost, the default is 10 (i.e. 10%).  The player,
  if killed, receives <cost>/2 pennies in insurance.

  You can not kill a player in a room that they control unless you
  also control the room.
  Only wizards can kill players in rooms which have been set HAVEN. 
  This command may be disabled in this MUSH.

See also: BEING KILLED, HAVEN, FLAGS, powers list
& leave
  leave

  The command leave allows you to exit an object you have enter'ed 
  into. When you leave an object, its @leave/@oleave/@oxleave messages
  are triggered, and its @aleave actions are triggered. 

  The NO_LEAVE flag may be enabled on some MUSHes. Objects set with this
  flag cannot be left. @lock/leave may also be enabled on some MUSHes,
  which allows you to set who can leave the object. If you fail to
  leave, the object's @lfail/@olfail/@alfail messages/actions will be
  triggered.

See also: enter, @leave, @lfail, @lock, INTERIORS 
& LOGOUT
  LOGOUT

  LOGOUT is similar to QUIT, but instead of disconnecting you from the
  game completely, it merely disconnects you from your current
  character and returns you to the opening welcome screen. This is
  useful if you want to disconnect and then reconnect to another
  character. Unlike most commands, it is case-sensitive and must be
  typed in all caps.
& look
& read
  look [<object>]
  look <person>'s <object>
  look/outside

  Displays the description of <object>, or the room you're in if you don't 
  name a specific object.  You can specify object as <name> or #<dbref> or 
  'me' or 'here'. On some MUSHes, 'read' may work the same as 'look'. The 
  second form of this command allows you to look at objects held by other 
  people, if the person is not OPAQUE.
    
  Look can take one switch, "outside". look/outside allows you to
  look at objects outside your current location, as long as your
  immediate location is not a room, and is not OPAQUE.

(continued in help look2)
& look2
  If you look at an object that is not set OPAQUE, you will see any non-DARK
  items in its inventory. You can look at DARK items in your location if 
  you know what their name is by typing 'look <object>', but they will
  not show up in the list of contents.

  When you type 'look' alone, you look at your current location. For a room,
  this normally shows you the room's description, the list of contents, and
  any obvious exits from the room. For an object, it only shows you the
  interior description (@idescribe).
  
  If a room is set DARK, when you look you will not see any of the exits
  or contents of the room, unless they are set LIGHT. 

  'look' may be abbreviated 'l'.
  
See also: OPAQUE, FLAGS, @describe, @adescribe, @odescribe, DARK, LIGHT
& news
  news [<topic>]

  The news system works just like the help system. Many MUSHes use it to
  provide standard information on the rules, theme, and customized
  commands of the particular MUSH. It is highly recommended that you 
  read it regularly.
& page 
  page[/<switch>] [<player-list>=]<message>.

  This command sends a message to a player or list of players. If
  the player's name contains spaces, surround it with double-quotes.
  If you have already paged someone since connecting, just typing:

    page <message>

  will send the message to the last person paged. You cannot page a 
  player if they are set HAVEN or if you do not pass their @lock/page.
  In the latter case, the player's PAGE_LOCK`FAILURE, PAGE_LOCK`OFAILURE,
  and PAGE_LOCK`AFAILURE attributes will be activated if set.

  Examples:
    > page airwolf=hi there!
    You paged Airwolf with 'hi there!'.
    > page see, I don't have to retype the name.
    You paged Airwolf with 'see, I don't have to retype the name.'.
    > page "John Lennon" Ringo=Paul's fine!

(continued in help page2)
& page2
  Page will attempt a partial match on the name, checking both for an
  @alias and to see if the name matches someone connected. If the first
  character of <message> is a : or a ;, it will send the page in pose
  format.  

  Objects may page players, but not vice versa. If an object pages
  a NOSPOOF player, that player will see the object's number in
  square brackets, in front of the message, in a fashion similar to
  the way NOSPOOF flags emits.

  Page takes five switches: /list, /blind, /noeval, /override, and /port. 
  The /list and /blind switches provide two different ways of handling
  pages to lists of players. With /list, each paged player sees the
  list of who was paged, and the paging player is notified only once.
  With /blind, it's as if each player was individually paged. 
  The default list behavior is set by the blind_page @config option.
  The /noeval switch prevents the MUSH from evaluating the message.
  The /override switch is admin-only, and overrides pagelocks and HAVEN.
  The /port switch is admin-only, and will page a port descriptor directly, 
  including connections that have not yet logged into a player.
  
See also: @lock, @alias, pose, :, ;, HAVEN, NOSPOOF, FLAGS
& :
& ;
& pose
& semipose
  pose[/noeval] <action pose>
  :<action pose>

  pose[/nospace] <action pose>
  semipose[/noeval] <action pose>
  ;<action pose>
 
  Displays your name followed by the statement you posed.  May be abbreviated
  by the ':' symbol. Normally, a space is placed between your name and the
  action you are posing. If you do not wish to have a space inserted, use
  the /nospace switch, the 'semipose' command, or the ';' symbol and don't
  add a space between the ; and the <action pose>.
  The /noeval switch prevents the pose from being evaluated by
  the parser.

(continued in help pose2)
& pose2
 
  Examples:
    If you are player Bob, and you type in ':laughs out loud.' or
    'pose laughs out loud.' everybody in the room will see:
    "Bob laughs out loud." 
  
    If you are player Bob, and you type in ';'s smiling today.' or
    'pose/nospace 's smiling today.' everybody in the room will see:
    "Bob's smiling today."
& "
& say
  say <message>
  say/noeval <message>
  "<message>

  Says <message> out loud. The message will be enclosed in double-quotes.
  A single double-quote is the abbreviation for this common command.

  Say takes one switch, /noeval. The /noeval switch prevents any evaluation 
  of the message, and is handy when you want to say things that use special 
  characters like % or []'s.

  See also: whisper, pose
& score
  score
  
  Displays how many pennies you are carrying.  Helpful to see if
  any machines are looping. If they are, your pennies will be being 
  rapidly drained. MUSH money may also be used for other purposes in
  the game.
  
See also: LOOPING, @ps, QUEUE, MONEY
& slay
  slay <player/object> 

  This is a Wizard-only command that kills players without paying any 
  insurance to the victims. It is used in places where 'suicide' should 
  not pay.
  
  (Su-ic-ide is pain-less... {MASH theme})
& think
  think <message>

  You can use this command to send a private message to yourself. Pronoun
  substitution is performed. This is essentially equivalent to doing a
  "@pemit me=<message>", but with "think", there's no prepended text.
  One possible use: @adesc me=think %N just looked at you.
& QUIT    
  QUIT

  Log out and leave the game. Must be in all capitals.  
& unfollow
  unfollow
  unfollow <object>

  This command stops you from following an object that you were formerly
  following. If no object is given, you stop following everyone you
  were following.

See also: follow, dismiss, desert, followers(), @follow, @ofollow, @afollow
& use
  use <object>

  Attempts to use an object, triggering its @use/@ouse/@ause attributes.
  The person using the object must pass its uselock; no inheritance check
  is necessary. This is may be done remotely, by using a dbref number;
  it provides an easy way for non-TRUST objects to perform commands on
  TRUST objects.

  If the person fails to pass the object's uselock, the object's
  @ufail/@oufail/@aufail attributes are triggered.

See also: @use, @ouse, @ause, @charges, @runout
& whisper 
  whisper <player>=<message>
  whisper/silent <player>=<message>
  whisper/noisy <player>=<message>
  whisper/noeval <player>=<message>
  whisper/list <players>=<message>

  Whispers the message to the named person, if they are in the same
  room as you. No one will see the message you whisper.  You can also
  whisper to things you are carrying, or to things that are carrying
  you. whisper <player>=:<pose> also works, in a fashion similar to
  page-pose.

  In a noisy whisper, other players in the room may be told who you whispered
  to (but not what you whispered): Polgara whispers to Javelin.
  The probability that a noisy whisper will be heard aloud is configurable.
  In a silent whisper, other players will not know that you whispered.
  The default whisper may be configured either silent or noisy (check @config)

(continued in help whisper2)
& whisper2
  The /noeval switch prevents any evaluation of the message, and
  is handy when you want to say things that use special characters
  like % or []'s.

  The /list switch lets you whisper to many people at once. Multiple
  persons should be space-separated, and names with spaces should be
  enclosed in double-quotes.
& WHO
  WHO   

  Displays a list of players currently connected to the MUSH.
  The WHO tells you how long a player has been on and how long they
  have been inactive. Unlike most commands, it is case sensitive.

See also: @doing, @poll, DOING
& with
  with[/room] <obj>=<command>

  Attempts to run a user-defined command on a specific object.
  If the /room switch is given, <obj> must be a room, and its contents
  are checked for commands as if it was a master room.

  See 'help USER-DEFINED COMMANDS'.