mirror of
https://github.com/rr-/pq-cli.git
synced 2026-09-28 22:33:59 -06:00
mechanic: port game logic
This commit is contained in:
+428
-432
@@ -3,14 +3,7 @@ import typing as T
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
class Traits(enum.Enum):
|
||||
name = "Name"
|
||||
race = "Race"
|
||||
class_ = "Class"
|
||||
level = "Level"
|
||||
|
||||
|
||||
class Stat(enum.Enum):
|
||||
class StatType(enum.Enum):
|
||||
strength = "STR"
|
||||
condition = "CON"
|
||||
dexterity = "DEX"
|
||||
@@ -21,7 +14,7 @@ class Stat(enum.Enum):
|
||||
mp_max = "MP Max"
|
||||
|
||||
|
||||
class Equipment(enum.Enum):
|
||||
class EquipmentType(enum.Enum):
|
||||
weapon = "Weapon"
|
||||
shield = "Shield"
|
||||
helm = "Helm"
|
||||
@@ -36,15 +29,15 @@ class Equipment(enum.Enum):
|
||||
|
||||
|
||||
PRIME_STATS = [
|
||||
Stat.strength,
|
||||
Stat.condition,
|
||||
Stat.dexterity,
|
||||
Stat.intelligence,
|
||||
Stat.wisdom,
|
||||
Stat.charisma,
|
||||
StatType.strength,
|
||||
StatType.condition,
|
||||
StatType.dexterity,
|
||||
StatType.intelligence,
|
||||
StatType.wisdom,
|
||||
StatType.charisma,
|
||||
]
|
||||
|
||||
ALL_STATS = PRIME_STATS + [Stat.hp_max, Stat.mp_max]
|
||||
ALL_STATS = PRIME_STATS + [StatType.hp_max, StatType.mp_max]
|
||||
|
||||
|
||||
SPELLS = [
|
||||
@@ -97,114 +90,157 @@ SPELLS = [
|
||||
"Infinite Confusion",
|
||||
]
|
||||
|
||||
|
||||
@dataclass
|
||||
class Modifier:
|
||||
name: str
|
||||
quality: int
|
||||
|
||||
|
||||
OFFENSE_ATTRIB = [
|
||||
"Polished|+1",
|
||||
"Serrated|+1",
|
||||
"Heavy|+1",
|
||||
"Pronged|+2",
|
||||
"Steely|+2",
|
||||
"Vicious|+3",
|
||||
"Venomed|+4",
|
||||
"Stabbity|+4",
|
||||
"Dancing|+5",
|
||||
"Invisible|+6",
|
||||
"Vorpal|+7",
|
||||
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 = [
|
||||
"Studded|+1",
|
||||
"Banded|+2",
|
||||
"Gilded|+2",
|
||||
"Festooned|+3",
|
||||
"Holy|+4",
|
||||
"Cambric|+1",
|
||||
"Fine|+4",
|
||||
"Impressive|+5",
|
||||
"Custom|+3",
|
||||
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 Equipment:
|
||||
name: str
|
||||
quality: int
|
||||
|
||||
|
||||
SHIELDS = [
|
||||
"Parasol|0",
|
||||
"Pie Plate|1",
|
||||
"Garbage Can Lid|2",
|
||||
"Buckler|3",
|
||||
"Plexiglass|4",
|
||||
"Fender|4",
|
||||
"Round Shield|5",
|
||||
"Carapace|5",
|
||||
"Scutum|6",
|
||||
"Propugner|6",
|
||||
"Kite Shield|7",
|
||||
"Pavise|8",
|
||||
"Tower Shield|9",
|
||||
"Baroque Shield|11",
|
||||
"Aegis|12",
|
||||
"Magnetic Field|18",
|
||||
Equipment("Parasol", 0),
|
||||
Equipment("Pie Plate", 1),
|
||||
Equipment("Garbage Can Lid", 2),
|
||||
Equipment("Buckler", 3),
|
||||
Equipment("Plexiglass", 4),
|
||||
Equipment("Fender", 4),
|
||||
Equipment("Round Shield", 5),
|
||||
Equipment("Carapace", 5),
|
||||
Equipment("Scutum", 6),
|
||||
Equipment("Propugner", 6),
|
||||
Equipment("Kite Shield", 7),
|
||||
Equipment("Pavise", 8),
|
||||
Equipment("Tower Shield", 9),
|
||||
Equipment("Baroque Shield", 11),
|
||||
Equipment("Aegis", 12),
|
||||
Equipment("Magnetic Field", 18),
|
||||
]
|
||||
|
||||
ARMORS = [
|
||||
"Lace|1",
|
||||
"Macrame|2",
|
||||
"Burlap|3",
|
||||
"Canvas|4",
|
||||
"Flannel|5",
|
||||
"Chamois|6",
|
||||
"Pleathers|7",
|
||||
"Leathers|8",
|
||||
"Bearskin|9",
|
||||
"Ringmail|10",
|
||||
"Scale Mail|12",
|
||||
"Chainmail|14",
|
||||
"Splint Mail|15",
|
||||
"Platemail|16",
|
||||
"ABS|17",
|
||||
"Kevlar|18",
|
||||
"Titanium|19",
|
||||
"Mithril Mail|20",
|
||||
"Diamond Mail|25",
|
||||
"Plasma|30",
|
||||
Equipment("Lace", 1),
|
||||
Equipment("Macrame", 2),
|
||||
Equipment("Burlap", 3),
|
||||
Equipment("Canvas", 4),
|
||||
Equipment("Flannel", 5),
|
||||
Equipment("Chamois", 6),
|
||||
Equipment("Pleathers", 7),
|
||||
Equipment("Leathers", 8),
|
||||
Equipment("Bearskin", 9),
|
||||
Equipment("Ringmail", 10),
|
||||
Equipment("Scale Mail", 12),
|
||||
Equipment("Chainmail", 14),
|
||||
Equipment("Splint Mail", 15),
|
||||
Equipment("Platemail", 16),
|
||||
Equipment("ABS", 17),
|
||||
Equipment("Kevlar", 18),
|
||||
Equipment("Titanium", 19),
|
||||
Equipment("Mithril Mail", 20),
|
||||
Equipment("Diamond Mail", 25),
|
||||
Equipment("Plasma", 30),
|
||||
]
|
||||
|
||||
WEAPONS = [
|
||||
"Stick|0",
|
||||
"Broken Bottle|1",
|
||||
"Shiv|1",
|
||||
"Sprig|1",
|
||||
"Oxgoad|1",
|
||||
"Eelspear|2",
|
||||
"Bowie Knife|2",
|
||||
"Claw Hammer|2",
|
||||
"Handpeen|2",
|
||||
"Andiron|3",
|
||||
"Hatchet|3",
|
||||
"Tomahawk|3",
|
||||
"Hackbarm|3",
|
||||
"Crowbar|4",
|
||||
"Mace|4",
|
||||
"Battleadze|4",
|
||||
"Leafmace|5",
|
||||
"Shortsword|5",
|
||||
"Longiron|5",
|
||||
"Poachard|5",
|
||||
"Baselard|5",
|
||||
"Whinyard|6",
|
||||
"Blunderbuss|6",
|
||||
"Longsword|6",
|
||||
"Crankbow|6",
|
||||
"Blibo|7",
|
||||
"Broadsword|7",
|
||||
"Kreen|7",
|
||||
"Warhammer|7",
|
||||
"Morning Star|8",
|
||||
"Pole-adze|8",
|
||||
"Spontoon|8",
|
||||
"Bastard Sword|9",
|
||||
"Peen-arm|9",
|
||||
"Culverin|10",
|
||||
"Lance|10",
|
||||
"Halberd|11",
|
||||
"Poleax|12",
|
||||
"Bandyclef|15",
|
||||
Equipment("Stick", 0),
|
||||
Equipment("Broken Bottle", 1),
|
||||
Equipment("Shiv", 1),
|
||||
Equipment("Sprig", 1),
|
||||
Equipment("Oxgoad", 1),
|
||||
Equipment("Eelspear", 2),
|
||||
Equipment("Bowie Knife", 2),
|
||||
Equipment("Claw Hammer", 2),
|
||||
Equipment("Handpeen", 2),
|
||||
Equipment("Andiron", 3),
|
||||
Equipment("Hatchet", 3),
|
||||
Equipment("Tomahawk", 3),
|
||||
Equipment("Hackbarm", 3),
|
||||
Equipment("Crowbar", 4),
|
||||
Equipment("Mace", 4),
|
||||
Equipment("Battleadze", 4),
|
||||
Equipment("Leafmace", 5),
|
||||
Equipment("Shortsword", 5),
|
||||
Equipment("Longiron", 5),
|
||||
Equipment("Poachard", 5),
|
||||
Equipment("Baselard", 5),
|
||||
Equipment("Whinyard", 6),
|
||||
Equipment("Blunderbuss", 6),
|
||||
Equipment("Longsword", 6),
|
||||
Equipment("Crankbow", 6),
|
||||
Equipment("Blibo", 7),
|
||||
Equipment("Broadsword", 7),
|
||||
Equipment("Kreen", 7),
|
||||
Equipment("Warhammer", 7),
|
||||
Equipment("Morning Star", 8),
|
||||
Equipment("Pole-adze", 8),
|
||||
Equipment("Spontoon", 8),
|
||||
Equipment("Bastard Sword", 9),
|
||||
Equipment("Peen-arm", 9),
|
||||
Equipment("Culverin", 10),
|
||||
Equipment("Lance", 10),
|
||||
Equipment("Halberd", 11),
|
||||
Equipment("Poleax", 12),
|
||||
Equipment("Bandyclef", 15),
|
||||
]
|
||||
|
||||
SPECIALS = [
|
||||
@@ -383,346 +419,306 @@ BORING_ITEMS = [
|
||||
"writ",
|
||||
]
|
||||
|
||||
|
||||
@dataclass
|
||||
class Monster:
|
||||
name: str
|
||||
level: int
|
||||
item: T.Optional[str]
|
||||
|
||||
|
||||
MONSTERS = [
|
||||
"Anhkheg|6|chitin",
|
||||
"Ant|0|antenna",
|
||||
"Ape|4|ass",
|
||||
"Baluchitherium|14|ear",
|
||||
"Beholder|10|eyestalk",
|
||||
"Black Pudding|10|saliva",
|
||||
"Blink Dog|4|eyelid",
|
||||
"Cub Scout|1|neckerchief",
|
||||
"Girl Scout|2|cookie",
|
||||
"Boy Scout|3|merit badge",
|
||||
"Eagle Scout|4|merit badge",
|
||||
"Bugbear|3|skin",
|
||||
"Bugboar|3|tusk",
|
||||
"Boogie|3|slime",
|
||||
"Camel|2|hump",
|
||||
"Carrion Crawler|3|egg",
|
||||
"Catoblepas|6|neck",
|
||||
"Centaur|4|rib",
|
||||
"Centipede|0|leg",
|
||||
"Cockatrice|5|wattle",
|
||||
"Couatl|9|wing",
|
||||
"Crayfish|0|antenna",
|
||||
"Demogorgon|53|tentacle",
|
||||
"Jubilex|17|gel",
|
||||
"Manes|1|tooth",
|
||||
"Orcus|27|wand",
|
||||
"Succubus|6|bra",
|
||||
"Vrock|8|neck",
|
||||
"Hezrou|9|leg",
|
||||
"Glabrezu|10|collar",
|
||||
"Nalfeshnee|11|tusk",
|
||||
"Marilith|7|arm",
|
||||
"Balor|8|whip",
|
||||
"Yeenoghu|25|flail",
|
||||
"Asmodeus|52|leathers",
|
||||
"Baalzebul|43|pants",
|
||||
"Barbed Devil|8|flame",
|
||||
"Bone Devil|9|hook",
|
||||
"Dispater|30|matches",
|
||||
"Erinyes|6|thong",
|
||||
"Geryon|30|cornucopia",
|
||||
"Malebranche|5|fork",
|
||||
"Ice Devil|11|snow",
|
||||
"Lemure|3|blob",
|
||||
"Pit Fiend|13|seed",
|
||||
"Ankylosaurus|9|tail",
|
||||
"Brontosaurus|30|brain",
|
||||
"Diplodocus|24|fin",
|
||||
"Elasmosaurus|15|neck",
|
||||
"Gorgosaurus|13|arm",
|
||||
"Iguanadon|6|thumb",
|
||||
"Megalosaurus|12|jaw",
|
||||
"Monoclonius|8|horn",
|
||||
"Pentasaurus|12|head",
|
||||
"Stegosaurus|18|plate",
|
||||
"Triceratops|16|horn",
|
||||
"Tyranosauraus Rex|18|forearm",
|
||||
"Djinn|7|lamp",
|
||||
"Doppleganger|4|face",
|
||||
"Black Dragon|7|*",
|
||||
"Plaid Dragon|7|sporrin",
|
||||
"Blue Dragon|9|*",
|
||||
"Beige Dragon|9|*",
|
||||
"Brass Dragon|7|pole",
|
||||
"Tin Dragon|8|*",
|
||||
"Bronze Dragon|9|medal",
|
||||
"Chromatic Dragon|16|scale",
|
||||
"Copper Dragon|8|loafer",
|
||||
"Gold Dragon|8|filling",
|
||||
"Green Dragon|8|*",
|
||||
"Platinum Dragon|21|*",
|
||||
"Red Dragon|10|cocktail",
|
||||
"Silver Dragon|10|*",
|
||||
"White Dragon|6|tooth",
|
||||
"Dragon Turtle|13|shell",
|
||||
"Dryad|2|acorn",
|
||||
"Dwarf|1|drawers",
|
||||
"Eel|2|sashimi",
|
||||
"Efreet|10|cinder",
|
||||
"Sand Elemental|8|glass",
|
||||
"Bacon Elemental|10|bit",
|
||||
"Porn Elemental|12|lube",
|
||||
"Cheese Elemental|14|curd",
|
||||
"Hair Elemental|16|follicle",
|
||||
"Swamp Elf|1|lilypad",
|
||||
"Brown Elf|1|tusk",
|
||||
"Sea Elf|1|jerkin",
|
||||
"Ettin|10|fur",
|
||||
"Frog|0|leg",
|
||||
"Violet Fungi|3|spore",
|
||||
"Gargoyle|4|gravel",
|
||||
"Gelatinous Cube|4|jam",
|
||||
"Ghast|4|vomit",
|
||||
"Ghost|10|*",
|
||||
"Ghoul|2|muscle",
|
||||
"Humidity Giant|12|drops",
|
||||
"Beef Giant|11|steak",
|
||||
"Quartz Giant|10|crystal",
|
||||
"Porcelain Giant|9|fixture",
|
||||
"Rice Giant|8|grain",
|
||||
"Cloud Giant|12|condensation",
|
||||
"Fire Giant|11|cigarettes",
|
||||
"Frost Giant|10|snowman",
|
||||
"Hill Giant|8|corpse",
|
||||
"Stone Giant|9|hatchling",
|
||||
"Storm Giant|15|barometer",
|
||||
"Mini Giant|4|pompadour",
|
||||
"Gnoll|2|collar",
|
||||
"Gnome|1|hat",
|
||||
"Goblin|1|ear",
|
||||
"Grid Bug|1|carapace",
|
||||
"Jellyrock|9|seedling",
|
||||
"Beer Golem|15|foam",
|
||||
"Oxygen Golem|17|platelet",
|
||||
"Cardboard Golem|14|recycling",
|
||||
"Rubber Golem|16|ball",
|
||||
"Leather Golem|15|fob",
|
||||
"Gorgon|8|testicle",
|
||||
"Gray Ooze|3|gravy",
|
||||
"Green Slime|2|sample",
|
||||
"Griffon|7|nest",
|
||||
"Banshee|7|larynx",
|
||||
"Harpy|3|mascara",
|
||||
"Hell Hound|5|tongue",
|
||||
"Hippocampus|4|mane",
|
||||
"Hippogriff|3|egg",
|
||||
"Hobgoblin|1|patella",
|
||||
"Homonculus|2|fluid",
|
||||
"Hydra|8|gyrum",
|
||||
"Imp|2|tail",
|
||||
"Invisible Stalker|8|*",
|
||||
"Iron Peasant|3|chaff",
|
||||
"Jumpskin|3|shin",
|
||||
"Kobold|1|penis",
|
||||
"Leprechaun|1|wallet",
|
||||
"Leucrotta|6|hoof",
|
||||
"Lich|11|crown",
|
||||
"Lizard Man|2|tail",
|
||||
"Lurker|10|sac",
|
||||
"Manticore|6|spike",
|
||||
"Mastodon|12|tusk",
|
||||
"Medusa|6|eye",
|
||||
"Multicell|2|dendrite",
|
||||
"Pirate|1|booty",
|
||||
"Berserker|1|shirt",
|
||||
"Caveman|2|club",
|
||||
"Dervish|1|robe",
|
||||
"Merman|1|trident",
|
||||
"Mermaid|1|gills",
|
||||
"Mimic|9|hinge",
|
||||
"Mind Flayer|8|tentacle",
|
||||
"Minotaur|6|map",
|
||||
"Yellow Mold|1|spore",
|
||||
"Morkoth|7|teeth",
|
||||
"Mummy|6|gauze",
|
||||
"Naga|9|rattle",
|
||||
"Nebbish|1|belly",
|
||||
"Neo-Otyugh|11|organ ",
|
||||
"Nixie|1|webbing",
|
||||
"Nymph|3|hanky",
|
||||
"Ochre Jelly|6|nucleus",
|
||||
"Octopus|2|beak",
|
||||
"Ogre|4|talon",
|
||||
"Ogre Mage|5|apparel",
|
||||
"Orc|1|snout",
|
||||
"Otyugh|7|organ",
|
||||
"Owlbear|5|feather",
|
||||
"Pegasus|4|aileron",
|
||||
"Peryton|4|antler",
|
||||
"Piercer|3|tip",
|
||||
"Pixie|1|dust",
|
||||
"Man-o-war|3|tentacle",
|
||||
"Purple Worm|15|dung",
|
||||
"Quasit|3|tail",
|
||||
"Rakshasa|7|pajamas",
|
||||
"Rat|0|tail",
|
||||
"Remorhaz|11|protrusion",
|
||||
"Roc|18|wing",
|
||||
"Roper|11|twine",
|
||||
"Rot Grub|1|eggsac",
|
||||
"Rust Monster|5|shavings",
|
||||
"Satyr|5|hoof",
|
||||
"Sea Hag|3|wart",
|
||||
"Silkie|3|fur",
|
||||
"Shadow|3|silhouette",
|
||||
"Shambling Mound|10|mulch",
|
||||
"Shedu|9|hoof",
|
||||
"Shrieker|3|stalk",
|
||||
"Skeleton|1|clavicle",
|
||||
"Spectre|7|vestige",
|
||||
"Sphinx|10|paw",
|
||||
"Spider|0|web",
|
||||
"Sprite|1|can",
|
||||
"Stirge|1|proboscis",
|
||||
"Stun Bear|5|tooth",
|
||||
"Stun Worm|2|trode",
|
||||
"Su-monster|5|tail",
|
||||
"Sylph|3|thigh",
|
||||
"Titan|20|sandal",
|
||||
"Trapper|12|shag",
|
||||
"Treant|10|acorn",
|
||||
"Triton|3|scale",
|
||||
"Troglodyte|2|tail",
|
||||
"Troll|6|hide",
|
||||
"Umber Hulk|8|claw",
|
||||
"Unicorn|4|blood",
|
||||
"Vampire|8|pancreas",
|
||||
"Wight|4|lung",
|
||||
"Will-o'-the-Wisp|9|wisp",
|
||||
"Wraith|5|finger",
|
||||
"Wyvern|7|wing",
|
||||
"Xorn|7|jaw",
|
||||
"Yeti|4|fur",
|
||||
"Zombie|2|forehead",
|
||||
"Wasp|0|stinger",
|
||||
"Rat|1|tail",
|
||||
"Bunny|0|ear",
|
||||
"Moth|0|dust",
|
||||
"Beagle|0|collar",
|
||||
"Midge|0|corpse",
|
||||
"Ostrich|1|beak",
|
||||
"Billy Goat|1|beard",
|
||||
"Bat|1|wing",
|
||||
"Koala|2|heart",
|
||||
"Wolf|2|paw",
|
||||
"Whippet|2|collar",
|
||||
"Uruk|2|boot",
|
||||
"Poroid|4|node",
|
||||
"Moakum|8|frenum",
|
||||
"Fly|0|*",
|
||||
"Hogbird|3|curl",
|
||||
"Wolog|4|lemma",
|
||||
]
|
||||
|
||||
MON_MODS = [
|
||||
"-4 fœtal *",
|
||||
"-4 dying *",
|
||||
"-3 crippled *",
|
||||
"-3 baby *",
|
||||
"-2 adolescent *",
|
||||
"-2 very sick *",
|
||||
"-1 lesser *",
|
||||
"-1 undernourished *",
|
||||
"+1 greater *",
|
||||
"+1 * Elder",
|
||||
"+2 war *",
|
||||
"+2 Battle-*",
|
||||
"+3 Were-*",
|
||||
"+3 undead *",
|
||||
"+4 giant *",
|
||||
"+4 * Rex",
|
||||
]
|
||||
|
||||
OFFENSE_BAD = [
|
||||
"Dull|-2",
|
||||
"Tarnished|-1",
|
||||
"Rusty|-3",
|
||||
"Padded|-5",
|
||||
"Bent|-4",
|
||||
"Mini|-4",
|
||||
"Rubber|-6",
|
||||
"Nerf|-7",
|
||||
"Unbalanced|-2",
|
||||
]
|
||||
|
||||
DEFENSE_BAD = [
|
||||
"Holey|-1",
|
||||
"Patched|-1",
|
||||
"Threadbare|-2",
|
||||
"Faded|-1",
|
||||
"Rusty|-3",
|
||||
"Motheaten|-3",
|
||||
"Mildewed|-2",
|
||||
"Torn|-3",
|
||||
"Dented|-3",
|
||||
"Cursed|-5",
|
||||
"Plastic|-4",
|
||||
"Cracked|-4",
|
||||
"Warped|-3",
|
||||
"Corroded|-3",
|
||||
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[Stat]
|
||||
attr: T.List[StatType]
|
||||
|
||||
|
||||
RACES = [
|
||||
Race("Half Orc", [Stat.hp_max]),
|
||||
Race("Half Man", [Stat.charisma]),
|
||||
Race("Half Halfling", [Stat.dexterity]),
|
||||
Race("Double Hobbit", [Stat.strength]),
|
||||
Race("Hob-Hobbit", [Stat.dexterity, Stat.condition]),
|
||||
Race("Low Elf", [Stat.condition]),
|
||||
Race("Dung Elf", [Stat.wisdom]),
|
||||
Race("Talking Pony", [Stat.mp_max, Stat.intelligence]),
|
||||
Race("Gyrognome", [Stat.dexterity]),
|
||||
Race("Lesser Dwarf", [Stat.condition]),
|
||||
Race("Crested Dwarf", [Stat.charisma]),
|
||||
Race("Eel Man", [Stat.dexterity]),
|
||||
Race("Panda Man", [Stat.condition, Stat.strength]),
|
||||
Race("Trans-Kobold", [Stat.wisdom]),
|
||||
Race("Enchanted Motorcycle", [Stat.mp_max]),
|
||||
Race("Will o' the Wisp", [Stat.wisdom]),
|
||||
Race("Battle-Finch", [Stat.dexterity, Stat.intelligence]),
|
||||
Race("Double Wookiee", [Stat.strength]),
|
||||
Race("Skraeling", [Stat.wisdom]),
|
||||
Race("Demicanadian", [Stat.condition]),
|
||||
Race("Land Squid", [Stat.strength, Stat.hp_max]),
|
||||
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[Stat]
|
||||
attr: T.List[StatType]
|
||||
|
||||
|
||||
CLASSES = [
|
||||
Class("Ur-Paladin", [Stat.wisdom, Stat.condition]),
|
||||
Class("Voodoo Princess", [Stat.intelligence, Stat.charisma]),
|
||||
Class("Robot Monk", [Stat.strength]),
|
||||
Class("Mu-Fu Monk", [Stat.dexterity]),
|
||||
Class("Mage Illusioner", [Stat.intelligence, Stat.mp_max]),
|
||||
Class("Shiv-Knight", [Stat.dexterity]),
|
||||
Class("Inner Mason", [Stat.condition]),
|
||||
Class("Fighter/Organist", [Stat.charisma, Stat.strength]),
|
||||
Class("Puma Burgular", [Stat.dexterity]),
|
||||
Class("Runeloremaster", [Stat.wisdom]),
|
||||
Class("Hunter Strangler", [Stat.dexterity, Stat.intelligence]),
|
||||
Class("Battle-Felon", [Stat.strength]),
|
||||
Class("Tickle-Mimic", [Stat.wisdom, Stat.intelligence]),
|
||||
Class("Slow Poisoner", [Stat.condition]),
|
||||
Class("Bastard Lunatic", [Stat.condition]),
|
||||
Class("Lowling", [Stat.wisdom]),
|
||||
Class("Birdrider", [Stat.wisdom]),
|
||||
Class("Vermineer", [Stat.intelligence]),
|
||||
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 = [
|
||||
|
||||
Reference in New Issue
Block a user