Files
a-legacy-forged-obsid-sync/Dungeons and Dragons/A Legacy Forged/Session Notes/Session 22 - Wells Investigation Pt. 2.md
T

3.0 KiB

Date, Session_Name, Tags
Date Session_Name Tags
2026-03-04 Session 22 - Wells Investigation Pt. 2
pf2e
session

Session 22 - Wells Investigation Pt. 2

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:

  • 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