diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Avas Assase.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Avas Assase.md index 68d0a81..80b5f8e 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Avas Assase.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Avas Assase.md @@ -5,6 +5,14 @@ SMH_Acronym: Tags: - npc Intel: + - date: 2025-12-10 + type: interaction + summary: "[[Nuala Elidari]] extends an offer of adoption to [[Faylen Valrora]] into [[House Elidari]], under the stewardship of [[Avas Assase]], as well as a position as Meister under him." + session: "[[Session 13 - Summer Solistice Pt. 2]]" + source: "[[Nuala Elidari]]" + reliability: A + credibility: 5 + tags: [] - date: 2025-12-03 type: interaction summary: "[[Avas Assase]] expressed an interest in doing good for the lower portion of the city, and expressed thankfulness for the help with [[Iniana Asase|Iniana's]] Soup Kitchen." @@ -25,6 +33,7 @@ Intel: + # Avas Assase *Archmeister of Y'athyr* diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Fenric Draycott.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Fenric Draycott.md index 87af01c..da62453 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Fenric Draycott.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Fenric Draycott.md @@ -1,5 +1,5 @@ --- -Level_of_Influence: 2 +Level_of_Influence: 3 Faction: "[[Draycott Family]]" SMH_Acronym: Tags: diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Ilvara Valrora.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Ilvara Valrora.md index 6fd0f23..1cd49a5 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Ilvara Valrora.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Ilvara Valrora.md @@ -5,6 +5,14 @@ SMH_Acronym: Tags: - npc Intel: + - date: 2025-12-10 + type: report + summary: "[[Katarin Calil]], [[Onora Elidari]] and [[Lord Ellin Vaust]] do not applaud a toast that [[Nuala Elidari]] offers to the previous Steward, [[Ilvara Valrora]]" + session: "[[Session 13 - Summer Solistice Pt. 2]]" + source: Perception Check + reliability: B + credibility: 5 + tags: [] - date: 2025-12-03 type: interaction summary: "[[Ilvara Valrora]] expresses that she has been keeping up with what the party has been up to at the point of the Masquerade, but she doesn't approve of our actions thus far." @@ -15,6 +23,7 @@ Intel: tags: [] --- + # Ilvara Valora *Former Master of Coin and Steward of Y'athyr* diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Iniana Asase.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Iniana Asase.md index 3062b97..f7aa421 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Iniana Asase.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Iniana Asase.md @@ -3,8 +3,18 @@ Level_of_Influence: 8 Faction: "[[House Asase]]" Tags: - npc +Intel: + - date: 2025-12-10 + type: interaction + summary: In a conversation with [[Iniana Assase]] and [[Fenric Draycott]], [[Iniana Assase]] says that there has been an illness/disease spreading through the Drenches. + session: "[[Session 13 - Summer Solistice Pt. 2]]" + source: "[[Iniana Asase]]" + reliability: A + credibility: 5 + tags: [] --- + # Iniana Asase *Daughter of [[House Asase]]* diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Kerrian Calil.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Kerrian Calil.md index 247839c..df408b7 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Kerrian Calil.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Kerrian Calil.md @@ -1,11 +1,21 @@ --- -Level_of_Influence: 0 +Level_of_Influence: 2 Faction: "[[House Calil]]" SMH_Acronym: Tags: - npc +Intel: + - date: 2025-12-10 + type: interaction + summary: "[[Kerrian Calil]] is a writer of books that his father doesn't approve of." + session: "[[Session 13 - Summer Solistice Pt. 2]]" + source: "[[Onora Elidari]]" + reliability: B + credibility: 5 + tags: [] --- +a # Kerrian Calil *Role/Description β€” e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"* diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Lord Ellin Vaust.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Lord Ellin Vaust.md index 3aec38c..89fcea3 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Lord Ellin Vaust.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Lord Ellin Vaust.md @@ -1,5 +1,5 @@ --- -Level_of_Influence: 2 +Level_of_Influence: 3 Faction: SMH_Acronym: Synchronized Mushroom Hiccup Tags: diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Man in the White Mask.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Man in the White Mask.md new file mode 100644 index 0000000..a31d8fc --- /dev/null +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Man in the White Mask.md @@ -0,0 +1,181 @@ +--- +Level_of_Influence: 0 +Faction: +SMH_Acronym: +Tags: + - npc +--- + +# Man in the White Mask +*Role/Description β€” e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"* + +## 🎨 Artwork +![[Man in the White Mask.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*** + - DC 15 Warfare Lore + - DC 18 Society + - DC 18 Intimidation + - DC 20 Perception + - ***Influence Skills*** + - DC 20 Deception + - DC 22 Diplomacy + - DC 22 Intimidation + - ***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:** + - 2025-12-10: … + +--- + +## πŸ”— 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/People, Factions and Relationships/NPCs/Onora Elidari.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Onora Elidari.md index f4d63ee..c6a668e 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Onora Elidari.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Onora Elidari.md @@ -1,11 +1,20 @@ --- -Level_of_Influence: 0 +Level_of_Influence: 2 Faction: "[[House Elidari]]" SMH_Acronym: Tags: - npc +Intel: + - date: 2025-12-10 + type: report + summary: The Wedding of [[Onora Elidari]] and [[Kerrian Calil]] is on October 22nd. + session: "[[Session 13 - Summer Solistice Pt. 2]]" + reliability: A + credibility: 5 + tags: [] --- + # Onora Elidari *Youngest Daughter of [[House Elidari]]* diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Siviane Marravet.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Siviane Marravet.md index 431f4f1..fc2b543 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Siviane Marravet.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Siviane Marravet.md @@ -1,5 +1,5 @@ --- -Level_of_Influence: 2 +Level_of_Influence: 3 Faction: "[[House Vyshaan]]" SMH_Acronym: Tags: diff --git a/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 13 - Summer Solistice Pt. 2.md b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 13 - Summer Solistice Pt. 2.md new file mode 100644 index 0000000..71c283c --- /dev/null +++ b/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 13 - Summer Solistice Pt. 2.md @@ -0,0 +1,168 @@ +--- +Date: 2025-12-10 +Session_Name: Session 13 - Summer Solistice Pt. 2 +Tags: + - pf2e + - session +--- + +# Session 13 - Summer Solistice Pt. 2 + +> **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:** + +- **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 + +- [ ] + +- [ ] + +- [ ] diff --git a/_art/npcs/Kerrian Calil.png b/_art/npcs/Kerrian Calil.png new file mode 100644 index 0000000..50210ff Binary files /dev/null and b/_art/npcs/Kerrian Calil.png differ diff --git a/_art/npcs/Man in the White Mask.png b/_art/npcs/Man in the White Mask.png new file mode 100644 index 0000000..36635be Binary files /dev/null and b/_art/npcs/Man in the White Mask.png differ