--- Date: 2026-01-29 Session_Name: Session 19 - A Plan Forms Tags: - pf2e - session --- # Session 19 - A Plan Forms > **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:** - **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:** - The previous evening: - [[Val]] goes to speak with [[Iniana Asase]] and tries to set up a meeting between [[Deidre Gille]] and [[Therin Assase]] in order to keep her relatively protected, while also ensuring that [[House Miiran]] is held accountable. - [[Metternich]] attend to a few personal items. - The remainder of the party, spend the evening with [[Deidre Gille]] ensuring her safety. - Friday - [[Calen]], [[Faylen Valora]] and [[Kite]] escort [[Deidre Gille]] back to Y'athyr - but exit the carriage a bit outside of the entrance, and walk the remaining distance. - [[Val]] and [[Metternich]] spend some time investigating the Black Hooded, Red-Insignia'ed folks that have been around the docks guarding shipments. Rumor indicate that they might be a Rhodesian Cult of some sort. Though the docks themselves are owned by [[House Tenrae]] - The Guards seem to be supplied by [[House Tenrae]], but are actually from [[House Tassarion]]. - **Combat:** - **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 - [ ] - [ ] - [ ]