---
Level_of_Influence: 0
Faction:
SMH_Acronym:
Tags:
  - npc
Intel:
  - date: 2026-04-02
    type: interaction
    summary: "[[Calen]] promised that he would come back to Harborgate and have a spirited theological discussion with [[Morthwyl Griffith]] regarding the differences between Seekers of Alseta and standard Practitioners of Alseta."
    session: "[[Session 25 - A Whole Investigation]]"
    source: "[[Calen]]"
    reliability: A
    credibility: 5
    tags: []
---

# Morthwyl Griffith
*High Priest of Harborgate*

## 🎨 Artwork
![[Morthwyl Griffith.png]]
*Optional caption / alt text*

---

## 🧑 NPC Overview
- **Full Name:** Morthwyl Griffith
- **Race / Ancestry:** Elf
- **Gender / Pronouns:** He/Him
- **Occupation / Role:** High Priest of Harborgate
- **Faction / Allegiance:** Church of Alseta
- **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:** [[Faction Name]]
- **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:** Harborgate
- **Important Items / Assets:**
- **Plot Hooks / Ties to PCs:**
- **Session Notes / Updates:**
  - 2026-04-02: …

---

## 🔗 Connections
- **Related NPCs:**
  - [[NPC A]] (Mentor)
  - [[NPC B]] (Rival)
- **PC Ties:** (how the party knows them)
