/// <summary>
        /// Generates the reward for the bundle
        /// </summary>
        protected override void GenerateReward()
        {
            if (Globals.RNGGetNextBoolean(1))
            {
                Reward = new RequiredItem((int)ObjectIndexes.PrismaticShard);
            }

            else if (Globals.RNGGetNextBoolean(5))
            {
                List <Item> universalLoves = NPC.UniversalLoves.Where(x =>
                                                                      x.Id != (int)ObjectIndexes.PrismaticShard).ToList();

                Reward = Globals.RNGGetRandomValueFromList(RequiredItem.CreateList(universalLoves, 5, 10));
            }

            List <RequiredItem> potentialRewards = new List <RequiredItem>
            {
                new RequiredItem((int)ObjectIndexes.JunimoKartArcadeSystem),
                new RequiredItem((int)ObjectIndexes.PrairieKingArcadeSystem),
                new RequiredItem((int)ObjectIndexes.SodaMachine),
                new RequiredItem((int)ObjectIndexes.Beer, 43),
                new RequiredItem((int)ObjectIndexes.Salad, Range.GetRandomValue(5, 25)),
                new RequiredItem((int)ObjectIndexes.Bread, Range.GetRandomValue(5, 25)),
                new RequiredItem((int)ObjectIndexes.Spaghetti, Range.GetRandomValue(5, 25)),
                new RequiredItem((int)ObjectIndexes.Pizza, Range.GetRandomValue(5, 25)),
                new RequiredItem((int)ObjectIndexes.Coffee, Range.GetRandomValue(5, 25))
            };

            Reward = Globals.RNGGetRandomValueFromList(potentialRewards);
        }
示例#2
0
        /// <summary>
        /// Generates the bundle for the given season
        /// </summary>
        /// <param name="season">The season</param>
        /// <param name="color">The color to use</param>
        private void GenerateSeasonBundle(Seasons season, BundleColors color)
        {
            string seasonString = Globals.GetTranslation($"seasons-{season.ToString().ToLower()}");

            seasonString = $"{seasonString[0].ToString().ToUpper()}{seasonString.Substring(1)}";

            Name = Globals.GetTranslation("bundle-fishtank-seasonal", new { season = seasonString });
            List <RequiredItem> potentialItems = RequiredItem.CreateList(FishItem.Get(season));

            RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
            MinimumRequiredItems = Math.Min(Range.GetRandomValue(6, 8), RequiredItems.Count);
            Color = color;
        }
        /// <summary>
        /// Generates a bundle of crops belonging to the given season
        /// </summary>
        /// <param name="season">The season</param>
        /// <param name="color">The color of the bundle</param>
        private void GenerateBundleForSeasonCrops(Seasons season, BundleColors color)
        {
            string seasonString = Globals.GetTranslation($"seasons-{season.ToString().ToLower()}");

            seasonString = $"{seasonString[0].ToString().ToUpper()}{seasonString.Substring(1)}";

            Name = Globals.GetTranslation("bundle-pantry-crops", new { season = seasonString });
            List <RequiredItem> potentialItems = RequiredItem.CreateList(ItemList.GetCrops(season));

            RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
            MinimumRequiredItems = 6;
            Color = color;
        }
示例#4
0
        /// <summary>
        /// Generates a random reward out of all of the items
        /// </summary>
        protected void GenerateRandomReward()
        {
            Item reward = Globals.RNGGetRandomValueFromList(ItemList.Items.Values.Where(x =>
                                                                                        x.Id != (int)ObjectIndexes.TransmuteAu && x.Id != (int)ObjectIndexes.TransmuteFe).ToList());
            int numberToGive = Range.GetRandomValue(1, 25);

            if (!reward.CanStack)
            {
                numberToGive = 1;
            }

            Reward = new RequiredItem(reward.Id, numberToGive);
        }
        /// <summary>
        /// Generates the bundle for foraging items
        /// </summary>
        /// <param name="season">The season</param>
        /// <param name="color">The color of the bundle</param>
        private void GenerateForagingBundle(Seasons season, BundleColors color)
        {
            string seasonString = Globals.GetTranslation($"seasons-{season.ToString().ToLower()}");

            seasonString = $"{seasonString[0].ToString().ToUpper()}{seasonString.Substring(1)}";

            Name = Globals.GetTranslation($"bundle-crafting-foraging", new { season = seasonString });
            List <RequiredItem> potentialItems = RequiredItem.CreateList(ItemList.GetForagables(season));
            int numberOfChoices = Math.Min(potentialItems.Count, 8);

            RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, numberOfChoices);
            MinimumRequiredItems = Range.GetRandomValue(4, numberOfChoices);
            Color = color;
        }
        /// <summary>
        /// Creates a bundle with random items
        /// </summary>
        protected void PopulateRandomBundle()
        {
            BundleType = Globals.RNGGetRandomValueFromList(_randomBundleTypes);
            List <RequiredItem> potentialItems = new List <RequiredItem>();

            switch (BundleType)
            {
            case BundleTypes.AllRandom:
                Name           = Globals.GetTranslation("bundle-random-all");
                potentialItems = RequiredItem.CreateList(ItemList.Items.Values.Where(x =>
                                                                                     x.DifficultyToObtain <ObtainingDifficulties.Impossible &&
                                                                                                           x.Id> -4)
                                                         .ToList());
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = 4;
                break;

            case BundleTypes.AllLetter:
                string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                string randomLetter;
                do
                {
                    randomLetter = letters[Range.GetRandomValue(0, letters.Length - 1)].ToString();
                    letters.Replace(randomLetter, "");
                    potentialItems = RequiredItem.CreateList(
                        ItemList.Items.Values.Where(x =>
                                                    (
                                                        (x.OverrideDisplayName == null && x.Name.StartsWith(randomLetter, StringComparison.InvariantCultureIgnoreCase)) ||
                                                        (x.OverrideDisplayName != null && x.OverrideDisplayName.StartsWith(randomLetter, StringComparison.InvariantCultureIgnoreCase))
                                                    ) &&
                                                    x.Id > -4
                                                    ).ToList()
                        );
                } while (potentialItems.Count < 4);
                Name                 = Globals.GetTranslation("bundle-random-letter", new { letter = randomLetter });
                ImageNameSuffix      = randomLetter;
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = 3;
                break;
            }

            Color = Globals.RNGGetRandomValueFromList(
                Enum.GetValues(typeof(BundleColors)).Cast <BundleColors>().ToList());
        }
示例#7
0
        /// <summary>
        /// Populates the required items based on the items and their multipliers
        /// Sums up the amounts of items if they have the same id to prevent errors
        /// </summary>
        /// <param name="itemsRequired">The items this building requires</param>
        private void PopulateRequiredItems(List <ItemAndMultiplier> itemsRequired)
        {
            Dictionary <int, RequiredItem> requiredItemsDict = new Dictionary <int, RequiredItem>();

            foreach (ItemAndMultiplier itemAndMultiplier in itemsRequired)
            {
                RequiredItem requiredItem  = new RequiredItem(itemAndMultiplier.Item, itemAndMultiplier.Amount);
                int          reqiredItemId = requiredItem.Item.Id;
                if (requiredItemsDict.ContainsKey(reqiredItemId))
                {
                    requiredItemsDict[reqiredItemId].NumberOfItems += requiredItem.NumberOfItems;
                }
                else
                {
                    requiredItemsDict.Add(reqiredItemId, requiredItem);
                }
            }

            RequiredItems = requiredItemsDict.Values.ToList();
        }
