# configuration file for PennMUSH
#
# The directives in this file control the behavior of your MUSH
# If you change any of them while your MUSH is running, you can
# cause the MUSH to re-read this file by sending it a SIGHUP
# signal. Typically, one does this by using 'ps' to determine the
# MUSH's process id#, and then issuing a: kill -1 pid#
# command.

####
#### ESSENTIALS
####

# Name of your MUSH. Please change this.
mud_name PennMUSH

# The web address of your MUSH. If this is nonempty, people attemping to
# connect to your MUSH with a web browser will be redirected to this
# URL. Set to the address of a web client, or your MUSH's website.
# mud_url http://www.pennmush.org
mud_url

# If you want GET/POST/etc support for your MUSH, set http_handler to the
# dbref of a Player object.
#
# When the MUSH receives an HTTP request, it checks the player object for
# an HTTP`<METHODNAME>, and if it exists, runs it as an inline command.
# Be warned - if HTTP`?? queues anything, it will NOT be sent to the client -
# everything should be run via /inline
#
# See also, "help http_handler" and "help @respond".
http_handler

# How many HTTP requests do you want to handle every second?
# Setting this to 0 (or negative) disables HTTP. Defaults to 3,
# as HTTP is also disabled unless http_handler is set.
http_per_second 3

# The port it's running on. See also ssl_port, later.
port 4201

# Should we listen only on a specific IP address? If your host has
# multiple IP addresses, put the ip address to listen on here.
# Example:
# ip_addr 128.32.243.78
# If you want to force only IPv4 addresses but  don't want to limit to
# just one, use '0.0.0.0'. Similiarly, to force IPv6, use '::'.
# Otherwise, just leave it blank.
ip_addr

# Should the MUSH attempt to resolve IP numbers to hostnames?
# If yes, you'll see hostnames on the wizard WHO. If no, IP numbers.
# No makes sense if you're running PennMUSH at home and don't have
# a DNS server you can access. MacOS 7/8/9 should use 'no'
# Changing this while using info_slave requires a @shutdown/reboot
# to make it take effect.
use_dns yes

# Databases
# These are, respectively, where to read a database, where to
# write a database, where to put a panic dump (performed if
# the MUSH determines it's going to crash, where to put MUSH mail,
# and where to keep information about the chat system.
# Filenames are relative to the game/ directory.
#
# Do NOT put compression suffixes at the end of the files.
# That's handled below
#
input_database data/indb
output_database data/outdb
crash_database data/PANIC.db
mail_database data/maildb
chat_database data/chatdb

# Database compression
# When your databases are dumped, they can be dumped in a compressed
# format to save disk space, or uncompressed for speed.
# To use a compression program, you must know the name of the
# program that compresses, the name of the program that uncompresses,
# and the suffix that the compression program adds.
#
# Most people can just use one of the following:
#
# Use these 3 lines for no compression. Required on win32 and MacOS 7/8/9.
#compress_program
#uncompress_program
#compress_suffix
#
# Use these 3 lines for gzip compression
# Note: If the mush is built with zlib and you use plain 'gzip' and
# 'gunzip', the library will be used instead of external programs. If
# you want to force using the programs, just specify the full path to
# them; e.g. /usr/bin/gzip
#compress_program gzip
#uncompress_program gunzip
#compress_suffix .gz
#
# Use these 3 lines for Unix compress compression
#compress_program compress
#uncompress_program uncompress
#compress_suffix .Z
#
# Use these 3 lines for bzip2 compression
#compress_program bzip2
#uncompress_program bunzip2
#compress_suffix .bz2
#
compress_program gzip
uncompress_program gunzip
compress_suffix .gz

# Room where new players are created.
player_start 0

# The master room. Exits here are global, as are commands on
# objects here.
master_room 2

# The base room. Any room that can be reached from this room
# through exits is considered a 'connected room'.
# See also: exits_connect_rooms
base_room 0

# Event handler. This dbref receives all events generated by
# PennMUSH. See 'help events' for this.
event_handler -1

