Index: common/player.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/player.h,v retrieving revision 1.82 diff -u -r1.82 player.h --- common/player.h 2002/09/23 22:47:10 1.82 +++ common/player.h 2002/10/29 15:23:49 @@ -42,7 +42,7 @@ H_NONE=0, /* no handicaps */ H_RIGIDPROD=1, /* can't switch to/from building_unit without penalty */ H_MAP=2, /* only knows map_get_known tiles */ - H_TECH=4, /* doesn't know what enemies have researched */ + H_LIMITEDHUTS=4, /* only gets gold from huts (implemented) */ H_CITYBUILDINGS=8, /* doesn't know what buildings are in enemy cities */ H_CITYUNITS=16, /* doesn't know what units are in enemy cities */ H_DEFENSIVE=32, /* builds lots of defensive buildings without calculating need */ Index: server/settlers.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/settlers.c,v retrieving revision 1.146 diff -u -r1.146 settlers.c --- server/settlers.c 2002/09/27 12:32:47 1.146 +++ server/settlers.c 2002/10/29 15:23:50 @@ -971,7 +971,7 @@ build a city at Y */ moves *= 2; /* and then build its NEXT city halfway between X and Y. -- Syela */ - b = city_desirability(pplayer, x, y) * (ai_fuzzy(pplayer, TRUE) ? 1 : 0); + b = city_desirability(pplayer, x, y); newv = amortize(b, moves); b = (food_upkeep * FOOD_WEIGHTING) * MORT; @@ -1263,8 +1263,7 @@ * if so, modify: gx, gy, best_newv, best_act */ if (unit_flag(punit, F_CITIES) && - pplayer->ai.control && - ai_fuzzy(pplayer, TRUE)) { /* don't want to make cities otherwise */ + pplayer->ai.control) { /* don't want to make cities otherwise */ int nx, ny; int want = evaluate_city_building(punit, &nx, &ny, &ferryboat); Index: server/stdinhand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/stdinhand.c,v retrieving revision 1.257 diff -u -r1.257 stdinhand.c --- server/stdinhand.c 2002/10/16 18:40:54 1.257 +++ server/stdinhand.c 2002/10/29 15:23:50 @@ -1612,7 +1612,8 @@ int h[11] = { -1, H_NONE, H_NONE, - H_RATES | H_TARGETS | H_HUTS | H_DEFENSIVE, + H_RATES | H_TARGETS | H_HUTS | H_DEFENSIVE + | H_LIMITEDHUTS, H_NONE, H_RATES | H_TARGETS | H_HUTS, H_NONE, @@ -1645,8 +1646,8 @@ **************************************************************************/ static int expansionism_of_skill_level(int level) { - int x[11] = { -1, 100, 100, 30/*easy*/, 100, 100, 100, 100, 100, 100, 100 }; - + int x[11] = { -1, 100, 100, 10/*easy*/, 100, 100, 100, 100, 100, 100, 100 }; + assert(level>0 && level<=10); return x[level]; } Index: server/unittools.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unittools.c,v retrieving revision 1.185 diff -u -r1.185 unittools.c --- server/unittools.c 2002/09/28 23:00:51 1.185 +++ server/unittools.c 2002/10/29 15:23:50 @@ -2443,6 +2443,7 @@ { struct player *pplayer = unit_owner(punit); bool ok = TRUE; + int alt; if (game.rgame.hut_overflight==OVERFLIGHT_NOTHING && is_air_unit(punit)) { return ok; @@ -2458,7 +2459,13 @@ return ok; } - switch (myrand(12)) { + if (ai_handicap(unit_owner(punit), H_LIMITEDHUTS)) { + /* Units from huts are usually devastating to newbies */ + alt = myrand(5); + } else { + alt = myrand(12); + } + switch (alt) { case 0: hut_get_gold(punit, 25); break;