Files

7.3 KiB
Raw Blame History

Reputation, Faction_Type, Motto, Ideology, Symbol, Colors, Headquarters, Territories, Allies, Rivals, SMH_Acronym, Intel, Tags
Reputation Faction_Type Motto Ideology Symbol Colors Headquarters Territories Allies Rivals SMH_Acronym Intel Tags
0 High House
date type summary source reliability credibility tags
2026-07-01 interaction Iniana Asase mentions that representatives from House Evandra are visiting with House Asase. She also does not know anything about the House Miiran representatives that are in the city; she will however try to find out. Iniana Asase B 5
date type summary source reliability credibility tags
2026-02-03 interaction According to Freddie, those of House Asase reports to a few different houses in the iupper echelons - tha parents have connections with House Evandra which they attempt to leverage regularly. It is part of the reason that they're attempting to work around. It is also rumored that the Assase has operations in the Wells - possibly the one that is abducting all of the Halflings. The Eldest Child is more interested in his rules and books to have loyalties to anyone.' Freddie A 5
date type summary source reliability credibility tags
2025-10-08 interaction Says that House Asase is working to rebuild the walls of the Drenches to keep out the seaspray. Ronan Elidari A 5
date type summary source reliability credibility tags
2025-10-02 interaction Vaust informs us that House Asase has been exceeding their quota for excavations underneath the arch. It's possible that House Asase is working with The Archmasons on this endeavour. Lord Ellin Vaust B 5
date type summary source reliability credibility tags
2025-10-02 interaction We've learned that Iniana Asase runs a Soup Kitchen in the Drenches Kite A 5
date type summary source reliability credibility tags
2025-10-02 rumor The Inspector General and Auditor of Internal Affairs for Y'athyr is from this house. Kite A 1
faction

House Asase

Child House of House Evandra

🎨 Artwork

!House Asase.png Optional caption / artist credit


🧭 Identity & Heraldry

  • Motto: = default(this.Motto, "—")
  • Symbol: = default(this.Symbol, "—")
  • Colors: = default(this.Colors, "—")
  • Headquarters: = default(this.Headquarters, "—")
  • Territories: = this.Territories

📜 Ideology & Goals

  • Ideology / Alignment: = default(this.Ideology, "—")
  • Primary Goals:

  • Taboos / Anathema:


🤝 Relationship with Party

  • Reputation: = this.Reputation

🧑‍💼 Leadership & Structure

  • Leader(s): NPC A, NPC B
  • Structure: (council, hierarchy, cells, chapters)
  • Key Offices: (Intelligence, Logistics, Priory, Treasury, etc.)

🧰 Assets & Operations

  • Resources: (coin, troops, mages, ships, safehouses, contacts)
  • Notable Holdings:
  • Typical Ops / Tactics:

🕊️ Diplomacy & Relations

  • Allies: = this.Allies
  • Rivals: = this.Rivals
  • Stance toward “SMH” (their wording): = default(this.SMH_Acronym, "—")

🧠 Intelligence & Mentions

name  Add Intel
type command
action Templater: Insert Add Intel Entry to Faction
const THIS = dv.current();
const thisName = String(THIS.file.name);
const thisLC = thisName.toLowerCase();

const factions = dv.pages("#faction");

// mention detector (same logic as your table)
function mentionsThisFaction(entry) {
  const sum = String(entry.summary ?? "");
  if (sum.includes(`[[${thisName}]]`) || sum.includes(`[[${thisName}|`)) return true;
  const src = entry.source;
  const list = Array.isArray(src) ? src : (src ? [src] : []);
  for (const s of list) {
    if (typeof s === "string") {
      if (s.includes(`[[${thisName}]]`) || s.includes(`[[${thisName}|`)) return true;
      if (s.toLowerCase() === thisLC) return true;
    } else if (s && typeof s === "object" && s.path) {
      const base = s.path.split("/").pop().replace(/\.md$/i,"").toLowerCase();
      if (base === thisLC) return true;
    }
  }
  return false;
}

const own = (THIS.Intel ?? []).length;

let mentions = 0;
for (const p of factions.where(p => p.file.name !== thisName)) {
  for (const it of (p.Intel ?? [])) if (mentionsThisFaction(it)) mentions++;
}

dv.paragraph(`_Entries: ${own + mentions} (own ${own} + mentions ${mentions})_`);
// Current faction
const THIS = dv.current();
const thisName = String(THIS.file.name);
const thisLC   = thisName.toLowerCase();

// All faction pages (including this one)
const factions = dv.pages("#faction");

// Mention detector: summary has [[This Faction]] OR source points at this faction
function mentionsThisFaction(entry) {
  const sum = String(entry.summary ?? "");
  if (sum.includes(`[[${thisName}]]`) || sum.includes(`[[${thisName}|`)) return true;

  const src = entry.source;
  const list = Array.isArray(src) ? src : (src ? [src] : []);
  for (const s of list) {
    if (typeof s === "string") {
      if (s.includes(`[[${thisName}]]`) || s.includes(`[[${thisName}|`)) return true;
      if (s.toLowerCase() === thisLC) return true; // fallback: plain text match
    } 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;
    }
  }
  return false;
}

// Collect rows
const rows = [];

// 1) Own intel
for (const it of (THIS.Intel ?? [])) {
  rows.push({
    date: it.date ?? "",
    from: THIS.file.link,
    type: it.type ?? "",
    summary: String(it.summary ?? ""),
    source: it.source ?? "",
    rel: it.reliability ?? "",
    cred: it.credibility ?? "",
    tags: Array.isArray(it.tags) ? it.tags.join(", ") : (it.tags ?? "")
  });
}

// 2) Mentions from other factions
for (const p of factions.where(p => p.file.name !== thisName)) {
  for (const it of (p.Intel ?? [])) {
    if (mentionsThisFaction(it)) {
      rows.push({
        date: it.date ?? "",
        from: p.file.link,
        type: it.type ?? "",
        summary: String(it.summary ?? ""),
        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.table(
    ["Date","From Faction","Type","Summary","Source","Rel","Cred","Tags"],
    rows.map(r => [r.date, r.from, r.type, r.summary, r.source, r.rel, r.cred, r.tags])
  );
}

Add new entries in the frontmatter under Intel: (keep newest on top). Suggested fields: date, type, summary, source, reliability, credibility, tags.


TABLE link(file.name) AS NPC, number(Level_of_Influence) AS Influence, default(SMH_Acronym, "—") AS SMH
FROM #npc
WHERE file.name != "NPC Template"
AND (
  Faction = this.file.link
  OR lower(string(Faction)) = lower(this.file.name)
  OR contains(lower(string(Faction)), lower(this.file.name))
)
SORT number(Level_of_Influence) DESC

📌 Plot Hooks & Notes


🗒 Session Updates

  • 2025-10-02: …