Files

4.6 KiB
Raw Blame History

Level_of_Influence, Faction, SMH_Acronym, Tags
Level_of_Influence Faction SMH_Acronym Tags
2 House Gille
npc

Deidre Gille

Local Vineyard Owner, head of House Gille

🎨 Artwork

!Deidre Gille.png Optional caption / alt text


🧑 NPC Overview

  • Full Name: Deidre Gille
  • Race / Ancestry: Elf
  • Gender / Pronouns: She/Her
  • Occupation / Role:
  • Faction / Allegiance: House Gille
  • 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 14 Wine Lore
      • DC 17 Crafting
      • DC 19 Perception
    • Influence Skills
    • Weaknesses
    • Resistances
    • Biases

🧠 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 Gille
  • 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-10-02: …

🔗 Connections

  • Related NPCs:
    • NPC A (Mentor)
    • NPC B (Rival)
  • PC Ties: (how the party knows them)