Shadowdark: Stocking A Dungeon Example

Just wanted to add that every time I see this thread title in the forum list, I read it as "Shadowdark: a Shocking Dungeon Example."
The players definitely thought the sci-fi dungeon was shocking.
The Breakfast Club Reaction GIF
 

log in or register to remove this ad


Granted I have not seen the 5E tables, but my preference is to start from the stocking tables from B/X and AD&D. Monsters by "dungeon level" followed by monsters by biome. That said, I do like how 5E simplified the biomes overall, so you can keep it down to a more manageable number of tables.
Yep. The olde 1e AD&D tables was the inspiration for how the tables are set up in the publication, just using the 5e monsters and encounters. I’ll try to post a link to it later.
 

Yep. The olde 1e AD&D tables was the inspiration for how the tables are set up in the publication, just using the 5e monsters and encounters. I’ll try to post a link to it later.
Well then that's immediately of interest! Didn't realize that.

And indeed should make a SD conversion relatively easier, as the monster list is a lot closer than AD&D's list.
 


A small update - just in case anyone was interested.

I have created a dungeon stocking generator that runs in Python and stocks a dungeon based on Shadowdark dungeon stocking tables. Actually, I have used Shadowdark tables, imported them into YAML file, and used ChatGPT to generate necessary scripts.

The files:
(see attached py.zip)
test.md - a text file of a test dungeon - markdown format
test.yml - a text file for potential further processing - yaml format
dungeon_stocking.py - the generator in Python. To run it, you need to install Python, and then install pyyaml module by running "pip install pyyaml"
dungeon_stocking.yml - the Shadowdark dungeon stocking tables definitions

To call the script call it like this for repeatable results:
python dungeon_stocking.py --out-md test.md --out-yaml test.yml --seed 1499496584 --danger-level Unsafe --site-size Large --site-type Ruins dungeon_stocking.yml

Or like this to get fully randomized:
python dungeon_stocking.py --out-md test.md --out-yaml test.yml dungeon_stocking.yml

Trace section is to provide more insight into working of the generator.

Enjoy!

Sample results:
----

Dungeon Stocking​

Site Profile​

  • Danger level: Unsafe
  • Site size: Large (12d10)
  • Site type: Ruins

Rooms​

Room 1 (treasure: Protected by trap; add-on: trap: Ancient, Magical)​

Room 2 (major hazard: Drowning hazard)​

Room 3 (npc: Wounded)​

Room 4 (trap: Sturdy, Mechanical)​

Room 5 (minor hazard: Enfeebling magic)​

Room 6 (empty)​

Room 7 (major hazard: Long fall)​

Room 8 (treasure: Guarded by monster; add-on: solo monster: Sneaky, Spellcaster)​

Room 9 (monster mob: Stealthy, Vermin)​

Room 10 (npc: Hiding)​

Room 11 (npc: Wounded)​

Room 12 (treasure: Guarded by monster; add-on: solo monster: Clever, Pariah)​


----

Dungeon Stocking​

Site Profile​

  • Danger level: Unsafe
  • Site size: Medium (8d10)
  • Site type: Ruins

Rooms​

Room 1 (npc: Hiding)​

Room 2 (npc: Captive)​

Room 3 (empty)​

Room 4 (solo monster: Mighty, Ambusher)​

Room 5 (major hazard: Long fall)​

Room 6 (monster mob: Stealthy, Vermin)​

Room 7 (empty)​

Room 8 (npc: Wounded)​


----

Dungeon Stocking​

Site Profile​

  • Danger level: Unsafe
  • Site size: Large (12d10)
  • Site type: Tomb

Rooms​

Room 1 (solo monster: Clever, Pariah)​

Room 2 (npc: Wounded)​

Room 3 (major hazard: Entrapping terrain)​

Room 4 (monster mob: Magical, Warriors)​

Room 5 (npc: Rival crawlers)​

Room 6 (empty)​

Room 7 (boss_monster: Physically strongest)​

Room 8 (npc: Rival crawlers)​

Room 9 (npc: Captive)​

Room 10 (trap: Large, Magical)​

Room 11 (monster mob: Reckless, Tricksters)​

Room 12 (boss_monster: Supreme sorcerer)​

 

Attachments

Last edited:

Recent & Upcoming Releases

Remove ads

Top