Bug #324 ยป 0001-Fix-allied-victory-of-all-players.patch
server/srv_main.c | ||
---|---|---|
_("Game is over."));
|
||
log_normal(_("Game is over."));
|
||
return TRUE;
|
||
} else if (0 < defeated) {
|
||
/* If nobody conceded the game, it mays be a solo game or a single team
|
||
* game. */
|
||
fc_assert(NULL != victor);
|
||
/* Quit if we have team victory. */
|
||
if (1 < team_count()) {
|
||
teams_iterate(pteam) {
|
||
const struct player_list *members = team_members(pteam);
|
||
int team_candidates = 0, team_defeated = 0;
|
||
if (1 == player_list_size(members)) {
|
||
/* This is not really a team, single players are handled below. */
|
||
continue;
|
||
}
|
||
player_list_iterate(members, pplayer) {
|
||
if (pplayer->is_alive
|
||
&& !player_status_check((pplayer), PSTATUS_SURRENDER)) {
|
||
team_candidates++;
|
||
} else {
|
||
team_defeated++;
|
||
} else {
|
||
if (0 < defeated) {
|
||
/* If nobody conceded the game, it mays be a solo game or a single team
|
||
* game. */
|
||
fc_assert(NULL != victor);
|
||
/* Quit if we have team victory. */
|
||
if (1 < team_count()) {
|
||
teams_iterate(pteam) {
|
||
const struct player_list *members = team_members(pteam);
|
||
int team_candidates = 0, team_defeated = 0;
|
||
if (1 == player_list_size(members)) {
|
||
/* This is not really a team, single players are handled below. */
|
||
continue;
|
||
}
|
||
} player_list_iterate_end;
|
||
fc_assert(team_candidates + team_defeated
|
||
== player_list_size(members));
|
||
if (team_candidates == candidates && team_defeated < defeated) {
|
||
/* We need a player in a other team to conced the game here. */
|
||
notify_conn(game.est_connections, NULL, E_GAME_END, ftc_server,
|
||
_("Team victory to %s."),
|
||
team_name_translation(pteam));
|
||
log_normal(_("Team victory to %s."), team_name_translation(pteam));
|
||
/* All players of the team win, even dead and surrended ones. */
|
||
player_list_iterate(members, pplayer) {
|
||
pplayer->is_winner = TRUE;
|
||
if (pplayer->is_alive
|
||
&& !player_status_check((pplayer), PSTATUS_SURRENDER)) {
|
||
team_candidates++;
|
||
} else {
|
||
team_defeated++;
|
||
}
|
||
} player_list_iterate_end;
|
||
return TRUE;
|
||
}
|
||
} teams_iterate_end;
|
||
fc_assert(team_candidates + team_defeated
|
||
== player_list_size(members));
|
||
if (team_candidates == candidates && team_defeated < defeated) {
|
||
/* We need a player in a other team to conced the game here. */
|
||
notify_conn(game.est_connections, NULL, E_GAME_END, ftc_server,
|
||
_("Team victory to %s."),
|
||
team_name_translation(pteam));
|
||
log_normal(_("Team victory to %s."), team_name_translation(pteam));
|
||
/* All players of the team win, even dead and surrended ones. */
|
||
player_list_iterate(members, pplayer) {
|
||
pplayer->is_winner = TRUE;
|
||
} player_list_iterate_end;
|
||
return TRUE;
|
||
}
|
||
} teams_iterate_end;
|
||
}
|
||
}
|
||
/* Check for allied victory. */
|