diff -r dc4a12a84c92 -r a479916799ea rust/hedgewars-server/src/server/handlers/inroom.rs --- a/rust/hedgewars-server/src/server/handlers/inroom.rs Wed May 22 22:42:20 2019 +0300 +++ b/rust/hedgewars-server/src/server/handlers/inroom.rs Wed May 22 23:05:55 2019 +0300 @@ -17,8 +17,7 @@ }; use base64::{decode, encode}; use log::*; -use std::iter::once; -use std::mem::swap; +use std::{cmp::min, iter::once, mem::swap}; #[derive(Clone)] struct ByMsg<'a> { @@ -166,7 +165,7 @@ MaxTeams(count) => { if !client.is_master() { response.add(Warning("You're not the room master!".to_string()).send_self()); - } else if count < 2 || count > MAX_TEAMS_IN_ROOM { + } else if !(2..=MAX_TEAMS_IN_ROOM).contains(&count) { response .add(Warning("/maxteams: specify number from 2 to 8".to_string()).send_self()); } else { @@ -291,12 +290,13 @@ SetHedgehogsNumber(team_name, number) => { let addable_hedgehogs = room.addable_hedgehogs(); if let Some((_, team)) = room.find_team_and_owner_mut(|t| t.name == team_name) { + let max_hedgehogs = min( + MAX_HEDGEHOGS_PER_TEAM, + addable_hedgehogs + team.hedgehogs_number, + ); if !client.is_master() { response.add(Error("You're not the room master!".to_string()).send_self()); - } else if number < 1 - || number > MAX_HEDGEHOGS_PER_TEAM - || number > addable_hedgehogs + team.hedgehogs_number - { + } else if !(1..=max_hedgehogs).contains(&number) { response .add(HedgehogsNumber(team.name.clone(), team.hedgehogs_number).send_self()); } else {