# [[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])]))
```