diff -ru -X /home/jjm/cvs/no.freeciv FreecivCVS/server/cityturn.c freeciv/server/cityturn.c --- FreecivCVS/server/cityturn.c Sat Mar 11 10:32:30 2000 +++ freeciv/server/cityturn.c Sun Mar 12 14:35:50 2000 @@ -1168,6 +1191,7 @@ { struct government *g = get_gov_pplayer(pplayer); int space_part; + int city_built_city_builder; while (pcity->shield_surplus<0) { unit_list_iterate(pcity->units_supported, punit) { @@ -1270,7 +1294,10 @@ } } } else { + city_built_city_builder = 0; + upgrade_unit_prod(pcity); + /* FIXME: F_CITIES should be changed to any unit * that 'contains' 1 (or more) pop -- sjolie */ @@ -1290,8 +1317,7 @@ return 1; } - pcity->size--; - city_auto_remove_worker(pcity); + city_built_city_builder = 1; } pcity->turn_last_built = game.year; @@ -1302,6 +1328,12 @@ pcity->id, -1); /* to eliminate micromanagement, we only subtract the unit's cost */ pcity->shield_stock-=unit_value(pcity->currently_building); + + if (city_built_city_builder) { + pcity->size--; + city_auto_remove_worker(pcity); + } + notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_BUILD, _("Game: %s is finished building %s."), pcity->name,