mirror of
https://github.com/rr-/pq-cli.git
synced 2026-09-28 22:33:59 -06:00
749 lines
19 KiB
Python
749 lines
19 KiB
Python
import enum
|
|
import typing as T
|
|
from dataclasses import dataclass
|
|
|
|
|
|
class StatType(enum.Enum):
|
|
strength = "STR"
|
|
condition = "CON"
|
|
dexterity = "DEX"
|
|
intelligence = "INT"
|
|
wisdom = "WIS"
|
|
charisma = "CHA"
|
|
hp_max = "HP Max"
|
|
mp_max = "MP Max"
|
|
|
|
|
|
class EquipmentType(enum.Enum):
|
|
weapon = "Weapon"
|
|
shield = "Shield"
|
|
helm = "Helm"
|
|
hauberk = "Hauberk"
|
|
brassairts = "Brassairts"
|
|
vambraces = "Vambraces"
|
|
gauntlets = "Gauntlets"
|
|
gambeson = "Gambeson"
|
|
cuisses = "Cuisses"
|
|
greaves = "Greaves"
|
|
sollerets = "Sollerets"
|
|
|
|
|
|
PRIME_STATS = [
|
|
StatType.strength,
|
|
StatType.condition,
|
|
StatType.dexterity,
|
|
StatType.intelligence,
|
|
StatType.wisdom,
|
|
StatType.charisma,
|
|
]
|
|
|
|
ALL_STATS = PRIME_STATS + [StatType.hp_max, StatType.mp_max]
|
|
|
|
|
|
SPELLS = [
|
|
"Slime Finger",
|
|
"Rabbit Punch",
|
|
"Hastiness",
|
|
"Good Move",
|
|
"Sadness",
|
|
"Seasick",
|
|
"Shoelaces",
|
|
"Innoculate",
|
|
"Cone of Annoyance",
|
|
"Magnetic Orb",
|
|
"Invisible Hands",
|
|
"Revolting Cloud",
|
|
"Aqueous Humor",
|
|
"Spectral Miasma",
|
|
"Clever Fellow",
|
|
"Lockjaw",
|
|
"History Lesson",
|
|
"Hydrophobia",
|
|
"Big Sister",
|
|
"Cone of Paste",
|
|
"Mulligan",
|
|
"Nestor's Bright Idea",
|
|
"Holy Batpole",
|
|
"Tumor (Benign)",
|
|
"Braingate",
|
|
"Summon a Bitch",
|
|
"Nonplus",
|
|
"Animate Nightstand",
|
|
"Eye of the Troglodyte",
|
|
"Curse Name",
|
|
"Dropsy",
|
|
"Vitreous Humor",
|
|
"Roger's Grand Illusion",
|
|
"Covet",
|
|
"Black Idaho",
|
|
"Astral Miasma",
|
|
"Spectral Oyster",
|
|
"Acrid Hands",
|
|
"Angioplasty",
|
|
"Grognor's Big Day Off",
|
|
"Tumor (Malignant)",
|
|
"Animate Tunic",
|
|
"Ursine Armor",
|
|
"Holy Roller",
|
|
"Tonsilectomy",
|
|
"Curse Family",
|
|
"Infinite Confusion",
|
|
]
|
|
|
|
|
|
@dataclass
|
|
class Modifier:
|
|
name: str
|
|
quality: int
|
|
|
|
|
|
OFFENSE_ATTRIB = [
|
|
Modifier("Polished", 1),
|
|
Modifier("Serrated", 1),
|
|
Modifier("Heavy", 1),
|
|
Modifier("Pronged", 2),
|
|
Modifier("Steely", 2),
|
|
Modifier("Vicious", 3),
|
|
Modifier("Venomed", 4),
|
|
Modifier("Stabbity", 4),
|
|
Modifier("Dancing", 5),
|
|
Modifier("Invisible", 6),
|
|
Modifier("Vorpal", 7),
|
|
]
|
|
|
|
DEFENSE_ATTRIB = [
|
|
Modifier("Studded", 1),
|
|
Modifier("Banded", 2),
|
|
Modifier("Gilded", 2),
|
|
Modifier("Festooned", 3),
|
|
Modifier("Holy", 4),
|
|
Modifier("Cambric", 1),
|
|
Modifier("Fine", 4),
|
|
Modifier("Impressive", 5),
|
|
Modifier("Custom", 3),
|
|
]
|
|
|
|
OFFENSE_BAD = [
|
|
Modifier("Dull", -2),
|
|
Modifier("Tarnished", -1),
|
|
Modifier("Rusty", -3),
|
|
Modifier("Padded", -5),
|
|
Modifier("Bent", -4),
|
|
Modifier("Mini", -4),
|
|
Modifier("Rubber", -6),
|
|
Modifier("Nerf", -7),
|
|
Modifier("Unbalanced", -2),
|
|
]
|
|
|
|
DEFENSE_BAD = [
|
|
Modifier("Holey", -1),
|
|
Modifier("Patched", -1),
|
|
Modifier("Threadbare", -2),
|
|
Modifier("Faded", -1),
|
|
Modifier("Rusty", -3),
|
|
Modifier("Motheaten", -3),
|
|
Modifier("Mildewed", -2),
|
|
Modifier("Torn", -3),
|
|
Modifier("Dented", -3),
|
|
Modifier("Cursed", -5),
|
|
Modifier("Plastic", -4),
|
|
Modifier("Cracked", -4),
|
|
Modifier("Warped", -3),
|
|
Modifier("Corroded", -3),
|
|
]
|
|
|
|
|
|
@dataclass
|
|
class EquipmentPreset:
|
|
name: str
|
|
quality: int
|
|
|
|
|
|
SHIELDS = [
|
|
EquipmentPreset("Parasol", 0),
|
|
EquipmentPreset("Pie Plate", 1),
|
|
EquipmentPreset("Garbage Can Lid", 2),
|
|
EquipmentPreset("Buckler", 3),
|
|
EquipmentPreset("Plexiglass", 4),
|
|
EquipmentPreset("Fender", 4),
|
|
EquipmentPreset("Round Shield", 5),
|
|
EquipmentPreset("Carapace", 5),
|
|
EquipmentPreset("Scutum", 6),
|
|
EquipmentPreset("Propugner", 6),
|
|
EquipmentPreset("Kite Shield", 7),
|
|
EquipmentPreset("Pavise", 8),
|
|
EquipmentPreset("Tower Shield", 9),
|
|
EquipmentPreset("Baroque Shield", 11),
|
|
EquipmentPreset("Aegis", 12),
|
|
EquipmentPreset("Magnetic Field", 18),
|
|
]
|
|
|
|
ARMORS = [
|
|
EquipmentPreset("Lace", 1),
|
|
EquipmentPreset("Macrame", 2),
|
|
EquipmentPreset("Burlap", 3),
|
|
EquipmentPreset("Canvas", 4),
|
|
EquipmentPreset("Flannel", 5),
|
|
EquipmentPreset("Chamois", 6),
|
|
EquipmentPreset("Pleathers", 7),
|
|
EquipmentPreset("Leathers", 8),
|
|
EquipmentPreset("Bearskin", 9),
|
|
EquipmentPreset("Ringmail", 10),
|
|
EquipmentPreset("Scale Mail", 12),
|
|
EquipmentPreset("Chainmail", 14),
|
|
EquipmentPreset("Splint Mail", 15),
|
|
EquipmentPreset("Platemail", 16),
|
|
EquipmentPreset("ABS", 17),
|
|
EquipmentPreset("Kevlar", 18),
|
|
EquipmentPreset("Titanium", 19),
|
|
EquipmentPreset("Mithril Mail", 20),
|
|
EquipmentPreset("Diamond Mail", 25),
|
|
EquipmentPreset("Plasma", 30),
|
|
]
|
|
|
|
WEAPONS = [
|
|
EquipmentPreset("Stick", 0),
|
|
EquipmentPreset("Broken Bottle", 1),
|
|
EquipmentPreset("Shiv", 1),
|
|
EquipmentPreset("Sprig", 1),
|
|
EquipmentPreset("Oxgoad", 1),
|
|
EquipmentPreset("Eelspear", 2),
|
|
EquipmentPreset("Bowie Knife", 2),
|
|
EquipmentPreset("Claw Hammer", 2),
|
|
EquipmentPreset("Handpeen", 2),
|
|
EquipmentPreset("Andiron", 3),
|
|
EquipmentPreset("Hatchet", 3),
|
|
EquipmentPreset("Tomahawk", 3),
|
|
EquipmentPreset("Hackbarm", 3),
|
|
EquipmentPreset("Crowbar", 4),
|
|
EquipmentPreset("Mace", 4),
|
|
EquipmentPreset("Battleadze", 4),
|
|
EquipmentPreset("Leafmace", 5),
|
|
EquipmentPreset("Shortsword", 5),
|
|
EquipmentPreset("Longiron", 5),
|
|
EquipmentPreset("Poachard", 5),
|
|
EquipmentPreset("Baselard", 5),
|
|
EquipmentPreset("Whinyard", 6),
|
|
EquipmentPreset("Blunderbuss", 6),
|
|
EquipmentPreset("Longsword", 6),
|
|
EquipmentPreset("Crankbow", 6),
|
|
EquipmentPreset("Blibo", 7),
|
|
EquipmentPreset("Broadsword", 7),
|
|
EquipmentPreset("Kreen", 7),
|
|
EquipmentPreset("Warhammer", 7),
|
|
EquipmentPreset("Morning Star", 8),
|
|
EquipmentPreset("Pole-adze", 8),
|
|
EquipmentPreset("Spontoon", 8),
|
|
EquipmentPreset("Bastard Sword", 9),
|
|
EquipmentPreset("Peen-arm", 9),
|
|
EquipmentPreset("Culverin", 10),
|
|
EquipmentPreset("Lance", 10),
|
|
EquipmentPreset("Halberd", 11),
|
|
EquipmentPreset("Poleax", 12),
|
|
EquipmentPreset("Bandyclef", 15),
|
|
]
|
|
|
|
SPECIALS = [
|
|
"Diadem",
|
|
"Festoon",
|
|
"Gemstone",
|
|
"Phial",
|
|
"Tiara",
|
|
"Scabbard",
|
|
"Arrow",
|
|
"Lens",
|
|
"Lamp",
|
|
"Hymnal",
|
|
"Fleece",
|
|
"Laurel",
|
|
"Brooch",
|
|
"Gimlet",
|
|
"Cobble",
|
|
"Albatross",
|
|
"Brazier",
|
|
"Bandolier",
|
|
"Tome",
|
|
"Garnet",
|
|
"Amethyst",
|
|
"Candelabra",
|
|
"Corset",
|
|
"Sphere",
|
|
"Sceptre",
|
|
"Ankh",
|
|
"Talisman",
|
|
"Orb",
|
|
"Gammel",
|
|
"Ornament",
|
|
"Brocade",
|
|
"Galoon",
|
|
"Bijou",
|
|
"Spangle",
|
|
"Gimcrack",
|
|
"Hood",
|
|
"Vulpeculum",
|
|
]
|
|
|
|
ITEM_ATTRIB = [
|
|
"Golden",
|
|
"Gilded",
|
|
"Spectral",
|
|
"Astral",
|
|
"Garlanded",
|
|
"Precious",
|
|
"Crafted",
|
|
"Dual",
|
|
"Filigreed",
|
|
"Cruciate",
|
|
"Arcane",
|
|
"Blessed",
|
|
"Reverential",
|
|
"Lucky",
|
|
"Enchanted",
|
|
"Gleaming",
|
|
"Grandiose",
|
|
"Sacred",
|
|
"Legendary",
|
|
"Mythic",
|
|
"Crystalline",
|
|
"Austere",
|
|
"Ostentatious",
|
|
"One True",
|
|
"Proverbial",
|
|
"Fearsome",
|
|
"Deadly",
|
|
"Benevolent",
|
|
"Unearthly",
|
|
"Magnificent",
|
|
"Iron",
|
|
"Ormolu",
|
|
"Puissant",
|
|
]
|
|
|
|
ITEM_OFS = [
|
|
"Foreboding",
|
|
"Foreshadowing",
|
|
"Nervousness",
|
|
"Happiness",
|
|
"Torpor",
|
|
"Danger",
|
|
"Craft",
|
|
"Silence",
|
|
"Invisibility",
|
|
"Rapidity",
|
|
"Pleasure",
|
|
"Practicality",
|
|
"Hurting",
|
|
"Joy",
|
|
"Petulance",
|
|
"Intrusion",
|
|
"Chaos",
|
|
"Suffering",
|
|
"Extroversion",
|
|
"Frenzy",
|
|
"Sisu",
|
|
"Solitude",
|
|
"Punctuality",
|
|
"Efficiency",
|
|
"Comfort",
|
|
"Patience",
|
|
"Internment",
|
|
"Incarceration",
|
|
"Misapprehension",
|
|
"Loyalty",
|
|
"Envy",
|
|
"Acrimony",
|
|
"Worry",
|
|
"Fear",
|
|
"Awe",
|
|
"Guile",
|
|
"Prurience",
|
|
"Fortune",
|
|
"Perspicacity",
|
|
"Domination",
|
|
"Submission",
|
|
"Fealty",
|
|
"Hunger",
|
|
"Despair",
|
|
"Cruelty",
|
|
"Grob",
|
|
"Dignard",
|
|
"Ra",
|
|
"the Bone",
|
|
"Diamonique",
|
|
"Electrum",
|
|
"Hydragyrum",
|
|
]
|
|
|
|
BORING_ITEMS = [
|
|
"nail",
|
|
"lunchpail",
|
|
"sock",
|
|
"I.O.U.",
|
|
"cookie",
|
|
"pint",
|
|
"toothpick",
|
|
"writ",
|
|
"newspaper",
|
|
"letter",
|
|
"plank",
|
|
"hat",
|
|
"egg",
|
|
"coin",
|
|
"needle",
|
|
"bucket",
|
|
"ladder",
|
|
"chicken",
|
|
"twig",
|
|
"dirtclod",
|
|
"counterpane",
|
|
"vest",
|
|
"teratoma",
|
|
"bunny",
|
|
"rock",
|
|
"pole",
|
|
"carrot",
|
|
"canoe",
|
|
"inkwell",
|
|
"hoe",
|
|
"bandage",
|
|
"trowel",
|
|
"towel",
|
|
"planter box",
|
|
"anvil",
|
|
"axle",
|
|
"tuppence",
|
|
"casket",
|
|
"nosegay",
|
|
"trinket",
|
|
"credenza",
|
|
"writ",
|
|
]
|
|
|
|
|
|
@dataclass
|
|
class Monster:
|
|
name: str
|
|
level: int
|
|
item: T.Optional[str]
|
|
|
|
|
|
MONSTERS = [
|
|
Monster("Anhkheg", 6, "chitin"),
|
|
Monster("Ant", 0, "antenna"),
|
|
Monster("Ape", 4, "ass"),
|
|
Monster("Baluchitherium", 14, "ear"),
|
|
Monster("Beholder", 10, "eyestalk"),
|
|
Monster("Black Pudding", 10, "saliva"),
|
|
Monster("Blink Dog", 4, "eyelid"),
|
|
Monster("Cub Scout", 1, "neckerchief"),
|
|
Monster("Girl Scout", 2, "cookie"),
|
|
Monster("Boy Scout", 3, "merit badge"),
|
|
Monster("Eagle Scout", 4, "merit badge"),
|
|
Monster("Bugbear", 3, "skin"),
|
|
Monster("Bugboar", 3, "tusk"),
|
|
Monster("Boogie", 3, "slime"),
|
|
Monster("Camel", 2, "hump"),
|
|
Monster("Carrion Crawler", 3, "egg"),
|
|
Monster("Catoblepas", 6, "neck"),
|
|
Monster("Centaur", 4, "rib"),
|
|
Monster("Centipede", 0, "leg"),
|
|
Monster("Cockatrice", 5, "wattle"),
|
|
Monster("Couatl", 9, "wing"),
|
|
Monster("Crayfish", 0, "antenna"),
|
|
Monster("Demogorgon", 53, "tentacle"),
|
|
Monster("Jubilex", 17, "gel"),
|
|
Monster("Manes", 1, "tooth"),
|
|
Monster("Orcus", 27, "wand"),
|
|
Monster("Succubus", 6, "bra"),
|
|
Monster("Vrock", 8, "neck"),
|
|
Monster("Hezrou", 9, "leg"),
|
|
Monster("Glabrezu", 10, "collar"),
|
|
Monster("Nalfeshnee", 11, "tusk"),
|
|
Monster("Marilith", 7, "arm"),
|
|
Monster("Balor", 8, "whip"),
|
|
Monster("Yeenoghu", 25, "flail"),
|
|
Monster("Asmodeus", 52, "leathers"),
|
|
Monster("Baalzebul", 43, "pants"),
|
|
Monster("Barbed Devil", 8, "flame"),
|
|
Monster("Bone Devil", 9, "hook"),
|
|
Monster("Dispater", 30, "matches"),
|
|
Monster("Erinyes", 6, "thong"),
|
|
Monster("Geryon", 30, "cornucopia"),
|
|
Monster("Malebranche", 5, "fork"),
|
|
Monster("Ice Devil", 11, "snow"),
|
|
Monster("Lemure", 3, "blob"),
|
|
Monster("Pit Fiend", 13, "seed"),
|
|
Monster("Ankylosaurus", 9, "tail"),
|
|
Monster("Brontosaurus", 30, "brain"),
|
|
Monster("Diplodocus", 24, "fin"),
|
|
Monster("Elasmosaurus", 15, "neck"),
|
|
Monster("Gorgosaurus", 13, "arm"),
|
|
Monster("Iguanadon", 6, "thumb"),
|
|
Monster("Megalosaurus", 12, "jaw"),
|
|
Monster("Monoclonius", 8, "horn"),
|
|
Monster("Pentasaurus", 12, "head"),
|
|
Monster("Stegosaurus", 18, "plate"),
|
|
Monster("Triceratops", 16, "horn"),
|
|
Monster("Tyranosauraus Rex", 18, "forearm"),
|
|
Monster("Djinn", 7, "lamp"),
|
|
Monster("Doppleganger", 4, "face"),
|
|
Monster("Black Dragon", 7, None),
|
|
Monster("Plaid Dragon", 7, "sporrin"),
|
|
Monster("Blue Dragon", 9, None),
|
|
Monster("Beige Dragon", 9, None),
|
|
Monster("Brass Dragon", 7, "pole"),
|
|
Monster("Tin Dragon", 8, None),
|
|
Monster("Bronze Dragon", 9, "medal"),
|
|
Monster("Chromatic Dragon", 16, "scale"),
|
|
Monster("Copper Dragon", 8, "loafer"),
|
|
Monster("Gold Dragon", 8, "filling"),
|
|
Monster("Green Dragon", 8, None),
|
|
Monster("Platinum Dragon", 21, None),
|
|
Monster("Red Dragon", 10, "cocktail"),
|
|
Monster("Silver Dragon", 10, None),
|
|
Monster("White Dragon", 6, "tooth"),
|
|
Monster("Dragon Turtle", 13, "shell"),
|
|
Monster("Dryad", 2, "acorn"),
|
|
Monster("Dwarf", 1, "drawers"),
|
|
Monster("Eel", 2, "sashimi"),
|
|
Monster("Efreet", 10, "cinder"),
|
|
Monster("Sand Elemental", 8, "glass"),
|
|
Monster("Bacon Elemental", 10, "bit"),
|
|
Monster("Porn Elemental", 12, "lube"),
|
|
Monster("Cheese Elemental", 14, "curd"),
|
|
Monster("Hair Elemental", 16, "follicle"),
|
|
Monster("Swamp Elf", 1, "lilypad"),
|
|
Monster("Brown Elf", 1, "tusk"),
|
|
Monster("Sea Elf", 1, "jerkin"),
|
|
Monster("Ettin", 10, "fur"),
|
|
Monster("Frog", 0, "leg"),
|
|
Monster("Violet Fungi", 3, "spore"),
|
|
Monster("Gargoyle", 4, "gravel"),
|
|
Monster("Gelatinous Cube", 4, "jam"),
|
|
Monster("Ghast", 4, "vomit"),
|
|
Monster("Ghost", 10, None),
|
|
Monster("Ghoul", 2, "muscle"),
|
|
Monster("Humidity Giant", 12, "drops"),
|
|
Monster("Beef Giant", 11, "steak"),
|
|
Monster("Quartz Giant", 10, "crystal"),
|
|
Monster("Porcelain Giant", 9, "fixture"),
|
|
Monster("Rice Giant", 8, "grain"),
|
|
Monster("Cloud Giant", 12, "condensation"),
|
|
Monster("Fire Giant", 11, "cigarettes"),
|
|
Monster("Frost Giant", 10, "snowman"),
|
|
Monster("Hill Giant", 8, "corpse"),
|
|
Monster("Stone Giant", 9, "hatchling"),
|
|
Monster("Storm Giant", 15, "barometer"),
|
|
Monster("Mini Giant", 4, "pompadour"),
|
|
Monster("Gnoll", 2, "collar"),
|
|
Monster("Gnome", 1, "hat"),
|
|
Monster("Goblin", 1, "ear"),
|
|
Monster("Grid Bug", 1, "carapace"),
|
|
Monster("Jellyrock", 9, "seedling"),
|
|
Monster("Beer Golem", 15, "foam"),
|
|
Monster("Oxygen Golem", 17, "platelet"),
|
|
Monster("Cardboard Golem", 14, "recycling"),
|
|
Monster("Rubber Golem", 16, "ball"),
|
|
Monster("Leather Golem", 15, "fob"),
|
|
Monster("Gorgon", 8, "testicle"),
|
|
Monster("Gray Ooze", 3, "gravy"),
|
|
Monster("Green Slime", 2, "sample"),
|
|
Monster("Griffon", 7, "nest"),
|
|
Monster("Banshee", 7, "larynx"),
|
|
Monster("Harpy", 3, "mascara"),
|
|
Monster("Hell Hound", 5, "tongue"),
|
|
Monster("Hippocampus", 4, "mane"),
|
|
Monster("Hippogriff", 3, "egg"),
|
|
Monster("Hobgoblin", 1, "patella"),
|
|
Monster("Homonculus", 2, "fluid"),
|
|
Monster("Hydra", 8, "gyrum"),
|
|
Monster("Imp", 2, "tail"),
|
|
Monster("Invisible Stalker", 8, None),
|
|
Monster("Iron Peasant", 3, "chaff"),
|
|
Monster("Jumpskin", 3, "shin"),
|
|
Monster("Kobold", 1, "penis"),
|
|
Monster("Leprechaun", 1, "wallet"),
|
|
Monster("Leucrotta", 6, "hoof"),
|
|
Monster("Lich", 11, "crown"),
|
|
Monster("Lizard Man", 2, "tail"),
|
|
Monster("Lurker", 10, "sac"),
|
|
Monster("Manticore", 6, "spike"),
|
|
Monster("Mastodon", 12, "tusk"),
|
|
Monster("Medusa", 6, "eye"),
|
|
Monster("Multicell", 2, "dendrite"),
|
|
Monster("Pirate", 1, "booty"),
|
|
Monster("Berserker", 1, "shirt"),
|
|
Monster("Caveman", 2, "club"),
|
|
Monster("Dervish", 1, "robe"),
|
|
Monster("Merman", 1, "trident"),
|
|
Monster("Mermaid", 1, "gills"),
|
|
Monster("Mimic", 9, "hinge"),
|
|
Monster("Mind Flayer", 8, "tentacle"),
|
|
Monster("Minotaur", 6, "map"),
|
|
Monster("Yellow Mold", 1, "spore"),
|
|
Monster("Morkoth", 7, "teeth"),
|
|
Monster("Mummy", 6, "gauze"),
|
|
Monster("Naga", 9, "rattle"),
|
|
Monster("Nebbish", 1, "belly"),
|
|
Monster("Neo-Otyugh", 11, "organ "),
|
|
Monster("Nixie", 1, "webbing"),
|
|
Monster("Nymph", 3, "hanky"),
|
|
Monster("Ochre Jelly", 6, "nucleus"),
|
|
Monster("Octopus", 2, "beak"),
|
|
Monster("Ogre", 4, "talon"),
|
|
Monster("Ogre Mage", 5, "apparel"),
|
|
Monster("Orc", 1, "snout"),
|
|
Monster("Otyugh", 7, "organ"),
|
|
Monster("Owlbear", 5, "feather"),
|
|
Monster("Pegasus", 4, "aileron"),
|
|
Monster("Peryton", 4, "antler"),
|
|
Monster("Piercer", 3, "tip"),
|
|
Monster("Pixie", 1, "dust"),
|
|
Monster("Man-o-war", 3, "tentacle"),
|
|
Monster("Purple Worm", 15, "dung"),
|
|
Monster("Quasit", 3, "tail"),
|
|
Monster("Rakshasa", 7, "pajamas"),
|
|
Monster("Rat", 0, "tail"),
|
|
Monster("Remorhaz", 11, "protrusion"),
|
|
Monster("Roc", 18, "wing"),
|
|
Monster("Roper", 11, "twine"),
|
|
Monster("Rot Grub", 1, "eggsac"),
|
|
Monster("Rust Monster", 5, "shavings"),
|
|
Monster("Satyr", 5, "hoof"),
|
|
Monster("Sea Hag", 3, "wart"),
|
|
Monster("Silkie", 3, "fur"),
|
|
Monster("Shadow", 3, "silhouette"),
|
|
Monster("Shambling Mound", 10, "mulch"),
|
|
Monster("Shedu", 9, "hoof"),
|
|
Monster("Shrieker", 3, "stalk"),
|
|
Monster("Skeleton", 1, "clavicle"),
|
|
Monster("Spectre", 7, "vestige"),
|
|
Monster("Sphinx", 10, "paw"),
|
|
Monster("Spider", 0, "web"),
|
|
Monster("Sprite", 1, "can"),
|
|
Monster("Stirge", 1, "proboscis"),
|
|
Monster("Stun Bear", 5, "tooth"),
|
|
Monster("Stun Worm", 2, "trode"),
|
|
Monster("Su-monster", 5, "tail"),
|
|
Monster("Sylph", 3, "thigh"),
|
|
Monster("Titan", 20, "sandal"),
|
|
Monster("Trapper", 12, "shag"),
|
|
Monster("Treant", 10, "acorn"),
|
|
Monster("Triton", 3, "scale"),
|
|
Monster("Troglodyte", 2, "tail"),
|
|
Monster("Troll", 6, "hide"),
|
|
Monster("Umber Hulk", 8, "claw"),
|
|
Monster("Unicorn", 4, "blood"),
|
|
Monster("Vampire", 8, "pancreas"),
|
|
Monster("Wight", 4, "lung"),
|
|
Monster("Will-o'-the-Wisp", 9, "wisp"),
|
|
Monster("Wraith", 5, "finger"),
|
|
Monster("Wyvern", 7, "wing"),
|
|
Monster("Xorn", 7, "jaw"),
|
|
Monster("Yeti", 4, "fur"),
|
|
Monster("Zombie", 2, "forehead"),
|
|
Monster("Wasp", 0, "stinger"),
|
|
Monster("Rat", 1, "tail"),
|
|
Monster("Bunny", 0, "ear"),
|
|
Monster("Moth", 0, "dust"),
|
|
Monster("Beagle", 0, "collar"),
|
|
Monster("Midge", 0, "corpse"),
|
|
Monster("Ostrich", 1, "beak"),
|
|
Monster("Billy Goat", 1, "beard"),
|
|
Monster("Bat", 1, "wing"),
|
|
Monster("Koala", 2, "heart"),
|
|
Monster("Wolf", 2, "paw"),
|
|
Monster("Whippet", 2, "collar"),
|
|
Monster("Uruk", 2, "boot"),
|
|
Monster("Poroid", 4, "node"),
|
|
Monster("Moakum", 8, "frenum"),
|
|
Monster("Fly", 0, None),
|
|
Monster("Hogbird", 3, "curl"),
|
|
Monster("Wolog", 4, "lemma"),
|
|
]
|
|
|
|
|
|
@dataclass
|
|
class Race:
|
|
name: str
|
|
attr: T.List[StatType]
|
|
|
|
|
|
RACES = [
|
|
Race("Half Orc", [StatType.hp_max]),
|
|
Race("Half Man", [StatType.charisma]),
|
|
Race("Half Halfling", [StatType.dexterity]),
|
|
Race("Double Hobbit", [StatType.strength]),
|
|
Race("Hob-Hobbit", [StatType.dexterity, StatType.condition]),
|
|
Race("Low Elf", [StatType.condition]),
|
|
Race("Dung Elf", [StatType.wisdom]),
|
|
Race("Talking Pony", [StatType.mp_max, StatType.intelligence]),
|
|
Race("Gyrognome", [StatType.dexterity]),
|
|
Race("Lesser Dwarf", [StatType.condition]),
|
|
Race("Crested Dwarf", [StatType.charisma]),
|
|
Race("Eel Man", [StatType.dexterity]),
|
|
Race("Panda Man", [StatType.condition, StatType.strength]),
|
|
Race("Trans-Kobold", [StatType.wisdom]),
|
|
Race("Enchanted Motorcycle", [StatType.mp_max]),
|
|
Race("Will o' the Wisp", [StatType.wisdom]),
|
|
Race("Battle-Finch", [StatType.dexterity, StatType.intelligence]),
|
|
Race("Double Wookiee", [StatType.strength]),
|
|
Race("Skraeling", [StatType.wisdom]),
|
|
Race("Demicanadian", [StatType.condition]),
|
|
Race("Land Squid", [StatType.strength, StatType.hp_max]),
|
|
]
|
|
|
|
|
|
@dataclass
|
|
class Class:
|
|
name: str
|
|
attr: T.List[StatType]
|
|
|
|
|
|
CLASSES = [
|
|
Class("Ur-Paladin", [StatType.wisdom, StatType.condition]),
|
|
Class("Voodoo Princess", [StatType.intelligence, StatType.charisma]),
|
|
Class("Robot Monk", [StatType.strength]),
|
|
Class("Mu-Fu Monk", [StatType.dexterity]),
|
|
Class("Mage Illusioner", [StatType.intelligence, StatType.mp_max]),
|
|
Class("Shiv-Knight", [StatType.dexterity]),
|
|
Class("Inner Mason", [StatType.condition]),
|
|
Class("Fighter/Organist", [StatType.charisma, StatType.strength]),
|
|
Class("Puma Burgular", [StatType.dexterity]),
|
|
Class("Runeloremaster", [StatType.wisdom]),
|
|
Class("Hunter Strangler", [StatType.dexterity, StatType.intelligence]),
|
|
Class("Battle-Felon", [StatType.strength]),
|
|
Class("Tickle-Mimic", [StatType.wisdom, StatType.intelligence]),
|
|
Class("Slow Poisoner", [StatType.condition]),
|
|
Class("Bastard Lunatic", [StatType.condition]),
|
|
Class("Lowling", [StatType.wisdom]),
|
|
Class("Birdrider", [StatType.wisdom]),
|
|
Class("Vermineer", [StatType.intelligence]),
|
|
]
|
|
|
|
TITLES = [
|
|
"Mr.",
|
|
"Mrs.",
|
|
"Sir",
|
|
"Sgt.",
|
|
"Ms.",
|
|
"Captain",
|
|
"Chief",
|
|
"Admiral",
|
|
"Saint",
|
|
]
|
|
|
|
IMPRESSIVE_TITLES = [
|
|
"King",
|
|
"Queen",
|
|
"Lord",
|
|
"Lady",
|
|
"Viceroy",
|
|
"Mayor",
|
|
"Prince",
|
|
"Princess",
|
|
"Chief",
|
|
"Boss",
|
|
"Archbishop",
|
|
]
|