generate dungeons and their monster occupants
Project description
generate monster encounters and look up stats
Credit for JSON monsters goes mainly to:
https://www.reddit.com/r/dndnext/comments/43a09o/srd_monsters_in_json_format/
I added tags, but all the monster data is otherwise from there, created by reddit user droiddruid.
Installation
From the project root directory:
$ python setup.py install
Or from pip:
$ pip install dankdungeon
Usage
Use –help/-h to view info on the arguments:
$ dankdungeon -h usage: dankdungeon [-h] {monster,encounter,threshold} ... positional arguments: {monster,encounter,threshold} optional arguments: -h, --help show this help message and exit
Show monster stats:
$ dankdungeon monster -h usage: dankdungeon monster [-h] [--short] name positional arguments: name select a monster by name optional arguments: -h, --help show this help message and exit --short, -s print short stats
Generate encounters:
$ dankdungeon encounter -h usage: dankdungeon encounter [-h] [--players PLAYERS] [--difficulty {easy,medium,hard,deadly}] [--and AND_TAGS] [--or OR_TAGS] [--not NOT_TAGS] [--custom CUSTOM] [--max-num MAX_NUM] optional arguments: -h, --help show this help message and exit --players PLAYERS, -p PLAYERS the player levels, default 1,1,1,1 --difficulty {easy,medium,hard,deadly}, -d {easy,medium,hard,deadly} --and AND_TAGS, -A AND_TAGS require monsters have all of these, eg: underdark,undercommon_lang --or OR_TAGS, -O OR_TAGS only include monsters with one or more, eg: dragon,reptile --not NOT_TAGS, -N NOT_TAGS exclude monsters with one of these, eg: undead,fire --custom CUSTOM, -c CUSTOM specify custom set of monsters with name=xp notation, eg. elfmage=500,treeperson=1500,goblin,goblinmage=200 --max-num MAX_NUM, -m MAX_NUM for custom encounters, the maximum number of one type,eg. "--max-num 5" if you only want up to 5 of each type, default: 10
Check player level XP thresholds:
$ dankdungeon threshold -h usage: dankdungeon threshold [-h] [--players PLAYERS] optional arguments: -h, --help show this help message and exit --players PLAYERS, -p PLAYERS the player levels, default 1,1,1,1
Show stats for a creature (fuzzy search on name):
$ dankdungeon monster gobl Goblin Name: Goblin Xp: 50 Type: humanoid Subtype: goblinoid Alignment: neutral evil Size: Small Speed: 30 ft. Senses: darkvision 60 ft., passive Perception 9 Strength: 8 Dexterity: 14 Constitution: 10 Intelligence: 10 Wisdom: 8 Charisma: 8 Tags: darkvision, evil, cave, plains, goblin_lang, cavevision, common_lang, swamp, jungle, desert, mountain, walk, city, forest, tundra, goblin, humanoid Related monsters: Goblin, Hobgoblin, Bugbear, Orc, Kobold, Werewolf, Wererat, Wereboar, Worg, Oni Actions: Scimitar Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) slashing damage. Shortbow Ranged Weapon Attack: +4 to hit, range 80/320 ft., one target. Hit: 5 (1d6 + 2) piercing damage. Special Abilities: Nimble Escape The goblin can take the Disengage or Hide action as a bonus action on each of its turns.
Or for abbreviated output for making notes for combat:
$ dankdungeon monster 'goblin' -s Goblin (humanoid goblinoid) CR:1/4 XP:50 AC:15 HP:7 (2d6) S:8 D:14 C:10 I:10 W:8 CH:8 Size: Small Speed: 30 ft. Senses: darkvision 60 ft., passive Perception 9 Langs: Common, Goblin Action "Scimitar": Melee Weapon Attack: +4 to hit, reach 5 ft., one target. Hit: 5 (1d6 + 2) slashing damage. Action "Shortbow": Ranged Weapon Attack: +4 to hit, range 80/320 ft., one target. Hit: 5 (1d6 + 2) piercing damage. Ability "Nimble Escape": The goblin can take the Disengage or Hide action as a bonus action on each of its turns. $ dankdungeon monster 'wraith' -s Wraith (undead) CR:5 XP:1800 AC:13 HP:67 (9d8) S:6 D:16 C:16 I:12 W:14 CH:15 Size: Medium Speed: 0 ft., fly 60 ft. (hover) Senses: darkvision 60 ft., passive Perception 12 Immune: necrotic, poison Cond.Immune: charmed, exhaustion, grappled, paralyzed, petrified, poisoned, prone, restrained Resist: acid, cold, fire, lightning, thunder; bludgeoning, piercing, and slashing from nonmagical weapons that aren't silvered Langs: the languages it knew in life Action "Life Drain": Melee Weapon Attack: +6 to hit, reach 5 ft., one creature. Hit: 21 (4d8 + 3) necrotic damage. The target must succeed on a DC 14 Constitution saving throw or its hit point maximum is reduced by an amount equal to the damage taken. This reduction lasts until the target finishes a long rest. The target dies if this effect reduces its hit point maximum to 0. Action "Create Specter": The wraith targets a humanoid within 10 feet of it that has been dead for no longer than 1 minute and died violently. The target's spirit rises as a specter in the space of its corpse or in the nearest unoccupied space. The specter is under the wraith's control. The wraith can have no more than seven specters under its control at one time. Ability "Incorporeal Movement": The wraith can move through other creatures and objects as if they were difficult terrain. It takes 5 (1d10) force damage if it ends its turn inside an object. Ability "Sunlight Sensitivity": While in sunlight, the wraith has disadvantage on attack rolls, as well as on Wisdom (Perception) checks that rely on sight.
Easily calculate the XP threshold requirements for players:
$ dankdungeon threshold -p 4,4,3,3 Easy: 400 to 799 Medium: 800 to 1199 Hard: 1200 to 1799 Deadly: 1800+
And generate encounters according to player levels!
Just a medium encounter with 4 players of level 1, showing abbreviated stats for each monster type:
$ dankdungeon encounter found 138 possible monsters trying to build with types: Giant Wolf Spider, Spider, Giant Spider, Swarm of Spiders, Scorpion, Stirge iterating through 1000000 possible encounter permutations... 198 of those match allowed XP values XP=300.0 (200 <= xp <= 300): - 5 Spider - 2 Scorpion - 2 Stirge Spider (beast) CR:0 XP:10 AC:12 HP:1 (1d4) S:2 D:14 C:8 I:1 W:10 CH:2 Size: Tiny Speed: 20 ft., climb 20 ft. Senses: darkvision 30 ft., passive Perception 12 Action "Bite": Melee Weapon Attack: +4 to hit, reach 5 ft., one creature. Hit: 1 piercing damage, and the target must succeed on a DC 9 Constitution saving throw or take 2 (1d4) poison damage. Ability "Spider Climb": The spider can climb difficult surfaces, including upside down on ceilings, without needing to make an ability check. Ability "Web Sense": While in contact with a web, the spider knows the exact location of any other creature in contact with the same web. Ability "Web Walker": The spider ignores movement restrictions caused by webbing. Scorpion (beast) CR:0 XP:10 AC:11 HP:1 (1d4) S:2 D:11 C:8 I:1 W:8 CH:2 Size: Tiny Speed: 10 ft. Senses: blindsight 10 ft., passive Perception 9 Action "Sting": Melee Weapon Attack: +2 to hit, reach 5 ft., one creature. Hit: 1 piercing damage, and the target must make a DC 9 Constitution saving throw, taking 4 (1d8) poison damage on a failed save, or half as much damage on a successful one. Stirge (beast) CR:1/8 XP:25 AC:14 HP:2 (1d4) S:4 D:16 C:11 I:2 W:8 CH:6 Size: Tiny Speed: 10 ft., fly 40 ft. Senses: darkvision 60 ft., passive Perception 9 Action "Blood Drain": Melee Weapon Attack: +5 to hit, reach 5 ft., one creature. Hit: 5 (1d4 + 3) piercing damage, and the stirge attaches to the target. While attached, the stirge doesn't attack. Instead, at the start of each of the stirge's turns, the target loses 5 (1d4 + 3) hit points due to blood loss. The stirge can detach itself by spending 5 feet of its movement. It does so after it drains 10 hit points of blood from the target or the target dies. A creature, including the target, can use its action to detach the stirge.
Players of levels 2, 2, 2 and 3:
$ dankdungeon encounter -p 2,2,2,3 found 181 possible monsters trying to build with types: Griffon, Hippogriff, Harpy, Darkmantle, Cockatrice, Worg iterating through 1000000 possible encounter permutations... 20 of those match allowed XP values XP=600.0 (450 <= xp <= 675): - 1 Hippogriff - 1 Harpy Hippogriff (monstrosity) CR:1 XP:200 AC:11 HP:19 (3d10) ... Harpy (monstrosity) CR:1 XP:200 AC:11 HP:38 (7d8) ...
Restrict it to these monsters. -c or –custom will allow you to specify named types or custom monsters with XP values, eg. –custom wolf,wolfman=200 . This just uses standard wolf and direwolf:
$ dankdungeon encounter -p 4,3,3,1 -c 'dire wolf,wolf' iterating through 100 possible encounter permutations... 8 of those match allowed XP values XP=600.0 (600 <= xp <= 900): - 2 Dire Wolf (xp=200) $ dankdungeon encounter -p 4,3,3,1 -c 'dire wolf,wolf' iterating through 100 possible encounter permutations... 8 of those match allowed XP values XP=800.0 (600 <= xp <= 900): - 1 Dire Wolf (xp=200) - 4 Wolf (xp=50)
Restrict it to only undead, hard difficulty, for 3 player 3’s:
$ dankdungeon encounter -p 3,3,3 -d hard -A undead found 13 possible monsters trying to build with types: Zombie, Shadow, Wight, Warhorse Skeleton, Specter, Ogre Zombie iterating through 1000000 possible encounter permutations... 130 of those match allowed XP values XP=1200.0 (675 <= xp <= 1200): - 2 Zombie - 1 Shadow - 2 Warhorse Skeleton - 1 Specter ... stats ...
Deadly encounter for four 5th level players, the evil dead:
$ dankdungeon encounter -p 5,5,5,5 -d deadly -A evil,undead found 14 possible monsters trying to build with types: Vampire Spawn, Zombie, Wraith, Shadow, Wight, Warhorse Skeleton iterating through 1000000 possible encounter permutations... 1205 of those match allowed XP values XP=4750.0 (4400 <= xp <= 6500): - 2 Zombie - 4 Shadow - 2 Wight
Deadly with hellish (found in lower planes) or cave beasts:
$ dankdungeon encounter -p 5,5,5,5 -d deadly -O cave,underdark,hell found 141 possible monsters trying to build with types: Vrock, Succubus/Incubus, Hezrou, Glabrezu, Dretch, Nightmare iterating through 1000000 possible encounter permutations... 46 of those match allowed XP values XP=4500.0 (4400 <= xp <= 6500): - 3 Dretch - 3 Nightmare
Mummies are tagged with “desert” because it makes sense to find them there, and werewolf might be tagged “cave” as well as “forest”. These are just rough guesses at where it might make sense to see some monsters, with these location tags: plains, tundra, desert, mountain, forest, swamp, jungle, cave, underdark, city, ruins:
$ dankdungeon encounter -p 10,8,10,9 -d deadly -A tundra,evil found 46 possible monsters trying to build with types: Spirit Naga, Oni, Minotaur, Chimera, Winter Wolf, Rakshasa iterating through 1000000 possible encounter permutations... 93 of those match allowed XP values XP=14800.0 (10100 <= xp <= 15050): - 1 Minotaur - 2 Chimera - 3 Winter Wolf
2 bone devils will be just deadly enough for this group… good boss fight possibly:
$ dankdungeon encounter -p 10,8,10,9 -d deadly -O hell found 24 possible monsters trying to build with types: Barbed Devil, Ice Devil, Horned Devil, Erinyes, Chain Devil, Bone Devil iterating through 1000000 possible encounter permutations... 9 of those match allowed XP values XP=15000.0 (10100 <= xp <= 15050): - 2 Bone Devil
And if you want custom monsters with personally known XP values, use the –custom flag:
$ dankdungeon encounter -c 'mushroomer=250,mushroomer pet dog=100,mushroomer mage=600,violet fung,bugbear' -p 8,8,8 -d hard iterating through 100000 possible encounter permutations... 2538 of those match allowed XP values XP=5100.0 (4200 <= xp <= 6300): - 4 mushroomer (xp=250) - 5 mushroomer pet dog (xp=100) - 4 Violet Fungus (xp=50) $ dankdungeon encounter -c 'mushroomer=250,mushroomer pet dog=100,mushroomer mage=600,violet fung,bugbear' -p 8,8,8 -d hard iterating through 100000 possible encounter permutations... 2538 of those match allowed XP values XP=5550.0 (4200 <= xp <= 6300): - 1 mushroomer (xp=250) - 9 mushroomer pet dog (xp=100) - 1 mushroomer mage (xp=600) - 2 Violet Fungus (xp=50) $ dankdungeon encounter -c 'mushroomer=250,mushroomer pet dog=100,mushroomer mage=600,violet fung,bugbear' -p 8,8,8 -d hard iterating through 100000 possible encounter permutations... 2538 of those match allowed XP values XP=4950.0 (4200 <= xp <= 6300): - 2 mushroomer pet dog (xp=100) - 5 Violet Fungus (xp=50) - 6 Bugbear (xp=200)
The following monsters have been incorporated from the Standard Reference Document:
Aboleth Acolyte Adult Black Dragon Adult Blue Dracolich Adult Blue Dragon Adult Brass Dragon Adult Bronze Dragon Adult Copper Dragon Adult Gold Dragon Adult Green Dragon Adult Red Dragon Adult Silver Dragon Adult White Dragon Air Elemental Ancient Black Dragon Ancient Blue Dragon Ancient Brass Dragon Ancient Bronze Dragon Ancient Copper Dragon Ancient Gold Dragon Ancient Green Dragon Ancient Red Dragon Ancient Silver Dragon Ancient White Dragon Androsphinx Animated Armor Ankheg Ape Archmage Assassin Awakened Shrub Awakened Tree Axe Beak Azer Baboon Badger Balor Bandit Bandit Captain Barbed Devil Basilisk Bat Bearded Devil Behir Berserker Black Bear Black Dragon Wyrmling Black Pudding Blink Dog Blood Hawk Blue Dragon Wyrmling Boar Bone Devil Brass Dragon Wyrmling Bronze Dragon Wyrmling Brown Bear Bugbear Bulette Camel Carrion Crawler Cat Cave Bear Centaur Chain Devil Chimera Chuul Clay Golem Cloaker Cloud Giant Cockatrice Commoner Constrictor Snake Copper Dragon Wyrmling Couatl Crab Crocodile Cult Fanatic Cultist Darkmantle Death Dog Deep Gnome (Svirfneblin) Deer Deva Dire Wolf Djinni Doppelganger Draft Horse Dragon Turtle Dretch Drider Drow Druid Dryad Duergar Dust Mephit Eagle Earth Elemental Efreeti Elephant Elk Erinyes Ettercap Ettin Fire Elemental Fire Giant Flesh Golem Flying Snake Flying Sword Frog Frost Giant Gargoyle Gelatinous Cube Ghast Ghost Ghoul Giant Ape Giant Badger Giant Bat Giant Boar Giant Centipede Giant Constrictor Snake Giant Crab Giant Crocodile Giant Eagle Giant Elk Giant Fire Beetle Giant Frog Giant Goat Giant Hyena Giant Lizard Giant Octopus Giant Owl Giant Poisonous Snake Giant Rat Giant Rat (Diseased) Giant Scorpion Giant Sea Horse Giant Shark Giant Spider Giant Toad Giant Vulture Giant Wasp Giant Weasel Giant Wolf Spider Gibbering Mouther Glabrezu Gladiator Gnoll Goat Goblin Gold Dragon Wyrmling Gorgon Gray Ooze Green Dragon Wyrmling Green Hag Grick Griffon Grimlock Guard Guardian Naga Gynosphinx Half-Red Dragon Veteran Harpy Hawk Hell Hound Hezrou Hill Giant Hippogriff Hobgoblin Homunculus Horned Devil Hunter Shark Hydra Hyena Ice Devil Ice Mephit Imp Invisible Stalker Iron Golem Jackal Killer Whale Knight Kobold Kraken Lamia Lemure Lich Lion Lizard Lizardfolk Mage Magma Mephit Magmin Mammoth Manticore Marilith Mastiff Medusa Merfolk Merrow Mimic Minotaur Minotaur Skeleton Mule Mummy Mummy Lord Nalfeshnee Night Hag Nightmare Noble Ochre Jelly Octopus Ogre Ogre Zombie Oni Orc Otyugh Owl Owlbear Panther Pegasus Phase Spider Pit Fiend Planetar Plesiosaurus Poisonous Snake Polar Bear Pony Priest Pseudodragon Purple Worm Quasit Quipper Rakshasa Rat Raven Red Dragon Wyrmling Reef Shark Remorhaz Rhinoceros Riding Horse Roc Roper Rug of Smothering Rust Monster Saber-Toothed Tiger Sahuagin Salamander Satyr Scorpion Scout Sea Hag Sea Horse Shadow Shambling Mound Shield Guardian Shrieker Silver Dragon Wyrmling Skeleton Solar Specter Spider Spirit Naga Sprite Spy Steam Mephit Stirge Stone Giant Stone Golem Storm Giant Succubus/Incubus Swarm of Bats Swarm of Beetles Swarm of Centipedes Swarm of Insects Swarm of Poisonous Snakes Swarm of Quippers Swarm of Rats Swarm of Ravens Swarm of Spiders Swarm of Wasps Tarrasque Thug Tiger Treant Tribal Warrior Triceratops Troll Tyrannosaurus Rex Unicorn Vampire Vampire Spawn Veteran Violet Fungus Vrock Vulture Warhorse Warhorse Skeleton Water Elemental Weasel Werebear Wereboar Wererat Weretiger Werewolf White Dragon Wyrmling Wight Will-o'-Wisp Winter Wolf Wolf Worg Wraith Wyvern Xorn Young Black Dragon Young Blue Dragon Young Brass Dragon Young Bronze Dragon Young Copper Dragon Young Gold Dragon Young Green Dragon Young Red Dragon Young Silver Dragon Young White Dragon Zombie
Release Notes
- 0.2.1:
Took out python-Levenshtein as a hard requirement. Pip install it if you want slightly faster fuzzy search.
- 0.2.0:
Instead of calculating everything at runtime, I cached it and saved new json files… runs way quicker!
- 0.1.2:
Fixed include for monster json
- 0.1.1:
Ready for consumption
- 0.0.1:
Project created
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file dankdungeon-0.2.2.tar.gz
.
File metadata
- Download URL: dankdungeon-0.2.2.tar.gz
- Upload date:
- Size: 198.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6579c6dc3d326061e25d119dd083c2e1746a83209b8786bdb640ccb6ff64c8b6 |
|
MD5 | 18d4f7b2f7cf10b5529b8b4d847e6391 |
|
BLAKE2b-256 | add1021b8e38e7d00ebe79a6ba47b2764f90c22c040d9ab57f3912e58a239198 |