void GenerateBodyPartChest_Random(Maze maze) { // Calculate the number of items needed to spawn for this maze int numChests = Formula.CalculateBodyPartChestNum(level.mazeDifficulty); numChests = numChests < level.mazeSetting.bodyParts.Count ? numChests : level.mazeSetting.bodyParts.Count; List <Tile> tileList = MazeUTL.UpdateTileListWithDesiredWallLayout(maze.mazeTileList, WallLayout.C); List <Tile> tiles = GetItemSpawnRandomTiles(numChests, Formula.CalculateItemLeastDistance(LevelManager.instance.mazeDifficulty), new List <Tile>(), tileList, TilesWithItem); Utilities.TryCatchError((tiles.Count < numChests), "Can't find enough tiles to spawn Body Part Chests. Please check the range condition."); List <BodyPart> partList = GetBodyPartList(numChests); for (int i = 0; i < numChests; i++) { TileItem item = tiles[i].SpawnTileItem(level.BodyPartChestPrefab); TilesWithItem.Add(tiles[i]); item.bodyPart = partList[i]; } }