--- Reputation: 0 Faction_Type: Gang Motto: Ideology: Semi-Communism Symbol: Colors: Headquarters: Territories: - Drenches Allies: - Rivals: - SMH_Acronym: Intel: - date: 2025-10-02 type: interaction summary: Vaust informs us that some of the taxes that the [[Thin Wisps]] impose on those in the Drenches, end up in the hands of [[House Elidari]]. source: "[[Lord Ellin Vaust]]" reliability: A credibility: 5 tags: [] - date: 2025-10-02 type: interaction summary: Maltrix in [[Session 8 - Operatic Intentions]] believes that their vision for the Drenches, is idealistic. They believe that they should be the ones running the Drenches. source: Maltrix reliability: A credibility: 5 tags: [] - date: 2025-10-02 type: interaction summary: We were explicitly warned again, by the [[Thin Wisps]] to stop snooping in their territory. source: "[[Calen]]" reliability: A credibility: 5 tags: [] - date: 2025-10-02 type: interaction summary: "[[Metternich]] received communiques from his spies from the [[Thin Wisps]], with them explicitly warning the SMH to stay off their turf." source: "[[Session 1 - The Beginning of the End]]" reliability: A credibility: 5 tags: [] Tags: - faction --- # Thin Wisps *Territorial Gang of the Drenches* --- ## 🎨 Artwork ![[Thin Wisps.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:** - Believe they should be the one's running the drenches - **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:** - Intimidation (see intel) - Thievery --- ## 🕊️ 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: …