diff -Nur -X freeciv.modified/diff_ignore freeciv.unmodified/common/map.c freeciv.modified/common/map.c --- freeciv.unmodified/common/map.c Sat Dec 8 10:15:55 2001 +++ freeciv.modified/common/map.c Tue Dec 11 20:14:08 2001 @@ -191,6 +191,8 @@ map.riverlength = MAP_DEFAULT_RIVERS; map.forestsize = MAP_DEFAULT_FORESTS; map.generator = MAP_DEFAULT_GENERATOR; + map.tinyisles = MAP_DEFAULT_TINYISLES; + map.poles = MAP_DEFAULT_POLES; map.tiles = NULL; map.num_continents = 0; map.num_start_positions = 0; @@ -447,8 +449,9 @@ if (map_get_tile(x, y)->special&S_HUT) return 1; - /* don't want them starting on the poles: */ - if (map_get_continent(x, y)<=2 && map.generator != 0) + /* don't want them starting on the poles unless the poles are + connected to more land: */ + if (map_get_continent(x, y)<=2 && map.generator != 0 && map.poles) return 1; /* don't start too close to someone else: */ diff -Nur -X freeciv.modified/diff_ignore freeciv.unmodified/common/map.h freeciv.modified/common/map.h --- freeciv.unmodified/common/map.h Sun Dec 9 04:16:23 2001 +++ freeciv.modified/common/map.h Tue Dec 11 20:16:12 2001 @@ -168,6 +168,8 @@ int riverlength; int forestsize; int generator; + int tinyisles; + int poles; int num_start_positions; int fixed_start_positions; int have_specials; @@ -658,5 +660,9 @@ #define MAP_DEFAULT_GENERATOR 1 #define MAP_MIN_GENERATOR 1 #define MAP_MAX_GENERATOR 4 + +#define MAP_DEFAULT_TINYISLES 0 + +#define MAP_DEFAULT_POLES 1 #endif /* FC__MAP_H */ diff -Nur -X freeciv.modified/diff_ignore freeciv.unmodified/server/mapgen.c freeciv.modified/server/mapgen.c --- freeciv.unmodified/server/mapgen.c Fri Nov 30 06:39:21 2001 +++ freeciv.modified/server/mapgen.c Tue Dec 11 20:37:05 2001 @@ -843,7 +844,8 @@ tres*=9; tres/=10; } while (abs(total-count)> maxval/40); - make_passable(); + if (map.poles) + make_passable(); make_mountains(maxval*8/10); make_forests(); make_swamps(); @@ -1002,7 +1004,7 @@ } whole_map_iterate_end; /* the arctic and the antarctic are continents 1 and 2 for generator>0*/ - if (map.generator>0) { + if ((map.generator>0) && map.poles) { firstcont = 3; } else { firstcont = 1; @@ -1201,7 +1203,8 @@ mapgenerator2(); if( map.generator == 1 ) mapgenerator1(); - remove_tiny_islands(); + if( !map.tinyisles ) + remove_tiny_islands(); } if(!map.have_specials) /* some scenarios already provide specials */ diff -Nur -X freeciv.modified/diff_ignore freeciv.unmodified/server/stdinhand.c freeciv.modified/server/stdinhand.c --- freeciv.unmodified/server/stdinhand.c Tue Dec 11 11:48:49 2001 +++ freeciv.modified/server/stdinhand.c Tue Dec 11 20:56:21 2001 @@ -216,6 +216,18 @@ "Note: values 2,3 and 4 generate \"fairer\" (but more boring) maps.\n" "(Zero indicates a scenario map.)") }, + { "tinyisles", &map.tinyisles, NULL, NULL, + SSET_MAP_GEN, SSET_TO_CLIENT, + 0, 1, MAP_DEFAULT_TINYISLES, + N_("Presence or absence of 1x1 islands"), + N_("0 = no 1x1 islands; 1 = some 1x1 islands") }, + + { "poles", &map.poles, NULL, NULL, + SSET_MAP_GEN, SSET_TO_CLIENT, + 0, 1, MAP_DEFAULT_POLES, + N_("Poles separated from other continents or not"), + N_("0 = continents may attach to poles; 1 = poles will be separate") }, + { "landmass", &map.landpercent, NULL, NULL, SSET_MAP_GEN, SSET_TO_CLIENT, MAP_MIN_LANDMASS, MAP_MAX_LANDMASS, MAP_DEFAULT_LANDMASS,