Index: server/srv_main.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/srv_main.c,v retrieving revision 1.127 diff -u -r1.127 srv_main.c --- server/srv_main.c 15 May 2003 16:02:00 -0000 1.127 +++ server/srv_main.c 31 May 2003 14:57:49 -0000 @@ -188,10 +188,17 @@ **************************************************************************/ static bool is_game_over(void) { + static bool reached_milestone[MAX_NUM_PLAYERS + MAX_NUM_BARBARIANS]; + static bool initialized = FALSE; int barbs = 0, alive = 0; bool all_allied; struct player *victor = NULL; + if (!initialized) { + memset(reached_milestone, FALSE, sizeof(reached_milestone)); + initialized = TRUE; + } + /* quit if we are past the year limit */ if (game.year > game.end_year) { notify_conn(&game.est_connections, @@ -199,6 +206,44 @@ gamelog(GAMELOG_NORMAL, _("Game ended in a draw as end year exceeded")); return TRUE; } + + /* Output some AI debugging info. Yes, tech 81 (The Republic) + * is hardcoded here. It is intentional. Also the lack of i18n.*/ + players_iterate(pplayer) { + int workers = 0, food = 0, shields = 0, trade = 0, settlers = 0; + + if (!ai_handicap(pplayer, H_EXPERIMENTAL)) { + continue; /* Not relevant. */ + } + /* Compile statistics */ + unit_list_iterate(pplayer->units, punit) { + if (unit_flag(punit, F_CITIES)) { + settlers++; + } + } unit_list_iterate_end; + city_list_iterate(pplayer->cities, pcity) { + workers += pcity->size; + shields += pcity->shield_prod; + food += pcity->food_prod; + trade += pcity->trade_prod; + } city_list_iterate_end; +#define AI_MILESTONE 81 + if (game.turn % 10 == 0) { + gamelog(GAMELOG_NORMAL, "AI: %s turn%d: cities%d, ppl%d, " + "food%d, prod%d, trade%d, settlers%d, other%d ", + pplayer->name, game.turn, + city_list_size(&pplayer->cities), workers, food, + shields, trade, settlers, + unit_list_size(&pplayer->units) - settlers); + } + if (get_invention(pplayer, AI_MILESTONE) == TECH_KNOWN + && !reached_milestone[pplayer->player_no]) { + gamelog(GAMELOG_NORMAL, "AI: %s reached %s in turn %d.", + pplayer->name, advances[AI_MILESTONE].name, game.turn); + reached_milestone[pplayer->player_no] = TRUE; + } + } players_iterate_end; +#undef AI_MILESTONE /* count barbarians */ players_iterate(pplayer) {