# The ancestor room. This dbref serves as an 'ultimate parent' to
# all rooms that aren't set ORPHAN. Set to -1 to disable.
ancestor_room -1

# The ancestor exit. This dbref serves as an 'ultimate parent' to
# all exits that aren't set ORPHAN. Set to -1 to disable.
ancestor_exit -1

# The ancestor thing. This dbref serves as an 'ultimate parent' to
# all things that aren't set ORPHAN. Set to -1 to disable.
ancestor_thing -1

# The ancestor player. This dbref serves as an 'ultimate parent' to
# all players that aren't set ORPHAN. Set to -1 to disable.
ancestor_player -1

# The default home.  This is the room used when an object becomes
# homeless (usually due to its home getting destroyed).  It's also
# the place where things get moved to if their location gets
# unsalvageably corrupted.
default_home 0

# What's the filename of the @sitelock file, that controls
# who can connect and who can't
access_file access.cnf    

# Where are the names you want to ban players from
# creation/rename? A good idea to start with are swear words,
# and featured names like 'Luke', 'Merlin', 'Gandalf', 'Picard',
# 'Lessa', 'Dracula', 'Hercules', 'Scooby', 'Nancy Drew', etc,
# depending on what type of MUSH you are running
names_file names.cnf

###
### Attribute (chunk) cache
###
### PennMUSH can swap rarely-referenced attribute text out to a disk
### file, and cache often-used attribute text in memory. This 
### can result in substantial (typically 30-50%) savings
### in process memory use, at the cost of a very small performance hit.
### You can control the size of memory cache (or set it so large
### that nothing is ever swapped to disk), as well as several less
### important parameters here. 
###

# True to use the attribute cache
use_chunk_system yes

# The file to store the attribute data in, when not in memory.
# This is relative to the game/ directory.
chunk_swap_file data/chunkswap

# The amount of memory allowed for the attribute cache, in bytes.
# The actual amount used will be a multiple of 64K slightly less
# the specified amount.  You must give it at least 132000 bytes.
# If you want to use an 'infinite' cache, try setting this
# to 2000000000; you'll lose the memory benefits, but you'll still
# gain some locality benefits and overhead savings.
chunk_cache_memory 1000000

# The amount of space, in kibibytes, to initially allocate for the
# swap file. The swap file may grow bigger than this figure, but won't
# shrink to less. Only works on some OSes; ignored on those that don't
# support the posix_fallocate() system call. 
# For best results, set it to a larger value than the size of your
# swap file is after the game has been running for a while. How much
# larger depends on how fast the database is growing.
chunk_swap_initial_size 2048

# The number of attributes that may be moved at one time, once per
# second.  The higher the value, the faster memory gets defragmented,
# but at a greater CPU cost.
chunk_migrate 150

###
### In-memory attribute compression
###

# The compression method used on attribute text.
# Options: None, for no compression (But most memory use)
# huffman (Balance between space and compression speed)
# word (Faster decompression, more memory)
attr_compression none

###
### SSL support
###

# The port to listen on for SSL connections. This must be an unused
# port other than the standard connection port. To disable SSL
# connections, leave this set to 0.
ssl_port 0

# The ip address to bind to for the SSL port, if one is specified. 
# If your host has multiple IP addresses, put the ip address to 
# listen on here. Otherwise, leave it blank to listen on all
# addresses if SSL is in use.
ssl_ip_addr

# The file containing the MUSH server's certificate and private key,
# concatenated together, and with no password on the private key.
# Obviously, this file should only be readable by the MUSH account
# owner. If this is commented out, the server will not present a
# certificate, so clients that attempt to authenticate the server
# will fail.
ssl_private_key_file  server-key.crt

# A file containing one or more certificates of certifying authorities
# that the server should trust to certify clients who connect and
# present certificates.
ssl_ca_file /etc/ssl/certs/ca-certificates.crt

