ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/config.h
Revision: 1.46
Committed: Sun Jul 1 05:00:18 2007 UTC (16 years, 10 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.45: +11 -12 lines
Log Message:
- upgrade crossfire trt to the GPL version 3 (hopefully correctly).
- add a single file covered by the GNU Affero General Public License
  (which is not yet released, so I used the current draft, which is
  legally a bit wavy, but its likely better than nothing as it expresses
  direct intent by the authors, and we can upgrade as soon as it has been
  released).
  * this should ensure availability of source code for the server at least
    and hopefully also archetypes and maps even when modified versions
    are not being distributed, in accordance of section 13 of the agplv3.

File Contents

# Content
1 /*
2 * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
3 *
4 * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team
5 * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 *
8 * Crossfire TRT is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 *
21 * The authors can be reached via e-mail to <crossfire@schmorp.de>
22 */
23
24 /* This file contains various #defines that select various options.
25 * Some may not be desirable, and some just may not work.
26 *
27 * There are some options that are not selectable in this file which
28 * may not always be undesirable. An example would be certain
29 * treasures that you may not want to have available. To remove the
30 * activation code would make these items worthless - instead remove
31 * these from the treasure file. Some things to look for are:
32 *
33 * prepare_weapon, improve_*: Allow characters to enchant their own
34 * weapons
35 * ench_armour: Allow characters to enchant their armor.
36 *
37 * In theory, most of the values here should just be defaults, and
38 * everything here should just be selectable by different run time
39 * flags However, for some things, that would just be too messy.
40 */
41
42 /* There are 4 main sections to this file-
43 * Section 1 is feature selection (enabling/disabling certain features)
44 *
45 * Section 2 is compiler/machine dependant section (stuff that just
46 * makes the program compile and run properly, but don't change the
47 * behavior)
48 *
49 * Section 3 is location of certain files and other defaults. Things in
50 * this section generally do not need to be changed, and generally do
51 * not alter the play as perceived by players. However, you may
52 * have your own values you want to set here.
53 *
54 * Section 4 deals with save file related options.
55 */
56
57 /*******************************************************************
58 * SECTION 1 - FEATURES
59 *
60 * You don't have to change anything here to get a working program, but
61 * you may want to on personal preferance. Items are arranged
62 * alphabetically.
63 *
64 * Short list of features, and what to search for:
65 * DEBUG - more verbose message logging?
66 * MAP_CLIENT_X, MAP_CLIENT_Y - determines max size client map will receive
67 * MAX_TIME - how long an internal tick is in microseconds
68 * MANY_CORES - generate core dumps on gross errors instead of continuing?
69 * PARTY_KILL_LOG - stores party kill information
70 *
71 ***********************************************************************/
72
73 /* Use a very easy, non-challenging server?
74 * Defining the COZY_SERVER will make the server much less challenging:
75 * no stats loss on death, much less experience loss.
76 */
77 #define COZY_SERVER 1
78
79 /* Use balanced stat loss code?
80 * This code is a little more merciful with repeated stat loss at lower
81 * levels. Basically, the more stats you have lost, the less likely that
82 * you will lose more. Additionally, lower level characters are shown
83 * a lot more mercy (there are caps on how much of a stat you can lose too).
84 * On the nasty side, if you are higher level, you can lose mutiple stats
85 * _at_once_ and are shown less mercy when you die. But when you're higher
86 * level, it is much easier to buy back your stats with potions.
87 * Turn this on if you want death-based stat loss to be more merciful
88 * at low levels and more cruel at high levels.
89 * Only works when stats are depleted rather than lost. This option has
90 * no effect if you are using genuine stat loss.
91 *
92 * The BALSL_.. values control this behaviour.
93 * BALSL_NUMBER_LOSSES_RATIO determines the number of stats to lose.
94 * the character level is divided by that value, and that is how many
95 * stats are lost.
96 *
97 * BALSL_MAX_LOSS_RATIO puts the upper limit on depletion of a stat -
98 * basically, level/max_loss_ratio is the most a stat can be depleted.
99 *
100 * BALSL_LOSS_CHANCE_RATIO controls how likely it is a stat is depleted.
101 * The chance not to lose a stat is
102 * depleteness^2 / (depletedness^2+ level/ratio).
103 * ie, if the stats current depleted value is 2 and the character is level
104 * 15, the chance not to lose the stat is 4/(4+3) or 4/7. The higher the
105 * level, the more likely it is a stat can get really depleted, but
106 * this gets more offset as the stat gets more depleted.
107 *
108 */
109 /* GD */
110
111 #define BALSL_LOSS_CHANCE_RATIO 100
112 #define BALSL_NUMBER_LOSSES_RATIO 100
113 #define BALSL_MAX_LOSS_RATIO 100
114
115
116 /* Don't edit these values. They are configured in lib/settings. These are
117 Simply the defaults. */
118
119 #define BALANCED_STAT_LOSS FALSE
120 #define PERMANENT_EXPERIENCE_RATIO 25
121 #define DEATH_PENALTY_RATIO 20
122 #define DEATH_PENALTY_LEVEL 3
123 #define SET_TITLE TRUE
124 #define SIMPLE_EXP TRUE
125 #define SPELLPOINT_LEVEL_DEPEND TRUE
126 #define SPELL_ENCUMBRANCE TRUE
127 #define SPELL_FAILURE_EFFECTS FALSE
128 #define RESURRECTION FALSE
129 #define SEARCH_ITEMS TRUE
130 #define NOT_PERMADETH TRUE
131 #define EXPLORE_MODE FALSE
132 #define STAT_LOSS_ON_DEATH FALSE
133 #define PK_LUCK_PENALTY 1
134 #define SET_FRIENDLY_FIRE 5
135 #define ARMOR_MAX_ENCHANT 5
136 #define ARMOR_WEIGHT_REDUCTION 10
137 #define ARMOR_WEIGHT_LINEAR TRUE
138 #define ARMOR_SPEED_IMPROVEMENT 10
139 #define ARMOR_SPEED_LINEAR TRUE
140 #define CREATE_HOME_PORTALS FALSE
141
142 /* you can edit the ones below */
143
144 /* DEBUG generates copious amounts of output. I tend to change the CC options
145 * in the crosssite.def file if I want this. By default, you probably
146 * dont want this defined.
147 */
148 #ifndef DEBUG
149 # define DEBUG
150 #endif
151 /*
152 * This option creates more core files. In some areas, there are certain
153 * checks done to try and make the program more stable (ie, check
154 * parameter for null, return if it is). These checks are being done
155 * for things that should not happen (ie, being supplied a null parameter).
156 * What MANY_CORES does, is if one of these checks is true, it will
157 * dump core at that time, allowing for fairly easy tracking down of the
158 * problem. Better to fix problems than create thousands of checks.
159 */
160
161 #define MANY_CORES
162
163 /*
164 * This determines the maximum map size the client can request (and
165 * thus what the server will send to the client.
166 * Client can still request a smaller map size (for bandwidth reasons
167 * or display size of whatever else).
168 * The larger this number, the more cpu time and memory the server will
169 * need to spend to figure this out in addition to bandwidth needs.
170 * The server cpu time should be pretty trivial.
171 * There may be reasons to keep it smaller for the 'classic' crossfire
172 * experience which was 11x11. Big maps will likely make the same at
173 * least somewhat easier, but client will need to worry about lag
174 * more.
175 * I put support in for non square map updates in the define, but
176 * there very well might be things that break horribly if this is
177 * used. I figure it is easier to fix that if needed than go back
178 * at the future and have to redo a lot of stuff to support rectangular
179 * maps at that point.
180 *
181 * MSW 2001-05-28
182 */
183
184 #define MAP_CLIENT_X 31
185 #define MAP_CLIENT_Y 31
186
187 /*
188 * If you feel the game is too fast or too slow, change MAX_TIME.
189 * You can experiment with the 'speed <new_max_time> command first.
190 * The length of a tick is MAX_TIME microseconds. During a tick,
191 * players, monsters, or items with speed 1 can do one thing.
192 */
193
194 #define MAX_TIME 120000
195
196 /* Polymorph as it currently stands is unbalancing, so by default
197 * we have it disabled. It can be enabled and it works, but
198 * it can be abused in various ways.
199 */
200 #define NO_POLYMORPH
201
202
203 /* This determine how many entries are stored in the kill log. You
204 * can see this information with the 'party kills' command. More entries
205 * mean slower performance and more memory.
206 */
207 #define PARTY_KILL_LOG 40
208
209 /*
210 * The PERM_EXP values adjust the behaviour of permenent experience. - if
211 * the setting permanent_experience_percentage is zero, these values have
212 * no meaning. The value in the settings file is the percentage of the
213 * experience that is permenent, the rest could be lost on death. When dying,
214 * the greatest amount of non-permenent exp it is possible to lose at one time
215 * is PERM_EXP_MAX_LOSS_RATIO - this is calculated as
216 * total exp - perm exp * loss ratio. The gain ratio is how much of experienced
217 * experience goes to the permanent value. This does not detract from total
218 * exp gain (ie, if you gained 100 exp, 100 would go to the skill total and
219 * 10 to the permanent value).
220 *
221 * A few thoughts on these default value (by MSW)
222 * gain ratio is pretty much meaningless until exp has been lost, as until
223 * that poin, the value in the settings file will be used.
224 * It is also impossible for the exp to actually be reduced to the permanent
225 * exp ratio - since the loss ratio is .5, it will just get closer and
226 * closer. However, after about half a dozen hits, pretty much all the
227 * exp that can be lost has been lost, and after that, only minor loss
228 * will occur.
229 */
230 /* GD */
231
232 #define PERM_EXP_GAIN_RATIO 0.10f
233 #define PERM_EXP_MAX_LOSS_RATIO 0.50f
234
235 /* Enable the new material code - it needs some work. You can
236 * enable this, and things will work, just you'll see a whole
237 * bunch more materials show up, and thus a whole bunch more materials
238 * in your inventory, and the sorting for them isn't really good.
239 */
240
241 /*
242 #define NEW_MATERIAL_CODE
243 */
244
245
246 /***********************************************************************
247 * Section 3
248 *
249 * General file and other defaults that don't need to be changed, and
250 * do not change gameplay as percieved by players much. Some options
251 * may affect memory consumption however.
252 *
253 * Values:
254 *
255 * CSPORT - port to use for new client/server
256 * DMFILE - file with dm/wizard access lists
257 * LOGFILE - where to log if using -daemon option
258 * MAP_ - various map timeout and swapping parameters
259 * MAX_OBJECTS - how many objects to keep in memory.
260 * MAX_OBJECTS_LWM - only swap maps out if below that value
261 * MOTD - message of the day - printed each time someone joins the game
262 * PERM_FILE - limit play times
263 * SHUTDOWN - used when shutting down the server
264 * SOCKETBUFSIZE - size of buffer used internally by the server for storing
265 * backlogged messages.
266 * TMPDIR - directory to use for temp files
267 * UNIQUE_DIR - directory to put unique item files into
268 ***********************************************************************
269 */
270
271 /* CSPORT is the port used for the new client/server code. Change
272 * if desired. Only of relevance if ERIC_SERVER is set above
273 */
274 #define CSPORT 13327 /* old port + 1 */
275
276 /*
277 * DMFILE
278 * A file containing valid names that can be dm, one on each line. See
279 * example dm_file for syntax help.
280 */
281 #ifndef DMFILE
282 #define DMFILE "dm_file"
283 #endif
284
285 /* LOGFILE specifies which file to log to when playing with the
286 * -daemon option.
287 */
288 #ifndef LOGFILE
289 #define LOGFILE "/var/log/crossfire/logfile"
290 #endif
291
292 /*
293 * If you want to have a Message Of The Day file, define MOTD to be
294 * the file with the message. If the file doesn't exist or if it
295 * is empty, no message will be displayed.
296 * (It resides in the CONFDIR directory)
297 */
298 #define MOTD "motd"
299
300 /*
301 * You can restrict playing in certain times by creating a PERMIT_FILE
302 * in CONFDIR. See the sample for usage notes.
303 */
304 #define PERM_FILE "forbid"
305
306 /*
307 * If you want to take the game down while installing new versions, or
308 * for other reasons, put a message into the SHUTDOWN_FILE file.
309 * Remember to delete it when you open the game again.
310 * (It resides in the CONFDIR directory)
311 */
312 #ifndef SHUTDOWN_FILE
313 #define SHUTDOWN_FILE "shutdown"
314 #endif
315
316 /*
317 * SOCKETBUFSIZE is the size of the buffer used internally by the server for
318 * storing backlogged messages for the client. This is not operating system
319 * buffers or the like. This amount is used per connection (client).
320 * This buffer is in addition to OS buffers, so it may not need to be very
321 * large. When the OS buffer and this buffer is exhausted, the server
322 * will drop the client connection for falling too far behind. So if
323 * you have very slow client connections, a larger value may be
324 * warranted.
325 */
326 #define SOCKETBUFSIZE 256*1024
327
328 /*
329 * Your tmp-directory should be large enough to hold the uncompressed
330 * map-files for all who are playing. Local to 'lib' directory.
331 */
332 #define TMPDIR "tmp"
333
334 /* Directory to use for unique items. This is placed into the 'lib'
335 * directory. Changing this will cause any old unique items file
336 * not to be used.
337 */
338 #define UNIQUE_DIR "unique-items"
339
340 /*
341 * These defines tells where, relative to LIBDIR, the maps, the map-index,
342 * archetypes highscore and treaures files and directories can be found.
343 */
344
345 #define MAPDIR "maps"
346 #define TEMPLATE_DIR "template-maps"
347 #define ARCHETYPES "archetypes"
348 #define REGIONS "regions"
349 #define HIGHSCORE "highscore"
350 #define TREASURES "treasures"
351
352 #define HIGHSCORE_LENGTH 1000 /* How many entries there are room for */
353
354 #define MAXSTRING 20
355
356 #define COMMAND_HASH_SIZE 107 /* If you change this, delete all characters :) */
357
358
359
360 /***********************************************************************
361 * Section 4 - save player options.
362 *
363 * There are a lot of things that deal with the save files, and what
364 * gets saved with them, so I put them in there own section.
365 *
366 ***********************************************************************/
367
368 /*
369 * If you want the players to be able to save their characters between
370 * games, define SAVE_PLAYER and set PLAYERDIR to the directories
371 * where the player-files will be put.
372 * Remember to create the directory (make install will do that though).
373 *
374 * If you intend to run a central server, and not allow the players to
375 * start their own crossfire, you won't need to define this.
376 *
377 */
378
379 #ifndef PLAYERDIR
380 # define PLAYERDIR "players"
381 #endif
382
383 /*
384 * If you have defined SAVE_PLAYER, you might want to change this, too.
385 * This is the access rights for the players savefiles.
386 * Given that crossfire runs in a client/server model, there should
387 * be no issue setting these to be quite restrictive (600 and 700).
388 * Before client/server, multiple people might run the executable,
389 * thus requiring that the server be setuid/setgid, and more generous
390 * permisisons needed.
391 * SAVE_MODE is permissions for the files, SAVE_DIR_MODE is permission
392 * for nay directories created.
393 */
394 /* IMPORTANT: there is a race during saving, where the umask is being applied */
395 #define SAVE_MODE 0660
396 #define SAVE_DIR_MODE 0770
397
398 /*
399 * The message to send to clients when the server calls cleanup (on crash, shutdown, restart and so on).
400 */
401 #define CLEANUP_MESSAGE "The server will likely restart within the minute. Our apologies."
402