/* config.h Some configuration parameters */ #ifndef __lpc_config_h_ #define __lpc_config_h_ /* * Max size of a file allowed to be read by 'read_file()'. */ #define READ_FILE_MAX_SIZE 50000 /* Version of the game in the form xx.xx.xx (leading zeroes) gc. * Two digits will be appended, that is the patch level. */ #define GAME_VERSION "CD.03." /* * Should we swap out objects to disk? */ #define USE_SWAP /* * If you define this explode() will strip any leading delimiters. */ #undef OLD_EXPLODE /* * If you define this the driver will try to share most strings. */ #define ALWAYS_SHARE /* If you define this add_actions to static functions can be called * with the efun command(). */ #define STATIC_ADD_ACTIONS /* *The resolution of a float argument to call_out */ #define TIME_RES 10 /* * The number of entries in the call out array. */ #define NUM_SLOTS 0x4000 /* MUST be a multiple of 2 */ /* * How to extract an unsigned char from a char *. * If your compiler has the type 'unsigned char', then the cast-version * is best. If you do not know, use the simple version, and the game will * immediately terminate with a message if bad. #define EXTRACT_UCHAR(p) (*p < 0 ? *p + 0x100 : *p) */ #define EXTRACT_UCHAR(p) (*(unsigned char *)(p)) /* * Define the maximum stack size of the stack machine. This stack will also * contain all local variables and arguments. */ #define EVALUATOR_STACK_SIZE 3000 /* * Define the maximum call depth for functions. */ #define MAX_TRACE 0x100 /* * Define the size of the compiler stack. This defines how complex * expressions the compiler can parse. The value should be big enough. */ #define COMPILER_STACK_SIZE 3000 /* * What is the value of the first constant defined by yacc ? If you do not * know, compile, and look at y.tab.h. */ #define F_OFFSET 257 /* * With this option defined you can trace mudlib execution from within the * mud. Do not keep it switched on constantly because it consumes quite a bit */ #undef TRACE_CODE /* * Does the system have a getrusage call? */ #define RUSAGE /* * Do we use a shadow binary directory * * If this is used then LPC files can declare: #pragma save_binary * This will save the compiled stackcode under the binary file which * is the filepath prepended with the path below. * * Also if this is defined a binary is always searched for first * before doing the compile. * */ #define BINARIES "binaries/" /* * How big, if we want it, should the global cache be? * * This cache, written by Amylaar, can increase the speed of calls * to functions. The cache is allocated globally and indexed with * a number hashed from the functionname / programname. * * NOTE!!! * The size given be below must be an even power of 2 and _if_ defined * must not be less than 2. */ #define GLOBAL_CACHE 0x4000 /* Enable extensive cache statistics */ #undef CACHE_STATS /* If this is defined then the normal 'init' is not called in an object with this_player set to the encountering living object. Instead 'encounter' is is called in the living object, this_player is set to the living object. The normal encounter: encounter(object ob) { ob->init() } */ #define USE_ENCOUNTER_NOT_INIT /* * Maximum number of bits in a bit field. They are stored in printable * strings, 6 bits per byte. */ #define MAX_BITS 4002 /* even 6 */ /* * There is a hash table for living objects, used by find_living(). */ #define LIVING_HASH_SIZE 0x1000 /* * Define what port number the game is to use. */ #define PORTNO 3011 /* * Undef this if your system doesn't support Berkley type symlinks. */ #define SYMLINKS /* * Max number of local variables in a function. */ #define MAX_LOCAL 30 /* * The hashing function used for pointers to shared strings. * The >> shift is because pointers are often aligned to multiples of 4. */ #define PTR_HASH(ptr, size)\ ( ( (((unsigned short *) &(ptr))[0] / sizeof(void *)) ^ \ (((unsigned short *) &(ptr))[1] / sizeof(void *)) ) % (unsigned)(size) ) /* * Define what ioctl to use against tty's. */ /* #define USE_TIOCGETP /* BSD */ #define USE_TCGETA /* SYSV */ /* Maximum number of evaluated nodes/loop. * If this is exceeded, current function is halted. * The worst case yet encountered is 3600 (dec 1989) */ #define MAX_COST 500000 /* * Where to swap out objects. This file is not used if NUM_RESET_TO_SWAP * is 0. */ #define SWAP_FILE "LP_SWAP.3" /* * This is the maximum array size allowed for one single array. */ #define MAX_ARRAY_SIZE 5000 /* * Maximum size of a mapping. */ #define MAX_MAPPING_SIZE 5000 /* * Some LPmuds on sun4 and sparcstations have had problems with the * call of inet_ntoa() in comm1.c. * If the game crash in query_ip_number() wen using inet_ntoa(), * then undefine the following symbol. * The query_ip_number() is called when doing the 'people' command * for example. * This should be defined on a NeXT */ #define INET_NTOA_OK /* * Maximum number of players in the game. * * This is the absolute maximum, the mudlib will probably set a lower level. */ #define MAX_PLAYERS 500 /* * When uploading files, we want fast response; however, normal players * shouldn't be able to hog the system in this way. Define ALLOWED_ED_CMDS * to be the ratio of the no of ed cmds executed per player cmd, and * MAX_CMDS_PER_BEAT to be the bax no of buffered player commands the * system will accept in each heartbeat interval. */ #define ALLOWED_ED_CMDS 20 /* * Reserve an extra memory area from malloc(), to free when we run out * of memory to get some warning and tell master about our memory troubles. * If this value is 0, no area will be reserved. */ #define RESERVED_SIZE (1 << 17) /* Define the size of the shared string hash table. This number should * a prime, probably between 1000 and 30000; if you set it to about 1/5 * of the number of distinct strings you have, you will get a hit ratio * (number of comparisons to find a string) very close to 1, as found strings * are automatically moved to the head of a hash chain. You will never * need more, and you will still get good results with a smaller table. * THIS IS NOT IMPLEMENTED YET. */ #define HTABLE_SIZE 0x8000 /* there is a table of some primes too */ /* * Object hash table size. * Define this like you did with the strings; probably set to about 1/4 of * the number of objects in a game, as the distribution of accesses to * objects is somewhat more uniform than that of strings. */ #define OTABLE_SIZE 0x4000 /* we have several thousand obs usually */ /* * Define SYSV if you are running system V with a lower release level than * Sys V.4. */ #undef SYSV /* * Define FCHMOD_MISSING only if your system doesn't have fchmod(). */ #undef FCHMOD_MISSING /* * Define MAX_BYTE_TRANSFER to the number of bytes you allow to be read * and written with read_bytes and write_bytes */ #define MAX_BYTE_TRANSFER 10000 /* * CATCH_UDP_PORT * * Define this if the mud are to catch incoming udp messages on a * specific port. If == -1 it will not be used unless the mud is started * with the -u### flag. Where ### is the portnumber for the udp port. * If undefined the -u flag will be ignored. */ #define CATCH_UDP_PORT 2500 /* * SERVICE_PORT * * Define this if the mud are to answer service requests from other * programs. If == -1 it will not be used unless the mud is started * with the -p### flag. Where ### is the portnumber for the service * port. If undefined the -p flag will be ignored. */ #define SERVICE_PORT 3003 /* * PROFILE_FUNS * * With this defined statistics of all functions in all programs are kept. * Number of calls to them and time spent in them. * * The information is accessible through debug("getprofile", object) * * This costs memory and cpu, only do it for mudlib profiling purposes. */ #define PROFILE_FUNS /* * CALL_WARNINGS * * With this defined, you can switch on and off the generation of warnings * when you are trying to call non-existant or hidden (by private or * static declaration) functions. * Switching on is done by calling debug("call_warnings", "on") * Switching off is done by calling debug("call_warnings", "off") */ #undef CALL_WARNINGS /* * SUPER_SNOOP * * With this defined, you can add someone to a file called * snoop/snooped which will then be snooped in the * gamedriver. * * Rereading the file is done by calling debug("update snoops"); */ #define SUPER_SNOOP /************************************************************************/ /* END OF CONFIG -- DO NOT ALTER ANYTHING BELOW THIS LINE */ /************************************************************************/ /* * some generic large primes used by various hash functions in different files * You can alter these if you know of a better set of numbers! Be sure * they are primes... */ #define P1 701 /* 3 large, different primes */ #define P2 14009 /* There's a file of them here somewhere :-) */ #define P3 54001 /* Calculate the number of set bits in the argument n (note the octal numbers) */ #define BITNUM(n) ( \ ((n)&010101010101)+\ (((n)&020202020202)>>1)+\ (((n)&000404040404)>>2)+\ (((n)&001010101010)>>3)+\ (((n)&002020202020)>>4)+\ (((n)&004040404040)>>5)\ ) %63 #endif