# A directory containing one or more certificates of certifying
# authorities that the server should trust to certify clients who
# connect and present certificates. If both this and ssl_ca_file are
# commented out or blank, the server will not attempt client
# authentication.
ssl_ca_dir /etc/ssl/certs


# Are clients *required* to present a valid certificate in order to
# make an SSL connection? If true, ssl_ca_file needs to be set too.
ssl_require_client_cert no

# Filename to use as a unix-domain socket for talking to the ssl
# slave
socket_file data/netmush.sock

###
### Websocket support
###

# Enable websockets
use_ws true

# path used in HTTP requests for a websocket connection to the game.
ws_url /wsclient

###
### Limits, costs, and other constants
###

# name of the monetary units. Uncomment before changing. By leaving it
# commented, the translated value will be used.
# OPTIONAL
# money_singular Penny
# money_plural Pennies

# How many times in a 10 minute period should a given IP address be
# allowed to attempt to log in before being rejected?
# If you want this to really be successful, you should probably also
# block Tor exit nodes at the firewall level:
# http://doc.norang.ca/iptables.html#sec-3
# Set to 0 for unlimited.
connect_fail_limit 10

# Should there be a limit on how long players can be idle?
# If you want one, set idle_timeout to the # number of MINUTES 
# a player may idle before getting disconnected.
# If you don't want a timeout, set it to 0.
idle_timeout 0m

# Should there be a limit on how long connections at the connect screen
# (without an associated player) can be idle?
# If you want one, set unconnected_idle_timeout to the # number of MINUTES 
# a connection may idle before getting disconnected.
# If you don't want a timeout, set it to 0.
unconnected_idle_timeout 5m

# Many common home network routers will drop a connection if there's
# been no activity for a few minutes; they tend to assume the web is
# the internet, and don't deal well with persistant connections like
# mushes use. This option will make the server automatically send a
# TCP-level 'Are you still there?' query every few minutes to keep the
# connection active.
# NOTE: This doesn't work on all OSes, but does on the most popular
# ones for mush hosting such as linux. Other options include the KEEPALIVE
# flag and the IDLE command.
keepalive_timeout 5m

# Should there be a limit on the number of logins the MUSH
# can accept? If your operating system has a limited number of
# file descriptors per process, you should set this to 
# that number - 8. If not, or if you like to live dangerously,
# set this to 0.
max_logins 120

# Should there be a limit on the number of concurrent guest logins the MUSH
# will allow? This option can take 3 values:
# 0 = no limit, any number of guests. Logins beyond the number of established
#     guest characters will result in multiple players being logged into the
#     same guest character.
# -1 = limited to the number of guests in the database. To allow more guests
#      to log in, create more guest characters.
# Any other number = the number of guest connections allowed at once.
max_guests -1

# How much MUSH money do players get when they're created?
starting_money 150

# How much MUSH money do non-guest players get each day they log in?
paycheck 50

# How much MUSH money do guests get each day they log in?
guest_paycheck 0

# What's the most money anyone but guests can have?
max_pennies 100000

# What's the most money guests can have?
max_guest_pennies 1000

# If quotas are enforced, how much players get by default
starting_quota 20

# number of commands a player can have queued. Prevents runaway machines
# from getting out of hand.
player_queue_limit 100

# the number of commands run from the queue when there is no net activity
queue_chunk 3

# the maximum level of recursion allowed in functions
function_recursion_limit 50

# the maximum number of functions that can be invoked
function_invocation_limit 25000

# the maximum depth we're allowed to recursively call the parser
# for a single expression. This limits how much the stack size can increase,
# which could be useful if your host limits your stack (it will prevent
# a crash). The higher your allowed stack size limit, the larger the
# mush process can grow, and the higher this can be set. Generally
# speaking, you won't ever see more than 8192 recursions, so that's
# probably an upper limit, but most sane code shouldn't need more
# than a couple hundred. Setting it to '0' means unlimited.
call_limit 100

