/// <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 a random reward out of all of the items /// </summary> protected void GenerateRandomReward() { Item reward = Globals.RNGGetRandomValueFromList(ItemList.Items.Values.Where(x => x.Id != (int)ObjectIndexes.TransmuteAu && x.Id != (int)ObjectIndexes.TransmuteFe).ToList()); int numberToGive = Range.GetRandomValue(1, 25); if (!reward.CanStack) { numberToGive = 1; } Reward = new RequiredItem(reward.Id, numberToGive); }
/// <summary> /// Generates the bundle for foraging items /// </summary> /// <param name="season">The season</param> /// <param name="color">The color of the bundle</param> private void GenerateForagingBundle(Seasons season, BundleColors color) { string seasonString = Globals.GetTranslation($"seasons-{season.ToString().ToLower()}"); seasonString = $"{seasonString[0].ToString().ToUpper()}{seasonString.Substring(1)}"; Name = Globals.GetTranslation($"bundle-crafting-foraging", new { season = seasonString }); List <RequiredItem> potentialItems = RequiredItem.CreateList(ItemList.GetForagables(season)); int numberOfChoices = Math.Min(potentialItems.Count, 8); RequiredItems = Globals.RNGGetRandomValuesFromList(potentialItems, numberOfChoices); MinimumRequiredItems = Range.GetRandomValue(4, numberOfChoices); Color = color; }
/// <summary> /// Creates a bundle with random items /// </summary> protected void PopulateRandomBundle() { BundleType = Globals.RNGGetRandomValueFromList(_randomBundleTypes); List <RequiredItem> potentialItems = new List <RequiredItem>(); switch (BundleType) { case BundleTypes.AllRandom: Name = Globals.GetTranslation("bundle-random-all"); potentialItems = RequiredItem.CreateList(ItemList.Items.Values.Where(x => x.DifficultyToObtain <ObtainingDifficulties.Impossible && x.Id> -4) .ToList()); RequiredItems = Globals.RNGGetRandomValuesFromList(potentialItems, 8); MinimumRequiredItems = 4; break; case BundleTypes.AllLetter: string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string randomLetter; do { randomLetter = letters[Range.GetRandomValue(0, letters.Length - 1)].ToString(); letters.Replace(randomLetter, ""); potentialItems = RequiredItem.CreateList( ItemList.Items.Values.Where(x => ( (x.OverrideDisplayName == null && x.Name.StartsWith(randomLetter, StringComparison.InvariantCultureIgnoreCase)) || (x.OverrideDisplayName != null && x.OverrideDisplayName.StartsWith(randomLetter, StringComparison.InvariantCultureIgnoreCase)) ) && x.Id > -4 ).ToList() ); } while (potentialItems.Count < 4); Name = Globals.GetTranslation("bundle-random-letter", new { letter = randomLetter }); ImageNameSuffix = randomLetter; RequiredItems = Globals.RNGGetRandomValuesFromList(potentialItems, 8); MinimumRequiredItems = 3; break; } Color = Globals.RNGGetRandomValueFromList( Enum.GetValues(typeof(BundleColors)).Cast <BundleColors>().ToList()); }
/// <summary> /// Populates the required items based on the items and their multipliers /// Sums up the amounts of items if they have the same id to prevent errors /// </summary> /// <param name="itemsRequired">The items this building requires</param> private void PopulateRequiredItems(List <ItemAndMultiplier> itemsRequired) { Dictionary <int, RequiredItem> requiredItemsDict = new Dictionary <int, RequiredItem>(); foreach (ItemAndMultiplier itemAndMultiplier in itemsRequired) { RequiredItem requiredItem = new RequiredItem(itemAndMultiplier.Item, itemAndMultiplier.Amount); int reqiredItemId = requiredItem.Item.Id; if (requiredItemsDict.ContainsKey(reqiredItemId)) { requiredItemsDict[reqiredItemId].NumberOfItems += requiredItem.NumberOfItems; } else { requiredItemsDict.Add(reqiredItemId, requiredItem); } } RequiredItems = requiredItemsDict.Values.ToList(); }
/// <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> /// Generates the reward for the bundle /// </summary> protected override void GenerateReward() { RequiredItem randomOre = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.CopperOre, 100), new RequiredItem((int)ObjectIndexes.IronOre, 100), new RequiredItem((int)ObjectIndexes.GoldOre, 100), new RequiredItem((int)ObjectIndexes.IridiumOre, 10), }); RequiredItem randomBar = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.CopperBar, 15), new RequiredItem((int)ObjectIndexes.IronBar, 15), new RequiredItem((int)ObjectIndexes.GoldBar, 15), new RequiredItem((int)ObjectIndexes.IridiumBar) }); RequiredItem randomGeode = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.Geode, 25), new RequiredItem((int)ObjectIndexes.FrozenGeode, 25), new RequiredItem((int)ObjectIndexes.MagmaGeode, 25), new RequiredItem((int)ObjectIndexes.OmniGeode, 25) }); RequiredItem randomMonsterDrop = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.BugMeat, 200), new RequiredItem((int)ObjectIndexes.Slime, 150), new RequiredItem((int)ObjectIndexes.BatWing, 100), new RequiredItem((int)ObjectIndexes.SolarEssence, 50), new RequiredItem((int)ObjectIndexes.VoidEssence, 50) }); RequiredItem randomExplosive = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.CherryBomb, 25, 50), new RequiredItem((int)ObjectIndexes.Bomb, 25, 50), new RequiredItem((int)ObjectIndexes.MegaBomb, 25, 50) }); RequiredItem randomGemstone = Globals.RNGGetRandomValueFromList(new List <RequiredItem>() { new RequiredItem((int)ObjectIndexes.Quartz, 25, 50), new RequiredItem((int)ObjectIndexes.FireQuartz, 25, 50), new RequiredItem((int)ObjectIndexes.EarthCrystal, 25, 50), new RequiredItem((int)ObjectIndexes.FrozenTear, 25, 50), new RequiredItem((int)ObjectIndexes.Aquamarine, 25, 50), new RequiredItem((int)ObjectIndexes.Amethyst, 25, 50), new RequiredItem((int)ObjectIndexes.Emerald, 25, 50), new RequiredItem((int)ObjectIndexes.Ruby, 25, 50), new RequiredItem((int)ObjectIndexes.Topaz, 25, 50), new RequiredItem((int)ObjectIndexes.Jade, 25, 50), new RequiredItem((int)ObjectIndexes.Diamond, 10, 30), }); var potentialRewards = new List <RequiredItem> { randomOre, randomBar, randomGeode, randomMonsterDrop, randomExplosive, randomGemstone, new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetGeodeMinerals()), 25), new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetArtifacts())), new RequiredItem(Globals.RNGGetRandomValueFromList(ItemList.GetRings())), new RequiredItem((int)ObjectIndexes.Crystalarium), new RequiredItem((int)ObjectIndexes.MayonnaiseMachine), new RequiredItem((int)ObjectIndexes.Coal, 100) }; if (Globals.RNGGetNextBoolean(1)) // 1% chance of a prismatic shard reward { Reward = new RequiredItem((int)ObjectIndexes.PrismaticShard); } else { Reward = Globals.RNGGetRandomValueFromList(potentialRewards); } }
/// <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; } }