# 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 TinyMUSH # 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 # 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 #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. This only is used if globals is set to "yes". 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 # 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 features 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. ### # 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 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 50 ### ### 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 # The file containing one or more certificates of certifying authorities # that the server should trust to certify clients who connect and # present certificates. A standard bundle of these is distributed # with openssl as 'ca-bundle.crt'. If commented out, the server will # not attempt client authentication. ssl_ca_file /usr/share/ssl/certs/ca-bundle.crt # Are clients *required* to present a valid certificate in order to # make an SSL connection? ssl_require_client_cert no ### ### Limits, costs, and other constants ### # name of the monetary units money_singular Penny money_plural Pennies # 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 # 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 0 # 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 number of commands run from the queue when there is net activity active_queue_chunk 1 # the maximum level of recursion allowed in functions function_recursion_limit 50 # the maximum number of functions that can be invoked function_invocation_limit 2500 # 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 # How many channels total can be created? # This doesn't allocate memory, it just sets a maximum. max_channels 200 # 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 many @functions can we have? If you change this without # doing a # shutdown (or shutdown/reboot) immediately thereafter, you'll very likely # crash your MUSH, so don't do that. max_global_fns 50 # 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 # If you kill someone, you can spend up to 100 coins; the chance # of killing them is the number of coins you spend. What's the # minimum number of coins that must be spent, and the default # number if no number is given? kill_min_cost 10 kill_default_cost 10 # If you kill someone, they get paid off. The payoff is this # percentage of the amount you spent to kill them. The usual is 50%. kill_bonus 50 # How much to various commands cost: find_cost 100 page_cost 0 # 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 password that must be given to do an @logwipe. You must also # be God, of course. CHANGE THIS. log_wipe_passwd zap! # The maximum length of player names. Lowering this won't change # current player names. This number should be one greater than the # actual maximum length you want. player_name_len 16 # 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. 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. 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 # 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 # 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 events txt/events.txt #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 ### Config directive for IDENT. ### If you want to do ident (RFC1143) lookups, set use_ident to "yes" ### and select an ident_timeout to determine how long the MUSH ### should wait for a response, in seconds. If you're using ### INFO_SLAVE (in options.h), this is how long the info_slave waits. # Changing this while using info_slave requires a @shutdown/reboot # to make it take effect. use_ident yes ident_timeout 5s ### ### 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 # 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 yes # 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 # If you use the shs password system, and your database was created # on a little-endian hardware architecture (such as an intel PC), # set this to 'yes'. If your database was created on a big-endian # hardware architecture (most non-intel systems), set this to 'no'. # If you port a db with shs passwords between systems, and the # passwords don't work, try changing this setting. reverse_shs yes # trigger @aconnect/@adisconnect in a connecting player's location # if the location is a room or thing? room_connects no ### ### SQL connectivity ### # What SQL server platform should we use? Options include: # mysql, disabled (the default) sql_platform disabled # What's the SQL hostname? Use '127.0.0.1' for a TCP connection # to the local host, and '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. 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 # 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 God. # If this is set to "yes", his non-safe objects are destroyed # If this is set to "no", they are chowned to God destroy_possessions yes # 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 TinyMUSH compatibility, the answer is 'no'. 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 yes # 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 no # 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 wizwall_prefix Broadcast: rwall_prefix Admin: wall_prefix Announcement: # Should we announce connections/disconnections to rooms and on channels? # If this is disabled, only MONITOR 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? 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 # What should page a b c = message do? # If blind_page is yes, page defaults to page/blind (a,b,c each get separate # pages with no evidence that it was a multipage). If blind_page is no, # page defaults to page/list (a single page goes to a,b,c and they can # see that they all received it. blind_page yes # Should we show the pager's alias, in parentheses, after their name? # That is, should recipients see: # Javelin (Jav) paged: ... page_aliases 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 strlen(%r) be 1 or 2? Turning this option on will allow %r to be # used as a list delimiter, but might break formatting softcode that depends # on its length being 2. newline_one_char 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 ### ### 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 # -- 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 ### ### 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