from dataclasses import dataclass from . import fish_data from .common_data import quality_dict from .game_item import GameItem from .museum_data import Mineral @dataclass(frozen=True) class BundleItem: item: GameItem amount: int quality: int @staticmethod def item_bundle(name: str, item_id: int, amount: int, quality: int): return BundleItem(GameItem(name, item_id), amount, quality) @staticmethod def money_bundle(amount: int): return BundleItem.item_bundle("Money", -1, amount, amount) def as_amount(self, amount: int): return BundleItem.item_bundle(self.item.name, self.item.item_id, amount, self.quality) def as_quality(self, quality: int): return BundleItem.item_bundle(self.item.name, self.item.item_id, self.amount, quality) def as_gold_quality(self): return self.as_quality(2) def as_quality_crop(self): amount = 5 difficult_crops = ["Sweet Gem Berry", "Ancient Fruit"] if self.item.name in difficult_crops: amount = 1 return self.as_gold_quality().as_amount(amount) def is_gold_quality(self) -> bool: return self.quality >= 2 def __repr__(self): return f"{self.amount} {quality_dict[self.quality]} {self.item.name}" def __lt__(self, other): return self.item < other.item wild_horseradish = BundleItem.item_bundle("Wild Horseradish", 16, 1, 0) daffodil = BundleItem.item_bundle("Daffodil", 18, 1, 0) leek = BundleItem.item_bundle("Leek", 20, 1, 0) dandelion = BundleItem.item_bundle("Dandelion", 22, 1, 0) morel = BundleItem.item_bundle("Morel", 257, 1, 0) common_mushroom = BundleItem.item_bundle("Common Mushroom", 404, 1, 0) salmonberry = BundleItem.item_bundle("Salmonberry", 296, 1, 0) spring_onion = BundleItem.item_bundle("Spring Onion", 399, 1, 0) grape = BundleItem.item_bundle("Grape", 398, 1, 0) spice_berry = BundleItem.item_bundle("Spice Berry", 396, 1, 0) sweet_pea = BundleItem.item_bundle("Sweet Pea", 402, 1, 0) red_mushroom = BundleItem.item_bundle("Red Mushroom", 420, 1, 0) fiddlehead_fern = BundleItem.item_bundle("Fiddlehead Fern", 259, 1, 0) wild_plum = BundleItem.item_bundle("Wild Plum", 406, 1, 0) hazelnut = BundleItem.item_bundle("Hazelnut", 408, 1, 0) blackberry = BundleItem.item_bundle("Blackberry", 410, 1, 0) chanterelle = BundleItem.item_bundle("Chanterelle", 281, 1, 0) winter_root = BundleItem.item_bundle("Winter Root", 412, 1, 0) crystal_fruit = BundleItem.item_bundle("Crystal Fruit", 414, 1, 0) snow_yam = BundleItem.item_bundle("Snow Yam", 416, 1, 0) crocus = BundleItem.item_bundle("Crocus", 418, 1, 0) holly = BundleItem.item_bundle("Holly", 283, 1, 0) coconut = BundleItem.item_bundle("Coconut", 88, 1, 0) cactus_fruit = BundleItem.item_bundle("Cactus Fruit", 90, 1, 0) cave_carrot = BundleItem.item_bundle("Cave Carrot", 78, 1, 0) purple_mushroom = BundleItem.item_bundle("Purple Mushroom", 422, 1, 0) maple_syrup = BundleItem.item_bundle("Maple Syrup", 724, 1, 0) oak_resin = BundleItem.item_bundle("Oak Resin", 725, 1, 0) pine_tar = BundleItem.item_bundle("Pine Tar", 726, 1, 0) nautilus_shell = BundleItem.item_bundle("Nautilus Shell", 392, 1, 0) coral = BundleItem.item_bundle("Coral", 393, 1, 0) sea_urchin = BundleItem.item_bundle("Sea Urchin", 397, 1, 0) rainbow_shell = BundleItem.item_bundle("Rainbow Shell", 394, 1, 0) clam = BundleItem(fish_data.clam, 1, 0) cockle = BundleItem(fish_data.cockle, 1, 0) mussel = BundleItem(fish_data.mussel, 1, 0) oyster = BundleItem(fish_data.oyster, 1, 0) seaweed = BundleItem.item_bundle("Seaweed", 152, 1, 0) wood = BundleItem.item_bundle("Wood", 388, 99, 0) stone = BundleItem.item_bundle("Stone", 390, 99, 0) hardwood = BundleItem.item_bundle("Hardwood", 709, 10, 0) clay = BundleItem.item_bundle("Clay", 330, 10, 0) fiber = BundleItem.item_bundle("Fiber", 771, 99, 0) blue_jazz = BundleItem.item_bundle("Blue Jazz", 597, 1, 0) cauliflower = BundleItem.item_bundle("Cauliflower", 190, 1, 0) green_bean = BundleItem.item_bundle("Green Bean", 188, 1, 0) kale = BundleItem.item_bundle("Kale", 250, 1, 0) parsnip = BundleItem.item_bundle("Parsnip", 24, 1, 0) potato = BundleItem.item_bundle("Potato", 192, 1, 0) strawberry = BundleItem.item_bundle("Strawberry", 400, 1, 0) tulip = BundleItem.item_bundle("Tulip", 591, 1, 0) unmilled_rice = BundleItem.item_bundle("Unmilled Rice", 271, 1, 0) blueberry = BundleItem.item_bundle("Blueberry", 258, 1, 0) corn = BundleItem.item_bundle("Corn", 270, 1, 0) hops = BundleItem.item_bundle("Hops", 304, 1, 0) hot_pepper = BundleItem.item_bundle("Hot Pepper", 260, 1, 0) melon = BundleItem.item_bundle("Melon", 254, 1, 0) poppy = BundleItem.item_bundle("Poppy", 376, 1, 0) radish = BundleItem.item_bundle("Radish", 264, 1, 0) summer_spangle = BundleItem.item_bundle("Summer Spangle", 593, 1, 0) sunflower = BundleItem.item_bundle("Sunflower", 421, 1, 0) tomato = BundleItem.item_bundle("Tomato", 256, 1, 0) wheat = BundleItem.item_bundle("Wheat", 262, 1, 0) hay = BundleItem.item_bundle("Hay", 178, 1, 0) amaranth = BundleItem.item_bundle("Amaranth", 300, 1, 0) bok_choy = BundleItem.item_bundle("Bok Choy", 278, 1, 0) cranberries = BundleItem.item_bundle("Cranberries", 282, 1, 0) eggplant = BundleItem.item_bundle("Eggplant", 272, 1, 0) fairy_rose = BundleItem.item_bundle("Fairy Rose", 595, 1, 0) pumpkin = BundleItem.item_bundle("Pumpkin", 276, 1, 0) yam = BundleItem.item_bundle("Yam", 280, 1, 0) sweet_gem_berry = BundleItem.item_bundle("Sweet Gem Berry", 417, 1, 0) rhubarb = BundleItem.item_bundle("Rhubarb", 252, 1, 0) beet = BundleItem.item_bundle("Beet", 284, 1, 0) red_cabbage = BundleItem.item_bundle("Red Cabbage", 266, 1, 0) artichoke = BundleItem.item_bundle("Artichoke", 274, 1, 0) egg = BundleItem.item_bundle("Egg", 176, 1, 0) large_egg = BundleItem.item_bundle("Large Egg", 174, 1, 0) brown_egg = BundleItem.item_bundle("Egg (Brown)", 180, 1, 0) large_brown_egg = BundleItem.item_bundle("Large Egg (Brown)", 182, 1, 0) wool = BundleItem.item_bundle("Wool", 440, 1, 0) milk = BundleItem.item_bundle("Milk", 184, 1, 0) large_milk = BundleItem.item_bundle("Large Milk", 186, 1, 0) goat_milk = BundleItem.item_bundle("Goat Milk", 436, 1, 0) large_goat_milk = BundleItem.item_bundle("Large Goat Milk", 438, 1, 0) truffle = BundleItem.item_bundle("Truffle", 430, 1, 0) duck_feather = BundleItem.item_bundle("Duck Feather", 444, 1, 0) duck_egg = BundleItem.item_bundle("Duck Egg", 442, 1, 0) rabbit_foot = BundleItem.item_bundle("Rabbit's Foot", 446, 1, 0) truffle_oil = BundleItem.item_bundle("Truffle Oil", 432, 1, 0) cloth = BundleItem.item_bundle("Cloth", 428, 1, 0) goat_cheese = BundleItem.item_bundle("Goat Cheese", 426, 1, 0) cheese = BundleItem.item_bundle("Cheese", 424, 1, 0) honey = BundleItem.item_bundle("Honey", 340, 1, 0) beer = BundleItem.item_bundle("Beer", 346, 1, 0) juice = BundleItem.item_bundle("Juice", 350, 1, 0) mead = BundleItem.item_bundle("Mead", 459, 1, 0) pale_ale = BundleItem.item_bundle("Pale Ale", 303, 1, 0) wine = BundleItem.item_bundle("Wine", 348, 1, 0) jelly = BundleItem.item_bundle("Jelly", 344, 1, 0) pickles = BundleItem.item_bundle("Pickles", 342, 1, 0) caviar = BundleItem.item_bundle("Caviar", 445, 1, 0) aged_roe = BundleItem.item_bundle("Aged Roe", 447, 1, 0) apple = BundleItem.item_bundle("Apple", 613, 1, 0) apricot = BundleItem.item_bundle("Apricot", 634, 1, 0) orange = BundleItem.item_bundle("Orange", 635, 1, 0) peach = BundleItem.item_bundle("Peach", 636, 1, 0) pomegranate = BundleItem.item_bundle("Pomegranate", 637, 1, 0) cherry = BundleItem.item_bundle("Cherry", 638, 1, 0) lobster = BundleItem(fish_data.lobster, 1, 0) crab = BundleItem(fish_data.crab, 1, 0) shrimp = BundleItem(fish_data.shrimp, 1, 0) crayfish = BundleItem(fish_data.crayfish, 1, 0) snail = BundleItem(fish_data.snail, 1, 0) periwinkle = BundleItem(fish_data.periwinkle, 1, 0) trash = BundleItem.item_bundle("Trash", 168, 1, 0) driftwood = BundleItem.item_bundle("Driftwood", 169, 1, 0) soggy_newspaper = BundleItem.item_bundle("Soggy Newspaper", 172, 1, 0) broken_cd = BundleItem.item_bundle("Broken CD", 171, 1, 0) broken_glasses = BundleItem.item_bundle("Broken Glasses", 170, 1, 0) chub = BundleItem(fish_data.chub, 1, 0) catfish = BundleItem(fish_data.catfish, 1, 0) rainbow_trout = BundleItem(fish_data.rainbow_trout, 1, 0) lingcod = BundleItem(fish_data.lingcod, 1, 0) walleye = BundleItem(fish_data.walleye, 1, 0) perch = BundleItem(fish_data.perch, 1, 0) pike = BundleItem(fish_data.pike, 1, 0) bream = BundleItem(fish_data.bream, 1, 0) salmon = BundleItem(fish_data.salmon, 1, 0) sunfish = BundleItem(fish_data.sunfish, 1, 0) tiger_trout = BundleItem(fish_data.tiger_trout, 1, 0) shad = BundleItem(fish_data.shad, 1, 0) smallmouth_bass = BundleItem(fish_data.smallmouth_bass, 1, 0) dorado = BundleItem(fish_data.dorado, 1, 0) carp = BundleItem(fish_data.carp, 1, 0) midnight_carp = BundleItem(fish_data.midnight_carp, 1, 0) largemouth_bass = BundleItem(fish_data.largemouth_bass, 1, 0) sturgeon = BundleItem(fish_data.sturgeon, 1, 0) bullhead = BundleItem(fish_data.bullhead, 1, 0) tilapia = BundleItem(fish_data.tilapia, 1, 0) pufferfish = BundleItem(fish_data.pufferfish, 1, 0) tuna = BundleItem(fish_data.tuna, 1, 0) super_cucumber = BundleItem(fish_data.super_cucumber, 1, 0) flounder = BundleItem(fish_data.flounder, 1, 0) anchovy = BundleItem(fish_data.anchovy, 1, 0) sardine = BundleItem(fish_data.sardine, 1, 0) red_mullet = BundleItem(fish_data.red_mullet, 1, 0) herring = BundleItem(fish_data.herring, 1, 0) eel = BundleItem(fish_data.eel, 1, 0) octopus = BundleItem(fish_data.octopus, 1, 0) red_snapper = BundleItem(fish_data.red_snapper, 1, 0) squid = BundleItem(fish_data.squid, 1, 0) sea_cucumber = BundleItem(fish_data.sea_cucumber, 1, 0) albacore = BundleItem(fish_data.albacore, 1, 0) halibut = BundleItem(fish_data.halibut, 1, 0) scorpion_carp = BundleItem(fish_data.scorpion_carp, 1, 0) sandfish = BundleItem(fish_data.sandfish, 1, 0) woodskip = BundleItem(fish_data.woodskip, 1, 0) lava_eel = BundleItem(fish_data.lava_eel, 1, 0) ice_pip = BundleItem(fish_data.ice_pip, 1, 0) stonefish = BundleItem(fish_data.stonefish, 1, 0) ghostfish = BundleItem(fish_data.ghostfish, 1, 0) wilted_bouquet = BundleItem.item_bundle("Wilted Bouquet", 277, 1, 0) copper_bar = BundleItem.item_bundle("Copper Bar", 334, 2, 0) iron_Bar = BundleItem.item_bundle("Iron Bar", 335, 2, 0) gold_bar = BundleItem.item_bundle("Gold Bar", 336, 1, 0) iridium_bar = BundleItem.item_bundle("Iridium Bar", 337, 1, 0) refined_quartz = BundleItem.item_bundle("Refined Quartz", 338, 2, 0) coal = BundleItem.item_bundle("Coal", 382, 5, 0) quartz = BundleItem(Mineral.quartz, 1, 0) fire_quartz = BundleItem(Mineral.fire_quartz, 1, 0) frozen_tear = BundleItem(Mineral.frozen_tear, 1, 0) earth_crystal = BundleItem(Mineral.earth_crystal, 1, 0) emerald = BundleItem(Mineral.emerald, 1, 0) aquamarine = BundleItem(Mineral.aquamarine, 1, 0) ruby = BundleItem(Mineral.ruby, 1, 0) amethyst = BundleItem(Mineral.amethyst, 1, 0) topaz = BundleItem(Mineral.topaz, 1, 0) jade = BundleItem(Mineral.jade, 1, 0) slime = BundleItem.item_bundle("Slime", 766, 99, 0) bug_meat = BundleItem.item_bundle("Bug Meat", 684, 10, 0) bat_wing = BundleItem.item_bundle("Bat Wing", 767, 10, 0) solar_essence = BundleItem.item_bundle("Solar Essence", 768, 1, 0) void_essence = BundleItem.item_bundle("Void Essence", 769, 1, 0) maki_roll = BundleItem.item_bundle("Maki Roll", 228, 1, 0) fried_egg = BundleItem.item_bundle("Fried Egg", 194, 1, 0) omelet = BundleItem.item_bundle("Omelet", 195, 1, 0) pizza = BundleItem.item_bundle("Pizza", 206, 1, 0) hashbrowns = BundleItem.item_bundle("Hashbrowns", 210, 1, 0) pancakes = BundleItem.item_bundle("Pancakes", 211, 1, 0) bread = BundleItem.item_bundle("Bread", 216, 1, 0) tortilla = BundleItem.item_bundle("Tortilla", 229, 1, 0) triple_shot_espresso = BundleItem.item_bundle("Triple Shot Espresso", 253, 1, 0) farmer_s_lunch = BundleItem.item_bundle("Farmer's Lunch", 240, 1, 0) survival_burger = BundleItem.item_bundle("Survival Burger", 241, 1, 0) dish_o_the_sea = BundleItem.item_bundle("Dish O' The Sea", 242, 1, 0) miner_s_treat = BundleItem.item_bundle("Miner's Treat", 243, 1, 0) roots_platter = BundleItem.item_bundle("Roots Platter", 244, 1, 0) salad = BundleItem.item_bundle("Salad", 196, 1, 0) cheese_cauliflower = BundleItem.item_bundle("Cheese Cauliflower", 197, 1, 0) parsnip_soup = BundleItem.item_bundle("Parsnip Soup", 199, 1, 0) fried_mushroom = BundleItem.item_bundle("Fried Mushroom", 205, 1, 0) salmon_dinner = BundleItem.item_bundle("Salmon Dinner", 212, 1, 0) pepper_poppers = BundleItem.item_bundle("Pepper Poppers", 215, 1, 0) spaghetti = BundleItem.item_bundle("Spaghetti", 224, 1, 0) sashimi = BundleItem.item_bundle("Sashimi", 227, 1, 0) blueberry_tart = BundleItem.item_bundle("Blueberry Tart", 234, 1, 0) algae_soup = BundleItem.item_bundle("Algae Soup", 456, 1, 0) pale_broth = BundleItem.item_bundle("Pale Broth", 457, 1, 0) chowder = BundleItem.item_bundle("Chowder", 727, 1, 0) green_algae = BundleItem.item_bundle("Green Algae", 153, 1, 0) white_algae = BundleItem.item_bundle("White Algae", 157, 1, 0) geode = BundleItem.item_bundle("Geode", 535, 1, 0) frozen_geode = BundleItem.item_bundle("Frozen Geode", 536, 1, 0) magma_geode = BundleItem.item_bundle("Magma Geode", 537, 1, 0) omni_geode = BundleItem.item_bundle("Omni Geode", 749, 1, 0) spring_foraging_items = [wild_horseradish, daffodil, leek, dandelion, salmonberry, spring_onion] summer_foraging_items = [grape, spice_berry, sweet_pea, fiddlehead_fern, rainbow_shell] fall_foraging_items = [common_mushroom, wild_plum, hazelnut, blackberry] winter_foraging_items = [winter_root, crystal_fruit, snow_yam, crocus, holly, nautilus_shell] exotic_foraging_items = [coconut, cactus_fruit, cave_carrot, red_mushroom, purple_mushroom, maple_syrup, oak_resin, pine_tar, morel, coral, sea_urchin, clam, cockle, mussel, oyster, seaweed] construction_items = [wood, stone, hardwood, clay, fiber] # TODO coffee_bean, garlic, rhubarb, tea_leaves spring_crop_items = [blue_jazz, cauliflower, green_bean, kale, parsnip, potato, strawberry, tulip, unmilled_rice] # TODO red_cabbage, starfruit, ancient_fruit, pineapple, taro_root summer_crops_items = [blueberry, corn, hops, hot_pepper, melon, poppy, radish, summer_spangle, sunflower, tomato, wheat] # TODO artichoke, beet fall_crops_items = [corn, sunflower, wheat, amaranth, bok_choy, cranberries, eggplant, fairy_rose, grape, pumpkin, yam, sweet_gem_berry] all_crops_items = sorted({*spring_crop_items, *summer_crops_items, *fall_crops_items}) quality_crops_items = [item.as_quality_crop() for item in all_crops_items] # TODO void_egg, dinosaur_egg, ostrich_egg, golden_egg animal_product_items = [egg, large_egg, brown_egg, large_brown_egg, wool, milk, large_milk, goat_milk, large_goat_milk, truffle, duck_feather, duck_egg, rabbit_foot] # TODO coffee, green_tea artisan_goods_items = [truffle_oil, cloth, goat_cheese, cheese, honey, beer, juice, mead, pale_ale, wine, jelly, pickles, caviar, aged_roe, apple, apricot, orange, peach, pomegranate, cherry] river_fish_items = [chub, catfish, rainbow_trout, lingcod, walleye, perch, pike, bream, salmon, sunfish, tiger_trout, shad, smallmouth_bass, dorado] lake_fish_items = [chub, rainbow_trout, lingcod, walleye, perch, carp, midnight_carp, largemouth_bass, sturgeon, bullhead, midnight_carp] ocean_fish_items = [tilapia, pufferfish, tuna, super_cucumber, flounder, anchovy, sardine, red_mullet, herring, eel, octopus, red_snapper, squid, sea_cucumber, albacore, halibut] night_fish_items = [walleye, bream, super_cucumber, eel, squid, midnight_carp] # TODO void_salmon specialty_fish_items = [scorpion_carp, sandfish, woodskip, pufferfish, eel, octopus, squid, lava_eel, ice_pip, stonefish, ghostfish, dorado] crab_pot_items = [lobster, clam, crab, cockle, mussel, shrimp, oyster, crayfish, snail, periwinkle, trash, driftwood, soggy_newspaper, broken_cd, broken_glasses] # TODO radioactive_bar blacksmith_items = [wilted_bouquet, copper_bar, iron_Bar, gold_bar, iridium_bar, refined_quartz, coal] geologist_items = [quartz, earth_crystal, frozen_tear, fire_quartz, emerald, aquamarine, ruby, amethyst, topaz, jade] adventurer_items = [slime, bug_meat, bat_wing, solar_essence, void_essence, coal] chef_items = [maki_roll, fried_egg, omelet, pizza, hashbrowns, pancakes, bread, tortilla, triple_shot_espresso, farmer_s_lunch, survival_burger, dish_o_the_sea, miner_s_treat, roots_platter, salad, cheese_cauliflower, parsnip_soup, fried_mushroom, salmon_dinner, pepper_poppers, spaghetti, sashimi, blueberry_tart, algae_soup, pale_broth, chowder] dwarf_scroll_1 = BundleItem.item_bundle("Dwarf Scroll I", 96, 1, 0) dwarf_scroll_2 = BundleItem.item_bundle("Dwarf Scroll II", 97, 1, 0) dwarf_scroll_3 = BundleItem.item_bundle("Dwarf Scroll III", 98, 1, 0) dwarf_scroll_4 = BundleItem.item_bundle("Dwarf Scroll IV", 99, 1, 0) elvish_jewelry = BundleItem.item_bundle("Elvish Jewelry", 104, 1, 0) ancient_drum = BundleItem.item_bundle("Ancient Drum", 123, 1, 0) dried_starfish = BundleItem.item_bundle("Dried Starfish", 116, 1, 0) dye_red_items = [cranberries, hot_pepper, radish, rhubarb, spaghetti, strawberry, tomato, tulip] dye_orange_items = [poppy, pumpkin, apricot, orange, spice_berry, winter_root] dye_yellow_items = [corn, parsnip, summer_spangle, sunflower] dye_green_items = [fiddlehead_fern, kale, artichoke, bok_choy, green_bean] dye_blue_items = [blueberry, blue_jazz, blackberry, crystal_fruit] dye_purple_items = [beet, crocus, eggplant, red_cabbage, sweet_pea] dye_items = [dye_red_items, dye_orange_items, dye_yellow_items, dye_green_items, dye_blue_items, dye_purple_items] field_research_items = [purple_mushroom, nautilus_shell, chub, geode, frozen_geode, magma_geode, omni_geode, rainbow_shell, amethyst, bream, carp] fodder_items = [wheat.as_amount(10), hay.as_amount(10), apple.as_amount(3), kale.as_amount(3), corn.as_amount(3), green_bean.as_amount(3), potato.as_amount(3), green_algae.as_amount(5), white_algae.as_amount(3)] enchanter_items = [oak_resin, wine, rabbit_foot, pomegranate, purple_mushroom, solar_essence, super_cucumber, void_essence, fire_quartz, frozen_tear, jade] vault_2500_items = [BundleItem.money_bundle(2500)] vault_5000_items = [BundleItem.money_bundle(5000)] vault_10000_items = [BundleItem.money_bundle(10000)] vault_25000_items = [BundleItem.money_bundle(25000)] crafts_room_bundle_items = [ *spring_foraging_items, *summer_foraging_items, *fall_foraging_items, *winter_foraging_items, *exotic_foraging_items, *construction_items, ] pantry_bundle_items = sorted({ *spring_crop_items, *summer_crops_items, *fall_crops_items, *quality_crops_items, *animal_product_items, *artisan_goods_items, }) fish_tank_bundle_items = sorted({ *river_fish_items, *lake_fish_items, *ocean_fish_items, *night_fish_items, *crab_pot_items, *specialty_fish_items, }) boiler_room_bundle_items = sorted({ *blacksmith_items, *geologist_items, *adventurer_items, }) bulletin_board_bundle_items = sorted({ *chef_items, *[item for dye_color_items in dye_items for item in dye_color_items], *field_research_items, *fodder_items, *enchanter_items }) vault_bundle_items = [ *vault_2500_items, *vault_5000_items, *vault_10000_items, *vault_25000_items, ] all_bundle_items_except_money = sorted({ *crafts_room_bundle_items, *pantry_bundle_items, *fish_tank_bundle_items, *boiler_room_bundle_items, *bulletin_board_bundle_items, }, key=lambda x: x.item.name) all_bundle_items = sorted({ *crafts_room_bundle_items, *pantry_bundle_items, *fish_tank_bundle_items, *boiler_room_bundle_items, *bulletin_board_bundle_items, *vault_bundle_items, }, key=lambda x: x.item.name) all_bundle_items_by_name = {item.item.name: item for item in all_bundle_items} all_bundle_items_by_id = {item.item.item_id: item for item in all_bundle_items}