From d68cc513cdd46ecde3ab02fdab1d348f01176ae8 Mon Sep 17 00:00:00 2001 From: Jason McPherson Date: Mon, 24 Nov 2025 20:44:55 -0600 Subject: [PATCH] vault commit: 2025-11-24 20:44, 4 files changed --- .../Factions/People of the South Drenches.md | 221 ++++++++++++++++++ .../NPCs/Iniana Asase.md | 2 +- .../NPCs/Maltrix.md | 10 + .../NPCs/NPC Dashboard.md | 2 + 4 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/Factions/People of the South Drenches.md diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/Factions/People of the South Drenches.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/Factions/People of the South Drenches.md new file mode 100644 index 0000000..263125d --- /dev/null +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/Factions/People of the South Drenches.md @@ -0,0 +1,221 @@ +--- +Date: 2025-11-24 +Session_Name: People of the South Drenches +Tags: + - pf2e + - session + - faction +Reputation: 1 +Faction_Type: +Motto: +Ideology: +Symbol: +Colors: +Headquarters: +Territories: + - +Allies: + - +Rivals: + - +SMH_Acronym: +Intel: +--- + +# People of the South Drenches +*One-line role/description — e.g., “Elven High House controlling Y’athir’s docks.”* + +--- + +## 🎨 Artwork +![[People of the South Drenches.png]] +*Optional caption / artist credit* + +--- + +## 🧭 Identity & Heraldry +- **Motto:** `= default(this.Motto, "—")` +- **Symbol:** `= default(this.Symbol, "—")` +- **Colors:** `= default(this.Colors, "—")` +- **Headquarters:** `= default(this.Headquarters, "—")` +- **Territories:** `= this.Territories` + +--- + +## 📜 Ideology & Goals +- **Ideology / Alignment:** `= default(this.Ideology, "—")` +- **Primary Goals:** + - +- **Taboos / Anathema:** + - + +--- + +## 🤝 Relationship with Party +- **Reputation:** `= this.Reputation` + +--- + +## 🧑‍💼 Leadership & Structure +- **Leader(s):** [[NPC A]], [[NPC B]] +- **Structure:** (council, hierarchy, cells, chapters) +- **Key Offices:** (Intelligence, Logistics, Priory, Treasury, etc.) + +--- + +## 🧰 Assets & Operations +- **Resources:** (coin, troops, mages, ships, safehouses, contacts) +- **Notable Holdings:** +- **Typical Ops / Tactics:** + +--- + +## 🕊️ Diplomacy & Relations +- **Allies:** `= this.Allies` +- **Rivals:** `= this.Rivals` +- **Stance toward “SMH” (their wording):** `= default(this.SMH_Acronym, "—")` + +--- + +## 🧠 Intelligence & Mentions +```button +name ➕ Add Intel +type command +action Templater: Insert Add Intel Entry to Faction +``` +```dataviewjs +const THIS = dv.current(); +const thisName = String(THIS.file.name); +const thisLC = thisName.toLowerCase(); + +const factions = dv.pages("#faction"); + +// mention detector (same logic as your table) +function mentionsThisFaction(entry) { + const sum = String(entry.summary ?? ""); + if (sum.includes(`[[${thisName}]]`) || sum.includes(`[[${thisName}|`)) return true; + const src = entry.source; + const list = Array.isArray(src) ? src : (src ? [src] : []); + for (const s of list) { + if (typeof s === "string") { + if (s.includes(`[[${thisName}]]`) || s.includes(`[[${thisName}|`)) return true; + if (s.toLowerCase() === thisLC) return true; + } else if (s && typeof s === "object" && s.path) { + const base = s.path.split("/").pop().replace(/\.md$/i,"").toLowerCase(); + if (base === thisLC) return true; + } + } + return false; +} + +const own = (THIS.Intel ?? []).length; + +let mentions = 0; +for (const p of factions.where(p => p.file.name !== thisName)) { + for (const it of (p.Intel ?? [])) if (mentionsThisFaction(it)) mentions++; +} + +dv.paragraph(`_Entries: ${own + mentions} (own ${own} + mentions ${mentions})_`); +``` +```dataviewjs +// Current faction +const THIS = dv.current(); +const thisName = String(THIS.file.name); +const thisLC = thisName.toLowerCase(); + +// All faction pages (including this one) +const factions = dv.pages("#faction"); + +// Mention detector: summary has [[This Faction]] OR source points at this faction +function mentionsThisFaction(entry) { + const sum = String(entry.summary ?? ""); + if (sum.includes(`[[${thisName}]]`) || sum.includes(`[[${thisName}|`)) return true; + + const src = entry.source; + const list = Array.isArray(src) ? src : (src ? [src] : []); + for (const s of list) { + if (typeof s === "string") { + if (s.includes(`[[${thisName}]]`) || s.includes(`[[${thisName}|`)) return true; + if (s.toLowerCase() === thisLC) return true; // fallback: plain text match + } 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; + } + } + return false; +} + +// Collect rows +const rows = []; + +// 1) Own intel +for (const it of (THIS.Intel ?? [])) { + rows.push({ + date: it.date ?? "", + from: THIS.file.link, + 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 ?? "") + }); +} + +// 2) Mentions from other factions +for (const p of factions.where(p => p.file.name !== thisName)) { + for (const it of (p.Intel ?? [])) { + if (mentionsThisFaction(it)) { + rows.push({ + date: it.date ?? "", + from: p.file.link, + 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 ?? "") + }); + } + } +} + +// Sort newest first +rows.sort((a,b) => String(b.date).localeCompare(String(a.date))); + +if (!rows.length) { + dv.paragraph("_No intel yet._"); +} else { + dv.table( + ["Date","From Faction","Type","Summary","Source","Rel","Cred","Tags"], + rows.map(r => [r.date, r.from, r.type, r.summary, r.source, r.rel, r.cred, r.tags]) + ); +} +``` +> Add new entries in the **frontmatter** under `Intel:` (keep newest on top). Suggested fields: `date, type, summary, source, reliability, credibility, tags`. + +--- + +## 🔗 Related NPCs (auto) +```dataview +TABLE link(file.name) AS NPC, number(Level_of_Influence) AS Influence, default(SMH_Acronym, "—") AS SMH +FROM #npc +WHERE file.name != "NPC Template" +AND ( + Faction = this.file.link + OR lower(string(Faction)) = lower(this.file.name) + OR contains(lower(string(Faction)), lower(this.file.name)) +) +SORT number(Level_of_Influence) DESC +``` + +--- + +## 📌 Plot Hooks & Notes +- +- + +--- + +## 🗒 Session Updates +- 2025-11-24: … 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 5352101..3062b97 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 @@ -1,5 +1,5 @@ --- -Level_of_Influence: 6 +Level_of_Influence: 8 Faction: "[[House Asase]]" Tags: - npc diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Maltrix.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Maltrix.md index 518a588..2b1ad48 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Maltrix.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/Maltrix.md @@ -4,6 +4,14 @@ Faction: SMH_Acronym: Tags: - npc +Intel: + - date: 2025-11-24 + type: interaction + summary: "[[Val]] has a Doctor's Appointment with [[Maltrix]]. Requests to bring back [[Val]] before the end of the month, to ensure that the wards are holding." + session: "[[Session 11 - A Session]]" + reliability: A + credibility: 5 + tags: [] --- # Maltrix @@ -161,6 +169,8 @@ action Templater: Insert Add Intel Entry to NPC ## 🗺️ Miscellaneous - **Current Location:** - **Important Items / Assets:** + + - Owns a Shop in the South Drenches (Name TBD, Tommy) - **Plot Hooks / Ties to PCs:** - **Session Notes / Updates:** - 2025-10-08: … diff --git a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/NPC Dashboard.md b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/NPC Dashboard.md index 61045e7..c94f325 100644 --- a/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/NPC Dashboard.md +++ b/Dungeons and Dragons/A Legacy Forged/People, Factions and Relationships/NPCs/NPC Dashboard.md @@ -84,3 +84,5 @@ for (const [title, rows] of Object.entries(groups)) { ); } ``` + +Common People of the S. Drenches: +1 \ No newline at end of file