vault commit: 2025-10-02 17:45, 8 files changed
This commit is contained in:
+216
-5
@@ -1,6 +1,217 @@
|
|||||||
[[Faylen Valora|Faylen]] and [[Val]] go to meet with the family - and are eventually let in, with the guards outside bowing to [[Faylen Valora|Faylen]]
|
---
|
||||||
|
Reputation: 0
|
||||||
|
Faction_Type: Family
|
||||||
|
Motto:
|
||||||
|
Ideology:
|
||||||
|
Symbol:
|
||||||
|
Colors:
|
||||||
|
Headquarters:
|
||||||
|
Territories:
|
||||||
|
-
|
||||||
|
Allies:
|
||||||
|
- "[[Faylen Valora]]"
|
||||||
|
Rivals:
|
||||||
|
-
|
||||||
|
SMH_Acronym:
|
||||||
|
Intel:
|
||||||
|
Tags:
|
||||||
|
- faction
|
||||||
|
---
|
||||||
|
|
||||||
# Fenric [[Draycott Family|Draycott]]
|
# Draycott Family
|
||||||
- Seems to be an old friend of [[Faylen Valora]]. Doesn't believe that [[Faylen Valora|Faylen]] would ever be caught walking around Whitewater. [[Faylen Valora|Faylen]] wonders if he has learned any Gossip
|
*One-line role/description — e.g., “Elven High House controlling Y’athir’s docks.”*
|
||||||
- There's been a change in [[House Tassarion]] leadership.
|
|
||||||
- [[House Elidari]] has been threatening to adopt a new Chief Enforcer
|
---
|
||||||
|
|
||||||
|
## 🎨 Artwork
|
||||||
|
![[Draycott Family.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
|
||||||
|
```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: …
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
Reputation: 0
|
Reputation: 0
|
||||||
Faction_Type:
|
Faction_Type: High House
|
||||||
Motto:
|
Motto:
|
||||||
Ideology:
|
Ideology:
|
||||||
Symbol:
|
Symbol:
|
||||||
|
|||||||
+8
@@ -14,10 +14,18 @@ Rivals:
|
|||||||
-
|
-
|
||||||
SMH_Acronym:
|
SMH_Acronym:
|
||||||
Intel:
|
Intel:
|
||||||
|
- date: 2025-10-02
|
||||||
|
type: interaction
|
||||||
|
summary: We're told by [[Fenric Draycott]] that [[House Elidari]] has been threatening to adopt a new chief enforcer.
|
||||||
|
source: "[[Draycott Family]]"
|
||||||
|
reliability: A
|
||||||
|
credibility: 5
|
||||||
|
tags: []
|
||||||
Tags:
|
Tags:
|
||||||
- faction
|
- faction
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
# House Elidari
|
# House Elidari
|
||||||
*Current Ruling House of Y'athyr*
|
*Current Ruling House of Y'athyr*
|
||||||
|
|
||||||
|
|||||||
+239
-3
@@ -1,5 +1,241 @@
|
|||||||
[[Kite]] uncovers some letters that indicate that they have made some threats to buy the farm of [[Atmaka Sayin]].
|
---
|
||||||
|
Reputation: 0
|
||||||
|
Faction_Type: High House
|
||||||
|
Motto:
|
||||||
|
Ideology:
|
||||||
|
Symbol:
|
||||||
|
Colors:
|
||||||
|
Headquarters:
|
||||||
|
Territories:
|
||||||
|
-
|
||||||
|
Allies:
|
||||||
|
-
|
||||||
|
Rivals:
|
||||||
|
-
|
||||||
|
SMH_Acronym:
|
||||||
|
Intel:
|
||||||
|
- date: 2025-10-02
|
||||||
|
type: report
|
||||||
|
summary: "[[House Miiran]] owns a lumbering operation that is running out of land to...lumber?"
|
||||||
|
source: "[[Kite]]"
|
||||||
|
reliability: A
|
||||||
|
credibility: 5
|
||||||
|
tags: []
|
||||||
|
- date: 2025-10-02
|
||||||
|
type: lore
|
||||||
|
summary: "[[House Miiran]] is frequently involved in the production of goods."
|
||||||
|
source: Lore
|
||||||
|
reliability: A
|
||||||
|
credibility: 5
|
||||||
|
tags: []
|
||||||
|
- date: 2025-10-02
|
||||||
|
type: report
|
||||||
|
summary: "[[Kite]] finds a series of threatening letters that indiciate [[House Miiran]] wants to purchase the farm of [[Atmaka Sayin]]"
|
||||||
|
source: "[[Kite]]"
|
||||||
|
reliability: A
|
||||||
|
credibility: 5
|
||||||
|
tags: []
|
||||||
|
Tags:
|
||||||
|
- faction
|
||||||
|
---
|
||||||
|
|
||||||
The family is frequently involved in the production of higher end goods.
|
|
||||||
|
|
||||||
We also learn that the nearby lumbering operation is running out of land to work on, especially with the nearby trackless territory.
|
|
||||||
|
|
||||||
|
# House Miiran
|
||||||
|
*One-line role/description — e.g., “Elven High House controlling Y’athir’s docks.”*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 Artwork
|
||||||
|
![[House Miiran.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
|
||||||
|
```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: …
|
||||||
|
|||||||
+8
@@ -14,6 +14,13 @@ Rivals:
|
|||||||
-
|
-
|
||||||
SMH_Acronym:
|
SMH_Acronym:
|
||||||
Intel:
|
Intel:
|
||||||
|
- date: 2025-10-02
|
||||||
|
type: interaction
|
||||||
|
summary: We're told by [[Fenric Draycott]] that there's been a recent change in leadership for [[House Tassarion]]
|
||||||
|
source: "[[Draycott Family]]"
|
||||||
|
reliability: A
|
||||||
|
credibility: 5
|
||||||
|
tags: []
|
||||||
- date: 2025-10-02
|
- date: 2025-10-02
|
||||||
type: report
|
type: report
|
||||||
summary: House Tassarion is generally known for their deaings with the craftsmanship of ships, wagons and buildings.
|
summary: House Tassarion is generally known for their deaings with the craftsmanship of ships, wagons and buildings.
|
||||||
@@ -43,6 +50,7 @@ Tags:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# House Tassarion
|
# House Tassarion
|
||||||
*One of the True High Houses*
|
*One of the True High Houses*
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
Level_of_Influence: 0
|
||||||
|
Faction: "[[House Gille]]"
|
||||||
|
SMH_Acronym:
|
||||||
|
Tags:
|
||||||
|
- npc
|
||||||
|
---
|
||||||
|
|
||||||
|
# Deidre Gille
|
||||||
|
*Local Vineyard Owner*
|
||||||
|
|
||||||
|
## 🎨 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***
|
||||||
|
- ***Influence Skills***
|
||||||
|
- ***Weaknesses***
|
||||||
|
- ***Resistances***
|
||||||
|
- ***Biases***
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏛️ 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)
|
||||||
|
|||||||
+77
@@ -0,0 +1,77 @@
|
|||||||
|
---
|
||||||
|
Level_of_Influence: 0
|
||||||
|
Faction: "[[Draycott Family]]"
|
||||||
|
SMH_Acronym:
|
||||||
|
Tags:
|
||||||
|
- npc
|
||||||
|
---
|
||||||
|
|
||||||
|
# Fenric Draycott
|
||||||
|
*Role/Description — e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"*
|
||||||
|
|
||||||
|
## 🎨 Artwork
|
||||||
|
![[Fenric Draycott.png]]
|
||||||
|
*Optional caption / alt text*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧑 NPC Overview
|
||||||
|
- **Full Name:** Fenric Draycott
|
||||||
|
- **Race / Ancestry:**
|
||||||
|
- **Gender / Pronouns:** He/Him
|
||||||
|
- **Occupation / Role:**
|
||||||
|
- **Faction / Allegiance:**
|
||||||
|
- **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***
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏛️ Relations & Factions
|
||||||
|
- **Primary Faction:** [[Draycott Family]]
|
||||||
|
- **Allied Factions:** [[House Valora]]
|
||||||
|
- **Rival Factions:** [[Faction C]]
|
||||||
|
- **Personal Enemies / Allies:** [[Faylen Valora]] --Ally
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 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:**
|
||||||
|
- [[Fenric Draycott]] is a longtime friend of [[Faylen Valora]]
|
||||||
@@ -7,24 +7,24 @@ if (!file) { new Notice("Open a Faction note first."); return; }
|
|||||||
const today = tp.date.now("YYYY-MM-DD");
|
const today = tp.date.now("YYYY-MM-DD");
|
||||||
|
|
||||||
// ---------- TYPE ----------
|
// ---------- TYPE ----------
|
||||||
new Notice("Step 1/6 — Pick Intel TYPE");
|
new Notice("Step 1/6 — Pick TYPE of Intelligence");
|
||||||
const TYPE_OPTIONS = ["interaction","report","rumor","asset","op"];
|
const TYPE_OPTIONS = ["interaction","report","rumor","asset","op","lore"];
|
||||||
const type = await tp.system.suggester(TYPE_OPTIONS.map(x => `Type: ${x}`), TYPE_OPTIONS);
|
const type = await tp.system.suggester(TYPE_OPTIONS.map(x => `Type: ${x}`), TYPE_OPTIONS);
|
||||||
if (!type) { new Notice("Cancelled."); return; }
|
if (!type) { new Notice("Cancelled."); return; }
|
||||||
|
|
||||||
// ---------- SOURCE (suggest existing notes as [[Note]]) ----------
|
// ---------- SOURCE (suggest existing notes as [[Note]]) ----------
|
||||||
new Notice("Step 2/6 — Choose SOURCE");
|
new Notice("Step 2/6 — Select Intelligence SOURCE");
|
||||||
const allFiles = app.vault.getMarkdownFiles();
|
const allFiles = app.vault.getMarkdownFiles();
|
||||||
const names = allFiles.map(f => f.basename).sort((a,b)=>a.localeCompare(b, undefined, {sensitivity:"base"}));
|
const names = allFiles.map(f => f.basename).sort((a,b)=>a.localeCompare(b, undefined, {sensitivity:"base"}));
|
||||||
const wikiChoices = ["(manual entry)…", ...names.map(n => `[[${n}]]`)];
|
const wikiChoices = ["(Manual Entry)…", ...names.map(n => `[[${n}]]`)];
|
||||||
let sourcePick = await tp.system.suggester(wikiChoices, wikiChoices);
|
let sourcePick = await tp.system.suggester(wikiChoices, wikiChoices);
|
||||||
if (!sourcePick) { new Notice("Cancelled."); return; }
|
if (!sourcePick) { new Notice("Cancelled."); return; }
|
||||||
let source = sourcePick === "(manual entry)…"
|
let source = sourcePick === "(Manual Entry)…"
|
||||||
? (await tp.system.prompt("Source (free text or [[Link]])")) ?? ""
|
? (await tp.system.prompt("Source (free text or [[Link]])")) ?? ""
|
||||||
: sourcePick;
|
: sourcePick;
|
||||||
|
|
||||||
// ---------- SUMMARY (free text, then auto-complete [[links]]) ----------
|
// ---------- SUMMARY (free text, then auto-complete [[links]]) ----------
|
||||||
new Notice("Step 3/6 — Write SUMMARY (you can include [[links]])");
|
new Notice("Step 3/6 — Write Intelligence SUMMARY");
|
||||||
let summary = await tp.system.prompt("Summary (what happened)?\nTip: You can include [[Note]] names; we’ll auto-complete them next.") ?? "";
|
let summary = await tp.system.prompt("Summary (what happened)?\nTip: You can include [[Note]] names; we’ll auto-complete them next.") ?? "";
|
||||||
|
|
||||||
// Helper: resolve [[links]] in the summary to existing notes (prompt if ambiguous)
|
// Helper: resolve [[links]] in the summary to existing notes (prompt if ambiguous)
|
||||||
@@ -67,12 +67,12 @@ while (true) {
|
|||||||
|
|
||||||
// ---------- RELIABILITY / CREDIBILITY ----------
|
// ---------- RELIABILITY / CREDIBILITY ----------
|
||||||
new Notice("Step 4/6 — Reliability (A–E)");
|
new Notice("Step 4/6 — Reliability (A–E)");
|
||||||
const relDisplay = ["A — confirmed","B — likely","C — uncertain","D — doubtful","E — unknown"];
|
const relDisplay = ["A — Confirmed","B — Likely","C — Uncertain","D — Doubtful","E — Unknown"];
|
||||||
const relValues = ["A","B","C","D","E"];
|
const relValues = ["A","B","C","D","E"];
|
||||||
const reliability = (await tp.system.suggester(relDisplay, relValues)) ?? "C";
|
const reliability = (await tp.system.suggester(relDisplay, relValues)) ?? "C";
|
||||||
|
|
||||||
new Notice("Step 5/6 — Credibility (1–5)");
|
new Notice("Step 5/6 — Credibility (1–5)");
|
||||||
const credDisplay = ["5 — strong","4 — good","3 — fair","2 — weak","1 — very weak"];
|
const credDisplay = ["5 — Strong","4 — Good","3 — Fair","2 — Weak","1 — Very Weak"];
|
||||||
const credValues = ["5","4","3","2","1"];
|
const credValues = ["5","4","3","2","1"];
|
||||||
const credibility = (await tp.system.suggester(credDisplay, credValues)) ?? "3";
|
const credibility = (await tp.system.suggester(credDisplay, credValues)) ?? "3";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user