<% name %>
:FasPerson: Player Character | :FasQuoteLeft: (insert quote) :FasQuoteRight:
Infobox
^put pic hereindex
Campaign Journal
// Set path and class const vault = this.app.vault.adapter.getResourcePath("").split("?")[0]; dv.container.className += ' hideSort cards cards-cover cards-1-1'; // Display PC card table dv.table(["cover", "name", "details"], dv.pages(`"Compendium/Party/Player Characters"`) .sort(page => page.file.name, "asc") .map(p => [ ``, // For image link use: [](<${p.file.name}#${p.file.name}>) p.headerLink, obsidian.Platform.isMobile ? `:FasCrown: Level ${p.level}<br>:FasUserGroup: ${p.race}<br>:RiSwordFill: ${p.class}` : `:FasCrown: Level ${p.level} / :FasUserGroup: ${p.race} / :RiSwordFill: ${p.class}` ]) );NPC's
Non-Player Characterdv.container.className += ' listMe'; let pages = dv.pages('"Compendium/NPC\'s"').sort(p => p.file.name, "asc"); dv.table(["Name"], pages.map(page => [`- ${page.headerLink}`]));
BUTTON[npc]Agenda
Objectives, Pursuits, & Questsdv.container.className += ' listMe'; let tags = []; let pages = dv.pages('"Compendium/Party/Quests"').sort(p => p.file.name, "asc"); dv.table(["Name", "Status"], pages.map(page => { const questStatusTerms = ["quest/completed", "quest/abandoned", "quest/failed", "quest/ongoing", "quest/pending"]; let status = questStatusTerms.find(term => page.tags && page.tags.includes(term)); status = status ? `(${status.replace("quest/", "")})` : ""; return [`- ${page.headerLink} ${status}`, status]; }));
BUTTON[quest]Locations
Countries, Settlements, & Topographydv.container.className += ' listMe'; let pages = dv.pages('"Compendium/Atlas"').sort(p => p.file.name, "asc"); dv.table(["Name", "Type"], pages.map(page => [`- ${page.headerLink} (${page.type})`, page.type]));
BUTTON[plane, realm, continent, region, locale, landmark]Lore & Mythos
Factions, Gods, Relics, & Moredv.container.className += ' listMe'; let pages = dv.pages('"Compendium/Lore"').sort(p => p.file.name, "asc"); dv.table(["Name", "Type"], pages.map(page => [`- ${page.headerLink} (${page.type})`, page.type]));
BUTTON[deity, event, object, org]Session Notes
Summaries, Transcripts, & Notesdv.container.className += ' listMe'; let pages = dv.pages('"Session Notes"').sort(p => p.file.name, "desc"); dv.table(["Date"], pages.map(page => [`- ${page.headerLink}`]));
BUTTON[note]PCs
Player Charactersdv.container.className += ' listMe'; let pages = dv.pages('"Compendium/Party/Player Characters"').sort(p => p.file.name, "asc"); dv.table(["Name"], pages.map(page => [`- ${page.headerLink}`]));
BUTTON[PC]Link to originalMaps
Mapsdv.container.className += ' listMe'; let pages = dv.pages('"Maps"').sort(p => p.file.name, "asc"); dv.table(["Name", "Type"], pages.map(page => [`- ${page.headerLink} (${page.type})`, page.type]));Details:
Type Stat :FasCrown: Level =this.level:RiSwordFill: Class =this.class:FasHandFist: Archetype =this.subClass:FasUserGroup: Race =this.race
Quote
marker
Column
STORYLINES:
LIST WITHOUT ID headerLink FROM "Compendium/Party/Quests" AND [[<% name %>#-name-|<% name %>]] SORT file.ctime DESCHISTORY
LIST WITHOUT ID headerLink FROM "Session Notes" AND [[<% name %>#-name-|<% name %>]] SORT file.ctime DESC
