--- deliantra/server/include/config.h 2006/12/15 20:07:02 1.25
+++ deliantra/server/include/config.h 2010/06/18 17:31:01 1.61
@@ -1,25 +1,26 @@
/*
- CrossFire, A Multiplayer game for X-windows
-
- Copyright (C) 2002 Mark Wedel & Crossfire Development Team
- Copyright (C) 1992 Frank Tore Johansen
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- The authors can be reached via e-mail at crossfire.de
-*/
+ * This file is part of Deliantra, the Roguelike Realtime MMORPG.
+ *
+ * Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
+ * Copyright (©) 2002 Mark Wedel & Crossfire Development Team
+ * Copyright (©) 1992 Frank Tore Johansen
+ *
+ * Deliantra is free software: you can redistribute it and/or modify it under
+ * the terms of the Affero GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the Affero GNU General Public License
+ * and the GNU General Public License along with this program. If not, see
+ * .
+ *
+ * The authors can be reached via e-mail to
+ */
/* This file contains various #defines that select various options.
* Some may not be desirable, and some just may not work.
@@ -62,7 +63,6 @@
* alphabetically.
*
* Short list of features, and what to search for:
- * CS_LOGSTATS - log various new client/server data.
* DEBUG - more verbose message logging?
* MAP_CLIENT_X, MAP_CLIENT_Y - determines max size client map will receive
* MAX_TIME - how long an internal tick is in microseconds
@@ -73,16 +73,10 @@
/* Use a very easy, non-challenging server?
* Defining the COZY_SERVER will make the server much less challenging:
- * no stats loss on death, much less experience loss, and party members
- * are treated by pet monsters as the owner itself when moving "through" them.
+ * no stats loss on death, much less experience loss.
*/
#define COZY_SERVER 1
-/*
- * Make it impossible to pk outside the arena.
- */
-#define PROHIBIT_PLAYERKILL 1
-
/* Use balanced stat loss code?
* This code is a little more merciful with repeated stat loss at lower
* levels. Basically, the more stats you have lost, the less likely that
@@ -123,25 +117,22 @@
/* Don't edit these values. They are configured in lib/settings. These are
Simply the defaults. */
-#define BALANCED_STAT_LOSS FALSE
-#define PERMANENT_EXPERIENCE_RATIO 25
-#define DEATH_PENALTY_RATIO 20
-#define DEATH_PENALTY_LEVEL 3
+#define BALANCED_STAT_LOSS TRUE
+#define PERMANENT_EXPERIENCE_RATIO 30
+#define DEATH_PENALTY_RATIO 10
+#define DEATH_PENALTY_LEVEL 2
#define SET_TITLE TRUE
#define SIMPLE_EXP TRUE
#define SPELLPOINT_LEVEL_DEPEND TRUE
-#define SPELL_ENCUMBRANCE TRUE
+#define SPELL_ENCUMBRANCE FALSE
#define SPELL_FAILURE_EFFECTS FALSE
-#define REAL_WIZ TRUE
-#define RECYCLE_TMP_MAPS FALSE
#define RESURRECTION FALSE
#define SEARCH_ITEMS TRUE
#define NOT_PERMADETH TRUE
#define EXPLORE_MODE FALSE
#define STAT_LOSS_ON_DEATH FALSE
-#define PK_LUCK_PENALTY 1
-#define CASTING_TIME FALSE
-#define SET_FRIENDLY_FIRE 5
+#define PK_LUCK_PENALTY 0
+#define SET_FRIENDLY_FIRE 0
#define ARMOR_MAX_ENCHANT 5
#define ARMOR_WEIGHT_REDUCTION 10
#define ARMOR_WEIGHT_LINEAR TRUE
@@ -151,23 +142,12 @@
/* you can edit the ones below */
-
-/* CS_LOGSTATS will cause the server to log various usage stats
- * (number of connections, amount of data sent, amount of data received,
- * and so on.) This can be very useful if you are trying to measure
- * server/bandwidth usage. It will periodially dump out information
- * which contains usage stats for the last X amount of time.
- * CS_LOGTIME is how often it will print out stats.
- */
-#define CS_LOGSTATS
-#define CS_LOGTIME 600
-
/* DEBUG generates copious amounts of output. I tend to change the CC options
* in the crosssite.def file if I want this. By default, you probably
* dont want this defined.
*/
#ifndef DEBUG
-#define DEBUG
+# define DEBUG
#endif
/*
* This option creates more core files. In some areas, there are certain
@@ -202,8 +182,9 @@
* MSW 2001-05-28
*/
-#define MAP_CLIENT_X 31
-#define MAP_CLIENT_Y 31
+// both must be 2**n
+#define MAP_CLIENT_X 32
+#define MAP_CLIENT_Y 32
/*
* If you feel the game is too fast or too slow, change MAX_TIME.
@@ -214,6 +195,14 @@
#define MAX_TIME 120000
+/*
+ * MAX_ITEM_PER_ACTION defines how many items a player can drop/take etc. at once.
+ * (be careful to set this to high values, as dropping lots of things
+ * can be a performance problem (for which a fix is worked on)).
+ */
+
+#define MAX_ITEM_PER_ACTION 100
+
/* Polymorph as it currently stands is unbalancing, so by default
* we have it disabled. It can be enabled and it works, but
* it can be abused in various ways.
@@ -222,11 +211,10 @@
/* This determine how many entries are stored in the kill log. You
- * can see this information with the 'party kills' command. More entries
- * mean slower performance and more memory. IF this is not defined, then
- * this feature is disabled.
+ * can see this information with the 'party kills' command. More entries
+ * mean slower performance and more memory.
*/
-#define PARTY_KILL_LOG 20
+#define PARTY_KILL_LOG 40
/*
* The PERM_EXP values adjust the behaviour of permenent experience. - if
@@ -254,54 +242,6 @@
#define PERM_EXP_GAIN_RATIO 0.10f
#define PERM_EXP_MAX_LOSS_RATIO 0.50f
-/* Enable the new material code - it needs some work. You can
- * enable this, and things will work, just you'll see a whole
- * bunch more materials show up, and thus a whole bunch more materials
- * in your inventory, and the sorting for them isn't really good.
- */
-
-/*
-#define NEW_MATERIAL_CODE
-*/
-
-/***********************************************************************
- * SECTION 2 - Machine/Compiler specific stuff.
- *
- * Short list of items:
- * COMPRESS_SUFFIX - selection of compression programs
- * O_NDELAY - If you don't have O_NDELAY, uncomment it.
- *
- ***********************************************************************/
-
-/*
- * If you compress your files to save space, set the COMPRESS_SUFFIX below
- * to the compression suffix you want (.Z, .gz, .bz2). The autoconf
- * should already find the program to use. If you set the suffix to
- * something that autoconf did not find, you are likely to have serious
- * problems, so make sure you have the appropriate compression tool installed
- * before you set this. You can look at the autoconf.h file to see
- * what compression tools it found (search for COMPRESS).
- * Note that this is used when saving files. Crossfire will search all
- * methods when loading a file to see if it finds a match
- */
-
-#ifndef COMPRESS_SUFFIX
-/* #define COMPRESS_SUFFIX ".Z" */
-#endif
-
-/* If you get a complaint about O_NDELAY not being known/undefined, try
- * uncommenting this.
- * This may cause problems - O_NONBLOCK will return -1 on blocking writes
- * and set error to EAGAIN. O_NDELAY returns 0. This is only if no bytes
- * can be written - otherwise, the number of bytes written will be returned
- * for both modes.
- */
-
-/*
-#define O_NDELAY O_NONBLOCK
-*/
-
-
/***********************************************************************
* Section 3
*
@@ -311,14 +251,12 @@
*
* Values:
*
- * BANFILE - ban certain users/hosts.
* CSPORT - port to use for new client/server
* DMFILE - file with dm/wizard access lists
* LOGFILE - where to log if using -daemon option
* MAP_ - various map timeout and swapping parameters
* MAX_OBJECTS - how many objects to keep in memory.
* MAX_OBJECTS_LWM - only swap maps out if below that value
- * MOTD - message of the day - printed each time someone joins the game
* PERM_FILE - limit play times
* SHUTDOWN - used when shutting down the server
* SOCKETBUFSIZE - size of buffer used internally by the server for storing
@@ -328,158 +266,31 @@
***********************************************************************
*/
-/*
- * BANFILE - file used to ban certain sites from playing. See the example
- * ban_file for examples.
- */
-
-#ifndef BANFILE
-#define BANFILE "ban_file"
-#endif
-
/* CSPORT is the port used for the new client/server code. Change
* if desired. Only of relevance if ERIC_SERVER is set above
*/
-
#define CSPORT 13327 /* old port + 1 */
-
/*
* DMFILE
* A file containing valid names that can be dm, one on each line. See
* example dm_file for syntax help.
*/
-
#ifndef DMFILE
#define DMFILE "dm_file"
#endif
-
/* LOGFILE specifies which file to log to when playing with the
* -daemon option.
*/
-
#ifndef LOGFILE
-#define LOGFILE "/var/log/crossfire/logfile"
+#define LOGFILE "/var/log/deliantra/logfile"
#endif
/*
- * MAP_MAXTIMEOUT tells the maximum of ticks until a map is swapped out
- * after a player has left it. If it is set to 0, maps are
- * swapped out the instant the last player leaves it.
- * If you are low on memory, you should set this to 0.
- * Note that depending on the map timeout variable, the number of
- * objects can get quite high. This is because depending on the maps,
- * a player could be having the objects of several maps in memory
- * (the map he is in right now, and the ones he left recently.)
- * Each map has it's own TIMEOUT value and value field and it is
- * defaulted to 300
- *
- * Having a nonzero value can be useful: If a player leaves a map (and thus
- * is on a new map), and realizes they want to go back pretty quickly, the
- * old map is still in memory, so don't need to go disk and get it.
- *
- * MAP_MINTIMEOUT is used as a minimum timeout value - if the map is set
- * to swap out in less than that many ticks, we use the MINTIMEOUT value
- * velow. If MINTIMEOUT > MAXTIMEOUT, MAXTIMEOUT will be used for all
- * maps.
- */
-
-/* How many ticks till maps are swapped out */
-#define MAP_MAXTIMEOUT 300
-/* At least that many ticks before swapout */
-#define MAP_MINTIMEOUT 300
-
-/*
- * MAP_MAXRESET is the maximum time a map can have before being reset. It
- * will override the time value set in the map, if that time is longer than
- * MAP_MAXRESET. This value is in seconds. If you are low on space on the
- * TMPDIR device, set this value to somethign small. The default
- * value in the map object is MAP_DEFAULTRESET (given in seconds.)
- * I personally like 1 hour myself, for solo play. It is long enough that
- * maps won't be resetting as a solve a quest, but short enough that some
- * maps (like shops and inns) will be reset during the time I play.
- * Comment out MAP_MAXRESET time if you always want to use the value
- * in the map archetype.
- */
-
-/* Maximum time to reset. */
-#define MAP_MAXRESET 7200
-/* Default time to reset. */
-#define MAP_DEFAULTRESET 3600
-
-/*
- * MAX_OBJECTS is no hard limit. If this limit is exceeded, crossfire
- * will look for maps which are already scheldued for swapping, and
- * promptly swap them out before new maps are being loaded.
- * If playing only by yourself, this number can probably be as low as
- * 3000. If in server mode, probably figure about 1000-2000 objects per
- * active player (if they typically play on different maps), for some guess
- * on how many to define. If it is too low, maps just get swapped out
- * immediately, causing a performance hit. If it is too high, the program
- * consumes more memory. If you have gobs of free memory, a high number
- * might not be a bad idea. Each object is around 350 bytes right now.
- * 25000 is about 8.5 MB
- */
-
-#define MAX_OBJECTS 400000
-
-/*
- * Max objects low water mark (lwm). If defined, the map swapping strategy
- * is a bit different:
- * 1) We only start swapping maps if the number of objects in use is
- * greater than MAX_OBJECTS above.
- * 2) We keep swapping maps until there are no more maps to swap or the number
- * of used objects drop below this low water mark value.
- *
- * If this is not defined, maps are swapped out on the timeout value above,
- * or if the number of objects used is greater than MAX_OBJECTS above.
- *
- * Note: While this will prevent the pauses noticed when saving maps, there
- * can instead be cpu performance penalties - any objects in memory get
- * processed. So if there are 4000 objects in memory, and 1000 of them
- * are living objects, the system will process all 1000 objects each tick.
- * With swapping enable, maybe 600 of the objects would have gotten swapped
- * out. This is less likely a problem with a smaller number of MAX_OBJECTS
- * than if it is very large.
- * Also, the pauses you do get can be worse, as if you enter a map with
- * a lot of new objects and go above MAX_OBJECTS, it may have to swap out
- * many maps to get below the low water mark.
- */
-
-/*#define MAX_OBJECTS_LWM MAX_OBJECTS/2*/
-
-/*
- * Turning on MEMORY_DEBUG slows down execution, but makes it easier
- * to find memory corruption and leaks. Currently, the main thing
- * that happens with this activated is that one malloc is done for
- * each object - thus whatever debugging mechanism the malloc library
- * (or other debugging tool provides, like purify), it can track this
- * individual malloc. Default behaviour when turned off is that
- * enough memory is malloced for a large group of objects so malloc does
- * not need to be called as often.
- * This should only be turned on if some form of memory debugging tool
- * is being used - otherwise, turning this on will cause some performance
- * hit with no useful advantage.
- */
-
-/*#define MEMORY_DEBUG*/
-
-
-/*
- * If you want to have a Message Of The Day file, define MOTD to be
- * the file with the message. If the file doesn't exist or if it
- * is empty, no message will be displayed.
- * (It resides in the CONFDIR directory)
- */
-
-#define MOTD "motd"
-
-/*
* You can restrict playing in certain times by creating a PERMIT_FILE
* in CONFDIR. See the sample for usage notes.
*/
-
#define PERM_FILE "forbid"
/*
@@ -488,12 +299,10 @@
* Remember to delete it when you open the game again.
* (It resides in the CONFDIR directory)
*/
-
#ifndef SHUTDOWN_FILE
#define SHUTDOWN_FILE "shutdown"
#endif
-
/*
* SOCKETBUFSIZE is the size of the buffer used internally by the server for
* storing backlogged messages for the client. This is not operating system
@@ -504,23 +313,13 @@
* you have very slow client connections, a larger value may be
* warranted.
*/
-
#define SOCKETBUFSIZE 256*1024
/*
* Your tmp-directory should be large enough to hold the uncompressed
- * map-files for all who are playing.
- * It ought to be locally mounted, since the function used to generate
- * unique temporary filenames isn't guaranteed to work over NFS or AFS
- * On the other hand, if you know that only one crossfire server will be
- * running using this temporary directory, it is likely to be safe to use
- * something that is NFS mounted (but performance may suffer as NFS is
- * slower than local disk)
+ * map-files for all who are playing. Local to 'lib' directory.
*/
-
-/*#define TMPDIR "/home/hugin/a/crossfire/crossfire/tmp"*/
-#define TMPDIR "/tmp"
-
+#define TMPDIR "tmp"
/* Directory to use for unique items. This is placed into the 'lib'
* directory. Changing this will cause any old unique items file
@@ -529,35 +328,15 @@
#define UNIQUE_DIR "unique-items"
/*
- * These define the players starting map and location on that map, and where
- * emergency saves are defined. This should be left as is unless you make
- * major changes to the map.
- */
-
-#define EMERGENCY_MAPPATH "/city/city"
-#define EMERGENCY_X 15
-#define EMERGENCY_Y 19
-
-
-/*
* These defines tells where, relative to LIBDIR, the maps, the map-index,
* archetypes highscore and treaures files and directories can be found.
*/
#define MAPDIR "maps"
-#define TEMPLATE_DIR "template-maps"
#define ARCHETYPES "archetypes"
-#define REGIONS "regions"
-#define HIGHSCORE "highscore"
+#define REGIONS "regions"
#define TREASURES "treasures"
-#define BANISHFILE "banish_file"
-
-#define MAX_ERRORS 25 /* Bail out if more are received during tick */
-#define OBJ_EXPAND 5000 /* How big steps to use when expanding array */
-
-#define HIGHSCORE_LENGTH 1000 /* How many entries there are room for */
-#define ARCHTABLE 16384 /* Arch hashtable size */
#define MAXSTRING 20
#define COMMAND_HASH_SIZE 107 /* If you change this, delete all characters :) */
@@ -584,7 +363,7 @@
*/
#ifndef PLAYERDIR
-#define PLAYERDIR "players"
+# define PLAYERDIR "players"
#endif
/*
@@ -602,69 +381,8 @@
#define SAVE_MODE 0660
#define SAVE_DIR_MODE 0770
-/* NOTE ON SAVE_INTERVAL and AUTOSAVE: Only one of these two really
- * needs to be selected. You can set both, and things will work fine,
- * however, it just means that a lot more saving will be done, which
- * can slow things down some.
- */
-
-/* How often (in seconds) the player is saved if he drops things. If it is
- * set to 0, the player will be saved for every item he drops. Otherwise,
- * if the player drops and item, and the last time he was saved
- * due to item drop is longer
- * the SAVE_INTERVAL seconds, he is then saved. Depending on your playing
- * environment, you may want to set this to a higher value, so that
- * you are not spending too much time saving the characters.
- * This option should now work (Crossfire 0.90.5)
- */
-
-//#define SAVE_INTERVAL 60
-
/*
- * AUTOSAVE saves the player every AUTOSAVE ticks. A value of
- * 5000 with MAX_TIME set at 120,000 means that the player will be
- * saved every 10 minutes. Some effort should probably be made to
- * spread out these saves, but that might be more effort than it is
- * worth (Depending on the spacing, if enough players log on, the spacing
- * may not be large enough to save all of them.) As it is now, it will
- * just set the base tick of when they log on, which should keep the
- * saves pretty well spread out (in a fairly random fashion.)
- */
-
-#define AUTOSAVE 1000
-
-/* Often, emergency save fails because the memory corruption that caused
- * the crash has trashed the characters too. Define NO_EMERGENCY_SAVE
- * to disable emergency saves. This actually does
- * prevent emergency saves now (Version 0.90.5).
- */
-
-#define NO_EMERGENCY_SAVE
-
-/* By selecting the following, whenever a player does a backup save (with
- * the 'save command), the player will be saved at home (EMERGENCY_MAP_*
- * information that is specified later). IF this is not set, the player
- * will be saved at his present location.
- */
-
-/*#define BACKUP_SAVE_AT_HOME*/
-
-/* RESET_LOCATION_TIME is the number of seconds that must elapse before
- * we will return the player to his savebed location. If this is zero,
- * this feature is disabled (player will resume where ever he was
- * when he last logged off). If this is set to less than two hours,
- * it will prevent players from camping out in treasure rooms.
- * Do not comment this out - it must be set to something - if you
- * comment this out, the program will not compile.
- *
- * This will work to BACKUP_SAVE_AT_HOME at home above, but where the player
- * where appear under what conditions is a little complicated depending
- * on how the player exited the game. But if the elapsed time is greater than
- * the value below, player will always get returned to savebed location
- * location.
- *
- * Set to one hour as default
+ * The message to send to clients when the server calls cleanup (on crash, shutdown, restart and so on).
*/
-
-#define RESET_LOCATION_TIME 3600
+#define CLEANUP_MESSAGE "The server will likely restart within the minute. Our apologies."