Files
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

644 lines
54 KiB
Python

from typing import Dict, List, Set, NamedTuple
from BaseClasses import ItemClassification
class WOLItemData(NamedTuple):
classification: ItemClassification
categories: Set[str] = {}
copies_in_pool: int = 1
is_dlc: bool = False
default_starting_gear: bool = False
extras_eligible: bool = False
base_id = 752813602
item_table: Dict[str, WOLItemData] = {
"Attorney's Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}, is_dlc=True),
"Bean-Iron Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Blood-Soaked Pocket Square": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"Bowling Shirt Nametag": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}, is_dlc=True),
"Buffalo Bandolier": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"CGAS Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}, is_dlc=True),
"Chest Full Of Medals": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"El Vibrato Brooch": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"Enchanted Bandolier": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Fine Bandolier": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Gilded Lily": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Golden Scarab Pin": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Gothic Cameo": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Greased Bandolier": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Halloway's Pin": WOLItemData(ItemClassification.progression, {"Gear", "Lapel"}),
"Lucky Marigold": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Medal Of Adequacy": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Necromancers, I Hate 'Em Button": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Perfumed Pocket Square": WOLItemData(ItemClassification.progression, {"Gear", "Lapel", "Prog Loot", "Stench Resistance"}),
"Purple Brain Pin": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Reinforced Pocket Square": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"Replica Sherf Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}, default_starting_gear=True),
"Revolting Brooch": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Rifleman Insignia Pin": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Rusty Deputy Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Shimmering Pocket Square": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"Shiny Abalone Brooch": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Smiling Face Button": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Smoking Crysanthemum": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Stylish Pocket Square": WOLItemData(ItemClassification.useful, {"Gear", "Lapel", "Prog Loot"}),
"Tentacled Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Texas Ranger Badge": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"Weirdly Deformed Bone": WOLItemData(ItemClassification.useful, {"Gear", "Lapel"}),
"3 Ball": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"5 Ball": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"6 Ball": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"Ancient Bean Can": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Antique Rangefinder": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Bean-Iron Kettle": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Bean-Iron Saucepan": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Bean-Iron Skillet": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Br*** Censer": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Breadwood Cheat Sheet": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Caged Canary": WOLItemData(ItemClassification.useful, {"Gear", "Offhand", "Prog Loot"}),
"Can Of Infinite Beans": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Dramatic Goblin Skull": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Driftwood Sculpture (Shield)": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"El Vibrato Cone": WOLItemData(ItemClassification.useful, {"Gear", "Offhand", "Prog Loot"}),
"Filthy Porcelain Cone": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Ghost Flower": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Glass Sphere": WOLItemData(ItemClassification.progression, {"Gear", "Offhand"}),
"Goblin Spyglass": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Goblin Trash Sack": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Gun Manor Pistol Token": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"Gun Manor Rifle Token": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"Gun Manor Shotgun Token": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}, is_dlc=True),
"Infernal Leather Bag": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Large Plush Bear": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Large Plush Cat": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Large Plush Owl": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Lucky Horseshoe": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Macready's Pocketwatch": WOLItemData(ItemClassification.progression, {"Gear", "Offhand"}, is_dlc=True),
"Rucker's Ranchsack": WOLItemData(ItemClassification.useful, {"Gear", "Offhand", "Prog Loot"}),
"Sea Skull": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Shiny Ball": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Small Plush Bear": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Small Plush Kitten": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Small Plush Owl": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Smoldering Leather Bag": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Souvenir Spoon": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Stove Door": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Strange Glass Rectangle": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Sweet-Smellin' Flowers": WOLItemData(ItemClassification.progression, {"Gear", "Offhand", "Stench Resistance"}),
"The Hedge Wizard's Orb": WOLItemData(ItemClassification.progression, {"Gear", "Offhand"}, is_dlc=True),
"Thick Leather Bag": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Vibrating Scapula": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Weird Silver Idol": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Worry Stone": WOLItemData(ItemClassification.useful, {"Gear", "Offhand"}),
"Barnaby Bob's Burnished Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Big Furry Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Black Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Boost Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Brown Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"El Vibrato Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots", "Prog Loot"}),
"Extra-Large Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Flashy Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Hide Shoes": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Hightailin' Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Infernal Leather Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Jackboots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Old Spanish Sabatons": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Orthopedic Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots", "Prog Loot"}),
"Overly-Tanned Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Riding Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Running Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Silk Nun's Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Smoldering Leather Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Spit-Soaked Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Thick Leather Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Beer-Soaked Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Enchanted Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Inscribed Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Meaty Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Shiny Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Shootin' Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Thick-Soled Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Tony's Tiger-Striped Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Wet Boots": WOLItemData(ItemClassification.progression, {"Gear", "Boots", "Hot Resistance"}),
"Work Boots": WOLItemData(ItemClassification.useful, {"Gear", "Boots"}),
"Arcane Geode Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Barely-Enchanted Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}, default_starting_gear=True),
"Battered Old Top Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Bean-Iron Collander": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Bear Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Black Hood": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Bowling Ball Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}, is_dlc=True),
"Burning Tophat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Cat Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Colorful Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Cowboy Chef's Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Crackerjack Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Crazy Electric Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Cultist Leader Mask": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Cultist Mask": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Dilapidated Old Wizard Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Driftwood Sculpture (Hat)": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"El Vibrato Crown": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"El Vibrato Headband": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"El Vibrato Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats", "Prog Loot"}),
"Ellsbury's Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Enchanted Buffalo Skull": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Extra-Black Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Fake Pope Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Floppy Derby": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}, default_starting_gear=True),
"Four-Gallon Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}, default_starting_gear=True),
"Funerary Derby": WOLItemData(ItemClassification.useful, {"Gear", "Hats", "Prog Loot"}),
"Gasmask": WOLItemData(ItemClassification.progression, {"Gear", "Hats", "Stench Resistance"}),
"General Gob's Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Ghost Cowboy Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Ghost Skin Cap": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Goblin Tiara": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Gold Tooth Crown": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"Gold Tooth Tiara": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Infernal Leather Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Kurtzfit Headband": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"Marmotskin Cap": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Miner's Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Old Cavalry Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Old Patrol Cap": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"Owl Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Prototype Stetson": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Really Nice Cowboy Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Rifleman's Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Rusty Old Viking Helmet": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Sloppy Chef's Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Sloppy Cowboy Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Sloppy Tophat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Smoldering Leather Hat": WOLItemData(ItemClassification.progression, {"Gear", "Hats", "Cold Resistance"}),
"Spittoon Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Strange Head Sack": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Stripey Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Teeny-Tiny Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"The Necromancer's Crown": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"Thick Leather Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Turnip Crown": WOLItemData(ItemClassification.progression, {"Gear", "Hats"}),
"Wreath Of Laurels": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}, is_dlc=True),
"Yeast-Covered Hat": WOLItemData(ItemClassification.useful, {"Gear", "Hats"}),
"Bean-Stained Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Bearskin Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Birthing Breeches": WOLItemData(ItemClassification.useful, {"Gear", "Pants", "Prog Loot"}),
"Black Denim Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Buffaloskin Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Cargo Chaps": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Cargo Jeans": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Chastity Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Coffee-Stained Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Cursed Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Double-Silk Pantaloons": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}, is_dlc=True),
"Eight-Legged Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}, is_dlc=True),
"El Vibrato Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Entire Leather Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Fancy Pantry Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}, is_dlc=True),
"Flexible Chaps": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Goblin Shortpants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Goblin Trousers": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Infernal Breeches": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Inflexible Chaps": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Kitchen Pants": WOLItemData(ItemClassification.progression, {"Gear", "Pants", "Stench Resistance", "Hot Resistance", "Cold Resistance"}),
"Kneeling Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Kurtzfit Pants": WOLItemData(ItemClassification.progression, {"Gear", "Pants"}),
"Magician's Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Miner's Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Old Silk Trousers": WOLItemData(ItemClassification.useful, {"Gear", "Pants", "Prog Loot"}),
"Smoldering Leather Pants": WOLItemData(ItemClassification.progression, {"Gear", "Pants", "Cold Resistance"}),
"Somethingskin Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Spit-Soaked Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Thick Chaps": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Thick Leather Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Thick Quilted Pants": WOLItemData(ItemClassification.useful, {"Gear", "Pants"}),
"Army-Issue Sidearm": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Bandit Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Bandit Revolver": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Bean-Iron Shootin' Iron": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Befouled Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Cookin' Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Deputy Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}, default_starting_gear=True),
"Desert Gang's Sixgun": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"El Vibrato Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols", "Prog Loot"}),
"General Gob's Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Ghost Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Goblin Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Intimidating Sixgun": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Medical Gun": WOLItemData(ItemClassification.useful, {"Gear", "Pistols", "Prog Loot"}),
"Mrs. Gun's Opus": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}, is_dlc=True),
"Muck-Clogged Blunderbuss": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"New-Fangled Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Rancher's Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols", "Prog Loot"}),
"Red-Hot Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Sigiled Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Silver Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Smoking Gun": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"The Worst Gun": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}, is_dlc=True),
"Toilet Pistol": WOLItemData(ItemClassification.useful, {"Gear", "Pistols"}),
"Ancient Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Bone-Chip Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Bowling Championship Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}, is_dlc=True),
"Branding Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings", "Prog Loot"}),
"Coal Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Coccyx With A Hole In It": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Cool Sapphire Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Cow-Catcher Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Cowseye Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Effluvious Emerald Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"El Vibrato Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings", "Prog Loot"}),
"Floral Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Ghost Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Glowing Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Goblin Engagement Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Goblin Glass Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Goblin Lead Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Goblin Nail Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Huge Diamond Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Lodestone Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings", "Prog Loot"}),
"Meat-Stained Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Military School Class Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings", "Prog Loot"}),
"Nasty Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}, default_starting_gear=True),
"Old Engagement Ring": WOLItemData(ItemClassification.filler, {"Gear", "Rings", "Prog Loot"}, extras_eligible=True),
"Ring Of Gettin' Places Faster": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Ring Of Inconspicuousness": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Ring Of Moderate Unpunchability": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Ring Of Smart Thinkin'": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Ring Of Strongth": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Sandalwood Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Santa Cortada's Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Serpentine Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Silicon Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Special Magic Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Thaumomorphic Diorite Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Unbreakable Ruby Ring": WOLItemData(ItemClassification.useful, {"Gear", "Rings"}),
"Artillery Saber": WOLItemData(ItemClassification.useful, {"Gear", "Melee", "Prog Loot"}),
"Balanced Billiards Cue": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}, is_dlc=True),
"Barry Knife": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bean-Iron Ladle": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bean-Iron Spatula": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bean-Iron Whisk": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Blechscalibur": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bloodied Cleaver": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bone Sword": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Bowling Pin": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Brass Knuckles": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Broken Board": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, default_starting_gear=True),
"Bush Whacker": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Cactus Club": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Clown Knife": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Construction Sledgehammer": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Crowbar": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Driftwood Sculpture (Club)": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"El Vibrato Club": WOLItemData(ItemClassification.useful, {"Gear", "Melee", "Prog Loot"}),
"Fancy Knife": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Fang-Gloves": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Goblin Trashbat": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Gulch Goblin Axe": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Gulch Goblin Spatula": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Hammer": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Hard Loaf": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Hedge Clippers": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Infernal Mallet": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Jumbo Jumbo Shrimp Fork": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Leather Shears": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Monkey Wrench": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Mushroom-Covered Bone": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Nailgoves": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Old Cavalry Saber": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Old Pickaxe": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Pickaxe": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Plunger": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Red-Hot Poker": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Repurposed Cult Dagger": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Rock Hammer": WOLItemData(ItemClassification.useful, {"Gear", "Melee", "Prog Loot"}),
"Spider Axe": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"St. Beefus' Thigh": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Stainless Steel Bean Pan": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Stuffed Gun": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Sweet Sword": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"The Carver": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}, is_dlc=True),
"Tuna Fork": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Ungulith-Horn Gloves": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Varmint Skinnin' Knife": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}),
"Weird Knife": WOLItemData(ItemClassification.useful, {"Gear", "Melee"}),
"Wobbly Billiards Cue": WOLItemData(ItemClassification.progression, {"Gear", "Melee"}, is_dlc=True),
"Kellogg Grain Flakes": WOLItemData(ItemClassification.progression, {"Consumables", "Food"}),
"Cheap Cigar": WOLItemData(ItemClassification.progression, {"Consumables", "Potions", "Stench Resistance"}, is_dlc=True),
"Can Of Kerosene": WOLItemData(ItemClassification.progression, {"Consumables", "Combat"}),
"1878 Nautical Almanac": WOLItemData(ItemClassification.progression, {"Books"}, is_dlc=True),
"Advanced Beancraft": WOLItemData(ItemClassification.progression, {"Books"}, 8),
"Advanced Cow Punchin'": WOLItemData(ItemClassification.useful, {"Books"}, 8),
"Basics Of Gun Law": WOLItemData(ItemClassification.progression, {"Books"}, is_dlc=True),
"Beans Illustrated": WOLItemData(ItemClassification.progression, {"Books"}),
"The Best Love Poem Ever Written": WOLItemData(ItemClassification.filler, {"Books"}),
"Burned Leatherworking Manual": WOLItemData(ItemClassification.progression, {"Books"}),
"Cannon Loading For Idjits": WOLItemData(ItemClassification.useful, {"Books"}),
"Progressive Nex-Mex Skillbook": WOLItemData(ItemClassification.progression, {"Books"}, 7),
"Desert Eatin' And Drinkin'": WOLItemData(ItemClassification.progression, {"Books"}),
"The Diary Of Alexandria Alexandria": WOLItemData(ItemClassification.filler, {"Books"}),
"Duel Law": WOLItemData(ItemClassification.progression, {"Books"}, is_dlc=True),
"Duelling Banjos": WOLItemData(ItemClassification.progression, {"Books"}, is_dlc=True),
"Forgotten Lore": WOLItemData(ItemClassification.useful, {"Books"}),
"Fun Law: Rules For Parlor Games": WOLItemData(ItemClassification.progression, {"Books"}, is_dlc=True),
"Get Crackin': A Guide To Modern Safes": WOLItemData(ItemClassification.progression, {"Books"}),
"Gold Medal Silversmithing": WOLItemData(ItemClassification.useful, {"Books"}),
"Hedging Your Bets": WOLItemData(ItemClassification.useful, {"Books"}, is_dlc=True),
"How To \"Cheat\" At \"Poker\"": WOLItemData(ItemClassification.useful, {"Books"}),
"Kickin' Ass And Chewin' Gum": WOLItemData(ItemClassification.useful, {"Books"}),
"Locks And How To Pick Them": WOLItemData(ItemClassification.progression, {"Books"}),
"Mind Your Meat": WOLItemData(ItemClassification.progression, {"Books"}),
"Modern Snake Oiler": WOLItemData(ItemClassification.useful, {"Books"}, 8),
"Mycology, Yourcology": WOLItemData(ItemClassification.progression, {"Books"}),
"Oils I Have Known": WOLItemData(ItemClassification.useful, {"Books"}),
"Percussive Maintenance": WOLItemData(ItemClassification.progression, {"Books"}),
"The Quick And The Drunk": WOLItemData(ItemClassification.useful, {"Books"}),
"Rich Vein, Poor Vein": WOLItemData(ItemClassification.useful, {"Books"}),
"Tanning And Tanning": WOLItemData(ItemClassification.useful, {"Books"}),
"To Serve Food To Mankind": WOLItemData(ItemClassification.useful, {"Books"}),
"Walking Stupid": WOLItemData(ItemClassification.filler, {"Books"}),
"1.2337\" Diameter Tin Can": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"A Bunch Of Really Small Guns": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"A Pile Of Loose Chili Beans": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"A Year's Supply Of Dynamite": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Artillery Targeting Flare": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Attic-Opening Stick": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Bag Of Grease": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Bag Of Mixed Grain": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Bale Of Cowsbane": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Big Coil Of Barbed Wire": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Blank Sheet Music": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Blue Chalk": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Bottle Of Ghost Whiskey": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Box Of Science Doohickeys": WOLItemData(ItemClassification.useful, {"Quest Items"}, is_dlc=True),
"Breadwood Bread Bowl x5": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Breadwood Logging Permit Forms": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Breadwood Logging Report": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Breadwood Logging Report Folder": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Breadwood's Missing Mail": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Broken Leg Pills": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Buffalo Pile Locker Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Buffalo Soldier Diagram": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Burned Scroll": WOLItemData(ItemClassification.progression, {"Quest Items", "Necromancer Clues"}),
"Cargo Car Key": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Charred Locket": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Child's Bracelet": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Chili Sin Pistoles": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Chili Sin Pistoles (Muerto)": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Chili Spices": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Chuck's Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Circus Show Ticket": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Circus Ticket": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Clip-On Bow Tie": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Comedy Flier": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Creepy Whispering Stone": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Cryptic Note About Ley Lines": WOLItemData(ItemClassification.progression, {"Quest Items", "Necromancer Clues"}),
"Curly's Auto-Gyrotheodolite": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Curly's Compass": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Curly's Strongbox": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Dave's Secret Sauce Recipe": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Demi-Culverin Cannonball": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Desert Ape Skeleton": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Dictionary Page (Poach)": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Dining Car Key": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Discipline Slip": WOLItemData(ItemClassification.progression, {"Quest Items", "Necromancer Clues"}),
"El Vibrato Cross": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"El Vibrato Cylinder": WOLItemData(ItemClassification.progression, {"Quest Items"}, 3),
"El Vibrato Device": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"El Vibrato Model Bridge": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"El Vibrato Rod": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"El Vibrato Transponder": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Elevator Button": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Emergency Form Transfer Envelope": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Fort Treason Ballistics Chart": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Forty Loaves Of Bread": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Gas Cap": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Geometry Textbook": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Ghost Pencil": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Ghost Staple Remover": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Ghost Stapler": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Ghostwood Visitor's ID": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Ghostwood Visitor's Permit": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Glass Eye": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Goblet Of Blood": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Gore-Splattered Scroll": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Green Green Apple Jellybeans": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Gun Manor Carriage House Key": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Gun Manor Guest Room Key": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Gun Manor Photo": WOLItemData(ItemClassification.filler, {"Quest Items"}, is_dlc=True),
"Gustavson Gulch Treasure Cave Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Gustavson Gulch Treasure Cave Key (Spare)": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Half A Ton Of Yeast": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"High-Tech Drill Bit": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Honey Jelly Bean": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Interesting Rock": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Jumbleneck Mine Elevator Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Kellogg Ranch Keyring": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Kellogg Ranch Workout Regimen": WOLItemData(ItemClassification.filler, {"Quest Items"}),
"Kellogg's Grain Flakes Recipe": WOLItemData(ItemClassification.filler, {"Quest Items"}),
"Key Fragment 1": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Key Fragment 2": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Key Fragment 3": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Key To P.O. Box 114": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Key To P.O. Box 441": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Key-Shaped El Vibrato Device": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Left Half Of Curly's Map": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Letter To Roy Bean": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Lime Lime Jellybeans": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"List Of Buffalo Bones": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Lucky Cap": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Marching Orders": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Mary Stearns' Diary": WOLItemData(ItemClassification.filler, {"Quest Items"}),
"Mint Mint Jellybeans": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Mrs. Gun's Blueprint": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Mule Rental Contract": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Mushroom Map": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Mushroom Plucking Pliers": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Nearly-Empty Herbicide Can": WOLItemData(ItemClassification.filler, {"Quest Items"}, is_dlc=True),
"Overdue Breadwood Book": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Owl Camera": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Packrat Skeleton": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Paper Bag": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Passenger Car Key": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Photo Of L'ardest": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Picture Of Mary Stearns": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Plaid Skirt": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Pope's Pelvis": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Postal Code Sheet": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Purple Grass": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Pvt. Lemmon's Diary": WOLItemData(ItemClassification.filler, {"Quest Items"}),
"Pvt. Matthau's Diary": WOLItemData(ItemClassification.filler, {"Quest Items"}),
"Remains Of The Potemkin Gang": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Right Half Of Curly's Map": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Robe Receipt": WOLItemData(ItemClassification.progression, {"Quest Items", "Necromancer Clues"}),
"Santa Cortada's Skull": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Saute Knife": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Shaker Of Saltpeter": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Sharpened Ghost Pencil": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Shaving Cream Pie": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Shower Curtain": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Silver-Plated Barbed Wire": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Skull With An Odd Tag On It": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Slide Whistle": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Small Blowtorch": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Southeast-Western Murder Pepper": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Spooky Lullaby Sheet Music": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"St. Beefus' Finger": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Sticky Note": WOLItemData(ItemClassification.progression, {"Quest Items", "Necromancer Clues"}),
"Strange Stone Arrow": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Syrup Tap": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Tannery Back Door Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Tannery St. Rage Key": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Tea Service": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Tiny Stick Of Dynamite": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Toy Skeletons": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Unstable Stick Of Dynamite": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Very Thick Spectacles": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"Wad Of Stuffing": WOLItemData(ItemClassification.progression, {"Quest Items"}, is_dlc=True),
"Weird Rock Sample": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Whining El Vibrato Object": WOLItemData(ItemClassification.useful, {"Quest Items"}),
"A Portable Alchemistry Set": WOLItemData(ItemClassification.useful, {"Miscellany"}),
"A Portable Arcane Oven": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"A Portable Leatherwork Bench": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"All-Purpose Beans x2": WOLItemData(ItemClassification.useful, {"Miscellany"}, extras_eligible=True),
"Balloon": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Bean-Iron Nugget": WOLItemData(ItemClassification.progression, {"Miscellany"}, 3),
"Blank Postcard": WOLItemData(ItemClassification.progression, {"Miscellany"}, 5),
"Bottle Of Buffalo Tranquilizers": WOLItemData(ItemClassification.useful, {"Miscellany"}),
"Cool Sapphire": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Cowseye": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Delicate Bean-Iron Nugget": WOLItemData(ItemClassification.progression, {"Miscellany"}, 3),
"Dense Bean-Iron Nugget": WOLItemData(ItemClassification.progression, {"Miscellany"}, 3),
"Disturbing Portrait": WOLItemData(ItemClassification.progression, {"Miscellany", "Stench Resistance", "Hot Resistance", "Cold Resistance"}),
"Effluvious Emerald": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Elaborate Puzzle Box": WOLItemData(ItemClassification.useful, {"Miscellany"}),
"Handful Of Old Coins": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Hanky": WOLItemData(ItemClassification.filler, {"Miscellany"}),
"Herbal Remedy": WOLItemData(ItemClassification.filler, {"Miscellany"}),
"Infernal Soul Fragment": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Jaw Harp": WOLItemData(ItemClassification.useful, {"Miscellany"}),
"Miniature Piano": WOLItemData(ItemClassification.useful, {"Miscellany"}),
"Personalized Gun Manor Shotglass": WOLItemData(ItemClassification.useful, {"Miscellany"}, is_dlc=True),
"Pocketknife": WOLItemData(ItemClassification.filler, {"Miscellany"}),
"Polished Diorite": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Puzzle Cube": WOLItemData(ItemClassification.filler, {"Miscellany"}),
"Shovel": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Silenter": WOLItemData(ItemClassification.progression, {"Miscellany"}, is_dlc=True),
"Strange Lamp": WOLItemData(ItemClassification.filler, {"Miscellany"}),
"Strange Silvery Crystal": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Superdense Coal": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Unbreakable Ruby": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Silver Nugget x5": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Handful Of Nails x4": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Stock Certificate x3": WOLItemData(ItemClassification.filler, {"Miscellany"}, 2, extras_eligible=True),
"Human Ashes x2": WOLItemData(ItemClassification.progression, {"Quest Items"}, extras_eligible=True),
"Cheap Wine x11": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Sulphur Match x4": WOLItemData(ItemClassification.progression, {"Consumables", "Combat"}, extras_eligible=True), #TODO: Replace with an infinite matchbook only usable for check requirements?
"Military Medical Supplies": WOLItemData(ItemClassification.filler, {"Consumables", "Combat", "Booze"}, extras_eligible=True),
"Decent Booze": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Cheap Booze": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Lead Pie": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Drugs": WOLItemData(ItemClassification.filler, {"Consumables", "Combat", "Potions"}, extras_eligible=True),
"Goblin Sandwich x5": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Goblin Chicory x3": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"A Length Of Rope": WOLItemData(ItemClassification.progression, {"Miscellany"}),
"Tainted Milk x3": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"Gold Tooth x3": WOLItemData(ItemClassification.progression, {"Miscellany"}, extras_eligible=True),
"Potted Meat": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Bottle Of Laudanum x6": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"Unrefined Meat Nugget x4": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Bundle Of Bones": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Ghost Pickle x3": WOLItemData(ItemClassification.progression, {"Consumables", "Food", "Stench Resistance", "Hot Resistance", "Cold Resistance"}, extras_eligible=True),
"\"Cotton Candy\"": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Dynamite x5": WOLItemData(ItemClassification.filler, {"Consumables", "Combat"}, extras_eligible=True),
"Dynamite x10": WOLItemData(ItemClassification.filler, {"Consumables", "Combat"}, extras_eligible=True),
"Lasso x3": WOLItemData(ItemClassification.filler, {"Consumables", "Combat"}, extras_eligible=True),
"El Vibrato Fluid x5": WOLItemData(ItemClassification.useful, {"Miscellany"}, extras_eligible=True),
"Can Of Schmaltz Blue Ribbon x3": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Sack Of Meat Nuggets": WOLItemData(ItemClassification.useful, {"Miscellany"}, 3, extras_eligible=True),
"Perfect Cup Of Coffee": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"El Vibrato Seltzer x3": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"Tripe Pie": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Decent Whiskey x2": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Patent Emetic x3": WOLItemData(ItemClassification.filler, {"Consumables", "Combat"}, extras_eligible=True),
"Skull Chips x3": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Handful Of Loose Teeth x3": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"El Vibrato Punchcard (Complicated) x5": WOLItemData(ItemClassification.filler, {"Quest Items"}, 2, extras_eligible=True),
"El Vibrato Punchcard x5": WOLItemData(ItemClassification.filler, {"Quest Items"}, extras_eligible=True),
"El Vibrato Scraps x8": WOLItemData(ItemClassification.filler, {"Quest Items"}, extras_eligible=True),
"El Vibrato Scraps x45": WOLItemData(ItemClassification.useful, {"Quest Items"}, extras_eligible=True),
"Skeleton Bone x4": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Needle x5": WOLItemData(ItemClassification.progression, {"Miscellany"}, 3, extras_eligible=True),
"Jar Of Moonshine": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Jar Of Peanut Butter": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Goat Steak": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Moon Bits": WOLItemData(ItemClassification.useful, {"Miscellany"}, extras_eligible=True),
"Fancy Coffee": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, extras_eligible=True),
"Spider Pie": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, 2, is_dlc=True),
"Box Of Science Doohickeys": WOLItemData(ItemClassification.useful, {"Quest Items"}, 4, is_dlc=True),
"Tinned Caviar x3": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, is_dlc=True),
"Old-Timey Ointment x3": WOLItemData(ItemClassification.filler, {"Consumables", "Potions"}, is_dlc=True),
"Instant Grits": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Plum Pudding": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Blackened Beans": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Disposable Binoculars x2": WOLItemData(ItemClassification.filler, {"Miscellany"}, extras_eligible=True),
"Army Field Trauma Kit": WOLItemData(ItemClassification.filler, {"Consumables", "Combat"}, extras_eligible=True),
"Military-Grade Whiskey": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, extras_eligible=True),
"Hard Tack": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Gulch Goblin Lollipop": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Snake Liver x3": WOLItemData(ItemClassification.useful, {"Consumables", "Combat"}, extras_eligible=True),
"Snake Venom Bladder x3": WOLItemData(ItemClassification.useful, {"Consumables", "Combat"}, extras_eligible=True),
"Snake Spleen x3": WOLItemData(ItemClassification.useful, {"Consumables", "Combat"}, extras_eligible=True),
"Apple": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Carrot": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, extras_eligible=True),
"Gold Skull": WOLItemData(ItemClassification.filler, {"Miscellany"}, 2, is_dlc=True, extras_eligible=True),
"Stock Certificate": WOLItemData(ItemClassification.filler, {"Miscellany"}, 2, is_dlc=True, extras_eligible=True),
"Spider Ring": WOLItemData(ItemClassification.filler, {"Gear", "Rings"}, is_dlc=True),
"Manley's Finest Cotton Candy Schnapps": WOLItemData(ItemClassification.filler, {"Consumables", "Booze"}, is_dlc=True),
"Magic-Infused Salad": WOLItemData(ItemClassification.filler, {"Consumables", "Food"}, is_dlc=True),
"NE North Central Logging Permit": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Ghost Coach To Gun Manor": WOLItemData(ItemClassification.progression, {"Miscellany"}, is_dlc=True),
"English-Goblintongue Dictionary": WOLItemData(ItemClassification.progression, {"Books"}),
"Can Of Oil": WOLItemData(ItemClassification.progression, {"Miscellany"}, extras_eligible=True),
"Packet Of Cowsbane Seeds": WOLItemData(ItemClassification.progression, {"Quest Items"}),
"Lactarius Dirtihippica mushroom x4": WOLItemData(ItemClassification.progression, {"Consumables", "Food", "Quest Items"}),
"Silver-Toothed Skull": WOLItemData(ItemClassification.progression, {"Quest Items"})
}
starting_gear_list: List[str] = [name for name, data in item_table.items() if data.default_starting_gear]
extra_filler_list: List[str] = [name for name, data in item_table.items() if data.extras_eligible]
item_name_to_id: Dict[str, int] = {name: base_id + index for index, name in enumerate(item_table)}
item_categories = {
"Gear",
"Lapel",
"Offhand",
"Boots",
"Pants",
"Hats",
"Rings",
"Pistols",
"Melee",
"Prog Loot",
"Consumables",
"Food",
"Booze",
"Potions",
"Combat",
"Books",
"Quest Items",
"Miscellany",
"Necromancer Clues",
"Stench Resistance",
"Hot Resistance",
"Cold Resistance"
}
item_name_groups: Dict[str, Set[str]] = {}
for category in item_categories:
items_in_category = set()
for item, data in item_table.items():
if category in data.categories:
items_in_category.add(item)
item_name_groups[category] = items_in_category