[Freeciv-Dev] Re: (PR#12014) Observers in score
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
<URL: http://bugs.freeciv.org/Ticket/Display.html?id=12014 >
On Tue, 25 Jan 2005, ue80@xxxxxxxxxxxxxxxxxxxxx wrote:
> > Observer shouldn't show up in the score output during the game or at the
> > end. (And how does an observer get 2 points?)
>
> Tech none is counted as tech ... so every player gets 2 points...
Patch.
- Per
Index: server/score.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/server/score.c,v
retrieving revision 1.15
diff -u -r1.15 score.c
--- server/score.c 22 Jan 2005 19:45:44 -0000 1.15
+++ server/score.c 25 Jan 2005 23:16:20 -0000
@@ -368,6 +368,7 @@
struct city *pcity;
int landarea, settledarea;
static struct claim_map cmap = { NULL, NULL, NULL,NULL };
+ static int turn = 0;
pplayer->score.happy = 0;
pplayer->score.content = 0;
@@ -390,10 +391,7 @@
pplayer->score.literacy = 0;
pplayer->score.spaceship = 0;
- if (is_barbarian(pplayer)) {
- if (pplayer->player_no == game.nplayers - 1) {
- free_landarea_map(&cmap);
- }
+ if (is_barbarian(pplayer) || pplayer->is_observer) {
return;
}
@@ -418,19 +416,17 @@
pplayer->score.literacy += (city_population(pcity) * bonus) / 100;
} city_list_iterate_end;
- if (pplayer->player_no == 0) {
+ /* rebuild map only once per turn */
+ if (game.turn != turn) {
free_landarea_map(&cmap);
build_landarea_map(&cmap);
}
get_player_landarea(&cmap, pplayer, &landarea, &settledarea);
pplayer->score.landarea = landarea;
pplayer->score.settledarea = settledarea;
- if (pplayer->player_no == game.nplayers - 1) {
- free_landarea_map(&cmap);
- }
tech_type_iterate(i) {
- if (get_invention(pplayer, i)==TECH_KNOWN) {
+ if (i > A_NONE && get_invention(pplayer, i) == TECH_KNOWN) {
pplayer->score.techs++;
}
} tech_type_iterate_end;
|
|