/* config.h */
#ifndef __CONFIG_H
#define __CONFIG_H
#include "copyright.h"
#include "version.h"
/* *********** READ THIS BEFORE YOU MODIFY ANYTHING IN THIS FILE *********** */
/* WARNING: All options in this file have the ability to signifigantly change
* the look and feel and sometimes even internal behavior of the program.
* The ones shipped as the default have been extensively tested. Others have
* been tested to a (usually) lesser degree, and therefore might still have
* latent bugs. If you change any of them from the default, PLEASE check
* to make sure that you know the full effects of what you are changing. And
* if you encounter any errors or compile time problems with any options
* other than the default settings, PLEASE inform jt1o@andrew.cmu.edu
* immediately, so that they can be fixed. The same goes for any other bug
* you might find in using this software. All efforts will be made to fix
* errors encountered, but unless given a FULL description of the error,
* (IE telling me that logging in doesn't work is insufficient. telling
* me that logging in with WCREAT undefined still gives you the registration
* message is a lot better. MOST effective would be a full dbx trace, or a
* patch for the bug.) Enjoy using the program.
*/
/* ************************************************************************* */
/* Uncomment this of on a Xenix System. */
/* #define XENIX */
/* Uncomment this if on a Xenix system with Xsockets. */
/* #define XSOCKET */
/* Uncomment this if you want to use the Virus (Robert Hood) Concentrator
* package. A must if you want to have more than fifty-odd (depending
* on your system) users at once.
*/
/* #define CONCENTRATOR */
/* Uncomment this if you want the machine to return a name instead of an
* IP number. The code without this defined looks screwy, so I would leave
* it defined unless you feel like fixing it.
*/
#define HOST_NAME
/* Define this if you want the ability to lock out certain sites. This code
* now works. Coming soon: more reasonable matching abilities, and
* wildcards.
*/
#define LOCKOUT
/* Define this if you are running 24 hours a day and wish to autorestart */
/* #define AUTORESTART */
/* Define this if you want to run with registration. Undefining this lets
* anyone create characters.
*/
/* #define WCREAT */
/* Define this if you want an "official" guest character. A guest character
* may not change his name or password, and may not build. You may wish to
* describe and @atrlock the guest. You will probably want this option if
* you use WCREAT.
*/
/* #define GUEST_RESTRICT */
/* This should only be defined if your machine does not have toupper and
* memcpy already defined.
*/
/* #define BRAIN_DAMAGE */
/* Define this if you wish to allow objects to be recycled. */
#define DESTROY
/* One method of slowing bloat. This method requires all builders to have
* a builder bit to build.
*/
/* #define RESTRICTED_BUILDING */
/* Defining this adds a simple tracking allocator of allocs and frees that
* keeps ref counts of what sort of memory is allocated, and how many.
* Good for testing for Memory leaks.
*/
/* #define MEM_CHECK */
/* An alternate method of slowing bloat. This allows builders only X objects
* period. Wizards can check and set quotas on players. If used in
* conjunction with RESTRICTED_BUILDING, expect VERY slow growth.
*/
/* #define QUOTA */
/* Define the following if you want the database stored in compressed format
* via the compress system command. If this is enabled PANIC saves will NOT
* be compressed, so you will need to compress them before restarting if they
* are good saves.
*/
#define DBCOMP
/* Defining the following will log ALL commands typed by every user. Good
* catching what command the game coredumps on.
*/
/* #define LOG_COMMANDS */
/* Defining the following produces a log of all commands that produce a Huh?
* message for a player.
*/
/* #define LOG_FAILED_COMMANDS */
/* Define the following if you are running on a machine so small that you
* cannnot fork a process off to do the save.
*/
/* #define NO_FORK */
#ifndef NO_FORK
/* Define this if you wish to use vfork() instead of fork() */
/* #define USE_VFORK */
#endif
/* Defining the following will show an expanded flag name list when you
* examine an object
*/
#define FLAGS_ON_EXAMINE
/* Defining this will cause passwords to be stored as straight text rather
* that encrypted via the unix crypt() command.
*/
/* #define NOCRYPT */
/* Boolexp_debugging should only be defined if you are testing new boolexp
* locks, etc. otherwise, leave it undefined.
*/
/* #define BOOLEXP_DEBUGGING */
/* Define the following if you wish to allow object building. Only useful
* if RESTRICTED_BUILDING is defined.
*/
/* #define FREE_OBJECTS */
/* Define the following for increased wizard invisibility. If it's enabled,
* says and poses by DARK wizards will show up as 'Someone ....'
* pages are not affected.
*/
#define FULL_INVIS
/* Define the following if you wish to have a TinyTIM like @doing command.
*/
#define AT_DOING
/*
* Define the following to enable the ROYALTY flag. Players with
* this flag set have limited wiz powers: ie, they can look, examine,
* and @tel like wizards, but may not change things like wizards.
*/
#define ROYALTY_FLAG
/* Define the following to enable @whereis commands, and loc() on players
* by other players. Both of these commands are modified by the effect
* of the PLAYER_DARK flag.
*/
#define PLAYER_LOCATE
/* Comment this out if you don't wish to use the built-in mail system.
* The @mail command provides a flexible hardcoded mail system, which
* uses its own database to store messages. This system is the work of
* Joarm of Spellbound MUSH (Justin McKinnerney)
*/
#define USE_MAILER
/* Define the following if you wish to enable global exits and commands.
* Exits in the Master Room are considered global, as are user-defined
* $commands on objects in the Master Room.
*/
#define DO_GLOBALS
/* Define the following if you need to modify the database to use
* zones. You must do this the first time you convert an existing
* database.
*/
#define ADD_ZONES
/* Comment this out if you wish to run without the INHERIT flag. This
* flag prevents objects without it from @forcing, @setting, or
* @triggering objects with the flag, or with a wizbit. This makes doing
* secure objects much easier. However, it can make programming certain
* objects somewhat clumsy, and may cause some initial confusion and
* frustration when first used on a MUSH not used to it.
*/
#define INHERIT_FLAG
/* Define the following if you are converting an older database to this
* version of code. This modifies the database for page and enter locks.
* Compile and start the game with this option the first time, then do an
* immediate @shutdown, recompile with this undefined, and restart. If
* Warning: if you do not remember to recompile, any enter or page locks
* will be lost.
*/
/* #define ADD_LOCKS */
/* Define the following if you want an inactivity timeout - the game
* will automatically boot players who idle too long.
*/
/* #define IDLE_TIMEOUT */
#ifdef USE_SMALLOC
/* Define the following ONLY if using SMALLOC.C, and if you want accurate
* malloc stats.
*/
/* #define SLOW_STATISTICS */
#endif /* USE_SMALLOC */
/* Define the following to get extra debug info into the log file */
/* #define DEBUG */
#ifdef CONCENTRATOR
/*
* Define the following if you want consistancy checking while using
* the Virus concentrator code.
*/
#define CHECKC
#endif
/* default files */
#define DEF_DB_IN "indb.Z" /* default startup database */
#define DEF_DB_OUT "outdb.Z" /* default dump database */
#define HELPTEXT "helptext" /* help text file */
#define HELPINDX "helpindx" /* help index file */
#define NEW_CONNECT_MSG_FILE "create.txt"
#define CONNECT_MSG_FILE "connect.txt"
#define WELCOME_MSG_FILE "welcome.txt"
#define WIZARD_MSG_FILE "wizard.txt"
#define REGISTER_MSG_FILE "register.txt"
#define LEAVE_MSG_FILE "leave.txt"
#define DISABLE_MSG_FILE "disable.txt"
#define HELP_FILE "help.txt"
#define NEWS_FILE "news.txt"
#define NEWSINDX "newsindx"
#ifdef LOCKOUT
#define LOCKOUT_FILE "lockout.txt"
#endif /* LOCKOUT */
/* name of the monetary unit */
#define MONEY "Penny"
#define MONIES "Pennies"
/* room number of player start location */
#define PLAYER_START ((dbref) 0)
/* Uber-wizard */
#define GOD ((dbref) 1)
#define God(x) ((x) == GOD)
/* Guest character */
#ifdef GUEST_RESTRICT
/* you'll almost definitely want to change this */
#define GUEST_PLAYER ((dbref) 3)
#define Guest(x) ((x) == GUEST_PLAYER)
#endif
/* Master room for global exits and commands */
#ifdef DO_GLOBALS
/* probably want to change this later */
#define MASTER_ROOM ((dbref) 2)
#endif
/* Inactivity timeout limit - boots players after certain amount of idling */
/* This must be an integer value, in minutes */
#ifdef IDLE_TIMEOUT
#define INACTIVITY_LIMIT 60
#endif
/* minimum cost to create various things */
#define OBJECT_COST 10
#define EXIT_COST 1
#define LINK_COST 1
#define ROOM_COST 10
#define QUEUE_COST 10 /* deposit on commands in the queue */
#define QUOTA_COST 1 /* quota cost of building an object */
/* cost for various special commands */
#define FIND_COST 100
#define PAGE_COST 0
/* costs of kill command */
#define KILL_BASE_COST 100 /* prob = expenditure/KILL_BASE_COST */
#define KILL_MIN_COST 10
#define KILL_BONUS 50 /* paid to victim */
#define MAX_ARG 100 /* maximum comma's arguments to function
* (like @switch) */
#define QUEUE_LOSS 63 /* one command in 16 will cost one penny */
/* must be a power of two minus 1 */
#define QUEUE_QUOTA 100 /* number of pending commands per player */
/* used to prevent robots from getting out */
/* of hand */
#define START_BONUS 100 /* starting salary for new players */
#define PAY_CHECK 50 /* daily income for active players */
#ifdef QUOTA
#define START_QUOTA "20" /* starting building quota for new players */
#endif /* QUOTA */
/* limit on player name length */
#define PLAYER_NAME_LIMIT 16
/* magic cookies */
#define NOT_TOKEN '!'
#define AND_TOKEN '&'
#define OR_TOKEN '|'
#define LOOKUP_TOKEN '*'
#define NUMBER_TOKEN '#'
#define AT_TOKEN '@'
#define IN_TOKEN '+'
#define IS_TOKEN '='
#define ARG_DELIMITER '='
/* magic command cookies */
#define SAY_TOKEN '"'
#define POSE_TOKEN ':'
#define SEMI_POSE_TOKEN ';'
/* delimiter for lists of exit aliases */
#define EXIT_DELIMITER ';'
/* amount of object endowment, based on cost */
#define MAX_OBJECT_ENDOWMENT 100
/* max value a wiz can put on an object */
#define MAX_WIZ_OBJECT_ENDOWMENT 2000
#define OBJECT_ENDOWMENT(cost) (((cost)-5)/5)
/* !!! added for recycling, return value of object */
#ifdef DESTROY
#define OBJECT_DEPOSIT(pennies) ((pennies)*5+5)
#endif /* DESTROY */
/* amount at which temple stops being so profitable */
#define MAX_PENNIES 100000
/* How deep can indirect locks go? */
#define MAX_DEPTH 10
#ifndef TINYPORT
#define TINYPORT 4201
#endif
#ifdef CONCENTRATOR
/* port used if the virus concentrator is installed */
#define INTERNAL_PORT 7372
#endif /* CONCENTRATOR */
#define QUIT_COMMAND "QUIT"
#define WHO_COMMAND "WHO"
#ifdef AT_DOING
#define DOING_COMMAND "DOING"
#endif
#ifdef RWHO_SEND
#ifdef FULL_RWHO
#define RWHO_COMMAND "RWHO"
#endif
#endif
#define PREFIX_COMMAND "OUTPUTPREFIX"
#define SUFFIX_COMMAND "OUTPUTSUFFIX"
#ifdef RWHO_SEND
#define RWHOSERV "milo.mit.edu"
/* See the README file for info on this */
#define RWHOPORT 6889 /* this should NEVER be changed */
#define RWHOPASS "get_yours" /* This SHOULD be changed!! */
#endif
/* timer.c defines */
/* Note: Don't make times multiples of each other */
/* otherwise players will have to wait a long time when */
/* two or more events coincide */
/* time is in seconds */
#define FIXUP_INTERVAL 600 /* fixup free list every 10 minutes */
#define DUMP_INTERVAL 10801 /* dump every 3 hours*/
#ifdef RWHO_SEND
#define RWHO_INTERVAL 241 /* update RWHO ever 4 minutes */
#endif
#define GARBAGE_CHUNK 3 /* recopy 3 objetcs/sec */
/* interface.c stuff */
#ifdef XENIX
#define MAX_INPUT 4096 /* only used in xenix.c */
#endif
#define MAX_OUTPUT 16384
#define COMMAND_TIME_MSEC 1000 /* time slice length in milliseconds */
#define COMMAND_BURST_SIZE 100 /* commands allowed per user in a burst */
#define COMMANDS_PER_TIME 1 /* commands per time slice after burst */
/* If this is a xenix system redefine srandom and random */
#ifdef XENIX
#define random rand
#define srandom srand
#endif
#ifdef i386 /* if SYSV */
#define srand srandom
#define rand random
#endif
#ifdef BRAIN_DAMAGE /* a kludge to get it to work on a mutant
* DENIX system */
#undef toupper
#endif
#endif /* __CONFIG_H */