public List <Tribe> initializeTribes(int numberOfTribes, List <Player> players) { List <Tribe> tribes = new List <Tribe>(); List <Player> strongPlayers = new List <Player>(); List <Player> mediumPlayers = new List <Player>(); List <Player> weakPlayers = new List <Player>(); int numberOfPlayers = players.Count; foreach (Player p in players) { int currentStrength = p.challengeStrength; if (currentStrength >= 7) { strongPlayers.Add(p); } else if (currentStrength >= 4) { mediumPlayers.Add(p); } else { weakPlayers.Add(p); } } int[] tribeDivisionArray = new int[numberOfPlayers]; for (int i = 0; i < numberOfPlayers; i++) { tribeDivisionArray[i] = i % numberOfTribes; } int j = 0; List <List <Player> > playersSplit = new List <List <Player> >(); for (int l = 0; l < numberOfTribes; l++) { playersSplit.Add(new List <Player>()); } foreach (Player sp in strongPlayers) { playersSplit[tribeDivisionArray[j]].Add(sp); j++; } foreach (Player mp in mediumPlayers) { playersSplit[tribeDivisionArray[j]].Add(mp); j++; } foreach (Player wp in weakPlayers) { playersSplit[tribeDivisionArray[j]].Add(wp); j++; } for (int k = 0; k < numberOfTribes; k++) { GameObject newTO = Instantiate(TribeObject, transform.localPosition, Quaternion.identity); newTO.transform.parent = tribeContainer.transform; Tribe tribe = newTO.GetComponent <Tribe>(); tribe.constructTribe(generateTribeName()); tribe.setTribeColor(generateTribeColor()); foreach (Player p in playersSplit[k]) { tribe.AddMember(p); } tribes.Add(tribe); } return(tribes); }