# The maximum number of milliseconds of CPU time that a single queue entry
# is allowed to use before aborting. Setting this to a low number will
# help prevent many malicious attacks, as well as accidently bad code,
# from lagging the game. Setting it to 0 means unlimited, and is a bad 
# idea. Remember there are 1000 milliseconds in a second.
queue_entry_cpu_time 1500

# The maximum number of Q registers one level of qregs can have. That is:
# each localize(), ulocal(), etc will allow <max_named_qregs> to be set.
# This is in addition to the default 36 of a-z and 0-9. For old behavior,
# use 0. A very high limit will let an abusive player suck up quite a lot
# of RAM.
max_named_qregs 50

# How many channels total can be created?
# This doesn't allocate memory, it just sets a maximum.
max_channels 200

# What's the maximum length a player's @channel/title can be?
# This does not include ansi/markup.
chan_title_len 80

# How many channels can each non-admin create? Set this to some number
# higher than zero to allow mortals to create channels.
max_player_chans 0

# What's the maximum number of levels of parenting allowed
max_parents 10

# What's the max chain length of indirect locks allowed?
max_depth 10

# How much does it cost a mortal to create a channel?
chan_cost 1000

# How likely should it be that noisy whispers are noticed by other
# players in the room? (Others see: John whispers to Mary.)
# Use a number from 0 to 100
whisper_loudness	100

# the highest allowable dbref -- you can't build more than this
# many objects. if you don't want such a limit, leave this set
# to 0.
max_dbref 0

# The maximum number of attributes per object. This prevents
# denial-of-service attacks involving creating an infinite number
# of attributes on an object. This value is probably enough.
max_attrs_per_obj 2048

# The maximum number of mail messages in each player's inbox.
# Encourages people to clean up their inbox, discourages 
# mailspammers.
mail_limit 300

# How much @search costs
find_cost 100

# How many objects are equal to 1 quota, if quotas are used
quota_cost 1

# How much deposit is required to queue a command?
queue_cost 10

# One out of how many commands that are queued will cost the
# player a coin? Setting this to 1 causes a coin to be lost with
# every command. Setting it to 0 disables coin loss for queued
# commands (and is a very bad idea).
queue_loss 63

# What does it cost to build various things?
room_cost 10
object_cost 10
link_cost 1
exit_cost 1

# How often should we run a purge to remove destroyed objects? (seconds)
purge_interval 10m1s

# How often should we run a dbck to check db consistency? (seconds)
dbck_interval  9m59s

# How often should we perform topology warning checks?
# Default is 1 hour. If you set this to 0, timed MUSH-wide checks 
# will be disabled, but players can still use @wcheck.
warn_interval 1h

# If compiled with FLOATING_POINTS support, this controls the
# decimal precision of numbers. Default is 6 digits after the
# decimal point.
float_precision 6

# The maximum length of player names. Lowering this won't change
# current player names.
player_name_len 15

# The maximum number of aliases a player may have simultaneously.
# Setting this to 0 disables aliases. To allow an unlimited number
# of aliases, set this to 4000 or so.
max_aliases	3

# Limit the number of objects players can own.
use_quota yes

###
### Dump stuff
###

# How often should the database be dumped, in seconds?
# 3600 is once an hour, and probably the most frequent you'd ever want.
# On a large MUSH, consider at most once every 3-6 hours.
# This cannot be a multiple of any of the timer.c parameters
# (so keep it an even number of hours).
dump_interval 1h

# should I fork a concurrent process to do database dumps?
# If I do, your memory requirements will double during the dump.
# If I don't, the MUSH will pause while it dumps.
# If you're low on memory, don't do this.
# If you're on Win32, don't do this; fork() is not defined.
forking_dump yes

# If you're not forking, you get a bunch of messages that you
# can set to warn players when the dump is 5 minutes away,
# 1 minute away, in progress, and finished. You can 
# leave messages you don't want blank, but don't comment
# them out or remove them from the file or you'll get the
# default messages.
# Leaving these undefined lets the game use the default, translated
# messages.
# OPTIONAL
# dump_warning_5min GAME: Database save in 5 minutes.
# dump_warning_1min GAME: Database save in 1 minute.
# dump_message GAME: Saving database. Game may freeze for a few moments.
# dump_complete GAME: Save complete. 


