Files
dockipelago/worlds/cv_dos/Items.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

524 lines
30 KiB
Python

from typing import Dict, Set, NamedTuple, Optional
from BaseClasses import ItemClassification
class ItemData(NamedTuple):
category: str
code: Optional[int]
classification: ItemClassification
amount: Optional[int] = 1
item_table: Dict[str, ItemData] = {
"$1": ItemData("Money", 0x100, ItemClassification.filler, 0),
"$10": ItemData("Money", 0x101, ItemClassification.filler, 0),
"$50": ItemData("Money", 0x102, ItemClassification.filler, 0),
"$100": ItemData("Money", 0x103, ItemClassification.filler, 0),
"$500": ItemData("Money", 0x104, ItemClassification.filler, 0),
"$1000": ItemData("Money", 0x105, ItemClassification.filler, 0),
"$2000": ItemData("Money", 0x106, ItemClassification.filler, 0),
"Potion": ItemData("Consumables", 0x200, ItemClassification.filler, 0),
"High Potion": ItemData("Consumables", 0x201, ItemClassification.filler, 0),
"Super Potion": ItemData("Consumables", 0x202, ItemClassification.useful, 0),
"Mind Up": ItemData("Consumables", 0x203, ItemClassification.filler, 0),
"High Mind Up": ItemData("Consumables", 0x204, ItemClassification.filler, 0),
"Mana Prism": ItemData("Consumables", 0x205, ItemClassification.useful, 0),
"Anti-Venom": ItemData("Consumables", 0x206, ItemClassification.filler, 0),
"Uncurse Potion": ItemData("Consumables", 0x207, ItemClassification.filler, 0),
"Meat Strip": ItemData("Consumables", 0x208, ItemClassification.filler, 0),
"Tasty Meat": ItemData("Consumables", 0x209, ItemClassification.useful, 0),
"Rice Ball": ItemData("Consumables", 0x20A, ItemClassification.useful, 0),
"Mushroom": ItemData("Consumables", 0x20B, ItemClassification.filler, 0),
"Corn Soup": ItemData("Consumables", 0x20C, ItemClassification.filler, 0),
"Beef Curry": ItemData("Consumables", 0x20D, ItemClassification.useful, 0),
"Noodles": ItemData("Consumables", 0x20E, ItemClassification.useful, 0),
"Cream Soda": ItemData("Consumables", 0x20F, ItemClassification.filler, 0),
"Cream Puff": ItemData("Consumables", 0x210, ItemClassification.filler, 0),
"Milk": ItemData("Consumables", 0x211, ItemClassification.filler, 0),
"Coffee": ItemData("Consumables", 0x212, ItemClassification.filler, 0),
"Tea": ItemData("Consumables", 0x213, ItemClassification.filler, 0),
"Pudding": ItemData("Consumables", 0x214, ItemClassification.filler, 0),
"Strawberry": ItemData("Consumables", 0x215, ItemClassification.filler, 0),
"Melon": ItemData("Consumables", 0x216, ItemClassification.useful, 0),
"Grapes": ItemData("Consumables", 0x217, ItemClassification.filler, 0),
"Hamburger": ItemData("Consumables", 0x218, ItemClassification.filler, 0),
"Fried Chicken": ItemData("Consumables", 0x219, ItemClassification.filler, 0),
"Hot Dog": ItemData("Consumables", 0x21A, ItemClassification.filler, 0),
"Pumpkin Pie": ItemData("Consumables", 0x21B, ItemClassification.filler, 0),
"Pancake": ItemData("Consumables", 0x21C, ItemClassification.filler, 0),
"Piroshki": ItemData("Consumables", 0x21D, ItemClassification.filler, 0),
"Tinned Spinach": ItemData("Consumables", 0x21E, ItemClassification.filler, 0),
"Foie Gras": ItemData("Consumables", 0x21F, ItemClassification.useful, 0),
"Caviar": ItemData("Consumables", 0x220, ItemClassification.useful, 0),
"Truffle": ItemData("Consumables", 0x221, ItemClassification.useful, 0),
"Paella": ItemData("Consumables", 0x222, ItemClassification.filler, 0),
"Spaghetti": ItemData("Consumables", 0x223, ItemClassification.filler, 0),
"Ice Cream": ItemData("Consumables", 0x224, ItemClassification.filler, 0),
"Salmon Meuniere": ItemData("Consumables", 0x225, ItemClassification.filler, 0),
"Boiled Starfish": ItemData("Consumables", 0x226, ItemClassification.filler, 0),
"Amanita": ItemData("Consumables", 0x227, ItemClassification.trap, 0),
"Rotten Meat": ItemData("Consumables", 0x228, ItemClassification.trap, 0),
"Spoiled Milk": ItemData("Consumables", 0x229, ItemClassification.trap, 0),
"Rusty Food Tin": ItemData("Consumables", 0x22A, ItemClassification.trap, 0),
"Tower Key": ItemData("Key Items", 0x239, ItemClassification.progression),
"Magic Seal 1": ItemData("Magic Seals", 0x23D, ItemClassification.progression, 0),
"Magic Seal 2": ItemData("Magic Seals", 0x23E, ItemClassification.progression, 0),
"Magic Seal 3": ItemData("Magic Seals", 0x23F, ItemClassification.progression, 0),
"Magic Seal 4": ItemData("Magic Seals", 0x240, ItemClassification.progression, 0),
"Magic Seal 5": ItemData("Magic Seals", 0x241, ItemClassification.progression, 0),
"West Lab Gate Key": ItemData("Key Items", 0x2CE, ItemClassification.progression, 0),
"East Lab Gate Key": ItemData("Key Items", 0x2CF, ItemClassification.progression, 0),
"Garden Gate Key": ItemData("Key Items", 0x2D0, ItemClassification.progression, 0),
"Cavern Gate Key": ItemData("Key Items", 0x2D1, ItemClassification.progression, 0),
"Knife": ItemData("Weapons", 0x301, ItemClassification.filler, 0),
"Combat Knife": ItemData("Weapons", 0x302, ItemClassification.filler, 0),
"Baselard": ItemData("Weapons", 0x303, ItemClassification.filler, 0),
"Cutall": ItemData("Weapons", 0x304, ItemClassification.filler, 0),
"Cinquedia": ItemData("Weapons", 0x305, ItemClassification.filler, 0),
"Rapier": ItemData("Weapons", 0x306, ItemClassification.filler, 0),
"Fleuret": ItemData("Weapons", 0x307, ItemClassification.useful, 0),
"Main Gauche": ItemData("Weapons", 0x308, ItemClassification.filler, 0),
"Small Sword": ItemData("Weapons", 0x309, ItemClassification.filler, 0),
"Estoc": ItemData("Weapons", 0x30A, ItemClassification.filler, 0),
"Whip Sword": ItemData("Weapons", 0x30B, ItemClassification.filler, 0),
"Garian Sword": ItemData("Weapons", 0x30C, ItemClassification.filler, 0),
"Kris Naga": ItemData("Weapons", 0x30D, ItemClassification.filler, 0),
"Nebula": ItemData("Weapons", 0x30E, ItemClassification.useful, 0),
"Short Sword": ItemData("Weapons", 0x30F, ItemClassification.filler, 0),
"Cutlass": ItemData("Weapons", 0x310, ItemClassification.filler, 0),
"Long Sword": ItemData("Weapons", 0x311, ItemClassification.filler, 0),
"Fragarach": ItemData("Weapons", 0x312, ItemClassification.filler, 0),
"Hrunting": ItemData("Weapons", 0x313, ItemClassification.useful, 0),
"Mystletain": ItemData("Weapons", 0x314, ItemClassification.useful, 0),
"Joyeuse": ItemData("Weapons", 0x315, ItemClassification.filler, 0),
"Milican's Sword": ItemData("Weapons", 0x316, ItemClassification.useful, 0),
"Ice Brand": ItemData("Weapons", 0x317, ItemClassification.useful, 0),
"Laevatain": ItemData("Weapons", 0x318, ItemClassification.useful, 0),
"Burtgang": ItemData("Weapons", 0x319, ItemClassification.useful, 0),
"Kaladbolg": ItemData("Weapons", 0x31A, ItemClassification.useful, 0),
"Valmanway": ItemData("Weapons", 0x31B, ItemClassification.useful, 0),
"Alcuard Sword": ItemData("Weapons", 0x31C, ItemClassification.filler, 0),
"Claymore": ItemData("Weapons", 0x31D, ItemClassification.filler, 0),
"Falchion": ItemData("Weapons", 0x31E, ItemClassification.filler, 0),
"Great Sword": ItemData("Weapons", 0x31F, ItemClassification.filler, 0),
"Durandal": ItemData("Weapons", 0x320, ItemClassification.useful, 0),
"Dainslef": ItemData("Weapons", 0x321, ItemClassification.useful, 0),
"Ascalon": ItemData("Weapons", 0x322, ItemClassification.useful, 0),
"Balmung": ItemData("Weapons", 0x323, ItemClassification.useful, 0),
"Final Sword": ItemData("Weapons", 0x324, ItemClassification.useful, 0),
"Claimh Solais": ItemData("Weapons", 0x325, ItemClassification.useful, 0),
"Spear": ItemData("Weapons", 0x326, ItemClassification.filler, 0),
"Partizan": ItemData("Weapons", 0x327, ItemClassification.filler, 0),
"Halberd": ItemData("Weapons", 0x328, ItemClassification.filler, 0),
"Lance": ItemData("Weapons", 0x329, ItemClassification.filler, 0),
"Trident": ItemData("Weapons", 0x32A, ItemClassification.filler, 0),
"Brionac": ItemData("Weapons", 0x32B, ItemClassification.useful, 0),
"Geiborg": ItemData("Weapons", 0x32C, ItemClassification.useful, 0),
"Longinus": ItemData("Weapons", 0x32D, ItemClassification.useful, 0),
"Gungner": ItemData("Weapons", 0x32E, ItemClassification.useful, 0),
"Mace": ItemData("Weapons", 0x32F, ItemClassification.filler, 0),
"Morgenstern": ItemData("Weapons", 0x330, ItemClassification.filler, 0),
"Mjollnjr": ItemData("Weapons", 0x331, ItemClassification.useful, 0),
"Axe": ItemData("Weapons", 0x332, ItemClassification.filler, 0),
"Battle Axe": ItemData("Weapons", 0x333, ItemClassification.filler, 0),
"Bhuj": ItemData("Weapons", 0x334, ItemClassification.useful, 0),
"Great Axe": ItemData("Weapons", 0x335, ItemClassification.useful, 0),
"Golden Axe": ItemData("Weapons", 0x336, ItemClassification.useful, 0),
"Death Scythe": ItemData("Weapons", 0x337, ItemClassification.useful, 0),
"Blunt Sword": ItemData("Weapons", 0x338, ItemClassification.filler, 0),
"Katana": ItemData("Weapons", 0x339, ItemClassification.filler, 0),
"Kotetsu": ItemData("Weapons", 0x33A, ItemClassification.filler, 0),
"Masamune": ItemData("Weapons", 0x33B, ItemClassification.filler, 0),
"Osafune": ItemData("Weapons", 0x33C, ItemClassification.useful, 0),
"Kunitsuna": ItemData("Weapons", 0x33D, ItemClassification.useful, 0),
"Yasutsuna": ItemData("Weapons", 0x33E, ItemClassification.useful, 0),
"Muramasa": ItemData("Weapons", 0x33F, ItemClassification.useful, 0),
"Brass Knuckles": ItemData("Weapons", 0x340, ItemClassification.filler, 0),
"Cestus": ItemData("Weapons", 0x341, ItemClassification.filler, 0),
"Whip Knuckle": ItemData("Weapons", 0x342, ItemClassification.filler, 0),
"Mach Punch": ItemData("Weapons", 0x343, ItemClassification.useful, 0),
"Kaiser Knuckle": ItemData("Weapons", 0x344, ItemClassification.useful, 0),
"Handgun": ItemData("Weapons", 0x345, ItemClassification.filler, 0),
"Silver Gun": ItemData("Weapons", 0x346, ItemClassification.useful, 0),
"Boomerang": ItemData("Weapons", 0x347, ItemClassification.filler, 0),
"Chakram": ItemData("Weapons", 0x348, ItemClassification.filler, 0),
"Tomahawk": ItemData("Weapons", 0x349, ItemClassification.filler, 0),
"Throwing Sickle": ItemData("Weapons", 0x34A, ItemClassification.filler, 0),
"RPG": ItemData("Weapons", 0x34B, ItemClassification.useful, 0),
"Terror Bear": ItemData("Weapons", 0x34C, ItemClassification.filler, 0),
"Nunchakus": ItemData("Weapons", 0x34D, ItemClassification.useful, 0),
"Casual Clothes": ItemData("Armor", 0x400, ItemClassification.filler, 0),
"Cloth Tunic": ItemData("Armor", 0x401, ItemClassification.filler, 0),
"Gym Clothes": ItemData("Armor", 0x402, ItemClassification.filler, 0),
"Kung Fu Suit": ItemData("Armor", 0x403, ItemClassification.filler, 0),
"Biker Jacket": ItemData("Armor", 0x404, ItemClassification.filler, 0),
"War Fatigues": ItemData("Armor", 0x405, ItemClassification.filler, 0),
"Ninja Suit": ItemData("Armor", 0x406, ItemClassification.filler, 0),
"Three 7s": ItemData("Armor", 0x407, ItemClassification.useful, 0),
"Justaucorps": ItemData("Armor", 0x408, ItemClassification.filler, 0),
"Army Jacket": ItemData("Armor", 0x409, ItemClassification.filler, 0),
"Pitch Black Suit": ItemData("Armor", 0x40A, ItemClassification.useful, 0),
"Olrox's Suit": ItemData("Armor", 0x40B, ItemClassification.useful, 0),
"Dracula's Tunic": ItemData("Armor", 0x40C, ItemClassification.useful, 0),
"Leather Armor": ItemData("Armor", 0x40D, ItemClassification.filler, 0),
"Breastplate": ItemData("Armor", 0x40E, ItemClassification.filler, 0),
"Ring Mail": ItemData("Armor", 0x40F, ItemClassification.filler, 0),
"Scale Mail": ItemData("Armor", 0x410, ItemClassification.filler, 0),
"Chain Mail": ItemData("Armor", 0x411, ItemClassification.filler, 0),
"Hauberk": ItemData("Armor", 0x412, ItemClassification.useful, 0),
"Cuirass": ItemData("Armor", 0x413, ItemClassification.useful, 0),
"Blocking Mail": ItemData("Armor", 0x414, ItemClassification.useful, 0),
"Eversing": ItemData("Armor", 0x415, ItemClassification.useful, 0),
"Demon's Mail": ItemData("Armor", 0x416, ItemClassification.useful, 0),
"Silk Robe": ItemData("Armor", 0x417, ItemClassification.filler, 0),
"Mage Robe": ItemData("Armor", 0x418, ItemClassification.filler, 0),
"Elfin Robe": ItemData("Armor", 0x419, ItemClassification.filler, 0),
"Wyrm Robe": ItemData("Armor", 0x41A, ItemClassification.filler, 0),
"Aquarius": ItemData("Armor", 0x41B, ItemClassification.useful, 0),
"Serenity Robe": ItemData("Armor", 0x41C, ItemClassification.useful, 0),
"Death's Robe": ItemData("Armor", 0x41D, ItemClassification.useful, 0),
"Cape": ItemData("Armor", 0x41E, ItemClassification.filler, 0),
"Traveler Cape": ItemData("Armor", 0x41F, ItemClassification.filler, 0),
"Crimson Cloak": ItemData("Armor", 0x420, ItemClassification.filler, 0),
"Black Cloak": ItemData("Armor", 0x421, ItemClassification.filler, 0),
"Pendant": ItemData("Armor", 0x422, ItemClassification.filler, 0),
"Heart Pendant": ItemData("Armor", 0x423, ItemClassification.filler, 0),
"Skull Necklace": ItemData("Armor", 0x424, ItemClassification.filler, 0),
"Flame Necklace": ItemData("Armor", 0x425, ItemClassification.filler, 0),
"Rosary": ItemData("Armor", 0x426, ItemClassification.filler, 0),
"Scarf": ItemData("Armor", 0x427, ItemClassification.filler, 0),
"Red Scarf": ItemData("Armor", 0x428, ItemClassification.filler, 0),
"Neck Warmer": ItemData("Armor", 0x429, ItemClassification.filler, 0),
"Power Belt": ItemData("Armor", 0x42A, ItemClassification.filler, 0),
"Black Belt": ItemData("Armor", 0x42B, ItemClassification.filler, 0),
"Megingiord": ItemData("Armor", 0x42C, ItemClassification.useful, 0),
"Hoop Earring": ItemData("Armor", 0x42D, ItemClassification.filler, 0),
"Turquoise Stud": ItemData("Armor", 0x42E, ItemClassification.filler, 0),
"Silver Stud": ItemData("Armor", 0x42F, ItemClassification.filler, 0),
"Gold Stud": ItemData("Armor", 0x430, ItemClassification.filler, 0),
"Bloody Stud": ItemData("Armor", 0x431, ItemClassification.useful, 0),
"Platinum Stud": ItemData("Armor", 0x432, ItemClassification.useful, 0),
"Tear Of Blood": ItemData("Armor", 0x433, ItemClassification.useful, 0),
"Lucky Charm": ItemData("Armor", 0x434, ItemClassification.filler, 0),
"Mina's Talisman": ItemData("Armor", 0x435, ItemClassification.progression),
"Satan's Ring": ItemData("Armor", 0x436, ItemClassification.useful, 0),
"Rare Ring": ItemData("Armor", 0x437, ItemClassification.useful, 0),
"Soul Eater Ring": ItemData("Armor", 0x438, ItemClassification.useful, 0),
"Rune Ring": ItemData("Armor", 0x439, ItemClassification.filler, 0),
"Shaman Ring": ItemData("Armor", 0x43A, ItemClassification.filler, 0),
"Gold Ring": ItemData("Armor", 0x43B, ItemClassification.filler, 0),
"Chaos Ring": ItemData("Armor", 0x43C, ItemClassification.useful, 0),
"Puppet Master Soul": ItemData("Bullet Souls", 0x500, ItemClassification.progression),
"Zephyr Soul": ItemData("Bullet Souls", 0x501, ItemClassification.progression),
"Paranoia Soul": ItemData("Bullet Souls", 0x502, ItemClassification.progression),
"Imp Soul": ItemData("Bullet Souls", 0x503, ItemClassification.useful, 0),
"Skeleton Soul": ItemData("Bullet Souls", 0x504, ItemClassification.filler, 0),
"Zombie Soul": ItemData("Bullet Souls", 0x505, ItemClassification.filler, 0),
"Axe Armor Soul": ItemData("Bullet Souls", 0x506, ItemClassification.useful, 0),
"Student Witch Soul": ItemData("Bullet Souls", 0x507, ItemClassification.filler, 0),
"Warg Soul": ItemData("Bullet Souls", 0x508, ItemClassification.filler, 0),
"Bomber Armor Soul": ItemData("Bullet Souls", 0x509, ItemClassification.filler, 0),
"Amalaric Sniper Soul": ItemData("Bullet Souls", 0x50A, ItemClassification.useful, 0),
"Cave Troll Soul": ItemData("Bullet Souls", 0x50B, ItemClassification.filler, 0),
"Waiter Skeleton Soul": ItemData("Bullet Souls", 0x50C, ItemClassification.useful, 0),
"Slime Soul": ItemData("Bullet Souls", 0x50D, ItemClassification.filler, 0),
"Yorick Soul": ItemData("Bullet Souls", 0x50E, ItemClassification.filler, 0),
"Une Soul": ItemData("Bullet Souls", 0x50F, ItemClassification.filler, 0),
"Mandragora Soul": ItemData("Bullet Souls", 0x510, ItemClassification.useful, 0),
"Rycuda Soul": ItemData("Bullet Souls", 0x511, ItemClassification.filler, 0),
"Fleaman Soul": ItemData("Bullet Souls", 0x512, ItemClassification.filler, 0),
"Ripper Soul": ItemData("Bullet Souls", 0x513, ItemClassification.filler, 0),
"Guillotiner Soul": ItemData("Bullet Souls", 0x514, ItemClassification.useful, 0),
"Killer Clown Soul": ItemData("Bullet Souls", 0x515, ItemClassification.useful, 0),
"Malachi Soul": ItemData("Bullet Souls", 0x516, ItemClassification.useful, 0),
"Disc Armor Soul": ItemData("Bullet Souls", 0x517, ItemClassification.useful, 0),
"Great Axe Armor Soul": ItemData("Bullet Souls", 0x518, ItemClassification.useful, 0),
"Slaughterer Soul": ItemData("Bullet Souls", 0x519, ItemClassification.filler, 0),
"Hell Boar Soul": ItemData("Bullet Souls", 0x51A, ItemClassification.filler, 0),
"Frozen Shade Soul": ItemData("Bullet Souls", 0x51B, ItemClassification.filler, 0),
"Merman Soul": ItemData("Bullet Souls", 0x51C, ItemClassification.filler, 0),
"Larva Soul": ItemData("Bullet Souls", 0x51D, ItemClassification.filler, 0),
"Ukoback Soul": ItemData("Bullet Souls", 0x51E, ItemClassification.filler, 0),
"Decarabia Soul": ItemData("Bullet Souls", 0x51F, ItemClassification.filler, 0),
"Succubus Soul": ItemData("Bullet Souls", 0x520, ItemClassification.useful, 0),
"Slogra Soul": ItemData("Bullet Souls", 0x521, ItemClassification.filler, 0),
"Erinys Soul": ItemData("Bullet Souls", 0x522, ItemClassification.useful, 0),
"Homunculus Soul": ItemData("Bullet Souls", 0x523, ItemClassification.filler, 0),
"Witch Soul": ItemData("Bullet Souls", 0x524, ItemClassification.filler, 0),
"Fish Head Soul": ItemData("Bullet Souls", 0x525, ItemClassification.filler, 0),
"Mollusca Soul": ItemData("Bullet Souls", 0x526, ItemClassification.filler, 0),
"Dead Mate Soul": ItemData("Bullet Souls", 0x527, ItemClassification.filler, 0),
"Killer Fish Soul": ItemData("Bullet Souls", 0x528, ItemClassification.filler, 0),
"Malacoda Soul": ItemData("Bullet Souls", 0x529, ItemClassification.useful, 0),
"Flame Demon Soul": ItemData("Bullet Souls", 0x52A, ItemClassification.useful, 0),
"Aguni Soul": ItemData("Bullet Souls", 0x52B, ItemClassification.useful),
"Abaddon Soul": ItemData("Bullet Souls", 0x52C, ItemClassification.useful),
"Flying Armor Soul": ItemData("Guardian Souls", 0x535, ItemClassification.progression),
"Bat Company Soul": ItemData("Guardian Souls", 0x536, ItemClassification.progression),
"Black Panther Soul": ItemData("Guardian Souls", 0x537, ItemClassification.progression, 0),
"Armor Knight Soul": ItemData("Guardian Souls", 0x538, ItemClassification.filler, 0),
"Spin Devil Soul": ItemData("Guardian Souls", 0x539, ItemClassification.filler, 0),
"Skull Archer Soul": ItemData("Guardian Souls", 0x53A, ItemClassification.useful, 0),
"Ghost Soul": ItemData("Guardian Souls", 0x53B, ItemClassification.filler, 0),
"Yeti Soul": ItemData("Guardian Souls", 0x53C, ItemClassification.filler, 0),
"Buer Soul": ItemData("Guardian Souls", 0x53D, ItemClassification.filler, 0),
"Manticore Soul": ItemData("Guardian Souls", 0x53E, ItemClassification.filler, 0),
"Mushussu Soul": ItemData("Guardian Souls", 0x53F, ItemClassification.filler, 0),
"White Dragon Soul": ItemData("Guardian Souls", 0x540, ItemClassification.filler, 0),
"Catoblepas Soul": ItemData("Guardian Souls", 0x541, ItemClassification.filler, 0),
"Gorgon Soul": ItemData("Guardian Souls", 0x542, ItemClassification.filler, 0),
"Persephone Soul": ItemData("Guardian Souls", 0x543, ItemClassification.filler, 0),
"Flying Humanoid Soul": ItemData("Guardian Souls", 0x544, ItemClassification.filler, 0),
"Devil Soul": ItemData("Guardian Souls", 0x545, ItemClassification.useful, 0),
"Medusa Head Soul": ItemData("Guardian Souls", 0x546, ItemClassification.useful, 0),
"Final Guard Soul": ItemData("Guardian Souls", 0x547, ItemClassification.useful, 0),
"Werewolf Soul": ItemData("Guardian Souls", 0x548, ItemClassification.filler, 0),
"Alura Une Soul": ItemData("Guardian Souls", 0x549, ItemClassification.useful, 0),
"Iron Golem Soul": ItemData("Guardian Souls", 0x54A, ItemClassification.filler, 0),
"Bone Ark Soul": ItemData("Guardian Souls", 0x54B, ItemClassification.useful, 0),
"Barbariccia Soul": ItemData("Guardian Souls", 0x54C, ItemClassification.filler, 0),
"Valkyrie Soul": ItemData("Guardian Souls", 0x54D, ItemClassification.filler, 0),
"Bat Soul": ItemData("Guardian Souls", 0x54E, ItemClassification.filler, 0),
"Great Armor Soul": ItemData("Guardian Souls", 0x54F, ItemClassification.filler, 0),
"Mini Devil Soul": ItemData("Guardian Souls", 0x550, ItemClassification.filler, 0),
"Harpy Soul": ItemData("Guardian Souls", 0x551, ItemClassification.filler, 0),
"Corpseweed Soul": ItemData("Guardian Souls", 0x552, ItemClassification.filler, 0),
"Quetzalcoatl Soul": ItemData("Guardian Souls", 0x553, ItemClassification.filler, 0),
"Needles Soul": ItemData("Guardian Souls", 0x554, ItemClassification.filler, 0),
"Alastor Soul": ItemData("Guardian Souls", 0x555, ItemClassification.filler, 0),
"Gaibon Soul": ItemData("Guardian Souls", 0x556, ItemClassification.useful, 0),
"Gergoth Soul": ItemData("Guardian Souls", 0x557, ItemClassification.useful),
"Death Soul": ItemData("Guardian Souls", 0x558, ItemClassification.useful),
"Golem Soul": ItemData("Enchantment Souls", 0x559, ItemClassification.useful, 0),
"Bone Pillar Soul": ItemData("Enchantment Souls", 0x55A, ItemClassification.useful, 0),
"Lilith Soul": ItemData("Enchantment Souls", 0x55B, ItemClassification.useful, 0),
"Ghost Dancer Soul": ItemData("Enchantment Souls", 0x55C, ItemClassification.useful, 0),
"Tanjelly Soul": ItemData("Enchantment Souls", 0x55D, ItemClassification.useful, 0),
"Bugbear Soul": ItemData("Enchantment Souls", 0x55E, ItemClassification.filler, 0),
"Arc Demon Soul": ItemData("Enchantment Souls", 0x55F, ItemClassification.useful, 0),
"Giant Slug Soul": ItemData("Enchantment Souls", 0x560, ItemClassification.filler, 0),
"Killer Doll Soul": ItemData("Enchantment Souls", 0x561, ItemClassification.filler, 0),
"Tombstone Soul": ItemData("Enchantment Souls", 0x562, ItemClassification.filler, 0),
"Treant Soul": ItemData("Enchantment Souls", 0x563, ItemClassification.useful, 0),
"Ghoul Soul": ItemData("Enchantment Souls", 0x564, ItemClassification.useful, 0),
"Skelerang Soul": ItemData("Enchantment Souls", 0x565, ItemClassification.filler, 0),
"Skeleton Ape Soul": ItemData("Enchantment Souls", 0x566, ItemClassification.filler, 0),
"Dead Warrior Soul": ItemData("Enchantment Souls", 0x567, ItemClassification.useful, 0),
"Dead Pirate Soul": ItemData("Enchantment Souls", 0x568, ItemClassification.filler, 0),
"Draghignazzo Soul": ItemData("Enchantment Souls", 0x569, ItemClassification.useful, 0),
"Heart Eater Soul": ItemData("Enchantment Souls", 0x56A, ItemClassification.filler, 0),
"Peeping Eye Soul": ItemData("Enchantment Souls", 0x56B, ItemClassification.filler, 0),
"Skeleton Farmer Soul": ItemData("Enchantment Souls", 0x56C, ItemClassification.filler, 0),
"The Creature Soul": ItemData("Enchantment Souls", 0x56D, ItemClassification.filler, 0),
"Mimic Soul": ItemData("Enchantment Souls", 0x56E, ItemClassification.filler, 0),
"Mothman Soul": ItemData("Enchantment Souls", 0x56F, ItemClassification.useful, 0),
"Ouija Table Soul": ItemData("Enchantment Souls", 0x570, ItemClassification.filler, 0),
"Dead Crusader Soul": ItemData("Enchantment Souls", 0x571, ItemClassification.useful, 0),
"Stolas Soul": ItemData("Enchantment Souls", 0x572, ItemClassification.useful, 0),
"Wakwak Tree Soul": ItemData("Enchantment Souls", 0x573, ItemClassification.useful, 0),
"Balore Soul": ItemData("Ability Souls", 0x574, ItemClassification.progression),
"Malphas Soul": ItemData("Ability Souls", 0x575, ItemClassification.progression),
"Doppelganger Soul": ItemData("Ability Souls", 0x576, ItemClassification.useful),
"Rahab Soul": ItemData("Ability Souls", 0x577, ItemClassification.progression),
"Hippogryph Soul": ItemData("Ability Souls", 0x578, ItemClassification.progression),
"Procel Soul": ItemData("Ability Souls", 0x579, ItemClassification.useful, 0),
"Mud Demon Soul": ItemData("Ability Souls", 0x57A, ItemClassification.useful, 0),
"Moat Drained": ItemData("Events", None, ItemClassification.progression, 0),
"Aguni Defeated": ItemData("Events", None, ItemClassification.progression, 0),
"Power of Darkness": ItemData("Events", None, ItemClassification.progression, 0),
"Menace Defeated": ItemData("Events", None, ItemClassification.progression, 0),
"Village Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Lab Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Chapel Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Inner Chapel Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Garden Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Guest House Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Tower Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Subterranean Hell Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Clock Tower Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Ruins Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Upper Guest House Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Mine Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
"Abyss Boss Clear": ItemData("Events", None, ItemClassification.progression, 0),
}
def get_item_names_per_category() -> Dict[str, Set[str]]:
categories: Dict[str, Set[str]] = {}
for name, data in item_table.items():
if data.category != "Events":
categories.setdefault(data.category, set()).add(name)
return categories
soul_filler_table = [
"Imp Soul",
"Skeleton Soul",
"Zombie Soul",
"Axe Armor Soul",
"Student Witch Soul",
"Warg Soul",
"Bomber Armor Soul",
"Amalaric Sniper Soul",
"Cave Troll Soul",
"Waiter Skeleton Soul",
"Slime Soul",
"Yorick Soul",
"Une Soul",
"Mandragora Soul",
"Rycuda Soul",
"Fleaman Soul",
"Ripper Soul",
"Guillotiner Soul",
"Killer Clown Soul",
"Malachi Soul",
"Disc Armor Soul",
"Great Axe Armor Soul",
"Slaughterer Soul",
"Hell Boar Soul",
"Frozen Shade Soul",
"Merman Soul",
"Larva Soul",
"Ukoback Soul",
"Decarabia Soul",
"Succubus Soul",
"Slogra Soul",
"Erinys Soul",
"Homunculus Soul",
"Witch Soul",
"Fish Head Soul",
"Mollusca Soul",
"Dead Mate Soul",
"Killer Fish Soul",
"Malacoda Soul",
"Flame Demon Soul",
"Black Panther Soul",
"Armor Knight Soul",
"Spin Devil Soul",
"Skull Archer Soul",
"Ghost Soul",
"Yeti Soul",
"Buer Soul",
"Manticore Soul",
"Mushussu Soul",
"White Dragon Soul",
"Catoblepas Soul",
"Gorgon Soul",
"Persephone Soul",
"Flying Humanoid Soul",
"Devil Soul",
"Medusa Head Soul",
"Final Guard Soul",
"Werewolf Soul",
"Alura Une Soul",
"Iron Golem Soul",
"Bone Ark Soul",
"Barbariccia Soul",
"Valkyrie Soul",
"Bat Soul",
"Great Armor Soul",
"Mini Devil Soul",
"Harpy Soul",
"Corpseweed Soul",
"Quetzalcoatl Soul",
"Needles Soul",
"Alastor Soul",
"Gaibon Soul",
"Golem Soul",
"Bone Pillar Soul",
"Lilith Soul",
"Ghost Dancer Soul",
"Tanjelly Soul",
"Bugbear Soul",
"Arc Demon Soul",
"Giant Slug Soul",
"Killer Doll Soul",
"Tombstone Soul",
"Treant Soul",
"Ghoul Soul",
"Skelerang Soul",
"Skeleton Ape Soul",
"Dead Warrior Soul",
"Dead Pirate Soul",
"Draghignazzo Soul",
"Heart Eater Soul",
"Peeping Eye Soul",
"Skeleton Farmer Soul",
"The Creature Soul",
"Mimic Soul",
"Mothman Soul",
"Ouija Table Soul",
"Dead Crusader Soul",
"Stolas Soul",
"Wakwak Tree Soul",
"Procel Soul",
"Mud Demon Soul"
]
consumable_table = [
"Potion",
"High Potion",
"Super Potion",
"Mind Up",
"High Mind Up",
"Mana Prism",
"Anti-Venom",
"Uncurse Potion",
"Meat Strip",
"Tasty Meat",
"Rice Ball",
"Mushroom",
"Corn Soup",
"Beef Curry",
"Noodles",
"Cream Soda",
"Cream Puff",
"Milk",
"Coffee",
"Tea",
"Pudding",
"Strawberry",
"Melon",
"Grapes",
"Hamburger",
"Fried Chicken",
"Hot Dog",
"Pumpkin Pie",
"Pancake",
"Piroshki",
"Tinned Spinach",
"Foie Gras",
"Caviar",
"Truffle",
"Paella",
"Spaghetti",
"Ice Cream",
"Salmon Meuniere",
"Boiled Starfish",
"Amanita",
"Rotten Meat",
"Spoiled Milk",
"Rusty Food Tin"
]
money_table = [
"$1",
"$10",
"$50",
"$100",
"$500",
"$1000",
"$2000"
]