> [!infobox|center wfull] > # Chains of Asmodeus > ![[Chains of Asmodeus Cover.jpg|320]] > ###### Campaign > | | | > | ---- | ---- | > | System | Dungeons and Dragons 5e | > | Calendar | [[Calendar of Harptos]] | > > | | | > | ---- | ---- | > | Start Date | 03/01/2026 | > | End Date | | > | Campaign Duration | | > | Number of Sessions | | > > | | | > | ---- | ---- | > | Start ([[Calendar of Harptos\|Harptos]]) | 12/21/1494 | > | End ([[Calendar of Harptos\|Harptos]]) | | > | In-game Duration | | > > | | | > | ---- | ---- | > | Dungeon Master | [[Lup]] | ## Cast * [[Callista]] as [[Mystic|Mysty]], an infernal tiefling wizard (order of scribes) * [[Connor]] as [[Blaedswith Ashenwynd|Blaed Ashenwynd]], a high elf paladin (oathbreaker) * [[Jett]] as [[Kyward Apostasio]], a rock gnome apothecary (chemist) * [[Rory]] as [[Marsh Ruldegost]], a water genasi cleric (life domain) ## All Characters ```base filters: and: - file.hasTag("Character") - note["Campaign"].contains(this) formulas: currentHarptos: this.file.properties["End (Harptos)"] relHarptosExists: if(note["Born (Harptos - Relative)"].isEmpty(),false,true) notBorn: if(note["Born (NY)"] || (note["Born (Harptos)"] - formula.currentHarptos).milliseconds < 0,false,true) nyAge: (date("3859-12-30") - date(note["Born (NY)"])) + (formula.currentHarptos - date("0001-01-01")) vrcyAge: if(Status != "Dead" && date(formula.currentHarptos.year + "-" + note["Born (VRCY)"].split("/")[0] + "-" + note["Born (VRCY)"].split("/")[1]) <= formula.currentHarptos,(35000 + formula.currentHarptos.year - number(note["Born (VRCY)"].split("/")[2])).toString() + " years",if(Status != "Dead",(35000 + formula.currentHarptos.year - 1 - number(note["Born (VRCY)"].split("/")[2])).toString() + " years","")) harptosAge: formula.currentHarptos - note["Born (Harptos)"] harptosAgeFloor: (formula.currentHarptos - note["Born (Harptos)"]).years.floor() harptosAgeCalc: if(formula.harptosAgeFloor <= 0,formula.harptosAge,formula.harptosAgeFloor + " years") relAge: formula.currentHarptos - note["Born (Harptos - Relative)"] relAgeFloor: (formula.currentHarptos - note["Born (Harptos - Relative)"]).years.floor() relAgeCalc: if(formula.relAgeFloor <= 0,formula.relAge,formula.relAgeFloor) age_in_years: if(note["Born (Harptos)"] && formula.notBorn == false,formula.harptosAgeCalc,if(note["Born (VRCY)"],formula.vrcyAge,if(note["Born (NY)"],formula.nyAge,"Born in "+formula.harptosAgeCalc))) rel_age_in_years: if(formula.relHarptosExists && note["Born (Harptos)"],formula.relAgeCalc,formula.age_in_years) age_in_years_incl_rel: if(formula.relHarptosExists,formula.rel_age_in_years + " (Truly " + formula.age_in_years + ")",formula.age_in_years) deathDate: if(note["Death Date (Harptos)"],note["Death Date (Harptos)"],note["Death Date (NY)"]) deathAgeInclRel: if(Status != "Dead",formula.rel_age_in_years,note["Death Age - Relative"] + " (Truly " + note["Death Age"] + ", Died " + formula.deathDate.format("MM/DD/YYYY") + ")") campaign_age: if(Status != "Dead",formula.age_in_years_incl_rel,if(formula.relHarptosExists,formula.deathAgeInclRel,note["Death Age"] + " (Died " + formula.deathDate.format("MM/DD/YYYY") + ")")) characterType: if(note["Character Type"].length == 2,"NPC",if(note["Character Type"].contains("Player Character"),"Player","NPC")) properties: file.name: displayName: Character formula.campaign_age: displayName: Age at Campaign End formula.characterType: displayName: Character Type views: - type: table name: Table groupBy: property: formula.characterType direction: DESC order: - file.name - formula.campaign_age - Status - formula.characterType sort: - property: formula.characterType direction: DESC - property: Status direction: ASC - property: file.name direction: ASC columnSize: file.name: 275 formula.campaign_age: 235 ``` ## Timeline See [[Chains of Asmodeus Timeline]] for a comprehensive timeline of the campaign. ## Locations --- ## Page Tags/Properties **Tags:** #Campaign **Category:** [[Campaigns.base|Campaigns]]