/// <summary> /// Randomize fruit tree information /// </summary> /// <param name="editedObjectInfo">The edited object information</param> private static void RandomizeFruitTrees(EditedObjectInformation editedObjectInfo) { int[] fruitTreesIds = new int[] { (int)ObjectIndexes.CherrySapling, (int)ObjectIndexes.ApricotSapling, (int)ObjectIndexes.OrangeSapling, (int)ObjectIndexes.PeachSapling, (int)ObjectIndexes.PomegranateSapling, (int)ObjectIndexes.AppleSapling }; List <Item> allPotentialTreesItems = ItemList.Items.Values.Where(x => fruitTreesIds.Contains(x.Id) || x.DifficultyToObtain < ObtainingDifficulties.Impossible ).ToList(); List <Item> treeItems = Globals.RNGGetRandomValuesFromList(allPotentialTreesItems, 6); string[] seasons = { "spring", "spring", "summer", "summer", "fall", "fall" }; seasons[Globals.RNG.Next(0, 6)] = "winter"; int[] prices = treeItems.Select(x => x.GetPriceForObtainingDifficulty(0.2)).ToArray(); if (!Globals.Config.RandomizeFruitTrees) { return; } // Fruit tree asset replacements var fruitTreeReplacements = new Dictionary <int, string>(); // The Trees are incremented starting with cherry for (int i = 0; i < treeItems.Count; i++) { int price = prices[i]; string season = seasons[i]; string seasonDisplay = Globals.GetTranslation($"seasons-{season}"); Item treeItem = treeItems[i]; string treeItemName = treeItem.DisplayName; string fruitTreeName = treeItem.Id == fruitTreesIds[i] ? Globals.GetTranslation("item-recursion-sapling-name") : Globals.GetTranslation("sapling-text", new { itemName = treeItemName }); string fruitTreeEnglishName = treeItem.Id == fruitTreesIds[i] ? "Recursion Sapling" : $"{treeItem.Name} Sapling"; int fruitTreeId = fruitTreesIds[i]; string fruitTreeValue = $"{i}/{season}/{treeItem.Id}/{price}"; editedObjectInfo.FruitTreeReplacements[fruitTreeId] = fruitTreeValue; ItemList.Items[fruitTreeId].OverrideName = fruitTreeEnglishName; string fruitTreeObjectValue = $"{fruitTreeName}/{price / 2}/-300/Basic -74/{fruitTreeName}/{Globals.GetTranslation("sapling-description", new { itemName = treeItemName, season = seasonDisplay })}"; editedObjectInfo.ObjectInformationReplacements[fruitTreeId] = fruitTreeObjectValue; } }
/// <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> /// 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; } }