From 75824a97c9391c23afa9704860f2687d0a27e2a7 Mon Sep 17 00:00:00 2001 From: Jason McPherson Date: Thu, 29 Jan 2026 21:16:24 -0600 Subject: [PATCH] vault commit: 2026-01-29 21:16, 2 files changed --- .../NPCs/Professor Gerendel.md | 183 ++++++++++++++++++ .../Session 19 - A Plan Forms.md | 7 + 2 files changed, 190 insertions(+) create mode 100644 Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Professor Gerendel.md diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Professor Gerendel.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Professor Gerendel.md new file mode 100644 index 0000000..c01469b --- /dev/null +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Professor Gerendel.md @@ -0,0 +1,183 @@ +--- +Level_of_Influence: 0 +Faction: +SMH_Acronym: +Tags: + - npc +Intel: + - date: 2026-01-29 + type: report + summary: Is known to be a scholar of glyphs and other signage. Helps to maintain the barrier that controls access to the Esoterium. + session: "[[Session 19 - A Plan Forms]]" + reliability: B + credibility: 5 + tags: [] +--- + +# Professor Gerendel +*Role/Description β€” e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"* + +## 🎨 Artwork +![[Professor Gerendel.png]] +*Optional caption / alt text* + +--- + +## πŸ§‘ NPC Overview +- **Full Name:** + +- **Race / Ancestry:** +- **Gender / Pronouns:** +- **Occupation / Role:** +- **Faction / Allegiance:** +- **SMH (what THEY call it):** `= this.SMH_Acronym` +- **Notable Traits:** (quirks, mannerisms, appearance) +- **First Impression:** (how the party perceives them) + +--- + +## 🀝 Relationship with Party +- **Level of Influence:** `= this.Level_of_Influence` (βˆ’10 to +10) +- **Notes on Influence:** (what actions improve/worsen standing) + - ***Discovery Skills*** + - ***Influence Skills*** + - ***Weaknesses*** + - ***Resistances*** + - ***Biases*** + +--- + +## 🧠 Intel (auto) +```dataviewjs +const THIS = dv.current(); +const thisName = String(THIS.file.name); +const thisLC = thisName.toLowerCase(); + +// Scan faction & NPC notes that have Intel arrays +const pages = dv.pages("#npc or #faction").where(p => p.Intel); + +// Does an Intel entry reference THIS NPC? +function mentionsThisNPC(entry) { + const sum = String(entry.summary ?? ""); + + // 1) Explicit wikilink in summary + if (sum.includes(`[[${thisName}]]`) || sum.includes(`[[${thisName}|`)) return true; + + // 2) Source field (string/link/list) + const src = entry.source; + const arr = Array.isArray(src) ? src : (src ? [src] : []); + for (const s of arr) { + if (typeof s === "string") { + // quoted link or plain text + const unq = s.replace(/^"+|"+$/g, ""); // drop surrounding quotes if any + if (unq.includes(`[[${thisName}]]`) || unq.includes(`[[${thisName}|`)) return true; + // if they typed just the name + if (unq.replace(/\[\[|\]\]/g, "").trim().toLowerCase() === thisLC) return true; + } else if (s && typeof s === "object" && s.path) { + // wikilink object + const base = s.path.split("/").pop().replace(/\.md$/i, "").toLowerCase(); + if (base === thisLC) return true; + } + } + + // Optional (looser): plain text mention in summary + // return sum.toLowerCase().includes(thisLC); + + return false; +} + +// Collect rows: 1) own Intel, 2) mentions from other notes +const rows = []; + +// Own Intel (from this NPC note) +for (const it of (THIS.Intel ?? [])) { + rows.push({ + from: THIS.file.link, + date: it.date ?? "", + type: it.type ?? "", + summary: String(it.summary ?? ""), + session: it.session ?? "", + source: it.source ?? "", + rel: it.reliability ?? "", + cred: it.credibility ?? "", + tags: Array.isArray(it.tags) ? it.tags.join(", ") : (it.tags ?? "") + }); +} + +// Mentions elsewhere +for (const p of pages.where(p => p.file.path !== THIS.file.path)) { + for (const it of (p.Intel ?? [])) { + if (mentionsThisNPC(it)) { + rows.push({ + from: p.file.link, + date: it.date ?? "", + type: it.type ?? "", + summary: String(it.summary ?? ""), + session: it.session ?? "", + source: it.source ?? "", + rel: it.reliability ?? "", + cred: it.credibility ?? "", + tags: Array.isArray(it.tags) ? it.tags.join(", ") : (it.tags ?? "") + }); + } + } +} + +// Sort newest first +rows.sort((a,b) => String(b.date).localeCompare(String(a.date))); + +if (!rows.length) { + dv.paragraph("_No intel yet._"); +} else { + dv.paragraph(`_Entries: ${rows.length} (own ${(THIS.Intel ?? []).length} + mentions ${Math.max(0, rows.length - (THIS.Intel ?? []).length)})_`); + dv.table( + ["From Note","Date","Type","Summary","Session","Source","Rel","Cred","Tags"], + rows.map(r => [r.from, r.date, r.type, r.summary, r.session, r.source, r.rel, r.cred, r.tags]) + ); +} +``` + +```button +name βž• Add Intel +type command +action Templater: Insert Add Intel Entry to NPC +``` + +--- + +## πŸ›οΈ Relations & Factions +- **Primary Faction:** [[Faction Name]] +- **Allied Factions:** [[Faction A]], [[Faction B]] +- **Rival Factions:** [[Faction C]] +- **Personal Enemies / Allies:** [[NPC or PC]] + +--- + +## πŸ“– History & Background +- **Origin / Past:** +- **Known Motivations:** +- **Secrets / Rumors:** + +--- + +## 🎭 Roleplay Notes +- **Personality:** (e.g., stern, practical, loyal) +- **Speech Style / Quirks:** (catchphrases, accent, tics) +- **Appearance Details:** (clothing, scars, distinguishing features) + +--- + +## πŸ—ΊοΈ Miscellaneous +- **Current Location:** +- **Important Items / Assets:** +- **Plot Hooks / Ties to PCs:** +- **Session Notes / Updates:** + - 2026-01-29: … + +--- + +## πŸ”— Connections +- **Related NPCs:** + - [[NPC A]] (Mentor) + - [[NPC B]] (Rival) +- **PC Ties:** (how the party knows them) diff --git a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 19 - A Plan Forms.md b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 19 - A Plan Forms.md index ae4fb59..b88e4dc 100644 --- a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 19 - A Plan Forms.md +++ b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 19 - A Plan Forms.md @@ -86,6 +86,13 @@ templater true - [[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]]. + - [[Calen]], [[Val]] and [[Metternich]] head to meet with [[Lorena Neurath]] and pass her along into the service of [[Lord Ellin Vaust]]. + - [[Faylen Valora]] and [[Kite]] spend some time trying to get into the Esoterium to investigate [[Professor Gerendel]] - who is known to be involved with the cult that summoned Euzoldolph and is holding [[Sinni Springvale]]. + - [[Faylen Valora]] and [[Kite]] also spend some time trying to scout the Wells to find this cult. + - As they attempt to go their way through, they hear wailing and growling/moaning - and notice sets of eyes watching them. + - They encounter a pale-skinned human wearing dark clothing - they respond in Undercommon. Asking "Why are you here?" - [[Kite]] deduces that they are Caligni - like we encountered at [[Sinni Springvale]]'s house. The Caligni says that their name is Thublinkaraari (THUMB-lin-CAR-ee) + - Lot's of Halflings are in the Wells (combined with some other Ancestries are working in the Wells), mostly deeper in. Thublinkaraari implies that they know what they're working on, but they've been told not to tell. + - - **Combat:**