diff -r 3f6a7a867040 -r a798e6441a36 rust/hedgewars-server/src/core/server.rs --- a/rust/hedgewars-server/src/core/server.rs Tue Dec 31 04:42:20 2019 +0300 +++ b/rust/hedgewars-server/src/core/server.rs Sat Jan 04 01:39:13 2020 +0300 @@ -986,8 +986,6 @@ .collect(); if let Some(ref mut info) = room.game_info { - info.teams_in_game -= team_names.len() as u8; - for team_name in &team_names { let remove_msg = utils::to_engine_msg(std::iter::once(b'F').chain(team_name.bytes())); @@ -1106,21 +1104,15 @@ client.set_is_joined_mid_game(room.game_info.is_some()); client.set_is_in_game(room.game_info.is_some()); - if let Some(ref mut info) = room.game_info { - let teams = info.client_teams(client.id); - client.teams_in_game = teams.clone().count() as u8; - client.clan = teams.clone().next().map(|t| t.color); - let team_names: Vec<_> = teams.map(|t| t.name.clone()).collect(); + let teams = room.client_teams(client.id); + client.teams_in_game = teams.clone().count() as u8; + client.clan = teams.clone().next().map(|t| t.color); + let team_names: Vec<_> = teams.map(|t| t.name.clone()).collect(); - if !team_names.is_empty() { - info.left_teams.retain(|name| !team_names.contains(&name)); - info.teams_in_game += team_names.len() as u8; - room.teams = info - .teams_at_start - .iter() - .filter(|(_, t)| !team_names.contains(&t.name)) - .cloned() - .collect(); + match room.game_info { + Some(ref mut info) if !team_names.is_empty() => { + info.left_teams.retain(|name| !team_names.contains(&name)) } + _ => (), } }