---
Date: 2026-04-23
Session_Name: Session 28 - Downtime Activities
Tags:
  - pf2e
  - session
---

# Session 28 - Downtime Activities

> **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:**
	- [[Val]] goes to meet with [[Iniana Asase]] and gets an update on how the meeting with [[Deidre Gille]] and [[Therin Asase]] went. She also states that she knows we've been stepping on alot of people's toes - and she finally inquires as to what we're up to. [[Val]] gives her the short and easy of what we're up to, but let's her in on the truth. It did however, seem like [[Therin Asase]] was going to investigate [[Deidre Gille]]'s situation.
	- 
- **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

- [ ]
    
- [ ]
    
- [ ]
