Stop sharing requirement_unit_state_ereq().
[freeciv.git] / common / game.h
blobfd10a0e2094213619fa22ba8686938f22a6bc805
1 /***********************************************************************
2 Freeciv - Copyright (C) 1996 - A Kjeldberg, L Gregersen, P Unold
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2, or (at your option)
6 any later version.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12 ***********************************************************************/
13 #ifndef FC__GAME_H
14 #define FC__GAME_H
16 #ifdef __cplusplus
17 extern "C" {
18 #endif /* __cplusplus */
20 #include <time.h> /* time_t */
22 #ifdef FREECIV_HAVE_SYS_TIME_H
23 #include <sys/time.h>
24 #endif
26 /* utility */
27 #include "fcthread.h"
28 #include "shared.h"
29 #include "timing.h"
31 /* common */
32 #include "connection.h" /* struct conn_list */
33 #include "fc_types.h"
34 #include "player.h"
35 #include "packets.h"
36 #include "world_object.h"
38 enum debug_globals {
39 DEBUG_FERRIES,
40 DEBUG_LAST
43 enum city_names_mode {
44 CNM_NO_RESTRICTIONS = 0,
45 CNM_PLAYER_UNIQUE,
46 CNM_GLOBAL_UNIQUE,
47 CNM_NO_STEALING
50 enum barbarians_rate {
51 BARBS_DISABLED = 0,
52 BARBS_HUTS_ONLY,
53 BARBS_NORMAL,
54 BARBS_FREQUENT,
55 BARBS_HORDES
58 enum autosave_type {
59 AS_TURN = 0,
60 AS_GAME_OVER,
61 AS_QUITIDLE,
62 AS_INTERRUPT,
63 AS_TIMER
66 enum scorelog_level {
67 SL_ALL = 0,
68 SL_HUMANS
71 struct user_flag
73 char *name;
74 char *helptxt;
77 /* The number of turns that the first user needs to be attached to a
78 * player for that user to be ranked as that player */
79 #define TURNS_NEEDED_TO_RANK 10
81 struct civ_game {
82 struct packet_ruleset_control control;
83 char *ruleset_summary;
84 char *ruleset_description;
85 struct packet_scenario_info scenario;
86 struct packet_scenario_description scenario_desc;
87 struct packet_game_info info;
88 struct packet_calendar_info calendar;
89 struct packet_timeout_info tinfo;
91 struct government *default_government; /* may be overridden by nation */
92 struct government *government_during_revolution;
94 struct conn_list *all_connections; /* including not yet established */
95 struct conn_list *est_connections; /* all established client conns */
96 struct conn_list *glob_observers; /* global observers */
98 struct veteran_system *veteran; /* veteran system */
100 struct rgbcolor *plr_bg_color;
102 struct {
103 /* Items given to all players at game start.
104 * Client gets this info for help purposes only. */
105 int global_init_techs[MAX_NUM_TECH_LIST];
106 int global_init_buildings[MAX_NUM_BUILDING_LIST];
107 } rgame;
109 union {
110 struct {
111 /* Only used at the client (./client/). */
113 bool ruleset_init;
114 bool ruleset_ready;
115 } client;
117 struct {
118 /* Only used in the server (./ai/ and ./server/). */
120 /* Defined in the ruleset. */
122 /* Game settings & other data. */
124 enum city_names_mode allowed_city_names;
125 enum plrcolor_mode plrcolormode;
126 int aqueductloss;
127 bool auto_ai_toggle;
128 bool autoattack;
129 int autoupgrade_veteran_loss;
130 enum barbarians_rate barbarianrate;
131 int base_incite_cost;
132 int civilwarsize;
133 int conquercost;
134 int contactturns;
135 int diplchance;
136 int diplbulbcost;
137 int diplgoldcost;
138 int dispersion;
139 int end_turn;
140 bool endspaceship;
141 bool fixedlength;
142 bool foggedborders;
143 int freecost;
144 int incite_improvement_factor;
145 int incite_total_factor;
146 int incite_unit_factor;
147 int init_vis_radius_sq;
148 int kick_time;
149 int killunhomed; /* slowly killing unhomed units */
150 int maxconnectionsperhost;
151 int max_players;
152 char nationset[MAX_LEN_NAME];
153 int mgr_distance;
154 bool mgr_foodneeded;
155 int mgr_nationchance;
156 int mgr_turninterval;
157 int mgr_worldchance;
158 bool migration;
159 enum trait_dist_mode trait_dist;
160 int min_players;
161 bool natural_city_names;
162 int netwait;
163 int num_phases;
164 int occupychance;
165 int onsetbarbarian;
166 int pingtime;
167 int pingtimeout;
168 int ransom_gold;
169 int razechance;
170 unsigned revealmap;
171 int revolution_length;
172 bool threaded_save;
173 int save_compress_level;
174 enum fz_method save_compress_type;
175 int save_nturns;
176 int save_frequency;
177 unsigned autosaves; /* FIXME: char would be enough, but current settings.c code wants to
178 write sizeof(unsigned) bytes */
179 bool savepalace;
180 bool homecaughtunits;
181 char start_units[MAX_LEN_STARTUNIT];
182 bool start_city;
183 int start_year;
184 int techloss_forgiveness;
185 int techloss_restore;
186 int techlost_donor;
187 int techlost_recv;
188 int tcptimeout;
189 int techpenalty;
190 bool turnblock;
191 int unitwaittime; /* minimal time between two movements of a unit */
192 int upgrade_veteran_loss;
193 bool vision_reveal_tiles;
195 bool debug[DEBUG_LAST];
196 int timeoutint; /* increase timeout every N turns... */
197 int timeoutinc; /* ... by this amount ... */
198 int timeoutincmult; /* ... and multiply timeoutinc by this amount ... */
199 int timeoutintinc; /* ... and increase timeoutint by this amount */
200 int timeoutcounter; /* timeoutcounter - timeoutint = turns to next inc. */
201 int timeoutaddenemymove; /* minimum timeout after an enemy move is seen */
203 time_t last_ping;
204 struct timer *phase_timer; /* Time since seconds_to_phase_done was set. */
205 /* The game.info.phase_mode value indicates the phase mode currently in
206 * use. The "stored" value is a value the player can change; it won't
207 * take effect until the next turn. */
208 int phase_mode_stored;
209 struct timer *save_timer;
210 float turn_change_time;
211 char connectmsg[MAX_LEN_MSG];
212 char save_name[MAX_LEN_NAME];
213 bool scorelog;
214 enum scorelog_level scoreloglevel;
215 char scorefile[MAX_LEN_NAME];
216 int scoreturn; /* next make_history_report() */
217 int seed_setting;
218 int seed;
220 bool global_warming;
221 bool nuclear_winter;
223 bool fogofwar_old; /* as the fog_of_war bit get changed by setting
224 * the server we need to remember the old setting */
225 bool last_updated_year; /* last_updated is still counted as year in this
226 * game. */
227 char rulesetdir[MAX_LEN_NAME];
228 char demography[MAX_LEN_DEMOGRAPHY];
229 char allow_take[MAX_LEN_ALLOW_TAKE];
231 bool settings_gamestart_valid; /* Valid settings from the game start. */
233 struct rgbcolor_list *plr_colors;
235 struct {
236 int turns;
237 int max_size;
238 bool chat;
239 bool info;
240 } event_cache;
242 /* used by the map editor to control game_save. */
243 struct {
244 bool save_known; /* loading will just reveal the squares around
245 * cities and units */
246 bool save_starts; /* start positions will be auto generated */
247 bool save_private_map; /* FoW map; will be created if not saved */
248 } save_options;
250 struct {
251 char user_message[256];
252 char type[20];
253 } meta_info;
255 struct {
256 fc_mutex city_list;
257 } mutexes;
259 struct trait_limits default_traits[TRAIT_COUNT];
261 struct {
262 char *description_file;
263 char *nationlist;
264 char **embedded_nations;
265 size_t embedded_nations_count;
266 const char **allowed_govs;
267 char **nc_agovs;
268 size_t ag_count;
269 const char **allowed_terrains;
270 char **nc_aterrs;
271 size_t at_count;
272 const char **allowed_styles;
273 char **nc_astyles;
274 size_t as_count;
275 int named_teams;
276 } ruledit;
277 } server;
280 struct {
281 /* Function to be called in game_remove_unit when a unit is deleted. */
282 void (*unit_deallocate)(int unit_id);
283 } callbacks;
286 bool is_server(void);
287 void i_am_server(void);
288 void i_am_client(void);
289 static inline void i_am_tool(void)
291 i_am_server(); /* No difference between a tool and server at the moment */
294 void game_init(void);
295 void game_map_init(void);
296 void game_free(void);
297 void game_reset(void);
299 void game_ruleset_init(void);
300 void game_ruleset_free(void);
302 int civ_population(const struct player *pplayer);
303 struct city *game_city_by_name(const char *name);
304 struct city *game_city_by_number(int id);
306 struct unit *game_unit_by_number(int id);
308 void game_remove_unit(struct unit *punit);
309 void game_remove_city(struct city *pcity);
310 void initialize_globals(void);
312 bool is_player_phase(const struct player *pplayer, int phase);
314 const char *population_to_text(int thousand_citizen);
316 int generate_save_name(const char *format, char *buf, int buflen,
317 const char *reason);
319 void user_flag_init(struct user_flag *flag);
320 void user_flag_free(struct user_flag *flag);
322 int current_turn_timeout(void);
324 extern struct civ_game game;
325 extern struct world wld;
327 #define GAME_DEFAULT_SEED 0
328 #define GAME_MIN_SEED 0
329 #define GAME_MAX_SEED (MAX_UINT32 >> 1)
331 #define GAME_DEFAULT_GOLD 50
332 #define GAME_MIN_GOLD 0
333 #define GAME_MAX_GOLD 50000
335 #define GAME_DEFAULT_START_UNITS "ccwwx"
336 #define GAME_DEFAULT_START_CITY FALSE
338 #define GAME_DEFAULT_DISPERSION 0
339 #define GAME_MIN_DISPERSION 0
340 #define GAME_MAX_DISPERSION 10
342 #define GAME_DEFAULT_TECHLEVEL 0
343 #define GAME_MIN_TECHLEVEL 0
344 #define GAME_MAX_TECHLEVEL 100
346 #define GAME_DEFAULT_ANGRYCITIZEN TRUE
348 #define GAME_DEFAULT_END_TURN 5000
349 #define GAME_MIN_END_TURN 0
350 #define GAME_MAX_END_TURN 32767
352 #define GAME_DEFAULT_MIN_PLAYERS 1
353 #define GAME_MIN_MIN_PLAYERS 0
354 #define GAME_MAX_MIN_PLAYERS MAX_NUM_PLAYERS
356 #define GAME_DEFAULT_MAX_PLAYERS MAX_NUM_PLAYERS
357 #define GAME_MIN_MAX_PLAYERS 1
358 #define GAME_MAX_MAX_PLAYERS MAX_NUM_PLAYERS
360 #define GAME_DEFAULT_AIFILL 5
361 #define GAME_MIN_AIFILL 0
362 #define GAME_MAX_AIFILL GAME_MAX_MAX_PLAYERS
364 #define GAME_DEFAULT_NATIONSET ""
366 #define GAME_DEFAULT_FOODBOX 100
367 #define GAME_MIN_FOODBOX 1
368 #define GAME_MAX_FOODBOX 10000
370 #define GAME_DEFAULT_SHIELDBOX 100
371 #define GAME_MIN_SHIELDBOX 1
372 #define GAME_MAX_SHIELDBOX 10000
374 #define GAME_DEFAULT_SCIENCEBOX 100
375 #define GAME_MIN_SCIENCEBOX 1
376 #define GAME_MAX_SCIENCEBOX 10000
378 #define GAME_DEFAULT_DIPLBULBCOST 0
379 #define GAME_MIN_DIPLBULBCOST 0
380 #define GAME_MAX_DIPLBULBCOST 100
382 #define GAME_DEFAULT_DIPLGOLDCOST 0
383 #define GAME_MIN_DIPLGOLDCOST 0
384 #define GAME_MAX_DIPLGOLDCOST 100
386 #define GAME_DEFAULT_FOGOFWAR TRUE
388 #define GAME_DEFAULT_FOGGEDBORDERS FALSE
390 #define GAME_DEFAULT_GLOBAL_WARMING TRUE
391 #define GAME_DEFAULT_NUCLEAR_WINTER TRUE
393 #define GAME_DEFAULT_BORDERS BORDERS_ENABLED
395 #define GAME_DEFAULT_HAPPYBORDERS HB_NATIONAL
397 #define GAME_DEFAULT_DIPLOMACY DIPLO_FOR_ALL
399 #define GAME_DEFAULT_DIPLCHANCE 80
400 #define GAME_MIN_DIPLCHANCE 40
401 #define GAME_MAX_DIPLCHANCE 100
403 #define GAME_DEFAULT_FREECOST 0
404 #define GAME_MIN_FREECOST 0
405 #define GAME_MAX_FREECOST 100
407 #define GAME_DEFAULT_CONQUERCOST 0
408 #define GAME_MIN_CONQUERCOST 0
409 #define GAME_MAX_CONQUERCOST 100
411 #define GAME_DEFAULT_TECHLOSSFG -1
412 #define GAME_MIN_TECHLOSSFG -1
413 #define GAME_MAX_TECHLOSSFG 200
415 #define GAME_DEFAULT_TECHLOSSREST 50
416 #define GAME_MIN_TECHLOSSREST -1
417 #define GAME_MAX_TECHLOSSREST 100
419 #define GAME_DEFAULT_CITYMINDIST 2
420 #define GAME_MIN_CITYMINDIST 1
421 #define GAME_MAX_CITYMINDIST 11
423 #define GAME_DEFAULT_CIVILWARSIZE 10
424 #define GAME_MIN_CIVILWARSIZE 2 /* can't split an empire of 1 city */
425 #define GAME_MAX_CIVILWARSIZE 1000
427 #define GAME_DEFAULT_RESTRICTINFRA FALSE
428 #define GAME_DEFAULT_UNRPROTECTS TRUE
430 #define GAME_DEFAULT_CONTACTTURNS 20
431 #define GAME_MIN_CONTACTTURNS 0
432 #define GAME_MAX_CONTACTTURNS 100
434 #define GAME_DEFAULT_CELEBRATESIZE 3
436 #define GAME_DEFAULT_RAPTUREDELAY 1
437 #define GAME_MIN_RAPTUREDELAY 1
438 #define GAME_MAX_RAPTUREDELAY 99 /* 99 practicaly disables rapturing */
440 #define GAME_DEFAULT_DISASTERS 10
441 #define GAME_MIN_DISASTERS 0
442 #define GAME_MAX_DISASTERS 1000
444 #define GAME_DEFAULT_TRAIT_DIST_MODE TDM_FIXED
446 #define GAME_DEFAULT_SAVEPALACE TRUE
448 #define GAME_DEFAULT_HOMECAUGHTUNITS TRUE
450 #define GAME_DEFAULT_NATURALCITYNAMES TRUE
452 #define GAME_DEFAULT_MIGRATION FALSE
454 #define GAME_DEFAULT_MGR_TURNINTERVAL 5
455 #define GAME_MIN_MGR_TURNINTERVAL 1
456 #define GAME_MAX_MGR_TURNINTERVAL 100
458 #define GAME_DEFAULT_MGR_FOODNEEDED TRUE
460 /* definition of the migration distance in relation to the current city
461 * radius; 0 means that migration is possible if the second city is within
462 * the city radius */
463 #define GAME_DEFAULT_MGR_DISTANCE 0
464 #define GAME_MIN_MGR_DISTANCE (0 - CITY_MAP_MAX_RADIUS)
465 #define GAME_MAX_MGR_DISTANCE (1 + CITY_MAP_MAX_RADIUS)
467 #define GAME_DEFAULT_MGR_NATIONCHANCE 50
468 #define GAME_MIN_MGR_NATIONCHANCE 0
469 #define GAME_MAX_MGR_NATIONCHANCE 100
471 #define GAME_DEFAULT_MGR_WORLDCHANCE 10
472 #define GAME_MIN_MGR_WORLDCHANCE 0
473 #define GAME_MAX_MGR_WORLDCHANCE 100
475 #define GAME_DEFAULT_AQUEDUCTLOSS 0
476 #define GAME_MIN_AQUEDUCTLOSS 0
477 #define GAME_MAX_AQUEDUCTLOSS 100
479 #define GAME_DEFAULT_KILLSTACK TRUE
480 #define GAME_DEFAULT_KILLCITIZEN TRUE
482 #define GAME_DEFAULT_KILLUNHOMED 0
483 #define GAME_MIN_KILLUNHOMED 0
484 #define GAME_MAX_KILLUNHOMED 100
486 #define GAME_DEFAULT_TECHPENALTY 100
487 #define GAME_MIN_TECHPENALTY 0
488 #define GAME_MAX_TECHPENALTY 100
490 #define GAME_DEFAULT_TECHLOST_RECV 0
491 #define GAME_MIN_TECHLOST_RECV 0
492 #define GAME_MAX_TECHLOST_RECV 100
494 #define GAME_DEFAULT_TECHLOST_DONOR 0
495 #define GAME_MIN_TECHLOST_DONOR 0
496 #define GAME_MAX_TECHLOST_DONOR 100
498 #define GAME_DEFAULT_TEAM_POOLED_RESEARCH TRUE
500 #define GAME_DEFAULT_RAZECHANCE 20
501 #define GAME_MIN_RAZECHANCE 0
502 #define GAME_MAX_RAZECHANCE 100
504 #define GAME_DEFAULT_REVEALMAP REVEAL_MAP_NONE
506 #define GAME_DEFAULT_SCORELOG FALSE
507 #define GAME_DEFAULT_SCORELOGLEVEL SL_ALL
508 #define GAME_DEFAULT_SCOREFILE "freeciv-score.log"
510 /* Turns between reports is random between SCORETURN and (2 x SCORETURN).
511 * First report is shown at SCORETURN. As report is generated in the end of the turn,
512 * first report is already generated at (SCORETURN - 1) */
513 #define GAME_DEFAULT_SCORETURN 20
515 #define GAME_DEFAULT_VICTORY_CONDITIONS (1 << VC_SPACERACE | 1 << VC_ALLIED)
516 #define GAME_DEFAULT_END_SPACESHIP TRUE
518 #define GAME_DEFAULT_TURNBLOCK TRUE
520 #define GAME_DEFAULT_AUTO_AI_TOGGLE FALSE
522 #define GAME_DEFAULT_TIMEOUT 0
523 #define GAME_DEFAULT_FIRST_TIMEOUT -1
524 #define GAME_DEFAULT_TIMEOUTINT 0
525 #define GAME_DEFAULT_TIMEOUTINTINC 0
526 #define GAME_DEFAULT_TIMEOUTINC 0
527 #define GAME_DEFAULT_TIMEOUTINCMULT 1
528 #define GAME_DEFAULT_TIMEOUTADDEMOVE 0
529 #define GAME_DEFAULT_TIMEOUTCOUNTER 1
531 #define GAME_DEFAULT_MAXCONNECTIONSPERHOST 4
532 #define GAME_MIN_MAXCONNECTIONSPERHOST 0
533 #define GAME_MAX_MAXCONNECTIONSPERHOST MAX_NUM_CONNECTIONS
535 #define GAME_MIN_TIMEOUT -1
536 #define GAME_MAX_TIMEOUT 8639999
537 #define GAME_MIN_FIRST_TIMEOUT -1
538 #define GAME_MAX_FIRST_TIMEOUT GAME_MAX_TIMEOUT
540 #define GAME_MIN_UNITWAITTIME 0
541 #define GAME_MAX_UNITWAITTIME GAME_MAX_TIMEOUT
542 #define GAME_DEFAULT_UNITWAITTIME 0
544 #define GAME_DEFAULT_PHASE_MODE 0
546 #define GAME_DEFAULT_TCPTIMEOUT 10
547 #define GAME_MIN_TCPTIMEOUT 0
548 #define GAME_MAX_TCPTIMEOUT 120
550 #define GAME_DEFAULT_NETWAIT 4
551 #define GAME_MIN_NETWAIT 0
552 #define GAME_MAX_NETWAIT 20
554 #define GAME_DEFAULT_PINGTIME 20
555 #define GAME_MIN_PINGTIME 1
556 #define GAME_MAX_PINGTIME 1800
558 #define GAME_DEFAULT_PINGTIMEOUT 60
559 #define GAME_MIN_PINGTIMEOUT 60
560 #define GAME_MAX_PINGTIMEOUT 1800
562 #define GAME_DEFAULT_NOTRADESIZE 0
563 #define GAME_MIN_NOTRADESIZE 0
564 #define GAME_MAX_NOTRADESIZE 49
566 #define GAME_DEFAULT_TRADEWORLDRELPCT 50
567 #define GAME_MIN_TRADEWORLDRELPCT 0
568 #define GAME_MAX_TRADEWORLDRELPCT 100
570 #define GAME_DEFAULT_FULLTRADESIZE 1
571 #define GAME_MIN_FULLTRADESIZE 1
572 #define GAME_MAX_FULLTRADESIZE 50
574 #define GAME_DEFAULT_TRADING_TECH TRUE
575 #define GAME_DEFAULT_TRADING_GOLD TRUE
576 #define GAME_DEFAULT_TRADING_CITY TRUE
578 #define GAME_DEFAULT_TRADEMINDIST 9
579 #define GAME_MIN_TRADEMINDIST 1
580 #define GAME_MAX_TRADEMINDIST 999
582 #define GAME_DEFAULT_BARBARIANRATE BARBS_NORMAL
584 #define GAME_DEFAULT_ONSETBARBARIAN 60
585 #define GAME_MIN_ONSETBARBARIAN 1
586 #define GAME_MAX_ONSETBARBARIAN GAME_MAX_END_TURN
588 #define GAME_DEFAULT_OCCUPYCHANCE 0
589 #define GAME_MIN_OCCUPYCHANCE 0
590 #define GAME_MAX_OCCUPYCHANCE 100
592 #define GAME_DEFAULT_AUTOATTACK FALSE
594 #ifdef FREECIV_WEB
595 #define GAME_DEFAULT_RULESETDIR "classic"
596 #else /* FREECIV_WEB */
597 #define GAME_DEFAULT_RULESETDIR "civ2civ3"
598 #endif /* FREECIV_WEB */
600 #define GAME_DEFAULT_SAVE_NAME "freeciv"
601 #define GAME_DEFAULT_SAVETURNS 1
602 #define GAME_MIN_SAVETURNS 1
603 #define GAME_MAX_SAVETURNS 200
604 #define GAME_DEFAULT_SAVEFREQUENCY 15
605 #define GAME_MIN_SAVEFREQUENCY 2
606 #define GAME_MAX_SAVEFREQUENCY 1440
608 #ifdef FREECIV_WEB
609 #define GAME_DEFAULT_AUTOSAVES 0
610 #else /* FREECIV_WEB */
611 #define GAME_DEFAULT_AUTOSAVES (1 << AS_TURN | 1 << AS_GAME_OVER | 1 << AS_QUITIDLE | 1 << AS_INTERRUPT)
612 #endif /* FREECIV_WEB */
614 #define GAME_DEFAULT_THREADED_SAVE FALSE
616 #define GAME_DEFAULT_USER_META_MESSAGE ""
618 #define GAME_DEFAULT_SKILL_LEVEL AI_LEVEL_EASY
619 #define GAME_HARDCODED_DEFAULT_SKILL_LEVEL 3 /* that was 'easy' in old saves */
620 #define GAME_OLD_DEFAULT_SKILL_LEVEL 5 /* normal; for oldest save games */
622 #define GAME_DEFAULT_DEMOGRAPHY "NASRLPEMOCqrb"
623 #define GAME_DEFAULT_ALLOW_TAKE "HAhadOo"
625 #define GAME_DEFAULT_EVENT_CACHE_TURNS 1
626 #define GAME_MIN_EVENT_CACHE_TURNS 0
627 #define GAME_MAX_EVENT_CACHE_TURNS (GAME_MAX_END_TURN + 1)
629 #define GAME_DEFAULT_EVENT_CACHE_MAX_SIZE 256
630 #define GAME_MIN_EVENT_CACHE_MAX_SIZE 10
631 #define GAME_MAX_EVENT_CACHE_MAX_SIZE 20000
633 #define GAME_DEFAULT_EVENT_CACHE_CHAT TRUE
635 #define GAME_DEFAULT_EVENT_CACHE_INFO FALSE
637 #define GAME_DEFAULT_COMPRESS_LEVEL 6 /* if we have compression */
638 #define GAME_MIN_COMPRESS_LEVEL 1
639 #define GAME_MAX_COMPRESS_LEVEL 9
641 #if defined(FREECIV_HAVE_LIBLZMA)
642 # define GAME_DEFAULT_COMPRESS_TYPE FZ_XZ
643 #elif defined(FREECIV_HAVE_LIBZ)
644 # define GAME_DEFAULT_COMPRESS_TYPE FZ_ZLIB
645 #else
646 # define GAME_DEFAULT_COMPRESS_TYPE FZ_PLAIN
647 #endif
649 #define GAME_DEFAULT_ALLOWED_CITY_NAMES CNM_PLAYER_UNIQUE
651 #define GAME_DEFAULT_PLRCOLORMODE PLRCOL_PLR_ORDER
653 #define GAME_DEFAULT_REVOLENTYPE REVOLEN_RANDOM
654 #define GAME_DEFAULT_REVOLUTION_LENGTH 5
655 #define GAME_MIN_REVOLUTION_LENGTH 1
656 #define GAME_MAX_REVOLUTION_LENGTH 20
658 #define GAME_START_YEAR -4000
660 #define GAME_DEFAULT_AIRLIFTINGSTYLE AIRLIFTING_CLASSICAL
661 #define GAME_DEFAULT_PERSISTENTREADY PERSISTENTR_DISABLED
663 #define GAME_MAX_READ_RECURSION 10 /* max recursion for the read command */
665 #define GAME_DEFAULT_KICK_TIME 1800 /* 1800 seconds = 30 minutes. */
666 #define GAME_MIN_KICK_TIME 0 /* 0 = disabling. */
667 #define GAME_MAX_KICK_TIME 86400 /* 86400 seconds = 24 hours. */
669 /* Max distance from the capital used to calculat the bribe cost. */
670 #define GAME_UNIT_BRIBE_DIST_MAX 32
672 /* Max number of recursive transports. */
673 #define GAME_TRANSPORT_MAX_RECURSIVE 5
675 /* ruleset settings */
677 #define RS_MAX_VALUE 10000
679 /* TRANS: year label (Anno Domini) */
680 #define RS_DEFAULT_POS_YEAR_LABEL N_("AD")
681 /* TRANS: year label (Before Christ) */
682 #define RS_DEFAULT_NEG_YEAR_LABEL N_("BC")
684 #define RS_DEFAULT_ILLNESS_ON FALSE
686 #define RS_DEFAULT_ILLNESS_BASE_FACTOR 25
687 #define RS_MIN_ILLNESS_BASE_FACTOR 0
688 #define RS_MAX_ILLNESS_BASE_FACTOR RS_MAX_VALUE
690 #define RS_DEFAULT_ILLNESS_MIN_SIZE 3
691 #define RS_MIN_ILLNESS_MIN_SIZE 1
692 #define RS_MAX_ILLNESS_MIN_SIZE 100
694 #define RS_DEFAULT_ILLNESS_TRADE_INFECTION_PCT 50
695 #define RS_MIN_ILLNESS_TRADE_INFECTION_PCT 0
696 #define RS_MAX_ILLNESS_TRADE_INFECTION_PCT 500
698 #define RS_DEFAULT_ILLNESS_POLLUTION_PCT 50
699 #define RS_MIN_ILLNESS_POLLUTION_PCT 0
700 #define RS_MAX_ILLNESS_POLLUTION_PCT 500
702 #define RS_DEFAULT_CALENDAR_SKIP_0 TRUE
704 #define RS_DEFAULT_BORDER_RADIUS_SQ_CITY 17 /* city radius 4 */
705 #define RS_MIN_BORDER_RADIUS_SQ_CITY 0
706 #define RS_MAX_BORDER_RADIUS_SQ_CITY 401 /* city radius 20 */
708 #define RS_DEFAULT_BORDER_SIZE_EFFECT 1
709 #define RS_MIN_BORDER_SIZE_EFFECT 0
710 #define RS_MAX_BORDER_SIZE_EFFECT 100
712 #define RS_DEFAULT_BORDER_RADIUS_SQ_CITY_PERMANENT 0
713 #define RS_MIN_BORDER_RADIUS_SQ_CITY_PERMANENT (-CITY_MAP_MAX_RADIUS_SQ)
714 #define RS_MAX_BORDER_RADIUS_SQ_CITY_PERMANENT 401 /* city radius 20 */
716 #define RS_DEFAULT_INCITE_BASE_COST 1000
717 #define RS_MIN_INCITE_BASE_COST 0
718 #define RS_MAX_INCITE_BASE_COST RS_MAX_VALUE
720 #define RS_DEFAULT_INCITE_IMPROVEMENT_FCT 1
721 #define RS_MIN_INCITE_IMPROVEMENT_FCT 0
722 #define RS_MAX_INCITE_IMPROVEMENT_FCT RS_MAX_VALUE
724 #define RS_DEFAULT_INCITE_UNIT_FCT 2
725 #define RS_MIN_INCITE_UNIT_FCT 0
726 #define RS_MAX_INCITE_UNIT_FCT RS_MAX_VALUE
728 #define RS_DEFAULT_INCITE_TOTAL_FCT 100
729 #define RS_MIN_INCITE_TOTAL_FCT 0
730 #define RS_MAX_INCITE_TOTAL_FCT RS_MAX_VALUE
732 #define RS_DEFAULT_GRANARY_FOOD_INI 20
734 #define RS_DEFAULT_GRANARY_FOOD_INC 10
735 #define RS_MIN_GRANARY_FOOD_INC 0
736 #define RS_MAX_GRANARY_FOOD_INC RS_MAX_VALUE
738 #define RS_DEFAULT_CITY_CENTER_OUTPUT 0
739 #define RS_MIN_CITY_CENTER_OUTPUT 0
740 #define RS_MAX_CITY_CENTER_OUTPUT RS_MAX_VALUE
742 #define RS_DEFAULT_CITIES_MIN_DIST 2
743 #define RS_MIN_CITIES_MIN_DIST 1
744 #define RS_MAX_CITIES_MIN_DIST RS_MAX_VALUE
746 /* the constants CITY_MAP_*_RADIUS are defined in city.c */
747 #define RS_DEFAULT_CITY_RADIUS_SQ CITY_MAP_DEFAULT_RADIUS_SQ
748 #define RS_MIN_CITY_RADIUS_SQ CITY_MAP_MIN_RADIUS_SQ
749 #define RS_MAX_CITY_RADIUS_SQ CITY_MAP_MAX_RADIUS_SQ
751 #define RS_DEFAULT_VIS_RADIUS_SQ 5 /* city radius 2 */
752 #define RS_MIN_VIS_RADIUS_SQ 0
753 #define RS_MAX_VIS_RADIUS_SQ 401 /* city radius 20 */
755 #define RS_DEFAULT_BASE_POLLUTION -20
756 /* no min / max values as it can be set to high negative values to
757 * deactiveate pollution and high positive values to create much
758 * pollution */
760 #define RS_DEFAULT_HAPPY_COST 2
761 #define RS_MIN_HAPPY_COST 0
762 #define RS_MAX_HAPPY_COST 100
764 #define RS_DEFAULT_FOOD_COST 2
765 #define RS_MIN_FOOD_COST 0
766 #define RS_MAX_FOOD_COST 100
768 #define RS_DEFAULT_SLOW_INVASIONS TRUE
770 #define RS_DEFAULT_TIRED_ATTACK FALSE
772 #define RS_DEFAULT_BASE_BRIBE_COST 750
773 #define RS_MIN_BASE_BRIBE_COST 0
774 #define RS_MAX_BASE_BRIBE_COST RS_MAX_VALUE
776 #define RS_DEFAULT_RANSOM_GOLD 100
777 #define RS_MIN_RANSOM_GOLD 0
778 #define RS_MAX_RANSOM_GOLD RS_MAX_VALUE
780 #define RS_DEFAULT_PILLAGE_SELECT TRUE
782 #define RS_DEFAULT_UPGRADE_VETERAN_LOSS 0
783 #define RS_MIN_UPGRADE_VETERAN_LOSS 0
784 #define RS_MAX_UPGRADE_VETERAN_LOSS MAX_VET_LEVELS
786 #define RS_DEFAULT_TECH_UPKEEP_DIVIDER 100
787 #define RS_MIN_TECH_UPKEEP_DIVIDER 1
788 #define RS_MAX_TECH_UPKEEP_DIVIDER 100000
790 #define RS_DEFAULT_BASE_TECH_COST 20
791 #define RS_MIN_BASE_TECH_COST 0
792 #define RS_MAX_BASE_TECH_COST 200
794 #define RS_DEFAULT_FORCE_TRADE_ROUTE FALSE
795 #define RS_DEFAULT_FORCE_CAPTURE_UNITS FALSE
796 #define RS_DEFAULT_FORCE_BOMBARD FALSE
797 #define RS_DEFAULT_FORCE_EXPLODE_NUCLEAR FALSE
799 #define RS_DEFAULT_POISON_EMPTIES_FOOD_STOCK FALSE
800 #define RS_DEFAULT_BOMBARD_MAX_RANGE 1
802 #define RS_ACTION_NO_MAX_DISTANCE "unlimited"
804 #ifdef __cplusplus
806 #endif /* __cplusplus */
808 #endif /* FC__GAME_H */