305 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			305 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from BaseClasses import Item, ItemClassification | ||
|  | from . import Common | ||
|  | import typing | ||
|  | from enum import IntEnum | ||
|  | from .LADXR.locations.constants import CHEST_ITEMS | ||
|  | 
 | ||
|  | class ItemData(typing.NamedTuple): | ||
|  |     item_name: str | ||
|  |     ladxr_id: str | ||
|  |     classification: ItemClassification | ||
|  |     mark_only_first_progression: bool = False | ||
|  |     created_for_players = set() | ||
|  |     @property | ||
|  |     def item_id(self): | ||
|  |         return CHEST_ITEMS[self.ladxr_id] | ||
|  | 
 | ||
|  | 
 | ||
|  | class DungeonItemType(IntEnum): | ||
|  |     INSTRUMENT = 0 | ||
|  |     NIGHTMARE_KEY = 1 | ||
|  |     KEY = 2 | ||
|  |     STONE_BEAK = 3 | ||
|  |     MAP = 4 | ||
|  |     COMPASS = 5 | ||
|  | 
 | ||
|  | class DungeonItemData(ItemData): | ||
|  |     @property | ||
|  |     def dungeon_index(self): | ||
|  |         return int(self.ladxr_id[-1]) | ||
|  |      | ||
|  |     @property | ||
|  |     def dungeon_item_type(self): | ||
|  |         s = self.ladxr_id[:-1] | ||
|  |         return DungeonItemType.__dict__[s] | ||
|  | 
 | ||
|  | class LinksAwakeningItem(Item): | ||
|  |     game: str = Common.LINKS_AWAKENING | ||
|  | 
 | ||
|  |     def __init__(self, item_data, world, player): | ||
|  |         classification = item_data.classification | ||
|  |         if callable(classification): | ||
|  |             classification = classification(world, player) | ||
|  |         # this doesn't work lol | ||
|  |         MARK_FIRST_ITEM = False | ||
|  |         if MARK_FIRST_ITEM: | ||
|  |             if item_data.mark_only_first_progression: | ||
|  |                 if player in item_data.created_for_players: | ||
|  |                     classification = ItemClassification.filler | ||
|  |                 else: | ||
|  |                     item_data.created_for_players.add(player) | ||
|  |         super().__init__(item_data.item_name, classification, Common.BASE_ID + item_data.item_id, player) | ||
|  |         self.item_data = item_data | ||
|  | 
 | ||
