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/
& CHAT
& comsys
  CHAT SYSTEM

  The MUSH has a built-in chat system with many different channels.
  These channels vary from MUSH to MUSH; ask at your local site or
  use @channel/list to see which ones are available.

  You can talk to many people on the MUSH via the chat system, without
  needing to be in the same room as them. Use the "@channel" command
  to join, leave, or check who is on a channel, and use the "@chat"
  or "+" command to communicate.

  If you examine yourself, you will see a list of channels that you are
  currently listening to. Some channels are restricted to wizards or
  administrators only. See the following help topics for details:
    @chat, @channel, @cemit, @clock, cwho()

& +
& @chat
  @chat <channel> = <message>
  +<channel> <message>

  This tells everyone on <channel> your <message>. You can prepend
  <message> with ':' or ';' to pose instead of talk. This command can
  also be formatted:  +<channel> <message>
  You do not need to type the complete name of the channel, only as
  many letters as needed to make it distinct from another channel
  that you're also on.

  Note: if you use the '+' form of this command, and you do not
  use the name of a known channel, your command will be processed
  as normal, preventing user-defined commands like "+last" from
  being clobbered by the chat system.

  See also: chat, CHAN_USEFIRSTMATCH
& CHAN_USEFIRSTMATCH
  CHAN_USEFIRSTMATCH (any type)

  When this flag is set on an object that uses the chat system,
  channel name matching will default to the first matching channel
  in cases of ambiguity. Without this flag, attempting to use an
  ambiguous partial channel name will produce an error.

& @cemit
  @cemit[/noisy][/noeval] <channel>=<message>

  This command allows <message> to be directly broadcasted to the
  players on <channel>. No channel-prefix is prepended unless the
  /noisy switch is given. If the /noeval switch is given, the <message>
  is not evaluated. This command is intended for use in writing
  extended chat systems.

  See also: chat
& @channel
  @channel/list [<channel-prefix>]
  @channel/what [<channel-prefix>]
  @channel/on <channel>[=<player>]
  @channel/off <channel>[=<player>]

  The basic form of this command allows you to see the available
  channels, and join or leave a channel. You do not need to type the
  complete name of the channel, only as many letters as needed to make
  it distinct from other channels.

  Wizards may add and remove other players from channels by providing
  a player name as a second argument.

  Channels may be restricted in who can join them and/or speak on
  them. @channel/list will show you the channel's name, number of users,
  number of message since last restart, access information, and your
  status. See "help channel-list" for an explanation of how to read
  the listing.

  @channel/what will show you the channel's name, access information,
  and a description of the channel's purpose.

  More commands are provided in "help @channel2".  See also: chat
& @channel2
  @channel/who <channel>
  @channel/hide <channel> = <yes|no>
  @channel/title <channel> = <string>

  The @channel/who command shows you who is currently on a channel,
  if you are permitted to see it.

  Some channels allow their users to hide from the @channel/who list.
  If you're on such a channel and are permitted to hide, you can
  use @channel/hide <channel>=yes to hide yourself, and
  @channel/hide <channel>=no to reappear.

  @channel/title lets you set a title to appear before your name
  when you speak on the channel. If you leave the channel, your
  title is cleared; use @channel/gag instead (see help @channel3).

  See "help @channel3" for more.
& @channel3
  @channel/mute <channel> = <yes|no>
  @channel/gag <channel> = <yes|no>
  @channel/recall <channel> [ = <lines> ]

  Some channels broadcast messages when players connect or disconnect from
  the MUSH. If you don't want to hear those messages, use @channel/mute
  <channel>=yes. To resume hearing the messages, use @channel/mute
  <channel>=no or @channel/unmute <channel>. Leave out <channel>
  to mute or unmute all channels.

  If you want to remain on a channel but not receive any messages
  on the channel, use @channel/gag <channel>=yes. To resume hearing,
  use @channel/gag <channel>=no (or @channel/ungag <channel>). When
  you disconnect, the channel will be automatically ungagged for you.
  Leave out <channel> to gag or ungag all channels.  If the channel does
  not have the "open" priv, you can not speak on it while you are gagged.

  @channel/recall shows you the most recent messages on the channel;
  the number of messages depends on how the channel is configured, but
  can be limited by specifying <lines>. You must be on a channel to
  recall from it.

  See "help @channel4" for more.