### 
### Filenames
###

# Text files shown on connection, as message of the day, as wizard
# message of the day, on quit, to newly created players, when logins
# are disabled, when player creation is disabled, and when a guest
# logs in. These must either be the path to a text file, or a
# #dbref/attrname to be evaluated and shown.  dbref/attrs are passed
# the port/descriptor as %0. If it's a message shown to a connected
# player, their dbref is also passed as %1.
connect_file txt/connect.txt
motd_file txt/motd.txt
wizmotd_file txt/wizmotd.txt
quit_file txt/quit.txt
newuser_file txt/newuser.txt
down_file txt/down.txt
register_create_file txt/register.txt
guest_file txt/guest.txt
full_file txt/full.txt

# Text file shown when someone uses WHO/DOING/SESSION at the login
# screen. If empty, the default WHO output is shown. If an obj/attr
# is given, you can use a softcoded WHO at the login screen. %2 will
# be the arg given (for 'WHO foo').
# OPTIONAL
# who_file

# The equivalent files in html, shown to Pueblo clients.
connect_html_file txt/connect.html
motd_html_file txt/motd.html
wizmotd_html_file txt/wizmotd.html
quit_html_file txt/quit.html
newuser_html_file txt/newuser.html
down_html_file txt/down.html
register_create_html_file txt/register.html
guest_html_file txt/guest.html
full_html_file txt/full.html
# OPTIONAL
# who_html_file

# The big text files. New ones can be added by setting up
# a new subdirectory of game/txt as described in game/txt/README,
# and adding a new help_command line below, or uncommenting one of
# the normal file entries.

#help_command index txt/index.txt
#help_command rules txt/rules.txt
#help_command +help txt/plushelp.txt

help_command help txt/help.txt
help_command news txt/news.txt
ahelp_command ahelp txt/help.txt
restrict_command ahelp admin
ahelp_command anews txt/news.txt
restrict_command anews admin

# Name of a Sqlite3 file to use to store help data.
help_db data/help.db

# If you're using the email registration feature, but want to use a
# mailer other than sendmail, put the full path to the mailer program
# here. The mailer must accept the -t command-line argument ("get the
# recipient address from the message header To:").  If it doesn't, you
# could probably write a wrapper for it.
# Example: #define MAILER "/full/path/to/other/mailer"
sendmail_prog sendmail

# A UTF-8 encoded file of words, one word per line, used with
# suggest(words, X). Leave empty to disable.
#dict_file /usr/dict/words
dict_file /usr/share/dict/words

# Name of a JSON file holding the database for named colors.
colors_file txt/colors.json

###
### Logging
###
### When selecting log files, you may assign multiple logs to the
### same filename. If you don't assign a filename to a log,
### messages are written on stderr instead (usually redirected to
### log/netmush.log). Probably unwise to change these in a running
### MUSH.
###

# Filename to log important messages (startups, errors, shutdowns)
error_log  log/netmush.log

# Filename to log connections to
connect_log log/connect.log

# Also log connections in a sqlite3 database. See CONNLOG.md for details.
use_connlog yes

# The database file to use for the connlog.
connlog_db log/connlog.db

# Filename to log wizard commands to
wizard_log log/wizard.log

# Filename to log dump checkpoint messages to
checkpt_log log/checkpt.log

# Filename to log debugging trace messages to
trace_log log/trace.log

# Filename to log commands by SUSPECT players to
command_log log/command.log

# log all commands. Makes big, big command.log files. Use only for
# debugging, generally.
log_commands no

# log forces done by wizards
log_forces no

# The password that must be given to do an @logwipe. You must also
# be God, of course. CHANGE THIS.
log_wipe_passwd zap!

