From 48efafe217332b94a023988f609679de25f96614 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Wed, 4 Mar 2026 21:50:13 -0600 Subject: [PATCH] docs: reorganize gaming into per-game directories, add tabletop section Move Ready or Not configs/scripts into gaming/ready-or-not/, Stackmon into gaming/stackmon/, add Palworld client and server docs. Move Vagabond RPG PDFs to new tabletop/ directory with Age of Ashes GM reference. Co-Authored-By: Claude Opus 4.6 --- gaming/CONTEXT.md | 27 +- gaming/palworld/server.md | 66 +++++ gaming/palworld/stl-config.md | 43 +++ .../examples}/1144200-nvidia-1440p.conf | 0 .../examples}/1144200-working.conf | 0 .../examples}/README.md | 0 .../examples}/fix-crash.sh | 0 .../examples}/force-stl-detection.sh | 0 .../examples}/nvidia-environment.conf | 0 .../examples}/setup-ready-or-not.sh | 0 .../examples}/working-baseline-config.md | 0 .../scripts/install-ron-mods.sh | 0 .../scripts/launch-ron-direct.sh | 0 .../ready-or-not-compatibility-test.sh | 0 .../stackmon.md => stackmon/stl-config.md} | 0 ...Vagabond_-_Hero_Record_Interactive_PDF.pdf | Bin .../Vagabond_-_Hero_Record_Print.pdf | Bin ..._Fantasy_Core_Rulebook_Interactive_PDF.pdf | Bin tabletop/age-of-ashes/gm-reference.md | 273 ++++++++++++++++++ 19 files changed, 394 insertions(+), 15 deletions(-) create mode 100644 gaming/palworld/server.md create mode 100644 gaming/palworld/stl-config.md rename gaming/{examples/ready-or-not => ready-or-not/examples}/1144200-nvidia-1440p.conf (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/1144200-working.conf (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/README.md (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/fix-crash.sh (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/force-stl-detection.sh (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/nvidia-environment.conf (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/setup-ready-or-not.sh (100%) rename gaming/{examples/ready-or-not => ready-or-not/examples}/working-baseline-config.md (100%) rename gaming/{ => ready-or-not}/scripts/install-ron-mods.sh (100%) rename gaming/{ => ready-or-not}/scripts/launch-ron-direct.sh (100%) rename gaming/{ => ready-or-not}/scripts/ready-or-not-compatibility-test.sh (100%) rename gaming/{games/stackmon.md => stackmon/stl-config.md} (100%) rename {gaming => tabletop}/Vagabond_-_Hero_Record_Interactive_PDF.pdf (100%) rename {gaming => tabletop}/Vagabond_-_Hero_Record_Print.pdf (100%) rename {gaming => tabletop}/Vagabond_RPG_-_Pulp_Fantasy_Core_Rulebook_Interactive_PDF.pdf (100%) create mode 100644 tabletop/age-of-ashes/gm-reference.md diff --git a/gaming/CONTEXT.md b/gaming/CONTEXT.md index 246b16f..6da575c 100644 --- a/gaming/CONTEXT.md +++ b/gaming/CONTEXT.md @@ -11,12 +11,6 @@ Steam Tinker Launch (STL) provides advanced configuration options for running Wi - **Game Configs**: `~/.config/steamtinkerlaunch/gamecfgs/` - **Global Settings**: `~/.config/steamtinkerlaunch/global.conf` -### Ready or Not Specific -- **Game ID**: 1144200 -- **Engine**: Unreal Engine 4 -- **Anti-Cheat**: EasyAntiCheat (requires `-noeac` for modifications) -- **Common Issues**: Menu freezes, audio crackling, GPU compatibility - ## Hardware - **CPU**: AMD Ryzen 7 7800X3D (8C/16T) @@ -44,20 +38,23 @@ For per-game settings (RT, DLSS, HDR, retro games), see the **steam-game-setup** /gaming/ ├── CONTEXT.md # This file - technology overview ├── troubleshooting.md # Error handling and debugging -├── games/ # Per-game setup notes -│ └── stackmon.md # Stackmon (3729550) -├── examples/ # Working configurations and templates -│ ├── ready-or-not/ # Ready or Not specific configs -│ └── nvidia-optimized/ # NVIDIA-specific game configs -└── scripts/ # Gaming automation scripts - ├── CONTEXT.md # Script-specific documentation - └── steam-helpers/ # Steam and STL helper scripts +├── stl-config-changes.txt # STL config change log +├── palworld/ # Palworld (1623730) +│ ├── stl-config.md # Client STL configuration +│ └── server.md # Dedicated server (LXC 230) +├── ready-or-not/ # Ready or Not (1144200) +│ ├── examples/ # Working configs and setup scripts +│ └── scripts/ # Game-specific scripts +├── stackmon/ # Stackmon (3729550) +│ └── stl-config.md # Client STL configuration +└── scripts/ # General gaming automation scripts + └── CONTEXT.md # Script-specific documentation ``` ## Best Practices ### Configuration Management -- Keep per-game configs in `examples/[game-name]/` +- Keep per-game docs in `gaming//` - Document hardware-specific settings clearly - Test one setting at a time when troubleshooting - Backup working configurations before changes diff --git a/gaming/palworld/server.md b/gaming/palworld/server.md new file mode 100644 index 0000000..7dc90b0 --- /dev/null +++ b/gaming/palworld/server.md @@ -0,0 +1,66 @@ +# Palworld - Dedicated Server + +| Field | Value | +|-------|-------| +| **LXC ID** | 230 | +| **Hostname** | palworld-server | +| **IP** | 10.10.0.230 | +| **Game Port** | 8211 UDP | +| **REST API Port** | 8212 TCP | +| **Server Version** | v0.7.2.87654 | +| **Server App ID** | 2394010 | +| **OS** | Debian 12 (Bookworm) | +| **Resources** | 4 cores, 16 GB RAM, 60 GB disk (local-lvm) | +| **Setup Date** | 2026-03-04 | + +## Credentials + +- **Server Name**: Cal Palworld Server +- **Server Password**: `Big-Chungus-Manti-69` +- **Admin Password**: `palworldadmin2026` + +## Connecting + +In Palworld: **Join Multiplayer Server** → `10.10.0.230:8211` → enter server password when prompted. + +For connections outside LAN, port-forward UDP 8211 on the router to 10.10.0.230. + +## Management + +```bash +# Via Proxmox host +ssh proxmox "pct exec 230 -- systemctl stop palworld" +ssh proxmox "pct exec 230 -- systemctl start palworld" +ssh proxmox "pct exec 230 -- systemctl restart palworld" +ssh proxmox "pct exec 230 -- systemctl status palworld" + +# Update server +ssh proxmox "pct exec 230 -- systemctl stop palworld" +ssh proxmox "pct exec 230 -- su - steam -c ./update-palworld.sh" +ssh proxmox "pct exec 230 -- systemctl start palworld" +``` + +## Key Files + +| File | Purpose | +|------|---------| +| `/home/steam/palworld-server/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini` | Server settings | +| `/home/steam/palworld-server/Pal/Saved/SaveGames/` | World save data | +| `/home/steam/update-palworld.sh` | SteamCMD update script | +| `/etc/systemd/system/palworld.service` | Systemd service | + +## Server Details + +- Unprivileged LXC with nesting, auto-starts on boot +- Runs as `steam` user (never root) +- Launch flags: `-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -players=16` +- REST API enabled for admin tools (port 8212, LAN only) +- Backup saves enabled (`bIsUseBackupSaveData=True`) +- Autosave every 30 seconds (default) +- Running on HDD-backed storage (local-lvm) — fine for small group play + +## Setup Notes + +- SteamCMD requires `+@sSteamCmdForcePlatformType linux` to avoid "Missing configuration" error +- DNS: switched from 8.8.8.8 to local gateway (10.10.0.1) to fix intermittent resolution failures +- SteamCMD experiences frequent "No Connection" disconnects during downloads but recovers and completes diff --git a/gaming/palworld/stl-config.md b/gaming/palworld/stl-config.md new file mode 100644 index 0000000..9d16d5b --- /dev/null +++ b/gaming/palworld/stl-config.md @@ -0,0 +1,43 @@ +# Palworld - STL Configuration + +| Field | Value | +|-------|-------| +| **Steam App ID** | 1623730 | +| **Developer** | Pocketpair | +| **Engine** | Unreal Engine 5 | +| **Graphics API** | DirectX 11 (DX12 available via `-dx12` launch arg) | +| **Status** | Released (Early Access) | +| **Genre** | Open-world survival / creature-collector | +| **STL Profile** | `~/.config/steamtinkerlaunch/gamecfgs/id/1623730.conf` | +| **Customvars** | `~/.config/steamtinkerlaunch/gamecfgs/customvars/1623730.conf` | +| **Setup Date** | 2026-03-03 | + +## Features + +| Feature | Supported | Notes | +|---------|-----------|-------| +| Ray Tracing | No | Mods only, not native | +| DLSS | Yes | DLSS 2, in-game toggle | +| HDR | No | No confirmed native support | + +## Configuration Notes + +- Running in DX11 mode (default) for best Proton stability +- DLSS enabled via STL (`USEDLSS=1`) - toggle quality in-game settings +- NVAPI enabled for proper GPU detection and DLSS +- Using GE-Proton9-25 for best compatibility +- MangoHud should show `API: VK` (DXVK translating DX11) + +## Proton Compatibility + +- ProtonDB: Gold rating, Steam Deck Verified +- Generally works well out of the box +- If issues arise, try Proton Experimental or latest GE-Proton +- Some users report display artifacts with certain Proton versions + +## DX12 Option + +If you want to try DX12 for potentially better FPS: +- Change `GAMEARGS` to include `-dx12` in the STL config +- MangoHud will show `API: VKD3D` instead of `API: VK` +- May need `VKD3D_SHADER_CACHE="1"` in customvars for shader compilation diff --git a/gaming/examples/ready-or-not/1144200-nvidia-1440p.conf b/gaming/ready-or-not/examples/1144200-nvidia-1440p.conf similarity index 100% rename from gaming/examples/ready-or-not/1144200-nvidia-1440p.conf rename to gaming/ready-or-not/examples/1144200-nvidia-1440p.conf diff --git a/gaming/examples/ready-or-not/1144200-working.conf b/gaming/ready-or-not/examples/1144200-working.conf similarity index 100% rename from gaming/examples/ready-or-not/1144200-working.conf rename to gaming/ready-or-not/examples/1144200-working.conf diff --git a/gaming/examples/ready-or-not/README.md b/gaming/ready-or-not/examples/README.md similarity index 100% rename from gaming/examples/ready-or-not/README.md rename to gaming/ready-or-not/examples/README.md diff --git a/gaming/examples/ready-or-not/fix-crash.sh b/gaming/ready-or-not/examples/fix-crash.sh similarity index 100% rename from gaming/examples/ready-or-not/fix-crash.sh rename to gaming/ready-or-not/examples/fix-crash.sh diff --git a/gaming/examples/ready-or-not/force-stl-detection.sh b/gaming/ready-or-not/examples/force-stl-detection.sh similarity index 100% rename from gaming/examples/ready-or-not/force-stl-detection.sh rename to gaming/ready-or-not/examples/force-stl-detection.sh diff --git a/gaming/examples/ready-or-not/nvidia-environment.conf b/gaming/ready-or-not/examples/nvidia-environment.conf similarity index 100% rename from gaming/examples/ready-or-not/nvidia-environment.conf rename to gaming/ready-or-not/examples/nvidia-environment.conf diff --git a/gaming/examples/ready-or-not/setup-ready-or-not.sh b/gaming/ready-or-not/examples/setup-ready-or-not.sh similarity index 100% rename from gaming/examples/ready-or-not/setup-ready-or-not.sh rename to gaming/ready-or-not/examples/setup-ready-or-not.sh diff --git a/gaming/examples/ready-or-not/working-baseline-config.md b/gaming/ready-or-not/examples/working-baseline-config.md similarity index 100% rename from gaming/examples/ready-or-not/working-baseline-config.md rename to gaming/ready-or-not/examples/working-baseline-config.md diff --git a/gaming/scripts/install-ron-mods.sh b/gaming/ready-or-not/scripts/install-ron-mods.sh similarity index 100% rename from gaming/scripts/install-ron-mods.sh rename to gaming/ready-or-not/scripts/install-ron-mods.sh diff --git a/gaming/scripts/launch-ron-direct.sh b/gaming/ready-or-not/scripts/launch-ron-direct.sh similarity index 100% rename from gaming/scripts/launch-ron-direct.sh rename to gaming/ready-or-not/scripts/launch-ron-direct.sh diff --git a/gaming/scripts/ready-or-not-compatibility-test.sh b/gaming/ready-or-not/scripts/ready-or-not-compatibility-test.sh similarity index 100% rename from gaming/scripts/ready-or-not-compatibility-test.sh rename to gaming/ready-or-not/scripts/ready-or-not-compatibility-test.sh diff --git a/gaming/games/stackmon.md b/gaming/stackmon/stl-config.md similarity index 100% rename from gaming/games/stackmon.md rename to gaming/stackmon/stl-config.md diff --git a/gaming/Vagabond_-_Hero_Record_Interactive_PDF.pdf b/tabletop/Vagabond_-_Hero_Record_Interactive_PDF.pdf similarity index 100% rename from gaming/Vagabond_-_Hero_Record_Interactive_PDF.pdf rename to tabletop/Vagabond_-_Hero_Record_Interactive_PDF.pdf diff --git a/gaming/Vagabond_-_Hero_Record_Print.pdf b/tabletop/Vagabond_-_Hero_Record_Print.pdf similarity index 100% rename from gaming/Vagabond_-_Hero_Record_Print.pdf rename to tabletop/Vagabond_-_Hero_Record_Print.pdf diff --git a/gaming/Vagabond_RPG_-_Pulp_Fantasy_Core_Rulebook_Interactive_PDF.pdf b/tabletop/Vagabond_RPG_-_Pulp_Fantasy_Core_Rulebook_Interactive_PDF.pdf similarity index 100% rename from gaming/Vagabond_RPG_-_Pulp_Fantasy_Core_Rulebook_Interactive_PDF.pdf rename to tabletop/Vagabond_RPG_-_Pulp_Fantasy_Core_Rulebook_Interactive_PDF.pdf diff --git a/tabletop/age-of-ashes/gm-reference.md b/tabletop/age-of-ashes/gm-reference.md new file mode 100644 index 0000000..27e4330 --- /dev/null +++ b/tabletop/age-of-ashes/gm-reference.md @@ -0,0 +1,273 @@ +# Age of Ashes: GM Reference Guide +## Book 1 — Hellknight Hill (Levels 1-5) + +--- + +## The Full Campaign at a Glance + +Age of Ashes (AP #145-150) is PF2e's first Adventure Path, spanning levels 1-20. The story uses **Alseta's Ring** — six ancient elven portal gates beneath your starting fortress — as both a travel hub and the campaign's central plot device. Each book sends the party through a new gate. + +| Book | Title | Levels | Setting | Gate Used | +|------|-------|--------|---------|-----------| +| 1 | Hellknight Hill | 1-5 | Breachill / Citadel Altaerein (Isger) | Huntergate (invasion) | +| 2 | Cult of Cinders | 5-9 | Mwangi Expanse (Ekujae elves) | Huntergate | +| 3 | Tomorrow Must Burn | 9-12 | Ravounel / Kintargo | Dreamgate | +| 4 | Fires of the Haunted City | 12-15 | Five Kings Mountains / Saggorak | Jewelgate | +| 5 | Against the Scarlet Triad | 15-18 | Katapesh | Duskgate | +| 6 | Broken Promises | 18-20 | Promise, Hermea / Alseta's Ring | Vengegate | + +**Villain Layering:** Cult of Cinders (books 1-2) are pawns of the **Scarlet Triad** (books 3-5), who are unknowing pawns of **Mengkare** (book 6). The cosmic threat beneath it all: **Dahak's imprisoned divine manifestation** trapped within Huntergate. + +--- + +## Alseta's Ring — The Six Gates + +One of the first aiudara (elf gates) created on Golarion, crafted by the elven hero Candlaron. After Earthfall, Dahak exploited a flaw to manifest on Golarion; the Ekujae elves used the Anima Invocation ritual to imprison that manifestation within Huntergate, causing feedback that destroyed Lotusgate and severed the ring from the broader aiudara network. + +| Gate | Destination | Dedicated To | Status | Book Used | +|------|-------------|-------------|--------|-----------| +| **Lotusgate** | Kyonin | — | Destroyed by magical backlash | — | +| **Huntergate** | Mwangi Expanse | Ketephys | Dahak imprisoned within; way station destroyed | 1-2 | +| **Dreamgate** | Ravounel coast | Desna | Corrupted by a coven of night hags | 3 | +| **Jewelgate** | Five Kings Mountains | Yuelral | Pale green stone with red crystalline veins | 4 | +| **Duskgate** | Finderplain, Katapesh | Findeladlara | White marble with grey streaks | 5 | +| **Vengegate** | Promise, Hermea | Calistria | Haunted by a spirit | 6 | + +--- + +## Campaign Villain Summary + +### The Overarching Threat: Dahak +The draconic god of destruction. His divine manifestation has been imprisoned within Huntergate for millennia, slowly trying to free itself, exerting influence through dreams and visions, and inspiring cults. In book 6, part of his manifestation erupts from the portal network. + +### The Hidden Mastermind: Mengkare +An ancient gold dragon ruling Hermea's utopian city of Promise. Operating as **"Lamond Breachton"** (also Breachill's mysterious founder), he discovered Dahak's imprisoned manifestation in 4212 AR. His plan: a massively expanded Anima Invocation fueled by thousands of "perfect souls" cultivated in Promise over centuries. He founded the Scarlet Triad in 4607 AR to find recruits after Aroden's death made personal recruitment difficult. He genuinely believes he's saving the world — but his methods involve mass sacrifice of people he's spent centuries cultivating. + +### The Criminal Organization: The Scarlet Triad +A merchant guild / slaver organization headquartered in Katapesh beneath a Red Pyramid. They enjoy Pactmaster protection. They don't know Mengkare finances them (they believe the Pactmasters are their backers). They've been collecting shards of the **Orb of Gold Dragonkind** as leverage — threatening to release Dahak as mutual annihilation insurance against Mengkare. + +### Key Scarlet Triad Operatives +- **Ilssrah Embremead** — Second-in-command; primary antagonist of Book 4. Negotiated with Veshumirix and duergar in Five Kings Mountains +- **Uri Zandivar** — Operative encountered in Book 3 (Ravounel) + +### Per-Book Antagonists +| Book | Villain | Type | +|------|---------|------| +| 1 | **Voz Lirayne** | Necromancer bookseller, Norgorber worshipper | +| 1 | **Calmont** | Halfling arsonist, Voz's apprentice | +| 2 | **Belmazog** | Boggard Cinderclaw cult leader with draconic features | +| 4 | **Veshumirix** | Magma dragon in Saggorak | +| 4 | **Ilssrah Embremead** | Scarlet Triad second-in-command | +| 6 | **Mengkare** | Ancient gold dragon ruler of Hermea | + +--- + +## Hellknight Hill — Chapter Breakdown + +### Chapter 1: The Town Hall Fire (Level 1) +The PCs attend Breachill's monthly "Call for Heroes" at the town hall when a fire breaks out — set by **Calmont**, a halfling apprentice bookseller trying to cover his theft of a summoning scroll. A **fire mephit** is causing chaos. + +**Running Tips:** +- The fire itself has initiative and is an active combatant — praised as one of PF2e's best intro encounters +- The mephit dies fast (often rounds 1-2); the real tension is **fire management** +- For newer players, reduce fire expansion from 50% to 33% per round +- Be generous with Gust of Wind — let it affect every square along its line +- Award bonus XP for fully extinguishing the fire + +### Chapter 2: The Citadel Above (Level 1-2) +The PCs climb Hellknight Hill to investigate Citadel Altaerein. The ruined fortress is home to the **Bumblebrasher goblin tribe**, who are under attack. + +**Key Areas:** +- Areas A1-A16 across the main floor and battlements +- **Important:** Players wearing Hellknight regalia can **bypass the entire southern half** of the citadel. Many GMs miss this. +- The necromantic ward can be destroyed to clear it entirely + +**Key NPCs:** +- **Warbal Bumblebrasher** — Goblin ambassador, recurring ally throughout the AP +- **Alak Stagram** — A Hellknight NPC investigating the citadel. Underutilized as written; give him a personal stake (family heirloom, investigating a relative's death) + +### Chapter 3: The Goblinblood Caves (Level 2-3) +Below the citadel, natural caves with a mix of creatures. Areas D1-D8. + +**DANGER — Ralldar (the Greater Barghest):** +This is flagged by the community as the **single biggest TPK threat** in the book. Ralldar presents as a weaker creature with potentially no warning until combat begins. + +**Required Fixes:** +- Add goblin folklore about a "monster in the dark" before the encounter +- Have Warbal or other NPCs make veiled references to something dangerous below +- Use horror description cues in the room before engagement +- Consider applying the "weak" template for small/battered parties + +**Renali** — A Chaotic Good **Anadi** (spider-person) from the Mwangi Expanse. She followed cultists through the portal, got trapped when it shut down, and climbed into these caves. She's a social encounter meant to be an ally. Can become a recurring NPC. +- **Errata:** Her stat block lacks darkvision (oversight — assume websense in spider form) and lacks Mwangi as a language (she needs it for later books; add it now) + +### Chapter 4: The Vaults and Alseta's Ring (Level 3-4) +The deepest level — Voz Lirayne's necromantic workshop and the portal chamber. + +**Voz Lirayne** — Half-elf necromancer posing as proprietor of the **Reliant Book Company**. Secret Norgorber worshipper planning to build an assassin's guild/necromancy school. She contacted the **Scarlet Triad**, who offered to fund her guild if she secured Alseta's Ring access. +- **Stats:** AC 20 (21 w/ mage armor), Fort +10, Ref +12, Will +9, HP 56 (+10 temp from false life) +- **Errata:** Her illustration shows a wand but stat block only lists a +1 dagger. Community recommends adding a Wand of Fear or Poisoner's Staff +- Her cantrip "Read Magic" should be "Read Aura" + +**Calmont** — Voz's halfling apprentice who set the fire. Hates Voz ("She thinks she's my god. Always bossin' me around!"). Stole a scroll to summon the fire mephit. Wants to sell Ring info to buy his way out. Can potentially be redeemed or used as an information source. + +**Alseta's Ring** — Six ancient elven portals in a ring. The PCs discover the Cinderclaw cultists invaded through Huntergate from the Mwangi Expanse. The charau-ka **Malarunk** led the initial incursion. + +--- + +## Key NPCs Quick Reference + +### Allies +| NPC | Role | Notes | +|-----|------|-------| +| **Warbal Bumblebrasher** | Goblin ambassador | Recurring ally, quest-giver | +| **Alak Stagram** | Hellknight investigator | Give him personal motivation; source of lore | +| **Renali** | Anadi refugee from Mwangi | Trapped in caves; social encounter, potential recurring NPC | +| **Pib & Zarf** | Kobolds | Wildly variable outcomes at tables — decide in advance how to signal non-hostility | + +### Villains +| NPC | Role | Notes | +|-----|------|-------| +| **Calmont** | Halfling arsonist | Voz's apprentice; hates her; wants to sell Ring info to escape | +| **Voz Lirayne** | Necromancer bookseller | Norgorber worshipper; Scarlet Triad contact | +| **Malarunk** | Charau-ka cultist | Led Cinderclaw invasion through Huntergate | + +### Town Council (Breachill) +- Greta Gardania +- Jorsk Hinterclaw +- Quentino Posandi +- Melma Ann Sendari +- Trinni Sprizzlegig + +### Breachill Key Locations +- Breachill Town Hall (Call for Heroes meetings) +- Breachill Archives +- Reliant Book Company (Voz's shop) +- Cayden's Keg (tavern) +- Shelyn's Smile +- Morta's Mortuary +- Wizard's Grace +- Population: ~1,300 | Settlement Level: 4 + +--- + +## Known Errata & Fixes + +### Geography +- Citadel distance from Breachill listed as both 1 mile and 10 miles — **use 10 miles** +- Monument Circle has contradictory descriptions (wells vs. water towers) — Player's Guide p.7 is correct (water towers) +- Areas B4/B5 and B10/B11 directional labels are **reversed** on maps +- Area D7 gate sections a, c, d, f are mislabeled +- Breachill's founding date inconsistently listed as 4520 AR and 4550 AR + +### Stat Blocks +- Alak wears Hellknight armor and carries a **halberd**, not a greatsword +- Voz's minions are one Skeletal Champion and one Skeleton Guard (not two champions) +- Half-orc Bloody Blades and Voz should have **low-light vision** +- Voz's cantrip "Read Magic" should be "Read Aura" +- Voz's art shows a wand; stat block only has +1 dagger +- Skeletal Hellknight is missing standard skeleton resistances +- Silver longsword in Area A9 is **low-grade** (level 2 item) +- Renali lacks darkvision and Mwangi language (both needed) + +### Narrative +- Warbal's month-long wait for the council contradicts 1-3 hour travel time — handwave as bureaucratic delay +- Alak's departure timing in Chapter 4 has contradictory references + +--- + +## Community GM Advice + +### Encounter Balance +- Individual room-by-room encounters feel underpowered. **Combine adjacent encounters into multi-wave set-piece battles** for better engagement. +- For 3-player parties: apply "weak" template to problem encounters, keep party one level ahead, and provide supplementary magic items as treasure. +- Grauladon Body Slam: one Athletics check vs. all adjacent targets' Fortitude DCs simultaneously — no per-target attack rolls. This is correct as written. + +### Making Voz Matter +The biggest narrative weakness: **why should the party care about chasing Voz?** Her crimes aren't visible until late. +- Plant wanted posters for criminal networks she's connected to +- Add notes in her workshop detailing her plans +- Have her **kill and animate an NPC the players already met** +- Add a secret tunnel from citadel to a tavern basement with evidence of bribed staff +- Have Alak provide background on necromancy laws (creating undead = 50 lashes + 3-10 years hard labor under Cheliax-influenced law) + +### Theme: "Building a Home on Ruins" +GMs who lean into the citadel-as-home-base concept from session zero report **much higher player investment**. Frame the Call for Heroes as offering a deed to the citadel, not just coin. Make the players want the building before they ever enter it. + +### Tone: Folk Horror +The EN World prep guide recommends framing this as **folk horror** — gothic descriptions, mysterious undercurrents, dead bodies as danger signals, heavy foreshadowing. Works well with the Hellknight ruins setting. + +### The Goblin Subversion +This adventure deliberately subverts classic Pathfinder (goblins attacking Sandpoint) by making goblins the **victims who need rescuing**. Lean into this if your players know PF history. + +### Moral Complexity (Areas A15-A16) +This section contains what reviewers call "a complex moral dilemma" that lets players shape their character's long-term disposition. Play this up — it's one of the better roleplay moments in the book. + +### Exploration Mode +Multiple GMs recommend abandoning strict exploration mode adjudication. Use **one-hour turns with a rumor table and bounty board** to make investigation feel organic. A secret random encounter table creates appropriate dread without exposing the mechanical system. + +--- + +## Foreshadowing for the Full Campaign + +Without spoiling things for your players, you can start seeding: +- The name **Lamond Breachton** (Mengkare's human alias, also Breachill's mysterious founder who discovered 100 amnesiacs and used powerful magic + gold to found the town, then vanished) +- Voz's notes that hint at a powerful backer interested in the portals +- The Scarlet Triad as a name that keeps surfacing in Voz's correspondence +- **Do NOT** introduce Mengkare directly in Book 1 — the plot hinges on him being unaware of the PCs + +--- + +## Transition to Book 2: Cult of Cinders + +- The campaign does **not** operate on a tight timeline — the Scarlet Triad has been active for years +- Allow a full **downtime session** for citadel repairs (the book has a structured renovation system — basic repairs before upgrades, NPC specialists available to hire) +- James Jacobs clarifies hiring NPCs for citadel work is "background story stuff" not requiring formal downtime rules +- The portal in the basement remains an active threat — **cultists can still invade through Alseta's Ring**. Use this as natural pressure pushing the party into Book 2 +- Book 2 opens with a hexcrawl in the Mwangi Expanse; consider tightening the pacing or introducing faction NPCs earlier + +--- + +## Book-by-Book Synopsis (Spoilers) + +### Book 2: Cult of Cinders (Levels 5-9) +PCs travel through Huntergate to the Mwangi Expanse. They ally with the **Ekujae elves** at Akrivel, who are descendants of the elves who originally imprisoned Dahak. The **Cinderclaw Cult** (boggards and charau-ka led by **Belmazog**) worships Dahak and has been raiding the Ekujae. Key Ekujae NPCs: Jahsi, Akosa, Nketiah, and the twin rulers Ose Panin and Ose Atsu. **Kyrion**, a young red dragon, is held captive by Belmazog. The Ekujae reveal the full history of Alseta's Ring and the Anima Invocation. Defeating Belmazog reveals the Scarlet Triad as the cult's backers. + +### Book 3: Tomorrow Must Burn (Levels 9-12) +PCs use Dreamgate to reach Ravounel/Kintargo (the city from Hell's Rebels AP). The Scarlet Triad is establishing an underground slave trade in the newly independent nation. PCs disrupt operations and discover the Triad retreating to the Five Kings Mountains. **Uri Zandivar** appears as a Triad operative. + +### Book 4: Fires of the Haunted City (Levels 12-15) +Often cited as the **best volume in the campaign**. PCs use Jewelgate to reach Saggorak, a haunted dwarven ruin beneath the living city of Kovlar. **Veshumirix** (magma dragon) has conquered Saggorak and allied with the Scarlet Triad. **Ilssrah Embremead** (Triad second-in-command) convinced him by promising to release Dahak. The PCs can ally with an ancient dwarven king's spirit. Complex dwarven politics with **Kelda Halrig** (speaker of Kovlar's Court of Regents) and the traitorous **Kolarun Chiselrock** (bribed by the Triad). + +### Book 5: Against the Scarlet Triad (Levels 15-18) +PCs use Duskgate to reach Katapesh and assault the Triad's headquarters beneath a Red Pyramid. The Triad enjoys Pactmaster protection, requiring political maneuvering before a direct strike. The shocking revelation: **Mengkare** has been financing the Triad all along. The Triad has collected over half the shards of the Orb of Gold Dragonkind. Then Dahak's manifestation partially erupts from the portals. + +### Book 6: Broken Promises (Levels 18-20) +PCs use Vengegate to reach Promise on Hermea. Mengkare's full plan revealed: sacrifice thousands of "perfect souls" via expanded Anima Invocation to destroy Dahak's manifestation. Multiple endings possible — convince Mengkare to stop, expose him to Promise's people, fight him, or find an alternative. Dahak's manifestation must be dealt with regardless. In canon, Mengkare is arrested by agents of the deity Otolaz to face trial. + +--- + +## VTT / Map Resources + +- **Foundry VTT:** [Age of Ashes Map Remakes](https://foundryvtt.com/packages/age-of-ashes-map-remakes), [Racooze's Battlemaps](https://foundryvtt.com/packages/racoozes-age-of-ashes-battlemaps) +- **Fantasy Grounds:** [Official conversion](https://www.fantasygrounds.com/store/product.php?id=PZOSMWPZO90145FG) with pre-placed tokens +- **Tales Tavern:** [Age of Ashes collection](https://talestavern.com/collections/age-of-ashes/) +- **Community maps** on Paizo forums (Fumarole, MSAbaddon, 3Doubloons) for Breachill, citadel floors, Goblinblood Caves, and vaults +- **Steam Workshop:** [OW Maps and Minis](https://steamcommunity.com/sharedfiles/filedetails/?id=2101099363) + +--- + +## Sources + +- [Paizo Forums: Hellknight Hill GM Reference](https://paizo.com/threads/rzs42nam) +- [Paizo Forums: Age of Ashes Good/Bad/Indifferent](https://paizo.com/threads/rzs438f1) +- [Paizo Forums: Introducing the Villain](https://paizo.com/threads/rzs42ytq) +- [Paizo Forums: Community Created Content](https://paizo.com/threads/rzs42n7o) +- [EN World: Preparing Hellknight Hill](https://www.enworld.org/threads/preparing-hellknight-hill.675654/) +- [Twin Cities Geek: Hellknight Hill Review](https://twincitiesgeek.com/2019/12/age-of-ashes-hellknight-hill-is-a-rich-flexible-adventure-for-pathfinder-2nd-edition/) +- [Laidback DM: Hellknight Hill Review](https://stevestillstanding.com/2020/01/03/laidback-dm-pathfinder-2e-reviews-hellknight-hill/) +- [Know Direction: Fox's Cunning Age of Ashes Toolkit](https://knowdirectionpodcast.com/2019/11/foxs-cunning-age-of-ashes-toolkit/) +- [PathfinderWiki: Age of Ashes](https://pathfinderwiki.com/wiki/Age_of_Ashes_(adventure_path)) +- [PathfinderWiki: Alseta's Ring](https://pathfinderwiki.com/wiki/Alseta%27s_Ring) +- [Archives of Nethys: Voz Lirayne](https://2e.aonprd.com/NPCs.aspx?ID=1538) +- [Archives of Nethys: Renali](https://2e.aonprd.com/NPCs.aspx?ID=1600)