# [[TTRPGs Games Index]] ## List of current campaigns This is a list of all the campaigns (including one-shots) that I've played (since I started this list). %% ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { totalGames = totalGames +1; return true; } } }).length return numOfGames } dv.table(["Campaign","System","Sessions", "Role","Status"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .sort(b => b.status) .map(b => [dv.fileLink(b.file.path,false,[b.campaign]),b.system,getNumOfGames(b.campaign),b.role,b.status])) ``` %% |Campaign|System|Sessions|Role|Status| |---|---|---|---|---| |[[ttrpgs/The Undead Unkillers/World.md\|The Undead Unkillers]]| Pathfinder 2e|88|player|active| |[[ttrpgs/A Kobold Christmas/World.md\|A Kobold Christmas]]| D&D 5e|1|gm|inactive| |[[ttrpgs/Alice Is Missing/World.md\|Alice Is Missing]]| Alice Is Missing|1|player|inactive| |[[ttrpgs/Alice is Missing - Beta test/World.md\|Alice is Missing - Beta test]]| Alice Is Missing|1|player|inactive| |[[ttrpgs/Beneath the Black Rose/World.md\|Beneath the Black Rose]]| D&D 2024|1|player|inactive| |[[ttrpgs/Blood and Lightning/World.md\|Blood and Lightning]]| 13th Age|1|player|inactive| |[[ttrpgs/Chaos Familiars/World.md\|Chaos Familiars]]| The Witch Is Dead|1|player|inactive| |[[ttrpgs/Chariot of the Gods/World.md\|Chariot of the Gods]]| Alien RPG|4|player|inactive| |[[ttrpgs/Circle of Uncut Diamonds/World.md\|Circle of Uncut Diamonds]]| Candela Obscura|5|player|inactive| |[[ttrpgs/City of Arches/World.md\|City of Arches]]| D&D 2024|7|player|inactive| |[[ttrpgs/Codex of Brambles/World.md\|Codex of Brambles]]| null|1|player|inactive| |[[ttrpgs/Cry of the Stingbat/World.md\|Cry of the Stingbat]]| Shadowdark|2|player|inactive| |[[ttrpgs/Curse of the Snowglobes/World.md\|Curse of the Snowglobes]]| Kids on Bikes 1e|1|player|inactive| |[[ttrpgs/Days of Obligation/World.md\|Days of Obligation]]| Cypher (Numenera)|13|player|inactive| |[[ttrpgs/Die Vergessene Schwester/World.md\|Die Vergessene Schwester]]| D&D 5e|2|gm|inactive| |[[ttrpgs/Escape from Castle Heterodyne/World.md\|Escape from Castle Heterodyne]]| Daggerheart|2|player|inactive| |[[ttrpgs/Fellowship of Loamy Heather/World.md\|Fellowship of Loamy Heather]]| The One Ring 2e|3|player|inactive| |[[ttrpgs/First Dawn/World.md\|First Dawn]]| Microscope|1|player|inactive| |[[ttrpgs/Four-Eyed Kraken/World.md\|Four-Eyed Kraken]]| Pirate Borg|2|gm|inactive| |[[ttrpgs/Graves Left Wanting/World.md\|Graves Left Wanting]]| Mörk Borg|1|gm|inactive| |[[ttrpgs/Heirloom Sphere Heist/World.md\|Heirloom Sphere Heist]]| D&D 5e|2|player|inactive| |[[ttrpgs/Honey Heist in Hupperdook/World.md\|Honey Heist in Hupperdook]]| Honey Heist|1|gm|inactive| |[[ttrpgs/It's a Pirate's Life For Me/World.md\|It's a Pirate's Life For Me]]| Rapscallion|2|player|inactive| |[[ttrpgs/Jagged Edge Hideaway/World.md\|Jagged Edge Hideaway]]| D&D 5e|3|player|inactive| |[[ttrpgs/Kingdom of Fesselmark/World.md\|Kingdom of Fesselmark]]| Warlock|3|player|inactive| |[[ttrpgs/Knave/World of The Western Realms.md\|Knave]]| Knave 1e|8|player|inactive| |[[ttrpgs/Light of Memoria/World.md\|Light of Memoria]]| Pathfinder 2e|8|gm|inactive| |[[ttrpgs/Monsters in Silverbay/World.md\|Monsters in Silverbay]]| Monster of the Week|1|player|inactive| |[[ttrpgs/Nox vs Ori/World.md\|Nox vs Ori]]| Stargate the RPG|2|player|inactive| |[[ttrpgs/Order of the Wandering Mind/World.md\|Order of the Wandering Mind]]| D&D 4e, Pathfinder 2e|112|player|inactive| |[[ttrpgs/Return of Return of the Green Death/World.md\|Return of Return of the Green Death]]| Castles & Crusades|1|player|inactive| |[[ttrpgs/Return of the Green Death/World.md\|Return of the Green Death]]| Basic Fantasy|3|player|inactive| |[[ttrpgs/Starship Avantika/World.md\|Starship Avantika]]| Fate Condensed|1|gm|inactive| |[[ttrpgs/Strahd Must Die Because It's Halloween/World.md\|Strahd Must Die Because It's Halloween]]| D&D 5e|1|player|inactive| |[[ttrpgs/Temporary White Circle/World.md\|Temporary White Circle]]| D&D 5e|142|player|inactive| |[[ttrpgs/The Accursed Den/World.md\|The Accursed Den]]| Mörk Borg|5|player|inactive| |[[ttrpgs/The City Watch/World.md\|The City Watch]]| D&D 5e|3|player|inactive| |[[ttrpgs/The Great Dark/World.md\|The Great Dark]]| Candela Obscura|39|player|inactive| |[[ttrpgs/The Slayers Five/World.md\|The Slayers Five]]| D&D 5e|69|gm|inactive| |[[ttrpgs/The Stolen Words/World.md\|The Stolen Words]]| Microscope|1|player|inactive| |[[ttrpgs/The Sunken Crown/World.md\|The Sunken Crown]]| D&D 5e|1|player|inactive| |[[ttrpgs/The Waking of Willowby Hall/World of The Waking of Willowby Hall.md\|The Waking of Willowby Hall]]| Knave 2e|1|gm|inactive| |[[ttrpgs/Trespol/World.md\|Trespol]]| D&D 5e|2|player|inactive| |[[ttrpgs/Yo Ho Ho/World.md\|Yo Ho Ho]]| Pirate Borg|1|player|inactive| |[[ttrpgs/You Awaken in a Strange Place/World.md\|You Awaken in a Strange Place]]| You Awaken in a Strange Place|1|player|inactive| ## Game sessions to process ```dataviewjs for (let group of dv.pages('"ttrpgs"').where(p => p.tags === "TVZ").groupBy(c => c.campaign)) { dv.header(3,group.key); dv.table(["Session","Date"], group.rows .where(p => p.type === "session") .where(p => p.tags === "TVZ") .sort(p => p.sessionNum) .map(p => [p.file.link,p.date])) } ``` ## Stats ### Total games recorded in this vault ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") group by type ``` ### 2024 #### Sessions played in 2024 ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") and contains(file.name,"2024") group by type ``` #### Sessions list - 2024 ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { if (page.file.name.includes("2024")) { totalGames = totalGames +1; return true; } } } }).length return numOfGames } dv.table(["System","Sessions", "Campaigns"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .where(b => getNumOfGames(b.campaign) != 0) .sort(b => b.system) .map(b => [b.system,getNumOfGames(b.campaign), dv.fileLink(b.file.path,false,[b.campaign])])) ``` ### 2023 #### Sessions played in 2023 ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") and contains(file.name,"2023") group by type ``` #### Sessions list - 2023 ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { if (page.file.name.includes("2023")) { totalGames = totalGames +1; return true; } } } }).length return numOfGames } dv.table(["System","Sessions", "Campaigns"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .where(b => getNumOfGames(b.campaign) != 0) .sort(b => b.system) .map(b => [b.system,getNumOfGames(b.campaign), dv.fileLink(b.file.path,false,[b.campaign])])) ``` ### 2022 #### Sessions played in 2022 ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") and contains(file.name,"2022") group by type ``` #### Sessions list - 2022 ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { if (page.file.name.includes("2022")) { totalGames = totalGames +1; return true; } } } }).length return numOfGames } dv.table(["System","Sessions", "Campaigns"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .where(b => getNumOfGames(b.campaign) != 0) .sort(b => b.system) .map(b => [b.system,getNumOfGames(b.campaign), dv.fileLink(b.file.path,false,[b.campaign])])) ``` ### 2021 #### Sessions played in 2021 ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") and contains(file.name,"2021") group by type ``` #### Sessions list - 2021 ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { if (page.file.name.includes("2021")) { totalGames = totalGames +1; return true; } } } }).length return numOfGames } dv.table(["System","Sessions", "Campaigns"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .where(b => getNumOfGames(b.campaign) != 0) .sort(b => b.system) .map(b => [b.system,getNumOfGames(b.campaign), dv.fileLink(b.file.path,false,[b.campaign])])) ``` ### 2020 #### Sessions played in 2020 ```dataview table length(rows) as Number from "ttrpgs" where contains(type,"session") and contains(file.name,"2020") group by type ``` #### Sessions list - 2020 ```dataviewjs let totalGames; function getNumOfGames(campaign) { let numOfGames = app.plugins.plugins.dataview.api .pages(`"ttrpgs/${campaign}"`) .where(page => { if (page.type === 'session') { if (page.campaign === campaign) { if (page.file.name.includes("2020")) { totalGames = totalGames +1; return true; } } } }).length return numOfGames } dv.table(["System","Sessions", "Campaigns"],dv.pages('"ttrpgs"') .where(b => b.type === "world") .where(b => getNumOfGames(b.campaign) != 0) .sort(b => b.system) .map(b => [b.system,getNumOfGames(b.campaign), dv.fileLink(b.file.path,false,[b.campaign])])) ```