Compare commits

..
2 Commits
15 changed files with 429 additions and 11 deletions
@@ -5,6 +5,14 @@ SMH_Acronym:
Tags: Tags:
- npc - npc
Intel: Intel:
- date: 2025-12-10
type: interaction
summary: "[[Nuala Elidari]] extends an offer of adoption to [[Faylen Valrora]] into [[House Elidari]], under the stewardship of [[Avas Assase]], as well as a position as Meister under him."
session: "[[Session 13 - Summer Solistice Pt. 2]]"
source: "[[Nuala Elidari]]"
reliability: A
credibility: 5
tags: []
- date: 2025-12-03 - date: 2025-12-03
type: interaction type: interaction
summary: "[[Avas Assase]] expressed an interest in doing good for the lower portion of the city, and expressed thankfulness for the help with [[Iniana Asase|Iniana's]] Soup Kitchen." summary: "[[Avas Assase]] expressed an interest in doing good for the lower portion of the city, and expressed thankfulness for the help with [[Iniana Asase|Iniana's]] Soup Kitchen."
@@ -25,6 +33,7 @@ Intel:
# Avas Assase # Avas Assase
*Archmeister of Y'athyr* *Archmeister of Y'athyr*
@@ -19,7 +19,7 @@ Tags:
- **Full Name:** [[Calia Noctilun]] - **Full Name:** [[Calia Noctilun]]
- **Race / Ancestry:** Elf - **Race / Ancestry:** Elf
- **Gender / Pronouns:** She/Her - **Gender / Pronouns:** She/Her
- **Occupation / Role:** Talent Scout - **Occupation / Role:** Talent Scout at the Figment Grand Hall
- **Faction / Allegiance:** [[House Noctilun]] - **Faction / Allegiance:** [[House Noctilun]]
- **SMH (what THEY call it):** `= this.SMH_Acronym` - **SMH (what THEY call it):** `= this.SMH_Acronym`
- **Notable Traits:** (quirks, mannerisms, appearance) - **Notable Traits:** (quirks, mannerisms, appearance)
@@ -36,6 +36,9 @@ Tags:
- DC 18 Performance - DC 18 Performance
- DC 20 Perception - DC 20 Perception
- ***Influence Skills*** - ***Influence Skills***
- DC 20 Acrobatics
- DC 20 Diplomacy
- DC 22 Intimidation
- ***Weaknesses*** - ***Weaknesses***
- ***Resistances*** - ***Resistances***
- ***Biases*** - ***Biases***
@@ -1,5 +1,5 @@
--- ---
Level_of_Influence: 0 Level_of_Influence: -1
Faction: "[[House Elidari]]" Faction: "[[House Elidari]]"
SMH_Acronym: SMH_Acronym:
Tags: Tags:
@@ -177,6 +177,8 @@ action Templater: Insert Add Intel Entry to NPC
## 🔗 Connections ## 🔗 Connections
- **Related NPCs:** - **Related NPCs:**
- [[NPC A]] (Mentor) - [[Nuala Elidari]] (Wife)
- [[NPC B]] (Rival) - [[Onora Elidari]] (Daughter)
- [[Ronan Elidari]] (Son)
- [[Kerrian Calil]] (Soon to be Son-in-law)
- **PC Ties:** (how the party knows them) - **PC Ties:** (how the party knows them)
@@ -36,7 +36,14 @@ Tags:
- DC 18 Y'athyr Lore - DC 18 Y'athyr Lore
- DC 20 Perception - DC 20 Perception
- ***Influence Skills*** - ***Influence Skills***
- DC 18 Valentia Lore
- DC 18 Arcana
- DC 18 Athletics
- DC 20 Society
- DC 22 Diplomacy
- DC 22 Performance
- ***Weaknesses*** - ***Weaknesses***
- Expressing an interest and discussing the city's reconstruction efforts, as well as Valentia reduces the influence DC by 4.
- ***Resistances*** - ***Resistances***
- ***Biases*** - ***Biases***
@@ -1,5 +1,5 @@
--- ---
Level_of_Influence: 2 Level_of_Influence: 3
Faction: "[[Draycott Family]]" Faction: "[[Draycott Family]]"
SMH_Acronym: SMH_Acronym:
Tags: Tags:
@@ -5,6 +5,14 @@ SMH_Acronym:
Tags: Tags:
- npc - npc
Intel: Intel:
- date: 2025-12-10
type: report
summary: "[[Katarin Calil]], [[Onora Elidari]] and [[Lord Ellin Vaust]] do not applaud a toast that [[Nuala Elidari]] offers to the previous Steward, [[Ilvara Valrora]]"
session: "[[Session 13 - Summer Solistice Pt. 2]]"
source: Perception Check
reliability: B
credibility: 5
tags: []
- date: 2025-12-03 - date: 2025-12-03
type: interaction type: interaction
summary: "[[Ilvara Valrora]] expresses that she has been keeping up with what the party has been up to at the point of the Masquerade, but she doesn't approve of our actions thus far." summary: "[[Ilvara Valrora]] expresses that she has been keeping up with what the party has been up to at the point of the Masquerade, but she doesn't approve of our actions thus far."
@@ -15,7 +23,8 @@ Intel:
tags: [] tags: []
--- ---
# Ilvara Valora
# Ilvara Valrora
*Former Master of Coin and Steward of Y'athyr* *Former Master of Coin and Steward of Y'athyr*
## 🎨 Artwork ## 🎨 Artwork
@@ -1,10 +1,20 @@
--- ---
Level_of_Influence: 8 Level_of_Influence: 10
Faction: "[[House Asase]]" Faction: "[[House Asase]]"
Tags: Tags:
- npc - npc
Intel:
- date: 2025-12-10
type: interaction
summary: In a conversation with [[Iniana Assase]] and [[Fenric Draycott]], [[Iniana Assase]] says that there has been an illness/disease spreading through the Drenches.
session: "[[Session 13 - Summer Solistice Pt. 2]]"
source: "[[Iniana Asase]]"
reliability: A
credibility: 5
tags: []
--- ---
# Iniana Asase # Iniana Asase
*Daughter of [[House Asase]]* *Daughter of [[House Asase]]*
@@ -1,11 +1,21 @@
--- ---
Level_of_Influence: 0 Level_of_Influence: 2
Faction: "[[House Calil]]" Faction: "[[House Calil]]"
SMH_Acronym: SMH_Acronym:
Tags: Tags:
- npc - npc
Intel:
- date: 2025-12-10
type: interaction
summary: "[[Kerrian Calil]] is a writer of books that his father doesn't approve of."
session: "[[Session 13 - Summer Solistice Pt. 2]]"
source: "[[Onora Elidari]]"
reliability: B
credibility: 5
tags: []
--- ---
a
# Kerrian Calil # Kerrian Calil
*Role/Description — e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"* *Role/Description — e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"*
@@ -1,5 +1,5 @@
--- ---
Level_of_Influence: 2 Level_of_Influence: 3
Faction: Faction:
SMH_Acronym: Synchronized Mushroom Hiccup SMH_Acronym: Synchronized Mushroom Hiccup
Tags: Tags:
@@ -0,0 +1,181 @@
---
Level_of_Influence: 0
Faction:
SMH_Acronym:
Tags:
- npc
---
# Man in the White Mask
*Role/Description — e.g., "Captain of the Guard", "Elven Scholar", "Local Merchant"*
## 🎨 Artwork
![[Man in the White Mask.png]]
*Optional caption / alt text*
---
## 🧑 NPC Overview
- **Full Name:**
- **Race / Ancestry:**
- **Gender / Pronouns:**
- **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***
- DC 15 Warfare Lore
- DC 18 Society
- DC 18 Intimidation
- DC 20 Perception
- ***Influence Skills***
- DC 20 Deception
- DC 22 Diplomacy
- DC 22 Intimidation
- ***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:**
- **Important Items / Assets:**
- **Plot Hooks / Ties to PCs:**
- **Session Notes / Updates:**
- 2025-12-10: …
---
## 🔗 Connections
- **Related NPCs:**
- [[NPC A]] (Mentor)
- [[NPC B]] (Rival)
- **PC Ties:** (how the party knows them)
@@ -1,11 +1,29 @@
--- ---
Level_of_Influence: 0 Level_of_Influence: 2
Faction: "[[House Elidari]]" Faction: "[[House Elidari]]"
SMH_Acronym: SMH_Acronym:
Tags: Tags:
- npc - npc
Intel:
- date: 2025-12-10
type: report
summary: "[[Onora Elidari]] stormed out of The House Valrora reinstatement announcement because she A) Might have to be [[Faylen Valrora]]'s Sister and B) The Wedding Announcement was minimized. Additionally, if [[Faylen Valrora]] is adopted, her position as a social climber is knocked down a peg."
session: "[[Session 13 - Summer Solistice Pt. 2]]"
source: "[[Metternich]]"
reliability: C
credibility: 4
tags: []
- date: 2025-12-10
type: report
summary: The Wedding of [[Onora Elidari]] and [[Kerrian Calil]] is on October 22nd.
session: "[[Session 13 - Summer Solistice Pt. 2]]"
reliability: A
credibility: 5
tags: []
--- ---
# Onora Elidari # Onora Elidari
*Youngest Daughter of [[House Elidari]]* *Youngest Daughter of [[House Elidari]]*
@@ -43,6 +61,7 @@ Tags:
- DC 20 Performance - DC 20 Performance
- DC 22 Intimidation - DC 22 Intimidation
- ***Weaknesses*** - ***Weaknesses***
- Discussing her own ambitions and how to bring them to fruition reduces the influence DC by 4.
- ***Resistances*** - ***Resistances***
- ***Biases*** - ***Biases***
@@ -1,5 +1,5 @@
--- ---
Level_of_Influence: 2 Level_of_Influence: 3
Faction: "[[House Vyshaan]]" Faction: "[[House Vyshaan]]"
SMH_Acronym: SMH_Acronym:
Tags: Tags:
@@ -0,0 +1,168 @@
---
Date: 2025-12-10
Session_Name: Session 13 - Summer Solistice Pt. 2
Tags:
- pf2e
- session
---
# Session 13 - Summer Solistice Pt. 2
> **Date:** `= this.Date` • **Name:** `= this.Session_Name`
---
## 📄 Session Summary (auto)
<!-- SUMMARY-START -->
*No summary yet — click “Generate Summary” below.*
<!-- SUMMARY-END -->
```button
name ✍️ Generate AI Summary
type template
action Templates/Generate AI Session Summary.md
templater true
```
## 🧭 Where / When
- **Region / Location:**
- **In-game Date / Time:**
- **Weather / Conditions:**
---
## 👥 PCs Present / Absent
- **Present:**
- **Absent:**
---
## ⭐ Highlights (feed the auto-summary)
> Add one or more `Highlight::` lines. The button will build a summary from these.
- Highlight::
- Highlight::
- Highlight::
---
## 🎯 Quests & Progress
- **Active Objectives:**
- **Progress / Resolutions:**
---
## 🗣️ NPCs Met / Factions
- **NPCs:** [[ ]] [[ ]] [[ ]]
- **Factions Touched:** [[ ]] [[ ]]
---
## ⚔️ Encounters
- **Social / Exploration:**
- **Combat:**
- **Outcome / Loot:**
---
## 🧠 Intel Captured (auto)
```dataviewjs
const THIS = dv.current();
const sessName = THIS.file.name;
const sessDate = THIS.Date ?? dv.current().file.frontmatter?.Date ?? "";
const sessLC = sessName.toLowerCase();
const pages = dv.pages("#npc or #faction").where(p => p.Intel);
function matchesSessionField(sessionField) {
const list = Array.isArray(sessionField) ? sessionField : [sessionField];
for (const s of list) {
if (!s) continue;
if (typeof s === "object" && s.path) {
const base = s.path.split("/").pop().replace(/\.md$/i,"");
if (base.toLowerCase() === sessLC) return true;
} else {
const text = String(s);
if (text.includes(`[[${sessName}]]`)) return true;
if (text.toLowerCase() === sessLC) return true;
}
}
return false;
}
const rows = [];
for (const p of pages) {
for (const it of p.Intel) {
let ok = false;
if (it.session) ok = matchesSessionField(it.session);
if (!ok && sessDate && it.date) ok = String(it.date) === String(sessDate); // fallback
if (ok) {
rows.push({
from: p.file.link,
date: it.date ?? "",
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 ?? "")
});
}
}
}
rows.sort((a,b)=> String(b.date).localeCompare(String(a.date)));
if (!rows.length) {
dv.paragraph("_No intel captured for this session yet._");
} else {
dv.table(
["From", "Date", "Type", "Summary", "Source", "Rel", "Cred", "Tags"],
rows.map(r => [r.from, r.date, r.type, r.summary, r.source, r.rel, r.cred, r.tags])
);
}
```
---
## 📦 Treasure & Rewards
- **Items:**
- **Coin:**
- **XP / Milestones:**
---
## 🔜 Next Hooks / To-Dos
- [ ]
- [ ]
- [ ]
Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB