--- Reputation: 0 Faction_Type: Gang Motto: Ideology: Symbol: Hammer & Chisel Colors: Headquarters: Territories: - Whitewater Allies: - Rivals: - SMH_Acronym: Intel: - date: 2025-10-02 type: interaction summary: Vaust informs us that [[House Tenrae]] has been using [[The Archmasons]] as pseudo-mercenaries. source: "[[Lord Ellin Vaust]]" reliability: B credibility: 4 tags: [] - date: 2025-10-02 type: rumor summary: Fritch would be our best vector of getting further information on [[The Archmasons]] source: "[[Kite]]" reliability: C credibility: 4 tags: [] - date: 2025-10-02 type: rumor summary: "They are undertaking an ongoing project to excavate under the arch to build out carved out homes and save those for who are loyal or can offer something to [[The Archmasons]]. Anyone who can offer services is often compensated and provided those homes. " source: "[[Calen]]" reliability: B credibility: 4 tags: [] - date: 2025-10-02 type: rumor summary: People in Whitewater are walking on eggshells to avoid injury - it's not uncommon for someone in the way of the Arch masons getting hurt. Most could benefit from Magical Healing. Disease is not uncommon here, but most people hope for the best. source: "[[Calen]]" reliability: B credibility: 4 tags: [] Tags: - faction --- # The Archmasons *Ruling Faction of the Whitewater District* --- ## 🎨 Artwork ![[The Archmasons.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:** - Runs a Protection Racket in Whitewater - **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:** - Protection Rackets --- ## 🕊️ Diplomacy & Relations - **Allies:** `= this.Allies` - **Rivals:** `= this.Rivals` - **Stance toward “SMH” (their wording):** `= default(this.SMH_Acronym, "—")` --- ## 🧠 Intelligence & Mentions ```button name ➕ Add Intel type command action Templater: Insert Add Intel Entry to Faction ``` ```dataviewjs 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})_`); ``` ```dataviewjs // 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`. --- ## 🔗 Related NPCs (auto) ```dataview 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: …