diff -r -u freeciv-cvs/common/city.c my_freeciv/common/city.c --- freeciv-cvs/common/city.c Sat Jan 29 16:08:16 2000 +++ my_freeciv/common/city.c Mon Jan 31 01:32:17 2000 @@ -1172,9 +1172,6 @@ { int city_shield_surplus = pcity->shield_surplus; - if(city_shield_surplus==0 && !city_unhappy(pcity)) - city_shield_surplus=1; - if (city_shield_surplus > 0) { int rounds, cost; diff -r -u freeciv-cvs/server/cityturn.c my_freeciv/server/cityturn.c --- freeciv-cvs/server/cityturn.c Tue Jan 25 16:50:02 2000 +++ my_freeciv/server/cityturn.c Mon Jan 31 01:30:51 2000 @@ -1112,7 +1112,7 @@ struct government *g = get_gov_pplayer(pplayer); int space_part; - if (pcity->shield_surplus<0) { + while (pcity->shield_surplus<0) { unit_list_iterate(pcity->units_supported, punit) { if (utype_shield_cost(get_unit_type(punit->type), g)) { notify_player_ex(pplayer, pcity->x, pcity->y, E_UNIT_LOST, @@ -1125,8 +1125,6 @@ unit_list_iterate_end; } - if(pcity->shield_surplus<=0 && !city_unhappy(pcity)) - pcity->shield_surplus=1; pcity->shield_stock+=pcity->shield_surplus; if (!pcity->is_building_unit) { if (pcity->currently_building==B_CAPITAL) {