示例#8
0
        /// <summary>
        /// Generates the reward for the bundle
        /// </summary>
        protected override void GenerateReward()
        {
            var tackles = new List <RequiredItem>
            {
                new RequiredItem((int)ObjectIndexes.Spinner, 1),
                new RequiredItem((int)ObjectIndexes.DressedSpinner),
                new RequiredItem((int)ObjectIndexes.TrapBobber),
                new RequiredItem((int)ObjectIndexes.CorkBobber),
                new RequiredItem((int)ObjectIndexes.LeadBobber),
                new RequiredItem((int)ObjectIndexes.TreasureHunter)
            };

            var potentialRewards = new List <RequiredItem>
            {
                new RequiredItem((int)ObjectIndexes.RecyclingMachine),
                new RequiredItem((int)ObjectIndexes.Bait, 500),
                new RequiredItem((int)ObjectIndexes.WildBait, 500),
                Globals.RNGGetRandomValueFromList(tackles),
                Globals.RNGGetRandomValueFromList(RequiredItem.CreateList(FishItem.Get(), 25, 50)),
                Globals.RNGGetRandomValueFromList(RequiredItem.CreateList(ItemList.GetUniqueBeachForagables(), 25, 50)),
            };

            Reward = Globals.RNGGetRandomValueFromList(potentialRewards);
        }