# The maximum size of a log file, in kilobytes
log_max_size 100

# What to do when a log file hits its max size.
#  wipe: Erases the file completely, like @logwipe
#  rotate: Backup existing log file to a new one.
#  trim: Delete all but the most recent approximately 10% of the
#        contents.
# Defaults to trim.
# This can be on a per-log basis, or global.
# Logfile names: error, command, wizard, connection, trace, checkpoint
# Example:
# log_size_policy error:rotate checkpoint:wipe default:trim
log_size_policy trim

# perform memory allocation tracking (logged on @dump) to help find
# memory leaks. This really shouldn't be changed while the server
# is running - it's only useful if you do a full shutdown, turn
# this on, and then start up. Generally, you want this off.
mem_check no

###
### Logins
###

# Support the pueblo MUSH client and allow html to be sent to it
pueblo no

# allow non-wizard/royalty logins
logins yes

# allow guest logins
guests yes

# allow players to create/register characters at the login screen
# If you turn this off, neither "create" nor "register" will work.
# Use access.cnf if you want to disable creation for specific sites
# or disable creation but enable registration for everyone.
player_creation yes

# For 1.8.3p9 and later, this option is used to indicate the endianess
# of the host system for password upgrades. If people aren't able to
# log in with it set to yes, try changing to no. If that doesn't work,
# just use @newpassword.
reverse_shs yes

# trigger @aconnect/@adisconnect in a connecting player's location
# if the location is a room or thing?
room_connects yes

###
### SQL connectivity
###

# What SQL server platform should we use? Options include:
# mysql, postgresql, sqlite3, disabled (the default)
sql_platform disabled

# What's the SQL hostname? Use '127.0.0.1' for a TCP connection
# to the local host on port 3306, '<hostip>:<port#>' for a TCP
# connection on another port (e.g. 127.0.0.1:3307), and 
# the word 'localhost' for a domain socket connection.
sql_host 127.0.0.1

# What's the SQL database? You have to set this to a database that
# you create, or the filename of a sqlite3 database.
sql_database mush

# What username to access the database?
sql_username mush

# What password for that user? Change this!
sql_password mush

###
### Options affecting commands and functions
### (See also restrict_command to restrict command use)
###

# The old daytime directive is better suited to restrict_command
# or @command/disable.

# prevent objects from evaluating ufuns on more privileged objects. [++]
safer_ufun yes

# allow functions that have side effects? (e.g. dig(), etc.)
function_side_effects yes

# default whisper to whisper/noisy instead of whisper/silent
noisy_whisper no

# default @cemit to @cemit/noisy instead of @cemit/silent
noisy_cemit no

# is possessive get (get players's object) allowed?
possessive_get yes

# what if the player is disconnected?
possessive_get_d no

# SAFE absolutely prevents destruction, even with @nuke
really_safe yes

# With this turned on, ZMRs and ZMOs are not included in control
# checking. Only Zone Master Players are. The other zone types are
# still used for command-matching, just not for control purposes.
# Highly recomended.
zone_control_zmp_only yes

# When a player is nuked, his SAFE objects are @chowned to a player
# dbref controlled by the probate_judge option.  If this is set to
# "yes", his non-safe objects are destroyed If this is set to "no",
# they are chowned to probate_judge
destroy_possessions yes

# This is the dbref of the player that objects and channels belonging
# to a nuked player are chowned to. If this is an invalid or
# non-player dbref, GOD is used. See destroy_posessions.
probate_judge 1

# Can we @link to an object?
link_to_object yes

# Keep queue limits on a per-owner rather than per-object basis?
# That is, is an object runaway when its owner's total queue is too
# high, rather than when the object's queue is too high?
owner_queues no

# If this is yes, DARK wizards do not trigger AENTER/ALEAVE when they move.
# If it's no, they are just like anybody else.
wiz_noaenter no

# should say/pose by a DARK wizard be anonymous ('Someone says...')?
full_invis no

