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)
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 ***********************************************************************/
18 #endif /* __cplusplus */
20 #include <time.h> /* time_t */
22 #ifdef FREECIV_HAVE_SYS_TIME_H
32 #include "connection.h" /* struct conn_list */
36 #include "world_object.h"
43 enum city_names_mode
{
44 CNM_NO_RESTRICTIONS
= 0,
50 enum barbarians_rate
{
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
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
;
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
];
111 /* Only used at the client (./client/). */
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
;
129 int autoupgrade_veteran_loss
;
130 enum barbarians_rate barbarianrate
;
131 int base_incite_cost
;
144 int incite_improvement_factor
;
145 int incite_total_factor
;
146 int incite_unit_factor
;
147 int init_vis_radius_sq
;
149 int killunhomed
; /* slowly killing unhomed units */
150 int maxconnectionsperhost
;
152 char nationset
[MAX_LEN_NAME
];
155 int mgr_nationchance
;
156 int mgr_turninterval
;
159 enum trait_dist_mode trait_dist
;
161 bool natural_city_names
;
171 int revolution_length
;
173 int save_compress_level
;
174 enum fz_method save_compress_type
;
177 unsigned autosaves
; /* FIXME: char would be enough, but current settings.c code wants to
178 write sizeof(unsigned) bytes */
180 bool homecaughtunits
;
181 char start_units
[MAX_LEN_STARTUNIT
];
184 int techloss_forgiveness
;
185 int techloss_restore
;
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 */
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
];
214 enum scorelog_level scoreloglevel
;
215 char scorefile
[MAX_LEN_NAME
];
216 int scoreturn
; /* next make_history_report() */
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
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
;
242 /* used by the map editor to control game_save. */
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 */
251 char user_message
[256];
259 struct trait_limits default_traits
[TRAIT_COUNT
];
262 char *description_file
;
264 char **embedded_nations
;
265 size_t embedded_nations_count
;
266 const char **allowed_govs
;
269 const char **allowed_terrains
;
272 const char **allowed_styles
;
281 /* Function to be called in game_remove_unit when a unit is deleted. */
282 void (*unit_deallocate
)(int unit_id
);
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
,
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
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
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
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
646 # define GAME_DEFAULT_COMPRESS_TYPE FZ_PLAIN
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
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"
806 #endif /* __cplusplus */
808 #endif /* FC__GAME_H */