? rc ? diff ? whole_diff ? msgfmt1.diff ? tech_info1.diff ? no_tech_loss1.diff ? local_warmap131201.diff ? queue ? unit_move_turns1.diff Index: server/cityturn.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/cityturn.c,v retrieving revision 1.169 diff -u -r1.169 cityturn.c --- server/cityturn.c 2002/01/10 11:07:58 1.169 +++ server/cityturn.c 2002/01/14 09:02:26 @@ -70,7 +70,7 @@ static int disband_city(struct city *pcity); static void define_orig_production_values(struct city *pcity); -static int update_city_activity(struct player *pplayer, struct city *pcity); +static void update_city_activity(struct player *pplayer, struct city *pcity); static void nullify_caravan_and_disband_plus(struct city *pcity); static void worker_loop(struct city *pcity, int *foodneed, @@ -1233,10 +1233,9 @@ /************************************************************************** Called every turn, at end of turn, for every city. **************************************************************************/ -static int update_city_activity(struct player *pplayer, struct city *pcity) +static void update_city_activity(struct player *pplayer, struct city *pcity) { struct government *g = get_gov_pcity(pcity); - int got_tech = 0; city_refresh(pcity); @@ -1274,7 +1273,7 @@ int id=pcity->id; city_populate(pcity); if(!player_find_city_by_id(pplayer, id)) - return 0; + return; } pcity->is_updated=1; @@ -1285,8 +1284,7 @@ pcity->airlift=1; else pcity->airlift=0; - if (update_tech(pplayer, pcity->science_total)) - got_tech = 1; + update_tech(pplayer, pcity->science_total); pplayer->economic.gold+=pcity->tax_total; pay_for_buildings(pplayer, pcity); @@ -1319,7 +1317,6 @@ } sanity_check_city(pcity); } - return got_tech; } /************************************************************************** Index: server/plrhand.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v retrieving revision 1.205 diff -u -r1.205 plrhand.c --- server/plrhand.c 2002/01/11 11:11:53 1.205 +++ server/plrhand.c 2002/01/14 09:02:27 @@ -26,6 +26,7 @@ #include "rand.h" #include "support.h" #include "tech.h" +#include "shared.h" #include "citytools.h" #include "cityturn.h" @@ -375,14 +376,18 @@ /************************************************************************** Called from each city to update the research. **************************************************************************/ -int update_tech(struct player *plr, int bulbs) +void update_tech(struct player *plr, int bulbs) { - plr->research.bulbs_researched += bulbs; - if (plr->research.bulbs_researched < total_bulbs_required(plr)) { - return 0; - } else { + int missing = total_bulbs_required(plr) - plr->research.bulbs_researched; + + assert(missing > 0); + + if (bulbs >= missing) { + plr->research.bulbs_researched += missing; tech_researched(plr); - return 1; + plr->research.bulbs_researched += (bulbs - missing); + } else { + plr->research.bulbs_researched += bulbs; } } Index: server/plrhand.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/plrhand.h,v retrieving revision 1.40 diff -u -r1.40 plrhand.h --- server/plrhand.h 2002/01/11 11:11:53 1.40 +++ server/plrhand.h 2002/01/14 09:02:27 @@ -75,7 +75,7 @@ char saving_bulbs); void found_new_future_tech(struct player *pplayer); void tech_researched(struct player* plr); -int update_tech(struct player *plr, int bulbs); +void update_tech(struct player *plr, int bulbs); void init_tech(struct player *plr, int tech); void choose_random_tech(struct player *plr); void choose_tech(struct player *plr, int tech);