示例#9
0
        /// <summary>
        /// Populates the bundle with the name, required items, minimum required, and color
        /// </summary>
        protected override void Populate()
        {
            BundleType = Globals.RNGGetAndRemoveRandomValueFromList(RoomBundleTypes);
            List <RequiredItem> potentialItems = new List <RequiredItem>();

            switch (BundleType)
            {
            case BundleTypes.FishTankSpringFish:
                GenerateSeasonBundle(Seasons.Spring, BundleColors.Green);
                break;

            case BundleTypes.FishTankSummerFish:
                GenerateSeasonBundle(Seasons.Summer, BundleColors.Red);
                break;

            case BundleTypes.FishTankFallFish:
                GenerateSeasonBundle(Seasons.Fall, BundleColors.Orange);
                break;

            case BundleTypes.FishTankWinterFish:
                GenerateSeasonBundle(Seasons.Winter, BundleColors.Cyan);
                break;

            case BundleTypes.FishTankOceanFood:
                Name           = Globals.GetTranslation("bundle-fishtank-ocean-food");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.CrispyBass,
                    (int)ObjectIndexes.FriedEel,
                    (int)ObjectIndexes.AlgaeSoup,
                    (int)ObjectIndexes.CrabCakes,
                    (int)ObjectIndexes.SpicyEel,
                    (int)ObjectIndexes.PaleBroth,
                    (int)ObjectIndexes.Sashimi,
                    (int)ObjectIndexes.MakiRoll,
                    (int)ObjectIndexes.TomKhaSoup,
                    (int)ObjectIndexes.BakedFish,
                    (int)ObjectIndexes.TroutSoup,
                    (int)ObjectIndexes.Chowder,
                    (int)ObjectIndexes.LobsterBisque,
                    (int)ObjectIndexes.DishOTheSea,
                    (int)ObjectIndexes.FishStew,
                    (int)ObjectIndexes.FriedCalamari,
                    (int)ObjectIndexes.SalmonDinner,
                    (int)ObjectIndexes.FishTaco
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = 4;
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.FishTankLegendary:
                Name                 = Globals.GetTranslation("bundle-fishtank-legendary");
                RequiredItems        = RequiredItem.CreateList(FishItem.GetLegendaries().Cast <Item>().ToList());
                MinimumRequiredItems = Range.GetRandomValue(3, 4);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.FishTankLocation:
                List <Locations> locations = new List <Locations>
                {
                    Locations.Town,
                    Locations.Mountain,
                    Locations.Desert,
                    Locations.Woods,
                    Locations.Forest,
                    Locations.NightMarket,
                    Locations.Beach
                };
                Locations location       = Globals.RNGGetRandomValueFromList(locations);
                string    locationString = Globals.GetTranslation($"fish-{location.ToString().ToLower()}-location");

                Name                 = Globals.GetTranslation("bundle-fishtank-location", new { location = locationString });
                RequiredItems        = RequiredItem.CreateList(Globals.RNGGetRandomValuesFromList(FishItem.Get(location), 8));
                MinimumRequiredItems = Math.Min(RequiredItems.Count, Range.GetRandomValue(2, 4));
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.FishTankRainFish:
                Name          = Globals.GetTranslation("bundle-fishtank-rain-fish");
                RequiredItems = RequiredItem.CreateList(
                    Globals.RNGGetRandomValuesFromList(FishItem.Get(Weather.Rainy), 8)
                    );
                MinimumRequiredItems = Math.Min(RequiredItems.Count, 4);
                Color = BundleColors.Blue;
                break;

            case BundleTypes.FishTankNightFish:
                Name          = Globals.GetTranslation("bundle-fishtank-night-fish");
                RequiredItems = RequiredItem.CreateList(
                    Globals.RNGGetRandomValuesFromList(FishItem.GetNightFish(), 8)
                    );
                MinimumRequiredItems = Math.Min(RequiredItems.Count, 4);
                Color = BundleColors.Purple;
                break;

            case BundleTypes.FishTankQualityFish:
                Name           = Globals.GetTranslation("bundle-fishtank-quality-fish");
                potentialItems = RequiredItem.CreateList(
                    Globals.RNGGetRandomValuesFromList(FishItem.Get(), 8)
                    );
                potentialItems.ForEach(x => x.MinimumQuality = ItemQualities.Gold);
                RequiredItems        = potentialItems;
                MinimumRequiredItems = 4;
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.FishTankBeachForagables:
                Name          = Globals.GetTranslation("bundle-fishtank-beach-foragables");
                RequiredItems = RequiredItem.CreateList(
                    Globals.RNGGetRandomValuesFromList(ItemList.GetUniqueBeachForagables(), 6)
                    );
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.FishTankFishingTools:
                Name           = Globals.GetTranslation("bundle-fishtank-fishing-tools");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Spinner, 1),
                    new RequiredItem((int)ObjectIndexes.DressedSpinner, 1),
                    new RequiredItem((int)ObjectIndexes.TrapBobber, 1),
                    new RequiredItem((int)ObjectIndexes.CorkBobber, 1),
                    new RequiredItem((int)ObjectIndexes.LeadBobber, 1),
                    new RequiredItem((int)ObjectIndexes.TreasureHunter, 1),
                    new RequiredItem((int)ObjectIndexes.Bait, 25, 50),
                    new RequiredItem((int)ObjectIndexes.WildBait, 10, 20)
                };
                RequiredItems = Globals.RNGGetRandomValuesFromList(potentialItems, 4);
                Color         = BundleColors.Blue;
                break;

            case BundleTypes.FishTankUnique:
                Name = Globals.GetTranslation("bundle-fishtank-unique");

                List <Item> nightFish  = FishItem.Get(Locations.NightMarket);
                List <Item> minesFish  = FishItem.Get(Locations.UndergroundMine);
                List <Item> desertFish = FishItem.Get(Locations.Desert);
                List <Item> woodsFish  = FishItem.Get(Locations.Woods);

                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem(Globals.RNGGetRandomValueFromList(nightFish)),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(minesFish)),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(desertFish)),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(woodsFish))
                };
                MinimumRequiredItems = Range.GetRandomValue(RequiredItems.Count - 1, RequiredItems.Count);
                Color = BundleColors.Cyan;
                break;

            case BundleTypes.FishTankColorBlue:
                Name = Globals.GetTranslation("bundle-fishtank-blue");

                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Aquamarine,
                    (int)ObjectIndexes.Diamond,
                    (int)ObjectIndexes.FrozenTear,
                    (int)ObjectIndexes.DwarfScrollIII,
                    (int)ObjectIndexes.ElvishJewelry,
                    (int)ObjectIndexes.GlassShards,
                    (int)ObjectIndexes.Anchovy,
                    (int)ObjectIndexes.Tuna,
                    (int)ObjectIndexes.Sardine,
                    (int)ObjectIndexes.Bream,
                    (int)ObjectIndexes.Salmon,
                    (int)ObjectIndexes.Herring,
                    (int)ObjectIndexes.Squid,
                    (int)ObjectIndexes.IcePip,
                    (int)ObjectIndexes.Sturgeon,
                    (int)ObjectIndexes.Albacore,
                    (int)ObjectIndexes.MidnightSquid,
                    (int)ObjectIndexes.SpookFish,
                    (int)ObjectIndexes.Glacierfish,
                    (int)ObjectIndexes.Clam,
                    (int)ObjectIndexes.Periwinkle,
                    (int)ObjectIndexes.JojaCola,
                    (int)ObjectIndexes.BrokenGlasses,
                    (int)ObjectIndexes.BrokenCD,
                    (int)ObjectIndexes.BlueberryTart,
                    (int)ObjectIndexes.Sugar,
                    (int)ObjectIndexes.BasicRetainingSoil,
                    (int)ObjectIndexes.QualityRetainingSoil,
                    (int)ObjectIndexes.RainbowShell,
                    (int)ObjectIndexes.BlueSlimeEgg,
                    (int)ObjectIndexes.CrystalFruit,
                    (int)ObjectIndexes.SturdyRing,
                    (int)ObjectIndexes.AquamarineRing,
                    (int)ObjectIndexes.FrozenGeode,
                    (int)ObjectIndexes.Opal,
                    (int)ObjectIndexes.Aerinite,
                    (int)ObjectIndexes.Kyanite,
                    (int)ObjectIndexes.GhostCrystal,
                    (int)ObjectIndexes.Celestine,
                    (int)ObjectIndexes.Soapstone,
                    (int)ObjectIndexes.Slate,
                    (int)ObjectIndexes.Spinner,
                    (int)ObjectIndexes.WarpTotemBeach,
                    (int)ObjectIndexes.Battery
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Blue;
                break;

            case BundleTypes.FishTankColorPurple:
                Name           = Globals.GetTranslation("bundle-fishtank-purple");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Amethyst,
                    (int)ObjectIndexes.AncientDrum,
                    (int)ObjectIndexes.SuperCucumber,
                    (int)ObjectIndexes.PumpkinSoup,
                    (int)ObjectIndexes.RootsPlatter,
                    (int)ObjectIndexes.IridiumBar,
                    (int)ObjectIndexes.Wine,
                    (int)ObjectIndexes.IridiumOre,
                    (int)ObjectIndexes.SeaUrchin,
                    (int)ObjectIndexes.SweetPea,
                    (int)ObjectIndexes.WildPlum,
                    (int)ObjectIndexes.Blackberry,
                    (int)ObjectIndexes.Crocus,
                    (int)ObjectIndexes.Vinegar,
                    (int)ObjectIndexes.PurpleMushroom,
                    (int)ObjectIndexes.SpeedGro,
                    (int)ObjectIndexes.DeluxeSpeedGro,
                    (int)ObjectIndexes.IridiumBand,
                    (int)ObjectIndexes.AmethystRing,
                    (int)ObjectIndexes.FireOpal,
                    (int)ObjectIndexes.Fluorapatite,
                    (int)ObjectIndexes.Obsidian,
                    (int)ObjectIndexes.FairyStone,
                    (int)ObjectIndexes.BlackberryCobbler,
                    (int)ObjectIndexes.IridiumSprinkler,
                    (int)ObjectIndexes.DressedSpinner
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Purple;
                break;
            }
        }
        /// <summary>
        /// Populates the bundle with the name, required items, minimum required, and color
        /// </summary>
        protected override void Populate()
        {
            BundleType = Globals.RNGGetAndRemoveRandomValueFromList(RoomBundleTypes);
            List <RequiredItem> potentialItems = new List <RequiredItem>();

            switch (BundleType)
            {
            case BundleTypes.BulletinNews:
                Name           = Globals.GetTranslation("bundle-bulletin-news");
                potentialItems = new List <RequiredItem>()
                {
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                    new RequiredItem((int)ObjectIndexes.SoggyNewspaper),
                };
                RequiredItems = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(1, 8));
                Color         = BundleColors.Orange;
                break;

            case BundleTypes.BulletinCleanup:
                Name          = Globals.GetTranslation("bundle-bulletin-cleanup");
                RequiredItems = RequiredItem.CreateList(ItemList.GetTrash(), 1, 5);
                Color         = BundleColors.Green;
                break;

            case BundleTypes.BulletinHated:
                Name                 = Globals.GetTranslation("bundle-bulletin-hated"); potentialItems = RequiredItem.CreateList(NPC.UniversalHates);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(4, 6);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinLoved:
                Name                 = Globals.GetTranslation("bundle-bulletin-loved");
                RequiredItems        = RequiredItem.CreateList(NPC.UniversalLoves);
                MinimumRequiredItems = 2;
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinAbigail:
                Name                 = Globals.GetTranslation("Abigail-name");
                potentialItems       = RequiredItem.CreateList(Abigail.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinAlex:
                Name                 = Globals.GetTranslation("Alex-name");
                potentialItems       = RequiredItem.CreateList(Alex.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinCaroline:
                Name                 = Globals.GetTranslation("Caroline-name");
                potentialItems       = RequiredItem.CreateList(Caroline.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinClint:
                Name                 = Globals.GetTranslation("Clint-name");
                potentialItems       = RequiredItem.CreateList(Clint.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinDwarf:
                Name                 = Globals.GetTranslation("Dwarf-name");
                potentialItems       = RequiredItem.CreateList(Dwarf.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinDemetrius:
                Name                 = Globals.GetTranslation("Demetrius-name");
                potentialItems       = RequiredItem.CreateList(Demetrius.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinElliott:
                Name                 = Globals.GetTranslation("Elliott-name");
                potentialItems       = RequiredItem.CreateList(Elliott.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinEmily:
                Name                 = Globals.GetTranslation("Emily-name");
                potentialItems       = RequiredItem.CreateList(Emily.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinEvelyn:
                Name                 = Globals.GetTranslation("Evelyn-name");
                potentialItems       = RequiredItem.CreateList(Evelyn.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinGeorge:
                Name                 = Globals.GetTranslation("George-name");
                potentialItems       = RequiredItem.CreateList(George.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinGus:
                Name                 = Globals.GetTranslation("Gus-name");
                potentialItems       = RequiredItem.CreateList(Gus.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinHaley:
                Name                 = Globals.GetTranslation("Haley-name");
                potentialItems       = RequiredItem.CreateList(Haley.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinHarvey:
                Name                 = Globals.GetTranslation("Harvey-name");
                potentialItems       = RequiredItem.CreateList(Harvey.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinJas:
                Name                 = Globals.GetTranslation("Jas-name");
                potentialItems       = RequiredItem.CreateList(Jas.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinJodi:
                Name                 = Globals.GetTranslation("Jodi-name");
                potentialItems       = RequiredItem.CreateList(Jodi.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinKent:
                Name                 = Globals.GetTranslation("Kent-name");
                potentialItems       = RequiredItem.CreateList(Kent.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinKrobus:
                Name                 = Globals.GetTranslation("Krobus-name");
                potentialItems       = RequiredItem.CreateList(Krobus.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinLeah:
                Name                 = Globals.GetTranslation("Leah-name");
                potentialItems       = RequiredItem.CreateList(Leah.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinLewis:
                Name                 = Globals.GetTranslation("Lewis-name");
                potentialItems       = RequiredItem.CreateList(Lewis.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.BulletinLinus:
                Name                 = Globals.GetTranslation("Linus-name");
                potentialItems       = RequiredItem.CreateList(Linus.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinMarnie:
                Name                 = Globals.GetTranslation("Marnie-name");
                potentialItems       = RequiredItem.CreateList(Marnie.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinMaru:
                Name                 = Globals.GetTranslation("Maru-name");
                potentialItems       = RequiredItem.CreateList(Maru.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinPam:
                Name                 = Globals.GetTranslation("Pam-name");
                potentialItems       = RequiredItem.CreateList(Pam.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinPenny:
                Name                 = Globals.GetTranslation("Penny-name");
                potentialItems       = RequiredItem.CreateList(Penny.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Yellow;
                break;

            case BundleTypes.BulletinPierre:
                Name                 = Globals.GetTranslation("Pierre-name");
                potentialItems       = RequiredItem.CreateList(Pierre.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Orange;
                break;

            case BundleTypes.BulletinRobin:
                Name                 = Globals.GetTranslation("Robin-name");
                potentialItems       = RequiredItem.CreateList(Robin.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Yellow;
                break;

            case BundleTypes.BulletinSam:
                Name                 = Globals.GetTranslation("Sam-name");
                potentialItems       = RequiredItem.CreateList(Sam.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinSandy:
                Name                 = Globals.GetTranslation("Sandy-name");
                potentialItems       = RequiredItem.CreateList(Sandy.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinSebastian:
                Name                 = Globals.GetTranslation("Sebastian-name");
                potentialItems       = RequiredItem.CreateList(Sebastian.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinShane:
                Name                 = Globals.GetTranslation("Shane-name");
                potentialItems       = RequiredItem.CreateList(Shane.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Blue;
                break;

            case BundleTypes.BulletinVincent:
                Name                 = Globals.GetTranslation("Vincent-name");
                potentialItems       = RequiredItem.CreateList(Vincent.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinWilly:
                Name                 = Globals.GetTranslation("Willy-name");
                potentialItems       = RequiredItem.CreateList(Willy.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Red;
                break;

            case BundleTypes.BulletinWizard:
                Name                 = Globals.GetTranslation("Wizard-name");
                potentialItems       = RequiredItem.CreateList(Wizard.Loves);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Math.Min(Math.Max(RequiredItems.Count - 2, 3), RequiredItems.Count);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BulletinColorPink:
                Name           = Globals.GetTranslation("bundle-bulletin-pink");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Shrimp,
                    (int)ObjectIndexes.StrangeBun,
                    (int)ObjectIndexes.SalmonDinner,
                    (int)ObjectIndexes.PinkCake,
                    (int)ObjectIndexes.Sashimi,
                    (int)ObjectIndexes.IceCream,
                    (int)ObjectIndexes.Salmonberry,
                    (int)ObjectIndexes.Coral,
                    (int)ObjectIndexes.Dolomite,
                    (int)ObjectIndexes.Nekoite,
                    (int)ObjectIndexes.StarShards,
                    (int)ObjectIndexes.Peach,
                    (int)ObjectIndexes.BugMeat,
                    (int)ObjectIndexes.Bait
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Red;
                break;

            case BundleTypes.BulletinColorWhite:
                Name           = Globals.GetTranslation("bundle-bulletin-white");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Leek,
                    (int)ObjectIndexes.Quartz,
                    (int)ObjectIndexes.OrnamentalFan,
                    (int)ObjectIndexes.DinosaurEgg,
                    (int)ObjectIndexes.ChickenStatue,
                    (int)ObjectIndexes.WhiteAlgae,
                    (int)ObjectIndexes.WhiteEgg,
                    (int)ObjectIndexes.LargeWhiteEgg,
                    (int)ObjectIndexes.Milk,
                    (int)ObjectIndexes.LargeMilk,
                    (int)ObjectIndexes.FriedEgg,
                    (int)ObjectIndexes.RicePudding,
                    (int)ObjectIndexes.IceCream,
                    (int)ObjectIndexes.Mayonnaise,
                    (int)ObjectIndexes.IronBar,
                    (int)ObjectIndexes.RefinedQuartz,
                    (int)ObjectIndexes.IronOre,
                    (int)ObjectIndexes.SpringOnion,
                    (int)ObjectIndexes.SnowYam,
                    (int)ObjectIndexes.Rice,
                    (int)ObjectIndexes.GoatCheese,
                    (int)ObjectIndexes.Cloth,
                    (int)ObjectIndexes.GoatMilk,
                    (int)ObjectIndexes.LargeGoatMilk,
                    (int)ObjectIndexes.Wool,
                    (int)ObjectIndexes.DuckEgg,
                    (int)ObjectIndexes.RabbitsFoot,
                    (int)ObjectIndexes.PaleBroth,
                    (int)ObjectIndexes.Esperite,
                    (int)ObjectIndexes.Lunarite,
                    (int)ObjectIndexes.Marble,
                    (int)ObjectIndexes.PrehistoricScapula,
                    (int)ObjectIndexes.PrehistoricTibia,
                    (int)ObjectIndexes.PrehistoricSkull,
                    (int)ObjectIndexes.SkeletalHand,
                    (int)ObjectIndexes.PrehistoricRib,
                    (int)ObjectIndexes.PrehistoricVertebra,
                    (int)ObjectIndexes.SkeletalTail,
                    (int)ObjectIndexes.NautilusFossil,
                    (int)ObjectIndexes.Trilobite,
                    (int)ObjectIndexes.ArtichokeDip,
                    (int)ObjectIndexes.LeadBobber,
                    (int)ObjectIndexes.Chowder
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Yellow;
                break;
            }
        }
        /// <summary>
        /// Creates a bundle for the crafts room
        /// </summary>
        protected override void Populate()
        {
            // Force one resource bundle so that there's one possible bundle to complete
            if (!RoomBundleTypes.Contains(BundleTypes.CraftingResource))
            {
                BundleType = Globals.RNGGetAndRemoveRandomValueFromList(RoomBundleTypes);
            }
            else
            {
                RoomBundleTypes.Remove(BundleTypes.CraftingResource);
                BundleType = BundleTypes.CraftingResource;
            }

            List <RequiredItem> potentialItems;
            int numberOfChoices;

            switch (BundleType)
            {
            case BundleTypes.CraftingResource:
                Name          = Globals.GetTranslation("bundle-crafting-resource");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Wood, 100, 250),
                    new RequiredItem((int)ObjectIndexes.Stone, 100, 250),
                    new RequiredItem((int)ObjectIndexes.Fiber, 10, 50),
                    new RequiredItem((int)ObjectIndexes.Clay, 10, 50),
                    new RequiredItem((int)ObjectIndexes.Hardwood, 1, 10)
                };
                Color = BundleColors.Orange;
                break;

            case BundleTypes.CraftingHappyCrops:
                Name = Globals.GetTranslation("bundle-crafting-happy-crops");
                RequiredItem qualityCrop = new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetCrops()));
                qualityCrop.MinimumQuality = ItemQualities.Gold;
                potentialItems             = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Sprinkler, 1, 5),
                    new RequiredItem((int)ObjectIndexes.QualitySprinkler, 1, 5),
                    new RequiredItem((int)ObjectIndexes.IridiumSprinkler, 1),
                    new RequiredItem((int)ObjectIndexes.BasicFertilizer, 10, 20),
                    new RequiredItem((int)ObjectIndexes.QualityFertilizer, 10, 20),
                    new RequiredItem((int)ObjectIndexes.BasicRetainingSoil, 10, 20),
                    new RequiredItem((int)ObjectIndexes.QualityRetainingSoil, 10, 20),
                    qualityCrop
                };
                numberOfChoices      = Range.GetRandomValue(6, 8);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, numberOfChoices);
                MinimumRequiredItems = Range.GetRandomValue(numberOfChoices - 2, numberOfChoices);
                Color = BundleColors.Green;
                break;

            case BundleTypes.CraftingTree:
                Name           = Globals.GetTranslation("bundle-crafting-tree");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.MapleSeed, 1, 5),
                    new RequiredItem((int)ObjectIndexes.Acorn, 1, 5),
                    new RequiredItem((int)ObjectIndexes.PineCone, 1),
                    new RequiredItem((int)ObjectIndexes.OakResin, 1),
                    new RequiredItem((int)ObjectIndexes.MapleSyrup, 1),
                    new RequiredItem((int)ObjectIndexes.PineTar, 1),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetFruit()), 1),
                    new RequiredItem((int)ObjectIndexes.Wood, 100, 200),
                    new RequiredItem((int)ObjectIndexes.Hardwood, 25, 50),
                    new RequiredItem((int)ObjectIndexes.Driftwood, 5, 10),
                };
                numberOfChoices      = Range.GetRandomValue(6, 8);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, numberOfChoices);
                MinimumRequiredItems = Range.GetRandomValue(numberOfChoices - 2, numberOfChoices);
                Color = BundleColors.Green;
                break;

            case BundleTypes.CraftingTotems:
                Name          = Globals.GetTranslation("bundle-crafting-totems");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.WarpTotemFarm),
                    new RequiredItem((int)ObjectIndexes.WarpTotemBeach),
                    new RequiredItem((int)ObjectIndexes.WarpTotemMountains),
                    new RequiredItem((int)ObjectIndexes.WarpTotemDesert),
                    new RequiredItem((int)ObjectIndexes.RainTotem),
                };
                MinimumRequiredItems = Range.GetRandomValue(3, 4);
                Color = BundleColors.Red;
                break;

            case BundleTypes.CraftingBindle:
                Name           = Globals.GetTranslation("bundle-crafting-bindle");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetCookeditems())),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetForagables())),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(FishItem.Get())),
                    new RequiredItem(Globals.RNGGetRandomValueFromList(
                                         ItemList.Items.Values.Where(x => x.Id > 0 && x.DifficultyToObtain <= ObtainingDifficulties.LargeTimeRequirements).ToList()).Id
                                     ),
                };
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.ChewingStick),
                    new RequiredItem((int)ObjectIndexes.Cloth),
                };
                RequiredItems.AddRange(Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(2, 3)));
                MinimumRequiredItems = RequiredItems.Count - 1;
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.CraftingSpringForaging:
                GenerateForagingBundle(Seasons.Spring, BundleColors.Green);
                break;

            case BundleTypes.CraftingSummerForaging:
                GenerateForagingBundle(Seasons.Summer, BundleColors.Red);
                break;

            case BundleTypes.CraftingFallForaging:
                GenerateForagingBundle(Seasons.Fall, BundleColors.Orange);
                break;

            case BundleTypes.CraftingWinterForaging:
                GenerateForagingBundle(Seasons.Winter, BundleColors.Cyan);
                break;

            case BundleTypes.CraftingColorOrange:
                Name           = Globals.GetTranslation("bundle-crafting-orange");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.RustySpur,
                    (int)ObjectIndexes.RustyCog,
                    (int)ObjectIndexes.Lobster,
                    (int)ObjectIndexes.Crab,
                    (int)ObjectIndexes.GlazedYams,
                    (int)ObjectIndexes.FriedEel,
                    (int)ObjectIndexes.SpicyEel,
                    (int)ObjectIndexes.PaleAle,
                    (int)ObjectIndexes.Chanterelle,
                    (int)ObjectIndexes.CopperBar,
                    (int)ObjectIndexes.QualityFertilizer,
                    (int)ObjectIndexes.CopperOre,
                    (int)ObjectIndexes.NautilusShell,
                    (int)ObjectIndexes.SpiceBerry,
                    (int)ObjectIndexes.WinterRoot,
                    (int)ObjectIndexes.Tigerseye,
                    (int)ObjectIndexes.Baryte,
                    (int)ObjectIndexes.LemonStone,
                    (int)ObjectIndexes.Orpiment,
                    (int)ObjectIndexes.PumpkinPie,
                    (int)ObjectIndexes.Apricot,
                    (int)ObjectIndexes.Orange,
                    (int)ObjectIndexes.LobsterBisque,
                    (int)ObjectIndexes.CrabCakes,
                    (int)ObjectIndexes.JackOLantern
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Orange;
                break;

            case BundleTypes.CraftingColorYellow:
                Name           = Globals.GetTranslation("bundle-crafting-yellow");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Daffodil,
                    (int)ObjectIndexes.Dandelion,
                    (int)ObjectIndexes.Topaz,
                    (int)ObjectIndexes.Sap,
                    (int)ObjectIndexes.DwarfScrollIV,
                    (int)ObjectIndexes.DriedStarfish,
                    (int)ObjectIndexes.BoneFlute,
                    (int)ObjectIndexes.GoldenMask,
                    (int)ObjectIndexes.GoldenRelic,
                    (int)ObjectIndexes.StrangeDoll1,
                    (int)ObjectIndexes.Hay,
                    (int)ObjectIndexes.Omelet,
                    (int)ObjectIndexes.CheeseCauliflower,
                    (int)ObjectIndexes.FriedCalamari,
                    (int)ObjectIndexes.LuckyLunch,
                    (int)ObjectIndexes.Pizza,
                    (int)ObjectIndexes.FishTaco,
                    (int)ObjectIndexes.Spaghetti,
                    (int)ObjectIndexes.Tortilla,
                    (int)ObjectIndexes.FarmersLunch,
                    (int)ObjectIndexes.Oil,
                    (int)ObjectIndexes.Morel,
                    (int)ObjectIndexes.DuckMayonnaise,
                    (int)ObjectIndexes.MapleSeed,
                    (int)ObjectIndexes.GoldBar,
                    (int)ObjectIndexes.Honey,
                    (int)ObjectIndexes.Beer,
                    (int)ObjectIndexes.MuscleRemedy,
                    (int)ObjectIndexes.BasicFertilizer,
                    (int)ObjectIndexes.GoldenPumpkin,
                    (int)ObjectIndexes.GoldOre,
                    (int)ObjectIndexes.StrawFloor,
                    (int)ObjectIndexes.Cheese,
                    (int)ObjectIndexes.TruffleOil,
                    (int)ObjectIndexes.CoffeeBean,
                    (int)ObjectIndexes.TreasureChest,
                    (int)ObjectIndexes.Mead,
                    (int)ObjectIndexes.GlowRing,
                    (int)ObjectIndexes.SmallGlowRing,
                    (int)ObjectIndexes.RingOfYoba,
                    (int)ObjectIndexes.TopazRing,
                    (int)ObjectIndexes.Calcite,
                    (int)ObjectIndexes.Jagoite,
                    (int)ObjectIndexes.Pyrite,
                    (int)ObjectIndexes.Sandstone,
                    (int)ObjectIndexes.Hematite,
                    (int)ObjectIndexes.MapleSyrup,
                    (int)ObjectIndexes.SolarEssence
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Yellow;
                break;
            }
        }
示例#12
0
        /// <summary>
        /// Creates a bundle for the pantry
        /// </summary>
        protected override void Populate()
        {
            BundleType = Globals.RNGGetAndRemoveRandomValueFromList(RoomBundleTypes);
            List <RequiredItem> potentialItems = new List <RequiredItem>();

            switch (BundleType)
            {
            case BundleTypes.PantryAnimal:
                Name           = Globals.GetTranslation("bundle-pantry-animal");
                potentialItems = RequiredItem.CreateList(ItemList.GetAnimalProducts());
                potentialItems.Add(new RequiredItem((int)ObjectIndexes.Hay, 25, 50));
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(6, 8));
                MinimumRequiredItems = Range.GetRandomValue(RequiredItems.Count - 2, RequiredItems.Count);
                Color = BundleColors.Orange;
                break;

            case BundleTypes.PantryQualityCrops:
                Name           = Globals.GetTranslation("bundle-pantry-quality-crops");
                potentialItems = RequiredItem.CreateList(ItemList.GetCrops());
                potentialItems.ForEach(x => x.MinimumQuality = ItemQualities.Gold);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(4, 6);
                Color = BundleColors.Green;
                break;

            case BundleTypes.PantryQualityForagables:
                Name           = Globals.GetTranslation("bundle-pantry-quality-foragables");
                potentialItems = RequiredItem.CreateList(ItemList.GetForagables());
                potentialItems.ForEach(x => x.MinimumQuality = ItemQualities.Gold);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(4, 6);
                Color = BundleColors.Green;
                break;

            case BundleTypes.PantryCooked:
                Name                 = Globals.GetTranslation("bundle-pantry-cooked");
                potentialItems       = RequiredItem.CreateList(ItemList.GetCookeditems());
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(6, 8));
                MinimumRequiredItems = Range.GetRandomValue(3, 4);
                Color                = BundleColors.Green;
                break;

            case BundleTypes.PantryFlower:
                Name                 = Globals.GetTranslation("bundle-pantry-flower");
                potentialItems       = RequiredItem.CreateList(ItemList.GetFlowers());
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(6, 8));
                MinimumRequiredItems = RequiredItems.Count - 2;
                Color                = BundleColors.Green;
                break;

            case BundleTypes.PantrySpringCrops:
                GenerateBundleForSeasonCrops(Seasons.Spring, BundleColors.Green);
                break;

            case BundleTypes.PantrySummerCrops:
                GenerateBundleForSeasonCrops(Seasons.Summer, BundleColors.Red);
                break;

            case BundleTypes.PantryFallCrops:
                GenerateBundleForSeasonCrops(Seasons.Fall, BundleColors.Orange);
                break;

            case BundleTypes.PantryEgg:
                Name           = Globals.GetTranslation("bundle-pantry-egg");
                potentialItems = RequiredItem.CreateList(
                    ItemList.Items.Values.Where(x => x.Name.Contains("Egg") && x.Id > -4).ToList());
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(RequiredItems.Count - 3, RequiredItems.Count - 2);
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.PantryRareFoods:
                Name = Globals.GetTranslation("bundle-pantry-rare-foods");

                SeedItem starFruitSeed = (SeedItem)ItemList.Items[(int)ObjectIndexes.StarfruitSeeds];
                SeedItem gemBerrySeed  = (SeedItem)ItemList.Items[(int)ObjectIndexes.RareSeed];
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.AncientFruit),
                    new RequiredItem(starFruitSeed.CropGrowthInfo.CropId),
                    new RequiredItem(gemBerrySeed.CropGrowthInfo.CropId),
                };
                MinimumRequiredItems = 2;
                Color = BundleColors.Blue;
                break;

            case BundleTypes.PantryDesert:
                Name          = Globals.GetTranslation("bundle-pantry-desert");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.IridiumOre, 5),
                    Globals.RNGGetRandomValueFromList(new List <RequiredItem>
                    {
                        new RequiredItem((int)ObjectIndexes.GoldenMask),
                        new RequiredItem((int)ObjectIndexes.GoldenRelic),
                    }),
                    Globals.RNGGetRandomValueFromList(RequiredItem.CreateList(FishItem.Get(Locations.Desert))),
                    Globals.RNGGetRandomValueFromList(RequiredItem.CreateList(ItemList.GetUniqueDesertForagables(), 1, 3)),
                    new RequiredItem((int)ObjectIndexes.StarfruitSeeds, 5)
                };
                MinimumRequiredItems = 4;
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.PantryDessert:
                Name           = Globals.GetTranslation("bundle-pantry-dessert");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.CranberryCandy),
                    new RequiredItem((int)ObjectIndexes.PlumPudding),
                    new RequiredItem((int)ObjectIndexes.PinkCake),
                    new RequiredItem((int)ObjectIndexes.PumpkinPie),
                    new RequiredItem((int)ObjectIndexes.RhubarbPie),
                    new RequiredItem((int)ObjectIndexes.Cookie),
                    new RequiredItem((int)ObjectIndexes.IceCream),
                    new RequiredItem((int)ObjectIndexes.MinersTreat),
                    new RequiredItem((int)ObjectIndexes.BlueberryTart),
                    new RequiredItem((int)ObjectIndexes.BlackberryCobbler),
                    new RequiredItem((int)ObjectIndexes.MapleBar),
                };
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = 4;
                Color = BundleColors.Cyan;
                break;

            case BundleTypes.PantryMexicanFood:
                Name          = Globals.GetTranslation("bundle-pantry-mexican-food");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Tortilla),
                    new RequiredItem((int)ObjectIndexes.Corn, 1, 5),
                    new RequiredItem((int)ObjectIndexes.Tomato, 1, 5),
                    new RequiredItem((int)ObjectIndexes.HotPepper, 1, 5),
                    new RequiredItem((int)ObjectIndexes.FishTaco),
                    new RequiredItem((int)ObjectIndexes.Rice),
                    new RequiredItem((int)ObjectIndexes.Cheese),
                };
                MinimumRequiredItems = Range.GetRandomValue(4, 5);
                Color = BundleColors.Red;
                break;

            case BundleTypes.PantryColorBrown:
                Name           = Globals.GetTranslation("bundle-pantry-brown");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.WildHorseradish,
                    (int)ObjectIndexes.CaveCarrot,
                    (int)ObjectIndexes.EarthCrystal,
                    (int)ObjectIndexes.Coconut,
                    (int)ObjectIndexes.Torch,
                    (int)ObjectIndexes.ChippedAmphora,
                    (int)ObjectIndexes.ChewingStick,
                    (int)ObjectIndexes.AncientSeed,
                    (int)ObjectIndexes.DwarvishHelm,
                    (int)ObjectIndexes.Driftwood,
                    (int)ObjectIndexes.BrownEgg,
                    (int)ObjectIndexes.LargeBrownEgg,
                    (int)ObjectIndexes.BakedFish,
                    (int)ObjectIndexes.ParsnipSoup,
                    (int)ObjectIndexes.CompleteBreakfast,
                    (int)ObjectIndexes.FriedMushroom,
                    (int)ObjectIndexes.CarpSurprise,
                    (int)ObjectIndexes.Hashbrowns,
                    (int)ObjectIndexes.Pancakes,
                    (int)ObjectIndexes.CrispyBass,
                    (int)ObjectIndexes.Bread,
                    (int)ObjectIndexes.TomKhaSoup,
                    (int)ObjectIndexes.ChocolateCake,
                    (int)ObjectIndexes.Cookie,
                    (int)ObjectIndexes.EggplantParmesan,
                    (int)ObjectIndexes.SurvivalBurger,
                    (int)ObjectIndexes.WheatFlour,
                    (int)ObjectIndexes.HardwoodFence,
                    (int)ObjectIndexes.Acorn,
                    (int)ObjectIndexes.PineCone,
                    (int)ObjectIndexes.WoodFence,
                    (int)ObjectIndexes.Gate,
                    (int)ObjectIndexes.WoodFloor,
                    (int)ObjectIndexes.Clay,
                    (int)ObjectIndexes.WeatheredFloor,
                    (int)ObjectIndexes.Wood,
                    (int)ObjectIndexes.Coffee,
                    (int)ObjectIndexes.CommonMushroom,
                    (int)ObjectIndexes.WoodPath,
                    (int)ObjectIndexes.Hazelnut,
                    (int)ObjectIndexes.Truffle,
                    (int)ObjectIndexes.Geode,
                    (int)ObjectIndexes.Mudstone,
                    (int)ObjectIndexes.AmphibianFossil,
                    (int)ObjectIndexes.PalmFossil,
                    (int)ObjectIndexes.PlumPudding,
                    (int)ObjectIndexes.RoastedHazelnuts,
                    (int)ObjectIndexes.Bruschetta,
                    (int)ObjectIndexes.QualitySprinkler,
                    (int)ObjectIndexes.PoppyseedMuffin,
                    (int)ObjectIndexes.RainTotem,
                    (int)ObjectIndexes.WarpTotemMountains,
                    (int)ObjectIndexes.CorkBobber,
                    (int)ObjectIndexes.PineTar,
                    (int)ObjectIndexes.MapleBar
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Orange;
                break;

            case BundleTypes.PantryColorGreen:
                Name           = Globals.GetTranslation("bundle-pantry-green");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Emerald,
                    (int)ObjectIndexes.Jade,
                    (int)ObjectIndexes.CactusFruit,
                    (int)ObjectIndexes.DwarfScrollII,
                    (int)ObjectIndexes.StrangeDoll2,
                    (int)ObjectIndexes.Snail,
                    (int)ObjectIndexes.Seaweed,
                    (int)ObjectIndexes.GreenAlgae,
                    (int)ObjectIndexes.Salad,
                    (int)ObjectIndexes.BeanHotpot,
                    (int)ObjectIndexes.TroutSoup,
                    (int)ObjectIndexes.IceCream,
                    (int)ObjectIndexes.Stuffing,
                    (int)ObjectIndexes.FiddleheadFern,
                    (int)ObjectIndexes.GrassStarter,
                    (int)ObjectIndexes.Pickles,
                    (int)ObjectIndexes.Juice,
                    (int)ObjectIndexes.FieldSnack,
                    (int)ObjectIndexes.DuckFeather,
                    (int)ObjectIndexes.AlgaeSoup,
                    (int)ObjectIndexes.SlimeCharmerRing,
                    (int)ObjectIndexes.BurglarsRing,
                    (int)ObjectIndexes.JadeRing,
                    (int)ObjectIndexes.EmeraldRing,
                    (int)ObjectIndexes.Alamite,
                    (int)ObjectIndexes.Geminite,
                    (int)ObjectIndexes.Jamborite,
                    (int)ObjectIndexes.Malachite,
                    (int)ObjectIndexes.PetrifiedSlime,
                    (int)ObjectIndexes.OceanStone,
                    (int)ObjectIndexes.Coleslaw,
                    (int)ObjectIndexes.FiddleheadRisotto,
                    (int)ObjectIndexes.GreenSlimeEgg,
                    (int)ObjectIndexes.WarpTotemFarm,
                    (int)ObjectIndexes.OakResin,
                    (int)ObjectIndexes.FishStew,
                    (int)ObjectIndexes.Escargot,
                    (int)ObjectIndexes.Slime,
                    (int)ObjectIndexes.Fiber,
                    (int)ObjectIndexes.OilOfGarlic,
                    (int)ObjectIndexes.WildBait
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Green;
                break;
            }
        }
