diff --git a/server/report.c b/server/report.c index 7d9a4e065..da3d93808 100644 --- a/server/report.c +++ b/server/report.c @@ -404,36 +404,60 @@ void report_wonders_of_the_world(struct conn_list *dest) buffer[0] = '\0'; - improvement_iterate(i) { - if (is_great_wonder(i)) { - struct city *pcity = city_from_great_wonder(i); - - if (pcity) { - if (player_count() > team_count()) { - /* There exists a team with more than one member. */ - char team_name[2 * MAX_LEN_NAME]; - - team_pretty_name(city_owner(pcity)->team, team_name, - sizeof(team_name)); - cat_snprintf(buffer, sizeof(buffer), - /* TRANS: "Colossus in Rhodes (Greek, team 2)". */ - _("%s in %s (%s, %s)\n"), - city_improvement_name_translation(pcity, i), - city_name_get(pcity), - nation_adjective_for_player(city_owner(pcity)), - team_name); - } else { - cat_snprintf(buffer, sizeof(buffer), _("%s in %s (%s)\n"), - city_improvement_name_translation(pcity, i), - city_name_get(pcity), - nation_adjective_for_player(city_owner(pcity))); - } - } else if (great_wonder_is_destroyed(i)) { + /* find wonders, and print the destroyed ones */ + improvement_iterate(imp) { + if (is_great_wonder(imp)) { + if (great_wonder_is_destroyed(imp)) { cat_snprintf(buffer, sizeof(buffer), _("%s has been DESTROYED\n"), - improvement_name_translation(i)); + improvement_name_translation(imp)); } } } improvement_iterate_end; + + /* blank line */ + cat_snprintf(buffer, sizeof(buffer), "\n"); + cat_snprintf(buffer, sizeof(buffer), "===================================\n"); + + /* sort by players */ + players_iterate(pplayer) { + int n=0; + city_list_iterate(pplayer->cities, pcity) { + int w=0; + city_built_iterate(pcity, i) { + if (is_great_wonder(i)) { + w++; + n++; + if (player_count() > team_count()) { + /* There exists a team with more than one member. */ + char team_name[2 * MAX_LEN_NAME]; + + team_pretty_name(city_owner(pcity)->team, team_name, + sizeof(team_name)); + cat_snprintf(buffer, sizeof(buffer), + /* TRANS: "Colossus in Rhodes (Greek, team 2)". */ + _("%s in %s (%s, %s)\n"), + city_improvement_name_translation(pcity, i), + city_name_get(pcity), + nation_adjective_for_player(city_owner(pcity)), + team_name); + } else { + cat_snprintf(buffer, sizeof(buffer), _("%s in %s (%s)\n"), + city_improvement_name_translation(pcity, i), + city_name_get(pcity), + nation_adjective_for_player(city_owner(pcity))); + } + } /* endif is_great_wonder */ + } city_built_iterate_end; + if (w!=0) { + cat_snprintf(buffer, sizeof(buffer), "\n"); + } + } city_list_iterate_end; + if (n!=0) { + cat_snprintf(buffer, sizeof(buffer), " - - - - - - - - - -\n"); + } + } players_iterate_end; + + cat_snprintf(buffer, sizeof(buffer), "===================================\n"); improvement_iterate(i) { if (is_great_wonder(i)) {