diff -Nur -Xdiff_ignore freeciv_cvs/server/cityturn.c freeciv/server/cityturn.c --- freeciv_cvs/server/cityturn.c Fri Jan 26 19:09:26 2001 +++ freeciv/server/cityturn.c Sat Jan 27 13:21:14 2001 @@ -82,7 +82,6 @@ static void disband_city(struct city *pcity); -static void begin_city_turn(struct player *pplayer, struct city *pcity); static int update_city_activity(struct player *pplayer, struct city *pcity); static void worker_loop(struct city *pcity, int *foodneed, @@ -818,7 +817,7 @@ void begin_cities_turn(struct player *pplayer) { city_list_iterate(pplayer->cities, pcity) - begin_city_turn(pplayer, pcity); + define_orig_production_values(pcity); city_list_iterate_end; } @@ -1694,8 +1693,9 @@ /************************************************************************** Called every turn, at beginning of turn, for every city. + And also when caravan helps building wonder. **************************************************************************/ -static void begin_city_turn(struct player *pplayer, struct city *pcity) +void define_orig_production_values(struct city *pcity) { /* remember what this city is building at start of turn, so user can switch production back without penalty */ diff -Nur -Xdiff_ignore freeciv_cvs/server/cityturn.h freeciv/server/cityturn.h --- freeciv_cvs/server/cityturn.h Thu Dec 21 14:38:17 2000 +++ freeciv/server/cityturn.h Sat Jan 27 13:23:30 2001 @@ -38,4 +38,6 @@ void remove_obsolete_buildings_city(struct city *pcity, int refresh); void remove_obsolete_buildings(struct player *plr); +void define_orig_production_values(struct city *pcity); + #endif /* FC__CITYTURN_H */ diff -Nur -Xdiff_ignore freeciv_cvs/server/unithand.c freeciv/server/unithand.c --- freeciv_cvs/server/unithand.c Thu Jan 11 14:42:04 2001 +++ freeciv/server/unithand.c Sat Jan 27 13:41:59 2001 @@ -1144,10 +1144,16 @@ /* we're there! */ pcity_dest->shield_stock+=50; + + /* It is no longer possible to change production back without penalty */ + if (pcity_dest->turn_changed_target == game.year) + pcity_dest->turn_changed_target = GAME_START_YEAR; + define_orig_production_values (pcity_dest); + if (build_points_left(pcity_dest) < 0) { pcity_dest->shield_stock = improvement_value(pcity_dest->currently_building); } - + conn_list_do_buffer(&pplayer->connections); notify_player_ex(pplayer, pcity_dest->x, pcity_dest->y, E_NOEVENT, _("Game: Your %s helps build the %s in %s (%d remaining)."),