vault commit: 2025-11-24 21:57, 5 files changed

This commit is contained in:
Jason McPherson
2025-11-24 21:58:00 -06:00
parent d68cc513cd
commit af8fe9865c
5 changed files with 371 additions and 4 deletions
@@ -14,6 +14,13 @@ Rivals:
- -
SMH_Acronym: SMH_Acronym:
Intel: Intel:
- date: 2025-11-24
type: report
summary: "[[Marcellus Magunna]] is an Knight Atache for [[House Elidari]] and is an Archmeister who graduated from the Esoterium"
source: "[[Kite]]"
reliability: A
credibility: 5
tags: []
- date: 2025-10-02 - date: 2025-10-02
type: interaction type: interaction
summary: We're told by [[Fenric Draycott]] that [[House Elidari]] has been threatening to adopt a new chief enforcer. summary: We're told by [[Fenric Draycott]] that [[House Elidari]] has been threatening to adopt a new chief enforcer.
@@ -61,7 +68,7 @@ Tags:
--- ---
## 🧑‍💼 Leadership & Structure ## 🧑‍💼 Leadership & Structure
- **Leader(s):** [[NPC A]], [[NPC B]] - **Leader(s):** [[Cormack Elidari]]
- **Structure:** (council, hierarchy, cells, chapters) - **Structure:** (council, hierarchy, cells, chapters)
- **Key Offices:** (Intelligence, Logistics, Priory, Treasury, etc.) - **Key Offices:** (Intelligence, Logistics, Priory, Treasury, etc.)
@@ -81,7 +88,8 @@ Tags:
--- ---
## 🧠 Intelligence & Mentions ## 🧠 Inte
lligence & Mentions
```button ```button
name Add Intel name Add Intel
type command type command
@@ -53,7 +53,7 @@ Tags:
--- ---
## 🧑‍💼 Leadership & Structure ## 🧑‍💼 Leadership & Structure
- **Leader(s):** [[NPC A]], [[NPC B]] - **Leader(s):** [[Eosaph Tenrae]]
- **Structure:** (council, hierarchy, cells, chapters) - **Structure:** (council, hierarchy, cells, chapters)
- **Key Offices:** (Intelligence, Logistics, Priory, Treasury, etc.) - **Key Offices:** (Intelligence, Logistics, Priory, Treasury, etc.)
@@ -0,0 +1,174 @@
---
Level_of_Influence: 0
Faction: "[[House Elidari]]"
SMH_Acronym:
Tags:
- npc
---
# Cormack Elidari
*Head of the Y'athyr City Watch, Head of House Elidari*
## 🎨 Artwork
![[Cormack Elidari.png]]
*Optional caption / alt text*
---
## 🧑 NPC Overview
- **Full Name:** Cormack Elidari
- **Race / Ancestry:** Elf
- **Gender / Pronouns:** Male, He/Him
- **Occupation / Role:** Head of the City Guard
- **Faction / Allegiance:** [[House Elidari]]
- **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:** [[House Elidari]]
- **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-11-24: …
---
## 🔗 Connections
- **Related NPCs:**
- [[NPC A]] (Mentor)
- [[NPC B]] (Rival)
- **PC Ties:** (how the party knows them)
@@ -0,0 +1,174 @@
---
Level_of_Influence: 0
Faction: "[[House Tenrae]]"
SMH_Acronym:
Tags:
- npc
---
# Eosaf Elidari
*Head of the Navy, Head of House Tenrae*
## 🎨 Artwork
![[Eosaf Elidari.png]]
*Optional caption / alt text*
---
## 🧑 NPC Overview
- **Full Name:** Eosaph Tenrae
- **Race / Ancestry:** Elf
- **Gender / Pronouns:** Male, He/Him
- **Occupation / Role:** Head of the Navy
- **Faction / Allegiance:** [[House Tenrae]]
- **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:** [[House Tenrae]]
- **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-11-24: …
---
## 🔗 Connections
- **Related NPCs:**
- [[NPC A]] (Mentor)
- [[NPC B]] (Rival)
- **PC Ties:** (how the party knows them)
@@ -3,10 +3,21 @@ Level_of_Influence: -1
Faction: "[[House Elidari]]" Faction: "[[House Elidari]]"
Tags: Tags:
- npc - npc
Intel:
- date: 2025-11-24
type: report
summary: "[[Eosef Tenrae]] and [[Ronan Elidari]] will be going to the summer solistice ball, but will not be staying for the entire event."
session: "[[Session 11 - A Session]]"
source: "[[Kite]]"
reliability: C
credibility: 5
tags:
- npc
--- ---
# Ronan Elidari # Ronan Elidari
*Captain of the Guard* *Captain in the City Guard*
## 🎨 Artwork ## 🎨 Artwork
![[Ronan Elidari.png]] ![[Ronan Elidari.png]]