Files
a-legacy-forged-obsid-sync/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 32 - Downtime Activities.md
T

3.9 KiB

Date, Session_Name, Tags
Date Session_Name Tags
2026-07-01 Session 32 - Downtime Activities
pf2e
session

Session 32 - Downtime Activities

Date: = this.DateName: = this.Session_Name


📄 Session Summary (auto)

No summary yet — click “Generate Summary” below.

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:

    • The group performs some downtime activities..
      • Calen reaches out to the High Curate and requests some Acolyte's to be sent to the new SMH Headquarters.
        • Discovery on Celosia and Influence the Thin Wisps.
        • Influence Iniana Asase and learns some information about what the City Watch in Whitewater is up to:
        • Most of the guards are just The Archmasons in new armor. They have been put through some efficacy training and under the new governance, the brutality of The Archmasons is being tamped down.
        • That is not to say to that it's not happening, only that it's getting better.
        • The most loyal of the guards are being recruited for some other branch of the City Watch.
      • Metternich
        • Mentions that the City Watch who are being recruited for the Special branch of the Watch are likely for House Elidari and will likely be fiercely loyal.
  • Combat:

  • Outcome / Loot:


🧠 Intel Captured (auto)

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