private async Task LeaveBattle(ServerBattle battle) { if (battle.Users.ContainsKey(Name)) { MyBattle = null; UserBattleStatus oldVal; if (battle.Users.TryRemove(Name, out oldVal)) { await server.SyncUserToAll(this); var bots = battle.Bots.Values.Where(x => x.owner == Name).ToList(); foreach (var b in bots) { BotBattleStatus obs; if (battle.Bots.TryRemove(b.Name, out obs)) { await server.Broadcast(battle.Users.Keys, new RemoveBot() { Name = b.Name }); } } } await battle.CheckCloseBattle(); } }