|  | # TODO: use _NAMES instead? | ||
|  | class ItemName: | ||
|  |     POWER_BRACELET = "Progressive Power Bracelet" | ||
|  |     SHIELD = "Progressive Shield" | ||
|  |     BOW = "Bow" | ||
|  |     HOOKSHOT = "Hookshot" | ||
|  |     MAGIC_ROD = "Magic Rod" | ||
|  |     PEGASUS_BOOTS = "Pegasus Boots" | ||
|  |     OCARINA = "Ocarina" | ||
|  |     FEATHER = "Feather" | ||
|  |     SHOVEL = "Shovel" | ||
|  |     MAGIC_POWDER = "Magic Powder" | ||
|  |     BOMB = "Bomb" | ||
|  |     SWORD = "Progressive Sword" | ||
|  |     FLIPPERS = "Flippers" | ||
|  |     MAGNIFYING_LENS = "Magnifying Lens" | ||
|  |     MEDICINE = "Medicine" | ||
|  |     TAIL_KEY = "Tail Key" | ||
|  |     ANGLER_KEY = "Angler Key" | ||
|  |     FACE_KEY = "Face Key" | ||
|  |     BIRD_KEY = "Bird Key" | ||
|  |     SLIME_KEY = "Slime Key" | ||
|  |     GOLD_LEAF = "Gold Leaf" | ||
|  |     RUPEES_20 = "20 Rupees" | ||
|  |     RUPEES_50 = "50 Rupees" | ||
|  |     RUPEES_100 = "100 Rupees" | ||
|  |     RUPEES_200 = "200 Rupees" | ||
|  |     RUPEES_500 = "500 Rupees" | ||
|  |     SEASHELL = "Seashell" | ||
|  |     MESSAGE = "Master Stalfos' Message" | ||
|  |     GEL = "Gel" | ||
|  |     BOOMERANG = "Boomerang" | ||
|  |     HEART_PIECE = "Heart Piece" | ||
|  |     BOWWOW = "BowWow" | ||
|  |     ARROWS_10 = "10 Arrows" | ||
|  |     SINGLE_ARROW = "Single Arrow" | ||
|  |     ROOSTER = "Rooster" | ||
|  |     MAX_POWDER_UPGRADE = "Max Powder Upgrade" | ||
|  |     MAX_BOMBS_UPGRADE = "Max Bombs Upgrade" | ||
|  |     MAX_ARROWS_UPGRADE = "Max Arrows Upgrade" | ||
|  |     RED_TUNIC = "Red Tunic" | ||
|  |     BLUE_TUNIC = "Blue Tunic" | ||
|  |     HEART_CONTAINER = "Heart Container" | ||
|  |     BAD_HEART_CONTAINER = "Bad Heart Container" | ||
|  |     TOADSTOOL = "Toadstool" | ||
|  |     KEY = "Key" | ||
|  |     KEY1 = "Small Key (Tail Cave)" | ||
|  |     KEY2 = "Small Key (Bottle Grotto)" | ||
|  |     KEY3 = "Small Key (Key Cavern)" | ||
|  |     KEY4 = "Small Key (Angler's Tunnel)" | ||
|  |     KEY5 = "Small Key (Catfish's Maw)" | ||
|  |     KEY6 = "Small Key (Face Shrine)" | ||
|  |     KEY7 = "Small Key (Eagle's Tower)" | ||
|  |     KEY8 = "Small Key (Turtle Rock)" | ||
|  |     KEY9 = "Small Key (Color Dungeon)" | ||
|  |     NIGHTMARE_KEY = "Nightmare Key" | ||
|  |     NIGHTMARE_KEY1 = "Nightmare Key (Tail Cave)" | ||
|  |     NIGHTMARE_KEY2 = "Nightmare Key (Bottle Grotto)" | ||
|  |     NIGHTMARE_KEY3 = "Nightmare Key (Key Cavern)" | ||
|  |     NIGHTMARE_KEY4 = "Nightmare Key (Angler's Tunnel)" | ||
|  |     NIGHTMARE_KEY5 = "Nightmare Key (Catfish's Maw)" | ||
|  |     NIGHTMARE_KEY6 = "Nightmare Key (Face Shrine)" | ||
|  |     NIGHTMARE_KEY7 = "Nightmare Key (Eagle's Tower)" | ||
|  |     NIGHTMARE_KEY8 = "Nightmare Key (Turtle Rock)" | ||
|  |     NIGHTMARE_KEY9 = "Nightmare Key (Color Dungeon)" | ||
|  |     MAP = "Map" | ||
|  |     MAP1 = "Dungeon Map (Tail Cave)" | ||
|  |     MAP2 = "Dungeon Map (Bottle Grotto)" | ||
|  |     MAP3 = "Dungeon Map (Key Cavern)" | ||
|  |     MAP4 = "Dungeon Map (Angler's Tunnel)" | ||
|  |     MAP5 = "Dungeon Map (Catfish's Maw)" | ||
|  |     MAP6 = "Dungeon Map (Face Shrine)" | ||
|  |     MAP7 = "Dungeon Map (Eagle's Tower)" | ||
|  |     MAP8 = "Dungeon Map (Turtle Rock)" | ||
|  |     MAP9 = "Dungeon Map (Color Dungeon)" | ||
|  |     COMPASS = "Compass" | ||
|  |     COMPASS1 = "Compass (Tail Cave)" | ||
|  |     COMPASS2 = "Compass (Bottle Grotto)" | ||
|  |     COMPASS3 = "Compass (Key Cavern)" | ||
|  |     COMPASS4 = "Compass (Angler's Tunnel)" | ||
|  |     COMPASS5 = "Compass (Catfish's Maw)" | ||
|  |     COMPASS6 = "Compass (Face Shrine)" | ||
|  |     COMPASS7 = "Compass (Eagle's Tower)" | ||
|  |     COMPASS8 = "Compass (Turtle Rock)" | ||
|  |     COMPASS9 = "Compass (Color Dungeon)" | ||
|  |     STONE_BEAK = "Stone Beak" | ||
|  |     STONE_BEAK1 = "Stone Beak (Tail Cave)" | ||
|  |     STONE_BEAK2 = "Stone Beak (Bottle Grotto)" | ||
|  |     STONE_BEAK3 = "Stone Beak (Key Cavern)" | ||
|  |     STONE_BEAK4 = "Stone Beak (Angler's Tunnel)" | ||
|  |     STONE_BEAK5 = "Stone Beak (Catfish's Maw)" | ||
|  |     STONE_BEAK6 = "Stone Beak (Face Shrine)" | ||
|  |     STONE_BEAK7 = "Stone Beak (Eagle's Tower)" | ||
|  |     STONE_BEAK8 = "Stone Beak (Turtle Rock)" | ||
|  |     STONE_BEAK9 = "Stone Beak (Color Dungeon)" | ||
|  |     SONG1 = "Ballad of the Wind Fish" | ||
|  |     SONG2 = "Manbo's Mambo" | ||
|  |     SONG3 = "Frog's Song of Soul" | ||
|  |     INSTRUMENT1 = "Full Moon Cello" | ||
|  |     INSTRUMENT2 = "Conch Horn" | ||
|  |     INSTRUMENT3 = "Sea Lily's Bell" | ||
|  |     INSTRUMENT4 = "Surf Harp" | ||
|  |     INSTRUMENT5 = "Wind Marimba" | ||
|  |     INSTRUMENT6 = "Coral Triangle" | ||
|  |     INSTRUMENT7 = "Organ of Evening Calm" | ||
|  |     INSTRUMENT8 = "Thunder Drum" | ||
|  |     TRADING_ITEM_YOSHI_DOLL = "Yoshi Doll" | ||
|  |     TRADING_ITEM_RIBBON = "Ribbon" | ||
|  |     TRADING_ITEM_DOG_FOOD = "Dog Food" | ||
|  |     TRADING_ITEM_BANANAS = "Bananas" | ||
|  |     TRADING_ITEM_STICK = "Stick" | ||
|  |     TRADING_ITEM_HONEYCOMB = "Honeycomb" | ||
|  |     TRADING_ITEM_PINEAPPLE = "Pineapple" | ||
|  |     TRADING_ITEM_HIBISCUS = "Hibiscus" | ||
|  |     TRADING_ITEM_LETTER = "Letter" | ||
|  |     TRADING_ITEM_BROOM = "Broom" | ||
|  |     TRADING_ITEM_FISHING_HOOK = "Fishing Hook" | ||
|  |     TRADING_ITEM_NECKLACE = "Necklace" | ||
|  |     TRADING_ITEM_SCALE = "Scale" | ||
|  |     TRADING_ITEM_MAGNIFYING_GLASS = "Magnifying Glass" | ||
|  | 
 | ||