# Are empty attributes preserved? If this is yes, you can do
# &ATTR obj= and obj will have an attribute ATTR set, with an empty value.
# If this is no, that same command would clear the attribute instead.
empty_attrs yes

###
### TinyMUSH compatibility
###

# Should we treat a missing number as 0 in things like add(3,)?
# For MUX compatibility, the answer is 'yes'.
null_eq_zero no

# In PennMUSH, strings and db#s larger than #0 have traditionally
# been considered true (1) in boolean functions like and(), or(), etc.
# In TinyMUSH, strings and db#s evaluate as false (0)
# Should we emulate TinyMUSH?
tiny_booleans no

# TinyMUSH's trim function is: 
#   trim(<string> [,<trim style> [,<trim character>]])
# PennMUSH's trim function has been:
#    trim(<string>[,<character to trim>[,<trim style>]])
# Should we emulate TinyMUSH? [+ for new MUSHes]
tiny_trim_fun no

# In Tiny, strings used in math expressions evaluate to 0,
# so eq(asdfa,0) = 1, gt(asdf,0) = 0, etc.
# In Penn, using strings where numbers should be is traditionally an
# error (returning #-1 ARGUMENT MUST BE NUMBER or similar)
# Do you want the TinyMUSH behavior?
tiny_math no

# should @pemit default to @pemit/silent, like TinyMUSH?
silent_pemit no

###
### Attributes
###

# enable the adestroy attribute, triggered when an object is nuked?
adestroy no

# enable the amail attribute for admin, triggered when they receive
# @mail? This does no mail loop checking. [-]
amail no

# does @listen work on players?
player_listen yes

# does @ahear work on players? If player_listen is yes, and
# player_ahear is no, sound outside the player can be heard by her
# inventory, but her @ahear isn't executed.
player_ahear yes

# Should we trigger the @startup attribute on startup?
# You always want to, unless you need to disable some
# malicious code on an @startup. This does not affect the
# @restart command, which will work even if this is "no".
startups yes

# Can @desc attributes be accessed remotely by everyone?
# Historically, this was allowed, but it makes it difficult to
# have hidden objects with secrets in their @desc if players
# can remotely get the @desc. If set to "no", you must be
# able to look at something to retrieve its @desc.
read_remote_desc no

###
### Cosmetic stuff
###

# show room/object/player names in bold for ansi players?
ansi_names yes

# show exit lists with commas (a, b, and c)?
comma_exit_list yes

# count hidden players when WHO reports total connected?
count_all no

# are rooms with any exits considered connected, and thus not required
# to have the FLOATING flag set on them?
exits_connect_rooms no

# Prefixes for various broadcast messages
# Leaving these commented lets the game use the translated default messages.
# OPTIONAL
# wizwall_prefix Broadcast:
# rwall_prefix Admin:
# wall_prefix Announcement:

# Should we announce connections/disconnections to rooms and on channels?
# If this is disabled, only HEAR_CONNECT players will see connect/disconnect.
# @aconnect/@adisconnect, however, are still triggered, so you can
# softcode whatever connection monitor you like. Players will probably
# object if you don't at least show them when someone connects in 
# the room with them.
announce_connects yes

# Can players have names with spaces in them?
# Names with spaces need to be enclosed in "double quotes" at the login
# screen, and in any commands that take space-separated args like page.
player_name_spaces no

# show expanded flag name list when you examine an object?
flags_on_examine yes

# show visual attributes when you examine an object you don't own?
# (like examine/full in TinyMUSH)
ex_public_attribs yes

# Should we show the pager's alias, in parentheses, after their name?
# That is, should recipients see:
# Javelin (Jav) paged: ...
page_aliases no

# Allow a character other than + to be used for channel messages? This should
# be a single character. Common choices include = and .
# chat_token_alias =

# Would you like to enable MUX-style channel aliases? These are
# wrappers for Penn's @channel system to provide more familiar syntax
# for MUX users, such as 'addcom <alias>=<channel>', then '<alias>
# <message> for chatting instead of '+<channel> <message>'; see 'help
# muxcomsys' for more details.
use_muxcomm no

