4.6 KiB
4.6 KiB
Level_of_Influence, Faction, SMH_Acronym, Tags
| Level_of_Influence | Faction | SMH_Acronym | Tags | |
|---|---|---|---|---|
| 0 | House Tenrae |
|
Eosaf Tenrae
Head of the Navy, Head of House Tenrae
🎨 Artwork
!
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
- DC 15 Sailing Lore
- DC 18 Society
- DC 18 Y'athyr Lore
- DC 20 Perception
- Influence Skills
- Weaknesses
- Resistances
- Biases
- Discovery Skills
🧠 Intel (auto)
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])
);
}
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)