From eb7cc83e1fc999aae4ef112323589fef8615577c Mon Sep 17 00:00:00 2001 From: Jason McPherson Date: Thu, 16 Apr 2026 19:22:18 -0500 Subject: [PATCH] vault commit: 2026-04-16 19:22, 2 files changed --- .../Session 26 - Two Holes, Many Problems.md | 1 + .../Session 27 - A Many Tentacled Problem.md | 171 ++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 Dungeons and Dragons/A Legacy Forged/Session Notes/Session 27 - A Many Tentacled Problem.md diff --git a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 26 - Two Holes, Many Problems.md b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 26 - Two Holes, Many Problems.md index 1ae97f7..bca706b 100644 --- a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 26 - Two Holes, Many Problems.md +++ b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 26 - Two Holes, Many Problems.md @@ -112,6 +112,7 @@ templater true - Inside the Chamber we encounter a score of Caligni Dancers, some Masked Cultists, Heavily Armoured Knights and the Cult Leader we fought up above initially. - The fight progresses well and we're able to deal with most threats, but the Cult Leader escapes -- and shortly thereafter, this creature emerges from the Inky Cocoon at the center:![[Pasted image 20260408232039.png]] - **Combat:** + - We encounter the remaining Cultists underneath the Remains of the Maelstrom - along with the Leader of the Cult that we first encountered at the Maelstrom. A bunch of Caligni, Knights and Masked Slayers/Flayers - **Outcome / Loot:** diff --git a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 27 - A Many Tentacled Problem.md b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 27 - A Many Tentacled Problem.md new file mode 100644 index 0000000..9acd4f9 --- /dev/null +++ b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 27 - A Many Tentacled Problem.md @@ -0,0 +1,171 @@ +--- +Date: 2026-04-16 +Session_Name: Session 27 - A Many Tentacled Problem +Tags: + - pf2e + - session +--- + +# Session 27 - A Many Tentacled Problem + +> **Date:** `= this.Date` • **Name:** `= this.Session_Name` + +--- + +## 📄 Session Summary (auto) + +*No summary yet — click “Generate Summary” below.* + + +```button +name ✍️ Generate AI Summary +type template +action Templates/Generate AI Session Summary.md +templater true +``` + +## 🧭 Where / When + +- **Region / Location:** + - The Hole underneath the Former Maelstrom in The Wells District of Y'athyr + +- **In-game Date / Time:** + +- **Weather / Conditions:** + + +--- + +## 👥 PCs Present / Absent + +- **Present:** + +- **Absent:** + + +--- + +## ⭐ Highlights (feed the auto-summary) + +> Add one or more `Highlight::` lines. The button will build a summary from these. + +- Highlight:: + +- Highlight:: + +- Highlight:: + + +--- + +## 🎯 Quests & Progress + +- **Active Objectives:** + +- **Progress / Resolutions:** + + +--- + +## 🗣️ NPCs Met / Factions + +- **NPCs:** [[ ]] [[ ]] [[ ]] + +- **Factions Touched:** [[ ]] [[ ]] + + +--- + +## ⚔️ Encounters + +- **Social / Exploration:** + +- **Combat:** + - We resume combat with the Giant Wyrm and the remaining Caligni + - RK on the Monster: + - Seugathi reality warpers create and destroy inhospitable environments on a small scale by manipulating the forces of raw chaos. A neothelid might spawn such a seugathi to create habitats for unique slaves or guests, or to destroy the ecosystem of a troublesome species. Darklands scholars refer to reality warpers as veterans in the seugathi ranks, but they're more accurately compared to aggressive landscape architects. The wicked, alien Neothelids impregnate themselves through ritualistic magic to produce wormlike servitor creatures called seugathis. These creatures spawn with a strong psychic drive to complete some task on behalf of the neothelids' far-reaching plans. These directives are diverse, strange, and usually cruel toward humanoid life +- **Outcome / Loot:** + + +--- + +## 🧠 Intel Captured (auto) + +```dataviewjs +const THIS = dv.current(); +const sessName = THIS.file.name; +const sessDate = THIS.Date ?? dv.current().file.frontmatter?.Date ?? ""; +const sessLC = sessName.toLowerCase(); + +const pages = dv.pages("#npc or #faction").where(p => p.Intel); + +function matchesSessionField(sessionField) { + const list = Array.isArray(sessionField) ? sessionField : [sessionField]; + for (const s of list) { + if (!s) continue; + if (typeof s === "object" && s.path) { + const base = s.path.split("/").pop().replace(/\.md$/i,""); + if (base.toLowerCase() === sessLC) return true; + } else { + const text = String(s); + if (text.includes(`[[${sessName}]]`)) return true; + if (text.toLowerCase() === sessLC) return true; + } + } + return false; +} + +const rows = []; +for (const p of pages) { + for (const it of p.Intel) { + let ok = false; + if (it.session) ok = matchesSessionField(it.session); + if (!ok && sessDate && it.date) ok = String(it.date) === String(sessDate); // fallback + if (ok) { + rows.push({ + from: p.file.link, + date: it.date ?? "", + type: it.type ?? "", + summary: String(it.summary ?? ""), + source: it.source ?? "", + rel: it.reliability ?? "", + cred: it.credibility ?? "", + tags: Array.isArray(it.tags) ? it.tags.join(", ") : (it.tags ?? "") + }); + } + } +} + +rows.sort((a,b)=> String(b.date).localeCompare(String(a.date))); + +if (!rows.length) { + dv.paragraph("_No intel captured for this session yet._"); +} else { + dv.table( + ["From", "Date", "Type", "Summary", "Source", "Rel", "Cred", "Tags"], + rows.map(r => [r.from, r.date, r.type, r.summary, r.source, r.rel, r.cred, r.tags]) + ); +} +``` + + +--- + +## 📦 Treasure & Rewards + +- **Items:** + +- **Coin:** + +- **XP / Milestones:** + + +--- + +## 🔜 Next Hooks / To-Dos + +- [ ] + +- [ ] + +- [ ]