private async Task RussianRoulette(Player player) { // Kill units locally List <GeneralizedUnitHelper> killedOnes = new List <GeneralizedUnitHelper>(); int unitNumber = _generalizedUnits.Count; Random random = new Random(); while (_supportAmount < _supportNeed) { int killIndex = random.Next(unitNumber); GeneralizedUnitHelper toBeKilled = _generalizedUnits.ElementAt(killIndex); _supportNeed -= toBeKilled.SupportNeed; killedOnes.Add(toBeKilled); _generalizedUnits.RemoveAt(killIndex); unitNumber--; } // Update player var unitGroups = killedOnes.GroupBy(u => u.SquadUnitId).ToList(); foreach (var group in unitGroups) { int squadUnitId = group.Key; int numberOfUnitsInGroup = group.Count(); _squadService.DecreaseUnitTypeNumberForPlayer(player, squadUnitId, numberOfUnitsInGroup); } }