# Should +whatever "hi! strip the initial quote and produce <whatever> X says,
# "hi!", or not (producing <whatever> X says, ""hi!"). This also affects
# the @*wall and say commands.
chat_strip_quote yes

# Should object names be restricted to just ascii characters, or can
# non-ascii (Accented letters, for example) be used as well if the
# mush'es locale permits? Not reccomended except for
# non-english-language games, as people with tend to have problems
# typing in those extra characters. @nameaccent is the preferred way to
# get fancy names.
only_ascii_in_names yes

# Should we show @moniker'd names, and where should they be shown? This is
# a space-separated list of the following:
#  chat     - In @chat messages
#  say      - Non-channel speech (say, pose, page, @wall, etc)
#  movement - Movement messages (Joe has arrived., exit @osucc/@odrop, etc)
#  look     - "look" - contents/exit lists, when looking at an object, etc
#  unparse  - In "examine", and other places which show Name(#123flags)
#  who      - In WHO, DOING and SESSION
#  announcements - In "GAME: *" announcements and connect msgs sent to multiple objects
#  everywhere    - All of the above
# You can also limit the types of objects which monikers are used for with
# players, things, rooms, exits. Use "alltypes" for everyone. If no types are
# given, only objects with the MONIKER flag set ever display their moniker.
# For 'everywhere but movement', you can use 'everywhere !movement', for all 
# objects except exits you can use 'alltypes !exits', etc.
# Defaults to off, everywhere, for everyone
monikers 

###
### Default flags for newly created stuff
### To get multiple flags, you may repeat these directives:
###   player_flags flag1
###   player_flags flag2
### As of 1.7.7p6, you may also stack them on one directive:
###   player_flags flag1 flag2
###

# -- Default flags for exits

# Uncommenting this will cause the exit default to be DARK (like in TinyMUD):
#   no exits show up on the "Obvious exits" list.
# exit_flags dark

# Uncommenting this will cause all exits to be TRANSPARENT by default
#   (if you look through them, you will see the description of the next room)
# exit_flags transparent
exit_flags 
# -- Default flags for rooms

# Uncommenting this will cause all rooms to be TRANSPARENT by default.
#   Each obvious exit in a transparent room is displayed on a line by
#   itself, in the format:
#   <Exit name> leads to <Destination name>
#   instead of having all exits strung out in one row.
# room_flags transparent

# Objects which are NO_COMMAND will not be checked for $commands. 
#   Making this a default may speed up your server somewhat. This is
#   definitely a good idea for rooms and players, and, depending on
#   the compostion of your database, probably a good idea for things.
room_flags no_command

# -- Default flags for players

# Players who are ENTER_OK can be given stuff.
player_flags enter_ok

# Players who are INHERIT allow all their objects to control them.
# player_flags inherit

# Players who are ANSI see attribute names hilighted.
player_flags ansi

# See the explanation for rooms and no_command.
player_flags no_command

# -- Default flags for things

# For example, you can't see through OPAQUE things.
# thing_flags opaque

# See the explanation for rooms and no_command.
thing_flags no_command

# -- Default flags for newly created channels
#
# For example, you might want:
# channel_flags player quiet open hide_ok
channel_flags player


# PennMUSH supports MSSP (Mud Server Status Protocol) which tells connecting
# clients/bots some basic information about your game theme, setup, etc.
# See http://tintin.sourceforge.net/mssp/ for the list of fields the protocol
# currently supports. Penn automatically handles name, players, uptime, port,
# codebase, family, pueblo, ssl, website - all others are up to you.
# Example:
# mssp contact/you@yourgame.com
# mssp hiring coders/1
mssp ansi/1
mssp XTERM 256 COLORS/1

###
### Reserved command names, and command and function aliases are in
### alias.cnf
###
include alias.cnf

###
### Restrictions on command usage are in restrict.cnf
###
include restrict.cnf