示例#13
0
        /// <summary>
        /// Generates the reward for the bundle
        /// </summary>
        protected override void GenerateReward()
        {
            RequiredItem randomOre = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.CopperOre, 100),
                new RequiredItem((int)ObjectIndexes.IronOre, 100),
                new RequiredItem((int)ObjectIndexes.GoldOre, 100),
                new RequiredItem((int)ObjectIndexes.IridiumOre, 10),
            });

            RequiredItem randomBar = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.CopperBar, 15),
                new RequiredItem((int)ObjectIndexes.IronBar, 15),
                new RequiredItem((int)ObjectIndexes.GoldBar, 15),
                new RequiredItem((int)ObjectIndexes.IridiumBar)
            });

            RequiredItem randomGeode = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.Geode, 25),
                new RequiredItem((int)ObjectIndexes.FrozenGeode, 25),
                new RequiredItem((int)ObjectIndexes.MagmaGeode, 25),
                new RequiredItem((int)ObjectIndexes.OmniGeode, 25)
            });

            RequiredItem randomMonsterDrop = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.BugMeat, 200),
                new RequiredItem((int)ObjectIndexes.Slime, 150),
                new RequiredItem((int)ObjectIndexes.BatWing, 100),
                new RequiredItem((int)ObjectIndexes.SolarEssence, 50),
                new RequiredItem((int)ObjectIndexes.VoidEssence, 50)
            });

            RequiredItem randomExplosive = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.CherryBomb, 25, 50),
                new RequiredItem((int)ObjectIndexes.Bomb, 25, 50),
                new RequiredItem((int)ObjectIndexes.MegaBomb, 25, 50)
            });

            RequiredItem randomGemstone = Globals.RNGGetRandomValueFromList(new List <RequiredItem>()
            {
                new RequiredItem((int)ObjectIndexes.Quartz, 25, 50),
                new RequiredItem((int)ObjectIndexes.FireQuartz, 25, 50),
                new RequiredItem((int)ObjectIndexes.EarthCrystal, 25, 50),
                new RequiredItem((int)ObjectIndexes.FrozenTear, 25, 50),
                new RequiredItem((int)ObjectIndexes.Aquamarine, 25, 50),
                new RequiredItem((int)ObjectIndexes.Amethyst, 25, 50),
                new RequiredItem((int)ObjectIndexes.Emerald, 25, 50),
                new RequiredItem((int)ObjectIndexes.Ruby, 25, 50),
                new RequiredItem((int)ObjectIndexes.Topaz, 25, 50),
                new RequiredItem((int)ObjectIndexes.Jade, 25, 50),
                new RequiredItem((int)ObjectIndexes.Diamond, 10, 30),
            });

            var potentialRewards = new List <RequiredItem>
            {
                randomOre,
                randomBar,
                randomGeode,
                randomMonsterDrop,
                randomExplosive,
                randomGemstone,
                new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetGeodeMinerals()), 25),
                new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetArtifacts())),
                new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetRings())),
                new RequiredItem((int)ObjectIndexes.Crystalarium),
                new RequiredItem((int)ObjectIndexes.MayonnaiseMachine),
                new RequiredItem((int)ObjectIndexes.Coal, 100)
            };

            if (Globals.RNGGetNextBoolean(1))             // 1% chance of a prismatic shard reward
            {
                Reward = new RequiredItem((int)ObjectIndexes.PrismaticShard);
            }

            else
            {
                Reward = Globals.RNGGetRandomValueFromList(potentialRewards);
            }
        }
