#ifndef _CONFIG_H_0fae61e6_ #define _CONFIG_H_0fae61e6_ /* This software is Copyright 1989, 1990, 1992, 1993 by various individuals. Please see the accompanying file COPYRIGHT for details. */ /* Tunable parameters -- Edit to your heart's content */ /* Machine type */ /* We have a MIPS machine (DECStations) */ /* #define MIPS */ /* We have a compatible BSD 4.2 machine */ #undef BSD42 /* We have a compatable BSD 4.3 machine */ #define BSD43 /* We have an Apollo machine */ #undef APOLLO /* AIX 370 */ #undef AIX370 /* Do we need to supply a declaration for atof()? */ #define DECLARE_ATOF /* Is the system missing sincos()? */ #define NO_SINCOS /* Throw away completely empty input lines */ #undef DROP_EMPTY_LINES /* Checkpoint dump stuff. Note some bits may cause others to be ignored. */ #define DUMP_CHANGE_PID 0x00000001 /* change main process PID on dump */ #define DUMP_IN_PARENT 0x00000002 /* dump in parent, muck in child */ #define DUMP_DOUBLE_FORK 0x00000004 /* double-fork when forking for dump */ #define DUMP_VFORK 0x00000008 /* use vfork rather than fork */ #define DUMP_INLINE 0x00000010 /* do dumps in main muck process */ #define DUMP_HOLDSPACE 0x00000020 /* keep disk space busy */ #define DUMP_STYLE 0 #define DUMP(x) ((DUMP_STYLE)&DUMP_##x) /* * Interval between warning message and beginning of the dump. Undefine * to suppress the warning message entirely. If you're doing inline dumps * on a moderately-large db you probably want warnings. */ #undef DUMP_WARNING_INTERVAL /* Message given at interval before dump begins. */ #define DUMP_WARNING_MSG "Server> Five minutes to database checkpoint" /* Message given at the beginning of dump. Undefined -> no msg. */ #define DUMP_BEGIN_MSG "Server> Checkpointing database" /* Message given at the end of dump. Not used unless DUMP_INLINE. */ #define DUMP_END_MSG "Server> Checkpoint done" /* * Use this only if your realloc does not allocate in powers of 2 * (if your realloc is clever, this option will cause you to waste space). */ #define DB_DOUBLING /* Use hostnames in logs and the wizard WHO list */ #define HOSTNAMES /* Use plain gethostbyaddr() rather than the async process */ #undef SYNC_HOSTNAMES /* Use identd usernames in logs and the wizard WHO list */ #define USERNAMES /* Do the identd lookup in the main proces rather than a child */ #undef SYNC_USERNAMES /* Allow everyone to be a MUCKER */ #undef MUCKER_ALL /* Prevent Many Fine Cores. */ #undef NOCOREDUMP /* Disable the filesystem-access primitives. */ #undef NO_MUF_FILES /* * To have a private MUCK, this restricts player creation. */ #define REGISTRATION /* * this makes all players created wizards. */ #undef WIZARD_ALL /* Restrict building to users with BUILDER bit */ #define RESTRICTED_BUILDING /* Let examine show integer properties on objects */ #undef SHOWINTPROP /* Allow a player to use teleport-to-player * destinations for exits */ #define TELEPORT_TO_PLAYER /* Make the `examine' command display full names * for types and flags */ #define VERBOSE_EXAMINE /* Enable the _no-autolook: code. */ #define ENABLE_NO_AUTOLOOK /* the 's' flag on a player makes look and examine no longer show dbrefs on * objects they own. */ #define SILENT_PLAYERS /* How should addpennies work? * If multiple flags are defined, a compile-time error results. * addpennies applied to non-players is always wiz-only. */ #undef ADDPENNIES_UNRESTRICTED /* anyone may addpennies to anyone */ #define ADDPENNIES_CONSERVING /* pennies are conserved except for wiz progs */ #undef ADDPENNIES_WIZ_ONLY /* addpennies is a wiz-only primitive */ /* timestamps on objects */ #define TIMESTAMPS /* runs the actions do_connect on #0, if it exists */ #define MUFCONNECTS /* limit on player name length */ #define PLAYER_NAME_LIMIT 16 /* lockout non wizards if a nologin file is present */ #define NOLOGINS /* How much recent command history to save in case of a panic */ /* Undef = don't bother with this */ #define CMDRING_SIZE 65536 #ifdef NOLOGINS #define NOLOGIN_FILE "data/wiz.only.login" #endif /* * Flags controlling various things. For the flag bits, note that @set * works only for things controlled by the issuing player. */ /* may player use @shutdown */ #define PERMIT_SHUTDOWN(player) God(player) /* may player use @dump */ #define PERMIT_DUMP(player) Wizard(player) /* may player use @dump with a filename */ #define PERMIT_DUMPFILE(player) God(player) /* does player get to see the extended WHO output. player can be NOTHING */ #define PERMIT_EXTENDEDWHO(player) (((player)!=NOTHING)&&Wizard(player)) /* can looker see lookee on the WHO list. looker can be NOTHING */ #define PERMIT_SEEWHO(looker,lookee) \ ( !(FLAGS(lookee) & UNSEEN) || \ ( ((looker) != NOTHING) && \ Wizard(looker) ) ) /* may player set/clear the dark bit on thing */ #define PERMIT_SETDARK(player,thing) \ ( Wizard(player) || ( (Typeof(thing) != TYPE_PLAYER) && \ (Typeof(thing) != TYPE_THING) ) ) /* may player set/clear the mucker bit on thing */ #define PERMIT_SETMUCKER(player,thing) (Wizard(player)||(Typeof(thing)!=TYPE_PLAYER)) /* may player set/clear the builder bit on thing */ #define PERMIT_SETBUILDER(player,thing) (Wizard(player)||((thing==player)&&Royalty(player))) /* may player set/clear the tap bit on thing */ #define PERMIT_SETTAP(player,thing) \ ( (Typeof(thing) == TYPE_PROGRAM) || \ ( Wizard(player) && \ ( (Typeof(thing) == TYPE_PLAYER) || \ (thing == GLOBAL_ENVIRONMENT) ) ) ) /* may player set/clear the W bit on thing */ #define PERMIT_SETWIZARD(player,thing) Wizard(player) /* may player set/clear the R bit on thing */ #define PERMIT_SETROYAL(player,thing) \ (Wizard(player)||(Royalty(player)&&(Typeof(thing)!=TYPE_PLAYER))) /* may player set/clear the Q bit on thing */ #define PERMIT_SETQUELL(player,thing) (God(player)||(Wizard(player)&&!God(thing))||((player)==OWNER(thing))) /* may player set/clear the U bit on thing */ #define PERMIT_SETUNSEEN(player,thing) (God(player)||(Typeof(thing)==TYPE_PROGRAM)||(Wizard(player)&&!God(thing))) /* may player set/clear the G bit on thing */ #define PERMIT_SETGOD(player,thing) ((player)==GOD_DBREF) /* may player set/clear the F bit on thing */ #define PERMIT_SETFBIT(player,thing) \ ( Wizard(player) || \ (Typeof(thing)==TYPE_PROGRAM) || \ (Typeof(thing)==TYPE_EXIT) ) /* may player examine thing */ #define PERMIT_EXAMINE(player,thing) \ ( ((player) == (thing)) || \ (FLAGS(thing) & VISUAL) || \ Royalty(player) || \ ((Typeof(thing) != TYPE_PLAYER) && can_link(player,thing)) ) /* may player @force victim */ #define PERMIT_FORCE(player,victim) \ (God(player)||(Wizard(player)&&!God(victim))||(player==victim)) /* may from @user to to at all */ #define PERMIT_ATUSER(from,to) 1 /* may from @user to to without the correct password */ #define PERMIT_ATUSER_NOPW(from,to) (God(from)||(Wizard(from)&&!God(to))) /* may player @boot victim */ #define PERMIT_BOOT(player,victim) (God(player)||(Wizard(player)&&!God(victim))||(player==victim)) /* may player @newpassword victim */ #define PERMIT_NEWPASSWORD(player,victim) (God(player)||(Wizard(player)&&!God(victim))) /* may player @toad victim */ #define PERMIT_TOAD(player,victim) (God(player)&&((victim)!=GOD_DBREF)) /* may player use @pcreate */ #define PERMIT_PCREATE(player) Wizard(player) /* may player @name thing */ #define PERMIT_RENAME(player,thing) (Wizard(player)||(Typeof(thing)!=TYPE_PLAYER)) /* Various messages */ #define DEFAULT_WELCOME_MESSAGE "Welcome to TinyMUCK.\r\nTo connect to your existing character, enter \"connect name password\"\r\nTo create a new character, enter \"create name password\"\r\nIMPORTANT! Use the news command to get up-to-date news on program changes.\r\n\r\nYou can disconnect using the QUIT command, which must be capitalized as shown.\r\n\r\nAbusing or harrassing other players will result in expellation.\r\nUse the WHO command to find out who is currently active.\r\n" #ifdef REGISTRATION # define REG_MSG "Sorry, but registration is in force.\r\nPlease contact a wizard for a character.\r\n" #endif /*REGISTRATION*/ #define LEAVE_MESSAGE "\r\nGoodbye!\r\n" #define NO_DESC_MESSAGE "Sorry, too many connections active.\r\nPlease try later.\r\n\r\n" /* Define this to get a dump of dbref-vs-size when the db is written */ /* Define it to be the filename this dump should be written to. */ #define DB_SIZE_FILE "data/db.sizes" /* Location of files used by tinymuck */ #define WELC_FILE "data/welcome.text" /* For the opening screen */ #define HELP_FILE "data/help.text" /* For the 'help' command */ #define NEWS_FILE "data/news.text" /* For the 'news' command */ #define MAN_FILE "data/man.text" /* For the 'man' command */ #define EDITOR_HELP_FILE "data/edit-help.text" /* editor help file */ /* index files are automatically generated whenever the text files change */ #define HELP_INDEX "data/help.indx" #define NEWS_INDEX "data/news.indx" #define MAN_INDEX "data/man.indx" #define LOG_GRIPE "logs/gripes" /* Gripes Log */ #define LOG_STATUS "logs/status" /* System errors and stats */ #define LOG_CONC "logs/concentrator" /* Concentrator errors and stats */ #define LOG_MUF "logs/muf-errors" /* Muf compiler errors and warnings. */ #define LOG_MONEY "logs/money" /* Money transfers */ #define COMMAND_LOG "logs/commands" /* Player commands */ #define MACRO_FILE "muf/macros" /*define this if you want to lock out certain sites */ #define LOCKOUT /*define this if you want the ability to lock out without even logging */ #define EARLY_LOCKOUT #ifdef LOCKOUT #define LOCKOUT_FILE "data/lockout.text" #endif /* LOCKOUT */ #ifdef EARLY_LOCKOUT #define EARLY_LOCKOUT_FILE "data/early-lockout.text" #endif #ifdef DETACH # define LOG_FILE "TinyMUCK.log" #endif /* * Ports where tinymuck lives -- Note: If you use a port lower than * 1024, then the program must be suid to root or be run by root! */ #define TINYPORT 5757 /* Port that tinymuck uses for playing */ #endif