5.7 KiB
5.7 KiB
Level_of_Influence, Faction, SMH_Acronym, Tags, Intel
| Level_of_Influence | Faction | SMH_Acronym | Tags | Intel | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | House Asase |
|
|
Avas Assase
Archmeister of Y'athyr
🎨 Artwork
!
Optional caption / alt text
🧑 NPC Overview
- Full Name: Avas Assase
- Race / Ancestry: Elf
- Gender / Pronouns: He/Him
- Occupation / Role: Archmeister (Akin to Advisor, also deal with Administrative Duties on behalf of the Steward of the City. Kite also knows that the Archmeister mediates councils of each interest group in the city)
- Faction / Allegiance: House Asase
- 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 Genealogy Lore
- DC 18 Society
- DC 18 Arcana, Religion, Occultism and Nature
- DC 20 Perception
- Influence Skills
- DC 15 Valentia Lore
- DC 18 Y’athyr Lore
- DC 18 Arcana
- DC 18 Occultism
- DC 20 Religion
- DC 20 Nature
- DC 22 Diplomacy
- DC 22 Intimidation
- Weaknesses
- Offering a story of magical nature reduces the Influence DC by 4.
- 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 Asase
- 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-02: …
🔗 Connections
- Related NPCs:
- Iniana Asase (Daughter)
- NPC B (Rival)
- PC Ties: (how the party knows them)