From ttrpg-tables
Generate large-scale random encounter tables (d100 to d1000) for dark fantasy cities. Creates tiered encounters (vignettes, developed, mini-scenes) across six categories (Social, Danger, Mystery, Horror, Environmental, Event) with metadata for filtering (district, time, danger level). Outputs structured Markdown tables. Includes Python script for batch generation via Anthropic API. Use when creating random encounter tables, city event generators, or atmospheric content for urban dark fantasy settings.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ttrpg-tables:random-encounter-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate comprehensive random encounter tables for dark fantasy urban settings. Designed for batch generation of 100-1000 entries with consistent quality and variety.
Generate comprehensive random encounter tables for dark fantasy urban settings. Designed for batch generation of 100-1000 entries with consistent quality and variety.
# [Table Name] - d[Size] Urban Encounters
| d[Size] | Type | District | Time | Danger | Encounter |
|---------|------|----------|------|--------|-----------|
| 1 | Social | Market | Day | None | [Encounter text] |
| 2 | Horror | Slums | Night | Low | [Encounter text] |
Tier 1 - Vignettes (60% of entries)
Tier 2 - Developed (30% of entries)
Tier 3 - Mini-scenes (10% of entries)
| Type | Description | Examples |
|---|---|---|
| Social | Human interaction, commerce, conflict | Merchant dispute, noble procession, beggar's plea |
| Danger | Threats, violence, criminals | Ambush, pickpocket, gang confrontation |
| Mystery | Clues, strange events, secrets | Coded message, disappearance, whispered conspiracy |
| Horror | Dread, corruption, supernatural | Corpse discovery, plague signs, entity manifestation |
| Environmental | Setting, atmosphere, weather | Fog rolling in, building collapse, crowd surge |
| Event | Public occurrences, ceremonies | Execution, festival, riot, procession |
Specify before generation:
For a d100 table, target distribution:
By Tier:
By Type (default):
By Time:
By Danger:
Adjust distributions based on table focus.
Use scripts/generate_encounters.py for batch generation:
python scripts/generate_encounters.py \
--size 100 \
--output encounters.md \
--focus "market district, day encounters" \
--tone "high horror, medium danger"
The script:
For d20-d50 tables, generate directly:
After generation, verify:
Use generic references that GMs can rename:
| Anchor | Represents |
|---|---|
| the Guard | City watch, militia |
| the Temple | Dominant religion |
| the Guild | Relevant trade guild |
| the Court | Noble authority |
| the Syndicate | Organized crime |
| the Order | Religious/military order |
| the Academy | Magical institution |
| the Council | City government |
Never use proper nouns. Write "a guard captain" not "Captain Vorn".
Track across generation batches:
See references/variety-pools.md for:
| 7 | Environmental | Market | Day | None | The smell of burnt sugar drifts from a confectioner's stall where caramelized nuts cool on marble slabs. |
| 23 | Social | Docks | Dawn | None | Two sailors argue in a foreign tongue, gesturing at a crate that's clearly been opened and poorly resealed. |
| 41 | Horror | Slums | Night | Low | A child's laughter echoes from an alley that leads to a dead end. There's no child visible. |
| 12 | Mystery | Noble | Dusk | Low | A servant in House livery approaches, pressing a sealed letter into the nearest PC's hand before vanishing into a side street. The seal bears no sigil—just a thumbprint in red wax. If opened, the letter contains a single phrase: "The third bell. The fountain. Come alone." |
| 67 | Danger | Market | Day | Medium | A pickpocket lifts a merchant's purse, but the merchant's bodyguard spots it. The thief—barely twelve—bolts directly toward the party, pursuers closing. Helping the child makes enemies of the merchant house; ignoring it means watching a child beaten in the street. |
| 88 | Horror | Temple | Night | High |
A procession of hooded figures emerges from the Temple's side entrance, carrying a shrouded body on a bier. The shroud moves. Not breathing—writhing. The figures chant in a language that hurts to hear.
**The Mourners** (6 cultists in Temple robes): AC 12, HP 9, dagger +3 (1d4+1). Won't fight unless attacked or followed into the catacombs. If confronted, claim they're "preparing the blessed for final rest."
**What's Really Happening**: The Temple disposes of failed resurrection attempts—bodies animated but mindless—by drowning them in the sacred well beneath the Necropolis. The "blessed" is a merchant who paid for resurrection but received something worse.
**If Followed**: The catacombs lead to the drowning well. 2d4 additional cultists present. The merchant's family would pay 500gp for proof of what happened to their patriarch.
**If Ignored**: The party hears rumors of "walkers in the deep" over the next week. The well is getting full.
For Tier 3 entries requiring full NPCs, note: "See npc-creator for [role] at Tier [1-3]"
Tier 3 entries can seed scenarios. Flag entries with strong hook potential for expansion.
Reference faction dynamics in Social and Danger entries: "Syndicate enforcers collecting protection" or "Guild inspectors checking permits"
scripts/generate_encounters.py: Batch generation script using Anthropic APIreferences/variety-pools.md: Lists of NPCs, objects, sounds, smells for varietyreferences/encounter-templates.md: Detailed templates and examples for each tier/type combinationLoad references when:
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub camauger/ludomancien-skills --plugin ttrpg-tables