/// <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); }
/// <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; }
/// <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()); }
/// <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); }
/// <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; } }
/// <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; } }
/// <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; } }