diff -Nur -Xpatches/no.freeciv freeciv/server/mapgen.c my_freeciv/server/mapgen.c --- freeciv/server/mapgen.c Sat Oct 28 09:44:42 2000 +++ my_freeciv/server/mapgen.c Thu Dec 28 12:54:26 2000 @@ -1429,22 +1429,25 @@ **************************************************************************/ static void make_huts(int number) { - int x,y,l; + int x,y,prob; int count=0; - while ((number*map.xsize*map.ysize)/2000 && count++special|=S_HUT; - /* Don't add to islands[].goodies because islands[] not - setup at this point, except for generator>1, but they - have pre-set starters anyway. */ - } + prob=myrand(100); + if ( map.generator != 0 && (y==0 || y==map.ysize-1) ) continue; + /* no huts at the very poles please (Santa notwithstanding) */ + if ( map_get_terrain(x, y)==T_OCEAN ) continue; + if ( map_get_terrain(x, y)==T_ARCTIC && prob>10 ) continue; + if ( map_get_terrain(x, y)==T_TUNDRA && prob>30 ) continue; + if (!is_hut_close(x,y)) { + real_number--; + map_get_tile(x,y)->special|=S_HUT; + /* Don't add to islands[].goodies because islands[] not + setup at this point, except for generator>1, but they + have pre-set starters anyway. */ } } }