& @channel4
  @channel/add <channel> [= <priv>]
  @channel/delete <channel>
  @channel/desc <channel> = <desc>
  @channel/rename <channel> = <new name>

  @channel/add creates a new channel. On some MUSHes, any player
  can create a new channel, though there will be a cost associated
  with creation (see @config chat). Possible <priv> specifications:
  * "player" - players may use the channel
  * "object" - objects may use the channel
  * "admin" - only royalty/wizards/chat_privs may use the channel
  * "wizard" - only wizards may use the channel
  * "quiet" - channel will not show connection messages
  * "open" - you may speak even if you aren't listening to the channel
  * "hide_ok" - you may hide from the channel who list.
  * "notitles" - chantitles are not displayed in channel messages.
  * "nonames" - player names are not displayed in channel messages.
  * "nocemit" - @cemit is prohibited on the channel.
  Specifications may be combined, space-separated. Default is "player"

  @channel/delete removes a channel. You must own it or be Wizard.
  @channel/desc sets the channel's description, shown on @channel/what.
    Descriptions are limited to 256 characters.
  @channel/rename is used to rename a channel.

  See "help @channel5" for more. See also "help @clock".
& @channel5
  @channel/priv <channel> = <new priv level>
  @channel/wipe <channel>
  @channel/buffer <channel> = <lines>
  @channel/decompile[/brief] <channel>
  @channel/chown <channel> = <new owner>

  The "priv" switch sets the channel's access privileges to those specified.
  The "wipe" switch clears a channel of players without deleting it.
  The "buffer" switch sets the maximum number of full-length lines that
  the channel will buffer for @chan/recall. Many more shorter lines may
  actually be buffered. Setting it to 0 turns off buffering.

  The "decompile" and "chown" switches can only be used by Wizards.
  @channel/decompile produces a decompile of matching channels. If the
  /brief switch is included, players on the channel aren't listed.
  @channel/chown allows a Wizard to change the owner of a channel.

& channel-list
Here's the legend for reading the @channel/list output:

Channel Name               Num Users Num Msgs  Access Locks     Status  Buf
Sample                             1        0 [DPOWQHo jsmvh*] [On  QH]   4
                                               ||||||| ||||||   |   ||    |
Channel is DISABLED----------------------------/|||||| ||||||   |   ||    |
Channel allows PLAYERS--------------------------/||||| ||||||   |   ||    |
Channel allows OBJECTS---------------------------/|||| ||||||   |   ||    |
Channel is Wizard-only (W) or Admin-only (A)------/||| ||||||   |   ||    |
Channel is QUIET-----------------------------------/|| ||||||   |   ||    |
Channel is HIDE_OK----------------------------------/| ||||||   |   ||    |
Channel is OPEN (non-members can speak on it)--------/ ||||||   |   ||    |
Channel has @clock/join set----------------------------||||||   |   ||    |
Channel has @clock/speak set----------------------------/||||   |   ||    |
Channel has @clock/mod set-------------------------------/|||   |   ||    |
Channel has @clock/see set--------------------------------/||   |   ||    |
Channel has @clock/hide set--------------------------------/|   |   ||    |
Player is the owner of the channel--------------------------/   |   ||    |
Player is currently on/off/gagging the channel------------------/   ||    |
If on, player has the channel muted---------------------------------/|    |
If on, player is hiding on the channel-------------------------------/    |
Size of the channel buffer in full-length lines---------------------------/
& @clock
  @clock/join <channel> [= <key>]
  @clock/speak <channel> [= <key>]
  @clock/see <channel> [= <key>]
  @clock/hide <channel> [= <key>]
  @clock/mod <channel> [= <key>]

  The @clock command modifies the a lock on a chat channel if the
  extended chat system is in use. If no key is specified, the
  lock is unlocked. Evaluation locks will not work with @clock. 
  See help @clock2 for information on using indirect locks.

  The "join" lock restricts who can join the channel.
  The "speak" lock restricts who can speak to the channel.
  The "see" lock restricts who can see the channel on @channel/list
  The "hide" lock restricts @channel/hide if the channel is hide_ok.
  The "mod" lock restricts who can modify the channel. If you pass the
  mod lock on the channel, you can do anything short of deleting it.

  When new channels are added, the mod lock is set to the creator/owner,
  and all other locks are unlocked.

  See help @clock2 for how to use indirect locks to lock a channel to
  anything.

& @clock2
If user-defined locks are available, you can use indirect @clocks
to lock a channel to a lock of any type (including evaluation locks)
on a VISUAL object. This channel can only be joined by an UNFINDABLE player:

  >@clock/join unfindchannel=@#10
  >@lock/user:ChanJoinLock #10=isunfind/1
  >&isunfind #10=[hasflag(%#,unfindable)]
  >@set #10 = VISUAL

@clock                  Corresponding default user: lock for object
join                    ChanJoinLock
speak                   ChanSpeakLock
see                     ChanSeeLock
hide                    ChanHideLock
mod                     ChanModLock

You can lock multiple channels to the same object by specfiying a
specific indirect lock instead of the default one:

  >@clock/join onechannel=@#10/onechanneljoin
  >@clock/join anotherchannel=@#10/anotherchanneljoin
  >@lock/user:onechanneljoin #10 = 1
  >@lock/user:anotherchanneljoin #10 = isunfind/1