Use linear-gradient instead of gtk css extension in gtk3.22-client theme
[freeciv.git] / common / game.h
blob72780e197de31e0a0b3a6c85d18bb4465811c406
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 "map_types.h"
35 #include "player.h"
36 #include "packets.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_timeout_info tinfo;
90 struct government *default_government; /* may be overridden by nation */
91 struct government *government_during_revolution;
93 struct conn_list *all_connections; /* including not yet established */
94 struct conn_list *est_connections; /* all established client conns */
95 struct conn_list *glob_observers; /* global observers */
97 struct veteran_system *veteran; /* veteran system */
99 struct rgbcolor *plr_bg_color;
101 struct {
102 /* Items given to all players at game start.
103 * Client gets this info for help purposes only. */
104 int global_init_techs[MAX_NUM_TECH_LIST];
105 int global_init_buildings[MAX_NUM_BUILDING_LIST];
106 } rgame;
108 struct civ_map map;
110 union {
111 struct {
112 /* Only used at the client (./client/). */
114 bool ruleset_init;
115 bool ruleset_ready;
116 } client;
118 struct {
119 /* Only used in the server (./ai/ and ./server/). */
121 /* Defined in the ruleset. */
123 /* Game settings & other data. */
125 enum city_names_mode allowed_city_names;
126 enum plrcolor_mode plrcolormode;
127 int aqueductloss;
128 bool auto_ai_toggle;
129 bool autoattack;
130 int autoupgrade_veteran_loss;
131 enum barbarians_rate barbarianrate;
132 int base_incite_cost;
133 int civilwarsize;
134 int conquercost;
135 int contactturns;
136 int diplchance;
137 int diplbulbcost;
138 int diplgoldcost;
139 int dispersion;
140 int end_turn;
141 bool endspaceship;
142 bool fixedlength;
143 bool foggedborders;
144 int freecost;
145 int incite_improvement_factor;
146 int incite_total_factor;
147 int incite_unit_factor;
148 int init_vis_radius_sq;
149 int kick_time;
150 int killunhomed; /* slowly killing unhomed units */
151 int maxconnectionsperhost;
152 int max_players;
153 char nationset[MAX_LEN_NAME];
154 int mgr_distance;
155 bool mgr_foodneeded;
156 int mgr_nationchance;
157 int mgr_turninterval;
158 int mgr_worldchance;
159 bool migration;
160 enum trait_dist_mode trait_dist;
161 int min_players;
162 bool natural_city_names;
163 int netwait;
164 int num_phases;
165 int occupychance;
166 int onsetbarbarian;
167 int pingtime;
168 int pingtimeout;
169 int ransom_gold;
170 int razechance;
171 unsigned revealmap;
172 int revolution_length;
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 bool user_message_set;
252 char user_message[256];
253 char type[20];
254 } meta_info;
256 struct {
257 fc_mutex city_list;
258 } mutexes;
260 struct trait_limits default_traits[TRAIT_COUNT];
262 struct {
263 char *description_file;
264 char *nationlist;
265 char **embedded_nations;
266 size_t embedded_nations_count;
267 const char **allowed_govs;
268 char **nc_agovs;
269 size_t ag_count;
270 const char **allowed_terrains;
271 char **nc_aterrs;
272 size_t at_count;
273 const char **allowed_styles;
274 char **nc_astyles;
275 size_t as_count;
276 int named_teams;
277 } ruledit;
278 } server;
281 struct {
282 /* Function to be called in game_remove_unit when a unit is deleted. */
283 void (*unit_deallocate)(int unit_id);
284 } callbacks;
287 bool is_server(void);
288 void i_am_server(void);
289 void i_am_client(void);
291 void game_init(void);
292 void game_map_init(void);
293 void game_free(void);
294 void game_reset(void);
296 void game_ruleset_init(void);
297 void game_ruleset_free(void);
299 int civ_population(const struct player *pplayer);
300 struct city *game_city_by_name(const char *name);
301 struct city *game_city_by_number(int id);
303 struct unit *game_unit_by_number(int id);
305 void game_remove_unit(struct unit *punit);
306 void game_remove_city(struct city *pcity);
307 void initialize_globals(void);
309 bool is_player_phase(const struct player *pplayer, int phase);
311 const char *population_to_text(int thousand_citizen);
313 int generate_save_name(const char *format, char *buf, int buflen,
314 const char *reason);
316 void user_flag_init(struct user_flag *flag);
317 void user_flag_free(struct user_flag *flag);
319 int current_turn_timeout(void);
321 extern struct civ_game game;
323 #define GAME_DEFAULT_SEED 0
324 #define GAME_MIN_SEED 0
325 #define GAME_MAX_SEED (MAX_UINT32 >> 1)
327 #define GAME_DEFAULT_GOLD 50
328 #define GAME_MIN_GOLD 0
329 #define GAME_MAX_GOLD 50000
331 #define GAME_DEFAULT_START_UNITS "ccwwx"
332 #define GAME_DEFAULT_START_CITY FALSE
334 #define GAME_DEFAULT_DISPERSION 0
335 #define GAME_MIN_DISPERSION 0
336 #define GAME_MAX_DISPERSION 10
338 #define GAME_DEFAULT_TECHLEVEL 0
339 #define GAME_MIN_TECHLEVEL 0
340 #define GAME_MAX_TECHLEVEL 100
342 #define GAME_DEFAULT_ANGRYCITIZEN TRUE
344 #define GAME_DEFAULT_END_TURN 5000
345 #define GAME_MIN_END_TURN 0
346 #define GAME_MAX_END_TURN 32767
348 #define GAME_DEFAULT_MIN_PLAYERS 1
349 #define GAME_MIN_MIN_PLAYERS 0
350 #define GAME_MAX_MIN_PLAYERS MAX_NUM_PLAYERS
352 #define GAME_DEFAULT_MAX_PLAYERS MAX_NUM_PLAYERS
353 #define GAME_MIN_MAX_PLAYERS 1
354 #define GAME_MAX_MAX_PLAYERS MAX_NUM_PLAYERS
356 #define GAME_DEFAULT_AIFILL 5
357 #define GAME_MIN_AIFILL 0
358 #define GAME_MAX_AIFILL GAME_MAX_MAX_PLAYERS
360 #define GAME_DEFAULT_NATIONSET ""
362 #define GAME_DEFAULT_FOODBOX 100
363 #define GAME_MIN_FOODBOX 1
364 #define GAME_MAX_FOODBOX 10000
366 #define GAME_DEFAULT_SHIELDBOX 100
367 #define GAME_MIN_SHIELDBOX 1
368 #define GAME_MAX_SHIELDBOX 10000
370 #define GAME_DEFAULT_SCIENCEBOX 100
371 #define GAME_MIN_SCIENCEBOX 1
372 #define GAME_MAX_SCIENCEBOX 10000
374 #define GAME_DEFAULT_DIPLBULBCOST 0
375 #define GAME_MIN_DIPLBULBCOST 0
376 #define GAME_MAX_DIPLBULBCOST 100
378 #define GAME_DEFAULT_DIPLGOLDCOST 0
379 #define GAME_MIN_DIPLGOLDCOST 0
380 #define GAME_MAX_DIPLGOLDCOST 100
382 #define GAME_DEFAULT_FOGOFWAR TRUE
384 #define GAME_DEFAULT_FOGGEDBORDERS FALSE
386 #define GAME_DEFAULT_GLOBAL_WARMING TRUE
387 #define GAME_DEFAULT_NUCLEAR_WINTER TRUE
389 #define GAME_DEFAULT_BORDERS BORDERS_ENABLED
391 #define GAME_DEFAULT_HAPPYBORDERS HB_NATIONAL
393 #define GAME_DEFAULT_DIPLOMACY DIPLO_FOR_ALL
395 #define GAME_DEFAULT_DIPLCHANCE 80
396 #define GAME_MIN_DIPLCHANCE 40
397 #define GAME_MAX_DIPLCHANCE 100
399 #define GAME_DEFAULT_FREECOST 0
400 #define GAME_MIN_FREECOST 0
401 #define GAME_MAX_FREECOST 100
403 #define GAME_DEFAULT_CONQUERCOST 0
404 #define GAME_MIN_CONQUERCOST 0
405 #define GAME_MAX_CONQUERCOST 100
407 #define GAME_DEFAULT_TECHLOSSFG -1
408 #define GAME_MIN_TECHLOSSFG -1
409 #define GAME_MAX_TECHLOSSFG 200
411 #define GAME_DEFAULT_TECHLOSSREST 50
412 #define GAME_MIN_TECHLOSSREST -1
413 #define GAME_MAX_TECHLOSSREST 100
415 #define GAME_DEFAULT_CITYMINDIST 2
416 #define GAME_MIN_CITYMINDIST 1
417 #define GAME_MAX_CITYMINDIST 11
419 #define GAME_DEFAULT_CIVILWARSIZE 10
420 #define GAME_MIN_CIVILWARSIZE 2 /* can't split an empire of 1 city */
421 #define GAME_MAX_CIVILWARSIZE 1000
423 #define GAME_DEFAULT_RESTRICTINFRA FALSE
424 #define GAME_DEFAULT_UNRPROTECTS TRUE
426 #define GAME_DEFAULT_CONTACTTURNS 20
427 #define GAME_MIN_CONTACTTURNS 0
428 #define GAME_MAX_CONTACTTURNS 100
430 #define GAME_DEFAULT_CELEBRATESIZE 3
432 #define GAME_DEFAULT_RAPTUREDELAY 1
433 #define GAME_MIN_RAPTUREDELAY 1
434 #define GAME_MAX_RAPTUREDELAY 99 /* 99 practicaly disables rapturing */
436 #define GAME_DEFAULT_DISASTERS 10
437 #define GAME_MIN_DISASTERS 0
438 #define GAME_MAX_DISASTERS 1000
440 #define GAME_DEFAULT_TRAIT_DIST_MODE TDM_FIXED
442 #define GAME_DEFAULT_SAVEPALACE TRUE
444 #define GAME_DEFAULT_HOMECAUGHTUNITS TRUE
446 #define GAME_DEFAULT_NATURALCITYNAMES TRUE
448 #define GAME_DEFAULT_MIGRATION FALSE
450 #define GAME_DEFAULT_MGR_TURNINTERVAL 5
451 #define GAME_MIN_MGR_TURNINTERVAL 1
452 #define GAME_MAX_MGR_TURNINTERVAL 100
454 #define GAME_DEFAULT_MGR_FOODNEEDED TRUE
456 /* definition of the migration distance in relation to the current city
457 * radius; 0 means that migration is possible if the second city is within
458 * the city radius */
459 #define GAME_DEFAULT_MGR_DISTANCE 0
460 #define GAME_MIN_MGR_DISTANCE (0 - CITY_MAP_MAX_RADIUS)
461 #define GAME_MAX_MGR_DISTANCE (1 + CITY_MAP_MAX_RADIUS)
463 #define GAME_DEFAULT_MGR_NATIONCHANCE 50
464 #define GAME_MIN_MGR_NATIONCHANCE 0
465 #define GAME_MAX_MGR_NATIONCHANCE 100
467 #define GAME_DEFAULT_MGR_WORLDCHANCE 10
468 #define GAME_MIN_MGR_WORLDCHANCE 0
469 #define GAME_MAX_MGR_WORLDCHANCE 100
471 #define GAME_DEFAULT_AQUEDUCTLOSS 0
472 #define GAME_MIN_AQUEDUCTLOSS 0
473 #define GAME_MAX_AQUEDUCTLOSS 100
475 #define GAME_DEFAULT_KILLSTACK TRUE
476 #define GAME_DEFAULT_KILLCITIZEN TRUE
478 #define GAME_DEFAULT_KILLUNHOMED 0
479 #define GAME_MIN_KILLUNHOMED 0
480 #define GAME_MAX_KILLUNHOMED 100
482 #define GAME_DEFAULT_TECHPENALTY 100
483 #define GAME_MIN_TECHPENALTY 0
484 #define GAME_MAX_TECHPENALTY 100
486 #define GAME_DEFAULT_TECHLOST_RECV 0
487 #define GAME_MIN_TECHLOST_RECV 0
488 #define GAME_MAX_TECHLOST_RECV 100
490 #define GAME_DEFAULT_TECHLOST_DONOR 0
491 #define GAME_MIN_TECHLOST_DONOR 0
492 #define GAME_MAX_TECHLOST_DONOR 100
494 #define GAME_DEFAULT_TEAM_POOLED_RESEARCH TRUE
496 #define GAME_DEFAULT_RAZECHANCE 20
497 #define GAME_MIN_RAZECHANCE 0
498 #define GAME_MAX_RAZECHANCE 100
500 #define GAME_DEFAULT_REVEALMAP REVEAL_MAP_NONE
502 #define GAME_DEFAULT_SCORELOG FALSE
503 #define GAME_DEFAULT_SCORELOGLEVEL SL_ALL
504 #define GAME_DEFAULT_SCOREFILE "freeciv-score.log"
506 /* Turns between reports is random between SCORETURN and (2 x SCORETURN).
507 * First report is shown at SCORETURN. As report is generated in the end of the turn,
508 * first report is already generated at (SCORETURN - 1) */
509 #define GAME_DEFAULT_SCORETURN 20
511 #define GAME_DEFAULT_VICTORY_CONDITIONS (1 << VC_SPACERACE | 1 << VC_ALLIED)
512 #define GAME_DEFAULT_END_SPACESHIP TRUE
514 #define GAME_DEFAULT_TURNBLOCK TRUE
516 #define GAME_DEFAULT_AUTO_AI_TOGGLE FALSE
518 #define GAME_DEFAULT_TIMEOUT 0
519 #define GAME_DEFAULT_FIRST_TIMEOUT -1
520 #define GAME_DEFAULT_TIMEOUTINT 0
521 #define GAME_DEFAULT_TIMEOUTINTINC 0
522 #define GAME_DEFAULT_TIMEOUTINC 0
523 #define GAME_DEFAULT_TIMEOUTINCMULT 1
524 #define GAME_DEFAULT_TIMEOUTADDEMOVE 0
525 #define GAME_DEFAULT_TIMEOUTCOUNTER 1
527 #define GAME_DEFAULT_MAXCONNECTIONSPERHOST 4
528 #define GAME_MIN_MAXCONNECTIONSPERHOST 0
529 #define GAME_MAX_MAXCONNECTIONSPERHOST MAX_NUM_CONNECTIONS
531 #define GAME_MIN_TIMEOUT -1
532 #define GAME_MAX_TIMEOUT 8639999
533 #define GAME_MIN_FIRST_TIMEOUT -1
534 #define GAME_MAX_FIRST_TIMEOUT GAME_MAX_TIMEOUT
536 #define GAME_MIN_UNITWAITTIME 0
537 #define GAME_MAX_UNITWAITTIME GAME_MAX_TIMEOUT
538 #define GAME_DEFAULT_UNITWAITTIME 0
540 #define GAME_DEFAULT_PHASE_MODE 0
542 #define GAME_DEFAULT_TCPTIMEOUT 10
543 #define GAME_MIN_TCPTIMEOUT 0
544 #define GAME_MAX_TCPTIMEOUT 120
546 #define GAME_DEFAULT_NETWAIT 4
547 #define GAME_MIN_NETWAIT 0
548 #define GAME_MAX_NETWAIT 20
550 #define GAME_DEFAULT_PINGTIME 20
551 #define GAME_MIN_PINGTIME 1
552 #define GAME_MAX_PINGTIME 1800
554 #define GAME_DEFAULT_PINGTIMEOUT 60
555 #define GAME_MIN_PINGTIMEOUT 60
556 #define GAME_MAX_PINGTIMEOUT 1800
558 #define GAME_DEFAULT_NOTRADESIZE 0
559 #define GAME_MIN_NOTRADESIZE 0
560 #define GAME_MAX_NOTRADESIZE 49
562 #define GAME_DEFAULT_FULLTRADESIZE 1
563 #define GAME_MIN_FULLTRADESIZE 1
564 #define GAME_MAX_FULLTRADESIZE 50
566 #define GAME_DEFAULT_TRADING_TECH TRUE
567 #define GAME_DEFAULT_TRADING_GOLD TRUE
568 #define GAME_DEFAULT_TRADING_CITY TRUE
570 #define GAME_DEFAULT_TRADEMINDIST 9
571 #define GAME_MIN_TRADEMINDIST 1
572 #define GAME_MAX_TRADEMINDIST 999
574 #define GAME_DEFAULT_BARBARIANRATE BARBS_NORMAL
576 #define GAME_DEFAULT_ONSETBARBARIAN 60
577 #define GAME_MIN_ONSETBARBARIAN 0
578 #define GAME_MAX_ONSETBARBARIAN GAME_MAX_END_TURN
580 #define GAME_DEFAULT_OCCUPYCHANCE 0
581 #define GAME_MIN_OCCUPYCHANCE 0
582 #define GAME_MAX_OCCUPYCHANCE 100
584 #define GAME_DEFAULT_AUTOATTACK FALSE
586 #ifdef FREECIV_WEB
587 #define GAME_DEFAULT_RULESETDIR "fcweb"
588 #else /* FREECIV_WEB */
589 #define GAME_DEFAULT_RULESETDIR "classic"
590 #endif /* FREECIV_WEB */
592 #define GAME_DEFAULT_SAVE_NAME "freeciv"
593 #define GAME_DEFAULT_SAVETURNS 1
594 #define GAME_MIN_SAVETURNS 1
595 #define GAME_MAX_SAVETURNS 200
596 #define GAME_DEFAULT_SAVEFREQUENCY 15
597 #define GAME_MIN_SAVEFREQUENCY 2
598 #define GAME_MAX_SAVEFREQUENCY 1440
600 #define GAME_DEFAULT_AUTOSAVES (1 << AS_TURN | 1 << AS_GAME_OVER | 1 << AS_QUITIDLE | 1 << AS_INTERRUPT)
602 #define GAME_DEFAULT_SKILL_LEVEL AI_LEVEL_EASY
603 #define GAME_HARDCODED_DEFAULT_SKILL_LEVEL 3 /* that was 'easy' in old saves */
604 #define GAME_OLD_DEFAULT_SKILL_LEVEL 5 /* normal; for oldest save games */
606 #define GAME_DEFAULT_DEMOGRAPHY "NASRLPEMOCqrb"
607 #define GAME_DEFAULT_ALLOW_TAKE "HAhadOo"
609 #define GAME_DEFAULT_EVENT_CACHE_TURNS 1
610 #define GAME_MIN_EVENT_CACHE_TURNS 0
611 #define GAME_MAX_EVENT_CACHE_TURNS (GAME_MAX_END_TURN + 1)
613 #define GAME_DEFAULT_EVENT_CACHE_MAX_SIZE 256
614 #define GAME_MIN_EVENT_CACHE_MAX_SIZE 10
615 #define GAME_MAX_EVENT_CACHE_MAX_SIZE 20000
617 #define GAME_DEFAULT_EVENT_CACHE_CHAT TRUE
619 #define GAME_DEFAULT_EVENT_CACHE_INFO FALSE
621 #define GAME_DEFAULT_COMPRESS_LEVEL 6 /* if we have compression */
622 #define GAME_MIN_COMPRESS_LEVEL 1
623 #define GAME_MAX_COMPRESS_LEVEL 9
625 #if defined(FREECIV_HAVE_LIBBZ2)
626 # define GAME_DEFAULT_COMPRESS_TYPE FZ_BZIP2
627 #elif defined(FREECIV_HAVE_LIBZ)
628 # define GAME_DEFAULT_COMPRESS_TYPE FZ_ZLIB
629 #elif defined(FREECIV_HAVE_LIBLZMA)
630 # define GAME_DEFAULT_COMPRESS_TYPE FZ_XZ
631 #else
632 # define GAME_DEFAULT_COMPRESS_TYPE FZ_PLAIN
633 #endif
635 #define GAME_DEFAULT_ALLOWED_CITY_NAMES CNM_PLAYER_UNIQUE
637 #define GAME_DEFAULT_PLRCOLORMODE PLRCOL_PLR_ORDER
639 #define GAME_DEFAULT_REVOLENTYPE REVOLEN_RANDOM
640 #define GAME_DEFAULT_REVOLUTION_LENGTH 5
641 #define GAME_MIN_REVOLUTION_LENGTH 1
642 #define GAME_MAX_REVOLUTION_LENGTH 20
644 #define GAME_START_YEAR -4000
646 #define GAME_DEFAULT_AIRLIFTINGSTYLE AIRLIFTING_CLASSICAL
647 #define GAME_DEFAULT_PERSISTENTREADY PERSISTENTR_DISABLED
649 #define GAME_MAX_READ_RECURSION 10 /* max recursion for the read command */
651 #define GAME_DEFAULT_KICK_TIME 1800 /* 1800 seconds = 30 minutes. */
652 #define GAME_MIN_KICK_TIME 0 /* 0 = disabling. */
653 #define GAME_MAX_KICK_TIME 86400 /* 86400 seconds = 24 hours. */
655 /* Max distance from the capital used to calculat the bribe cost. */
656 #define GAME_UNIT_BRIBE_DIST_MAX 32
658 /* Max number of recursive transports. */
659 #define GAME_TRANSPORT_MAX_RECURSIVE 5
661 /* ruleset settings */
663 #define RS_MAX_VALUE 10000
665 /* TRANS: year label (Anno Domini) */
666 #define RS_DEFAULT_POS_YEAR_LABEL N_("AD")
667 /* TRANS: year label (Before Christ) */
668 #define RS_DEFAULT_NEG_YEAR_LABEL N_("BC")
670 #define RS_DEFAULT_ILLNESS_ON FALSE
672 #define RS_DEFAULT_ILLNESS_BASE_FACTOR 25
673 #define RS_MIN_ILLNESS_BASE_FACTOR 0
674 #define RS_MAX_ILLNESS_BASE_FACTOR RS_MAX_VALUE
676 #define RS_DEFAULT_ILLNESS_MIN_SIZE 3
677 #define RS_MIN_ILLNESS_MIN_SIZE 1
678 #define RS_MAX_ILLNESS_MIN_SIZE 100
680 #define RS_DEFAULT_ILLNESS_TRADE_INFECTION_PCT 50
681 #define RS_MIN_ILLNESS_TRADE_INFECTION_PCT 0
682 #define RS_MAX_ILLNESS_TRADE_INFECTION_PCT 500
684 #define RS_DEFAULT_ILLNESS_POLLUTION_PCT 50
685 #define RS_MIN_ILLNESS_POLLUTION_PCT 0
686 #define RS_MAX_ILLNESS_POLLUTION_PCT 500
688 #define RS_DEFAULT_CALENDAR_SKIP_0 TRUE
690 #define RS_DEFAULT_BORDER_RADIUS_SQ_CITY 17 /* city radius 4 */
691 #define RS_MIN_BORDER_RADIUS_SQ_CITY 0
692 #define RS_MAX_BORDER_RADIUS_SQ_CITY 401 /* city radius 20 */
694 #define RS_DEFAULT_BORDER_SIZE_EFFECT 1
695 #define RS_MIN_BORDER_SIZE_EFFECT 0
696 #define RS_MAX_BORDER_SIZE_EFFECT 100
698 #define RS_DEFAULT_BORDER_RADIUS_SQ_CITY_PERMANENT 0
699 #define RS_MIN_BORDER_RADIUS_SQ_CITY_PERMANENT (-CITY_MAP_MAX_RADIUS_SQ)
700 #define RS_MAX_BORDER_RADIUS_SQ_CITY_PERMANENT 401 /* city radius 20 */
702 #define RS_DEFAULT_INCITE_BASE_COST 1000
703 #define RS_MIN_INCITE_BASE_COST 0
704 #define RS_MAX_INCITE_BASE_COST RS_MAX_VALUE
706 #define RS_DEFAULT_INCITE_IMPROVEMENT_FCT 1
707 #define RS_MIN_INCITE_IMPROVEMENT_FCT 0
708 #define RS_MAX_INCITE_IMPROVEMENT_FCT RS_MAX_VALUE
710 #define RS_DEFAULT_INCITE_UNIT_FCT 2
711 #define RS_MIN_INCITE_UNIT_FCT 0
712 #define RS_MAX_INCITE_UNIT_FCT RS_MAX_VALUE
714 #define RS_DEFAULT_INCITE_TOTAL_FCT 100
715 #define RS_MIN_INCITE_TOTAL_FCT 0
716 #define RS_MAX_INCITE_TOTAL_FCT RS_MAX_VALUE
718 #define RS_DEFAULT_GRANARY_FOOD_INI 20
720 #define RS_DEFAULT_GRANARY_FOOD_INC 10
721 #define RS_MIN_GRANARY_FOOD_INC 0
722 #define RS_MAX_GRANARY_FOOD_INC RS_MAX_VALUE
724 #define RS_DEFAULT_CITY_CENTER_OUTPUT 0
725 #define RS_MIN_CITY_CENTER_OUTPUT 0
726 #define RS_MAX_CITY_CENTER_OUTPUT RS_MAX_VALUE
728 #define RS_DEFAULT_CITIES_MIN_DIST 2
729 #define RS_MIN_CITIES_MIN_DIST 1
730 #define RS_MAX_CITIES_MIN_DIST RS_MAX_VALUE
732 /* the constants CITY_MAP_*_RADIUS are defined in city.c */
733 #define RS_DEFAULT_CITY_RADIUS_SQ CITY_MAP_DEFAULT_RADIUS_SQ
734 #define RS_MIN_CITY_RADIUS_SQ CITY_MAP_MIN_RADIUS_SQ
735 #define RS_MAX_CITY_RADIUS_SQ CITY_MAP_MAX_RADIUS_SQ
737 #define RS_DEFAULT_VIS_RADIUS_SQ 5 /* city radius 2 */
738 #define RS_MIN_VIS_RADIUS_SQ 0
739 #define RS_MAX_VIS_RADIUS_SQ 401 /* city radius 20 */
741 #define RS_DEFAULT_BASE_POLLUTION -20
742 /* no min / max values as it can be set to high negative values to
743 * deactiveate pollution and high positive values to create much
744 * pollution */
746 #define RS_DEFAULT_HAPPY_COST 2
747 #define RS_MIN_HAPPY_COST 0
748 #define RS_MAX_HAPPY_COST 100
750 #define RS_DEFAULT_FOOD_COST 2
751 #define RS_MIN_FOOD_COST 0
752 #define RS_MAX_FOOD_COST 100
754 #define RS_DEFAULT_SLOW_INVASIONS TRUE
756 #define RS_DEFAULT_TIRED_ATTACK FALSE
758 #define RS_DEFAULT_BASE_BRIBE_COST 750
759 #define RS_MIN_BASE_BRIBE_COST 0
760 #define RS_MAX_BASE_BRIBE_COST RS_MAX_VALUE
762 #define RS_DEFAULT_RANSOM_GOLD 100
763 #define RS_MIN_RANSOM_GOLD 0
764 #define RS_MAX_RANSOM_GOLD RS_MAX_VALUE
766 #define RS_DEFAULT_PILLAGE_SELECT TRUE
768 #define RS_DEFAULT_UPGRADE_VETERAN_LOSS 0
769 #define RS_MIN_UPGRADE_VETERAN_LOSS 0
770 #define RS_MAX_UPGRADE_VETERAN_LOSS MAX_VET_LEVELS
772 #define RS_DEFAULT_TECH_UPKEEP_DIVIDER 100
773 #define RS_MIN_TECH_UPKEEP_DIVIDER 1
774 #define RS_MAX_TECH_UPKEEP_DIVIDER 100000
776 #define RS_DEFAULT_BASE_TECH_COST 20
777 #define RS_MIN_BASE_TECH_COST 0
778 #define RS_MAX_BASE_TECH_COST 200
780 #define RS_DEFAULT_FORCE_TRADE_ROUTE FALSE
782 #ifdef __cplusplus
784 #endif /* __cplusplus */
786 #endif /* FC__GAME_H */