示例#14
0
        /// <summary>
        /// Populates the bundle with the name, required items, minimum required, and color
        /// </summary>
        protected override void Populate()
        {
            BundleType = Globals.RNGGetAndRemoveRandomValueFromList(RoomBundleTypes);
            List <RequiredItem> potentialItems = new List <RequiredItem>();

            switch (BundleType)
            {
            case BundleTypes.BoilerArtifacts:
                Name           = Globals.GetTranslation("bundle-boiler-artifacts");
                potentialItems = RequiredItem.CreateList(
                    ItemList.GetArtifacts().Where(x => x.DifficultyToObtain < ObtainingDifficulties.RareItem).ToList()
                    );
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = 3;
                Color = BundleColors.Orange;
                break;

            case BundleTypes.BoilerMinerals:
                Name                 = Globals.GetTranslation("bundle-boiler-minerals");
                potentialItems       = RequiredItem.CreateList(ItemList.GetGeodeMinerals());
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(4, 6);
                Color                = BundleColors.Purple;
                break;

            case BundleTypes.BoilerGeode:
                Name          = Globals.GetTranslation("bundle-boiler-geode");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Geode, 1, 10),
                    new RequiredItem((int)ObjectIndexes.FrozenGeode, 1, 10),
                    new RequiredItem((int)ObjectIndexes.MagmaGeode, 1, 10),
                    new RequiredItem((int)ObjectIndexes.OmniGeode, 1, 10),
                };
                Color = BundleColors.Red;
                break;

            case BundleTypes.BoilerGemstone:
                Name           = Globals.GetTranslation("bundle-boiler-gemstone");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Quartz,
                    (int)ObjectIndexes.FireQuartz,
                    (int)ObjectIndexes.EarthCrystal,
                    (int)ObjectIndexes.FrozenTear,
                    (int)ObjectIndexes.Aquamarine,
                    (int)ObjectIndexes.Amethyst,
                    (int)ObjectIndexes.Emerald,
                    (int)ObjectIndexes.Ruby,
                    (int)ObjectIndexes.Topaz,
                    (int)ObjectIndexes.Jade,
                    (int)ObjectIndexes.Diamond
                }, 1, 5);
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(6, 8));
                MinimumRequiredItems = Range.GetRandomValue(RequiredItems.Count - 2, RequiredItems.Count);
                Color = BundleColors.Blue;
                break;

            case BundleTypes.BoilerMetal:
                Name           = Globals.GetTranslation("bundle-boiler-metal");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.CopperOre, 5, 10),
                    new RequiredItem((int)ObjectIndexes.IronOre, 5, 10),
                    new RequiredItem((int)ObjectIndexes.GoldOre, 5, 10),
                    new RequiredItem((int)ObjectIndexes.IridiumOre, 5, 10),
                    new RequiredItem((int)ObjectIndexes.CopperBar, 1, 5),
                    new RequiredItem((int)ObjectIndexes.IronBar, 1, 5),
                    new RequiredItem((int)ObjectIndexes.GoldBar, 1, 5),
                    new RequiredItem((int)ObjectIndexes.IridiumBar, 1, 5),
                };
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, Range.GetRandomValue(6, 8));
                MinimumRequiredItems = Range.GetRandomValue(RequiredItems.Count - 2, RequiredItems.Count);
                Color = BundleColors.Red;
                break;

            case BundleTypes.BoilerExplosive:
                Name          = Globals.GetTranslation("bundle-boiler-explosive");
                RequiredItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.CherryBomb, 1, 5),
                    new RequiredItem((int)ObjectIndexes.Bomb, 1, 5),
                    new RequiredItem((int)ObjectIndexes.MegaBomb, 1, 5),
                };
                Color = BundleColors.Red;
                break;

            case BundleTypes.BoilerRing:
                Name          = Globals.GetTranslation("bundle-boiler-ring");
                RequiredItems = RequiredItem.CreateList(
                    Globals.RNGGetRandomValuesFromList(ItemList.GetRings(), 8)
                    );
                MinimumRequiredItems = Range.GetRandomValue(4, 6);
                Color = BundleColors.Yellow;
                break;

            case BundleTypes.BoilerSpoopy:
                Name           = Globals.GetTranslation("bundle-boiler-spoopy");
                potentialItems = new List <RequiredItem>
                {
                    new RequiredItem((int)ObjectIndexes.Pumpkin, 6),
                    new RequiredItem((int)ObjectIndexes.JackOLantern, 6),
                    new RequiredItem((int)ObjectIndexes.Ghostfish, 6),
                    new RequiredItem((int)ObjectIndexes.BatWing, 6),
                    new RequiredItem((int)ObjectIndexes.VoidEssence, 6),
                    new RequiredItem((int)ObjectIndexes.VoidEgg, 6),
                    new RequiredItem((int)ObjectIndexes.PurpleMushroom, 6),
                    new RequiredItem((int)ObjectIndexes.GhostCrystal, 6),
                    new RequiredItem((int)ObjectIndexes.SpookFish, 6)
                };
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 6);
                MinimumRequiredItems = 3;
                Color = BundleColors.Purple;
                break;

            case BundleTypes.BoilerMonster:
                Name          = Globals.GetTranslation("bundle-boiler-monster");
                RequiredItems = new List <RequiredItem>()
                {
                    new RequiredItem((int)ObjectIndexes.BugMeat, 10, 50),
                    new RequiredItem((int)ObjectIndexes.Slime, 10, 50),
                    new RequiredItem((int)ObjectIndexes.BatWing, 10, 50),
                    new RequiredItem((int)ObjectIndexes.SolarEssence, 10, 50),
                    new RequiredItem((int)ObjectIndexes.VoidEssence, 10, 50)
                };
                Color = BundleColors.Red;
                break;

            case BundleTypes.BoilerColorBlack:
                Name           = Globals.GetTranslation("bundle-boiler-black");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.RareDisc,
                    (int)ObjectIndexes.Catfish,
                    (int)ObjectIndexes.ScorpionCarp,
                    (int)ObjectIndexes.TigerTrout,
                    (int)ObjectIndexes.Halibut,
                    (int)ObjectIndexes.MakiRoll,
                    (int)ObjectIndexes.Bomb,
                    (int)ObjectIndexes.VoidEgg,
                    (int)ObjectIndexes.VoidMayonnaise,
                    (int)ObjectIndexes.Coal,
                    (int)ObjectIndexes.Blackberry,
                    (int)ObjectIndexes.VampireRing,
                    (int)ObjectIndexes.Neptunite,
                    (int)ObjectIndexes.ThunderEgg,
                    (int)ObjectIndexes.BatWing,
                    (int)ObjectIndexes.VoidEssence,
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Purple;
                break;

            case BundleTypes.BoilerColorRed:
                Name           = Globals.GetTranslation("bundle-boiler-red");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Ruby,
                    (int)ObjectIndexes.FireQuartz,
                    (int)ObjectIndexes.DwarfScrollI,
                    (int)ObjectIndexes.RedMullet,
                    (int)ObjectIndexes.RedSnapper,
                    (int)ObjectIndexes.LavaEel,
                    (int)ObjectIndexes.Bullhead,
                    (int)ObjectIndexes.Woodskip,
                    (int)ObjectIndexes.Crimsonfish,
                    (int)ObjectIndexes.PepperPoppers,
                    (int)ObjectIndexes.RhubarbPie,
                    (int)ObjectIndexes.RedPlate,
                    (int)ObjectIndexes.CranberrySauce,
                    (int)ObjectIndexes.Holly,
                    (int)ObjectIndexes.CherryBomb,
                    (int)ObjectIndexes.MegaBomb,
                    (int)ObjectIndexes.Jelly,
                    (int)ObjectIndexes.EnergyTonic,
                    (int)ObjectIndexes.RedMushroom,
                    (int)ObjectIndexes.RedSlimeEgg,
                    (int)ObjectIndexes.ExplosiveAmmo,
                    (int)ObjectIndexes.RubyRing,
                    (int)ObjectIndexes.MagmaGeode,
                    (int)ObjectIndexes.Helvite,
                    (int)ObjectIndexes.Jasper,
                    (int)ObjectIndexes.RadishSalad,
                    (int)ObjectIndexes.FruitSalad,
                    (int)ObjectIndexes.CranberryCandy,
                    (int)ObjectIndexes.Apple,
                    (int)ObjectIndexes.Pomegranate,
                    (int)ObjectIndexes.Cherry,
                    (int)ObjectIndexes.TreasureHunter,
                    (int)ObjectIndexes.CrabPot,
                    (int)ObjectIndexes.LifeElixir
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Red;
                break;

            case BundleTypes.BoilerColorGray:
                Name           = Globals.GetTranslation("bundle-boiler-gray");
                potentialItems = RequiredItem.CreateList(new List <int>
                {
                    (int)ObjectIndexes.Stone,
                    (int)ObjectIndexes.Arrowhead,
                    (int)ObjectIndexes.AncientSword,
                    (int)ObjectIndexes.RustySpoon,
                    (int)ObjectIndexes.PrehistoricTool,
                    (int)ObjectIndexes.Anchor,
                    (int)ObjectIndexes.PrehistoricHandaxe,
                    (int)ObjectIndexes.DwarfGadget,
                    (int)ObjectIndexes.Tilapia,
                    (int)ObjectIndexes.Chub,
                    (int)ObjectIndexes.Lingcod,
                    (int)ObjectIndexes.Crayfish,
                    (int)ObjectIndexes.Cockle,
                    (int)ObjectIndexes.Mussel,
                    (int)ObjectIndexes.Oyster,
                    (int)ObjectIndexes.Trash,
                    (int)ObjectIndexes.SoggyNewspaper,
                    (int)ObjectIndexes.StoneFence,
                    (int)ObjectIndexes.IronFence,
                    (int)ObjectIndexes.StoneFloor,
                    (int)ObjectIndexes.CrystalFloor,
                    (int)ObjectIndexes.TeaSet,
                    (int)ObjectIndexes.GravelPath,
                    (int)ObjectIndexes.MagnetRing,
                    (int)ObjectIndexes.SmallMagnetRing,
                    (int)ObjectIndexes.WarriorRing,
                    (int)ObjectIndexes.SavageRing,
                    (int)ObjectIndexes.Bixite,
                    (int)ObjectIndexes.Granite,
                    (int)ObjectIndexes.Basalt,
                    (int)ObjectIndexes.Limestone,
                    (int)ObjectIndexes.Sprinkler,
                    (int)ObjectIndexes.BarbedHook,
                    (int)ObjectIndexes.TrapBobber,
                    (int)ObjectIndexes.OmniGeode,
                });
                RequiredItems        = Globals.RNGGetRandomValuesFromList(potentialItems, 8);
                MinimumRequiredItems = Range.GetRandomValue(3, 6);
                Color = BundleColors.Blue;
                break;
            }
        }