diff -Xdiff_ignore -r -u freeciv-cvs-Oct-18-orig/common/game.c freeciv-cvs-Oct-18-new/common/game.c --- freeciv-cvs-Oct-18-orig/common/game.c Sat Oct 13 07:55:26 2001 +++ freeciv-cvs-Oct-18-new/common/game.c Fri Oct 19 16:04:05 2001 @@ -701,6 +701,7 @@ game.explorer = GAME_DEFAULT_EXPLORER; game.dispersion = GAME_DEFAULT_DISPERSION; game.cityfactor = GAME_DEFAULT_CITYFACTOR; + game.citymindist = GAME_DEFAULT_CITYMINDIST; game.civilwarsize= GAME_DEFAULT_CIVILWARSIZE; game.unhappysize = GAME_DEFAULT_UNHAPPYSIZE; game.angrycitizen= GAME_DEFAULT_ANGRYCITIZEN; diff -Xdiff_ignore -r -u freeciv-cvs-Oct-18-orig/common/game.h freeciv-cvs-Oct-18-new/common/game.h --- freeciv-cvs-Oct-18-orig/common/game.h Sat Oct 13 07:55:27 2001 +++ freeciv-cvs-Oct-18-new/common/game.h Fri Oct 19 15:54:12 2001 @@ -72,6 +72,7 @@ int diplcost, freecost, conquercost; int diplchance; int cityfactor; + int citymindist; int civilwarsize; int min_players, max_players, nplayers; int aifill; @@ -323,6 +324,10 @@ #define GAME_DEFAULT_CITYFACTOR 14 #define GAME_MIN_CITYFACTOR 6 #define GAME_MAX_CITYFACTOR 100 + +#define GAME_DEFAULT_CITYMINDIST 0 +#define GAME_MIN_CITYMINDIST 0 /* if 0, ruleset will overwrite this */ +#define GAME_MAX_CITYMINDIST 5 #define GAME_DEFAULT_CIVILWARSIZE 10 #define GAME_MIN_CIVILWARSIZE 6 diff -Xdiff_ignore -r -u freeciv-cvs-Oct-18-orig/server/ruleset.c freeciv-cvs-Oct-18-new/server/ruleset.c --- freeciv-cvs-Oct-18-orig/server/ruleset.c Sat Oct 13 07:55:42 2001 +++ freeciv-cvs-Oct-18-new/server/ruleset.c Fri Oct 19 15:57:44 2001 @@ -2136,12 +2136,18 @@ game.rgame.min_city_center_trade = secfile_lookup_int(&file, "civstyle.min_city_center_trade"); - game.rgame.min_dist_bw_cities = - secfile_lookup_int(&file, "civstyle.min_dist_bw_cities"); - if(game.rgame.min_dist_bw_cities<1) { - freelog(LOG_ERROR, "Bad value %i for min_dist_bw_cities. Using 2.", - game.rgame.min_dist_bw_cities); - game.rgame.min_dist_bw_cities = 2; + /* if the server variable citymindist is set (!= 0) the ruleset setting + is overwritten by citymindist */ + if (game.citymindist==0) { + game.rgame.min_dist_bw_cities = + secfile_lookup_int(&file, "civstyle.min_dist_bw_cities"); + if(game.rgame.min_dist_bw_cities<1) { + freelog(LOG_ERROR, "Bad value %i for min_dist_bw_cities. Using 2.", + game.rgame.min_dist_bw_cities); + game.rgame.min_dist_bw_cities = 2; + } + } else { + game.rgame.min_dist_bw_cities = game.citymindist; } game.rgame.init_vis_radius_sq = diff -Xdiff_ignore -r -u freeciv-cvs-Oct-18-orig/server/savegame.c freeciv-cvs-Oct-18-new/server/savegame.c --- freeciv-cvs-Oct-18-orig/server/savegame.c Thu Oct 18 07:59:17 2001 +++ freeciv-cvs-Oct-18-new/server/savegame.c Fri Oct 19 16:08:19 2001 @@ -1759,6 +1759,9 @@ game.save_nturns = secfile_lookup_int(file, "game.save_nturns"); } + game.citymindist = secfile_lookup_int_default(file, + GAME_DEFAULT_CITYMINDIST, "game.citymindist"); + if (has_capability("watchtower", savefile_options)) { game.watchtower_extra_vision = secfile_lookup_int(file, "game.watchtower_extra_vision"); @@ -2103,6 +2106,7 @@ secfile_insert_int(file, game.unhappysize, "game.unhappysize"); secfile_insert_int(file, game.angrycitizen, "game.angrycitizen"); secfile_insert_int(file, game.cityfactor, "game.cityfactor"); + secfile_insert_int(file, game.citymindist, "game.citymindist"); secfile_insert_int(file, game.civilwarsize, "game.civilwarsize"); secfile_insert_int(file, game.diplcost, "game.diplcost"); secfile_insert_int(file, game.freecost, "game.freecost"); diff -Xdiff_ignore -r -u freeciv-cvs-Oct-18-orig/server/stdinhand.c freeciv-cvs-Oct-18-new/server/stdinhand.c --- freeciv-cvs-Oct-18-orig/server/stdinhand.c Sat Oct 13 07:55:43 2001 +++ freeciv-cvs-Oct-18-new/server/stdinhand.c Fri Oct 19 16:06:04 2001 @@ -538,6 +538,16 @@ "Democracy; for other governments the effect occurs at " "smaller numbers of cities.") }, + { "citymindist", &game.citymindist, NULL, NULL, + SSET_RULES, SSET_TO_CLIENT, + GAME_MIN_CITYMINDIST, GAME_MAX_CITYMINDIST, GAME_DEFAULT_CITYMINDIST, + N_("Minimum distance between cities (move distance)"), + N_("When a player founds a new city, it is checked if there is no " + "other city in citymindist distance. For example, if citymindist " + "is 3, there have to be at least two empty fields between two cities " + "every direction. If it is set to 0 (default), it is overwritten by " + "the current ruleset when the game starts.") }, + { "razechance", &game.razechance, NULL, NULL, SSET_RULES, SSET_TO_CLIENT, GAME_MIN_RAZECHANCE, GAME_MAX_RAZECHANCE, GAME_DEFAULT_RAZECHANCE,