|  | trade_item_prog = ItemClassification.progression  | ||
|  | 
 | ||
|  | links_awakening_items = [ | ||
|  |     ItemData(ItemName.POWER_BRACELET, "POWER_BRACELET", ItemClassification.progression), | ||
|  |     ItemData(ItemName.SHIELD, "SHIELD", ItemClassification.progression), | ||
|  |     ItemData(ItemName.BOW, "BOW", ItemClassification.progression), | ||
|  |     ItemData(ItemName.HOOKSHOT, "HOOKSHOT", ItemClassification.progression), | ||
|  |     ItemData(ItemName.MAGIC_ROD, "MAGIC_ROD", ItemClassification.progression), | ||
|  |     ItemData(ItemName.PEGASUS_BOOTS, "PEGASUS_BOOTS", ItemClassification.progression), | ||
|  |     ItemData(ItemName.OCARINA, "OCARINA", ItemClassification.progression), | ||
|  |     ItemData(ItemName.FEATHER, "FEATHER", ItemClassification.progression), | ||
|  |     ItemData(ItemName.SHOVEL, "SHOVEL", ItemClassification.progression), | ||
|  |     ItemData(ItemName.MAGIC_POWDER, "MAGIC_POWDER", ItemClassification.progression, True), | ||
|  |     ItemData(ItemName.BOMB, "BOMB", ItemClassification.progression, True), | ||
|  |     ItemData(ItemName.SWORD, "SWORD", ItemClassification.progression), | ||
|  |     ItemData(ItemName.FLIPPERS, "FLIPPERS", ItemClassification.progression), | ||
|  |     ItemData(ItemName.MAGNIFYING_LENS, "MAGNIFYING_LENS", ItemClassification.progression), | ||
|  |     ItemData(ItemName.MEDICINE, "MEDICINE", ItemClassification.useful), | ||
|  |     ItemData(ItemName.TAIL_KEY, "TAIL_KEY", ItemClassification.progression), | ||
|  |     ItemData(ItemName.ANGLER_KEY, "ANGLER_KEY", ItemClassification.progression), | ||
|  |     ItemData(ItemName.FACE_KEY, "FACE_KEY", ItemClassification.progression), | ||
|  |     ItemData(ItemName.BIRD_KEY, "BIRD_KEY", ItemClassification.progression), | ||
|  |     ItemData(ItemName.SLIME_KEY, "SLIME_KEY", ItemClassification.progression), | ||
|  |     ItemData(ItemName.GOLD_LEAF, "GOLD_LEAF", ItemClassification.progression), | ||
|  |     ItemData(ItemName.RUPEES_20, "RUPEES_20", ItemClassification.filler), | ||
|  |     ItemData(ItemName.RUPEES_50, "RUPEES_50", ItemClassification.useful), | ||
|  |     ItemData(ItemName.RUPEES_100, "RUPEES_100", ItemClassification.progression_skip_balancing), | ||
|  |     ItemData(ItemName.RUPEES_200, "RUPEES_200", ItemClassification.progression_skip_balancing), | ||
|  |     ItemData(ItemName.RUPEES_500, "RUPEES_500", ItemClassification.progression_skip_balancing), | ||
|  |     ItemData(ItemName.SEASHELL, "SEASHELL", ItemClassification.progression_skip_balancing), | ||
|  |     ItemData(ItemName.MESSAGE, "MESSAGE", ItemClassification.progression), | ||
|  |     ItemData(ItemName.GEL, "GEL", ItemClassification.trap), | ||
|  |     ItemData(ItemName.BOOMERANG, "BOOMERANG", ItemClassification.progression), | ||
|  |     ItemData(ItemName.HEART_PIECE, "HEART_PIECE", ItemClassification.filler), | ||
|  |     ItemData(ItemName.BOWWOW, "BOWWOW", ItemClassification.progression), | ||
|  |     ItemData(ItemName.ARROWS_10, "ARROWS_10", ItemClassification.filler), | ||
|  |     ItemData(ItemName.SINGLE_ARROW, "SINGLE_ARROW", ItemClassification.filler), | ||
|  |     ItemData(ItemName.ROOSTER, "ROOSTER", ItemClassification.progression), | ||
|  |     ItemData(ItemName.MAX_POWDER_UPGRADE, "MAX_POWDER_UPGRADE", ItemClassification.filler), | ||
|  |     ItemData(ItemName.MAX_BOMBS_UPGRADE, "MAX_BOMBS_UPGRADE", ItemClassification.filler), | ||
|  |     ItemData(ItemName.MAX_ARROWS_UPGRADE, "MAX_ARROWS_UPGRADE", ItemClassification.filler), | ||
|  |     ItemData(ItemName.RED_TUNIC, "RED_TUNIC", ItemClassification.useful), | ||
|  |     ItemData(ItemName.BLUE_TUNIC, "BLUE_TUNIC", ItemClassification.useful), | ||
|  |     ItemData(ItemName.HEART_CONTAINER, "HEART_CONTAINER", ItemClassification.useful), | ||
|  |     #ItemData(ItemName.BAD_HEART_CONTAINER, "BAD_HEART_CONTAINER", ItemClassification.trap), | ||
|  |     ItemData(ItemName.TOADSTOOL, "TOADSTOOL", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY, "KEY", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY1, "KEY1", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY2, "KEY2", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY3, "KEY3", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY4, "KEY4", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY5, "KEY5", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY6, "KEY6", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY7, "KEY7", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY8, "KEY8", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.KEY9, "KEY9", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY, "NIGHTMARE_KEY", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY1, "NIGHTMARE_KEY1", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY2, "NIGHTMARE_KEY2", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY3, "NIGHTMARE_KEY3", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY4, "NIGHTMARE_KEY4", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY5, "NIGHTMARE_KEY5", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY6, "NIGHTMARE_KEY6", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY7, "NIGHTMARE_KEY7", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY8, "NIGHTMARE_KEY8", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.NIGHTMARE_KEY9, "NIGHTMARE_KEY9", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.MAP, "MAP", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP1, "MAP1", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP2, "MAP2", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP3, "MAP3", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP4, "MAP4", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP5, "MAP5", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP6, "MAP6", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP7, "MAP7", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP8, "MAP8", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.MAP9, "MAP9", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS, "COMPASS", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS1, "COMPASS1", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS2, "COMPASS2", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS3, "COMPASS3", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS4, "COMPASS4", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS5, "COMPASS5", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS6, "COMPASS6", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS7, "COMPASS7", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS8, "COMPASS8", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.COMPASS9, "COMPASS9", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK, "STONE_BEAK", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK1, "STONE_BEAK1", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK2, "STONE_BEAK2", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK3, "STONE_BEAK3", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK4, "STONE_BEAK4", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK5, "STONE_BEAK5", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK6, "STONE_BEAK6", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK7, "STONE_BEAK7", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK8, "STONE_BEAK8", ItemClassification.filler), | ||
|  |     DungeonItemData(ItemName.STONE_BEAK9, "STONE_BEAK9", ItemClassification.filler), | ||
|  |     ItemData(ItemName.SONG1, "SONG1", ItemClassification.progression), | ||
|  |     ItemData(ItemName.SONG2, "SONG2", ItemClassification.useful), | ||
|  |     ItemData(ItemName.SONG3, "SONG3", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT1, "INSTRUMENT1", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT2, "INSTRUMENT2", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT3, "INSTRUMENT3", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT4, "INSTRUMENT4", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT5, "INSTRUMENT5", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT6, "INSTRUMENT6", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT7, "INSTRUMENT7", ItemClassification.progression), | ||
|  |     DungeonItemData(ItemName.INSTRUMENT8, "INSTRUMENT8", ItemClassification.progression), | ||
|  |     ItemData(ItemName.TRADING_ITEM_YOSHI_DOLL, "TRADING_ITEM_YOSHI_DOLL", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_RIBBON, "TRADING_ITEM_RIBBON", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_DOG_FOOD, "TRADING_ITEM_DOG_FOOD", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_BANANAS, "TRADING_ITEM_BANANAS", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_STICK, "TRADING_ITEM_STICK", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_HONEYCOMB, "TRADING_ITEM_HONEYCOMB", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_PINEAPPLE, "TRADING_ITEM_PINEAPPLE", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_HIBISCUS, "TRADING_ITEM_HIBISCUS", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_LETTER, "TRADING_ITEM_LETTER", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_BROOM, "TRADING_ITEM_BROOM", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_FISHING_HOOK, "TRADING_ITEM_FISHING_HOOK", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_NECKLACE, "TRADING_ITEM_NECKLACE", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_SCALE, "TRADING_ITEM_SCALE", trade_item_prog), | ||
|  |     ItemData(ItemName.TRADING_ITEM_MAGNIFYING_GLASS, "TRADING_ITEM_MAGNIFYING_GLASS", trade_item_prog) | ||
|  | ] | ||
|  | 
 | ||
|  | ladxr_item_to_la_item_name = { | ||
|  |     item.ladxr_id: item.item_name for item in links_awakening_items | ||
|  | } | ||
|  | 
 | ||
|  | links_awakening_items_by_name = { | ||
|  |     item.item_name : item for item in links_awakening_items | ||
|  | } |