Freeciv-3.3
Loading...
Searching...
No Matches
game.h
Go to the documentation of this file.
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.
7
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
15
16#ifdef __cplusplus
17extern "C" {
18#endif /* __cplusplus */
19
20#include <time.h> /* time_t */
21
22#ifdef FREECIV_HAVE_SYS_TIME_H
23#include <sys/time.h>
24#endif
25
26/* utility */
27#include "randseed.h"
28#include "shared.h"
29#include "timing.h"
30
31/* common */
32#include "connection.h" /* struct conn_list */
33#include "fc_types.h"
34#include "packets.h"
35#include "traits.h"
36
37struct world;
38
43
50
58
66
71
73{
74 char *name;
75 char *helptxt;
76};
77
78/* The number of turns that the first user needs to be attached to a
79 * player for that user to be ranked as that player */
80#define TURNS_NEEDED_TO_RANK 10
81
82struct civ_game {
92
93 struct government *default_government; /* may be overridden by nation */
95
96 struct conn_list *all_connections; /* including not yet established */
97 struct conn_list *est_connections; /* all established client conns */
98 struct conn_list *glob_observers; /* global observers */
99 struct conn_list *web_client_connections; /* Connections from web client */
100
101 struct veteran_system *veteran; /* veteran system */
102
104
105 struct {
106 /* Items given to all players at game start.
107 * Client gets this info for help purposes only. */
108 int global_init_techs[MAX_NUM_TECH_LIST];
109 int global_init_buildings[MAX_NUM_BUILDING_LIST];
111
112 union {
113 struct {
114 /* Only used at the client (./client/). */
115
119
120 struct {
121 /* Only used in the server (./ai/ and ./server/). */
122
123 /* Defined in the ruleset. */
124
125 /* Game settings & other data. */
126
154 int killunhomed; /* Slowly killing unhomed units */
177 unsigned revealmap;
185 unsigned autosaves; /* FIXME: char would be enough, but current settings.c code wants to
186 write sizeof(unsigned) bytes */
198 int unitwaittime; /* Minimal time between two movements of a unit */
201
203 int timeoutint; /* Increase timeout every N turns... */
204 int timeoutinc; /* ... by this amount ... */
205 int timeoutincmult; /* ... and multiply timeoutinc by this amount ... */
206 int timeoutintinc; /* ... and increase timeoutint by this amount */
207 int timeoutcounter; /* timeoutcounter - timeoutint = turns to next inc. */
208 int timeoutaddenemymove; /* Minimum timeout after an enemy move is seen */
209
211 struct timer *phase_timer; /* Time since seconds_to_phase_done was set. */
213 /* The game.info.phase_mode value indicates the phase mode currently in
214 * use. The "stored" value is a value the player can change; it won't
215 * take effect until the next turn. */
225 int scoreturn; /* Next make_history_report() */
228
233
234 bool fogofwar_old; /* As the fog_of_war bit get changed by setting
235 * the server we need to remember the old setting */
236 bool last_updated_year; /* last_updated is still counted as year in this
237 * game. */
242
243 bool settings_gamestart_valid; /* Valid settings from the game start. */
244
246
248 int dbid;
249
250 struct {
251 int turns;
253 bool chat;
254 bool info;
256
257 /* Used by the map editor to control game_save. */
258 struct {
259 bool save_known; /* Loading will just reveal the squares around
260 * cities and units */
261 bool save_starts; /* Start positions will be auto generated */
262 bool save_private_map; /* FoW map; will be created if not saved */
264
265 struct {
266 char user_message[256];
267 char type[20];
269
270 struct {
273
275
277
279
280 struct {
285 const char **allowed_govs;
286 char **nc_agovs;
287 size_t ag_count;
288 const char **allowed_terrains;
289 char **nc_aterrs;
290 size_t at_count;
291 const char **allowed_styles;
293 size_t as_count;
297 };
298
299 struct {
300 /* Function to be called in game_remove_unit when a unit is deleted. */
301 void (*unit_deallocate)(int unit_id);
303};
304
305extern struct civ_game game;
306
307#ifdef FREECIV_WEB
308/**********************************************************************/
311static inline bool any_web_conns(void)
312{
314}
315#else /* FREECIV_WEB */
316#define any_web_conns() (FALSE)
317#endif /* FREECIV_WEB */
318
320void game_map_init(void);
321void game_free(void);
322void game_reset(void);
323
324void game_ruleset_init(void);
325void game_ruleset_free(void);
326
327int civ_population(const struct player *pplayer);
328struct city *game_city_by_name(const char *name);
329struct city *game_city_by_number(int id);
330
331struct unit *game_unit_by_number(int id);
332
333void game_remove_unit(struct world *gworld, struct unit *punit);
334void game_remove_city(struct world *gworld, struct city *pcity);
335void initialize_globals(void);
336
337bool is_player_phase(const struct player *pplayer, int phase);
338
339const char *population_to_text(int thousand_citizen);
340
341int generate_save_name(const char *format, char *buf, int buflen,
342 const char *reason);
343
344void user_flag_init(struct user_flag *flag);
345void user_flag_free(struct user_flag *flag);
346
347int current_turn_timeout(void);
348
349extern bool _ruleset_compat_mode;
350
351/**********************************************************************/
354static inline void set_ruleset_compat_mode(bool active)
355{
356 _ruleset_compat_mode = active;
357}
358
359/**********************************************************************/
362static inline bool is_ruleset_compat_mode(void)
363{
365}
366
367#define GAME_DEFAULT_SEED 0
368#define GAME_MIN_SEED 0
369#define GAME_MAX_SEED (MAX_UINT32 >> 1)
370
371#define GAME_DEFAULT_GOLD 50
372#define GAME_MIN_GOLD 0
373#define GAME_MAX_GOLD 50000
374
375#define GAME_DEFAULT_INFRA 0
376#define GAME_MIN_INFRA 0
377#define GAME_MAX_INFRA 50000
378
379#define GAME_DEFAULT_START_UNITS "ccwwx"
380#define GAME_DEFAULT_START_CITY FALSE
381
382#define GAME_DEFAULT_DISPERSION 0
383#define GAME_MIN_DISPERSION 0
384#define GAME_MAX_DISPERSION 10
385
386#define GAME_DEFAULT_TECHLEVEL 0
387#define GAME_MIN_TECHLEVEL 0
388#define GAME_MAX_TECHLEVEL 100
389
390#define GAME_DEFAULT_ANGRYCITIZEN TRUE
391
392#define GAME_DEFAULT_END_TURN 5000
393#define GAME_MIN_END_TURN 1
394#define GAME_MAX_END_TURN 32767
395
396#define GAME_DEFAULT_MIN_PLAYERS 1
397#define GAME_MIN_MIN_PLAYERS 0
398#define GAME_MAX_MIN_PLAYERS MAX_NUM_PLAYERS
399
400#define GAME_DEFAULT_MAX_PLAYERS MAX_NUM_PLAYERS
401#define GAME_MIN_MAX_PLAYERS 1
402#define GAME_MAX_MAX_PLAYERS MAX_NUM_PLAYERS
403
404#define GAME_DEFAULT_AIFILL 5
405#define GAME_MIN_AIFILL 0
406#define GAME_MAX_AIFILL GAME_MAX_MAX_PLAYERS
407
408#define GAME_DEFAULT_NATIONSET ""
409
410#define GAME_DEFAULT_FOODBOX 100
411#define GAME_MIN_FOODBOX 1
412#define GAME_MAX_FOODBOX 10000
413
414#define GAME_DEFAULT_SHIELDBOX 100
415#define GAME_MIN_SHIELDBOX 1
416#define GAME_MAX_SHIELDBOX 10000
417
418#define GAME_DEFAULT_SCIENCEBOX 100
419#define GAME_MIN_SCIENCEBOX 1
420#define GAME_MAX_SCIENCEBOX 10000
421
422#define GAME_DEFAULT_DIPLBULBCOST 0
423#define GAME_MIN_DIPLBULBCOST 0
424#define GAME_MAX_DIPLBULBCOST 100
425
426#define GAME_DEFAULT_DIPLGOLDCOST 0
427#define GAME_MIN_DIPLGOLDCOST 0
428#define GAME_MAX_DIPLGOLDCOST 100
429
430#define GAME_DEFAULT_INCITE_GOLD_LOSS_CHANCE 0
431#define GAME_MIN_INCITE_GOLD_LOSS_CHANCE 0
432#define GAME_MAX_INCITE_GOLD_LOSS_CHANCE 100
433
434#define GAME_DEFAULT_INCITE_GOLD_CAPT_CHANCE 0
435#define GAME_MIN_INCITE_GOLD_CAPT_CHANCE 0
436#define GAME_MAX_INCITE_GOLD_CAPT_CHANCE 100
437
438#define GAME_DEFAULT_FOGOFWAR TRUE
439
440#define GAME_DEFAULT_FOGGEDBORDERS FALSE
441
442#define GAME_DEFAULT_GLOBAL_WARMING TRUE
443
444#define GAME_DEFAULT_GLOBAL_WARMING_PERCENT 100
445#define GAME_MIN_GLOBAL_WARMING_PERCENT 1
446#define GAME_MAX_GLOBAL_WARMING_PERCENT 10000
447
448#define GAME_DEFAULT_NUCLEAR_WINTER TRUE
449
450#define GAME_DEFAULT_NUCLEAR_WINTER_PERCENT 100
451#define GAME_MIN_NUCLEAR_WINTER_PERCENT 1
452#define GAME_MAX_NUCLEAR_WINTER_PERCENT 10000
453
454#define GAME_DEFAULT_BORDERS BORDERS_ENABLED
455
456#define GAME_DEFAULT_HAPPYBORDERS HB_NATIONAL
457
458#define GAME_DEFAULT_DIPLOMACY DIPLO_FOR_ALL
459
460#define GAME_DEFAULT_DIPLCHANCE 80
461#define GAME_MIN_DIPLCHANCE 40
462#define GAME_MAX_DIPLCHANCE 100
463
464#define GAME_DEFAULT_FREECOST 0
465#define GAME_MIN_FREECOST 0
466#define GAME_MAX_FREECOST 100
467
468#define GAME_DEFAULT_CONQUERCOST 0
469#define GAME_MIN_CONQUERCOST 0
470#define GAME_MAX_CONQUERCOST 100
471
472#define GAME_DEFAULT_TECHLOSSFG -1
473#define GAME_MIN_TECHLOSSFG -1
474#define GAME_MAX_TECHLOSSFG 200
475
476#define GAME_DEFAULT_TECHLOSSREST 50
477#define GAME_MIN_TECHLOSSREST -1
478#define GAME_MAX_TECHLOSSREST 100
479
480#define GAME_DEFAULT_TECHLEAK 100
481#define GAME_MIN_TECHLEAK 0
482#define GAME_MAX_TECHLEAK 300
483
484#define GAME_DEFAULT_CITYMINDIST 2
485#define GAME_MIN_CITYMINDIST 1
486#define GAME_MAX_CITYMINDIST 11
487
488#define GAME_DEFAULT_CIVILWARSIZE 10
489#define GAME_MIN_CIVILWARSIZE 2 /* can't split an empire of 1 city */
490#define GAME_MAX_CIVILWARSIZE 1000
491
492#define GAME_DEFAULT_RESTRICTINFRA FALSE
493#define GAME_DEFAULT_UNRPROTECTS TRUE
494
495#define GAME_DEFAULT_CONTACTTURNS 20
496#define GAME_MIN_CONTACTTURNS 0
497#define GAME_MAX_CONTACTTURNS 100
498
499#define GAME_DEFAULT_CELEBRATESIZE 3
500
501#define GAME_DEFAULT_RAPTUREDELAY 1
502#define GAME_MIN_RAPTUREDELAY 1
503#define GAME_MAX_RAPTUREDELAY 99 /* 99 practicaly disables rapturing */
504
505#define GAME_DEFAULT_DISASTERS 10
506#define GAME_MIN_DISASTERS 0
507#define GAME_MAX_DISASTERS 1000
508
509#define GAME_DEFAULT_TRAIT_DIST_MODE TDM_FIXED
510
511#define GAME_DEFAULT_SAVEPALACE TRUE
512
513#define GAME_DEFAULT_HOMECAUGHTUNITS TRUE
514
515#define GAME_DEFAULT_NATURALCITYNAMES TRUE
516
517#define GAME_DEFAULT_MIGRATION FALSE
518
519#define GAME_DEFAULT_MGR_TURNINTERVAL 5
520#define GAME_MIN_MGR_TURNINTERVAL 1
521#define GAME_MAX_MGR_TURNINTERVAL 100
522
523#define GAME_DEFAULT_MGR_FOODNEEDED TRUE
524
525/* definition of the migration distance in relation to the current city
526 * radius; 0 means that migration is possible if the second city is within
527 * the city radius */
528#define GAME_DEFAULT_MGR_DISTANCE 0
529#define GAME_MIN_MGR_DISTANCE (0 - CITY_MAP_MAX_RADIUS)
530#define GAME_MAX_MGR_DISTANCE (1 + CITY_MAP_MAX_RADIUS)
531
532#define GAME_DEFAULT_MGR_NATIONCHANCE 50
533#define GAME_MIN_MGR_NATIONCHANCE 0
534#define GAME_MAX_MGR_NATIONCHANCE 100
535
536#define GAME_DEFAULT_MGR_WORLDCHANCE 10
537#define GAME_MIN_MGR_WORLDCHANCE 0
538#define GAME_MAX_MGR_WORLDCHANCE 100
539
540#define GAME_DEFAULT_AQUEDUCTLOSS 0
541#define GAME_MIN_AQUEDUCTLOSS 0
542#define GAME_MAX_AQUEDUCTLOSS 100
543
544#define GAME_DEFAULT_KILLSTACK TRUE
545#define GAME_DEFAULT_KILLCITIZEN TRUE
546
547#define GAME_DEFAULT_KILLUNHOMED 0
548#define GAME_MIN_KILLUNHOMED 0
549#define GAME_MAX_KILLUNHOMED 100
550
551#define GAME_DEFAULT_TECHPENALTY 100
552#define GAME_MIN_TECHPENALTY 0
553#define GAME_MAX_TECHPENALTY 100
554
555#define GAME_DEFAULT_TECHLOST_RECV 0
556#define GAME_MIN_TECHLOST_RECV 0
557#define GAME_MAX_TECHLOST_RECV 100
558
559#define GAME_DEFAULT_TECHLOST_DONOR 0
560#define GAME_MIN_TECHLOST_DONOR 0
561#define GAME_MAX_TECHLOST_DONOR 100
562
563#define GAME_DEFAULT_TEAM_POOLED_RESEARCH TRUE
564#define GAME_DEFAULT_MULTIRESEARCH FALSE
565
566#define GAME_DEFAULT_RAZECHANCE 20
567#define GAME_MIN_RAZECHANCE 0
568#define GAME_MAX_RAZECHANCE 100
569
570#define GAME_DEFAULT_REVEALMAP REVEAL_MAP_NONE
571
572#define GAME_DEFAULT_SCORELOG FALSE
573#define GAME_DEFAULT_SCORELOGLEVEL SL_ALL
574#define GAME_DEFAULT_SCOREFILE "freeciv-score.log"
575
576/* Turns between reports is random between SCORETURN and (2 x SCORETURN).
577 * First report is shown at SCORETURN. As report is generated in the end of the turn,
578 * first report is already generated at (SCORETURN - 1) */
579#define GAME_DEFAULT_SCORETURN 20
580
581#define GAME_DEFAULT_VICTORY_CONDITIONS (1 << VC_SPACERACE | 1 << VC_ALLIED)
582#define GAME_DEFAULT_END_SPACESHIP TRUE
583
584#define GAME_DEFAULT_SPACESHIP_TRAVEL_PCT 100
585#define GAME_MIN_SPACESHIP_TRAVEL_PCT 50
586#define GAME_MAX_SPACESHIP_TRAVEL_PCT 1000
587
588#define GAME_DEFAULT_TURNBLOCK TRUE
589
590#define GAME_DEFAULT_AUTO_AI_TOGGLE FALSE
591
592#define GAME_DEFAULT_TIMEOUT 0
593#define GAME_DEFAULT_FIRST_TIMEOUT -1
594#define GAME_DEFAULT_TIMEOUTINT 0
595#define GAME_DEFAULT_TIMEOUTINTINC 0
596#define GAME_DEFAULT_TIMEOUTINC 0
597#define GAME_DEFAULT_TIMEOUTINCMULT 1
598#define GAME_DEFAULT_TIMEOUTADDEMOVE 0
599#define GAME_DEFAULT_TIMEOUTCOUNTER 1
600
601#define GAME_DEFAULT_MAXCONNECTIONSPERHOST 4
602#define GAME_MIN_MAXCONNECTIONSPERHOST 0
603#define GAME_MAX_MAXCONNECTIONSPERHOST MAX_NUM_CONNECTIONS
604
605#define GAME_MIN_TIMEOUT -1
606#define GAME_MAX_TIMEOUT 8639999
607#define GAME_MIN_FIRST_TIMEOUT -1
608#define GAME_MAX_FIRST_TIMEOUT GAME_MAX_TIMEOUT
609
610#define GAME_MIN_UNITWAITTIME 0
611#define GAME_MAX_UNITWAITTIME GAME_MAX_TIMEOUT
612#define GAME_DEFAULT_UNITWAITTIME 0
613
614#define GAME_DEFAULT_PHASE_MODE 0
615
616#define GAME_DEFAULT_TCPTIMEOUT 10
617#define GAME_MIN_TCPTIMEOUT 0
618#define GAME_MAX_TCPTIMEOUT 120
619
620#define GAME_DEFAULT_NETWAIT 4
621#define GAME_MIN_NETWAIT 0
622#define GAME_MAX_NETWAIT 20
623
624#define GAME_DEFAULT_PINGTIME 20
625#define GAME_MIN_PINGTIME 1
626#define GAME_MAX_PINGTIME 1800
627
628#define GAME_DEFAULT_PINGTIMEOUT 60
629#define GAME_MIN_PINGTIMEOUT 60
630#define GAME_MAX_PINGTIMEOUT 1800
631
632#define GAME_DEFAULT_IPHIDE FALSE
633
634#define GAME_DEFAULT_NOTRADESIZE 0
635#define GAME_MIN_NOTRADESIZE 0
636#define GAME_MAX_NOTRADESIZE 49
637
638#define GAME_DEFAULT_TRADEWORLDRELPCT 50
639#define GAME_MIN_TRADEWORLDRELPCT 0
640#define GAME_MAX_TRADEWORLDRELPCT 100
641
642#define GAME_DEFAULT_FULLTRADESIZE 1
643#define GAME_MIN_FULLTRADESIZE 1
644#define GAME_MAX_FULLTRADESIZE 50
645
646#define GAME_DEFAULT_TRADING_TECH TRUE
647#define GAME_DEFAULT_TRADING_GOLD TRUE
648#define GAME_DEFAULT_TRADING_CITY TRUE
649
650#define GAME_DEFAULT_CARAVAN_BONUS_STYLE CBS_CLASSIC
651
652#define GAME_DEFAULT_TRADEMINDIST 9
653#define GAME_MIN_TRADEMINDIST 1
654#define GAME_MAX_TRADEMINDIST 999
655
656#define GAME_DEFAULT_TRADE_REVENUE_STYLE TRS_CLASSIC
657
658#define GAME_DEFAULT_BARBARIANRATE BARBS_NORMAL
659
660#define GAME_DEFAULT_ONSETBARBARIAN 60
661#define GAME_MIN_ONSETBARBARIAN 1
662#define GAME_MAX_ONSETBARBARIAN GAME_MAX_END_TURN
663
664#define GAME_DEFAULT_OCCUPYCHANCE 0
665#define GAME_MIN_OCCUPYCHANCE 0
666#define GAME_MAX_OCCUPYCHANCE 100
667
668#define GAME_DEFAULT_AUTOATTACK FALSE
669
670#ifdef FREECIV_WEB
671#define GAME_DEFAULT_RULESETDIR "classic"
672#else /* FREECIV_WEB */
673#define GAME_DEFAULT_RULESETDIR "civ2civ3"
674#endif /* FREECIV_WEB */
675
676#define GAME_DEFAULT_SAVE_NAME "freeciv"
677#define GAME_DEFAULT_SAVETURNS 1
678#define GAME_MIN_SAVETURNS 1
679#define GAME_MAX_SAVETURNS 200
680#define GAME_DEFAULT_SAVEFREQUENCY 15
681#define GAME_MIN_SAVEFREQUENCY 2
682#define GAME_MAX_SAVEFREQUENCY 1440
683
684#ifdef FREECIV_WEB
685#define GAME_DEFAULT_AUTOSAVES 0
686#else /* FREECIV_WEB */
687#define GAME_DEFAULT_AUTOSAVES (1 << AS_TURN | 1 << AS_GAME_OVER | 1 << AS_QUITIDLE | 1 << AS_INTERRUPT)
688#endif /* FREECIV_WEB */
689
690#define GAME_DEFAULT_THREADED_SAVE FALSE
691
692#define GAME_DEFAULT_USER_META_MESSAGE ""
693
694#define GAME_DEFAULT_SKILL_LEVEL AI_LEVEL_EASY
695#define GAME_HARDCODED_DEFAULT_SKILL_LEVEL 3 /* that was 'easy' in old saves */
696#define GAME_OLD_DEFAULT_SKILL_LEVEL 5 /* normal; for oldest save games */
697
698#define GAME_DEFAULT_TOP_CITIES_COUNT 5
699#define GAME_MIN_TOP_CITIES_COUNT 0
700#define GAME_MAX_TOP_CITIES_COUNT 40
701
702#define GAME_DEFAULT_DEMOGRAPHY "NASRLPEMOCqrb"
703#define GAME_DEFAULT_ALLOW_TAKE "HAhadOo"
704
705#define GAME_DEFAULT_EVENT_CACHE_TURNS 1
706#define GAME_MIN_EVENT_CACHE_TURNS 0
707#define GAME_MAX_EVENT_CACHE_TURNS (GAME_MAX_END_TURN + 1)
708
709#define GAME_DEFAULT_EVENT_CACHE_MAX_SIZE 256
710#define GAME_MIN_EVENT_CACHE_MAX_SIZE 10
711#define GAME_MAX_EVENT_CACHE_MAX_SIZE 20000
712
713#define GAME_DEFAULT_EVENT_CACHE_CHAT TRUE
714
715#define GAME_DEFAULT_EVENT_CACHE_INFO FALSE
716
717#define GAME_DEFAULT_COMPRESS_LEVEL 6 /* if we have compression */
718#define GAME_MIN_COMPRESS_LEVEL 1
719#define GAME_MAX_COMPRESS_LEVEL 9
720
721#if defined(FREECIV_HAVE_LIBZSTD)
722# define GAME_DEFAULT_COMPRESS_TYPE FZ_ZSTD
723#elif defined(FREECIV_HAVE_LIBLZMA)
724# define GAME_DEFAULT_COMPRESS_TYPE FZ_XZ
725#elif defined(FREECIV_HAVE_LIBZ)
726# define GAME_DEFAULT_COMPRESS_TYPE FZ_ZLIB
727#else
728# define GAME_DEFAULT_COMPRESS_TYPE FZ_PLAIN
729#endif
730
731#define GAME_DEFAULT_ALLOWED_CITY_NAMES CNM_PLAYER_UNIQUE
732
733#define GAME_DEFAULT_PLRCOLORMODE PLRCOL_PLR_ORDER
734
735#define GAME_DEFAULT_REVOLENTYPE REVOLEN_RANDOM
736#define GAME_DEFAULT_REVOLUTION_LENGTH 5
737#define GAME_MIN_REVOLUTION_LENGTH 1
738#define GAME_MAX_REVOLUTION_LENGTH 20
739
740#define GAME_DEFAULT_START_YEAR -4000
741
742#define GAME_DEFAULT_AIRLIFTINGSTYLE AIRLIFTING_CLASSICAL
743#define GAME_DEFAULT_PERSISTENTREADY PERSISTENTR_DISABLED
744
745#define GAME_MAX_READ_RECURSION 10 /* max recursion for the read command */
746
747#define GAME_DEFAULT_KICK_TIME 1800 /* 1800 seconds = 30 minutes. */
748#define GAME_MIN_KICK_TIME 0 /* 0 = disabling. */
749#define GAME_MAX_KICK_TIME 86400 /* 86400 seconds = 24 hours. */
750
751/* Max distance from the capital used to calculat the bribe cost. */
752#define GAME_UNIT_BRIBE_DIST_MAX 32
753
754/* Max number of recursive transports. */
755#define GAME_TRANSPORT_MAX_RECURSIVE 5
756
757/* Ruleset settings */
758
759#define RS_MAX_VALUE 1000000
760
761/* TRANS: year label (Anno Domini) */
762#define RS_DEFAULT_POS_YEAR_LABEL N_("AD")
763/* TRANS: year label (Before Christ) */
764#define RS_DEFAULT_NEG_YEAR_LABEL N_("BC")
765
766#define RS_DEFAULT_ILLNESS_ON FALSE
767
768#define RS_DEFAULT_ILLNESS_BASE_FACTOR 25
769#define RS_MIN_ILLNESS_BASE_FACTOR 0
770#define RS_MAX_ILLNESS_BASE_FACTOR RS_MAX_VALUE
771
772#define RS_DEFAULT_ILLNESS_MIN_SIZE 3
773#define RS_MIN_ILLNESS_MIN_SIZE 1
774#define RS_MAX_ILLNESS_MIN_SIZE 100
775
776#define RS_DEFAULT_ILLNESS_TRADE_INFECTION_PCT 50
777#define RS_MIN_ILLNESS_TRADE_INFECTION_PCT 0
778#define RS_MAX_ILLNESS_TRADE_INFECTION_PCT 500
779
780#define RS_DEFAULT_ILLNESS_POLLUTION_PCT 50
781#define RS_MIN_ILLNESS_POLLUTION_PCT 0
782#define RS_MAX_ILLNESS_POLLUTION_PCT 500
783
784#define RS_DEFAULT_CALENDAR_SKIP_0 TRUE
785
786#define RS_DEFAULT_BORDER_RADIUS_SQ_CITY 17 /* city radius 4 */
787#define RS_MIN_BORDER_RADIUS_SQ_CITY 0
788#define RS_MAX_BORDER_RADIUS_SQ_CITY 401 /* city radius 20 */
789
790#define RS_DEFAULT_BORDER_SIZE_EFFECT 1
791#define RS_MIN_BORDER_SIZE_EFFECT 0
792#define RS_MAX_BORDER_SIZE_EFFECT 100
793
794#define RS_DEFAULT_BORDER_RADIUS_SQ_CITY_PERMANENT 0
795#define RS_MIN_BORDER_RADIUS_SQ_CITY_PERMANENT (-CITY_MAP_MAX_RADIUS_SQ)
796#define RS_MAX_BORDER_RADIUS_SQ_CITY_PERMANENT 401 /* city radius 20 */
797
798#define RS_DEFAULT_INCITE_BASE_COST 1000
799#define RS_MIN_INCITE_BASE_COST 0
800#define RS_MAX_INCITE_BASE_COST RS_MAX_VALUE
801
802#define RS_DEFAULT_INCITE_IMPROVEMENT_FCT 1
803#define RS_MIN_INCITE_IMPROVEMENT_FCT 0
804#define RS_MAX_INCITE_IMPROVEMENT_FCT RS_MAX_VALUE
805
806#define RS_DEFAULT_INCITE_UNIT_FCT 2
807#define RS_MIN_INCITE_UNIT_FCT 0
808#define RS_MAX_INCITE_UNIT_FCT RS_MAX_VALUE
809
810#define RS_DEFAULT_INCITE_TOTAL_FCT 100
811#define RS_MIN_INCITE_TOTAL_FCT 0
812#define RS_MAX_INCITE_TOTAL_FCT RS_MAX_VALUE
813
814#define RS_DEFAULT_GRANARY_FOOD_INI 20
815
816#define RS_DEFAULT_GRANARY_FOOD_INC 10
817#define RS_MIN_GRANARY_FOOD_INC 0
818#define RS_MAX_GRANARY_FOOD_INC RS_MAX_VALUE
819
820#define RS_DEFAULT_CITY_CENTER_OUTPUT 0
821#define RS_MIN_CITY_CENTER_OUTPUT 0
822#define RS_MAX_CITY_CENTER_OUTPUT RS_MAX_VALUE
823
824#define RS_DEFAULT_CITIES_MIN_DIST 2
825#define RS_MIN_CITIES_MIN_DIST 1
826#define RS_MAX_CITIES_MIN_DIST RS_MAX_VALUE
827
828/* the constants CITY_MAP_*_RADIUS are defined in city.c */
829#define RS_DEFAULT_CITY_RADIUS_SQ CITY_MAP_DEFAULT_RADIUS_SQ
830#define RS_MIN_CITY_RADIUS_SQ CITY_MAP_MIN_RADIUS_SQ
831#define RS_MAX_CITY_RADIUS_SQ CITY_MAP_MAX_RADIUS_SQ
832
833#define RS_DEFAULT_VIS_RADIUS_SQ 5 /* city radius 2 */
834#define RS_MIN_VIS_RADIUS_SQ 0
835#define RS_MAX_VIS_RADIUS_SQ 401 /* city radius 20 */
836
837#define RS_DEFAULT_BASE_POLLUTION -20
838/* no min / max values as it can be set to high negative values to
839 * deactiveate pollution and high positive values to create much
840 * pollution */
841
842#define RS_DEFAULT_HAPPY_COST 2
843#define RS_MIN_HAPPY_COST 0
844#define RS_MAX_HAPPY_COST 10000
845
846#define RS_DEFAULT_FOOD_COST 2
847#define RS_MIN_FOOD_COST 0
848#define RS_MAX_FOOD_COST 10000
849
850#define RS_DEFAULT_CIVIL_WAR_CELEB -5
851#define RS_DEFAULT_CIVIL_WAR_UNHAPPY 5
852
853#define RS_DEFAULT_TIRED_ATTACK FALSE
854#define RS_DEFAULT_NUKE_POP_LOSS_PCT 49
855#define RS_MIN_NUKE_POP_LOSS_PCT 0
856#define RS_MAX_NUKE_POP_LOSS_PCT 100
857#define RS_DEFAULT_NUKE_DEFENDER_SURVIVAL_CHANCE_PCT 0
858#define RS_MIN_NUKE_DEFENDER_SURVIVAL_CHANCE_PCT 0
859#define RS_MAX_NUKE_DEFENDER_SURVIVAL_CHANCE_PCT 100
860
861#define RS_DEFAULT_BASE_BRIBE_COST 750
862#define RS_MIN_BASE_BRIBE_COST 0
863#define RS_MAX_BASE_BRIBE_COST RS_MAX_VALUE
864
865#define RS_DEFAULT_RANSOM_GOLD 100
866#define RS_MIN_RANSOM_GOLD 0
867#define RS_MAX_RANSOM_GOLD RS_MAX_VALUE
868
869#define RS_DEFAULT_PILLAGE_SELECT TRUE
870
871#define RS_DEFAULT_UPGRADE_VETERAN_LOSS 0
872#define RS_MIN_UPGRADE_VETERAN_LOSS 0
873#define RS_MAX_UPGRADE_VETERAN_LOSS MAX_VET_LEVELS
874
875#define RS_DEFAULT_TECH_UPKEEP_DIVIDER 100
876#define RS_MIN_TECH_UPKEEP_DIVIDER 1
877#define RS_MAX_TECH_UPKEEP_DIVIDER 100000
878
879#define RS_DEFAULT_POISON_EMPTIES_FOOD_STOCK FALSE
880#define RS_DEFAULT_STEAL_MAP_REVEALS_CITIES TRUE
881#define RS_DEFAULT_ACTION_ACTOR_CONSUMING_ALWAYS FALSE
882#define RS_DEFAULT_USER_ACTION_TARGET_KIND ATK_UNIT
883#define RS_DEFAULT_ACTION_MIN_RANGE 0
884#define RS_DEFAULT_ACTION_MAX_RANGE 1
885/* Can't move less than one step, or it's not move at all */
886#define RS_DEFAULT_MOVE_MIN_RANGE 1
887#define RS_DEFAULT_EXPLODE_NUCLEAR_MAX_RANGE 0
888
889#define RS_ACTION_NO_MAX_DISTANCE "unlimited"
890
891#ifdef __cplusplus
892}
893#endif /* __cplusplus */
894
895#endif /* FC__GAME_H */
char * incite_cost
Definition comments.c:74
#define MAX_LEN_MSG
Definition conn_types.h:37
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit * punit
Definition dialogs_g.h:74
trait_dist_mode
Definition fc_types.h:1023
#define MAX_NUM_BUILDING_LIST
Definition fc_types.h:46
#define MAX_LEN_ALLOW_TAKE
Definition fc_types.h:70
#define MAX_LEN_STARTUNIT
Definition fc_types.h:73
#define MAX_LEN_NAME
Definition fc_types.h:66
#define MAX_LEN_DEMOGRAPHY
Definition fc_types.h:69
#define MAX_NUM_TECH_LIST
Definition fc_types.h:44
const char * population_to_text(int thousand_citizen)
Definition game.c:737
void game_reset(void)
Definition game.c:491
barbarians_rate
Definition game.h:51
@ BARBS_HUTS_ONLY
Definition game.h:53
@ BARBS_FREQUENT
Definition game.h:55
@ BARBS_NORMAL
Definition game.h:54
@ BARBS_DISABLED
Definition game.h:52
@ BARBS_HORDES
Definition game.h:56
void user_flag_init(struct user_flag *flag)
Definition game.c:827
static bool is_ruleset_compat_mode(void)
Definition game.h:362
void user_flag_free(struct user_flag *flag)
Definition game.c:836
struct civ_game game
Definition game.c:61
void game_ruleset_init(void)
Definition game.c:515
bool is_player_phase(const struct player *pplayer, int phase)
Definition game.c:710
debug_globals
Definition game.h:39
@ DEBUG_LAST
Definition game.h:41
@ DEBUG_FERRIES
Definition game.h:40
scorelog_level
Definition game.h:67
@ SL_HUMANS
Definition game.h:69
@ SL_ALL
Definition game.h:68
int current_turn_timeout(void)
Definition game.c:851
struct city * game_city_by_name(const char *name)
Definition game.c:87
void game_ruleset_free(void)
Definition game.c:564
void game_init(bool keep_ruleset_value)
Definition game.c:443
bool _ruleset_compat_mode
Definition game.c:66
void game_remove_unit(struct world *gworld, struct unit *punit)
Definition game.c:123
struct unit * game_unit_by_number(int id)
Definition game.c:115
int civ_population(const struct player *pplayer)
Definition game.c:73
void game_remove_city(struct world *gworld, struct city *pcity)
Definition game.c:184
#define any_web_conns()
Definition game.h:316
void game_free(void)
Definition game.c:474
autosave_type
Definition game.h:59
@ AS_INTERRUPT
Definition game.h:63
@ AS_GAME_OVER
Definition game.h:61
@ AS_QUITIDLE
Definition game.h:62
@ AS_TIMER
Definition game.h:64
@ AS_TURN
Definition game.h:60
city_names_mode
Definition game.h:44
@ CNM_PLAYER_UNIQUE
Definition game.h:46
@ CNM_GLOBAL_UNIQUE
Definition game.h:47
@ CNM_NO_RESTRICTIONS
Definition game.h:45
@ CNM_NO_STEALING
Definition game.h:48
void game_map_init(void)
Definition game.c:461
void initialize_globals(void)
Definition game.c:686
int generate_save_name(const char *format, char *buf, int buflen, const char *reason)
Definition game.c:794
static void set_ruleset_compat_mode(bool active)
Definition game.h:354
struct city * game_city_by_number(int id)
Definition game.c:106
const char * name
Definition inputfile.c:127
fz_method
Definition ioz.h:36
plrcolor_mode
Definition player.h:52
unsigned int randseed
Definition randseed.h:23
#define MAX_LEN_PATH
Definition shared.h:32
Definition city.h:320
int diplgoldcost
Definition game.h:140
int contactturns
Definition game.h:137
int num_phases
Definition game.h:169
enum city_names_mode allowed_city_names
Definition game.h:127
int unitwaittime
Definition game.h:198
bool multiresearch
Definition game.h:163
int incite_gold_capt_chance
Definition game.h:142
char * nationlist
Definition game.h:282
char scorefile[MAX_LEN_PATH]
Definition game.h:224
int named_teams
Definition game.h:294
size_t as_count
Definition game.h:293
char type[20]
Definition game.h:267
struct civ_game::@31::@35::@39 mutexes
int mgr_worldchance
Definition game.h:162
struct rgbcolor_list * plr_colors
Definition game.h:245
int kick_time
Definition game.h:153
const char ** allowed_govs
Definition game.h:285
bool chat
Definition game.h:253
void(* unit_deallocate)(int unit_id)
Definition game.h:301
enum barbarians_rate barbarianrate
Definition game.h:133
bool last_updated_year
Definition game.h:236
int upgrade_veteran_loss
Definition game.h:199
int dispersion
Definition game.h:143
bool threaded_save
Definition game.h:180
int max_size
Definition game.h:252
int world_peace_start
Definition game.h:238
int save_compress_level
Definition game.h:181
struct rgbcolor * plr_bg_color
Definition game.h:103
int tcptimeout
Definition game.h:195
int incite_total_factor
Definition game.h:150
int init_vis_radius_sq
Definition game.h:152
char start_units[MAX_LEN_STARTUNIT]
Definition game.h:189
struct civ_game::@31::@35::@36 event_cache
int save_nturns
Definition game.h:183
bool debug[DEBUG_LAST]
Definition game.h:202
float turn_change_time
Definition game.h:218
bool vision_reveal_tiles
Definition game.h:200
struct packet_scenario_description scenario_desc
Definition game.h:88
char * description_file
Definition game.h:281
int mgr_nationchance
Definition game.h:160
char connectmsg[MAX_LEN_MSG]
Definition game.h:219
bool fixedlength
Definition game.h:146
int spaceship_travel_pct
Definition game.h:179
struct conn_list * glob_observers
Definition game.h:98
bool save_private_map
Definition game.h:262
int techlost_recv
Definition game.h:194
struct packet_ruleset_control control
Definition game.h:83
char * ruleset_summary
Definition game.h:84
bool mgr_foodneeded
Definition game.h:159
int diplchance
Definition game.h:138
int netwait
Definition game.h:168
struct player * random_move_time
Definition game.h:276
char ** nc_agovs
Definition game.h:286
bool fogofwar_old
Definition game.h:234
int incite_gold_loss_chance
Definition game.h:141
int end_turn
Definition game.h:144
bool nuclear_winter
Definition game.h:231
bool settings_gamestart_valid
Definition game.h:243
fc_mutex city_list
Definition game.h:271
struct civ_game::@31::@35::@37 save_options
enum plrcolor_mode plrcolormode
Definition game.h:128
int onsetbarbarian
Definition game.h:171
int base_incite_cost
Definition game.h:134
char demography[MAX_LEN_DEMOGRAPHY]
Definition game.h:240
struct conn_list * est_connections
Definition game.h:97
struct packet_game_info info
Definition game.h:89
int autoupgrade_veteran_loss
Definition game.h:132
int mgr_turninterval
Definition game.h:161
char user_message[256]
Definition game.h:266
int min_players
Definition game.h:166
unsigned autosaves
Definition game.h:185
int timeoutcounter
Definition game.h:207
struct timer * save_timer
Definition game.h:217
bool endspaceship
Definition game.h:145
time_t last_ping
Definition game.h:210
enum scorelog_level scoreloglevel
Definition game.h:223
char rulesetdir[MAX_LEN_NAME]
Definition game.h:239
bool ruleset_ready
Definition game.h:117
int start_year
Definition game.h:191
bool migration
Definition game.h:164
int additional_phase_seconds
Definition game.h:212
int incite_improvement_factor
Definition game.h:149
struct section_file * luadata
Definition game.h:247
bool ip_hide
Definition game.h:174
int diplbulbcost
Definition game.h:139
int scoreturn
Definition game.h:225
randseed seed
Definition game.h:227
bool natural_city_names
Definition game.h:167
int dbid
Definition game.h:248
char ** embedded_nations
Definition game.h:283
int maxconnectionsperhost
Definition game.h:155
struct packet_scenario_info scenario
Definition game.h:87
struct trait_limits default_traits[TRAIT_COUNT]
Definition game.h:274
int timeoutint
Definition game.h:203
int pingtimeout
Definition game.h:173
char ** nc_astyles
Definition game.h:292
struct conn_list * web_client_connections
Definition game.h:99
int occupychance
Definition game.h:170
randseed seed_setting
Definition game.h:226
struct timer * phase_timer
Definition game.h:211
int killunhomed
Definition game.h:154
int nuclear_winter_percent
Definition game.h:232
int conquercost
Definition game.h:136
unsigned revealmap
Definition game.h:177
char orig_game_version[MAX_LEN_NAME]
Definition game.h:221
int pingtime
Definition game.h:172
int techloss_restore
Definition game.h:192
const char ** allowed_terrains
Definition game.h:288
char default_ai_type_name[256]
Definition game.h:278
struct civ_game::@31::@35::@40 ruledit
struct civ_game::@33 callbacks
char * ruleset_description
Definition game.h:85
int civilwarsize
Definition game.h:135
struct conn_list * all_connections
Definition game.h:96
bool save_known
Definition game.h:259
size_t ag_count
Definition game.h:287
bool savepalace
Definition game.h:187
int freecost
Definition game.h:148
char nationset[MAX_LEN_NAME]
Definition game.h:157
const char ** allowed_styles
Definition game.h:291
int aqueductloss
Definition game.h:129
char save_name[MAX_LEN_NAME]
Definition game.h:220
enum fz_method save_compress_type
Definition game.h:182
enum trait_dist_mode trait_dist
Definition game.h:165
bool foggedborders
Definition game.h:147
struct civ_game::@31::@35 server
char ** nc_aterrs
Definition game.h:289
size_t embedded_nations_count
Definition game.h:284
bool ruleset_init
Definition game.h:116
int incite_unit_factor
Definition game.h:151
char * ruleset_capabilities
Definition game.h:86
int timeoutincmult
Definition game.h:205
bool homecaughtunits
Definition game.h:188
struct civ_game::@30 rgame
bool global_warming
Definition game.h:229
int ransom_gold
Definition game.h:175
struct packet_timeout_info tinfo
Definition game.h:91
size_t at_count
Definition game.h:290
struct civ_game::@31::@35::@38 meta_info
int timeoutinc
Definition game.h:204
char allow_take[MAX_LEN_ALLOW_TAKE]
Definition game.h:241
bool autoattack
Definition game.h:131
int phase_mode_stored
Definition game.h:216
bool start_city
Definition game.h:190
int max_players
Definition game.h:156
int revolution_length
Definition game.h:178
int turns
Definition game.h:251
bool save_starts
Definition game.h:261
bool auto_ai_toggle
Definition game.h:130
int save_frequency
Definition game.h:184
struct veteran_system * veteran
Definition game.h:101
int mgr_distance
Definition game.h:158
int global_warming_percent
Definition game.h:230
struct packet_calendar_info calendar
Definition game.h:90
struct government * default_government
Definition game.h:93
struct civ_game::@31::@34 client
struct government * government_during_revolution
Definition game.h:94
int timeoutintinc
Definition game.h:206
bool info
Definition game.h:254
int techlost_donor
Definition game.h:193
int timeoutaddenemymove
Definition game.h:208
bool scorelog
Definition game.h:222
int techpenalty
Definition game.h:196
int razechance
Definition game.h:176
bool turnblock
Definition game.h:197
Definition timing.c:81
Definition unit.h:140
char * name
Definition game.h:74
char * helptxt
Definition game.h:75