Re: core file on civserver, http://civserver.freeciv.org/games/44510
Raimar Falke <rf13-r/[email protected]>
| Newsgroups | gmane.games.freeciv.devel,gmane.games.freeciv.general |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Oct 21, 2002 at 09:32:44PM -0700, [email protected] wrote: Found and fixed. The problem is that if choose_goal_tech returns 0 than player->research.researching isn't updated. So we have to call choose_random_tech to choose any random researchable tech. It was rare because it was triggered by "techlevel 50". Raimar -- email: rf13-r/[email protected] "The Internet is really just a series of bottlenecks joined by high speed networks." -- Sam Wilson
techlevel1.diff
(text/plain, 1.4 KB)
Index: server/plrhand.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/plrhand.c,v
retrieving revision 1.246
diff -u -r1.246 plrhand.c
--- server/plrhand.c 2002/10/09 14:10:17 1.246
+++ server/plrhand.c 2002/10/22 22:48:52
@@ -546,8 +546,7 @@
set_invention(plr, nation->init_techs[i], TECH_KNOWN);
}
-
- for (i=0;i<tech;i++) {
+ for (i = 0; i < tech; i++) {
update_research(plr);
choose_random_tech(plr); /* could be choose_goal_tech -- Syela */
set_invention(plr, plr->research.researching, TECH_KNOWN);
@@ -555,7 +554,9 @@
/* Mark the reachable techs */
update_research(plr);
- choose_goal_tech(plr);
+ if (choose_goal_tech(plr) == 0) {
+ choose_random_tech(plr);
+ }
}
/**************************************************************************
Index: server/report.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/report.c,v
retrieving revision 1.34
diff -u -r1.34 report.c
--- server/report.c 2002/10/09 16:12:17 1.34
+++ server/report.c 2002/10/22 22:48:53
@@ -341,7 +341,7 @@
static int get_research(struct player *pplayer)
{
- return (pplayer->score.techout * 100) / MAX(total_bulbs_required(pplayer), 1);
+ return (pplayer->score.techout * 100) / total_bulbs_required(pplayer);
}
static int get_literacy(struct player *pplayer)