# Project Structure ``` ├── bin │ ├── test-file-locations.js │ ├── test-file-names.js │ ├── test-file-props.js │ ├── test-json-brew.js │ └── test-json-ua.js ├── lib │ ├── BrewTester │ │ ├── BrewTesterBase.js │ │ ├── BrewTesterFileLocations.js │ │ ├── BrewTesterFileNames.js │ │ ├── BrewTesterFileProps.js │ │ └── BrewTesterJson.js │ ├── Api.js │ ├── BrewCleaner.js │ ├── BrewIndexGenerator.js │ ├── BrewTester.js │ ├── BrewTimestamper.js │ ├── ObjectWalker.js │ ├── TestData.js │ ├── TestJson.js │ ├── TestJsonWorker.js │ ├── UrlUtil.js │ ├── UtilAjv.js │ ├── UtilClean.js │ ├── UtilFs.js │ ├── UtilMisc.js │ ├── UtilSource.js │ ├── UtilString.js │ └── WorkerList.js ├── node │ ├── compile-schemas.js │ └── fetch-5etools-sources.js ├── schema │ ├── brew │ │ ├── adventure │ │ │ └── adventure.json │ │ ├── bestiary │ │ │ ├── bestiary.json │ │ │ ├── fluff-bestiary.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── legendarygroups.json │ │ │ └── template.json │ │ ├── book │ │ │ └── book.json │ │ ├── class │ │ │ ├── class.json │ │ │ ├── fluff-class.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ └── index.json │ │ ├── generated │ │ │ ├── bookref-quick.json │ │ │ └── gendata-spell-source-lookup.json │ │ ├── spells │ │ │ ├── fluff-index.json │ │ │ ├── fluff-spells.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── roll20.json │ │ │ ├── sources.json │ │ │ └── spells.json │ │ ├── actions.json │ │ ├── adventures.json │ │ ├── backgrounds.json │ │ ├── bastions.json │ │ ├── books.json │ │ ├── changelog.json │ │ ├── charcreationoptions.json │ │ ├── citations.json │ │ ├── conditionsdiseases.json │ │ ├── converter.json │ │ ├── corpus-shared.json │ │ ├── cultsboons.json │ │ ├── decks.json │ │ ├── deities.json │ │ ├── encounters.json │ │ ├── entry.json │ │ ├── feats.json │ │ ├── fluff-backgrounds.json │ │ ├── fluff-bastions.json │ │ ├── fluff-charcreationoptions.json │ │ ├── fluff-conditionsdiseases.json │ │ ├── fluff-feats.json │ │ ├── fluff-items.json │ │ ├── fluff-languages.json │ │ ├── fluff-objects.json │ │ ├── fluff-optionalfeatures.json │ │ ├── fluff-races.json │ │ ├── fluff-recipes.json │ │ ├── fluff-rewards.json │ │ ├── fluff-trapshazards.json │ │ ├── fluff-vehicles.json │ │ ├── foundry-actions.json │ │ ├── foundry-backgrounds.json │ │ ├── foundry-feats.json │ │ ├── foundry-items.json │ │ ├── foundry-optionalfeatures.json │ │ ├── foundry-psionics.json │ │ ├── foundry-races.json │ │ ├── foundry-rewards.json │ │ ├── foundry-vehicles.json │ │ ├── homebrew.json │ │ ├── items-base.json │ │ ├── items-shared.json │ │ ├── items.json │ │ ├── languages.json │ │ ├── life.json │ │ ├── loot.json │ │ ├── magicvariants.json │ │ ├── makebrew-creature.json │ │ ├── makecards.json │ │ ├── monsterfeatures.json │ │ ├── msbcr.json │ │ ├── names.json │ │ ├── objects.json │ │ ├── optionalfeatures.json │ │ ├── psionics.json │ │ ├── races.json │ │ ├── recipes.json │ │ ├── renderdemo.json │ │ ├── rewards.json │ │ ├── senses.json │ │ ├── skills.json │ │ ├── sources-5etools.json │ │ ├── sources-homebrew-legacy.json │ │ ├── tables.json │ │ ├── trapshazards.json │ │ ├── util-additionalspells.json │ │ ├── util-copy.json │ │ ├── util-edition.json │ │ ├── util-foundry.json │ │ ├── util-time.json │ │ ├── util-token.json │ │ ├── util.json │ │ ├── variantrules.json │ │ └── vehicles.json │ ├── brew-fast │ │ ├── adventure │ │ │ └── adventure.json │ │ ├── bestiary │ │ │ ├── bestiary.json │ │ │ ├── fluff-bestiary.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── legendarygroups.json │ │ │ └── template.json │ │ ├── book │ │ │ └── book.json │ │ ├── class │ │ │ ├── class.json │ │ │ ├── fluff-class.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ └── index.json │ │ ├── generated │ │ │ ├── bookref-quick.json │ │ │ └── gendata-spell-source-lookup.json │ │ ├── spells │ │ │ ├── fluff-index.json │ │ │ ├── fluff-spells.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── roll20.json │ │ │ ├── sources.json │ │ │ └── spells.json │ │ ├── actions.json │ │ ├── adventures.json │ │ ├── backgrounds.json │ │ ├── bastions.json │ │ ├── books.json │ │ ├── changelog.json │ │ ├── charcreationoptions.json │ │ ├── citations.json │ │ ├── conditionsdiseases.json │ │ ├── converter.json │ │ ├── corpus-shared.json │ │ ├── cultsboons.json │ │ ├── decks.json │ │ ├── deities.json │ │ ├── encounters.json │ │ ├── entry.json │ │ ├── feats.json │ │ ├── fluff-backgrounds.json │ │ ├── fluff-bastions.json │ │ ├── fluff-charcreationoptions.json │ │ ├── fluff-conditionsdiseases.json │ │ ├── fluff-feats.json │ │ ├── fluff-items.json │ │ ├── fluff-languages.json │ │ ├── fluff-objects.json │ │ ├── fluff-optionalfeatures.json │ │ ├── fluff-races.json │ │ ├── fluff-recipes.json │ │ ├── fluff-rewards.json │ │ ├── fluff-trapshazards.json │ │ ├── fluff-vehicles.json │ │ ├── foundry-actions.json │ │ ├── foundry-backgrounds.json │ │ ├── foundry-feats.json │ │ ├── foundry-items.json │ │ ├── foundry-optionalfeatures.json │ │ ├── foundry-psionics.json │ │ ├── foundry-races.json │ │ ├── foundry-rewards.json │ │ ├── foundry-vehicles.json │ │ ├── homebrew.json │ │ ├── items-base.json │ │ ├── items-shared.json │ │ ├── items.json │ │ ├── languages.json │ │ ├── life.json │ │ ├── loot.json │ │ ├── magicvariants.json │ │ ├── makebrew-creature.json │ │ ├── makecards.json │ │ ├── monsterfeatures.json │ │ ├── msbcr.json │ │ ├── names.json │ │ ├── objects.json │ │ ├── optionalfeatures.json │ │ ├── psionics.json │ │ ├── races.json │ │ ├── recipes.json │ │ ├── renderdemo.json │ │ ├── rewards.json │ │ ├── senses.json │ │ ├── skills.json │ │ ├── sources-5etools.json │ │ ├── sources-homebrew-legacy.json │ │ ├── tables.json │ │ ├── trapshazards.json │ │ ├── util-additionalspells.json │ │ ├── util-copy.json │ │ ├── util-edition.json │ │ ├── util-foundry.json │ │ ├── util-time.json │ │ ├── util-token.json │ │ ├── util.json │ │ ├── variantrules.json │ │ └── vehicles.json │ ├── site │ │ ├── adventure │ │ │ └── adventure.json │ │ ├── bestiary │ │ │ ├── bestiary.json │ │ │ ├── fluff-bestiary.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── legendarygroups.json │ │ │ └── template.json │ │ ├── book │ │ │ └── book.json │ │ ├── class │ │ │ ├── class.json │ │ │ ├── fluff-class.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ └── index.json │ │ ├── generated │ │ │ ├── bookref-quick.json │ │ │ └── gendata-spell-source-lookup.json │ │ ├── spells │ │ │ ├── fluff-index.json │ │ │ ├── fluff-spells.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── roll20.json │ │ │ ├── sources.json │ │ │ └── spells.json │ │ ├── actions.json │ │ ├── adventures.json │ │ ├── backgrounds.json │ │ ├── bastions.json │ │ ├── books.json │ │ ├── changelog.json │ │ ├── charcreationoptions.json │ │ ├── citations.json │ │ ├── conditionsdiseases.json │ │ ├── converter.json │ │ ├── corpus-shared.json │ │ ├── cultsboons.json │ │ ├── decks.json │ │ ├── deities.json │ │ ├── encounters.json │ │ ├── entry.json │ │ ├── feats.json │ │ ├── fluff-backgrounds.json │ │ ├── fluff-bastions.json │ │ ├── fluff-charcreationoptions.json │ │ ├── fluff-conditionsdiseases.json │ │ ├── fluff-feats.json │ │ ├── fluff-items.json │ │ ├── fluff-languages.json │ │ ├── fluff-objects.json │ │ ├── fluff-optionalfeatures.json │ │ ├── fluff-races.json │ │ ├── fluff-recipes.json │ │ ├── fluff-rewards.json │ │ ├── fluff-trapshazards.json │ │ ├── fluff-vehicles.json │ │ ├── foundry-actions.json │ │ ├── foundry-backgrounds.json │ │ ├── foundry-feats.json │ │ ├── foundry-items.json │ │ ├── foundry-optionalfeatures.json │ │ ├── foundry-psionics.json │ │ ├── foundry-races.json │ │ ├── foundry-rewards.json │ │ ├── foundry-vehicles.json │ │ ├── homebrew.json │ │ ├── items-base.json │ │ ├── items-shared.json │ │ ├── items.json │ │ ├── languages.json │ │ ├── life.json │ │ ├── loot.json │ │ ├── magicvariants.json │ │ ├── makebrew-creature.json │ │ ├── makecards.json │ │ ├── monsterfeatures.json │ │ ├── msbcr.json │ │ ├── names.json │ │ ├── objects.json │ │ ├── optionalfeatures.json │ │ ├── psionics.json │ │ ├── races.json │ │ ├── recipes.json │ │ ├── renderdemo.json │ │ ├── rewards.json │ │ ├── senses.json │ │ ├── skills.json │ │ ├── sources-5etools.json │ │ ├── sources-homebrew-legacy.json │ │ ├── tables.json │ │ ├── trapshazards.json │ │ ├── util-additionalspells.json │ │ ├── util-copy.json │ │ ├── util-edition.json │ │ ├── util-foundry.json │ │ ├── util-time.json │ │ ├── util-token.json │ │ ├── util.json │ │ ├── variantrules.json │ │ └── vehicles.json │ ├── site-fast │ │ ├── adventure │ │ │ └── adventure.json │ │ ├── bestiary │ │ │ ├── bestiary.json │ │ │ ├── fluff-bestiary.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── legendarygroups.json │ │ │ └── template.json │ │ ├── book │ │ │ └── book.json │ │ ├── class │ │ │ ├── class.json │ │ │ ├── fluff-class.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ └── index.json │ │ ├── generated │ │ │ ├── bookref-quick.json │ │ │ └── gendata-spell-source-lookup.json │ │ ├── spells │ │ │ ├── fluff-index.json │ │ │ ├── fluff-spells.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── roll20.json │ │ │ ├── sources.json │ │ │ └── spells.json │ │ ├── actions.json │ │ ├── adventures.json │ │ ├── backgrounds.json │ │ ├── bastions.json │ │ ├── books.json │ │ ├── changelog.json │ │ ├── charcreationoptions.json │ │ ├── citations.json │ │ ├── conditionsdiseases.json │ │ ├── converter.json │ │ ├── corpus-shared.json │ │ ├── cultsboons.json │ │ ├── decks.json │ │ ├── deities.json │ │ ├── encounters.json │ │ ├── entry.json │ │ ├── feats.json │ │ ├── fluff-backgrounds.json │ │ ├── fluff-bastions.json │ │ ├── fluff-charcreationoptions.json │ │ ├── fluff-conditionsdiseases.json │ │ ├── fluff-feats.json │ │ ├── fluff-items.json │ │ ├── fluff-languages.json │ │ ├── fluff-objects.json │ │ ├── fluff-optionalfeatures.json │ │ ├── fluff-races.json │ │ ├── fluff-recipes.json │ │ ├── fluff-rewards.json │ │ ├── fluff-trapshazards.json │ │ ├── fluff-vehicles.json │ │ ├── foundry-actions.json │ │ ├── foundry-backgrounds.json │ │ ├── foundry-feats.json │ │ ├── foundry-items.json │ │ ├── foundry-optionalfeatures.json │ │ ├── foundry-psionics.json │ │ ├── foundry-races.json │ │ ├── foundry-rewards.json │ │ ├── foundry-vehicles.json │ │ ├── homebrew.json │ │ ├── items-base.json │ │ ├── items-shared.json │ │ ├── items.json │ │ ├── languages.json │ │ ├── life.json │ │ ├── loot.json │ │ ├── magicvariants.json │ │ ├── makebrew-creature.json │ │ ├── makecards.json │ │ ├── monsterfeatures.json │ │ ├── msbcr.json │ │ ├── names.json │ │ ├── objects.json │ │ ├── optionalfeatures.json │ │ ├── psionics.json │ │ ├── races.json │ │ ├── recipes.json │ │ ├── renderdemo.json │ │ ├── rewards.json │ │ ├── senses.json │ │ ├── skills.json │ │ ├── sources-5etools.json │ │ ├── sources-homebrew-legacy.json │ │ ├── tables.json │ │ ├── trapshazards.json │ │ ├── util-additionalspells.json │ │ ├── util-copy.json │ │ ├── util-edition.json │ │ ├── util-foundry.json │ │ ├── util-time.json │ │ ├── util-token.json │ │ ├── util.json │ │ ├── variantrules.json │ │ └── vehicles.json │ ├── ua │ │ ├── adventure │ │ │ └── adventure.json │ │ ├── bestiary │ │ │ ├── bestiary.json │ │ │ ├── fluff-bestiary.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── legendarygroups.json │ │ │ └── template.json │ │ ├── book │ │ │ └── book.json │ │ ├── class │ │ │ ├── class.json │ │ │ ├── fluff-class.json │ │ │ ├── fluff-index.json │ │ │ ├── foundry.json │ │ │ └── index.json │ │ ├── generated │ │ │ ├── bookref-quick.json │ │ │ └── gendata-spell-source-lookup.json │ │ ├── spells │ │ │ ├── fluff-index.json │ │ │ ├── fluff-spells.json │ │ │ ├── foundry.json │ │ │ ├── index.json │ │ │ ├── roll20.json │ │ │ ├── sources.json │ │ │ └── spells.json │ │ ├── actions.json │ │ ├── adventures.json │ │ ├── backgrounds.json │ │ ├── bastions.json │ │ ├── books.json │ │ ├── changelog.json │ │ ├── charcreationoptions.json │ │ ├── citations.json │ │ ├── conditionsdiseases.json │ │ ├── converter.json │ │ ├── corpus-shared.json │ │ ├── cultsboons.json │ │ ├── decks.json │ │ ├── deities.json │ │ ├── encounters.json │ │ ├── entry.json │ │ ├── feats.json │ │ ├── fluff-backgrounds.json │ │ ├── fluff-bastions.json │ │ ├── fluff-charcreationoptions.json │ │ ├── fluff-conditionsdiseases.json │ │ ├── fluff-feats.json │ │ ├── fluff-items.json │ │ ├── fluff-languages.json │ │ ├── fluff-objects.json │ │ ├── fluff-optionalfeatures.json │ │ ├── fluff-races.json │ │ ├── fluff-recipes.json │ │ ├── fluff-rewards.json │ │ ├── fluff-trapshazards.json │ │ ├── fluff-vehicles.json │ │ ├── foundry-actions.json │ │ ├── foundry-backgrounds.json │ │ ├── foundry-feats.json │ │ ├── foundry-items.json │ │ ├── foundry-optionalfeatures.json │ │ ├── foundry-psionics.json │ │ ├── foundry-races.json │ │ ├── foundry-rewards.json │ │ ├── foundry-vehicles.json │ │ ├── homebrew.json │ │ ├── items-base.json │ │ ├── items-shared.json │ │ ├── items.json │ │ ├── languages.json │ │ ├── life.json │ │ ├── loot.json │ │ ├── magicvariants.json │ │ ├── makebrew-creature.json │ │ ├── makecards.json │ │ ├── monsterfeatures.json │ │ ├── msbcr.json │ │ ├── names.json │ │ ├── objects.json │ │ ├── optionalfeatures.json │ │ ├── psionics.json │ │ ├── races.json │ │ ├── recipes.json │ │ ├── renderdemo.json │ │ ├── rewards.json │ │ ├── senses.json │ │ ├── skills.json │ │ ├── sources-5etools.json │ │ ├── sources-homebrew-legacy.json │ │ ├── tables.json │ │ ├── trapshazards.json │ │ ├── util-additionalspells.json │ │ ├── util-copy.json │ │ ├── util-edition.json │ │ ├── util-foundry.json │ │ ├── util-time.json │ │ ├── util-token.json │ │ ├── util.json │ │ ├── variantrules.json │ │ └── vehicles.json │ └── ua-fast │ ├── adventure │ │ └── adventure.json │ ├── bestiary │ │ ├── bestiary.json │ │ ├── fluff-bestiary.json │ │ ├── fluff-index.json │ │ ├── foundry.json │ │ ├── index.json │ │ ├── legendarygroups.json │ │ └── template.json │ ├── book │ │ └── book.json │ ├── class │ │ ├── class.json │ │ ├── fluff-class.json │ │ ├── fluff-index.json │ │ ├── foundry.json │ │ └── index.json │ ├── generated │ │ ├── bookref-quick.json │ │ └── gendata-spell-source-lookup.json │ ├── spells │ │ ├── fluff-index.json │ │ ├── fluff-spells.json │ │ ├── foundry.json │ │ ├── index.json │ │ ├── roll20.json │ │ ├── sources.json │ │ └── spells.json │ ├── actions.json │ ├── adventures.json │ ├── backgrounds.json │ ├── bastions.json │ ├── books.json │ ├── changelog.json │ ├── charcreationoptions.json │ ├── citations.json │ ├── conditionsdiseases.json │ ├── converter.json │ ├── corpus-shared.json │ ├── cultsboons.json │ ├── decks.json │ ├── deities.json │ ├── encounters.json │ ├── entry.json │ ├── feats.json │ ├── fluff-backgrounds.json │ ├── fluff-bastions.json │ ├── fluff-charcreationoptions.json │ ├── fluff-conditionsdiseases.json │ ├── fluff-feats.json │ ├── fluff-items.json │ ├── fluff-languages.json │ ├── fluff-objects.json │ ├── fluff-optionalfeatures.json │ ├── fluff-races.json │ ├── fluff-recipes.json │ ├── fluff-rewards.json │ ├── fluff-trapshazards.json │ ├── fluff-vehicles.json │ ├── foundry-actions.json │ ├── foundry-backgrounds.json │ ├── foundry-feats.json │ ├── foundry-items.json │ ├── foundry-optionalfeatures.json │ ├── foundry-psionics.json │ ├── foundry-races.json │ ├── foundry-rewards.json │ ├── foundry-vehicles.json │ ├── homebrew.json │ ├── items-base.json │ ├── items-shared.json │ ├── items.json │ ├── languages.json │ ├── life.json │ ├── loot.json │ ├── magicvariants.json │ ├── makebrew-creature.json │ ├── makecards.json │ ├── monsterfeatures.json │ ├── msbcr.json │ ├── names.json │ ├── objects.json │ ├── optionalfeatures.json │ ├── psionics.json │ ├── races.json │ ├── recipes.json │ ├── renderdemo.json │ ├── rewards.json │ ├── senses.json │ ├── skills.json │ ├── sources-5etools.json │ ├── sources-homebrew-legacy.json │ ├── tables.json │ ├── trapshazards.json │ ├── util-additionalspells.json │ ├── util-copy.json │ ├── util-edition.json │ ├── util-foundry.json │ ├── util-time.json │ ├── util-token.json │ ├── util.json │ ├── variantrules.json │ └── vehicles.json ├── schema-template │ ├── adventure │ │ └── adventure.json │ ├── bestiary │ │ ├── bestiary.json │ │ ├── fluff-bestiary.json │ │ ├── fluff-index.json │ │ ├── foundry.json │ │ ├── index.json │ │ ├── legendarygroups.json │ │ └── template.json │ ├── book │ │ └── book.json │ ├── class │ │ ├── class.json │ │ ├── fluff-class.json │ │ ├── fluff-index.json │ │ ├── foundry.json │ │ └── index.json │ ├── generated │ │ ├── bookref-quick.json │ │ └── gendata-spell-source-lookup.json │ ├── spells │ │ ├── fluff-index.json │ │ ├── fluff-spells.json │ │ ├── foundry.json │ │ ├── index.json │ │ ├── roll20.json │ │ ├── sources.json │ │ └── spells.json │ ├── actions.json │ ├── adventures.json │ ├── backgrounds.json │ ├── bastions.json │ ├── books.json │ ├── changelog.json │ ├── charcreationoptions.json │ ├── citations.json │ ├── conditionsdiseases.json │ ├── converter.json │ ├── corpus-shared.json │ ├── cultsboons.json │ ├── decks.json │ ├── deities.json │ ├── encounters.json │ ├── entry.json │ ├── feats.json │ ├── fluff-backgrounds.json │ ├── fluff-bastions.json │ ├── fluff-charcreationoptions.json │ ├── fluff-conditionsdiseases.json │ ├── fluff-feats.json │ ├── fluff-items.json │ ├── fluff-languages.json │ ├── fluff-objects.json │ ├── fluff-optionalfeatures.json │ ├── fluff-races.json │ ├── fluff-recipes.json │ ├── fluff-rewards.json │ ├── fluff-trapshazards.json │ ├── fluff-vehicles.json │ ├── foundry-actions.json │ ├── foundry-backgrounds.json │ ├── foundry-feats.json │ ├── foundry-items.json │ ├── foundry-optionalfeatures.json │ ├── foundry-psionics.json │ ├── foundry-races.json │ ├── foundry-rewards.json │ ├── foundry-vehicles.json │ ├── homebrew.json │ ├── items-base.json │ ├── items-shared.json │ ├── items.json │ ├── languages.json │ ├── life.json │ ├── loot.json │ ├── magicvariants.json │ ├── makebrew-creature.json │ ├── makecards.json │ ├── monsterfeatures.json │ ├── msbcr.json │ ├── names.json │ ├── objects.json │ ├── optionalfeatures.json │ ├── psionics.json │ ├── races.json │ ├── README.md │ ├── recipes.json │ ├── renderdemo.json │ ├── rewards.json │ ├── senses.json │ ├── skills.json │ ├── sources-5etools.json │ ├── sources-homebrew-legacy.json │ ├── tables.json │ ├── trapshazards.json │ ├── util-additionalspells.json │ ├── util-copy.json │ ├── util-edition.json │ ├── util-foundry.json │ ├── util-time.json │ ├── util-token.json │ ├── util.json │ ├── variantrules.json │ └── vehicles.json ├── scratch ├── test │ ├── data │ │ ├── test-test-json │ │ │ ├── data │ │ │ │ ├── a.json │ │ │ │ ├── b.json │ │ │ │ ├── c.json │ │ │ │ ├── d.json │ │ │ │ └── e.json │ │ │ ├── data-brew │ │ │ │ └── brew.json │ │ │ └── schema │ │ │ └── schema.json │ │ └── test-util-fs │ │ └── json │ │ ├── allow │ │ │ ├── a.json │ │ │ └── b.json │ │ └── block │ │ └── c.json │ ├── TestBrewTimestamper.test.js │ ├── TestExecutablePermissions.test.js │ ├── TestJson.test.js │ ├── TestObjectWalker.test.js │ ├── TestUtilSource.test.js │ ├── UtilFs.test.js │ └── UtilMisc.test.js ├── context7.json ├── jest.config.json ├── package-lock.json ├── package.json ├── README.md └── transfer.sh ``` # File Contents ## schema\brew\actions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "actions.json", "version": "1.2.8", "type": "object", "$defs": { "action": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "fromVariant": { "type": "string", "description": "UID of a \"variantrule\" to be linked as a footnote in the action.", "markdownDescription": "UID of a "variantrule" to be linked as a footnote in the action." }, "time": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "unit": { "type": "string", "enum": [ "action", "bonus", "reaction" ] }, "number": { "type": "integer" } }, "required": [ "unit", "number" ], "additionalProperties": false } ] } }, "seeAlsoAction": { "type": "array", "items": { "type": "string", "description": "UIDs of \"action\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"disarm|dmg\".", "markdownDescription": "UIDs of "action"s to be linked in a "See Also" footnote.\n\nEx.: "disarm|dmg"." } }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "entries", "source", "page" ], "additionalProperties": false } }, "properties": { "action": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/action" } } }, "required": [ "action" ], "additionalProperties": false } ``` ## schema\brew\adventure\adventure.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "adventure.json", "version": "1.2.0", "type": "object", "properties": { "data": { "$ref": "../util.json#/$defs/adventureBookData" } }, "additionalProperties": false } ``` ## schema\brew\adventures.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "adventures.json", "version": "1.10.33", "type": "object", "properties": { "adventure": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "id": { "$ref": "util.json#/$defs/corpusId" }, "source": { "$ref": "util.json#/$defs/source" }, "parentSource": { "$ref": "corpus-shared.json#/$defs/corpusParentSource" }, "group": { "description": "The group under which this adventure should be listed in the navbar.", "type": "string", "enum": [ "supplement", "supplement-alt", "prerelease", "homebrew", "organized-play", "other" ], "markdownDescription": "The group under which this adventure should be listed in the navbar." }, "author": { "type": "string" }, "contents": { "$ref": "corpus-shared.json#/$defs/corpusContents" }, "level": { "description": "The character levels that the adventure ranges across.", "oneOf": [ { "type": "object", "properties": { "start": { "type": "integer" }, "end": { "type": "integer" } }, "additionalProperties": false, "required": [ "start", "end" ] }, { "type": "object", "properties": { "custom": { "type": "string" } }, "additionalProperties": false, "required": [ "custom" ] } ], "markdownDescription": "The character levels that the adventure ranges across." }, "published": { "$ref": "corpus-shared.json#/$defs/corpusPublished" }, "publishedOrder": { "description": "A sorting order for adventures within a single source.", "type": "integer", "markdownDescription": "A sorting order for adventures within a single source." }, "cover": { "$ref": "corpus-shared.json#/$defs/corpusCover" }, "storyline": { "type": "string", "examples": [ "Starter Set", "Tyranny of Dragons", "Elemental Evil", "Rage of Demons", "Ravenloft", "Storm King's Thunder", "Tales from the Yawning Portal", "Tomb of Annihilation", "Waterdeep", "Ravnica", "Extra Life", "Ghosts of Saltmarsh", "Acquisitions Incorporated", "Essentials Kit", "Stranger Things", "Baldur's Gate", "Eberron", "Rick and Morty", "Wildemount", "Icewind Dale", "Mythic Odysseys of Theros", "Candlekeep Mysteries", "Adventures in the Forgotten Realms", "The Wild Beyond the Witchlight", "Ixalan", "NERDS Restoring Harmony", "Strixhaven", "Critical Role", "Journeys through the Radiant Citadel", "Spelljammer", "Dragonlance", "Keys from the Golden Vault", "Giants of the Star Forge", "Minecraft", "Planescape", "Adventure Atlas", "Heroes' Feast", "Family Friendly", "Vecna", "Quests from the Infinite Staircase", "LEGO", "Shadow Realm", "Animated Series", "Dragon Delves", "Forgotten Realms", "Miscellaneous" ] }, "alAveragePlayerLevel": { "description": "Adventurers League Average Player Level; for use in homebrew.", "type": "integer", "markdownDescription": "Adventurers League Average Player Level; for use in homebrew." }, "alLength": { "description": "Adventurers League length (in hours); for use in homebrew.", "type": "object", "oneOf": [ { "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } }, "required": [ "min", "max" ] }, { "properties": { "exact": { "type": "integer" } }, "required": [ "exact" ] } ], "markdownDescription": "Adventurers League length (in hours); for use in homebrew." }, "alId": { "description": "Adventurers League ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League ID; for use in homebrew." } }, "additionalProperties": false, "required": [ "name", "id", "source", "contents", "level", "published", "storyline", "group" ] } } }, "additionalProperties": false } ``` ## schema\brew\backgrounds.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "backgrounds.json", "version": "1.3.13", "type": "object", "$defs": { "backgroundData": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "startingEquipment": { "$ref": "util.json#/$defs/startingEquipment" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "fromFeature": { "description": "A lookup of other properties which should be tied to the \"Feature: ...\" entry. This is used when e.g. customizing a background during import to a VTT.", "type": "object", "patternProperties": { "^.*$": { "type": "boolean", "const": true } }, "markdownDescription": "A lookup of other properties which should be tied to the "Feature: ..." entry. This is used when e.g. customizing a background during import to a VTT." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "foundryAdvancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "background": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "startingEquipment": { "$ref": "util.json#/$defs/startingEquipment" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "fromFeature": { "description": "A lookup of other properties which should be tied to the \"Feature: ...\" entry. This is used when e.g. customizing a background during import to a VTT.", "type": "object", "patternProperties": { "^.*$": { "type": "boolean", "const": true } }, "markdownDescription": "A lookup of other properties which should be tied to the "Feature: ..." entry. This is used when e.g. customizing a background during import to a VTT." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "foundryAdvancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "source", "entries" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "startingEquipment": { "$ref": "util.json#/$defs/startingEquipment" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "fromFeature": { "description": "A lookup of other properties which should be tied to the \"Feature: ...\" entry. This is used when e.g. customizing a background during import to a VTT.", "type": "object", "patternProperties": { "^.*$": { "type": "boolean", "const": true } }, "markdownDescription": "A lookup of other properties which should be tied to the "Feature: ..." entry. This is used when e.g. customizing a background during import to a VTT." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "foundryAdvancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "background": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/background" } }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "required": [ "background" ], "additionalProperties": false } ``` ## schema\brew\bastions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "bastions.json", "version": "1.0.3", "type": "object", "$defs": { "_space": { "type": "string", "examples": [ "cramped", "roomy", "vast" ] }, "facilityData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "facilityType": { "type": "string", "examples": [ "basic", "special" ] }, "level": { "type": "integer" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "space": { "type": "array", "items": { "$ref": "#/$defs/_space" }, "minItems": 1, "uniqueItems": true }, "hirelings": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "exact": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "exact" ], "additionalProperties": false }, { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "min" ], "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true }, "orders": { "type": "array", "items": { "type": "string", "examples": [ "craft", "empower", "harvest", "maintain", "recruit", "research", "trade" ] }, "minItems": 1, "uniqueItems": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" } }, "additionalProperties": false }, "facility": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "facilityType": { "type": "string", "examples": [ "basic", "special" ] }, "level": { "type": "integer" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "space": { "type": "array", "items": { "$ref": "#/$defs/_space" }, "minItems": 1, "uniqueItems": true }, "hirelings": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "exact": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "exact" ], "additionalProperties": false }, { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "min" ], "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true }, "orders": { "type": "array", "items": { "type": "string", "examples": [ "craft", "empower", "harvest", "maintain", "recruit", "research", "trade" ] }, "minItems": 1, "uniqueItems": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" } }, "additionalProperties": false, "required": [ "name", "entries", "source", "facilityType" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "facilityType": { "type": "string", "examples": [ "basic", "special" ] }, "level": { "type": "integer" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "space": { "type": "array", "items": { "$ref": "#/$defs/_space" }, "minItems": 1, "uniqueItems": true }, "hirelings": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "exact": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "exact" ], "additionalProperties": false }, { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "space": { "$ref": "#/$defs/_space" } }, "required": [ "min" ], "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true }, "orders": { "type": "array", "items": { "type": "string", "examples": [ "craft", "empower", "harvest", "maintain", "recruit", "research", "trade" ] }, "minItems": 1, "uniqueItems": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "facility": { "type": "array", "items": { "$ref": "#/$defs/facility" }, "minItems": 1, "uniqueItems": true } }, "required": [ "facility" ], "additionalProperties": false } ``` ## schema\brew\bestiary\bestiary.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.21.56", "title": "Bestiary Schema", "$id": "bestiary.json", "type": "object", "$defs": { "align": { "oneOf": [ { "$ref": "../util.json#/$defs/alignment" }, { "type": "object", "properties": { "alignment": { "type": "array", "items": { "$ref": "../util.json#/$defs/alignment" } }, "chance": { "type": "integer" }, "note": { "type": "string" } }, "additionalProperties": false, "required": [ "alignment" ] }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] } ] }, "acItem": { "oneOf": [ { "type": "object", "properties": { "ac": { "type": "integer" }, "from": { "type": "array", "items": { "type": "string" } }, "condition": { "type": "string" }, "braces": { "const": true } }, "required": [ "ac" ], "additionalProperties": false }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false }, { "type": "integer" } ] }, "abilityScore": { "oneOf": [ { "type": [ "integer", "null" ] }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "_legendaryActions": { "type": "integer", "minimum": 1 }, "creatureData": { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".", "type": [ "string", "boolean" ], "markdownDescription": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use "true" if the "shortName" should be an exact copy of the creature's "name"." }, "alias": { "$ref": "../util.json#/$defs/alias" }, "group": { "$ref": "../util.json#/$defs/group" }, "level": { "description": "Used in sidekicks, which can have levels (and generally do not have alignment)", "type": "integer", "markdownDescription": "Used in sidekicks, which can have levels (and generally do not have alignment)" }, "size": { "type": "array", "items": { "$ref": "../util.json#/$defs/size" }, "uniqueItems": true }, "sizeNote": { "type": "string" }, "type": { "oneOf": [ { "type": "object", "properties": { "type": { "oneOf": [ { "$ref": "../util.json#/$defs/creatureType" }, { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "../util.json#/$defs/creatureType" } } }, "additionalProperties": false, "required": [ "choose" ] } ] }, "swarmSize": { "$ref": "../util.json#/$defs/size", "description": "Size of the individual creatures that make up the swarm.", "markdownDescription": "Size of the individual creatures that make up the swarm." }, "tags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickType": { "type": "string", "examples": [ "expert", "spellcaster", "warrior" ] }, "sidekickTags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickHidden": { "const": true }, "note": { "type": "string" } }, "required": [ "type" ], "additionalProperties": false }, { "$ref": "../util.json#/$defs/creatureType" } ] }, "source": { "$ref": "../util.json#/$defs/source" }, "sourceSub": { "type": "string", "description": "Sub-source text that is shown when hovered.", "markdownDescription": "Sub-source text that is shown when hovered." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "alignment": { "type": "array", "items": { "$ref": "#/$defs/align" } }, "alignmentPrefix": { "type": "string" }, "ac": { "type": "array", "items": { "$ref": "#/$defs/acItem" } }, "hp": { "oneOf": [ { "type": "object", "properties": { "average": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "average", "formula" ], "additionalProperties": false }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "speed": { "$ref": "../util.json#/$defs/speed" }, "initiative": { "oneOf": [ { "type": "object", "properties": { "initiative": { "type": "number" }, "proficiency": { "$ref": "../util.json#/$defs/proficiencyLevel" }, "advantageMode": { "type": "string", "enum": [ "adv", "dis" ] } }, "minProperties": 1, "additionalProperties": false }, { "type": "number" } ] }, "str": { "$ref": "#/$defs/abilityScore" }, "dex": { "$ref": "#/$defs/abilityScore" }, "con": { "$ref": "#/$defs/abilityScore" }, "int": { "$ref": "#/$defs/abilityScore" }, "wis": { "$ref": "#/$defs/abilityScore" }, "cha": { "$ref": "#/$defs/abilityScore" }, "save": { "type": "object", "properties": { "str": { "type": "string" }, "dex": { "type": "string" }, "con": { "type": "string" }, "int": { "type": "string" }, "wis": { "type": "string" }, "cha": { "type": "string" }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "skill": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" }, "other": { "type": "array", "items": { "type": "object", "properties": { "oneOf": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" } } } } } }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "tool": { "type": "object", "minProperties": 1, "patternProperties": { ".*": { "type": "string" } } }, "gear": { "type": "array", "items": { "oneOf": [ { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, { "type": "object", "properties": { "item": { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, "quantity": { "type": "integer" } }, "required": [ "item", "quantity" ], "additionalProperties": false } ] } }, "senses": { "oneOf": [ { "type": "array", "items": { "type": "string" }, "minItems": 1 }, { "type": "null" } ] }, "passive": { "type": [ "integer", "string", "null" ] }, "languages": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "string" } }, { "type": "null" } ] }, "pbNote": { "type": "string" }, "cr": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "cr": { "type": "string" }, "lair": { "type": "string" }, "coven": { "type": "string" }, "xp": { "type": "integer" }, "xpLair": { "type": "integer" } }, "additionalProperties": false, "required": [ "cr" ] } ] }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "../util.json#/$defs/damageResistArray" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArray" }, "spellcasting": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entrySpellcasting" } }, { "type": "null" } ] }, "trait": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "type": { "type": "string", "enum": [ "entries", "inset" ] }, "sort": { "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.", "type": "integer", "markdownDescription": "Forces a sort order. Traits with sort orders will always be arranged before those without." } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "actionNote": { "type": "string" }, "actionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "action": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "bonusNote": { "type": "string" }, "bonusHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "bonus": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "reactionNote": { "type": "string" }, "reactionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "reaction": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "legendaryGroup": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "name", "source" ] }, "legendaryActions": { "$ref": "#/$defs/_legendaryActions" }, "legendaryActionsLair": { "$ref": "#/$defs/_legendaryActions" }, "legendaryHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "legendary": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "mythicHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "mythic": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "variant": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/entryVariantBestiary" } }, { "type": "null" } ] }, "page": { "$ref": "../util.json#/$defs/page" }, "familiar": { "enum": [ true, null ] }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "hasToken": { "const": true }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "foundryTokenScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenScale" }, "altArt": { "$ref": "../util-token.json#/$defs/altArt" }, "token": { "$ref": "../util-token.json#/$defs/token" }, "isNamedCreature": { "enum": [ true, null ] }, "isNpc": { "description": "Used to flag adventure NPCs", "enum": [ true, null ], "markdownDescription": "Used to flag adventure NPCs" }, "environment": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "underwater", "coastal", "mountain", "grassland", "hill", "arctic", "urban", "forest", "swamp", "underdark", "desert", "badlands", "farmland", "planar", "planar, transitive", "planar, elemental", "planar, inner", "planar, upper", "planar, lower", "planar, feywild", "planar, shadowfell", "planar, water", "planar, earth", "planar, fire", "planar, air", "planar, ooze", "planar, magma", "planar, ash", "planar, ice", "planar, elemental chaos", "planar, ethereal", "planar, astral", "planar, arborea", "planar, arcadia", "planar, beastlands", "planar, bytopia", "planar, elysium", "planar, mount celestia", "planar, ysgard", "planar, abyss", "planar, acheron", "planar, carceri", "planar, gehenna", "planar, hades", "planar, nine hells", "planar, pandemonium", "planar, limbo", "planar, mechanus", "planar, outlands" ] } }, "treasure": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "individual", "arcana", "armaments", "implements", "relics" ] } }, "soundClip": { "$ref": "../entry.json#/$defs/mediaHref" }, "dragonCastingColor": { "type": "string", "examples": [ "black", "blue", "green", "red", "white", "brass", "bronze", "copper", "gold", "silver", "deep", "spirit" ] }, "dragonAge": { "type": "string", "examples": [ "young", "adult", "wyrmling", "greatwyrm", "ancient", "aspect" ] }, "traitTags": { "type": "array", "items": { "type": "string", "enum": [ "Aggressive", "Ambusher", "Amorphous", "Amphibious", "Antimagic Susceptibility", "Beast of Burden", "Brute", "Camouflage", "Charge", "Damage Absorption", "Death Burst", "Devil's Sight", "False Appearance", "Fey Ancestry", "Flyby", "Hold Breath", "Illumination", "Immutable Form", "Incorporeal Movement", "Keen Senses", "Legendary Resistances", "Light Sensitivity", "Magic Resistance", "Magic Weapons", "Mimicry", "Pack Tactics", "Pounce", "Rampage", "Reckless", "Regeneration", "Rejuvenation", "Shapechanger", "Siege Monster", "Sneak Attack", "Spell Immunity", "Spider Climb", "Sunlight Sensitivity", "Tree Stride", "Tunneler", "Turn Immunity", "Turn Resistance", "Undead Fortitude", "Unusual Nature", "Water Breathing", "Web Sense", "Web Walker" ] } }, "actionTags": { "type": "array", "items": { "type": "string", "enum": [ "Breath Weapon", "Frightful Presence", "Multiattack", "Parry", "Shapechanger", "Swallow", "Teleport", "Tentacles" ] } }, "languageTags": { "type": "array", "items": { "type": "string", "description": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon", "enum": [ "X", "XX", "CS", "LF", "TP", "OTH", "AB", "AQ", "AU", "C", "CE", "CSL", "D", "DR", "DS", "DU", "E", "G", "GI", "GO", "GTH", "H", "I", "IG", "O", "P", "S", "T", "TC", "U" ], "markdownDescription": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon" } }, "senseTags": { "type": "array", "items": { "type": "string", "description": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight", "enum": [ "B", "D", "SD", "T", "U" ], "markdownDescription": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight" } }, "spellcastingTags": { "type": "array", "items": { "type": "string", "description": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard", "enum": [ "P", "I", "F", "S", "O", "CA", "CB", "CC", "CD", "CP", "CR", "CS", "CL", "CW" ], "markdownDescription": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard" } }, "damageTags": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsSpell": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsLegendary": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "miscTags": { "type": "array", "items": { "description": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons", "enum": [ "AOE", "CUR", "DIS", "HPR", "MW", "RW", "MA", "RA", "RCH", "MLW", "RNG", "THW" ], "markdownDescription": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons" } }, "attachedItems": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "description": "A UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "A UID, e.g. "longsword|phb"" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictLegendary": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictSpell": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrowForced": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedLegendary": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedSpell": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "footer": { "description": "Intended for homebrew use only.", "type": "array", "items": { "$ref": "../entry.json" }, "markdownDescription": "Intended for homebrew use only." }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "summonedBySpell": { "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "string", "markdownDescription": "The spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedBySpellLevel": { "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "integer", "markdownDescription": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedByClass": { "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.", "type": "string", "markdownDescription": "The class which can summon this creature; e.g. for those granted by some TCE class features." }, "summonedScaleByPlayerLevel": { "description": "If this creature should be scalable by summoning/owning player level.", "const": true, "markdownDescription": "If this creature should be scalable by summoning/owning player level." }, "_isCopy": { "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.", "type": "boolean", "markdownDescription": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the "_copy" format at a later date." }, "_versions": { "type": "array", "items": { "$ref": "#/$defs/creatureVersion" } }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "externalSources": { "description": "For homebrew use only.", "type": "array", "items": { "type": "object", "properties": { "entry": { "$ref": "../entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "markdownDescription": "For homebrew use only." }, "resource": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "value" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"monsterFluff\" array items", "type": "object", "properties": { "_monsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } }, "_appendMonsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "monsterFluff" array items" } ], "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "foundryPrototypeToken": { "$ref": "../util-foundry.json#/$defs/foundryPrototypeTokenObject" }, "tokenUrl": { "$ref": "../util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "additionalProperties": false }, "creature": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".", "type": [ "string", "boolean" ], "markdownDescription": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use "true" if the "shortName" should be an exact copy of the creature's "name"." }, "alias": { "$ref": "../util.json#/$defs/alias" }, "group": { "$ref": "../util.json#/$defs/group" }, "level": { "description": "Used in sidekicks, which can have levels (and generally do not have alignment)", "type": "integer", "markdownDescription": "Used in sidekicks, which can have levels (and generally do not have alignment)" }, "size": { "type": "array", "items": { "$ref": "../util.json#/$defs/size" }, "uniqueItems": true }, "sizeNote": { "type": "string" }, "type": { "oneOf": [ { "type": "object", "properties": { "type": { "oneOf": [ { "$ref": "../util.json#/$defs/creatureType" }, { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "../util.json#/$defs/creatureType" } } }, "additionalProperties": false, "required": [ "choose" ] } ] }, "swarmSize": { "$ref": "../util.json#/$defs/size", "description": "Size of the individual creatures that make up the swarm.", "markdownDescription": "Size of the individual creatures that make up the swarm." }, "tags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickType": { "type": "string", "examples": [ "expert", "spellcaster", "warrior" ] }, "sidekickTags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickHidden": { "const": true }, "note": { "type": "string" } }, "required": [ "type" ], "additionalProperties": false }, { "$ref": "../util.json#/$defs/creatureType" } ] }, "source": { "$ref": "../util.json#/$defs/source" }, "sourceSub": { "type": "string", "description": "Sub-source text that is shown when hovered.", "markdownDescription": "Sub-source text that is shown when hovered." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "alignment": { "type": "array", "items": { "$ref": "#/$defs/align" } }, "alignmentPrefix": { "type": "string" }, "ac": { "type": "array", "items": { "$ref": "#/$defs/acItem" } }, "hp": { "oneOf": [ { "type": "object", "properties": { "average": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "average", "formula" ], "additionalProperties": false }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "speed": { "$ref": "../util.json#/$defs/speed" }, "initiative": { "oneOf": [ { "type": "object", "properties": { "initiative": { "type": "number" }, "proficiency": { "$ref": "../util.json#/$defs/proficiencyLevel" }, "advantageMode": { "type": "string", "enum": [ "adv", "dis" ] } }, "minProperties": 1, "additionalProperties": false }, { "type": "number" } ] }, "str": { "$ref": "#/$defs/abilityScore" }, "dex": { "$ref": "#/$defs/abilityScore" }, "con": { "$ref": "#/$defs/abilityScore" }, "int": { "$ref": "#/$defs/abilityScore" }, "wis": { "$ref": "#/$defs/abilityScore" }, "cha": { "$ref": "#/$defs/abilityScore" }, "save": { "type": "object", "properties": { "str": { "type": "string" }, "dex": { "type": "string" }, "con": { "type": "string" }, "int": { "type": "string" }, "wis": { "type": "string" }, "cha": { "type": "string" }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "skill": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" }, "other": { "type": "array", "items": { "type": "object", "properties": { "oneOf": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" } } } } } }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "tool": { "type": "object", "minProperties": 1, "patternProperties": { ".*": { "type": "string" } } }, "gear": { "type": "array", "items": { "oneOf": [ { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, { "type": "object", "properties": { "item": { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, "quantity": { "type": "integer" } }, "required": [ "item", "quantity" ], "additionalProperties": false } ] } }, "senses": { "oneOf": [ { "type": "array", "items": { "type": "string" }, "minItems": 1 }, { "type": "null" } ] }, "passive": { "type": [ "integer", "string", "null" ] }, "languages": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "string" } }, { "type": "null" } ] }, "pbNote": { "type": "string" }, "cr": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "cr": { "type": "string" }, "lair": { "type": "string" }, "coven": { "type": "string" }, "xp": { "type": "integer" }, "xpLair": { "type": "integer" } }, "additionalProperties": false, "required": [ "cr" ] } ] }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "../util.json#/$defs/damageResistArray" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArray" }, "spellcasting": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entrySpellcasting" } }, { "type": "null" } ] }, "trait": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "type": { "type": "string", "enum": [ "entries", "inset" ] }, "sort": { "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.", "type": "integer", "markdownDescription": "Forces a sort order. Traits with sort orders will always be arranged before those without." } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "actionNote": { "type": "string" }, "actionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "action": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "bonusNote": { "type": "string" }, "bonusHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "bonus": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "reactionNote": { "type": "string" }, "reactionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "reaction": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "legendaryGroup": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "name", "source" ] }, "legendaryActions": { "$ref": "#/$defs/_legendaryActions" }, "legendaryActionsLair": { "$ref": "#/$defs/_legendaryActions" }, "legendaryHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "legendary": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "mythicHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "mythic": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "variant": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/entryVariantBestiary" } }, { "type": "null" } ] }, "page": { "$ref": "../util.json#/$defs/page" }, "familiar": { "enum": [ true, null ] }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "hasToken": { "const": true }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "foundryTokenScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenScale" }, "altArt": { "$ref": "../util-token.json#/$defs/altArt" }, "token": { "$ref": "../util-token.json#/$defs/token" }, "isNamedCreature": { "enum": [ true, null ] }, "isNpc": { "description": "Used to flag adventure NPCs", "enum": [ true, null ], "markdownDescription": "Used to flag adventure NPCs" }, "environment": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "underwater", "coastal", "mountain", "grassland", "hill", "arctic", "urban", "forest", "swamp", "underdark", "desert", "badlands", "farmland", "planar", "planar, transitive", "planar, elemental", "planar, inner", "planar, upper", "planar, lower", "planar, feywild", "planar, shadowfell", "planar, water", "planar, earth", "planar, fire", "planar, air", "planar, ooze", "planar, magma", "planar, ash", "planar, ice", "planar, elemental chaos", "planar, ethereal", "planar, astral", "planar, arborea", "planar, arcadia", "planar, beastlands", "planar, bytopia", "planar, elysium", "planar, mount celestia", "planar, ysgard", "planar, abyss", "planar, acheron", "planar, carceri", "planar, gehenna", "planar, hades", "planar, nine hells", "planar, pandemonium", "planar, limbo", "planar, mechanus", "planar, outlands" ] } }, "treasure": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "individual", "arcana", "armaments", "implements", "relics" ] } }, "soundClip": { "$ref": "../entry.json#/$defs/mediaHref" }, "dragonCastingColor": { "type": "string", "examples": [ "black", "blue", "green", "red", "white", "brass", "bronze", "copper", "gold", "silver", "deep", "spirit" ] }, "dragonAge": { "type": "string", "examples": [ "young", "adult", "wyrmling", "greatwyrm", "ancient", "aspect" ] }, "traitTags": { "type": "array", "items": { "type": "string", "enum": [ "Aggressive", "Ambusher", "Amorphous", "Amphibious", "Antimagic Susceptibility", "Beast of Burden", "Brute", "Camouflage", "Charge", "Damage Absorption", "Death Burst", "Devil's Sight", "False Appearance", "Fey Ancestry", "Flyby", "Hold Breath", "Illumination", "Immutable Form", "Incorporeal Movement", "Keen Senses", "Legendary Resistances", "Light Sensitivity", "Magic Resistance", "Magic Weapons", "Mimicry", "Pack Tactics", "Pounce", "Rampage", "Reckless", "Regeneration", "Rejuvenation", "Shapechanger", "Siege Monster", "Sneak Attack", "Spell Immunity", "Spider Climb", "Sunlight Sensitivity", "Tree Stride", "Tunneler", "Turn Immunity", "Turn Resistance", "Undead Fortitude", "Unusual Nature", "Water Breathing", "Web Sense", "Web Walker" ] } }, "actionTags": { "type": "array", "items": { "type": "string", "enum": [ "Breath Weapon", "Frightful Presence", "Multiattack", "Parry", "Shapechanger", "Swallow", "Teleport", "Tentacles" ] } }, "languageTags": { "type": "array", "items": { "type": "string", "description": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon", "enum": [ "X", "XX", "CS", "LF", "TP", "OTH", "AB", "AQ", "AU", "C", "CE", "CSL", "D", "DR", "DS", "DU", "E", "G", "GI", "GO", "GTH", "H", "I", "IG", "O", "P", "S", "T", "TC", "U" ], "markdownDescription": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon" } }, "senseTags": { "type": "array", "items": { "type": "string", "description": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight", "enum": [ "B", "D", "SD", "T", "U" ], "markdownDescription": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight" } }, "spellcastingTags": { "type": "array", "items": { "type": "string", "description": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard", "enum": [ "P", "I", "F", "S", "O", "CA", "CB", "CC", "CD", "CP", "CR", "CS", "CL", "CW" ], "markdownDescription": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard" } }, "damageTags": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsSpell": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsLegendary": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "miscTags": { "type": "array", "items": { "description": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons", "enum": [ "AOE", "CUR", "DIS", "HPR", "MW", "RW", "MA", "RA", "RCH", "MLW", "RNG", "THW" ], "markdownDescription": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons" } }, "attachedItems": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "description": "A UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "A UID, e.g. "longsword|phb"" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictLegendary": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictSpell": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrowForced": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedLegendary": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedSpell": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "footer": { "description": "Intended for homebrew use only.", "type": "array", "items": { "$ref": "../entry.json" }, "markdownDescription": "Intended for homebrew use only." }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "summonedBySpell": { "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "string", "markdownDescription": "The spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedBySpellLevel": { "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "integer", "markdownDescription": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedByClass": { "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.", "type": "string", "markdownDescription": "The class which can summon this creature; e.g. for those granted by some TCE class features." }, "summonedScaleByPlayerLevel": { "description": "If this creature should be scalable by summoning/owning player level.", "const": true, "markdownDescription": "If this creature should be scalable by summoning/owning player level." }, "_isCopy": { "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.", "type": "boolean", "markdownDescription": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the "_copy" format at a later date." }, "_versions": { "type": "array", "items": { "$ref": "#/$defs/creatureVersion" } }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "externalSources": { "description": "For homebrew use only.", "type": "array", "items": { "type": "object", "properties": { "entry": { "$ref": "../entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "markdownDescription": "For homebrew use only." }, "resource": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "value" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"monsterFluff\" array items", "type": "object", "properties": { "_monsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } }, "_appendMonsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "monsterFluff" array items" } ], "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "foundryPrototypeToken": { "$ref": "../util-foundry.json#/$defs/foundryPrototypeTokenObject" }, "tokenUrl": { "$ref": "../util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "additionalProperties": false, "required": [ "name", "source", "size", "type" ] }, { "type": "object", "$comment": "This is a custom pre-processor tag, which merges together the array of objects into one. This allows proper inheritance, which JSON schema don't really do.", "properties": { "name": { "type": "string" }, "shortName": { "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".", "type": [ "string", "boolean" ], "markdownDescription": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\n\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\n\nAlternatively use "true" if the "shortName" should be an exact copy of the creature's "name"." }, "alias": { "$ref": "../util.json#/$defs/alias" }, "group": { "$ref": "../util.json#/$defs/group" }, "level": { "description": "Used in sidekicks, which can have levels (and generally do not have alignment)", "type": "integer", "markdownDescription": "Used in sidekicks, which can have levels (and generally do not have alignment)" }, "size": { "type": "array", "items": { "$ref": "../util.json#/$defs/size" }, "uniqueItems": true }, "sizeNote": { "type": "string" }, "type": { "oneOf": [ { "type": "object", "properties": { "type": { "oneOf": [ { "$ref": "../util.json#/$defs/creatureType" }, { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "../util.json#/$defs/creatureType" } } }, "additionalProperties": false, "required": [ "choose" ] } ] }, "swarmSize": { "$ref": "../util.json#/$defs/size", "description": "Size of the individual creatures that make up the swarm.", "markdownDescription": "Size of the individual creatures that make up the swarm." }, "tags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickType": { "type": "string", "examples": [ "expert", "spellcaster", "warrior" ] }, "sidekickTags": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "tag": { "type": "string" }, "prefix": { "type": "string" } }, "required": [ "tag", "prefix" ], "additionalProperties": false } ] } }, "sidekickHidden": { "const": true }, "note": { "type": "string" } }, "required": [ "type" ], "additionalProperties": false }, { "$ref": "../util.json#/$defs/creatureType" } ] }, "source": { "$ref": "../util.json#/$defs/source" }, "sourceSub": { "type": "string", "description": "Sub-source text that is shown when hovered.", "markdownDescription": "Sub-source text that is shown when hovered." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "alignment": { "type": "array", "items": { "$ref": "#/$defs/align" } }, "alignmentPrefix": { "type": "string" }, "ac": { "type": "array", "items": { "$ref": "#/$defs/acItem" } }, "hp": { "oneOf": [ { "type": "object", "properties": { "average": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "average", "formula" ], "additionalProperties": false }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "speed": { "$ref": "../util.json#/$defs/speed" }, "initiative": { "oneOf": [ { "type": "object", "properties": { "initiative": { "type": "number" }, "proficiency": { "$ref": "../util.json#/$defs/proficiencyLevel" }, "advantageMode": { "type": "string", "enum": [ "adv", "dis" ] } }, "minProperties": 1, "additionalProperties": false }, { "type": "number" } ] }, "str": { "$ref": "#/$defs/abilityScore" }, "dex": { "$ref": "#/$defs/abilityScore" }, "con": { "$ref": "#/$defs/abilityScore" }, "int": { "$ref": "#/$defs/abilityScore" }, "wis": { "$ref": "#/$defs/abilityScore" }, "cha": { "$ref": "#/$defs/abilityScore" }, "save": { "type": "object", "properties": { "str": { "type": "string" }, "dex": { "type": "string" }, "con": { "type": "string" }, "int": { "type": "string" }, "wis": { "type": "string" }, "cha": { "type": "string" }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "skill": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" }, "other": { "type": "array", "items": { "type": "object", "properties": { "oneOf": { "type": "object", "properties": { "acrobatics": { "type": "string" }, "animal handling": { "type": "string" }, "arcana": { "type": "string" }, "athletics": { "type": "string" }, "deception": { "type": "string" }, "history": { "type": "string" }, "insight": { "type": "string" }, "intimidation": { "type": "string" }, "investigation": { "type": "string" }, "medicine": { "type": "string" }, "nature": { "type": "string" }, "perception": { "type": "string" }, "performance": { "type": "string" }, "persuasion": { "type": "string" }, "religion": { "type": "string" }, "sleight of hand": { "type": "string" }, "stealth": { "type": "string" }, "survival": { "type": "string" } } } } } }, "special": { "description": "For use in homebrew.", "$ref": "../entry.json", "markdownDescription": "For use in homebrew." } }, "additionalProperties": false, "minProperties": 1 }, "tool": { "type": "object", "minProperties": 1, "patternProperties": { ".*": { "type": "string" } } }, "gear": { "type": "array", "items": { "oneOf": [ { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, { "type": "object", "properties": { "item": { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, "quantity": { "type": "integer" } }, "required": [ "item", "quantity" ], "additionalProperties": false } ] } }, "senses": { "oneOf": [ { "type": "array", "items": { "type": "string" }, "minItems": 1 }, { "type": "null" } ] }, "passive": { "type": [ "integer", "string", "null" ] }, "languages": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "string" } }, { "type": "null" } ] }, "pbNote": { "type": "string" }, "cr": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "cr": { "type": "string" }, "lair": { "type": "string" }, "coven": { "type": "string" }, "xp": { "type": "integer" }, "xpLair": { "type": "integer" } }, "additionalProperties": false, "required": [ "cr" ] } ] }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "../util.json#/$defs/damageResistArray" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArray" }, "spellcasting": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entrySpellcasting" } }, { "type": "null" } ] }, "trait": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "type": { "type": "string", "enum": [ "entries", "inset" ] }, "sort": { "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.", "type": "integer", "markdownDescription": "Forces a sort order. Traits with sort orders will always be arranged before those without." } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "actionNote": { "type": "string" }, "actionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "action": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "bonusNote": { "type": "string" }, "bonusHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "bonus": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "reactionNote": { "type": "string" }, "reactionHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "reaction": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "legendaryGroup": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "name", "source" ] }, "legendaryActions": { "$ref": "#/$defs/_legendaryActions" }, "legendaryActionsLair": { "$ref": "#/$defs/_legendaryActions" }, "legendaryHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "legendary": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "mythicHeader": { "type": "array", "minItems": 1, "items": { "$ref": "../entry.json" } }, "mythic": { "oneOf": [ { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "required": [ "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "variant": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/entryVariantBestiary" } }, { "type": "null" } ] }, "page": { "$ref": "../util.json#/$defs/page" }, "familiar": { "enum": [ true, null ] }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "hasToken": { "const": true }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "foundryTokenScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenScale" }, "altArt": { "$ref": "../util-token.json#/$defs/altArt" }, "token": { "$ref": "../util-token.json#/$defs/token" }, "isNamedCreature": { "enum": [ true, null ] }, "isNpc": { "description": "Used to flag adventure NPCs", "enum": [ true, null ], "markdownDescription": "Used to flag adventure NPCs" }, "environment": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "underwater", "coastal", "mountain", "grassland", "hill", "arctic", "urban", "forest", "swamp", "underdark", "desert", "badlands", "farmland", "planar", "planar, transitive", "planar, elemental", "planar, inner", "planar, upper", "planar, lower", "planar, feywild", "planar, shadowfell", "planar, water", "planar, earth", "planar, fire", "planar, air", "planar, ooze", "planar, magma", "planar, ash", "planar, ice", "planar, elemental chaos", "planar, ethereal", "planar, astral", "planar, arborea", "planar, arcadia", "planar, beastlands", "planar, bytopia", "planar, elysium", "planar, mount celestia", "planar, ysgard", "planar, abyss", "planar, acheron", "planar, carceri", "planar, gehenna", "planar, hades", "planar, nine hells", "planar, pandemonium", "planar, limbo", "planar, mechanus", "planar, outlands" ] } }, "treasure": { "type": "array", "minItems": 1, "items": { "type": "string", "examples": [ "any", "individual", "arcana", "armaments", "implements", "relics" ] } }, "soundClip": { "$ref": "../entry.json#/$defs/mediaHref" }, "dragonCastingColor": { "type": "string", "examples": [ "black", "blue", "green", "red", "white", "brass", "bronze", "copper", "gold", "silver", "deep", "spirit" ] }, "dragonAge": { "type": "string", "examples": [ "young", "adult", "wyrmling", "greatwyrm", "ancient", "aspect" ] }, "traitTags": { "type": "array", "items": { "type": "string", "enum": [ "Aggressive", "Ambusher", "Amorphous", "Amphibious", "Antimagic Susceptibility", "Beast of Burden", "Brute", "Camouflage", "Charge", "Damage Absorption", "Death Burst", "Devil's Sight", "False Appearance", "Fey Ancestry", "Flyby", "Hold Breath", "Illumination", "Immutable Form", "Incorporeal Movement", "Keen Senses", "Legendary Resistances", "Light Sensitivity", "Magic Resistance", "Magic Weapons", "Mimicry", "Pack Tactics", "Pounce", "Rampage", "Reckless", "Regeneration", "Rejuvenation", "Shapechanger", "Siege Monster", "Sneak Attack", "Spell Immunity", "Spider Climb", "Sunlight Sensitivity", "Tree Stride", "Tunneler", "Turn Immunity", "Turn Resistance", "Undead Fortitude", "Unusual Nature", "Water Breathing", "Web Sense", "Web Walker" ] } }, "actionTags": { "type": "array", "items": { "type": "string", "enum": [ "Breath Weapon", "Frightful Presence", "Multiattack", "Parry", "Shapechanger", "Swallow", "Teleport", "Tentacles" ] } }, "languageTags": { "type": "array", "items": { "type": "string", "description": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon", "enum": [ "X", "XX", "CS", "LF", "TP", "OTH", "AB", "AQ", "AU", "C", "CE", "CSL", "D", "DR", "DS", "DU", "E", "G", "GI", "GO", "GTH", "H", "I", "IG", "O", "P", "S", "T", "TC", "U" ], "markdownDescription": "- X: Any (Choose)\n- XX: All\n- CS: Can't Speak Known Languages\n- LF: Languages Known in Life\n- TP: Telepathy\n- OTH: Other\n- -\n- AB: Abyssal\n- AQ: Aquan\n- AU: Auran\n- C: Common\n- CE: Celestial\n- CSL: Common Sign Language\n- D: Dwarvish\n- DR: Draconic\n- DS: Deep Speech\n- DU: Druidic\n- E: Elvish\n- G: Gnomish\n- GI: Giant\n- GO: Goblin\n- GTH: Gith\n- H: Halfling\n- I: Infernal\n- IG: Ignan\n- O: Orc\n- P: Primordial\n- S: Sylvan\n- T: Terran\n- TC: Thieves' cant\n- U: Undercommon" } }, "senseTags": { "type": "array", "items": { "type": "string", "description": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight", "enum": [ "B", "D", "SD", "T", "U" ], "markdownDescription": "- B: Blindsight\n- D: Darkvision\n- SD: Superior Darkvision\n- T: Tremorsense\n- U: Truesight" } }, "spellcastingTags": { "type": "array", "items": { "type": "string", "description": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard", "enum": [ "P", "I", "F", "S", "O", "CA", "CB", "CC", "CD", "CP", "CR", "CS", "CL", "CW" ], "markdownDescription": "- P: Psionics\n- I: Innate\n- F: Form Only\n- S: Shared\n- O: Other\n- CA: Class, Artificer\n- CB: Class, Bard\n- CC: Class, Cleric\n- CD: Class, Druid\n- CP: Class, Paladin\n- CR: Class, Ranger\n- CS: Class, Sorcerer\n- CL: Class, Warlock\n- CW: Class, Wizard" } }, "damageTags": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsSpell": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "damageTagsLegendary": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataDamageTags" } }, "miscTags": { "type": "array", "items": { "description": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons", "enum": [ "AOE", "CUR", "DIS", "HPR", "MW", "RW", "MA", "RA", "RCH", "MLW", "RNG", "THW" ], "markdownDescription": "- AOE: Has Areas of Effect\n- CUR: Inflicts Curse\n- DIS: Inflicts Disease\n- HPR: Has HP Reduction\n- MW: Has Weapon Attacks, Melee\n- RW: Has Weapon Attacks, Ranged\n- MA: Has Attacks, Melee\n- RA: Has Attacks, Ranged\n- RCH: Has Reach Attacks\n- MLW: Has Melee Weapons\n- RNG: Has Ranged Weapons\n- THW: Has Thrown Weapons" } }, "attachedItems": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "description": "A UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "A UID, e.g. "longsword|phb"" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictLegendary": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionInflictSpell": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrowForced": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedLegendary": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "savingThrowForcedSpell": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "footer": { "description": "Intended for homebrew use only.", "type": "array", "items": { "$ref": "../entry.json" }, "markdownDescription": "Intended for homebrew use only." }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "summonedBySpell": { "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "string", "markdownDescription": "The spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedBySpellLevel": { "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.", "type": "integer", "markdownDescription": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells." }, "summonedByClass": { "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.", "type": "string", "markdownDescription": "The class which can summon this creature; e.g. for those granted by some TCE class features." }, "summonedScaleByPlayerLevel": { "description": "If this creature should be scalable by summoning/owning player level.", "const": true, "markdownDescription": "If this creature should be scalable by summoning/owning player level." }, "_isCopy": { "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.", "type": "boolean", "markdownDescription": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the "_copy" format at a later date." }, "_versions": { "type": "array", "items": { "$ref": "#/$defs/creatureVersion" } }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "externalSources": { "description": "For homebrew use only.", "type": "array", "items": { "type": "object", "properties": { "entry": { "$ref": "../entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "markdownDescription": "For homebrew use only." }, "resource": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "integer" }, "formula": { "type": "string" } }, "required": [ "value" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"monsterFluff\" array items", "type": "object", "properties": { "_monsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } }, "_appendMonsterFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "monsterFluff" array items" } ], "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "foundryPrototypeToken": { "$ref": "../util-foundry.json#/$defs/foundryPrototypeTokenObject" }, "tokenUrl": { "$ref": "../util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "../util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "../util-foundry.json#/$defs/foundryTokenSubjectScale" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "variantVersion": { "type": "object", "properties": { "_version": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addAs": { "type": "string" } }, "required": [ "addAs" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addHeadersAs": { "type": "string" } }, "required": [ "addHeadersAs" ], "additionalProperties": false } ] } } }, "variantToken": { "type": "object", "properties": { "token": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" } }, "required": [ "name", "source" ] } } }, "entryVariantBestiary": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "variant" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "data": { "$ref": "../entry.json#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "token": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" } }, "required": [ "name", "source" ] }, "_version": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addAs": { "type": "string" } }, "required": [ "addAs" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addHeadersAs": { "type": "string" } }, "required": [ "addHeadersAs" ], "additionalProperties": false } ] } }, "required": [ "type", "name", "entries" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "inset" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "data": { "$ref": "../entry.json#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "style": { "type": "string" }, "token": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" } }, "required": [ "name", "source" ] }, "_version": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addAs": { "type": "string" } }, "required": [ "addAs" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "addHeadersAs": { "type": "string" } }, "required": [ "addHeadersAs" ], "additionalProperties": false } ] } }, "required": [ "type", "entries" ], "additionalProperties": false } ] }, "creatureVersion": { "anyOf": [ { "$ref": "../util-copy.json#/$defs/version" }, { "$ref": "#/$defs/creatureData" } ] } }, "properties": { "monster": { "type": "array", "items": { "$ref": "#/$defs/creature" }, "$comment": "This is necessary as some site bestiary files assert only otherSources and do not contain any true data.", "uniqueItems": true, "minItems": 1 }, "_meta": { "$ref": "../util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\bestiary\fluff-bestiary.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-bestiary.json", "version": "2.0.0", "type": "object", "properties": { "monsterFluff": { "$ref": "../util.json#/$defs/genericFluffArray" }, "_meta": { "$ref": "../util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\bestiary\fluff-index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\bestiary\foundry.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-bestiary.json", "version": "1.0.1", "type": "object", "properties": { "monster": { "$ref": "../util-foundry.json#/$defs/foundrySideDataGenericActorArray" } }, "required": [ "monster" ], "additionalProperties": false } ``` ## schema\brew\bestiary\index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\bestiary\legendarygroups.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "legendarygroups.json", "version": "1.2.3", "type": "object", "$defs": { "legendaryGroupData": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "lairActions": { "type": "array", "items": { "$ref": "../entry.json" } }, "regionalEffects": { "type": "array", "items": { "$ref": "../entry.json" } }, "mythicEncounter": { "type": "array", "items": { "$ref": "../entry.json" } } }, "additionalProperties": false }, "legendaryGroup": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "lairActions": { "type": "array", "items": { "$ref": "../entry.json" } }, "regionalEffects": { "type": "array", "items": { "$ref": "../entry.json" } }, "mythicEncounter": { "type": "array", "items": { "$ref": "../entry.json" } } }, "additionalProperties": false, "required": [ "name", "source" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "lairActions": { "type": "array", "items": { "$ref": "../entry.json" } }, "regionalEffects": { "type": "array", "items": { "$ref": "../entry.json" } }, "mythicEncounter": { "type": "array", "items": { "$ref": "../entry.json" } }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "../util.json#/$defs/metaBlock" }, "legendaryGroup": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/legendaryGroup" } } }, "required": [ "legendaryGroup" ], "additionalProperties": false } ``` ## schema\brew\bestiary\template.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "2.0.0", "$id": "template.json", "type": "object", "$defs": { "monsterTemplateData": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "ref": { "type": "string" }, "crMin": { "type": "string" }, "crMax": { "type": "string" }, "prerequisite": { "type": "object", "patternProperties": { "^.*$": { "oneOf": [ { "type": "object", "properties": { "min": {}, "max": {} }, "additionalProperties": false }, { "type": "object", "properties": { "oneOf": { "type": "array" } }, "additionalProperties": false } ] } } }, "apply": { "type": "object", "properties": { "_root": { "$ref": "bestiary.json#/$defs/creatureData" }, "_mod": { "$ref": "../util-copy.json#/$defs/_modObject" } } } }, "additionalProperties": false }, "monsterTemplate": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "ref": { "type": "string" }, "crMin": { "type": "string" }, "crMax": { "type": "string" }, "prerequisite": { "type": "object", "patternProperties": { "^.*$": { "oneOf": [ { "type": "object", "properties": { "min": {}, "max": {} }, "additionalProperties": false }, { "type": "object", "properties": { "oneOf": { "type": "array" } }, "additionalProperties": false } ] } } }, "apply": { "type": "object", "properties": { "_root": { "$ref": "bestiary.json#/$defs/creatureData" }, "_mod": { "$ref": "../util-copy.json#/$defs/_modObject" } } } }, "additionalProperties": false, "required": [ "name", "source", "apply" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "ref": { "type": "string" }, "crMin": { "type": "string" }, "crMax": { "type": "string" }, "prerequisite": { "type": "object", "patternProperties": { "^.*$": { "oneOf": [ { "type": "object", "properties": { "min": {}, "max": {} }, "additionalProperties": false }, { "type": "object", "properties": { "oneOf": { "type": "array" } }, "additionalProperties": false } ] } } }, "apply": { "type": "object", "properties": { "_root": { "$ref": "bestiary.json#/$defs/creatureData" }, "_mod": { "$ref": "../util-copy.json#/$defs/_modObject" } } }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "../util.json#/$defs/metaBlock" }, "monsterTemplate": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/monsterTemplate" } } }, "additionalProperties": false } ``` ## schema\brew\book\book.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "book.json", "version": "1.2.0", "type": "object", "properties": { "data": { "$ref": "../util.json#/$defs/adventureBookData" } }, "additionalProperties": false } ``` ## schema\brew\books.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "books.json", "version": "1.2.18", "type": "object", "properties": { "book": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "id": { "$ref": "util.json#/$defs/corpusId" }, "source": { "$ref": "util.json#/$defs/source" }, "parentSource": { "$ref": "corpus-shared.json#/$defs/corpusParentSource" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "group": { "description": "The group under which this book should be listed in the navbar.", "type": "string", "enum": [ "core", "supplement", "supplement-alt", "setting", "setting-alt", "prerelease", "homebrew", "screen", "organized-play", "recipe", "other" ], "markdownDescription": "The group under which this book should be listed in the navbar." }, "author": { "type": "string" }, "published": { "$ref": "corpus-shared.json#/$defs/corpusPublished" }, "cover": { "$ref": "corpus-shared.json#/$defs/corpusCover" }, "contents": { "$ref": "corpus-shared.json#/$defs/corpusContents" } }, "additionalProperties": false, "required": [ "name", "id", "source", "contents", "published", "group" ] } } }, "additionalProperties": false } ``` ## schema\brew\changelog.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "changelog.json", "version": "1.0.0", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "ver": { "type": "string" }, "date": { "type": "string", "format": "date" }, "title": { "type": "string" }, "titleAlt": { "type": "string" }, "txt": { "type": "string" } }, "required": [ "ver", "date", "txt" ], "additionalProperties": false } } ``` ## schema\brew\charcreationoptions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "charcreationoptions.json", "version": "1.2.6", "title": "Character Creation Options", "type": "object", "$defs": { "optionType": { "type": "string", "description": "- CS: Character Secret\n- DG: Dark Gift\n- OF: Optional Feature\n- RF:B Replacement Feature: Background\n- SG: Supernatural Gift", "markdownDescription": "- CS: Character Secret\n- DG: Dark Gift\n- OF: Optional Feature\n- RF:B Replacement Feature: Background\n- SG: Supernatural Gift", "examples": [ "CS", "DG", "OF", "RF:B", "SG" ] }, "charoption": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "optionType": { "$comment": "Note that this field supports arbitrary strings for homebrew usage.", "type": "array", "items": { "$ref": "#/$defs/optionType" } }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "entries", "source", "optionType" ], "additionalProperties": false } }, "properties": { "charoption": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/charoption" } } }, "additionalProperties": false } ``` ## schema\brew\citations.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "citations.json", "version": "1.0.0", "type": "object", "$defs": { "citation": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false } }, "properties": { "citation": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/citation" } } }, "required": [ "citation" ], "additionalProperties": false } ``` ## schema\brew\class\class.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "2.12.12", "$id": "class.json", "type": "object", "$defs": { "_classTableGroupSubclass": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false } }, "classTableGroup": { "oneOf": [ { "type": "object", "properties": { "title": { "type": "string" }, "subclasses": { "$ref": "#/$defs/_classTableGroupSubclass" }, "colLabels": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "type": "array", "items": { "$ref": "../entry.json" } } } }, "required": [ "colLabels", "rows" ], "additionalProperties": false }, { "type": "object", "properties": { "title": { "type": "string" }, "subclasses": { "$ref": "#/$defs/_classTableGroupSubclass" }, "colLabels": { "type": "array", "items": { "type": "string" } }, "rowsSpellProgression": { "description": "A count of spell points, starting with 1st-level spells at array index 0, to (n+1)th-level spells at array index n", "type": "array", "items": { "type": "array", "items": { "type": "integer" }, "minItems": 1, "maxItems": 9 }, "markdownDescription": "A count of spell points, starting with 1st-level spells at array index 0, to (n+1)th-level spells at array index n" } }, "required": [ "colLabels", "rowsSpellProgression" ], "additionalProperties": false } ] }, "casterProgression": { "enum": [ "full", "1/2", "1/3", "pact", "artificer" ] }, "spellcastingAbility": { "$ref": "../util.json#/$defs/abilityScoreAbbreviation" }, "cantripProgression": { "type": "array", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20 }, "preparedSpells": { "type": "string", "description": "Formula for the number of spells the class can prepare, for example:\n\n\"<$level$> / 2 + <$int_mod$>\"", "markdownDescription": "Formula for the number of spells the class can prepare, for example:\n\n"<$level$> / 2 + <$int_mod$>"" }, "preparedSpellsProgression": { "type": "array", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20 }, "preparedSpellsChange": { "description": "The event at which a character can change their prepared spells.", "type": "string", "enum": [ "restShort", "restLong", "level" ], "markdownDescription": "The event at which a character can change their prepared spells." }, "spellsKnownProgression": { "type": "array", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20 }, "spellsKnownProgressionFixed": { "description": "For e.g. Wizard, where the spells taken at each level must be <= the max spellcasting level, and cannot be swapped out afterward.", "type": "array", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20, "markdownDescription": "For e.g. Wizard, where the spells taken at each level must be <= the max spellcasting level, and cannot be swapped out afterward." }, "spellsKnownProgressionFixedAllowLowerLevel": { "type": "boolean" }, "spellsKnownProgressionFixedByLevel": { "description": "For e.g. Warlock Mystic Arcanum. A map of -> -> ", "type": "object", "patternProperties": { "^\\d+$": { "type": "object", "properties": { "1": { "type": "integer" }, "2": { "type": "integer" }, "3": { "type": "integer" }, "4": { "type": "integer" }, "5": { "type": "integer" }, "6": { "type": "integer" }, "7": { "type": "integer" }, "8": { "type": "integer" }, "9": { "type": "integer" } }, "additionalProperties": false } }, "additionalProperties": false, "markdownDescription": "For e.g. Warlock Mystic Arcanum. A map of <class level> -> <spell level> -> <number of spells known>" }, "classFeature": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "header": { "type": "integer" }, "page": { "$ref": "../util.json#/$defs/page" }, "type": { "type": "string", "enum": [ "inset", "item" ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "isClassFeatureVariant": { "type": "boolean" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "consumes": { "$ref": "../util.json#/$defs/consumesObject" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "languageProficiencies": { "$ref": "../util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "../util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "../util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "../util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "../util.json#/$defs/toolProficiencies" }, "savingThrowProficiencies": { "$ref": "../util.json#/$defs/savingThrowProficiencies" }, "expertise": { "$ref": "../util.json#/$defs/expertise" }, "resist": { "$ref": "../util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArrayPlayer" }, "resources": { "$ref": "../util.json#/$defs/resourcesArray" } }, "required": [ "name", "source", "className", "classSource", "level", "entries" ], "additionalProperties": false }, "subclassFeatureData": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "subclassShortName": { "type": "string" }, "subclassSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "header": { "type": "integer" }, "page": { "$ref": "../util.json#/$defs/page" }, "type": { "type": "string", "enum": [ "inset", "item" ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "isClassFeatureVariant": { "type": "boolean" }, "isGainAtNextFeatureLevel": { "description": "If this feature should only be (optionally) gained at the next \"gainSubclassFeature\" level, rather than at the level listed on the feature.", "type": "boolean", "markdownDescription": "If this feature should only be (optionally) gained at the next "gainSubclassFeature" level, rather than at the level listed on the feature." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "consumes": { "$ref": "../util.json#/$defs/consumesObject" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "languageProficiencies": { "$ref": "../util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "../util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "../util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "../util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "../util.json#/$defs/toolProficiencies" }, "savingThrowProficiencies": { "$ref": "../util.json#/$defs/savingThrowProficiencies" }, "expertise": { "$ref": "../util.json#/$defs/expertise" }, "resist": { "$ref": "../util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArrayPlayer" }, "resources": { "$ref": "../util.json#/$defs/resourcesArray" } }, "additionalProperties": false }, "subclassFeature": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "subclassShortName": { "type": "string" }, "subclassSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "header": { "type": "integer" }, "page": { "$ref": "../util.json#/$defs/page" }, "type": { "type": "string", "enum": [ "inset", "item" ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "isClassFeatureVariant": { "type": "boolean" }, "isGainAtNextFeatureLevel": { "description": "If this feature should only be (optionally) gained at the next \"gainSubclassFeature\" level, rather than at the level listed on the feature.", "type": "boolean", "markdownDescription": "If this feature should only be (optionally) gained at the next "gainSubclassFeature" level, rather than at the level listed on the feature." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "consumes": { "$ref": "../util.json#/$defs/consumesObject" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "languageProficiencies": { "$ref": "../util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "../util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "../util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "../util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "../util.json#/$defs/toolProficiencies" }, "savingThrowProficiencies": { "$ref": "../util.json#/$defs/savingThrowProficiencies" }, "expertise": { "$ref": "../util.json#/$defs/expertise" }, "resist": { "$ref": "../util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArrayPlayer" }, "resources": { "$ref": "../util.json#/$defs/resourcesArray" } }, "additionalProperties": false, "required": [ "name", "source", "className", "classSource", "subclassShortName", "subclassSource", "level", "entries" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "subclassShortName": { "type": "string" }, "subclassSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "header": { "type": "integer" }, "page": { "$ref": "../util.json#/$defs/page" }, "type": { "type": "string", "enum": [ "inset", "item" ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "isClassFeatureVariant": { "type": "boolean" }, "isGainAtNextFeatureLevel": { "description": "If this feature should only be (optionally) gained at the next \"gainSubclassFeature\" level, rather than at the level listed on the feature.", "type": "boolean", "markdownDescription": "If this feature should only be (optionally) gained at the next "gainSubclassFeature" level, rather than at the level listed on the feature." }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "consumes": { "$ref": "../util.json#/$defs/consumesObject" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "languageProficiencies": { "$ref": "../util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "../util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "../util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "../util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "../util.json#/$defs/toolProficiencies" }, "savingThrowProficiencies": { "$ref": "../util.json#/$defs/savingThrowProficiencies" }, "expertise": { "$ref": "../util.json#/$defs/expertise" }, "resist": { "$ref": "../util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "../util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "../util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "../util.json#/$defs/conditionImmunityArrayPlayer" }, "resources": { "$ref": "../util.json#/$defs/resourcesArray" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "proficiencies": { "type": "object", "properties": { "armor": { "type": "array", "items": { "oneOf": [ { "type": "string", "enum": [ "light", "medium", "heavy", "shield" ] }, { "type": "object", "properties": { "proficiency": { "type": "string", "enum": [ "light", "medium", "heavy", "shield", "special" ] }, "full": { "description": "The complete text for this proficiency.", "type": "string", "markdownDescription": "The complete text for this proficiency." } }, "required": [ "proficiency", "full" ] } ] } }, "weapons": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "proficiency": { "type": "string" }, "optional": { "type": "boolean" } }, "additionalProperties": false, "required": [ "proficiency", "optional" ] } ] } }, "weaponProficiencies": { "description": "Well-structured weapon proficiency data, used by e.g. Plutonium.", "$ref": "../util.json#/$defs/weaponProficiencies", "markdownDescription": "Well-structured weapon proficiency data, used by e.g. Plutonium." }, "tools": { "type": "array", "items": { "type": "string" } }, "toolProficiencies": { "description": "Well-structured tool proficiency data, used by e.g. Plutonium.", "$ref": "../util.json#/$defs/toolProficiencies", "markdownDescription": "Well-structured tool proficiency data, used by e.g. Plutonium." }, "skills": { "$ref": "../util.json#/$defs/skillProficiencies" } }, "additionalProperties": false }, "subclass": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "description": "The name of the class this subclass belongs to.", "type": "string", "markdownDescription": "The name of the class this subclass belongs to." }, "classSource": { "description": "The source of the class this subclass belongs to (defaults to PHB).", "$ref": "../util.json#/$defs/source", "markdownDescription": "The source of the class this subclass belongs to (defaults to PHB)." }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "page": { "$ref": "../util.json#/$defs/page" }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "subclassFeatures": { "type": "array", "description": "Format: \" name | className | classSource | subclassShortName | subclassSource | level | source\"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "subclassFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" }, "gainSubclassFeatureHasContent": { "description": "Features with \"gainSubclassFeature\" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored.", "type": "boolean", "markdownDescription": "Features with "gainSubclassFeature" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored." }, "tableDisplayName": { "type": "string" } }, "required": [ "subclassFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | subclassShortName | subclassSource | level | source"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource." }, "subclassTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"subclassFluff\" array items", "type": "object", "properties": { "_subclassFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "subclassFluff" array items" } ] }, "subclassSpells": { "description": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see \"additionalSpells\".", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see "additionalSpells"." }, "subSubclassSpells": { "description": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use \"additionalSpells\" as well.", "type": "object", "patternProperties": { ".*": { "type": "array", "description": "For example, a druid circle, religious order, or other sub-subclass name", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "For example, a druid circle, religious order, or other sub-subclass name" } }, "markdownDescription": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use "additionalSpells" as well." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" } }, "additionalProperties": false, "required": [ "name", "shortName", "source", "className", "classSource", "subclassFeatures" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "description": "The name of the class this subclass belongs to.", "type": "string", "markdownDescription": "The name of the class this subclass belongs to." }, "classSource": { "description": "The source of the class this subclass belongs to (defaults to PHB).", "$ref": "../util.json#/$defs/source", "markdownDescription": "The source of the class this subclass belongs to (defaults to PHB)." }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "page": { "$ref": "../util.json#/$defs/page" }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "subclassFeatures": { "type": "array", "description": "Format: \" name | className | classSource | subclassShortName | subclassSource | level | source\"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "subclassFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" }, "gainSubclassFeatureHasContent": { "description": "Features with \"gainSubclassFeature\" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored.", "type": "boolean", "markdownDescription": "Features with "gainSubclassFeature" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored." }, "tableDisplayName": { "type": "string" } }, "required": [ "subclassFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | subclassShortName | subclassSource | level | source"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource." }, "subclassTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"subclassFluff\" array items", "type": "object", "properties": { "_subclassFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "subclassFluff" array items" } ] }, "subclassSpells": { "description": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see \"additionalSpells\".", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see "additionalSpells"." }, "subSubclassSpells": { "description": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use \"additionalSpells\" as well.", "type": "object", "patternProperties": { ".*": { "type": "array", "description": "For example, a druid circle, religious order, or other sub-subclass name", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "For example, a druid circle, religious order, or other sub-subclass name" } }, "markdownDescription": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use "additionalSpells" as well." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "subclassData": { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "description": "The name of the class this subclass belongs to.", "type": "string", "markdownDescription": "The name of the class this subclass belongs to." }, "classSource": { "description": "The source of the class this subclass belongs to (defaults to PHB).", "$ref": "../util.json#/$defs/source", "markdownDescription": "The source of the class this subclass belongs to (defaults to PHB)." }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "page": { "$ref": "../util.json#/$defs/page" }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "subclassFeatures": { "type": "array", "description": "Format: \" name | className | classSource | subclassShortName | subclassSource | level | source\"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "subclassFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" }, "gainSubclassFeatureHasContent": { "description": "Features with \"gainSubclassFeature\" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored.", "type": "boolean", "markdownDescription": "Features with "gainSubclassFeature" are generally ignored by e.g. VTT integrations, as having no meaningful content to import to sheets. Setting this flag informs the integration that this feature should not be ignored." }, "tableDisplayName": { "type": "string" } }, "required": [ "subclassFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | subclassShortName | subclassSource | level | source"\n\nPHB is assumed for sources.\n\nfeatureSource is assumed to be the same as subclassSource." }, "subclassTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "anyOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "description": "Reference \"subclassFluff\" array items", "type": "object", "properties": { "_subclassFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" } } } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Reference "subclassFluff" array items" } ] }, "subclassSpells": { "description": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see \"additionalSpells\".", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only; adds custom subclasses to lists in spells.\n\nDoes not enable VTT import - see "additionalSpells"." }, "subSubclassSpells": { "description": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use \"additionalSpells\" as well.", "type": "object", "patternProperties": { ".*": { "type": "array", "description": "For example, a druid circle, religious order, or other sub-subclass name", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "For example, a druid circle, religious order, or other sub-subclass name" } }, "markdownDescription": "Homebrew use only; adds custom sub-subclasses to lists in spells.\n\nPrimarily used by cleric orders and druid circles.\n\nDoes not enable VTT import - use "additionalSpells" as well." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" } }, "additionalProperties": false }, "requirements": { "type": "object", "properties": { "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "or": { "type": "array", "items": { "type": "object", "properties": { "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" } }, "additionalProperties": false } }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } } }, "additionalProperties": false }, "primaryAbility": { "type": "array", "items": { "type": "object", "properties": { "str": { "const": true }, "dex": { "const": true }, "con": { "const": true }, "int": { "const": true }, "wis": { "const": true }, "cha": { "const": true } }, "additionalProperties": false } }, "class": { "anyOf": [ { "type": "object", "description": "A character class", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "classGroup": { "type": "array", "items": { "type": "string", "examples": [ "expert", "mage", "priest", "warrior" ] } }, "isSidekick": { "const": true }, "hd": { "type": "object", "properties": { "number": { "type": "integer" }, "faces": { "type": "integer" } }, "required": [ "number", "faces" ], "additionalProperties": false }, "proficiency": { "type": "array", "items": { "$ref": "../util.json#/$defs/abilityScoreAbbreviation" } }, "classTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "startingProficiencies": { "$ref": "#/$defs/proficiencies" }, "startingEquipment": { "oneOf": [ { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "default": { "type": "array", "items": { "type": "string" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" }, "goldAlternative": { "type": "string" } }, "required": [ "default" ], "additionalProperties": false }, { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" } }, "required": [ "entries", "defaultData" ], "additionalProperties": false } ] }, "requirements": { "$ref": "#/$defs/requirements" }, "primaryAbility": { "$ref": "#/$defs/primaryAbility" }, "multiclassing": { "type": "object", "properties": { "requirements": { "$ref": "#/$defs/requirements" }, "proficienciesGained": { "$ref": "#/$defs/proficiencies" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." } }, "additionalProperties": false }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "classFeatures": { "type": "array", "description": "Format: \" name | className | classSource | level | source \" , PHB is assumed as classSource and featureSource is assumed to be the same as classSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "classFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" } }, "required": [ "classFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | level | source " , PHB is assumed as classSource and featureSource is assumed to be the same as classSource." }, "subclassTitle": { "type": "string" }, "page": { "$ref": "../util.json#/$defs/page" }, "fluff": { "oneOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "deprecated": true, "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "page": { "$ref": "../util.json#/$defs/page" }, "source": { "$ref": "../util.json#/$defs/source" }, "type": { "type": "string" } }, "required": [ "entries", "source" ], "additionalProperties": false } } ] }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "classSpells": { "description": "Homebrew use only", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only" }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" } }, "additionalProperties": false, "markdownDescription": "A character class", "required": [ "name", "source", "classFeatures" ] }, { "type": "object", "description": "A character class", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "classGroup": { "type": "array", "items": { "type": "string", "examples": [ "expert", "mage", "priest", "warrior" ] } }, "isSidekick": { "const": true }, "hd": { "type": "object", "properties": { "number": { "type": "integer" }, "faces": { "type": "integer" } }, "required": [ "number", "faces" ], "additionalProperties": false }, "proficiency": { "type": "array", "items": { "$ref": "../util.json#/$defs/abilityScoreAbbreviation" } }, "classTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "startingProficiencies": { "$ref": "#/$defs/proficiencies" }, "startingEquipment": { "oneOf": [ { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "default": { "type": "array", "items": { "type": "string" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" }, "goldAlternative": { "type": "string" } }, "required": [ "default" ], "additionalProperties": false }, { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" } }, "required": [ "entries", "defaultData" ], "additionalProperties": false } ] }, "requirements": { "$ref": "#/$defs/requirements" }, "primaryAbility": { "$ref": "#/$defs/primaryAbility" }, "multiclassing": { "type": "object", "properties": { "requirements": { "$ref": "#/$defs/requirements" }, "proficienciesGained": { "$ref": "#/$defs/proficiencies" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." } }, "additionalProperties": false }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "classFeatures": { "type": "array", "description": "Format: \" name | className | classSource | level | source \" , PHB is assumed as classSource and featureSource is assumed to be the same as classSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "classFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" } }, "required": [ "classFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | level | source " , PHB is assumed as classSource and featureSource is assumed to be the same as classSource." }, "subclassTitle": { "type": "string" }, "page": { "$ref": "../util.json#/$defs/page" }, "fluff": { "oneOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "deprecated": true, "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "page": { "$ref": "../util.json#/$defs/page" }, "source": { "$ref": "../util.json#/$defs/source" }, "type": { "type": "string" } }, "required": [ "entries", "source" ], "additionalProperties": false } } ] }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "classSpells": { "description": "Homebrew use only", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only" }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "markdownDescription": "A character class", "required": [ "_copy" ] } ] }, "classData": { "description": "A character class", "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "source": { "$ref": "../util.json#/$defs/source" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "edition": { "$ref": "../util-edition.json#/$defs/edition" }, "isReprinted": { "$ref": "../util.json#/$defs/isReprinted" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "classGroup": { "type": "array", "items": { "type": "string", "examples": [ "expert", "mage", "priest", "warrior" ] } }, "isSidekick": { "const": true }, "hd": { "type": "object", "properties": { "number": { "type": "integer" }, "faces": { "type": "integer" } }, "required": [ "number", "faces" ], "additionalProperties": false }, "proficiency": { "type": "array", "items": { "$ref": "../util.json#/$defs/abilityScoreAbbreviation" } }, "classTableGroups": { "type": "array", "items": { "$ref": "#/$defs/classTableGroup" } }, "startingProficiencies": { "$ref": "#/$defs/proficiencies" }, "startingEquipment": { "oneOf": [ { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "default": { "type": "array", "items": { "type": "string" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" }, "goldAlternative": { "type": "string" } }, "required": [ "default" ], "additionalProperties": false }, { "type": "object", "properties": { "additionalFromBackground": { "const": true }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "defaultData": { "$ref": "../util.json#/$defs/startingEquipment" } }, "required": [ "entries", "defaultData" ], "additionalProperties": false } ] }, "requirements": { "$ref": "#/$defs/requirements" }, "primaryAbility": { "$ref": "#/$defs/primaryAbility" }, "multiclassing": { "type": "object", "properties": { "requirements": { "$ref": "#/$defs/requirements" }, "proficienciesGained": { "$ref": "#/$defs/proficiencies" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." } }, "additionalProperties": false }, "casterProgression": { "$ref": "#/$defs/casterProgression" }, "spellcastingAbility": { "$ref": "#/$defs/spellcastingAbility" }, "cantripProgression": { "$ref": "#/$defs/cantripProgression" }, "preparedSpells": { "$ref": "#/$defs/preparedSpells" }, "preparedSpellsProgression": { "$ref": "#/$defs/preparedSpellsProgression" }, "preparedSpellsChange": { "$ref": "#/$defs/preparedSpellsChange" }, "spellsKnownProgression": { "$ref": "#/$defs/spellsKnownProgression" }, "spellsKnownProgressionFixed": { "$ref": "#/$defs/spellsKnownProgressionFixed" }, "spellsKnownProgressionFixedAllowLowerLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedAllowLowerLevel" }, "spellsKnownProgressionFixedByLevel": { "$ref": "#/$defs/spellsKnownProgressionFixedByLevel" }, "optionalfeatureProgression": { "$ref": "../util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "../util.json#/$defs/featProgression" }, "classFeatures": { "type": "array", "description": "Format: \" name | className | classSource | level | source \" , PHB is assumed as classSource and featureSource is assumed to be the same as classSource.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "classFeature": { "type": "string" }, "gainSubclassFeature": { "type": "boolean" } }, "required": [ "classFeature" ] } ] }, "markdownDescription": "Format: " name | className | classSource | level | source " , PHB is assumed as classSource and featureSource is assumed to be the same as classSource." }, "subclassTitle": { "type": "string" }, "page": { "$ref": "../util.json#/$defs/page" }, "fluff": { "oneOf": [ { "$ref": "../util.json#/$defs/fluffObject" }, { "deprecated": true, "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "page": { "$ref": "../util.json#/$defs/page" }, "source": { "$ref": "../util.json#/$defs/source" }, "type": { "type": "string" } }, "required": [ "entries", "source" ], "additionalProperties": false } } ] }, "additionalSpells": { "$ref": "../util-additionalspells.json#/$defs/additionalSpellsArray" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "classSpells": { "description": "Homebrew use only", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/spellListSpellRef" }, "markdownDescription": "Homebrew use only" }, "requirementsSpecial": { "description": "For homebrew use.", "type": "string", "markdownDescription": "For homebrew use." }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryAdvancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" } }, "additionalProperties": false, "markdownDescription": "A character class" } }, "properties": { "_meta": { "$ref": "../util.json#/$defs/metaBlock" }, "class": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "subclass": { "type": "array", "items": { "$ref": "#/$defs/subclass" }, "minItems": 1, "uniqueItems": true }, "classFeature": { "type": "array", "items": { "$ref": "#/$defs/classFeature" }, "minItems": 1, "uniqueItems": true }, "subclassFeature": { "type": "array", "items": { "$ref": "#/$defs/subclassFeature" }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false } ``` ## schema\brew\class\fluff-class.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-class.json", "version": "1.0.2", "type": "object", "$defs": { "_subclassFluffItemData": { "type": "object", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "../util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "shortName": { "type": "string" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" } }, "additionalProperties": false }, "subclassFluffArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "../util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "shortName": { "type": "string" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "name", "shortName", "source", "className", "classSource" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "../util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "../entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "shortName": { "type": "string" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } } }, "properties": { "_meta": { "$ref": "../util.json#/$defs/metaBlock" }, "classFluff": { "$ref": "../util.json#/$defs/genericFluffArray" }, "subclassFluff": { "$ref": "#/$defs/subclassFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\class\fluff-index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\class\foundry.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-class.json", "version": "1.5.1", "type": "object", "properties": { "class": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "system": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "../entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entryData": { "$ref": "../util-foundry.json#/$defs/entryDataObject" }, "chooseSystem": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" } }, "isChooseSystemRenderEntries": { "type": "boolean" }, "isChooseFlagsRenderEntries": { "type": "boolean" }, "isIgnored": { "const": true }, "ignoreSrdActivities": { "const": true }, "ignoreSrdEffects": { "const": true }, "actorTokenMod": { "type": "object" }, "subEntities": { "$ref": "../util-foundry.json#/$defs/foundrySubEntitiesObject" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "subclass": { "type": "array", "items": { "type": "object", "required": [ "name", "shortName", "source", "className", "classSource" ], "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "system": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "../entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" }, "shortName": { "type": "string" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entryData": { "$ref": "../util-foundry.json#/$defs/entryDataObject" }, "chooseSystem": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" } }, "isChooseSystemRenderEntries": { "type": "boolean" }, "isChooseFlagsRenderEntries": { "type": "boolean" }, "isIgnored": { "const": true }, "ignoreSrdActivities": { "const": true }, "ignoreSrdEffects": { "const": true }, "actorTokenMod": { "type": "object" }, "subEntities": { "$ref": "../util-foundry.json#/$defs/foundrySubEntitiesObject" } } }, "minItems": 1, "uniqueItems": true }, "classFeature": { "type": "array", "items": { "type": "object", "required": [ "name", "source", "className", "classSource", "level" ], "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "system": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "../entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entryData": { "$ref": "../util-foundry.json#/$defs/entryDataObject" }, "chooseSystem": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" } }, "isChooseSystemRenderEntries": { "type": "boolean" }, "isChooseFlagsRenderEntries": { "type": "boolean" }, "isIgnored": { "const": true }, "ignoreSrdActivities": { "const": true }, "ignoreSrdEffects": { "const": true }, "actorTokenMod": { "type": "object" }, "subEntities": { "$ref": "../util-foundry.json#/$defs/foundrySubEntitiesObject" } } }, "minItems": 1, "uniqueItems": true }, "subclassFeature": { "type": "array", "items": { "type": "object", "required": [ "name", "source", "className", "classSource", "level", "subclassShortName", "subclassSource" ], "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "system": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "../entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "../util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" }, "className": { "type": "string" }, "classSource": { "$ref": "../util.json#/$defs/source" }, "level": { "type": "integer" }, "subclassShortName": { "type": "string" }, "subclassSource": { "$ref": "../util.json#/$defs/source" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entryData": { "$ref": "../util-foundry.json#/$defs/entryDataObject" }, "chooseSystem": { "type": "array", "items": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" } }, "isChooseSystemRenderEntries": { "type": "boolean" }, "isChooseFlagsRenderEntries": { "type": "boolean" }, "isIgnored": { "const": true }, "ignoreSrdActivities": { "const": true }, "ignoreSrdEffects": { "const": true }, "actorTokenMod": { "type": "object" }, "subEntities": { "$ref": "../util-foundry.json#/$defs/foundrySubEntitiesObject" } } }, "minItems": 1, "uniqueItems": true } }, "required": [ "class", "subclass", "classFeature", "subclassFeature" ], "additionalProperties": false } ``` ## schema\brew\class\index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\conditionsdiseases.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "conditionsdiseases.json", "version": "1.2.12", "type": "object", "$defs": { "_conditionDiseaseBase": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "color": { "description": "For homebrew use only; HTML hex color code this source should use when displayed on the DM Screen.\n\ne.g. \"ff00ff\"", "type": "string", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "For homebrew use only; HTML hex color code this source should use when displayed on the DM Screen.\n\ne.g. "ff00ff"" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "entries", "source" ], "additionalProperties": false }, "condition": { "$ref": "#/$defs/_conditionDiseaseBase" }, "status": { "$ref": "#/$defs/_conditionDiseaseBase" }, "disease": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "color": { "description": "For homebrew use only; HTML hex color code this source should use when displayed on the DM Screen.\n\ne.g. \"ff00ff\"", "type": "string", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "For homebrew use only; HTML hex color code this source should use when displayed on the DM Screen.\n\ne.g. "ff00ff"" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "type": { "type": "string", "examples": [ "Magical Contagion" ] } }, "required": [ "name", "entries", "source" ], "additionalProperties": false } }, "properties": { "condition": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/condition" } }, "disease": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/disease" } }, "status": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/status" } } }, "required": [ "condition", "disease", "status" ], "additionalProperties": false } ``` ## schema\brew\converter.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "converter.json", "version": "1.0.0", "type": "object", "properties": { "converterSample": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "converterId": { "type": "string", "enum": [ "background", "monster", "generic", "feat", "item", "race", "spell", "table" ] }, "format": { "type": "string", "enum": [ "txt", "md", "html" ] }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "text": { "type": "string" } }, "required": [ "converterId", "format", "edition", "text" ], "additionalProperties": false } } }, "additionalProperties": false } ``` ## schema\brew\corpus-shared.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "corpus-shared.json", "version": "1.0.1", "$defs": { "corpusCover": { "description": "A link to an image. Preferred sizes are 300 x 300px or 600 x 600px.", "$ref": "entry.json#/$defs/mediaHref", "markdownDescription": "A link to an image. Preferred sizes are 300 x 300px or 600 x 600px." }, "corpusContents": { "description": "The linked Table of Contents of the corpus.", "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "headers": { "type": "array", "minItems": 1, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "depth": { "type": "integer" }, "header": { "type": "string" }, "index": { "description": "The relative index of this header in the current chapter, i.e. if \"Treasure\" appears twice and you wish the contents entry to link to the second instance, set the \"index\" to 1.", "type": "integer", "markdownDescription": "The relative index of this header in the current chapter, i.e. if "Treasure" appears twice and you wish the contents entry to link to the second instance, set the "index" to 1." } }, "required": [ "header" ] } ] } }, "ordinal": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "chapter", "appendix", "part", "episode", "level", "section" ] }, "identifier": { "type": [ "integer", "string" ] } }, "additionalProperties": false, "required": [ "type" ] } }, "additionalProperties": false, "required": [ "name" ] }, "markdownDescription": "The linked Table of Contents of the corpus." }, "corpusPublished": { "type": "string", "format": "date", "description": "The date of publication of the book, in the format YYYY-MM-DD (RFC3339).", "markdownDescription": "The date of publication of the book, in the format YYYY-MM-DD (RFC3339)." }, "corpusParentSource": { "type": "string", "description": "Used for sources which contain multiple adventures, e.g. TftYP, or \"packages\" of related books, e.g. SAiS.", "$ref": "util.json#/$defs/source", "markdownDescription": "Used for sources which contain multiple adventures, e.g. TftYP, or "packages" of related books, e.g. SAiS." } } } ``` ## schema\brew\cultsboons.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "cultsboons.json", "version": "1.2.2", "type": "object", "$defs": { "cult": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "type": { "type": "string", "examples": [ "Demonic", "Diabolical", "Elder Evil", "Elemental" ] }, "goal": { "type": "object", "properties": { "entry": { "type": "string" } }, "required": [ "entry" ], "additionalProperties": false }, "cultists": { "type": "object", "properties": { "entry": { "type": "string" } }, "required": [ "entry" ], "additionalProperties": false }, "signatureSpells": { "type": "object", "properties": { "entry": { "type": "string" } }, "required": [ "entry" ], "additionalProperties": false }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "source", "entries" ], "additionalProperties": false }, "boon": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "type": { "type": "string", "examples": [ "Demonic" ] }, "ability": { "type": "object", "properties": { "entry": { "$ref": "entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "signatureSpells": { "type": "object", "properties": { "entry": { "$ref": "entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "entries": { "type": "array", "uniqueItems": true, "items": { "$ref": "entry.json" } }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "source", "type", "entries" ], "additionalProperties": false } }, "properties": { "cult": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/cult" } }, "boon": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/boon" } } }, "required": [ "cult", "boon" ], "additionalProperties": false } ``` ## schema\brew\decks.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "decks.json", "version": "1.0.5", "type": "object", "$defs": { "deckData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "cards": { "type": "array", "$comment": "Non-unique entries are permitted, to allow explicit ordering of duplicate cards.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "uid": { "type": "string" }, "count": { "type": "integer" }, "replacement": { "const": true } }, "required": [ "uid" ], "minProperties": 2, "additionalProperties": false } ] }, "minItems": 1 }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "hasCardArt": { "description": "A hint used by filters, determining whether or not this deck should be filtered out by default.", "type": "boolean", "markdownDescription": "A hint used by filters, determining whether or not this deck should be filtered out by default." } }, "additionalProperties": false }, "deck": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "cards": { "type": "array", "$comment": "Non-unique entries are permitted, to allow explicit ordering of duplicate cards.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "uid": { "type": "string" }, "count": { "type": "integer" }, "replacement": { "const": true } }, "required": [ "uid" ], "minProperties": 2, "additionalProperties": false } ] }, "minItems": 1 }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "hasCardArt": { "description": "A hint used by filters, determining whether or not this deck should be filtered out by default.", "type": "boolean", "markdownDescription": "A hint used by filters, determining whether or not this deck should be filtered out by default." } }, "additionalProperties": false, "required": [ "name", "source", "cards" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "cards": { "type": "array", "$comment": "Non-unique entries are permitted, to allow explicit ordering of duplicate cards.", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "uid": { "type": "string" }, "count": { "type": "integer" }, "replacement": { "const": true } }, "required": [ "uid" ], "minProperties": 2, "additionalProperties": false } ] }, "minItems": 1 }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "hasCardArt": { "description": "A hint used by filters, determining whether or not this deck should be filtered out by default.", "type": "boolean", "markdownDescription": "A hint used by filters, determining whether or not this deck should be filtered out by default." }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "cardData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "set": { "type": "string" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "face": { "$ref": "entry.json#/$defs/entryImage" }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "suit": { "type": "string" }, "value": { "type": "integer" }, "valueName": { "type": "string" } }, "additionalProperties": false }, "card": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "set": { "type": "string" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "face": { "$ref": "entry.json#/$defs/entryImage" }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "suit": { "type": "string" }, "value": { "type": "integer" }, "valueName": { "type": "string" } }, "additionalProperties": false, "required": [ "name", "source", "set" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "set": { "type": "string" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "face": { "$ref": "entry.json#/$defs/entryImage" }, "back": { "$ref": "entry.json#/$defs/entryImage" }, "suit": { "type": "string" }, "value": { "type": "integer" }, "valueName": { "type": "string" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "deck": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/deck" } }, "card": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/card" } } }, "required": [ "deck", "card" ], "additionalProperties": false } ``` ## schema\brew\deities.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "deities.json", "version": "1.2.14", "type": "object", "$defs": { "deityData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "reprintAlias": { "type": "string" }, "alignment": { "type": "array", "minItems": 1, "items": { "$ref": "util.json#/$defs/alignment" } }, "title": { "type": "string" }, "pantheon": { "type": "string", "examples": [ "Amaranthine", "Celtic", "Dawn War", "Dragonlance", "Drow", "Dwarven", "Eberron", "Egyptian", "Elven", "Faerûnian", "Forgotten Realms", "Gnomish", "Greek", "Greyhawk", "Halfling", "Nonhuman", "Norse", "Orc", "Gnome", "Duergar", "Exandria", "Theros", "Unknown", "Yuan-ti", "Umbral", "Shadow Realm Godlings", "Shadow Realm Dark Gods" ] }, "category": { "type": "string" }, "domains": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "examples": [ "Arcana", "Community", "Death", "Forge", "Grave", "Knowledge", "Life", "Light", "Moon", "Nature", "Night", "Order", "Peace", "Tempest", "Trickery", "Twilight", "Unknown", "War", "Apocalypse", "Wine", "Cat", "Darkness", "Hunger", "Hunting", "Justice", "Keeper", "Labyrinth", "Lust", "Mercy", "Ocean", "Portal", "Prophecy", "Shadow", "Travel", "Void", "Wind" ] } }, "province": { "description": "The nouveau form of \"title\", first seen in MTF", "type": "string", "markdownDescription": "The nouveau form of "title", first seen in MTF" }, "symbol": { "type": "string" }, "dogma": { "type": "string" }, "favoredWeapons": { "type": "string" }, "plane": { "type": "string" }, "worshipers": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "altNames": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "symbolImg": { "$ref": "entry.json#/$defs/entryImage" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "customExtensionOf": { "type": "string", "description": "A UID of an existing deity that this deity extends. e.g. \"Bahgtru|Orc|SCAG\"", "markdownDescription": "A UID of an existing deity that this deity extends. e.g. "Bahgtru|Orc|SCAG"" }, "piety": { "type": "boolean" }, "customProperties": { "description": "For homebrew use only; a key-value dict of the form: `\"Typical Dissidents\": \"Human Bards\"`", "type": "object", "markdownDescription": "For homebrew use only; a key-value dict of the form: "Typical Dissidents": "Human Bards"" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false }, "deity": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "reprintAlias": { "type": "string" }, "alignment": { "type": "array", "minItems": 1, "items": { "$ref": "util.json#/$defs/alignment" } }, "title": { "type": "string" }, "pantheon": { "type": "string", "examples": [ "Amaranthine", "Celtic", "Dawn War", "Dragonlance", "Drow", "Dwarven", "Eberron", "Egyptian", "Elven", "Faerûnian", "Forgotten Realms", "Gnomish", "Greek", "Greyhawk", "Halfling", "Nonhuman", "Norse", "Orc", "Gnome", "Duergar", "Exandria", "Theros", "Unknown", "Yuan-ti", "Umbral", "Shadow Realm Godlings", "Shadow Realm Dark Gods" ] }, "category": { "type": "string" }, "domains": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "examples": [ "Arcana", "Community", "Death", "Forge", "Grave", "Knowledge", "Life", "Light", "Moon", "Nature", "Night", "Order", "Peace", "Tempest", "Trickery", "Twilight", "Unknown", "War", "Apocalypse", "Wine", "Cat", "Darkness", "Hunger", "Hunting", "Justice", "Keeper", "Labyrinth", "Lust", "Mercy", "Ocean", "Portal", "Prophecy", "Shadow", "Travel", "Void", "Wind" ] } }, "province": { "description": "The nouveau form of \"title\", first seen in MTF", "type": "string", "markdownDescription": "The nouveau form of "title", first seen in MTF" }, "symbol": { "type": "string" }, "dogma": { "type": "string" }, "favoredWeapons": { "type": "string" }, "plane": { "type": "string" }, "worshipers": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "altNames": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "symbolImg": { "$ref": "entry.json#/$defs/entryImage" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "customExtensionOf": { "type": "string", "description": "A UID of an existing deity that this deity extends. e.g. \"Bahgtru|Orc|SCAG\"", "markdownDescription": "A UID of an existing deity that this deity extends. e.g. "Bahgtru|Orc|SCAG"" }, "piety": { "type": "boolean" }, "customProperties": { "description": "For homebrew use only; a key-value dict of the form: `\"Typical Dissidents\": \"Human Bards\"`", "type": "object", "markdownDescription": "For homebrew use only; a key-value dict of the form: "Typical Dissidents": "Human Bards"" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false, "required": [ "name", "pantheon", "source" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "reprintAlias": { "type": "string" }, "alignment": { "type": "array", "minItems": 1, "items": { "$ref": "util.json#/$defs/alignment" } }, "title": { "type": "string" }, "pantheon": { "type": "string", "examples": [ "Amaranthine", "Celtic", "Dawn War", "Dragonlance", "Drow", "Dwarven", "Eberron", "Egyptian", "Elven", "Faerûnian", "Forgotten Realms", "Gnomish", "Greek", "Greyhawk", "Halfling", "Nonhuman", "Norse", "Orc", "Gnome", "Duergar", "Exandria", "Theros", "Unknown", "Yuan-ti", "Umbral", "Shadow Realm Godlings", "Shadow Realm Dark Gods" ] }, "category": { "type": "string" }, "domains": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "examples": [ "Arcana", "Community", "Death", "Forge", "Grave", "Knowledge", "Life", "Light", "Moon", "Nature", "Night", "Order", "Peace", "Tempest", "Trickery", "Twilight", "Unknown", "War", "Apocalypse", "Wine", "Cat", "Darkness", "Hunger", "Hunting", "Justice", "Keeper", "Labyrinth", "Lust", "Mercy", "Ocean", "Portal", "Prophecy", "Shadow", "Travel", "Void", "Wind" ] } }, "province": { "description": "The nouveau form of \"title\", first seen in MTF", "type": "string", "markdownDescription": "The nouveau form of "title", first seen in MTF" }, "symbol": { "type": "string" }, "dogma": { "type": "string" }, "favoredWeapons": { "type": "string" }, "plane": { "type": "string" }, "worshipers": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "altNames": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "symbolImg": { "$ref": "entry.json#/$defs/entryImage" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "customExtensionOf": { "type": "string", "description": "A UID of an existing deity that this deity extends. e.g. \"Bahgtru|Orc|SCAG\"", "markdownDescription": "A UID of an existing deity that this deity extends. e.g. "Bahgtru|Orc|SCAG"" }, "piety": { "type": "boolean" }, "customProperties": { "description": "For homebrew use only; a key-value dict of the form: `\"Typical Dissidents\": \"Human Bards\"`", "type": "object", "markdownDescription": "For homebrew use only; a key-value dict of the form: "Typical Dissidents": "Human Bards"" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "deity": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/deity" } }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\encounters.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "encounters.json", "version": "1.3.3", "title": "EncounterArray", "type": "object", "$defs": { "encounterTableRow": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "result": { "$ref": "entry.json" }, "resultAttitude": { "$ref": "entry.json" } }, "required": [ "min", "max", "result" ], "additionalProperties": false }, "_encounterTableShared": { "type": "object", "properties": { "minlvl": { "type": "integer" }, "maxlvl": { "type": "integer" }, "diceExpression": { "type": "string" }, "rollAttitude": { "type": "boolean" }, "table": { "type": "array", "items": { "$ref": "#/$defs/encounterTableRow" } }, "footnotes": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "table" ], "additionalProperties": false }, "encounterTable": { "anyOf": [ { "type": "object", "properties": { "minlvl": { "type": "integer" }, "maxlvl": { "type": "integer" }, "diceExpression": { "type": "string" }, "rollAttitude": { "type": "boolean" }, "table": { "type": "array", "items": { "$ref": "#/$defs/encounterTableRow" } }, "footnotes": { "type": "array", "items": { "$ref": "entry.json" } }, "caption": { "type": "string" } }, "required": [ "table" ], "additionalProperties": false }, { "type": "object", "properties": { "minlvl": { "type": "integer" }, "maxlvl": { "type": "integer" }, "diceExpression": { "type": "string" }, "rollAttitude": { "type": "boolean" }, "table": { "type": "array", "items": { "$ref": "#/$defs/encounterTableRow" } }, "footnotes": { "type": "array", "items": { "$ref": "entry.json" } }, "captionPrefix": { "type": "string" }, "captionSuffix": { "type": "string" } }, "required": [ "table" ], "additionalProperties": false } ] }, "encounter": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "tables": { "type": "array", "items": { "$ref": "#/$defs/encounterTable" } }, "page": { "$ref": "util.json#/$defs/page" } }, "required": [ "name", "source", "tables" ], "additionalProperties": false } }, "properties": { "encounter": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/encounter" } } }, "required": [ "encounter" ], "additionalProperties": false } ``` ## schema\brew\entry.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "entry.json", "title": "Entry", "description": "A recursively renderable object.", "version": "1.9.16", "$defs": { "_arrayOfSpell": { "type": "array", "uniqueItems": true, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "entry": { "type": "string" }, "hidden": { "type": "boolean" } }, "required": [ "entry", "hidden" ] } ] } }, "_entryDataStyle": { "type": "string", "enum": [ "inset", "narrow" ] }, "_entryDataData": { "description": "A generic object for storing special data for external use-cases. Keys prefixed with \"rd-\" should be added as \"data-\" HTML attributes when rendering to HTML.", "type": "object", "properties": { "genTables": { "type": "object", "properties": { "tableIgnore": { "const": true }, "tableChapterIgnore": { "const": true }, "tableInclude": { "const": true }, "tableNamePrefix": { "type": "string" }, "tableName": { "type": "string" }, "skipSectionPrefix": { "const": true }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "fauxGroupName": { "type": "string" }, "fauxGroupSource": { "$ref": "util.json#/$defs/source" }, "fauxGroupPage": { "$ref": "util.json#/$defs/page" }, "isFauxGroupAdditional": { "const": true } }, "additionalProperties": false, "minProperties": 1 } }, "markdownDescription": "A generic object for storing special data for external use-cases. Keys prefixed with "rd-" should be added as "data-" HTML attributes when rendering to HTML." }, "_entryTableColLabelItem": { "anyOf": [ { "$ref": "#/$defs/entryTableHeaderCell" }, { "type": "string" } ] }, "_entryStatblockBase": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type" ] }, "mediaHrefInternal": { "type": "object", "properties": { "type": { "const": "internal" }, "path": { "type": "string", "pattern": "\\.(webp|mp3)$" } }, "required": [ "path" ], "additionalProperties": false }, "mediaHrefExternal": { "type": "object", "properties": { "type": { "const": "external" }, "url": { "type": "string", "description": "Restrict the usage of:\n\n- Site URLs -- these should be `\"internal\"` URLs instead\n- Imgur links -- these are not accessible in the UK https://help.imgur.com/hc/en-us/articles/41592665292443-Imgur-access-in-the-United-Kingdom", "markdownDescription": "Restrict the usage of:\n\n- Site URLs -- these should be "internal" URLs instead\n- Imgur links -- these are not accessible in the UK https://help.imgur.com/hc/en-us/articles/41592665292443-Imgur-access-in-the-United-Kingdom", "minLength": 3, "pattern": "^https?://", "not": { "pattern": "^https?://(5e\\.tools|5etools-mirror-\\d+\\.github\\.io|raw\\.githubusercontent\\.com/5etools-mirror-\\d+|i\\.imgur\\.com|imgur\\.com)/" } } }, "required": [ "url" ], "additionalProperties": false }, "mediaHref": { "oneOf": [ { "$ref": "#/$defs/mediaHrefInternal" }, { "$ref": "#/$defs/mediaHrefExternal" } ] }, "entry": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" } }, "required": [ "type" ] }, "entrySection": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "section" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "style": { "type": "string" } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryEntries": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "entries" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "alias": { "$ref": "util.json#/$defs/alias" }, "style": { "type": "string" } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryQuote": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "quote" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "by": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "from": { "type": "string" }, "skipMarks": { "description": "If the automatically-inserted quotation marks should be skipped.", "type": "boolean", "markdownDescription": "If the automatically-inserted quotation marks should be skipped." }, "skipItalics": { "type": "boolean" }, "style": { "type": "string", "enum": [ "quote-pull" ] } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryInlineEntries": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "inline" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryEntriesInlineEntries": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "inlineBlock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryOptions": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "options" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "count": { "description": "Used to specify how many of the listed options can be chosen as e.g. permanent character features. Leave blank for transient choices.", "type": "integer", "markdownDescription": "Used to specify how many of the listed options can be chosen as e.g. permanent character features. Leave blank for transient choices." }, "style": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryTableBase": { "properties": { "caption": { "type": "string" }, "isStriped": { "type": "boolean" }, "isNameGenerator": { "type": "boolean", "description": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc.", "markdownDescription": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc." }, "style": { "type": "string" }, "colLabels": { "type": "array", "items": { "$ref": "#/$defs/_entryTableColLabelItem" } }, "colLabelRows": { "type": "array", "items": { "type": "array", "items": { "$ref": "#/$defs/_entryTableColLabelItem" } }, "minItems": 1 }, "colStyles": { "type": "array", "items": { "type": "string" } }, "rowLabels": { "type": "array", "items": { "type": "string" } }, "rowStyles": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "anyOf": [ { "type": "array", "items": { "$ref": "#" } }, { "$ref": "#/$defs/entryTableRow" } ] } }, "footnotes": { "type": "array", "items": { "$ref": "#" } }, "intro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "#" }, "markdownDescription": "Primarily for homebrew use." }, "outro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "#" }, "markdownDescription": "Primarily for homebrew use." } }, "dependencies": { "colLabels": { "not": { "required": [ "colLabelRows" ] } }, "colLabelRows": { "not": { "required": [ "colLabels" ] } } }, "additionalProperties": false }, "entryTable": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "table" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "caption": { "type": "string" }, "isStriped": { "type": "boolean" }, "isNameGenerator": { "type": "boolean", "description": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc.", "markdownDescription": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc." }, "style": { "type": "string" }, "colLabels": { "type": "array", "items": { "$ref": "#/$defs/_entryTableColLabelItem" } }, "colLabelRows": { "type": "array", "items": { "type": "array", "items": { "$ref": "#/$defs/_entryTableColLabelItem" } }, "minItems": 1 }, "colStyles": { "type": "array", "items": { "type": "string" } }, "rowLabels": { "type": "array", "items": { "type": "string" } }, "rowStyles": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "anyOf": [ { "type": "array", "items": { "$ref": "#" } }, { "$ref": "#/$defs/entryTableRow" } ] } }, "footnotes": { "type": "array", "items": { "$ref": "#" } }, "intro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "#" }, "markdownDescription": "Primarily for homebrew use." }, "outro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "#" }, "markdownDescription": "Primarily for homebrew use." } }, "required": [ "type", "rows" ], "dependencies": { "colLabels": { "not": { "required": [ "colLabelRows" ] } }, "colLabelRows": { "not": { "required": [ "colLabels" ] } } }, "additionalProperties": false }, "entryTableGroup": { "description": "Used to group related tables together; has no effect on rendering.", "type": "object", "markdownDescription": "Used to group related tables together; has no effect on rendering.", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "tableGroup" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "tables": { "type": "array", "items": { "$ref": "#/$defs/entryTable" } } }, "required": [ "type", "tables" ], "additionalProperties": false }, "entryTableRow": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "row" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "style": { "type": "string" }, "row": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "row" ], "additionalProperties": false }, "entryTableHeaderCell": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "cellHeader" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "width": { "type": "integer", "minimum": 2 }, "entry": { "type": "string" }, "style": { "type": "string", "enum": [ "th-skewer" ] } }, "required": [ "type", "entry" ], "additionalProperties": false }, "entryTableCell": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "cell" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "width": { "type": "integer" }, "roll": { "oneOf": [ { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "pad": { "type": "boolean" } }, "required": [ "min", "max" ], "additionalProperties": false }, { "type": "object", "properties": { "exact": { "type": "integer" }, "pad": { "type": "boolean" } }, "required": [ "exact" ], "additionalProperties": false } ] }, "entry": { "$ref": "#" } }, "required": [ "type" ], "additionalProperties": false }, "entryList": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "list" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "columns": { "description": "Number of columns the content should be split into. Note that the full value is only displayed on wide screens, and screens below certain widths will see an appropriately reduced number of columns.", "type": "integer", "markdownDescription": "Number of columns the content should be split into. Note that the full value is only displayed on wide screens, and screens below certain widths will see an appropriately reduced number of columns." }, "style": { "type": "string", "description": "Formatting to be applied to the list; not providing a style results in a simple bullet point list.\n- list-decimal: decimal numbering 1. 2. 3. etc\n- list-hang: a list with the bullets removed and a full indentation\n- list-hang-notitle: a list with no bullets that indents all lines but the first\n- list-lower-roman: lowercase roman numeral numbering i, ii, iii, iv, etc.\n- list-name: a bulleted list with all text in bold\n- list-no-bullets: a list with the bullets removed and reduced indentation", "enum": [ "list-decimal", "list-hang", "list-hang-notitle", "list-hang-subtrait", "list-lower-roman", "list-upper-roman", "list-name", "list-no-bullets", "list-caption" ], "markdownDescription": "Formatting to be applied to the list; not providing a style results in a simple bullet point list.\n- list-decimal: decimal numbering 1. 2. 3. etc\n- list-hang: a list with the bullets removed and a full indentation\n- list-hang-notitle: a list with no bullets that indents all lines but the first\n- list-lower-roman: lowercase roman numeral numbering i, ii, iii, iv, etc.\n- list-name: a bulleted list with all text in bold\n- list-no-bullets: a list with the bullets removed and reduced indentation" }, "start": { "type": "integer" }, "items": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "items" ], "additionalProperties": false }, "entryBonus": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "bonus" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "value": { "type": "integer" } }, "required": [ "type", "value" ], "additionalProperties": false }, "entryBonusSpeed": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "bonusSpeed" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "value": { "type": "integer" } }, "required": [ "type", "value" ], "additionalProperties": false }, "entryDice": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "dice" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "toRoll": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "integer" }, "faces": { "type": "integer" }, "modifier": { "description": "(Warning: unused)", "type": "integer", "markdownDescription": "(Warning: unused)" }, "hideModifier": { "description": "(Warning: unused)", "type": "boolean", "markdownDescription": "(Warning: unused)" } }, "required": [ "number", "faces" ] } }, "rollable": { "type": "boolean" } }, "required": [ "type" ], "additionalProperties": false }, "entryAbilityDc": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "abilityDc" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "attributes": { "type": "array", "items": { "type": "string", "examples": [ "str", "dex", "con", "int", "wis", "cha", "spellcasting" ] } } }, "required": [ "type", "name", "attributes" ], "additionalProperties": false }, "entryAbilityAttackMod": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "abilityAttackMod" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "attributes": { "type": "array", "items": { "type": "string", "examples": [ "str", "dex", "con", "int", "wis", "cha", "spellcasting" ] } } }, "required": [ "type", "name", "attributes" ], "additionalProperties": false }, "abilityGeneric": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "abilityGeneric" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "text": { "type": "string" }, "attributes": { "type": "array", "items": { "$ref": "util.json#/$defs/abilityScoreAbbreviation" } } }, "required": [ "type", "text" ], "additionalProperties": false }, "entryLink": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "link" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "text": { "type": "string" }, "href": { "oneOf": [ { "type": "object", "properties": { "type": { "const": "internal" }, "path": { "type": "string" }, "hash": { "type": "string" }, "hashPreEncoded": { "type": "boolean" }, "subhashes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "key": { "type": "string" }, "values": { "type": "array", "items": { "type": "string" } }, "preEncoded": { "type": "boolean" } }, "required": [ "key", "values" ], "additionalProperties": false }, { "type": "object", "properties": { "key": { "type": "string" }, "value": { "type": "string" }, "preEncoded": { "type": "boolean" } }, "required": [ "key", "value" ], "additionalProperties": false } ] } }, "hover": { "type": "object", "properties": { "page": { "$ref": "util.json#/$defs/page" }, "source": { "$ref": "util.json#/$defs/source" }, "hash": { "description": "Optional; overrides the href hash for hover handlers.", "type": "string", "markdownDescription": "Optional; overrides the href hash for hover handlers." }, "hashPreEncoded": { "type": "boolean" } }, "additionalProperties": false, "required": [ "page", "source" ] } }, "required": [ "path" ], "additionalProperties": false }, { "$ref": "#/$defs/mediaHrefExternal" } ] } }, "required": [ "type", "text", "href" ], "additionalProperties": false }, "entryOptFeature": { "description": "For e.g. Eldritch Invocations which require prerequisite text. Deprecated; prefer \"refOptionalfeature\" or \"statblock\" entries instead.", "type": "object", "markdownDescription": "For e.g. Eldritch Invocations which require prerequisite text. Deprecated; prefer "refOptionalfeature" or "statblock" entries instead.", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "optfeature" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "deprecated": true, "prerequisite": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "name" ], "additionalProperties": false }, "entryInset": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "inset" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "style": { "type": "string" } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryInsetReadaloud": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "insetReadaloud" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "style": { "type": "string" } }, "required": [ "type", "entries" ], "additionalProperties": false }, "entryVariant": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "variant" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "name", "entries" ], "additionalProperties": false }, "entryVariantInner": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "variantInner" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "name", "entries" ], "additionalProperties": false }, "entryVariantSub": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "variantSub" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "name", "entries" ], "additionalProperties": false }, "entryItem": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "item" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "style": { "type": "string" }, "entry": { "$ref": "#" }, "nameDot": { "const": false } }, "required": [ "type", "entry" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "item" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "style": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "nameDot": { "const": false } }, "required": [ "type", "entries" ], "additionalProperties": false } ] }, "entryItemSub": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "itemSub" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entry": { "$ref": "#" }, "nameDot": { "const": false } }, "required": [ "type", "entry" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "itemSub" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "nameDot": { "const": false } }, "required": [ "type", "entries" ], "additionalProperties": false } ] }, "entryItemSpell": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "itemSpell" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entry": { "$ref": "#" } }, "required": [ "type", "name", "entry" ], "additionalProperties": false }, "entryImage": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "image" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "href": { "$ref": "#/$defs/mediaHref" }, "hrefThumbnail": { "title": "A thumbnail image used in rare cases, e.g. when loading a wall of maps to choose from in the DM Screen.", "$ref": "#/$defs/mediaHref" }, "title": { "type": "string" }, "credit": { "type": "string" }, "altText": { "description": "For accessibility purposes", "type": "string", "markdownDescription": "For accessibility purposes" }, "imageType": { "type": "string", "enum": [ "map", "mapPlayer" ] }, "grid": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "none", "square", "hexRowsOdd", "hexRowsEven", "hexColsOdd", "hexColsEven" ] }, "size": { "description": "The size of a single grid square/hex, in pixels.", "type": "integer", "minimum": 50, "markdownDescription": "The size of a single grid square/hex, in pixels." }, "offsetX": { "type": "integer" }, "offsetY": { "type": "integer" }, "scale": { "description": "Map image scaling. Where possible, avoid using this, and use size/offset instead.", "type": "number", "markdownDescription": "Map image scaling. Where possible, avoid using this, and use size/offset instead." }, "units": { "description": "A unit of measurement (e.g. \"feet\", \"miles\") in which the grid should be presented.", "type": "string", "markdownDescription": "A unit of measurement (e.g. "feet", "miles") in which the grid should be presented.", "examples": [ "feet", "yards", "miles", "meters", "kilometers" ] }, "distance": { "description": "The number of units (e.g. feet) per grid square/hex.", "type": "number", "markdownDescription": "The number of units (e.g. feet) per grid square/hex." } }, "additionalProperties": false }, "mapRegions": { "type": "array", "items": { "type": "object", "properties": { "area": { "type": "string" }, "points": { "type": "array", "items": { "type": "array", "items": { "type": "integer" }, "maxItems": 2, "minItems": 2 }, "uniqueItems": true } }, "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "labelMapRegions": { "const": true }, "mapParent": { "description": "Note that the order of transformations is: scale, then offset.", "type": "object", "properties": { "id": { "type": "string" }, "offsetX": { "description": "The X position of this map within the parent map. Defaults to 0.", "type": "integer", "markdownDescription": "The X position of this map within the parent map. Defaults to 0." }, "offsetY": { "description": "The Y position of this map within the parent map. Defaults to 0.", "type": "integer", "markdownDescription": "The Y position of this map within the parent map. Defaults to 0." }, "scaleX": { "description": "X scaling required for this map to match the parent map. Defaults to 1.", "type": "number", "exclusiveMinimum": 0, "markdownDescription": "X scaling required for this map to match the parent map. Defaults to 1." }, "scaleY": { "description": "Y scaling required for this map to match the parent map. Defaults to 1.", "type": "number", "exclusiveMinimum": 0, "markdownDescription": "Y scaling required for this map to match the parent map. Defaults to 1." }, "autoScale": { "description": "If the X/Y scaling for this map should be based on the size ratio between the two. This is often used a placeholder for maps requiring future manual adjustment.", "type": "boolean", "markdownDescription": "If the X/Y scaling for this map should be based on the size ratio between the two. This is often used a placeholder for maps requiring future manual adjustment." } }, "additionalProperties": false, "markdownDescription": "Note that the order of transformations is: scale, then offset." }, "mapName": { "type": "string" }, "width": { "type": "integer" }, "height": { "type": "integer" }, "maxWidth": { "description": "Specify the max desired display width of the images, as opposed to \"width\" which should only be used for the _real_ width. Assumes pixels by default.", "type": "integer", "markdownDescription": "Specify the max desired display width of the images, as opposed to "width" which should only be used for the _real_ width. Assumes pixels by default." }, "maxHeight": { "description": "As per \"maxWidth\"", "type": "integer", "markdownDescription": "As per "maxWidth"" }, "maxWidthUnits": { "type": "string" }, "maxHeightUnits": { "type": "string" }, "style": { "enum": [ "comic-speaker-left", "comic-speaker-right", "deity-symbol" ] }, "expectsLightBackground": { "description": "If this image is largely transparent, and expects to be rendered atop a light background.", "type": "boolean", "const": true, "markdownDescription": "If this image is largely transparent, and expects to be rendered atop a light background." }, "expectsDarkBackground": { "description": "If this image is largely transparent, and expects to be rendered atop a dark background.", "type": "boolean", "const": true, "markdownDescription": "If this image is largely transparent, and expects to be rendered atop a dark background." }, "foundrySceneRoot": { "description": "Additional data to be applied if/when the image is used to create a scene in Foundry.\n\nSome properties are forbidden, as they should be provided/are implicit in non-Foundry-specific data on the entry.", "type": "object", "properties": { "name": false, "width": false, "height": false, "background": false, "grid": false, "flags": false }, "markdownDescription": "Additional data to be applied if/when the image is used to create a scene in Foundry.\n\nSome properties are forbidden, as they should be provided/are implicit in non-Foundry-specific data on the entry." }, "foundrySceneWalls": { "$ref": "https://raw.githubusercontent.com/TheGiddyLimit/plutonium-scenes/main/test/schema/shared.json#/$defs/wallArray" }, "foundrySceneLights": { "$ref": "https://raw.githubusercontent.com/TheGiddyLimit/plutonium-scenes/main/test/schema/shared.json#/$defs/lightArray" }, "foundrySceneFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" } }, "required": [ "type", "href" ], "additionalProperties": false }, "entryGallery": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "gallery" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "images": { "type": "array", "items": { "$ref": "#/$defs/entryImage" } } }, "required": [ "type", "images" ], "additionalProperties": false }, "entryActions": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "actions" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "name", "entries" ], "additionalProperties": false }, "entryAttack": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "attack" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "attackType": { "type": "string", "description": "- MW: Melee Weapon\n- RW: Ranged Weapon", "enum": [ "MW", "RW" ], "markdownDescription": "- MW: Melee Weapon\n- RW: Ranged Weapon" }, "attackEntries": { "type": "array", "items": { "$ref": "#" } }, "hitEntries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type", "attackType", "attackEntries", "hitEntries" ], "additionalProperties": false }, "entryFlowchart": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "flowchart" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "blocks": { "type": "array", "items": { "$ref": "#/$defs/entry" } } }, "required": [ "type", "blocks" ], "additionalProperties": false }, "entryFlowBlock": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "flowBlock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#/$defs/entry" } } }, "required": [ "type" ], "additionalProperties": false }, "entryIngredient": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "ingredient" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entry": { "$ref": "#" } }, "required": [ "type", "entry" ], "patternProperties": { "^amount\\d+$": { "type": "number" } }, "additionalProperties": false }, "entryStatblockInline": { "anyOf": [ { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "monster" }, "data": { "$ref": "bestiary/bestiary.json#/$defs/creature" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "legendaryGroup" }, "data": { "$ref": "bestiary/legendarygroups.json#/$defs/legendaryGroup" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "spell" }, "data": { "$ref": "spells/spells.json#/$defs/spell" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "action" }, "data": { "$ref": "actions.json#/$defs/action" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "item" }, "data": { "$ref": "items.json#/$defs/item" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "background" }, "data": { "$ref": "backgrounds.json#/$defs/background" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "charoption" }, "data": { "$ref": "charcreationoptions.json#/$defs/charoption" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "condition" }, "data": { "$ref": "conditionsdiseases.json#/$defs/condition" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "disease" }, "data": { "$ref": "conditionsdiseases.json#/$defs/disease" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "status" }, "data": { "$ref": "conditionsdiseases.json#/$defs/status" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "cult" }, "data": { "$ref": "cultsboons.json#/$defs/cult" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "boon" }, "data": { "$ref": "cultsboons.json#/$defs/boon" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "deity" }, "data": { "$ref": "deities.json#/$defs/deity" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "feat" }, "data": { "$ref": "feats.json#/$defs/feat" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "language" }, "data": { "$ref": "languages.json#/$defs/language" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "object" }, "data": { "$ref": "objects.json#/$defs/object" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "optionalfeature" }, "data": { "$ref": "optionalfeatures.json#/$defs/optionalfeature" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "psionic" }, "data": { "$ref": "psionics.json#/$defs/psionic" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "race" }, "data": { "$ref": "races.json#/$defs/race" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "recipe" }, "data": { "$ref": "recipes.json#/$defs/recipe" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "reward" }, "data": { "$ref": "rewards.json#/$defs/reward" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "table" }, "data": { "$ref": "tables.json#/$defs/tableData" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "trap" }, "data": { "$ref": "trapshazards.json#/$defs/trap" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "hazard" }, "data": { "$ref": "trapshazards.json#/$defs/hazard" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "variantrule" }, "data": { "$ref": "variantrules.json#/$defs/variantrule" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "vehicle" }, "data": { "$ref": "vehicles.json#/$defs/vehicle" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "vehicleUpgrade" }, "data": { "$ref": "vehicles.json#/$defs/vehicleUpgrade" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "skill" }, "data": { "$ref": "skills.json#/$defs/skill" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false }, { "type": "object", "properties": { "type": { "const": "statblockInline" }, "dependencies": { "$ref": "util.json#/$defs/metaDependenciesArray" }, "dataType": { "const": "sense" }, "data": { "$ref": "senses.json#/$defs/sense" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true } }, "required": [ "type", "dataType", "data" ], "additionalProperties": false } ] }, "entryStatblock": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true }, "tag": { "$ref": "util.json#/$defs/tagNameStats" } }, "required": [ "type", "tag", "name" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true }, "tag": { "const": "deity" }, "pantheon": { "type": "string" } }, "required": [ "type", "tag", "name" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true }, "tag": { "const": "card" }, "set": { "type": "string" } }, "required": [ "type", "tag", "name" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true }, "tag": { "$ref": "util.json#/$defs/tagNameStatsAbbreviation" }, "abbreviation": { "type": "string" } }, "required": [ "type", "tag", "abbreviation" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "statblock" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "displayName": { "type": "string" }, "hash": { "type": "string" }, "style": { "$ref": "#/$defs/_entryDataStyle" }, "collapsed": { "const": true }, "prop": { "$ref": "util.json#/$defs/propNameStats" } }, "required": [ "type", "prop", "name", "source" ] } ] }, "entryRefClassFeature": { "description": "For use in classes page content only.", "type": "object", "properties": { "type": { "const": "refClassFeature" }, "classFeature": { "type": "string" }, "data": { "$ref": "#/$defs/_entryDataData" } }, "required": [ "type", "classFeature" ], "additionalProperties": false, "markdownDescription": "For use in classes page content only." }, "entryRefSubclassFeature": { "description": "For use in classes page content only.", "type": "object", "properties": { "type": { "const": "refSubclassFeature" }, "subclassFeature": { "type": "string" }, "data": { "$ref": "#/$defs/_entryDataData" } }, "required": [ "type", "subclassFeature" ], "additionalProperties": false, "markdownDescription": "For use in classes page content only." }, "entryRefOptionalfeature": { "description": "For use in classes page content only.", "type": "object", "properties": { "type": { "const": "refOptionalfeature" }, "optionalfeature": { "type": "string" }, "name": { "type": "string" }, "preserve": { "type": "object", "properties": { "prerequisite": { "const": true }, "consumes": { "const": true } }, "additionalProperties": false }, "data": { "$ref": "#/$defs/_entryDataData" } }, "required": [ "type", "optionalfeature" ], "additionalProperties": false, "markdownDescription": "For use in classes page content only." }, "entryRefFeat": { "description": "For use in classes page content only.", "type": "object", "properties": { "type": { "const": "refFeat" }, "feat": { "type": "string" }, "name": { "type": "string" }, "data": { "$ref": "#/$defs/_entryDataData" } }, "required": [ "type", "feat" ], "additionalProperties": false, "markdownDescription": "For use in classes page content only." }, "entryHr": { "type": "object", "properties": { "type": { "const": "hr" } }, "required": [ "type" ] }, "entrySpellcasting": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "spellcasting" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "headerEntries": { "type": "array", "items": { "$ref": "#" } }, "constant": { "$ref": "#/$defs/_arrayOfSpell" }, "will": { "$ref": "#/$defs/_arrayOfSpell" }, "ritual": { "$ref": "#/$defs/_arrayOfSpell" }, "rest": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "restLong": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "daily": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "weekly": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "monthly": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "yearly": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "charges": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "recharge": { "$ref": "#/$defs/entrySpellcasting_recharge" }, "legendary": { "$ref": "#/$defs/entrySpellcasting_frequency" }, "spells": { "type": "object", "properties": { "0": { "type": "object", "properties": { "spells": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } }, "required": [ "spells" ], "additionalProperties": false }, "1": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "2": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "3": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "4": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "5": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "6": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "7": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "8": { "$ref": "#/$defs/entrySpellcasting_level1to9" }, "9": { "$ref": "#/$defs/entrySpellcasting_level1to9" } }, "additionalProperties": false }, "hidden": { "description": "Allows the above properties to be specified, but not rendered. Useful if e.g. a creature can only cast one spell, and this is rendered in the header line.", "type": "array", "items": { "type": "string", "enum": [ "constant", "will", "rest", "restLong", "daily", "weekly", "monthly", "yearly", "ritual", "spells", "charges", "recharge", "legendary" ] }, "markdownDescription": "Allows the above properties to be specified, but not rendered. Useful if e.g. a creature can only cast one spell, and this is rendered in the header line." }, "footerEntries": { "type": "array", "items": { "$ref": "#" } }, "ability": { "$ref": "util.json#/$defs/abilityScoreAbbreviation" }, "displayAs": { "description": "Implicitly \"trait\"", "type": "string", "enum": [ "trait", "action", "bonus", "reaction", "legendary", "mythic" ], "markdownDescription": "Implicitly "trait"" }, "chargesItem": { "type": "string", "description": "The UID of an item which provides the charges required to cast any \"charges\" spells.", "markdownDescription": "The UID of an item which provides the charges required to cast any "charges" spells." } }, "required": [ "type", "name" ], "additionalProperties": false }, "entrySpellcasting_level1to9": { "type": "object", "properties": { "lower": { "type": "number" }, "slots": { "type": "number" }, "spells": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } }, "required": [ "spells" ], "additionalProperties": false }, "entrySpellcasting_frequency": { "type": "object", "properties": { "1": { "$ref": "#/$defs/_arrayOfSpell" }, "2": { "$ref": "#/$defs/_arrayOfSpell" }, "3": { "$ref": "#/$defs/_arrayOfSpell" }, "4": { "$ref": "#/$defs/_arrayOfSpell" }, "5": { "$ref": "#/$defs/_arrayOfSpell" }, "6": { "$ref": "#/$defs/_arrayOfSpell" }, "7": { "$ref": "#/$defs/_arrayOfSpell" }, "8": { "$ref": "#/$defs/_arrayOfSpell" }, "9": { "$ref": "#/$defs/_arrayOfSpell" }, "9e": { "$ref": "#/$defs/_arrayOfSpell" }, "8e": { "$ref": "#/$defs/_arrayOfSpell" }, "7e": { "$ref": "#/$defs/_arrayOfSpell" }, "6e": { "$ref": "#/$defs/_arrayOfSpell" }, "5e": { "$ref": "#/$defs/_arrayOfSpell" }, "4e": { "$ref": "#/$defs/_arrayOfSpell" }, "3e": { "$ref": "#/$defs/_arrayOfSpell" }, "2e": { "$ref": "#/$defs/_arrayOfSpell" }, "1e": { "$ref": "#/$defs/_arrayOfSpell" } }, "additionalProperties": false }, "entrySpellcasting_recharge": { "type": "object", "properties": { "1": { "$ref": "#/$defs/_arrayOfSpell" }, "2": { "$ref": "#/$defs/_arrayOfSpell" }, "3": { "$ref": "#/$defs/_arrayOfSpell" }, "4": { "$ref": "#/$defs/_arrayOfSpell" }, "5": { "$ref": "#/$defs/_arrayOfSpell" }, "6": { "$ref": "#/$defs/_arrayOfSpell" } }, "additionalProperties": false }, "entryWrapped": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "wrapper" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "wrapped": {} }, "required": [ "type", "wrapped" ], "additionalProperties": false }, "dataDamImmune": { "oneOf": [ { "$ref": "util.json#/$defs/dataDamageType" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "immune": { "type": "array", "items": { "$ref": "#/$defs/dataDamImmune" } }, "note": { "type": "string" } }, "additionalProperties": false, "required": [ "immune" ] } ] }, "dataCondImmune": { "oneOf": [ { "$ref": "util.json#/$defs/dataCondition" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "conditionImmune": { "type": "array", "items": { "$ref": "util.json#/$defs/dataCondition" } }, "note": { "type": "string" } }, "additionalProperties": false, "required": [ "conditionImmune" ] } ] }, "entryHomebrew": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "const": "homebrew" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "$ref": "#/$defs/_entryDataData" }, "id": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#" } }, "movedTo": { "$ref": "#" }, "oldEntries": { "type": "array", "items": { "$ref": "#" } } }, "required": [ "type" ], "additionalProperties": false } }, "anyOf": [ { "$ref": "#/$defs/entrySection" }, { "$ref": "#/$defs/entryEntries" }, { "$ref": "#/$defs/entryHomebrew" }, { "$ref": "#/$defs/entryQuote" }, { "$ref": "#/$defs/entryInlineEntries" }, { "$ref": "#/$defs/entryEntriesInlineEntries" }, { "$ref": "#/$defs/entryOptions" }, { "$ref": "#/$defs/entryTableGroup" }, { "$ref": "#/$defs/entryTable" }, { "$ref": "#/$defs/entryTableRow" }, { "$ref": "#/$defs/entryTableCell" }, { "$ref": "#/$defs/entryList" }, { "$ref": "#/$defs/entryBonus" }, { "$ref": "#/$defs/entryBonusSpeed" }, { "$ref": "#/$defs/entryDice" }, { "$ref": "#/$defs/entryAbilityDc" }, { "$ref": "#/$defs/entryAbilityAttackMod" }, { "$ref": "#/$defs/abilityGeneric" }, { "$ref": "#/$defs/entryLink" }, { "$ref": "#/$defs/entryOptFeature" }, { "$ref": "#/$defs/entryInset" }, { "$ref": "#/$defs/entryInsetReadaloud" }, { "$ref": "#/$defs/entryVariant" }, { "$ref": "#/$defs/entryVariantInner" }, { "$ref": "#/$defs/entryVariantSub" }, { "$ref": "#/$defs/entryItem" }, { "$ref": "#/$defs/entryItemSub" }, { "$ref": "#/$defs/entryItemSpell" }, { "$ref": "#/$defs/entryImage" }, { "$ref": "#/$defs/entryGallery" }, { "$ref": "#/$defs/entryActions" }, { "$ref": "#/$defs/entryAttack" }, { "$ref": "#/$defs/entryStatblockInline" }, { "$ref": "#/$defs/entryStatblock" }, { "$ref": "#/$defs/entryRefClassFeature" }, { "$ref": "#/$defs/entryRefSubclassFeature" }, { "$ref": "#/$defs/entryRefOptionalfeature" }, { "$ref": "#/$defs/entryRefFeat" }, { "$ref": "#/$defs/entryHr" }, { "$ref": "#/$defs/entrySpellcasting" }, { "$ref": "#/$defs/entryFlowchart" }, { "$ref": "#/$defs/entryFlowBlock" }, { "$ref": "#/$defs/entryIngredient" }, { "$ref": "#/$defs/entryWrapped" }, { "type": "string" }, { "type": "integer" } ], "markdownDescription": "A recursively renderable object." } ``` ## schema\brew\feats.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "feats.json", "version": "1.7.13", "type": "object", "$defs": { "featData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "source": { "$ref": "util.json#/$defs/source" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "repeatable": { "type": "boolean" }, "repeatableNote": { "type": "string" }, "repeatableHidden": { "const": true }, "category": { "$ref": "util.json#/$defs/dataFeatCategory" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "savingThrowProficiencies": { "$ref": "util.json#/$defs/savingThrowProficiencies" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "bonusSenses": { "$ref": "util.json#/$defs/sensesArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "util.json#/$defs/traitTagCharacter" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "feat": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "source": { "$ref": "util.json#/$defs/source" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "repeatable": { "type": "boolean" }, "repeatableNote": { "type": "string" }, "repeatableHidden": { "const": true }, "category": { "$ref": "util.json#/$defs/dataFeatCategory" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "savingThrowProficiencies": { "$ref": "util.json#/$defs/savingThrowProficiencies" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "bonusSenses": { "$ref": "util.json#/$defs/sensesArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "util.json#/$defs/traitTagCharacter" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "source", "entries" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "source": { "$ref": "util.json#/$defs/source" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "page": { "$ref": "util.json#/$defs/page" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "repeatable": { "type": "boolean" }, "repeatableNote": { "type": "string" }, "repeatableHidden": { "const": true }, "category": { "$ref": "util.json#/$defs/dataFeatCategory" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "savingThrowProficiencies": { "$ref": "util.json#/$defs/savingThrowProficiencies" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "bonusSenses": { "$ref": "util.json#/$defs/sensesArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "util.json#/$defs/traitTagCharacter" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "feat": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/feat" } } }, "required": [ "feat" ], "additionalProperties": false } ``` ## schema\brew\fluff-backgrounds.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-backgrounds.json", "version": "1.3.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "backgroundFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-bastions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-bastions.json", "version": "1.0.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "facilityFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-charcreationoptions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-charcreationoptions.json", "version": "1.0.2", "type": "object", "properties": { "charoptionFluff": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "type": "array", "minItems": 1, "items": { "$ref": "entry.json#/$defs/entryImage" } }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source" ], "additionalProperties": false } } }, "additionalProperties": false } ``` ## schema\brew\fluff-conditionsdiseases.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-conditionsdiseases.json", "version": "1.3.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "conditionFluff": { "$ref": "util.json#/$defs/genericFluffArray" }, "diseaseFluff": { "$ref": "util.json#/$defs/genericFluffArray" }, "statusFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-feats.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-feats.json", "version": "1.0.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "featFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-items.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-items.json", "version": "1.2.0", "type": "object", "properties": { "itemFluff": { "$ref": "util.json#/$defs/genericFluffArray" }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\fluff-languages.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-languages.json", "version": "1.2.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "languageFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-objects.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-objects.json", "version": "1.0.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "objectFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-optionalfeatures.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-optionalfeatures.json", "version": "1.0.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "optionalfeatureFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-races.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-races.json", "version": "2.2.0", "type": "object", "$defs": { "raceFluffData": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false }, "raceFluff": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "name", "source" ] }, { "type": "object", "$comment": "This is a custom pre-processor tag, which merges together the array of objects into one. This allows proper inheritance, which JSON schema don't really do.", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "raceFluff": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/raceFluff" } }, "raceFluffMeta": { "type": "object", "properties": { "uncommon": { "$ref": "entry.json" }, "monstrous": { "$ref": "entry.json" } } }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\fluff-recipes.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-recipes.json", "version": "1.2.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "recipeFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-rewards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-rewards.json", "version": "1.1.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "rewardFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-trapshazards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-trapshazards.json", "version": "1.0.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "trapFluff": { "$ref": "util.json#/$defs/genericFluffArray" }, "hazardFluff": { "$ref": "util.json#/$defs/genericFluffArray" } }, "additionalProperties": false } ``` ## schema\brew\fluff-vehicles.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-vehicles.json", "version": "1.4.0", "type": "object", "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "vehicleFluff": { "$ref": "util.json#/$defs/genericFluffArray" } } } ``` ## schema\brew\foundry-actions.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-actions.json", "version": "1.0.0", "type": "object", "properties": { "action": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericArray" } }, "required": [ "action" ], "additionalProperties": false } ``` ## schema\brew\foundry-backgrounds.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-backgrounds.json", "version": "1.1.1", "type": "object", "properties": { "backgroundFeature": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "required": [ "name", "source", "backgroundName", "backgroundSource" ], "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "backgroundName": { "type": "string" }, "backgroundSource": { "$ref": "util.json#/$defs/source" } } } } }, "additionalProperties": false } ``` ## schema\brew\foundry-feats.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-feats.json", "version": "1.0.0", "type": "object", "properties": { "feat": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericFeatureArray" } }, "required": [ "feat" ], "additionalProperties": false } ``` ## schema\brew\foundry-items.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-items.json", "version": "1.2.2", "type": "object", "properties": { "magicvariant": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericArray" }, "item": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "type": { "type": "string", "enum": [ "weapon", "tool", "consumable", "equipment", "container", "loot" ] }, "subEntities": { "$ref": "util-foundry.json#/$defs/foundrySubEntitiesObject" } }, "required": [ "name", "source" ] } } }, "required": [ "magicvariant", "item" ], "additionalProperties": false } ``` ## schema\brew\foundry-optionalfeatures.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-optionalfeatures.json", "version": "1.0.0", "type": "object", "properties": { "optionalfeature": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericFeatureArray" } }, "required": [ "optionalfeature" ], "additionalProperties": false } ``` ## schema\brew\foundry-psionics.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-psionics.json", "version": "1.1.1", "type": "object", "properties": { "psionicDisciplineFocus": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericFeatureArray" }, "psionicDisciplineActive": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "required": [ "name", "source", "psionicName", "psionicSource" ], "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "psionicName": { "type": "string" }, "psionicSource": { "$ref": "util.json#/$defs/source" } } } } }, "additionalProperties": false } ``` ## schema\brew\foundry-races.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-races.json", "version": "1.2.0", "type": "object", "$defs": { "raceData": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "entryData": { "$ref": "util-foundry.json#/$defs/entryDataObject" } }, "required": [ "name", "source" ] }, "race": { "anyOf": [ { "$ref": "#/$defs/raceData" }, { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "entryData": { "$ref": "util-foundry.json#/$defs/entryDataObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "required": [ "name", "source", "_copy" ] } ] }, "raceFeatureData": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "description": "The full name of the race, with subrace parts/etc. applied.", "type": "string", "markdownDescription": "The full name of the race, with subrace parts/etc. applied." }, "raceSource": { "description": "The source of the subrace or race.", "$ref": "util.json#/$defs/source", "markdownDescription": "The source of the subrace or race." } }, "required": [ "name", "source" ] }, "raceFeature": { "anyOf": [ { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "description": "The full name of the race, with subrace parts/etc. applied.", "type": "string", "markdownDescription": "The full name of the race, with subrace parts/etc. applied." }, "raceSource": { "description": "The source of the subrace or race.", "$ref": "util.json#/$defs/source", "markdownDescription": "The source of the subrace or race." } }, "required": [ "name", "source", "raceName", "raceSource" ] }, { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "util-foundry.json#/$defs/foundryEffectObject" } }, "flags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "description": "The full name of the race, with subrace parts/etc. applied.", "type": "string", "markdownDescription": "The full name of the race, with subrace parts/etc. applied." }, "raceSource": { "description": "The source of the subrace or race.", "$ref": "util.json#/$defs/source", "markdownDescription": "The source of the subrace or race." }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "required": [ "name", "source", "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "race": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/race" } }, "raceFeature": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/raceFeature" } } }, "required": [ "race", "raceFeature" ], "additionalProperties": false } ``` ## schema\brew\foundry-rewards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-rewards.json", "version": "1.0.1", "type": "object", "properties": { "reward": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericFeatureArray" } }, "required": [ "reward" ], "additionalProperties": false } ``` ## schema\brew\foundry-vehicles.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-vehicles.json", "version": "1.0.1", "type": "object", "properties": { "vehicleUpgrade": { "$ref": "util-foundry.json#/$defs/foundrySideDataGenericFeatureArray" } }, "required": [ "vehicleUpgrade" ], "additionalProperties": false } ``` ## schema\brew\generated\bookref-quick.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "bookref-quick.json", "version": "1.1.1", "type": "object", "properties": { "reference": { "type": "object", "properties": { "bookref-quick": { "type": "object", "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "contents": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "headers": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "name" ] } } }, "additionalProperties": false, "required": [ "name", "id", "contents" ] } }, "required": [ "bookref-quick" ], "additionalProperties": false }, "data": { "type": "object", "properties": { "bookref-quick": { "type": "array", "items": { "$ref": "../entry.json" }, "minItems": 1 } }, "required": [ "bookref-quick" ], "additionalProperties": false } }, "additionalProperties": false } ``` ## schema\brew\generated\gendata-spell-source-lookup.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "gendata-spell-source-lookup.json", "version": "1.0.1", "type": "object", "description": "Keys are lowercase'd source identifiers.", "$defs": { "leafDefinedInSources": { "type": "object", "properties": { "definedInSources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "required": [ "definedInSources" ], "additionalProperties": false, "minProperties": 1 }, "basicEntityMap": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are entity names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "oneOf": [ { "const": true }, { "$ref": "#/$defs/leafDefinedInSources" } ] } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are entity names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." } }, "patternProperties": { "^[-a-z0-9]+$": { "type": "object", "description": "Keys are lowercase'd spell names.", "patternProperties": { "^[-a-zÀ-ž0-9 '()/;]+$": { "type": "object", "properties": { "class": { "$ref": "#/$defs/basicEntityMap" }, "feat": { "$ref": "#/$defs/basicEntityMap" }, "reward": { "$ref": "#/$defs/basicEntityMap" }, "background": { "$ref": "#/$defs/basicEntityMap" }, "charoption": { "$ref": "#/$defs/basicEntityMap" }, "subclass": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are class names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are subclass names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "type": "object", "properties": { "name": { "type": "string" }, "subSubclasses": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "required": [ "name" ], "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are subclass names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are class names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." }, "classVariant": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are class names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "$ref": "#/$defs/leafDefinedInSources" } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are class names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." }, "optionalfeature": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are optional feature names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "type": "object", "properties": { "featureType": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true } }, "required": [ "featureType" ], "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are optional feature names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." }, "race": { "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-A-Za-z0-9]+$": { "type": "object", "description": "Keys are race names.", "patternProperties": { "^[-A-Za-z0-9 '()/;]+$": { "oneOf": [ { "const": true }, { "type": "object", "properties": { "baseName": { "type": "string" }, "baseSource": { "$ref": "../util.json#/$defs/source" } }, "required": [ "baseName", "baseSource" ], "additionalProperties": false, "minProperties": 1 } ] } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are race names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." } }, "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are lowercase'd spell names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are lowercase'd source identifiers." } ``` ## schema\brew\homebrew.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.11.3", "type": "object", "description": "Homebrew for 5etools. Should include arrays titled similarly to the main site data, e.g. `spell` or `class`", "$defs": { "wrappedAdventureBookDataArray": { "type": "array", "items": { "type": "object", "properties": { "id": { "$ref": "util.json#/$defs/corpusId" }, "source": { "$ref": "util.json#/$defs/source" }, "data": { "$ref": "util.json#/$defs/adventureBookData" } }, "required": [ "id", "source", "data" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "_meta": { "description": "Metadata for the included data arrays", "type": "object", "properties": { "sources": { "type": "array", "items": { "type": "object", "description": "A set of properties describing a \"source.\" A source could be, for example, a homebrew PDF, book, or blog post.", "properties": { "json": { "$ref": "util.json#/$defs/sourceJson" }, "abbreviation": { "type": "string", "description": "Abbreviated form of the source, to display on the site.", "markdownDescription": "Abbreviated form of the source, to display on the site." }, "color": { "type": "string", "description": "HTML hex color code this source should use when displayed in lists, e.g. 'ff00ff'", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "HTML hex color code this source should use when displayed in lists, e.g. 'ff00ff'" }, "colorNight": { "type": "string", "description": "As \"color\", but for night mode themes", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "As "color", but for night mode themes" }, "full": { "type": "string", "description": "Full title of the source, to display on the site.", "markdownDescription": "Full title of the source, to display on the site." }, "authors": { "type": "array", "description": "A list of authors who created the homebrew source.", "items": { "type": "string", "description": "Author name.", "markdownDescription": "Author name." }, "markdownDescription": "A list of authors who created the homebrew source." }, "convertedBy": { "type": "array", "description": "An optional list of people who contributed to converting the source to 5etools format.", "items": { "type": "string", "description": "Contributor name.", "markdownDescription": "Contributor name." }, "markdownDescription": "An optional list of people who contributed to converting the source to 5etools format." }, "dateReleased": { "type": "string", "format": "date", "description": "The date of release of the source, in the format YYYY-MM-DD (RFC3339).", "markdownDescription": "The date of release of the source, in the format YYYY-MM-DD (RFC3339)." }, "version": { "type": "string", "description": "The source version, e.g. \"1.2.3\".", "markdownDescription": "The source version, e.g. "1.2.3"." }, "url": { "type": "string", "description": "A direct link to the source, if available in web form or on a store.", "minLength": 3, "markdownDescription": "A direct link to the source, if available in web form or on a store." }, "partnered": { "description": "If this is a \"partnered\" source; usually one which is shown under the \"Partnered\" section of \"https://www.dndbeyond.com/sources\".", "type": "boolean", "markdownDescription": "If this is a "partnered" source; usually one which is shown under the "Partnered" section of "https://www.dndbeyond.com/sources"." }, "targetSchema": { "deprecated": true, "type": "string", "description": "The target schema version in 5etools, e.g. \"1.2.3\".", "markdownDescription": "The target schema version in 5etools, e.g. "1.2.3"." } }, "required": [ "json", "abbreviation", "full", "version" ], "additionalProperties": false, "markdownDescription": "A set of properties describing a "source." A source could be, for example, a homebrew PDF, book, or blog post." }, "minItems": 1, "uniqueItems": true }, "spellSchools": { "type": "object", "description": "Object names are spell school abbreviations (e.g. `\"X\"`); values should be objects with `\"full\"`` (used in the main entry, e.g. \"Evocation\") and `\"short\"` (used in the list view, e.g. `\"Evoc.\"`) key/values.", "patternProperties": { ".*": { "type": "object", "properties": { "full": { "type": "string" }, "short": { "type": "string" }, "color": { "type": "string", "description": "HTML hex color code this school should use when displayed in lists, e.g. 'ff00ff'", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "HTML hex color code this school should use when displayed in lists, e.g. 'ff00ff'" } }, "required": [ "full", "short" ] } }, "markdownDescription": "Object names are spell school abbreviations (e.g. "X"); values should be objects with "full" (used in the main entry, e.g. "Evocation") and "short" (used in the list view, e.g. "Evoc.") key/values." }, "spellDistanceUnits": { "type": "object", "description": "Object names are spell distance units (e.g. `\"hectares\"`); values should be objects with optional `\"singular\"`` (singular form of the unit, e.g. \"foot\" for the singular of \"feet\"--if unspecified, a trailing \"s\" is removed from the plural version, if it exists, and the result is used as the singular form) and `\"feetPerUnit\"` (e.g. for a \"yards\" custom unit, this would be `3`, as there are three feet in a yard) key/values.", "patternProperties": { ".*": { "type": "object", "properties": { "feetPerUnit": { "type": "number" }, "singular": { "type": "string" } }, "required": [ "feetPerUnit" ] } }, "markdownDescription": "Object names are spell distance units (e.g. "hectares"); values should be objects with optional "singular" (singular form of the unit, e.g. "foot" for the singular of "feet"--if unspecified, a trailing "s" is removed from the plural version, if it exists, and the result is used as the singular form) and "feetPerUnit" (e.g. for a "yards" custom unit, this would be 3, as there are three feet in a yard) key/values." }, "optionalFeatureTypes": { "type": "object", "description": "Object names are optional feature \"type\" shorthands (e.g. \"EI\" for \"Eldritch Invocation\" which will be displayed in the list view as a sortable column", "patternProperties": { ".*": { "type": "string" } }, "markdownDescription": "Object names are optional feature "type" shorthands (e.g. "EI" for "Eldritch Invocation" which will be displayed in the list view as a sortable column" }, "featCategories": { "type": "object", "description": "Object names are feat \"category\" shorthands (e.g. \"O\" for \"Origin\" which will be displayed in the list view as a sortable column", "patternProperties": { ".*": { "type": "string" } }, "markdownDescription": "Object names are feat "category" shorthands (e.g. "O" for "Origin" which will be displayed in the list view as a sortable column" }, "psionicTypes": { "type": "object", "description": "Object names are psionic type abbreviations (e.g. `\"X\"`); values should be objects with `\"full\"`` (used in the main entry, e.g. \"Greater Discipline\") and `\"short\"` (used in the list view, e.g. `\"G. Discipline\"`) key/values.", "patternProperties": { ".*": { "type": "object", "properties": { "full": { "type": "string" }, "short": { "type": "string" }, "color": { "type": "string", "description": "HTML hex color code this type should use when displayed in lists, e.g. 'ff00ff'", "pattern": "^([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "markdownDescription": "HTML hex color code this type should use when displayed in lists, e.g. 'ff00ff'" }, "hasOrder": { "description": "If this type has a psionic order.", "type": "boolean", "markdownDescription": "If this type has a psionic order." }, "isAltDisplay": { "description": "If this type should display its psionic type/order with the format \"Greater Discipline (Awakened)\" instead of the standard \"Awakened Greater Discipline\"", "type": "boolean", "markdownDescription": "If this type should display its psionic type/order with the format "Greater Discipline (Awakened)" instead of the standard "Awakened Greater Discipline"" } }, "required": [ "full", "short" ] } }, "markdownDescription": "Object names are psionic type abbreviations (e.g. "X"); values should be objects with "full" (used in the main entry, e.g. "Greater Discipline") and "short" (used in the list view, e.g. "G. Discipline") key/values." }, "currencyConversions": { "type": "object", "description": "Keys should be uniquely-named value conversion objects, and can be referenced from item entities as \"currencyConversion\": \"\". The currency conversion info will then be used when rendering the value of the item.", "patternProperties": { ".*": { "type": "array", "items": { "type": "object", "properties": { "coin": { "type": "string", "description": "Coin abbreviation, e.g. \"gp\"", "markdownDescription": "Coin abbreviation, e.g. "gp"" }, "mult": { "type": "number", "description": "A multiplier for converting copper to this currency, e.g. \"0.01\" for standard gold pieces", "markdownDescription": "A multiplier for converting copper to this currency, e.g. "0.01" for standard gold pieces" }, "isFallback": { "type": "boolean", "description": "If true, this currency will be used as a fallback when the copper value of the item is a fractional value (e.g. a single ball bearing is worth 0.1 cp; marking gold as the fallback currency would have this be converted to gold).", "markdownDescription": "If true, this currency will be used as a fallback when the copper value of the item is a fractional value (e.g. a single ball bearing is worth 0.1 cp; marking gold as the fallback currency would have this be converted to gold)." } }, "required": [ "coin", "mult" ] }, "minItems": 1, "uniqueItems": true } }, "markdownDescription": "Keys should be uniquely-named value conversion objects, and can be referenced from item entities as "currencyConversion": "<MyKey>". The currency conversion info will then be used when rendering the value of the item." }, "dateAdded": { "type": "integer", "description": "The epoch timestamp (in seconds) when the homebrew was added to the repository. Not guaranteed to be anywhere near accurate.", "markdownDescription": "The epoch timestamp (in seconds) when the homebrew was added to the repository. Not guaranteed to be anywhere near accurate." }, "dateLastModified": { "type": "integer", "description": "The epoch timestamp (in seconds) when the homebrew was last modified. Not guaranteed to be anywhere near accurate.", "markdownDescription": "The epoch timestamp (in seconds) when the homebrew was last modified. Not guaranteed to be anywhere near accurate." }, "_dateLastModifiedHash": { "type": "string", "description": "A file hash used to automatically update the value of \"dateLastModified\". Should not be manually created/edited.", "minLength": 10, "maxLength": 10, "markdownDescription": "A file hash used to automatically update the value of "dateLastModified". Should not be manually created/edited." }, "dependencies": { "description": "A map of `\"\": [\"\", ..., \"\"]`. Entities from these sources can then be extended/referenced in this file.\n\nNote: when copying classes/subclasses/class features/subclass features, the array should consist of \"\", ..., \"\" items, where \"classIdentifierN\" matches the keys in \"5etools/data/class/index.json\" (when copying class/etc. homebrew, normal \"source\"-based linking applies).", "type": "object", "patternProperties": { "^[a-zA-Z]+$": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "markdownDescription": "A map of "<data property>": ["<JsonSource1>", ..., "<JsonSourceN>"]. Entities from these sources can then be extended/referenced in this file.\n\nNote: when copying classes/subclasses/class features/subclass features, the array should consist of "<classIdentifier1>", ..., "<classIdentifierN>" items, where "classIdentifierN" matches the keys in "5etools/data/class/index.json" (when copying class/etc. homebrew, normal "source"-based linking applies)." }, "includes": { "description": "Structure as per \"dependencies\". Additional sources to be included when loading the file.", "type": "object", "patternProperties": { "^[a-zA-Z]+$": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "markdownDescription": "Structure as per "dependencies". Additional sources to be included when loading the file." }, "internalCopies": { "description": "An array of keys that are copied from within the current document. e.g. \"item\", \"monsterFluff\", \"background\" etc.", "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, "markdownDescription": "An array of keys that are copied from within the current document. e.g. "item", "monsterFluff", "background" etc." }, "fonts": { "description": "A map of \"font family\" to font URL.", "type": "object", "patternProperties": { "^[a-zA-Z0-9]+$": { "type": "string", "minLength": 3 } }, "markdownDescription": "A map of "font family" to font URL." }, "unlisted": { "description": "If this homebrew file should be ignored/hidden by any indexer.", "const": true, "markdownDescription": "If this homebrew file should be ignored/hidden by any indexer." }, "status": { "description": "An overall status for the homebrew.\n- \"ready\" indicates that this brew is ready for use, and is in an internally consistent state.\n- \"wip\" indicates that this brew is e.g. incomplete, or partially migrated between versions of the source document(s).\n- \"invalid\" indicates that using this brew is inadvisable, because while it is schema-passing, it breaks clients which attempt to use it.\n- \"deprecated\" indicates this brew is ready for use, but that using it is inadvisable, because e.g. it has been superseded by another brew.", "type": "string", "enum": [ "ready", "wip", "invalid", "deprecated" ], "markdownDescription": "An overall status for the homebrew.\n- "ready" indicates that this brew is ready for use, and is in an internally consistent state.\n- "wip" indicates that this brew is e.g. incomplete, or partially migrated between versions of the source document(s).\n- "invalid" indicates that using this brew is inadvisable, because while it is schema-passing, it breaks clients which attempt to use it.\n- "deprecated" indicates this brew is ready for use, but that using it is inadvisable, because e.g. it has been superseded by another brew." }, "edition": { "description": "The rules edition this homebrew is compatible with. If ambiguous, \"classic\" should be specified.", "$ref": "util-edition.json#/$defs/edition", "markdownDescription": "The rules edition this homebrew is compatible with. If ambiguous, "classic" should be specified." } }, "required": [ "sources", "dateAdded", "dateLastModified", "edition" ], "additionalProperties": false, "markdownDescription": "Metadata for the included data arrays" }, "_test": { "description": "Supplementary information used when testing this homebrew.", "type": "object", "properties": { "additionalImageSources": { "description": "Other sources from which this homebrew should be allowed to use images.", "type": "array", "items": { "$ref": "util.json#/$defs/sourceJson" }, "markdownDescription": "Other sources from which this homebrew should be allowed to use images." } }, "minProperties": 1, "markdownDescription": "Supplementary information used when testing this homebrew." }, "spellList": { "type": "array", "items": { "$ref": "#/$defs/_spellListItem" }, "minItems": 1, "uniqueItems": true }, "_spellListItem": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "spellListType": { "type": "string", "enum": [ "groups" ] }, "spells": { "type": "array", "items": { "$ref": "util.json#/$defs/spellListSpellRef" }, "minItems": 1, "uniqueItems": true } }, "required": [ "name", "source", "spellListType", "spells" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "spellListType": { "type": "string", "const": "variantClass" }, "className": { "type": "string" }, "classSource": { "$ref": "util.json#/$defs/source" }, "spells": { "type": "array", "items": { "$ref": "util.json#/$defs/spellListSpellRef" }, "minItems": 1, "uniqueItems": true } }, "required": [ "name", "source", "spellListType", "className", "classSource", "spells" ], "additionalProperties": false } ] } }, "properties": { "_meta": { "$ref": "#/$defs/_meta" }, "_test": { "$ref": "#/$defs/_test" }, "$schema": { "description": "An optional key that allows you specify the schema you want to verify against in compatible IDEs.\n\nIt is advised that you leave this key out when submitting to the repo.", "type": "string", "examples": [ "../_schema-fast/homebrew.json", "../_schema/homebrew.json", "https://raw.githubusercontent.com/TheGiddyLimit/5etools-utils/master/schema/brew-fast/homebrew.json", "https://raw.githubusercontent.com/TheGiddyLimit/5etools-utils/master/schema/brew/homebrew.json" ], "markdownDescription": "An optional key that allows you specify the schema you want to verify against in compatible IDEs.\n\nIt is advised that you leave this key out when submitting to the repo." }, "blocklist": { "description": "An array of objects to blocklist from display on the site.\n\nUse of this in public brew files is strongly discouraged.", "type": "array", "items": { "type": "object", "properties": { "displayName": { "type": "string" }, "hash": { "type": "string", "description": "A unique reference for the removed item. Use the blocklist tool on the site to generate this.", "markdownDescription": "A unique reference for the removed item. Use the blocklist tool on the site to generate this." }, "category": { "type": "string" }, "source": { "anyOf": [ { "$ref": "util.json#/$defs/source" }, { "const": "*" } ] } }, "required": [ "displayName", "hash", "category", "source" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true, "markdownDescription": "An array of objects to blocklist from display on the site.\n\nUse of this in public brew files is strongly discouraged." }, "adventure": { "$ref": "adventures.json#/properties/adventure" }, "adventureData": { "$ref": "#/$defs/wrappedAdventureBookDataArray" }, "monster": { "$ref": "bestiary/bestiary.json#/properties/monster" }, "monsterFluff": { "$ref": "bestiary/fluff-bestiary.json#/properties/monsterFluff" }, "foundryMonster": { "$ref": "bestiary/foundry.json#/properties/monster" }, "legendaryGroup": { "$ref": "bestiary/legendarygroups.json#/properties/legendaryGroup" }, "book": { "$ref": "books.json#/properties/book" }, "bookData": { "$ref": "#/$defs/wrappedAdventureBookDataArray" }, "class": { "$ref": "class/class.json#/properties/class" }, "classFluff": { "$ref": "class/fluff-class.json#/properties/classFluff" }, "foundryClass": { "$ref": "class/foundry.json#/properties/class" }, "subclass": { "$ref": "class/class.json#/properties/subclass" }, "subclassFluff": { "$ref": "class/fluff-class.json#/properties/subclassFluff" }, "foundrySubclass": { "$ref": "class/foundry.json#/properties/subclass" }, "classFeature": { "$ref": "class/class.json#/properties/classFeature" }, "subclassFeature": { "$ref": "class/class.json#/properties/subclassFeature" }, "foundryClassFeature": { "$ref": "class/foundry.json#/properties/classFeature" }, "foundrySubclassFeature": { "$ref": "class/foundry.json#/properties/subclassFeature" }, "spell": { "$ref": "spells/spells.json#/properties/spell" }, "spellFluff": { "$ref": "spells/fluff-spells.json#/properties/spellFluff" }, "roll20Spell": { "description": "Based on the Roll20 JSON data, example available here: https://app.roll20.net/compendium/dnd5e/Spells:Fireball.json", "$ref": "spells/roll20.json#/properties/spell", "markdownDescription": "Based on the Roll20 JSON data, example available here: https://app.roll20.net/compendium/dnd5e/Spells:Fireball.json" }, "foundrySpell": { "description": "Based on the Foundry VTT spell data, examples available here: https://gitlab.com/foundrynet/dnd5e/-/tree/master/packs/src/spells", "$ref": "spells/foundry.json#/properties/spell", "markdownDescription": "Based on the Foundry VTT spell data, examples available here: https://gitlab.com/foundrynet/dnd5e/-/tree/master/packs/src/spells" }, "action": { "$ref": "actions.json#/properties/action" }, "foundryAction": { "$ref": "foundry-actions.json#/properties/action" }, "item": { "$ref": "items.json#/properties/item" }, "foundryItem": { "$ref": "foundry-items.json#/properties/item" }, "foundryMagicvariant": { "$ref": "foundry-items.json#/properties/magicvariant" }, "itemGroup": { "$ref": "items.json#/properties/itemGroup" }, "baseitem": { "$ref": "items-base.json#/properties/baseitem" }, "itemProperty": { "$ref": "items-base.json#/properties/itemProperty" }, "itemType": { "$ref": "items-base.json#/properties/itemType" }, "itemEntry": { "$ref": "items-base.json#/properties/itemEntry" }, "itemTypeAdditionalEntries": { "$ref": "items-base.json#/properties/itemTypeAdditionalEntries" }, "itemMastery": { "$ref": "items-base.json#/properties/itemMastery" }, "magicvariant": { "$ref": "magicvariants.json#/properties/magicvariant" }, "linkedLootTables": { "$ref": "magicvariants.json#/properties/linkedLootTables" }, "itemFluff": { "$ref": "fluff-items.json#/properties/itemFluff" }, "background": { "$ref": "backgrounds.json#/properties/background" }, "backgroundFluff": { "$ref": "fluff-backgrounds.json#/properties/backgroundFluff" }, "foundryBackgroundFeature": { "$ref": "foundry-backgrounds.json#/properties/backgroundFeature" }, "charoption": { "$ref": "charcreationoptions.json#/properties/charoption" }, "charoptionFluff": { "$ref": "fluff-charcreationoptions.json#/properties/charoptionFluff" }, "condition": { "$ref": "conditionsdiseases.json#/properties/condition" }, "conditionFluff": { "$ref": "fluff-conditionsdiseases.json#/properties/conditionFluff" }, "disease": { "$ref": "conditionsdiseases.json#/properties/disease" }, "diseaseFluff": { "$ref": "fluff-conditionsdiseases.json#/properties/diseaseFluff" }, "status": { "$ref": "conditionsdiseases.json#/properties/status" }, "statusFluff": { "$ref": "fluff-conditionsdiseases.json#/properties/statusFluff" }, "cult": { "$ref": "cultsboons.json#/properties/cult" }, "boon": { "$ref": "cultsboons.json#/properties/boon" }, "deity": { "$ref": "deities.json#/properties/deity" }, "encounter": { "$ref": "encounters.json#/properties/encounter" }, "feat": { "$ref": "feats.json#/properties/feat" }, "featFluff": { "$ref": "fluff-feats.json#/properties/featFluff" }, "foundryFeat": { "$ref": "foundry-feats.json#/properties/feat" }, "language": { "$ref": "languages.json#/properties/language" }, "languageFluff": { "$ref": "fluff-languages.json#/properties/languageFluff" }, "makebrewCreatureTrait": { "$ref": "makebrew-creature.json#/properties/makebrewCreatureTrait" }, "makebrewCreatureAction": { "$ref": "makebrew-creature.json#/properties/makebrewCreatureAction" }, "reducedItemProperty": { "$ref": "makecards.json#/properties/reducedItemProperty" }, "reducedItemType": { "$ref": "makecards.json#/properties/reducedItemType" }, "monsterfeatures": { "$ref": "monsterfeatures.json#/properties/monsterfeatures" }, "name": { "$ref": "names.json#/properties/name" }, "object": { "$ref": "objects.json#/properties/object" }, "objectFluff": { "$ref": "fluff-objects.json#/properties/objectFluff" }, "optionalfeature": { "$ref": "optionalfeatures.json#/properties/optionalfeature" }, "optionalfeatureFluff": { "$ref": "fluff-optionalfeatures.json#/properties/optionalfeatureFluff" }, "foundryOptionalfeature": { "$ref": "foundry-optionalfeatures.json#/properties/optionalfeature" }, "psionic": { "$ref": "psionics.json#/properties/psionic" }, "foundryPsionicDisciplineFocus": { "$ref": "foundry-psionics.json#/properties/psionicDisciplineFocus" }, "foundryPsionicDisciplineActive": { "$ref": "foundry-psionics.json#/properties/psionicDisciplineActive" }, "race": { "$ref": "races.json#/properties/race" }, "subrace": { "$ref": "races.json#/properties/subrace" }, "foundryRace": { "$ref": "foundry-races.json#/properties/race" }, "foundryRaceFeature": { "$ref": "foundry-races.json#/properties/raceFeature" }, "raceFluff": { "$ref": "fluff-races.json#/properties/raceFluff" }, "raceFluffMeta": { "$ref": "fluff-races.json#/properties/raceFluffMeta" }, "recipe": { "$ref": "recipes.json#/properties/recipe" }, "recipeFluff": { "$ref": "fluff-recipes.json#/properties/recipeFluff" }, "reward": { "$ref": "rewards.json#/properties/reward" }, "rewardFluff": { "$ref": "fluff-rewards.json#/properties/rewardFluff" }, "foundryReward": { "$ref": "foundry-rewards.json#/properties/reward" }, "table": { "$ref": "tables.json#/properties/table" }, "trap": { "$ref": "trapshazards.json#/properties/trap" }, "trapFluff": { "$ref": "fluff-trapshazards.json#/properties/trapFluff" }, "hazard": { "$ref": "trapshazards.json#/properties/hazard" }, "hazardFluff": { "$ref": "fluff-trapshazards.json#/properties/hazardFluff" }, "variantrule": { "$ref": "variantrules.json#/properties/variantrule" }, "vehicle": { "$ref": "vehicles.json#/properties/vehicle" }, "vehicleUpgrade": { "$ref": "vehicles.json#/properties/vehicleUpgrade" }, "foundryVehicleUpgrade": { "$ref": "foundry-vehicles.json#/properties/vehicleUpgrade" }, "vehicleFluff": { "$ref": "fluff-vehicles.json#/properties/vehicleFluff" }, "skill": { "$ref": "skills.json#/properties/skill" }, "sense": { "$ref": "senses.json#/properties/sense" }, "spellList": { "$ref": "#/$defs/spellList" }, "deck": { "$ref": "decks.json#/properties/deck" }, "card": { "$ref": "decks.json#/properties/card" }, "citation": { "$ref": "citations.json#/properties/citation" }, "facility": { "$ref": "bastions.json#/properties/facility" }, "facilityFluff": { "$ref": "fluff-bastions.json#/properties/facilityFluff" } }, "additionalProperties": false, "required": [ "_meta" ], "markdownDescription": "Homebrew for 5etools. Should include arrays titled similarly to the main site data, e.g. spell or class" } ``` ## schema\brew\items-base.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "items-base.json", "version": "1.6.16", "type": "object", "$defs": { "itemLookupBase": { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" } }, "additionalProperties": false }, "itemPropertyLookup": { "anyOf": [ { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "template": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "abbreviation", "source" ] }, { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "template": { "type": "string" }, "entriesTemplate": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "abbreviation", "source" ] } ] }, "baseitemData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": "integer" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": "string" }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "armor": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "axe": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "sword": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "mace": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "spear": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "hammer": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "crossbow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "club": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "dagger": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "net": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "polearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "lance": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "rapier": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "whip": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "halberd": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "glaive": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "arrow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bolt": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletFirearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletSling": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "cellEnergy": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "needleBlowgun": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "weapon": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "value": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "quantity": { "type": "integer" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "baseitem": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": "integer" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": "string" }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "armor": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "axe": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "sword": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "mace": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "spear": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "hammer": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "crossbow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "club": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "dagger": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "net": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "polearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "lance": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "rapier": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "whip": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "halberd": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "glaive": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "arrow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bolt": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletFirearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletSling": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "cellEnergy": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "needleBlowgun": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "weapon": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "value": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "quantity": { "type": "integer" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false, "required": [ "name", "type", "rarity", "source" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": "integer" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": "string" }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "armor": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "axe": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "sword": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "mace": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "spear": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "hammer": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "crossbow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "club": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "dagger": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "net": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "polearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "lance": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "rapier": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "whip": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "halberd": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "glaive": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "arrow": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bolt": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletFirearm": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "bulletSling": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "cellEnergy": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "needleBlowgun": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "weapon": { "description": "Flag used when merging generic variants", "type": "boolean", "markdownDescription": "Flag used when merging generic variants" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "value": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "quantity": { "type": "integer" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "copyBlock_copy_itemType": { "type": "object", "properties": { "_mod": { "$ref": "util-copy.json#/$defs/_modObject" }, "_templates": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "_preserve": { "type": "object", "patternProperties": { ".*": { "const": true } } }, "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "abbreviation", "source" ] }, "copyBlockItemType": { "type": "object", "properties": { "_copy": { "$ref": "#/$defs/copyBlock_copy_itemType" } }, "required": [ "_copy" ] }, "itemTypeData_entries": { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false }, "itemTypeData_entriesTemplate": { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entriesTemplate": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false }, "itemTypeData_requirements": { "required": [ "abbreviation", "source" ] }, "itemType": { "anyOf": [ { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "abbreviation", "source" ] }, { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "_copy": { "$ref": "#/$defs/copyBlock_copy_itemType" } }, "additionalProperties": false, "required": [ "_copy" ] }, { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entriesTemplate": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "abbreviation", "source" ] }, { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "name": { "type": "string" }, "entriesTemplate": { "type": "array", "items": { "$ref": "entry.json" } }, "_copy": { "$ref": "#/$defs/copyBlock_copy_itemType" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "baseitem": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/baseitem" } }, "itemProperty": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/itemPropertyLookup" } }, "itemType": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/itemType" } }, "itemEntry": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "entriesTemplate": { "type": "array", "items": { "$ref": "entry.json" } } } } }, "itemTypeAdditionalEntries": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "appliesTo": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false } }, "itemMastery": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false } } }, "additionalProperties": false } ``` ## schema\brew\items-shared.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "items-shared.json", "title": "Shared Item Schema", "description": "Shared item definitions to be used in item schemas.", "version": "1.1.11", "$defs": { "_itemModifySpeedEqual": { "type": "string", "enum": [ "walk", "burrow", "climb", "fly", "swim" ] }, "itemModifySpeed": { "type": "object", "properties": { "multiply": { "type": "object", "properties": { "walk": { "type": "number" }, "burrow": { "type": "number" }, "climb": { "type": "number" }, "fly": { "type": "number" }, "swim": { "type": "number" }, "*": { "type": "number" } }, "additionalProperties": false }, "static": { "type": "object", "properties": { "walk": { "type": "number" }, "burrow": { "type": "number" }, "climb": { "type": "number" }, "fly": { "type": "number" }, "swim": { "type": "number" }, "*": { "type": "number" } }, "additionalProperties": false }, "equal": { "type": "object", "properties": { "walk": { "$ref": "#/$defs/_itemModifySpeedEqual" }, "burrow": { "$ref": "#/$defs/_itemModifySpeedEqual" }, "climb": { "$ref": "#/$defs/_itemModifySpeedEqual" }, "fly": { "$ref": "#/$defs/_itemModifySpeedEqual" }, "swim": { "$ref": "#/$defs/_itemModifySpeedEqual" } }, "additionalProperties": false }, "bonus": { "type": "object", "properties": { "walk": { "type": "number" }, "burrow": { "type": "number" }, "climb": { "type": "number" }, "fly": { "type": "number" }, "swim": { "type": "number" }, "*": { "type": "number" } }, "additionalProperties": false } }, "additionalProperties": false }, "itemRarity": { "anyOf": [ { "$ref": "util.json#/$defs/rarity" }, { "type": "string", "description": "\"none\" is for mundane items. \"unknown (magic)\" is for miscellaneous magical items. \"unknown\" is for miscellaneous mundane items. \"varies\" is for item groups, or for magic variants, where it has the special functionality of maintaining a base item's rarity when creating specific variants.", "enum": [ "none", "unknown", "unknown (magic)", "varies" ], "markdownDescription": ""none" is for mundane items. "unknown (magic)" is for miscellaneous magical items. "unknown" is for miscellaneous mundane items. "varies" is for item groups, or for magic variants, where it has the special functionality of maintaining a base item's rarity when creating specific variants." } ] }, "itemRecharge": { "enum": [ "round", "restShort", "restLong", "dawn", "dusk", "midnight", "week", "month", "year", "decade", "century", "special" ] }, "itemRechargeAmount": { "type": [ "integer", "string" ] }, "itemType": { "type": "string", "description": "- $|DMG: Treasure\n- $A|DMG: Treasure (Art Object)\n- $A|XDMG: Treasure (Art Object)\n- $C: Treasure (Coinage)\n- $C|XPHB: Treasure (Coinage)\n- $G|DMG: Treasure (Gemstone)\n- $G|XDMG: Treasure (Gemstone)\n- A: Ammunition\n- A|XPHB: Ammunition\n- AF|DMG: Ammunition (futuristic)\n- AF|XDMG: Ammunition (futuristic)\n- AIR|DMG: Vehicle (air)\n- AIR|XPHB: Vehicle (air)\n- AT: Artisan Tool\n- AT|XPHB: Artisan Tool\n- EXP|DMG: Explosive\n- EXP|XDMG: Explosive\n- FD: Food and Drink\n- FD|XPHB: Food and Drink\n- G: Adventuring Gear\n- G|XPHB: Adventuring Gear\n- GS: Gaming Set\n- GS|XPHB: Gaming Set\n- GV|DMG: Generic Variant\n- GV|XDMG: Generic Variant\n- HA: Heavy Armor\n- HA|XPHB: Heavy Armor\n- IDG|TDCSR: Illegal Drug\n- INS: Instrument\n- INS|XPHB: Instrument\n- LA: Light Armor\n- LA|XPHB: Light Armor\n- M: Melee Weapon\n- M|XPHB: Melee Weapon\n- MA: Medium Armor\n- MA|XPHB: Medium Armor\n- MNT: Mount\n- MNT|XPHB: Mount\n- OTH: Other\n- P: Potion\n- P|XPHB: Potion\n- R: Ranged Weapon\n- R|XPHB: Ranged Weapon\n- RD|DMG: Rod\n- RD|XDMG: Rod\n- RG|DMG: Ring\n- RG|XDMG: Ring\n- S: Shield\n- S|XPHB: Shield\n- SC|DMG: Scroll\n- SC|XPHB: Scroll\n- SCF: Spellcasting Focus\n- SCF|XPHB: Spellcasting Focus\n- SHP: Vehicle (water)\n- SHP|XPHB: Vehicle (water)\n- SPC|AAG: Vehicle (space)\n- T: Tool\n- T|XPHB: Tool\n- TAH: Tack and Harness\n- TAH|XPHB: Tack and Harness\n- TB|XDMG: Trade Bar\n- TG: Trade Good\n- TG|XPHB: Trade Good\n- VEH: Vehicle (land)\n- VEH|XPHB: Vehicle (land)\n- WD|DMG: Wand\n- WD|XDMG: Wand", "markdownDescription": "- $|DMG: Treasure\n- $A|DMG: Treasure (Art Object)\n- $A|XDMG: Treasure (Art Object)\n- $C: Treasure (Coinage)\n- $C|XPHB: Treasure (Coinage)\n- $G|DMG: Treasure (Gemstone)\n- $G|XDMG: Treasure (Gemstone)\n- A: Ammunition\n- A|XPHB: Ammunition\n- AF|DMG: Ammunition (futuristic)\n- AF|XDMG: Ammunition (futuristic)\n- AIR|DMG: Vehicle (air)\n- AIR|XPHB: Vehicle (air)\n- AT: Artisan Tool\n- AT|XPHB: Artisan Tool\n- EXP|DMG: Explosive\n- EXP|XDMG: Explosive\n- FD: Food and Drink\n- FD|XPHB: Food and Drink\n- G: Adventuring Gear\n- G|XPHB: Adventuring Gear\n- GS: Gaming Set\n- GS|XPHB: Gaming Set\n- GV|DMG: Generic Variant\n- GV|XDMG: Generic Variant\n- HA: Heavy Armor\n- HA|XPHB: Heavy Armor\n- IDG|TDCSR: Illegal Drug\n- INS: Instrument\n- INS|XPHB: Instrument\n- LA: Light Armor\n- LA|XPHB: Light Armor\n- M: Melee Weapon\n- M|XPHB: Melee Weapon\n- MA: Medium Armor\n- MA|XPHB: Medium Armor\n- MNT: Mount\n- MNT|XPHB: Mount\n- OTH: Other\n- P: Potion\n- P|XPHB: Potion\n- R: Ranged Weapon\n- R|XPHB: Ranged Weapon\n- RD|DMG: Rod\n- RD|XDMG: Rod\n- RG|DMG: Ring\n- RG|XDMG: Ring\n- S: Shield\n- S|XPHB: Shield\n- SC|DMG: Scroll\n- SC|XPHB: Scroll\n- SCF: Spellcasting Focus\n- SCF|XPHB: Spellcasting Focus\n- SHP: Vehicle (water)\n- SHP|XPHB: Vehicle (water)\n- SPC|AAG: Vehicle (space)\n- T: Tool\n- T|XPHB: Tool\n- TAH: Tack and Harness\n- TAH|XPHB: Tack and Harness\n- TB|XDMG: Trade Bar\n- TG: Trade Good\n- TG|XPHB: Trade Good\n- VEH: Vehicle (land)\n- VEH|XPHB: Vehicle (land)\n- WD|DMG: Wand\n- WD|XDMG: Wand", "examples": [ "$|DMG", "$A|DMG", "$A|XDMG", "$C", "$C|XPHB", "$G|DMG", "$G|XDMG", "A", "A|XPHB", "AF|DMG", "AF|XDMG", "AIR|DMG", "AIR|XPHB", "AT", "AT|XPHB", "EXP|DMG", "EXP|XDMG", "FD", "FD|XPHB", "G", "G|XPHB", "GS", "GS|XPHB", "GV|DMG", "GV|XDMG", "HA", "HA|XPHB", "IDG|TDCSR", "INS", "INS|XPHB", "LA", "LA|XPHB", "M", "M|XPHB", "MA", "MA|XPHB", "MNT", "MNT|XPHB", "OTH", "P", "P|XPHB", "R", "R|XPHB", "RD|DMG", "RD|XDMG", "RG|DMG", "RG|XDMG", "S", "S|XPHB", "SC|DMG", "SC|XPHB", "SCF", "SCF|XPHB", "SHP", "SHP|XPHB", "SPC|AAG", "T", "T|XPHB", "TAH", "TAH|XPHB", "TB|XDMG", "TG", "TG|XDMG", "VEH", "VEH|XPHB", "WD|DMG", "WD|XDMG" ] }, "itemAge": { "type": "string", "examples": [ "futuristic", "modern", "renaissance" ] }, "itemProperty": { "description": "- 2H: Two-Handed\n- 2H|XPHB: Two-Handed\n- A: Ammunition\n- A|XPHB: Ammunition\n- AF|DMG: Ammunition (futuristic)\n- AF|XDMG: Ammunition (futuristic)\n- BF|DMG: Burst Fire\n- BF|XDMG: Burst Fire\n- ER|TDCSR: Extended Reach\n- F: Finesse\n- F|XPHB: Finesse\n- H: Heavy\n- H|XPHB: Heavy\n- L: Light\n- L|XPHB: Light\n- LD: Loading\n- LD|XPHB: Loading\n- OTH: Other\n- R: Reach\n- R|XPHB: Reach\n- RLD: Reload\n- RLD|XDMG: Reload\n- S: Special\n- T: Thrown\n- T|XPHB: Thrown\n- V: Versatile\n- V|XPHB: Versatile\n- Vst|TDCSR: Vestige of Divergence", "type": "string", "markdownDescription": "- 2H: Two-Handed\n- 2H|XPHB: Two-Handed\n- A: Ammunition\n- A|XPHB: Ammunition\n- AF|DMG: Ammunition (futuristic)\n- AF|XDMG: Ammunition (futuristic)\n- BF|DMG: Burst Fire\n- BF|XDMG: Burst Fire\n- ER|TDCSR: Extended Reach\n- F: Finesse\n- F|XPHB: Finesse\n- H: Heavy\n- H|XPHB: Heavy\n- L: Light\n- L|XPHB: Light\n- LD: Loading\n- LD|XPHB: Loading\n- OTH: Other\n- R: Reach\n- R|XPHB: Reach\n- RLD: Reload\n- RLD|XDMG: Reload\n- S: Special\n- T: Thrown\n- T|XPHB: Thrown\n- V: Versatile\n- V|XPHB: Versatile\n- Vst|TDCSR: Vestige of Divergence", "examples": [ "2H", "2H|XPHB", "A", "A|XPHB", "AF|DMG", "AF|XDMG", "BF|DMG", "BF|XDMG", "ER|TDCSR", "F", "F|XPHB", "H", "H|XPHB", "L", "L|XPHB", "LD", "LD|XPHB", "OTH", "R", "R|XPHB", "RLD", "RLD|XDMG", "S", "T", "T|XPHB", "V", "V|XPHB", "Vst|TDCSR" ] }, "itemPropertyArray": { "type": "array", "items": { "$ref": "#/$defs/itemProperty" }, "minItems": 1, "uniqueItems": true }, "itemPropertyOrWrapperArray": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/itemProperty" }, { "type": "object", "properties": { "uid": { "$ref": "#/$defs/itemProperty" }, "note": { "type": "string" } }, "required": [ "uid" ], "minProperties": 2, "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true }, "itemScfType": { "type": "string", "examples": [ "arcane", "druid", "holy" ] }, "itemTier": { "type": "string", "description": "Item Tier as per XGE p135", "markdownDescription": "Item Tier as per XGE p135", "examples": [ "minor", "major" ] }, "itemWeaponCategory": { "type": "string", "examples": [ "simple", "martial" ] }, "itemAmmoType": { "type": "string", "examples": [ "energy cell", "energy cell|xdmg", "modern bullet", "blowgun needle|phb", "crossbow bolt|phb", "arrow|phb", "renaissance bullet", "sling bullet|phb", "needle|xphb", "bolt|xphb", "arrow|xphb", "firearm bullet|xphb", "sling bullet|xphb" ] }, "itemMastery": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "uid": { "type": "string" }, "note": { "type": "string" } }, "additionalProperties": false, "required": [ "uid", "note" ] } ] }, "minItems": 1, "uniqueItems": true }, "itemCarryingCapacity": { "type": "integer", "description": "Of a mount/beast, not a container.", "markdownDescription": "Of a mount/beast, not a container." }, "itemSpeed": { "type": "integer" }, "itemReach": { "type": "integer" }, "itemDexterityMax": { "description": "Maximum dexterity modifier for medium armor.", "type": [ "integer", "null" ], "markdownDescription": "Maximum dexterity modifier for medium armor." }, "packContents": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "special": { "type": "string" }, "quantity": { "type": "integer" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "item": { "type": "string" }, "quantity": { "type": "integer" }, "displayName": { "type": "string" } }, "additionalProperties": false, "required": [ "item" ], "minProperties": 2 } ] } }, "itemMiscTags": { "type": "array", "items": { "description": "- CF/W: Creates Food/Water\n- CNS: Consumable\n- TT: Trinket Table", "enum": [ "CF/W", "CNS", "TT" ], "markdownDescription": "- CF/W: Creates Food/Water\n- CNS: Consumable\n- TT: Trinket Table" } }, "itemAbility": { "description": "Item ability score adjustments.", "type": "object", "properties": { "choose": { "type": "array", "items": { "type": "object", "properties": { "from": { "type": "array", "items": { "enum": [ "str", "dex", "con", "int", "wis", "cha" ] }, "uniqueItems": true }, "count": { "type": "integer" }, "amount": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "static": { "type": "object", "properties": { "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" } }, "additionalProperties": false }, "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" } }, "markdownDescription": "Item ability score adjustments." }, "itemLight": { "type": "array", "items": { "type": "object", "properties": { "dim": { "type": "number" }, "bright": { "type": "number" }, "shape": { "type": "string", "enum": [ "radius", "cone" ] } }, "minProperties": 1, "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "_itemAttachedSpells_arrayOfSpell": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "minItems": 1 }, "_itemAttachedSpells_frequency": { "type": "object", "patternProperties": { "^\\d+e$": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" }, "^\\d+$": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" } }, "additionalProperties": false, "minProperties": 1 }, "_itemAttachedSpells_charges": { "type": "object", "patternProperties": { "^\\d+$": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" } }, "additionalProperties": false, "minProperties": 1 }, "itemAttachedSpells": { "oneOf": [ { "description": "A generic array of attached spells, implicitly \"other\" usage type (see below).", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" }, "markdownDescription": "A generic array of attached spells, implicitly "other" usage type (see below)." }, { "description": "Attached spells broken down by usage type.", "type": "object", "properties": { "rest": { "$ref": "#/$defs/_itemAttachedSpells_frequency" }, "daily": { "$ref": "#/$defs/_itemAttachedSpells_frequency" }, "limited": { "$ref": "#/$defs/_itemAttachedSpells_frequency" }, "charges": { "$ref": "#/$defs/_itemAttachedSpells_charges" }, "resource": { "$ref": "#/$defs/_itemAttachedSpells_charges" }, "will": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" }, "ritual": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" }, "other": { "$ref": "#/$defs/_itemAttachedSpells_arrayOfSpell" }, "ability": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsAbility" }, "resourceName": { "description": "Optional resource name for resource-cast spells in this group", "type": "string", "markdownDescription": "Optional resource name for resource-cast spells in this group" } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Attached spells broken down by usage type." } ] }, "itemOptionalfeatures": { "type": "array", "items": { "type": "string" } }, "itemClassFeatures": { "type": "array", "items": { "type": "string" } }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean", "string", "number", "integer" ] }, "markdownDescription": "An unrestricted area for custom properties to be stored." }, "itemAcSpecial": { "description": "Free text field for homebrew use.", "type": "string", "markdownDescription": "Free text field for homebrew use." }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source.", "anyOf": [ { "description": "References \"itemFluff\" array items", "type": "object", "properties": { "_itemFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } }, "_appendItemFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } }, "additionalProperties": false, "markdownDescription": "References "itemFluff" array items" }, { "$ref": "util.json#/$defs/fluffObject" } ], "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source." } }, "markdownDescription": "Shared item definitions to be used in item schemas." } ``` ## schema\brew\items.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "items.json", "version": "1.14.28", "type": "object", "$defs": { "itemData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "_itemGroupItems": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string" } }, "_item": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false, "required": [ "name", "rarity", "source" ] }, "item": { "anyOf": [ { "$ref": "#/$defs/_item" }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "subEntityItem": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false, "required": [ "name", "rarity", "source" ] }, "subEntityItemArray": { "type": "array", "items": { "$ref": "#/$defs/subEntityItem" }, "uniqueItems": true, "minItems": 1 }, "itemGroup": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "items": { "$ref": "#/$defs/_itemGroupItems" }, "itemsHidden": { "const": true } }, "additionalProperties": false, "required": [ "name", "rarity", "source", "items" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "baseItem": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "carryingCapacity": { "$ref": "items-shared.json#/$defs/itemCarryingCapacity" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "additionalEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "property": { "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray" }, "range": { "type": "string" }, "reload": { "type": [ "string", "integer" ] }, "reqAttune": { "type": [ "string", "boolean" ] }, "reqAttuneAlt": { "description": "Used for filtering.", "type": [ "string", "boolean" ], "markdownDescription": "Used for filtering." }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "detail1": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "detail2": { "description": "A descriptive field that can be used to complete entries in variants.", "type": "string", "markdownDescription": "A descriptive field that can be used to complete entries in variants." }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "speed": { "$ref": "items-shared.json#/$defs/itemSpeed" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "firearm": { "type": "boolean" }, "staff": { "description": "Adds the italicized \"Staff\" text to the item info line (below the name).", "type": "boolean", "markdownDescription": "Adds the italicized "Staff" text to the item info line (below the name)." }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "value": { "description": "In copper pieces.", "type": [ "number", "null" ], "markdownDescription": "In copper pieces." }, "valueMult": { "type": "number" }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightNote": { "type": "string" }, "wondrous": { "type": "boolean" }, "tattoo": { "type": "boolean" }, "sentient": { "type": "boolean" }, "poison": { "type": "boolean" }, "poisonTypes": { "type": "array", "items": { "type": "string", "examples": [ "contact", "ingested", "injury", "inhaled" ] } }, "crew": { "type": "integer" }, "crewMin": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "crewMax": { "description": "For crews specified as an X-Y min-max.", "type": "integer", "markdownDescription": "For crews specified as an X-Y min-max." }, "capPassenger": { "type": "integer" }, "capCargo": { "type": "number" }, "vehSpeed": { "type": "number" }, "vehAc": { "type": "integer" }, "vehHp": { "type": "integer" }, "vehDmgThresh": { "type": "integer" }, "travelCost": { "description": "In copper pieces per mile per passenger.", "type": "integer", "markdownDescription": "In copper pieces per mile per passenger." }, "shippingCost": { "description": "In copper pieces per 100 lbs per mile.", "type": "integer", "markdownDescription": "In copper pieces per 100 lbs per mile." }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "focus": { "description": "Item can be used as a spellcasting focus", "oneOf": [ { "type": "boolean" }, { "type": "array", "items": { "type": "string", "examples": [ "Artificer", "Bard", "Cleric", "Druid", "Paladin", "Ranger", "Sorcerer", "Warlock", "Wizard" ] } } ], "markdownDescription": "Item can be used as a spellcasting focus" }, "lootTables": { "type": "array", "items": { "type": "string" } }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "atomicPackContents": { "description": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items.", "type": "boolean", "markdownDescription": "If the item's pack contents should be treated as one atomic unit, rather than handled as individual sub-items." }, "containerCapacity": { "type": "object", "properties": { "weight": { "description": "Value in pounds.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in pounds." }, "volume": { "description": "Value in cubic feet.", "type": "array", "items": { "type": "number" }, "markdownDescription": "Value in cubic feet." }, "item": { "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "integer" } }, "additionalProperties": false } }, "weightless": { "description": "If the container renders its contents weightless.", "type": "boolean", "markdownDescription": "If the container renders its contents weightless." } }, "additionalProperties": false }, "ammoType": { "$ref": "items-shared.json#/$defs/itemAmmoType" }, "packContents": { "$ref": "items-shared.json#/$defs/packContents" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "seeAlsoDeck": { "type": "array", "items": { "type": "string", "description": "UIDs of \"deck\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"deck of many things|dmg\".", "markdownDescription": "UIDs of "deck"s to be linked in a "See Also" footnote.\n\nEx.: "deck of many things|dmg"." } }, "seeAlsoVehicle": { "type": "array", "items": { "type": "string", "description": "UIDs of \"vehicle\"s to be linked in a \"See Also\" footnote.\n\nEx.: \"rowboat|gos\".", "markdownDescription": "UIDs of "vehicle"s to be linked in a "See Also" footnote.\n\nEx.: "rowboat|gos"." } }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "barDimensions": { "type": "object", "description": "Values given in inches.", "$comment": "Not to be confused with the \"barDimension\", an altogether friendlier place.", "properties": { "l": { "type": "number" }, "w": { "type": "number" }, "h": { "type": "number" } }, "required": [ "l", "w", "h" ], "additionalProperties": false, "markdownDescription": "Values given in inches." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "alCertificateId": { "description": "Adventurers League item certificate ID; for use in homebrew.", "type": "string", "markdownDescription": "Adventurers League item certificate ID; for use in homebrew." }, "foundryType": { "description": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n\"CONFIG.Item.typeLabels\" correct as of Foundry v0.8.9", "type": "string", "enum": [ "weapon", "equipment", "consumable", "tool", "loot", "class", "spell", "feat", "backpack" ], "markdownDescription": "Homebrew only: used to manually specify the exact Foundry item type an item should be imported as.\n\n"CONFIG.Item.typeLabels" correct as of Foundry v0.8.9" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "items": { "$ref": "#/$defs/_itemGroupItems" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "item": { "type": "array", "items": { "$ref": "#/$defs/item" }, "uniqueItems": true, "minItems": 1 }, "itemGroup": { "description": "Used to create fake item entries for groups of related items, often referred to as a single item (e.g. arcane foci)", "type": "array", "items": { "$ref": "#/$defs/itemGroup" }, "uniqueItems": true, "minItems": 1, "markdownDescription": "Used to create fake item entries for groups of related items, often referred to as a single item (e.g. arcane foci)" }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\languages.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "languages.json", "version": "1.1.17", "type": "object", "$defs": { "language": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "typicalSpeakers": { "type": "array", "items": { "type": "string" } }, "origin": { "type": "string" }, "script": { "type": "string" }, "type": { "type": "string", "enum": [ "standard", "rare", "exotic", "secret" ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "dialects": { "type": "array", "items": { "type": "string" } }, "fonts": { "description": "A list of direct URLs to font files.", "type": "array", "items": { "type": "string" }, "markdownDescription": "A list of direct URLs to font files." }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "required": [ "name", "source" ], "additionalProperties": false } }, "properties": { "language": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/language" } }, "languageScript": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "fonts": { "type": "array", "items": { "type": "string" } } }, "required": [ "name", "source", "fonts" ], "additionalProperties": false } } }, "required": [ "language" ], "additionalProperties": false } ``` ## schema\brew\life.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "life.json", "version": "1.0.0", "type": "object", "properties": { "lifeClass": true, "lifeBackground": true, "lifeTrinket": true }, "required": [ "lifeClass", "lifeBackground", "lifeTrinket" ], "additionalProperties": false } ``` ## schema\brew\loot.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "loot.json", "version": "1.4.3", "$defs": { "cr": { "type": "integer", "minimum": 0, "maximum": 30 }, "d100": { "type": "integer", "minimum": 1, "maximum": 100 }, "coin": { "type": "object", "properties": { "cp": { "type": "string" }, "sp": { "type": "string" }, "ep": { "type": "string" }, "gp": { "type": "string" }, "pp": { "type": "string" } }, "additionalProperties": false }, "lootTypeAmount": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "integer" }, "amount": { "type": "string" } }, "required": [ "type", "amount" ], "additionalProperties": false }, { "type": "object", "properties": { "typeTable": { "type": "array", "items": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "type": { "type": "integer" } }, "required": [ "min", "max", "type" ], "additionalProperties": false } }, "amount": { "type": "string" } }, "required": [ "typeTable", "amount" ], "additionalProperties": false } ] }, "lootTypeAmountMagicItems": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string" }, "amount": { "type": "string" } }, "required": [ "type", "amount" ], "additionalProperties": false }, { "type": "object", "properties": { "typeTable": { "type": "array", "items": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "type": { "type": "string" }, "typeAltChoose": { "type": "object", "properties": { "rarity": { "type": "string" }, "tier": { "type": "string" } }, "required": [ "rarity", "tier" ], "additionalProperties": false } }, "required": [ "min", "max", "type", "typeAltChoose" ], "additionalProperties": false } }, "amount": { "type": "string" } }, "required": [ "typeTable", "amount" ], "additionalProperties": false } ] }, "minItems": 1 }, "gemsOrArt": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "type": { "type": "integer" }, "table": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } }, "required": [ "name", "source", "page", "type", "table" ], "additionalProperties": false } }, "table": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "min": { "$ref": "#/$defs/d100" }, "max": { "$ref": "#/$defs/d100" }, "item": { "type": "string" }, "spellLevel": { "type": "integer" }, "table": { "$ref": "#/$defs/table" }, "choose": { "oneOf": [ { "type": "object", "properties": { "fromGroup": { "type": "array", "items": { "type": "string" } } }, "required": [ "fromGroup" ], "additionalProperties": false }, { "type": "object", "properties": { "fromGeneric": { "type": "array", "items": { "type": "string" } } }, "required": [ "fromGeneric" ], "additionalProperties": false }, { "type": "object", "properties": { "fromItems": { "type": "array", "items": { "type": "string" } } }, "required": [ "fromItems" ], "additionalProperties": false }, { "type": "object", "properties": { "fromMatching": { "type": "object", "properties": { "rarity": { "type": "string" }, "tier": { "type": "string" } }, "minProperties": 1, "additionalProperties": false } }, "required": [ "fromMatching" ], "additionalProperties": false } ] } }, "additionalProperties": false } } }, "type": "object", "properties": { "individual": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "crMin": { "$ref": "#/$defs/cr" }, "crMax": { "$ref": "#/$defs/cr" }, "table": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "min": { "$ref": "#/$defs/d100" }, "max": { "$ref": "#/$defs/d100" }, "coins": { "$ref": "#/$defs/coin" } }, "required": [ "min", "max", "coins" ], "additionalProperties": false } } }, "required": [ "name", "source", "page", "crMin", "crMax", "table" ], "additionalProperties": false } }, "hoard": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "crMin": { "$ref": "#/$defs/cr" }, "crMax": { "$ref": "#/$defs/cr" }, "coins": { "$ref": "#/$defs/coin" }, "table": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "min": { "$ref": "#/$defs/d100" }, "max": { "$ref": "#/$defs/d100" }, "gems": { "$ref": "#/$defs/lootTypeAmount" }, "artObjects": { "$ref": "#/$defs/lootTypeAmount" }, "magicItems": { "$ref": "#/$defs/lootTypeAmountMagicItems" } }, "required": [ "min", "max" ], "additionalProperties": false } } }, "required": [ "name", "source", "page", "crMin", "crMax", "coins", "table" ], "additionalProperties": false } }, "gems": { "$ref": "#/$defs/gemsOrArt" }, "artObjects": { "$ref": "#/$defs/gemsOrArt" }, "magicItems": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "type": { "type": "string" }, "table": { "$ref": "#/$defs/table" } }, "required": [ "name", "source", "page", "type", "table" ], "additionalProperties": false } }, "dragonMundaneItems": { "$ref": "#/$defs/table" }, "dragon": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "coins": { "$ref": "#/$defs/coin" }, "gems": { "$ref": "#/$defs/lootTypeAmount" }, "artObjects": { "$ref": "#/$defs/lootTypeAmount" }, "magicItems": { "$ref": "#/$defs/lootTypeAmountMagicItems" }, "dragonMundaneItems": { "type": "object", "properties": { "amount": { "type": "string" } }, "required": [ "amount" ], "additionalProperties": false } }, "required": [ "name", "source", "page", "coins", "gems", "artObjects", "magicItems", "dragonMundaneItems" ], "additionalProperties": false } } }, "required": [ "individual", "hoard", "gems", "artObjects", "magicItems", "dragonMundaneItems" ], "additionalProperties": false } ``` ## schema\brew\magicvariants.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "magicvariants.json", "version": "1.9.18", "type": "object", "$defs": { "_magicvariantDataBase": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "_magicvariantDataSite": { "$ref": "#/$defs/_magicvariantDataBase" }, "_magicvariantDataBrewRootRarity": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" } }, "additionalProperties": false }, "_magicvariantSite": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false, "required": [ "rarity", "source" ] }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "inherits", "requires" ] }, "_magicvariantBrewRootRarity": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false, "required": [ "source" ] }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" } }, "additionalProperties": false, "required": [ "name", "rarity", "inherits", "requires" ] }, "_magicvariantSiteCopy": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" }, "source": { "$ref": "util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "_copy", "source" ] }, "_magicvariantBrewRootRarityCopy": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "group": { "$ref": "util.json#/$defs/group" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "requires": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "property": { "type": "string" }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "description": "A more restrictive area for custom boolean-only properties to be stored.", "type": "object", "additionalProperties": { "type": [ "boolean" ] }, "markdownDescription": "A more restrictive area for custom boolean-only properties to be stored." } }, "minProperties": 1, "additionalProperties": false } }, "inherits": { "type": "object", "properties": { "type": { "description": "Generally this should be omitted, as the type of the base item will be used.", "$ref": "items-shared.json#/$defs/itemType", "markdownDescription": "Generally this should be omitted, as the type of the base item will be used." }, "typeAlt": { "$ref": "items-shared.json#/$defs/itemType" }, "property": { "description": "Generally this should be omitted, as the properties of the base item will be used.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Generally this should be omitted, as the properties of the base item will be used." }, "propertyAdd": { "description": "Additional properties to grant the specific variant, if not already present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Additional properties to grant the specific variant, if not already present on the base item." }, "propertyRemove": { "description": "Properties to remove from the specific variant, if present on the base item.", "$ref": "items-shared.json#/$defs/itemPropertyOrWrapperArray", "markdownDescription": "Properties to remove from the specific variant, if present on the base item." }, "range": { "type": "string" }, "ac": { "type": "integer" }, "age": { "$ref": "items-shared.json#/$defs/itemAge" }, "critThreshold": { "type": "integer" }, "bonusAc": { "type": "string" }, "bonusWeapon": { "type": "string" }, "bonusWeaponAttack": { "type": "string" }, "bonusWeaponDamage": { "type": "string" }, "bonusWeaponCritDamage": { "type": "string" }, "bonusSpellAttack": { "type": "string" }, "bonusSpellDamage": { "type": "string" }, "bonusSpellSaveDc": { "type": "string" }, "bonusSavingThrow": { "type": "string" }, "bonusAbilityCheck": { "type": "string" }, "bonusProficiencyBonus": { "type": "string" }, "bonusSavingThrowConcentration": { "type": "string" }, "dmg1": { "type": "string" }, "dmg2": { "type": "string", "description": "The versatile or alternative damage dice of the weapon, e.g. \"1d10\"", "markdownDescription": "The versatile or alternative damage dice of the weapon, e.g. "1d10"" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "modifySpeed": { "$ref": "items-shared.json#/$defs/itemModifySpeed" }, "tier": { "$ref": "items-shared.json#/$defs/itemTier" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "namePrefix": { "type": "string" }, "nameSuffix": { "type": "string" }, "nameRemove": { "type": "string" }, "grantsProficiency": { "type": "boolean" }, "grantsLanguage": { "type": "boolean" }, "reqAttune": { "type": [ "string", "boolean" ] }, "curse": { "type": "boolean" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "stealth": { "type": "boolean" }, "strength": { "type": [ "string", "null" ] }, "dexterityMax": { "$ref": "items-shared.json#/$defs/itemDexterityMax" }, "wondrous": { "type": "boolean" }, "sentient": { "const": true }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "charges": { "type": [ "string", "integer" ] }, "recharge": { "$ref": "items-shared.json#/$defs/itemRecharge" }, "rechargeAmount": { "$ref": "items-shared.json#/$defs/itemRechargeAmount" }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "optionalfeatures": { "$ref": "items-shared.json#/$defs/itemOptionalfeatures" }, "classFeatures": { "$ref": "items-shared.json#/$defs/itemClassFeatures" }, "ability": { "$ref": "items-shared.json#/$defs/itemAbility" }, "lootTables": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } ] } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "valueMult": { "type": "number" }, "valueExpression": { "description": "Expression used to calculate each specific variant's value.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's value." }, "valueRarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "weight": { "type": "number" }, "weightMult": { "type": "number" }, "weightExpression": { "description": "Expression used to calculate each specific variant's weight.", "type": "string", "markdownDescription": "Expression used to calculate each specific variant's weight." }, "barding": { "type": "boolean" }, "spellScrollLevel": { "type": "integer" }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "miscTags": { "$ref": "items-shared.json#/$defs/itemMiscTags" }, "mastery": { "$ref": "items-shared.json#/$defs/itemMastery" }, "reach": { "$ref": "items-shared.json#/$defs/itemReach" }, "light": { "$ref": "items-shared.json#/$defs/itemLight" }, "hasRefs": { "type": "boolean", "description": "Whether this item has references within its data to dedicated \"itemEntry\"s.", "markdownDescription": "Whether this item has references within its data to dedicated "itemEntry"s." }, "customProperties": { "description": "An unrestricted area for custom properties to be stored.", "type": "object", "markdownDescription": "An unrestricted area for custom properties to be stored." }, "acSpecial": { "$ref": "items-shared.json#/$defs/itemAcSpecial" }, "currencyConversion": { "description": "ID of a value conversion table. Homebrew only.", "type": "string", "markdownDescription": "ID of a value conversion table. Homebrew only." }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" } }, "additionalProperties": false }, "excludes": { "type": "object", "properties": { "name": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "page": { "$ref": "util.json#/$defs/page" }, "property": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "armor": { "type": "boolean" }, "axe": { "type": "boolean" }, "bow": { "type": "boolean" }, "crossbow": { "type": "boolean" }, "sword": { "type": "boolean" }, "weapon": { "type": "boolean" }, "firearm": { "type": "boolean" }, "mace": { "type": "boolean" }, "spear": { "type": "boolean" }, "hammer": { "type": "boolean" }, "club": { "type": "boolean" }, "dagger": { "type": "boolean" }, "dmgType": { "$ref": "util.json#/$defs/dataDamageTags" }, "source": { "$ref": "util.json#/$defs/source" }, "type": { "$ref": "items-shared.json#/$defs/itemType" }, "scfType": { "$ref": "items-shared.json#/$defs/itemScfType" }, "net": { "type": "boolean" }, "polearm": { "type": "boolean" }, "lance": { "type": "boolean" }, "rapier": { "type": "boolean" }, "whip": { "type": "boolean" }, "halberd": { "type": "boolean" }, "glaive": { "type": "boolean" }, "arrow": { "type": "boolean" }, "bolt": { "type": "boolean" }, "bulletFirearm": { "type": "boolean" }, "bulletSling": { "type": "boolean" }, "cellEnergy": { "type": "boolean" }, "needleBlowgun": { "type": "boolean" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "staff": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" } }, "minProperties": 1, "additionalProperties": false }, "noDisplay": { "type": "boolean" }, "charges": { "type": [ "string", "integer" ] }, "attachedSpells": { "$ref": "items-shared.json#/$defs/itemAttachedSpells" }, "ammo": { "description": "Adds ammunition text to the header of the generic variant.", "type": "boolean", "markdownDescription": "Adds ammunition text to the header of the generic variant." }, "reqAttuneTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "reqAttuneAltTags": { "$ref": "util.json#/$defs/reqAttuneTags" }, "weaponCategory": { "$ref": "items-shared.json#/$defs/itemWeaponCategory" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "customProperties": { "$ref": "items-shared.json#/$defs/customProperties" }, "fluff": { "$ref": "items-shared.json#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "rarity": { "$ref": "items-shared.json#/$defs/itemRarity" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" }, "source": { "$ref": "util.json#/$defs/source" } }, "additionalProperties": false, "required": [ "_copy", "source" ] }, "magicvariantItem": { "anyOf": [ { "$ref": "#/$defs/_magicvariantSite" }, { "$ref": "#/$defs/_magicvariantSiteCopy" }, { "$ref": "#/$defs/_magicvariantBrewRootRarity" }, { "$ref": "#/$defs/_magicvariantBrewRootRarityCopy" } ] } }, "properties": { "magicvariant": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/magicvariantItem" } }, "linkedLootTables": { "type": "object", "patternProperties": { ".*": { "type": "object" } } } }, "required": [ "magicvariant" ], "additionalProperties": false } ``` ## schema\brew\makebrew-creature.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "makebrew-creature.json", "version": "1.2.0", "type": "object", "properties": { "makebrewCreatureTrait": { "description": "Additional trait templates which can be used in the homebrew builder.", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false }, "markdownDescription": "Additional trait templates which can be used in the homebrew builder." }, "makebrewCreatureAction": { "description": "Additional action templates which can be used in the homebrew builder.", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false }, "markdownDescription": "Additional action templates which can be used in the homebrew builder." } }, "additionalProperties": false } ``` ## schema\brew\makecards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "makecards.json", "version": "1.1.0", "$defs": { "itemLookupArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "abbreviation": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "abbreviation", "source" ], "additionalProperties": false } } }, "type": "object", "properties": { "reducedItemProperty": { "$ref": "#/$defs/itemLookupArray" }, "reducedItemType": { "$ref": "#/$defs/itemLookupArray" } }, "additionalProperties": false } ``` ## schema\brew\monsterfeatures.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "monsterfeatures.json", "version": "1.1.1", "type": "object", "properties": { "monsterfeatures": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "name": { "type": "string" }, "example": { "type": "string" }, "effect": { "type": "string" }, "hp": { "type": "string" }, "ac": { "type": "string" }, "dpr": { "type": "string" }, "attackBonus": { "type": "string" }, "hasNumberParam": { "type": "boolean", "description": "Whether this feature requires an automatic input when applied.", "markdownDescription": "Whether this feature requires an automatic input when applied." } }, "required": [ "name", "example", "effect" ], "additionalProperties": false } } }, "required": [ "monsterfeatures" ], "additionalProperties": false } ``` ## schema\brew\msbcr.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "msbcr.json", "version": "1.1.0", "type": "object", "properties": { "cr": { "type": "array", "uniqueItems": true, "items": { "type": "object", "properties": { "_cr": { "type": "string" }, "pb": { "type": "integer" }, "ac": { "type": "integer" }, "hpMin": { "type": "integer" }, "hpMax": { "type": "integer" }, "attackBonus": { "type": "integer" }, "dprMin": { "type": "integer" }, "dprMax": { "type": "integer" }, "saveDc": { "type": "integer" } }, "required": [ "_cr", "pb", "ac", "hpMin", "hpMax", "attackBonus", "dprMin", "dprMax", "saveDc" ], "additionalProperties": false } } }, "required": [ "cr" ], "additionalProperties": false } ``` ## schema\brew\names.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "names.json", "version": "1.3.1", "title": "NameArray", "type": "object", "$defs": { "nameTableRow": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "result": { "type": "string" } }, "required": [ "min", "max", "result" ], "additionalProperties": false }, "nameTable": { "type": "object", "properties": { "option": { "type": "string" }, "diceExpression": { "type": "string" }, "table": { "type": "array", "items": { "$ref": "#/$defs/nameTableRow" } } }, "required": [ "option", "table" ], "additionalProperties": false }, "name": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "tables": { "type": "array", "items": { "$ref": "#/$defs/nameTable" } } }, "required": [ "name", "source", "tables" ], "additionalProperties": false } }, "properties": { "name": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/name" } } }, "required": [ "name" ], "additionalProperties": false } ``` ## schema\brew\objects.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "objects.json", "version": "1.3.12", "type": "object", "$defs": { "object": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" }, "uniqueItems": true }, "creatureType": { "$ref": "util.json#/$defs/creatureType" }, "objectType": { "type": "string", "description": "- G: Generic\n- SW: Siege Weapon\n- U: Unknown", "enum": [ "GEN", "SW", "U" ], "markdownDescription": "- G: Generic\n- SW: Siege Weapon\n- U: Unknown" }, "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "ac": { "oneOf": [ { "type": "integer" }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "hp": { "oneOf": [ { "type": "integer" }, { "type": "object", "properties": { "special": { "type": "string" } }, "required": [ "special" ], "additionalProperties": false } ] }, "speed": { "$ref": "util.json#/$defs/speed" }, "senses": { "type": "array", "items": { "type": "string" } }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "actionEntries": { "type": "array", "description": "Actions available with the object, like firing a siege weapon. Uses the normal entries data.", "items": { "$ref": "entry.json" }, "markdownDescription": "Actions available with the object, like firing a siege weapon. Uses the normal entries data." }, "token": { "$ref": "util-token.json#/$defs/token" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" }, "altArt": { "$ref": "util-token.json#/$defs/altArt" }, "isNpc": { "type": "boolean" }, "hasToken": { "type": "boolean" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "tokenUrl": { "$ref": "util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "additionalProperties": false, "required": [ "name", "source", "size", "objectType", "hp" ] } }, "properties": { "object": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/object" } } }, "additionalProperties": false } ``` ## schema\brew\optionalfeatures.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "optionalfeatures.json", "version": "1.12.10", "title": "Optional Features", "type": "object", "$defs": { "optionalfeatureData": { "type": "object", "properties": { "name": { "type": "string" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "previousVersion": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "featureType": { "type": "array", "items": { "$ref": "util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "isClassFeatureVariant": { "type": "boolean" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "consumes": { "$ref": "util.json#/$defs/consumesObject" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "optionalfeature": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "previousVersion": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "featureType": { "type": "array", "items": { "$ref": "util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "isClassFeatureVariant": { "type": "boolean" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "consumes": { "$ref": "util.json#/$defs/consumesObject" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "entries", "source", "featureType" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "prerequisite": { "$ref": "util.json#/$defs/prerequisite" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "previousVersion": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "featureType": { "type": "array", "items": { "$ref": "util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "isClassFeatureVariant": { "type": "boolean" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "consumes": { "$ref": "util.json#/$defs/consumesObject" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "optionalfeatureProgression": { "$ref": "util.json#/$defs/optionalfeatureProgression" }, "featProgression": { "$ref": "util.json#/$defs/featProgression" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "hasFluff": { "const": true }, "hasFluffImages": { "const": true }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "optionalfeature": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/optionalfeature" } } }, "required": [ "optionalfeature" ], "additionalProperties": false } ``` ## schema\brew\psionics.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "psionics.json", "version": "1.2.4", "type": "object", "$defs": { "psionic": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "type": { "description": "- D: Discipline\n- T: Talent", "type": "string", "markdownDescription": "- D: Discipline\n- T: Talent", "examples": [ "D", "T" ] }, "focus": { "type": "string" }, "order": { "type": "string", "examples": [ "Avatar", "Awakened", "Immortal", "Nomad", "Wu Jen" ] }, "modes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "cost": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } }, "required": [ "min", "max" ], "additionalProperties": false }, "concentration": { "type": "object", "properties": { "duration": { "type": "integer" }, "unit": { "type": "string", "examples": [ "hr", "min", "rnd" ] } }, "required": [ "duration", "unit" ], "additionalProperties": false }, "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "submodes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "properties": { "cost": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } }, "required": [ "min", "max" ], "additionalProperties": false }, "name": { "type": "string" }, "entries": { "type": "array", "uniqueItems": true, "items": { "$ref": "entry.json" } } }, "required": [ "cost", "name", "entries" ], "additionalProperties": false } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, "entries": { "type": "array", "uniqueItems": true, "items": { "$ref": "entry.json" } }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "source", "type" ], "additionalProperties": false } }, "properties": { "psionic": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/psionic" } } }, "required": [ "psionic" ], "additionalProperties": false } ``` ## schema\brew\races.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "races.json", "version": "1.12.15", "type": "object", "$defs": { "sharedData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "subraceData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "type": "string" }, "raceSource": { "$ref": "util.json#/$defs/source" }, "overwrite": { "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace", "type": "object", "markdownDescription": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace" } }, "additionalProperties": false }, "raceData": { "$ref": "#/$defs/sharedData" }, "traitTag": { "oneOf": [ { "$ref": "util.json#/$defs/traitTagCharacter" }, { "type": "string", "enum": [ "Dragonmark", "Monstrous Race", "NPC Race", "Uncommon Race" ] } ] }, "heightAndWeight": { "type": "object", "properties": { "baseHeight": { "type": "integer" }, "heightMod": { "type": "string" }, "baseWeight": { "type": "integer" }, "weightMod": { "type": "string" } }, "required": [ "baseHeight", "heightMod", "baseWeight" ], "additionalProperties": false }, "lineage": { "oneOf": [ { "description": "For lineages that should be filterable using the \"Lineage\" filter, but should not have any modifications applied.", "type": "boolean", "const": true, "markdownDescription": "For lineages that should be filterable using the "Lineage" filter, but should not have any modifications applied." }, { "description": "For lineages which modify the race with e.g. specific ability score modes.", "type": "string", "enum": [ "UA1", "VRGR" ], "markdownDescription": "For lineages which modify the race with e.g. specific ability score modes." } ] }, "age": { "type": "object", "properties": { "mature": { "type": "integer" }, "max": { "type": "integer" } } }, "race": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "source" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "subrace": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "type": "string" }, "raceSource": { "$ref": "util.json#/$defs/source" }, "overwrite": { "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace", "type": "object", "markdownDescription": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace" } }, "additionalProperties": false, "required": [ "name", "source", "raceName", "raceSource" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "oneOf": [ { "$ref": "util.json#/$defs/otherSources" }, { "type": "null" } ] }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "edition": { "$ref": "util-edition.json#/$defs/edition" }, "ability": { "$ref": "util.json#/$defs/abilityScores" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" } }, "speed": { "$ref": "util.json#/$defs/speed" }, "abilityEntry": { "$ref": "entry.json#/$defs/entryItem" }, "creatureTypesEntry": { "$ref": "entry.json#/$defs/entryItem" }, "sizeEntry": { "$ref": "entry.json#/$defs/entryItem" }, "speedEntry": { "$ref": "entry.json#/$defs/entryItem" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "darkvision": { "type": "integer" }, "blindsight": { "type": "integer" }, "feats": { "$ref": "util.json#/$defs/additionalFeatsArray" }, "traitTags": { "description": "Additional filter-only tags, to be used when more specific data (\"skillProficiencies\", etc.) is not appropriate, due to e.g. conditional or temporary effects.", "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/traitTag" } }, { "type": "null" } ], "markdownDescription": "Additional filter-only tags, to be used when more specific data ("skillProficiencies", etc.) is not appropriate, due to e.g. conditional or temporary effects." }, "soundClip": { "$ref": "entry.json#/$defs/mediaHref" }, "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "oneOf": [ { "$ref": "util.json#/$defs/skillProficiencies" }, { "type": "null" } ] }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "lineage": { "oneOf": [ { "$ref": "#/$defs/lineage" }, { "type": "null" } ] }, "heightAndWeight": { "oneOf": [ { "$ref": "#/$defs/heightAndWeight" }, { "type": "null" } ] }, "startingEquipment": { "oneOf": [ { "type": "null" }, { "$ref": "util.json#/$defs/startingEquipment" } ] }, "additionalSpells": { "oneOf": [ { "type": "null" }, { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } ] }, "resist": { "oneOf": [ { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, { "type": "null" } ] }, "immune": { "oneOf": [ { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, { "type": "null" } ] }, "vulnerable": { "oneOf": [ { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, { "type": "null" } ] }, "conditionImmune": { "oneOf": [ { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, { "type": "null" } ] }, "creatureTypes": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/creatureType" } } }, "required": [ "choose" ], "additionalProperties": false }, { "$ref": "util.json#/$defs/creatureType" } ] } }, "creatureTypeTags": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "type": "string" } }, "age": { "$ref": "#/$defs/age" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "_versions": { "$ref": "util-copy.json#/$defs/versionsArray" }, "fluff": { "$ref": "#/$defs/fluff" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" }, "raceName": { "type": "string" }, "raceSource": { "$ref": "util.json#/$defs/source" }, "overwrite": { "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace", "type": "object", "markdownDescription": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source.", "anyOf": [ { "$ref": "util.json#/$defs/fluffObject" }, { "description": "References \"raceFluff\" array items", "type": "object", "properties": { "_raceFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } }, "_appendRaceFluff": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } } } }, "additionalProperties": false, "markdownDescription": "References "raceFluff" array items" } ], "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source." } }, "properties": { "race": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/race" } }, "subrace": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/subrace" } }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "required": [ "race", "subrace" ], "additionalProperties": false } ``` ## schema\brew\recipes.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "recipes.json", "version": "1.5.9", "type": "object", "$defs": { "recipeData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "time": { "type": "object", "additionalProperties": false, "minProperties": 1, "patternProperties": { "^[a-zA-Z ]+$": { "$ref": "util-time.json#/$defs/timeMinutes" } } }, "serves": { "oneOf": [ { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "min", "max" ], "additionalProperties": false }, { "type": "object", "properties": { "exact": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "exact" ], "additionalProperties": false } ] }, "makes": { "$ref": "entry.json" }, "ingredients": { "type": "array", "items": { "$ref": "entry.json" } }, "equipment": { "type": "array", "items": { "$ref": "entry.json" } }, "instructions": { "type": "array", "items": { "$ref": "entry.json" } }, "noteCook": { "type": "array", "items": { "$ref": "entry.json" } }, "type": { "type": "string", "examples": [ "Dwarven", "Elixir/Ale", "Elven", "Halfling", "Human", "Uncommon Cuisine", "Lost in Realmspace", "Ravenloft", "Sigil", "Solamnia", "The Feywild", "The Rock of Bral", "The Yawning Portal", "The Hearth", "The Gilded Horseshoe", "The Pink Flumph Theater", "The Low Lantern", "The Halfway Inn", "The Driftwood Tavern", "One-Eyed Jax", "The Moonstone Mask", "The Hissing Stones" ] }, "diet": { "type": "string", "description": "- C: Vegetarian [aka \"cheese\"]\n- V: Vegan\n- X: Omnivorous", "enum": [ "C", "V", "X" ], "markdownDescription": "- C: Vegetarian [aka "cheese"]\n- V: Vegan\n- X: Omnivorous" }, "miscTags": { "type": "array", "items": { "type": "string", "enum": [ "alcohol", "feast" ] } }, "allergenGroups": { "type": "array", "description": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information.", "items": { "type": "string", "enum": [ "celery", "crustaceans", "eggs", "fish", "gluten", "lupin", "milk", "molluscs", "mustard", "nuts", "peanuts", "sesame", "soya", "sulphites" ] }, "markdownDescription": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information." }, "dishTypes": { "type": "array", "items": { "type": "string", "examples": [ "appetizer", "bread", "cocktail", "dessert", "drink", "entree", "libation", "pastry", "salad", "side", "snack", "soup", "sweet" ] } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false }, "recipe": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "time": { "type": "object", "additionalProperties": false, "minProperties": 1, "patternProperties": { "^[a-zA-Z ]+$": { "$ref": "util-time.json#/$defs/timeMinutes" } } }, "serves": { "oneOf": [ { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "min", "max" ], "additionalProperties": false }, { "type": "object", "properties": { "exact": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "exact" ], "additionalProperties": false } ] }, "makes": { "$ref": "entry.json" }, "ingredients": { "type": "array", "items": { "$ref": "entry.json" } }, "equipment": { "type": "array", "items": { "$ref": "entry.json" } }, "instructions": { "type": "array", "items": { "$ref": "entry.json" } }, "noteCook": { "type": "array", "items": { "$ref": "entry.json" } }, "type": { "type": "string", "examples": [ "Dwarven", "Elixir/Ale", "Elven", "Halfling", "Human", "Uncommon Cuisine", "Lost in Realmspace", "Ravenloft", "Sigil", "Solamnia", "The Feywild", "The Rock of Bral", "The Yawning Portal", "The Hearth", "The Gilded Horseshoe", "The Pink Flumph Theater", "The Low Lantern", "The Halfway Inn", "The Driftwood Tavern", "One-Eyed Jax", "The Moonstone Mask", "The Hissing Stones" ] }, "diet": { "type": "string", "description": "- C: Vegetarian [aka \"cheese\"]\n- V: Vegan\n- X: Omnivorous", "enum": [ "C", "V", "X" ], "markdownDescription": "- C: Vegetarian [aka "cheese"]\n- V: Vegan\n- X: Omnivorous" }, "miscTags": { "type": "array", "items": { "type": "string", "enum": [ "alcohol", "feast" ] } }, "allergenGroups": { "type": "array", "description": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information.", "items": { "type": "string", "enum": [ "celery", "crustaceans", "eggs", "fish", "gluten", "lupin", "milk", "molluscs", "mustard", "nuts", "peanuts", "sesame", "soya", "sulphites" ] }, "markdownDescription": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information." }, "dishTypes": { "type": "array", "items": { "type": "string", "examples": [ "appetizer", "bread", "cocktail", "dessert", "drink", "entree", "libation", "pastry", "salad", "side", "snack", "soup", "sweet" ] } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false, "required": [ "name", "source", "instructions", "ingredients" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "time": { "type": "object", "additionalProperties": false, "minProperties": 1, "patternProperties": { "^[a-zA-Z ]+$": { "$ref": "util-time.json#/$defs/timeMinutes" } } }, "serves": { "oneOf": [ { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "min", "max" ], "additionalProperties": false }, { "type": "object", "properties": { "exact": { "type": "integer" }, "note": { "$ref": "entry.json" } }, "required": [ "exact" ], "additionalProperties": false } ] }, "makes": { "$ref": "entry.json" }, "ingredients": { "type": "array", "items": { "$ref": "entry.json" } }, "equipment": { "type": "array", "items": { "$ref": "entry.json" } }, "instructions": { "type": "array", "items": { "$ref": "entry.json" } }, "noteCook": { "type": "array", "items": { "$ref": "entry.json" } }, "type": { "type": "string", "examples": [ "Dwarven", "Elixir/Ale", "Elven", "Halfling", "Human", "Uncommon Cuisine", "Lost in Realmspace", "Ravenloft", "Sigil", "Solamnia", "The Feywild", "The Rock of Bral", "The Yawning Portal", "The Hearth", "The Gilded Horseshoe", "The Pink Flumph Theater", "The Low Lantern", "The Halfway Inn", "The Driftwood Tavern", "One-Eyed Jax", "The Moonstone Mask", "The Hissing Stones" ] }, "diet": { "type": "string", "description": "- C: Vegetarian [aka \"cheese\"]\n- V: Vegan\n- X: Omnivorous", "enum": [ "C", "V", "X" ], "markdownDescription": "- C: Vegetarian [aka "cheese"]\n- V: Vegan\n- X: Omnivorous" }, "miscTags": { "type": "array", "items": { "type": "string", "enum": [ "alcohol", "feast" ] } }, "allergenGroups": { "type": "array", "description": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information.", "items": { "type": "string", "enum": [ "celery", "crustaceans", "eggs", "fish", "gluten", "lupin", "milk", "molluscs", "mustard", "nuts", "peanuts", "sesame", "soya", "sulphites" ] }, "markdownDescription": "One of the 14 major food allergens; see https://erudus.com/food-allergens for more information." }, "dishTypes": { "type": "array", "items": { "type": "string", "examples": [ "appetizer", "bread", "cocktail", "dessert", "drink", "entree", "libation", "pastry", "salad", "side", "snack", "soup", "sweet" ] } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "properties": { "_meta": { "$ref": "util.json#/$defs/metaBlock" }, "recipe": { "type": "array", "uniqueItems": true, "minItems": 1, "items": { "$ref": "#/$defs/recipe" } } }, "required": [ "recipe" ], "additionalProperties": false } ``` ## schema\brew\renderdemo.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "renderdemo.json", "version": "1.0.1", "type": "object", "properties": { "data": { "type": "array", "minItems": 1, "items": { "$ref": "entry.json" } } }, "additionalProperties": false } ``` ## schema\brew\rewards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "rewards.json", "version": "1.2.4", "type": "object", "$defs": { "reward": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "page": { "$ref": "util.json#/$defs/page" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "type": { "type": "string", "examples": [ "Blessing", "Boon", "Charm", "Curse", "Draconic Gift", "Inhabitation", "Fragment of Suffering", "Other", "Piety Trait" ] }, "ability": { "type": "object", "properties": { "entry": { "$ref": "entry.json" } }, "required": [ "entry" ], "additionalProperties": false }, "rarity": { "$ref": "util.json#/$defs/rarity" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" }, "entries": { "type": "array", "uniqueItems": true, "items": { "$ref": "entry.json" } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "required": [ "name", "source", "type", "entries" ], "additionalProperties": false } }, "properties": { "reward": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/reward" } } }, "required": [ "reward" ], "additionalProperties": false } ``` ## schema\brew\senses.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "senses.json", "version": "1.0.5", "type": "object", "$defs": { "sense": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false } }, "properties": { "sense": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/sense" } } }, "required": [ "sense" ], "additionalProperties": false } ``` ## schema\brew\skills.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "skills.json", "version": "1.0.6", "type": "object", "$defs": { "skill": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "ability": { "$ref": "util.json#/$defs/abilityScoreAbbreviation" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "source", "entries" ], "additionalProperties": false } }, "properties": { "skill": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/skill" } } }, "required": [ "skill" ], "additionalProperties": false } ``` ## schema\brew\sources-5etools.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "sources-5etools.json", "title": "5etools Sources", "description": "A dump of 5etools sources. See `node/fetch-5etools-sources.js`.", "version": "0.0.0", "$defs": { "sources": { "type": "string", "enum": [ "PHB", "DMG", "MM", "CoS", "EEPC", "EET", "HotDQ", "LMoP", "OotA", "PotA", "RoT", "RoTOS", "SCAG", "SKT", "ToA", "TLK", "ToD", "TTP", "TftYP", "TftYP-AtG", "TftYP-DiT", "TftYP-TFoF", "TftYP-THSoT", "TftYP-TSC", "TftYP-ToH", "TftYP-WPM", "VGM", "XGE", "OGA", "MTF", "WDH", "WDMM", "GGR", "KKW", "LLK", "AZfyT", "GoS", "AI", "OoW", "ESK", "DIP", "HftT", "DC", "SLW", "SDW", "BGDIA", "LR", "AL", "SAC", "ERLW", "EFR", "RMBRE", "RMR", "MFF", "AWM", "IMR", "SADS", "EGW", "ToR", "DD", "FS", "US", "MOT", "IDRotF", "TCE", "VRGR", "HoL", "RtG", "AitFR", "AitFR-ISF", "AitFR-THP", "AitFR-AVT", "AitFR-DN", "AitFR-FCD", "WBtW", "DoD", "MaBJoV", "FTD", "SCC", "SCC-CK", "SCC-HfMT", "SCC-TMM", "SCC-ARiR", "MPMM", "CRCotN", "JttRC", "SAiS", "AAG", "BAM", "LoX", "DoSI", "DSotDQ", "KftGV", "BGG", "TDCSR", "PaBTSO", "PAitM", "SatO", "ToFW", "MPP", "BMT", "DMTCRG", "QftIS", "VEoR", "XPHB", "XDMG", "XMM", "DrDe", "DrDe-DaS", "DrDe-BD", "DrDe-TWoO", "DrDe-FWtVC", "DrDe-TDoN", "DrDe-TFV", "DrDe-BtS", "DrDe-SD", "DrDe-ACfaS", "DrDe-DotSC", "HotB", "TD", "Screen", "ScreenWildernessKit", "ScreenDungeonKit", "ScreenSpelljammer", "XScreen", "HF", "HFFotM", "HFStCM", "PaF", "HFDoMM", "CM", "NRH", "NRH-TCMC", "NRH-AVitW", "NRH-ASS", "NRH-CoI", "NRH-TLT", "NRH-AWoL", "NRH-AT", "MGELFT", "VD", "SjA", "HAT-TG", "HAT-LMI", "GotSF", "LK", "CoA", "PiP", "DitLCoT", "VNotEE", "LRDT", "UtHftLH", "ScoEE", "HBTD", "BQGT", "ALCurseOfStrahd", "ALElementalEvil", "ALRageOfDemons", "PSA", "PSI", "PSK", "PSZ", "PSX", "PSD", "XMtS", "UATheMysticClass", "MCV1SC", "MCV2DC", "MCV3MC", "MCV4EC", "MisMV1", "AATM" ] } }, "markdownDescription": "A dump of 5etools sources. See node/fetch-5etools-sources.js." } ``` ## schema\brew\sources-homebrew-legacy.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "sources-homebrew-legacy.json", "title": "Homebrew Legacy Sources", "version": "2.0.0", "$defs": { "sourcesShort": { "description": "A dump of homebrew \"legacy\" sources, which are below the required character count.", "type": "string", "enum": [ "KG", "GH", "SI", "RR", "UW", "SC", "CC", "ZL", "DK", "EP", "MH", "M4", "LM", "ba", "5m", "PK", "sh", "DI", "MC", "WC", "9F", "EW", "BF", "AS", "SG", "GS", "AC", "BS", "AoQ", "SOD", "SoI", "WSC", "BOS", "COK", "BGO", "TPK", "Ar1", "Ar2", "Ar3", "Ar4", "Ar5", "Ar6", "Ar7", "Ar8", "KaW", "WCE", "TMR", "blt", "B:P", "B:W", "WVK", "s5e", "GCC", "TRR", "ktp", "KSB", "ktw", "LLC", "TCC", "BST", "ILL", "Ast", "tca", "TPM", "TVC", "TTR", "NMD", "BEG", "BMG", "EdE", "TEB", "thv", "rcg", "tbk", "tgd", "rol", "bga", "mgb", "jwi", "cwt", "los", "not", "ar9", "cfc", "ToH", "VSS", "SaF", "3mx", "9Fm", "TTT", "NLC", "NED", "ccg", "SSW", "HoE", "SRD", "YAG", "EEE", "AnC", "MaM", "FEF", "ToB", "RIP", "cmi", "BAG", "btn", "JWL", "TGS", "ToT", "VoM", "BMR", "GAG", "CDR", "wau", "TaR", "AAA", "ASO", "SoV", "cbs", "OWP", "WHW", "ASH", "RSP", "scr", "PKB", "SoSM", "TFoZ", "TBHA", "TSSL", "KPSC", "WL50", "DLRG", "DMPG", "AnWe", "GHPG", "SCoC", "RInD", "Ar20", "FT&S", "AvCA", "BWWW", "F:SM", "BHBB", "AACC", "KT:O", "ktwe", "LLAB", "LLAF", "LLAM", "LLAR", "LLMC", "LLPS", "LLSH", "LLAW", "Jugg", "RO:D", "Cook", "YARV", "WRTR", "AGMH", "MHMM", "KCAA", "FFnF", "tcmh", "MATM", "mtgb", "ASoS", "EGtX", "GHMG", "tgs1", "zorq", "TCAH", "HHbH", "GaGR", "llpp", "mage", "llbc", "kmca", "wwcc", "mdch", "lldd", "lldc", "tcck", "llms", "llso", "beog", "ggol", "joor", "llpc", "llwc", "llat", "bbsm", "csmm", "jjar", "ar15", "BDPC", "DAPC", "KOMA", "SCOE", "KGFD", "ToMT", "DM01", "DM03", "DM04", "DM05", "DM07", "dm08", "DM09", "DM12", "DM13", "DM14", "DM16", "dm17", "KPDM", "IGtN", "RoyT", "tfhb", "cg2a", "3mxt", "BBcw", "TFnT", "GamG", "AotA", "RotH", "Skul", "JBoE", "SCat", "ASRT", "Lera", "BeGr", "PB5E", "PS:T", "VNPC", "MotG", "GDoF", "ToB2", "ToB3", "FMp1", "VTCR", "SLCC", "SLPG", "BoBH", "OCLD", "WWCT", "HafH", "SotD", "votv", "BOGO", "EWaI", "EnMa", "SoUN", "MCos", "FoTR", "MAMM", "PoTC", "DS:E", "R:FS", "Mice", "BBHR", "VOGM", "KPUH", "AMIX", "Skut", "TWOC", "ExEx", "ERTW", "BoLS", "KTSS", "ExFS", "TSSO", "BAEQ", "B:Fs", "TMSA", "TGCP", "BMSO", "IVSO", "LLMT", "LLRA", "MFoV", "NCSK", "PotB", "AS:C", "RJTE", "AERO", "OSHA", "SotS", "CoFS", "phtm", "1kre", "IC5E", "mbsr", "TTNSP", "TCoDH", "TDKFD", "WotDL", "TotBC", "WDMMC", "ATBOH", "PS-Kg", "Siege", "tnaoj", "BH:SC", "BH:SP", "CHNLR", "Noble", "GfGMH", "HA:GS", "JRRTG", "LLABE", "LLABH", "LLARo", "LLWrc", "LLSav", "TCCv2", "mfovc", "mfovw", "NPOSS", "TSorc", "Scion", "TCEE2", "RotR1", "RotR2", "RotR3", "RotR4", "RotR5", "RotR6", "CC:AB", "HTotE", "XLNEE", "SCGtD", "COFSA", "ABYSS", "ATLAS", "HHHVI", "ksmmk", "llraa", "mjspc", "llroa", "llsac", "llshc", "llsom", "llwpb", "dvati", "ddtwf", "KTKCG", "W02DM", "W20RT", "cbofr", "MMMxC", "BBhb1", "BBhb2", "MADMT", "TCEE1", "FFXIV", "u21gs", "VDPVF", "CComp", "W29PB", "HboSR", "ConfC", "SLEFC", "SLESP", "MaDSS", "UBCOS", "WBBCD", "KTFfF", "RFnNR", "MToMM", "GMSTN", "NftFR", "mfovt", "SSGRF", "TKASR", "ILTHD", "WHFAR", "PPSUE", "Artes", "BBrew", "POotA", "4EL-S", "ASDFS", "GSOSV", "MAGE!", "KCoDR", "LL:BC", "LL:DC", "LLPSO", "WotCS", "WotCo", "ASNtV", "PotMS", "WotFA", "SVMAS", "TRRES", "ZTGAS", "DDHQP", "r20rt", "LoRME" ], "markdownDescription": "A dump of homebrew "legacy" sources, which are below the required character count." }, "sourcesColon": { "description": "A dump of homebrew \"legacy\" sources, which contain colons.", "type": "string", "enum": [ "AS:C", "B:Fs", "B:P", "B:P-UAClassFeatureVariants", "B:W", "B:W-UAClassFeatureVariants", "BH:SC", "BH:SP", "CC:AB", "CC:ARD", "CC:BSS", "CC:HC1", "CC:HC2", "CC:TEotCC", "DA:GIC", "DS:E", "DZC:ANA:B", "DZC:ANA:F", "DZC:ANA:M", "DZC:ANA:MsE", "DZC:ANA:Ro", "F:SM", "F:SM-UAClassFeatureVariants", "Fest:TG", "Fest:TG-modnar", "GfW:MoM", "HA:GS", "HA:GS-UAClassFeatureVariants", "Havels Random Finds: Passion Domain", "InfKore:Disciple", "Izzy:Incarnate", "Izzy:Incarnate-UAClassFeatureVariants", "johnofbohemia:Witcher", "KftGV:CC", "KibblesTasty:BMS", "KibblesTasty:CC", "KT:AMF", "KT:O", "KT:VSCO", "LL:BC", "LL:DC", "LLAART:E", "LLAF:E", "LLAM:E", "LLAR:E", "LLASorcorc:E", "LLAW:E", "LLMC:E", "LLSH:E", "LUA5E:AG", "McToomin27:Animus", "MFOV:A", "MFOV:Archon", "MFOV:Bugbear", "MFOV:CH", "MFOV:CP1", "MFOV:CP2", "MFOV:CU", "MFOV:Devil", "MFOV:Dvati", "MFOV:EA", "MFOV:Fetchling", "MFOV:GS", "MFOV:IA", "MFOV:Illum", "MFOV:M", "MFOV:Mer", "MFOV:MM", "MFOV:MMM", "MFOV:MU1", "MFOV:MU2", "MFOV:R-AG", "MFOV:R-Dh", "MFOV:R-Tib", "MFOV:Reven", "MFOV:Satyr", "MFOV:Shard", "MFOV:Sir", "MFOV:SM", "MFOV:TOA", "MFOV:TT", "MFOV:TW", "MFOV:Vect", "MFOV:WD", "MFOV:WM", "MFOV:WU", "MFOV:WW", "MHP:VB", "MMM:SS", "NMD:BN", "PS:T", "R:FS", "Rhyzler:Gunsmith", "Rhyzler:Gunsmith-UAClassFeatureVariants", "RO:D", "RO:D-PHB", "RO:D-TCE", "RO:D-UA2020PsionicOptionsRevisited", "RO:D-UA2020SubclassesRevisited", "RO:D-UAClassFeatureVariants", "RO:D-UAFighterRangerRogue", "RO:D-UAFighterRogueWizard", "RO:D-UAGothicHeroes", "RO:D-UARangerAndRogue", "RO:D-XGE", "SterlingVermin:Patreon", "TEB:SR", "TEB:SV", "TWS:SC", "u21gs:e" ], "markdownDescription": "A dump of homebrew "legacy" sources, which contain colons." } } } ``` ## schema\brew\spells\fluff-index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\spells\fluff-spells.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "fluff-spells.json", "version": "1.0.0", "type": "object", "properties": { "spellFluff": { "$ref": "../util.json#/$defs/genericFluffArray" }, "_meta": { "$ref": "../util.json#/$defs/metaBlock" } }, "additionalProperties": false } ``` ## schema\brew\spells\foundry.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "foundry-spells.json", "version": "1.0.0", "type": "object", "properties": { "spell": { "$ref": "../util-foundry.json#/$defs/foundrySideDataGenericArray" } }, "required": [ "spell" ], "additionalProperties": false } ``` ## schema\brew\spells\index.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "version": "1.0.0", "type": "object", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "string" } }, "additionalProperties": false } ``` ## schema\brew\spells\roll20.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "roll20.json", "version": "1.0.4", "title": "SpellMetaArray", "type": "object", "$defs": { "spellMeta": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "data": { "description": "Based on the Roll20 data, available e.g. here: https://app.roll20.net/compendium/dnd5e/Spells:Fireball.json", "type": "object", "properties": { "Save": { "type": "string" }, "Damage": { "type": "string" }, "Damage Type": { "type": "string" }, "Damage Progression": { "type": "string" }, "Target": { "type": "string" }, "Healing": { "type": "string" }, "Spell Attack": { "type": "string" }, "Save Success": { "type": "string" }, "Higher Spell Slot Die": { "type": "string" }, "Higher Spell Slot Dice": { "type": "string" }, "Add Casting Modifier": { "type": "string" }, "Secondary Damage": { "type": "string" }, "Secondary Damage Type": { "type": "string" }, "Higher Level Healing": { "type": "string" }, "Higher Spell Slot Bonus": { "type": "string" }, "Secondary Higher Spell Slot Die": { "type": "string" }, "Secondary Higher Spell Slot Dice": { "type": "string" }, "Secondary Damage Progression": { "type": "string" }, "Secondary Add Casting Modifier": { "type": "string" }, "data-Cantrip Scaling": { "type": "string" }, "Crit": { "type": "string" }, "Crit Range": { "type": "string" } }, "additionalProperties": false, "markdownDescription": "Based on the Roll20 data, available e.g. here: https://app.roll20.net/compendium/dnd5e/Spells:Fireball.json" }, "shapedData": { "type": "object" } }, "required": [ "name", "source", "data" ], "additionalProperties": false } }, "properties": { "spell": { "type": "array", "items": { "$ref": "#/$defs/spellMeta" }, "minItems": 1, "uniqueItems": true } } } ``` ## schema\brew\spells\sources.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "sources.json", "version": "1.0.1", "type": "object", "description": "Keys are source identifiers.", "patternProperties": { "^[-a-zA-Z0-9]+$": { "type": "object", "description": "Keys are spell names.", "patternProperties": { "^[-a-zA-ZÀ-ž0-9 '()/;]+$": { "type": "object", "properties": { "class": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "type": "string" }, "definedInSource": { "type": "string" } }, "required": [ "name", "source" ], "additionalProperties": false }, "minItems": 1 }, "classVariant": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "type": "string" }, "definedInSource": { "type": "string" } }, "required": [ "name", "source", "definedInSource" ], "additionalProperties": false }, "minItems": 1 } }, "additionalProperties": false, "minProperties": 1 } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are spell names." } }, "additionalProperties": false, "minProperties": 1, "markdownDescription": "Keys are source identifiers." } ``` ## schema\brew\spells\spells.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "spells.json", "version": "1.9.24", "title": "Spells", "type": "object", "$defs": { "spellData": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "level": { "type": "integer" }, "school": { "$ref": "../util.json#/$defs/spellSchool" }, "subschools": { "type": "array", "items": { "type": "string", "examples": [ "contaminated" ] }, "minItems": 1, "uniqueItems": true }, "meta": { "type": "object", "properties": { "ritual": { "type": "boolean" }, "technomagic": { "type": "boolean" } }, "additionalProperties": false }, "time": { "type": "array", "items": { "$ref": "../util-time.json#/$defs/time" } }, "range": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "special", "point", "line", "cube", "cone", "emanation", "radius", "sphere", "hemisphere", "cylinder" ] }, "distance": { "type": "object", "properties": { "type": { "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ] }, "amount": { "type": "integer" }, "typeSecondary": { "description": "Homebrew only", "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ], "markdownDescription": "Homebrew only" }, "amountSecondary": { "description": "Homebrew only", "type": "integer", "markdownDescription": "Homebrew only" } }, "required": [ "type" ], "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": false }, "components": { "type": "object", "properties": { "v": { "type": "boolean" }, "s": { "type": "boolean" }, "m": { "oneOf": [ { "type": "object", "properties": { "text": { "type": "string" }, "cost": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "consume": { "oneOf": [ { "type": "boolean" }, { "type": "string", "const": "optional" } ] } }, "required": [ "text" ], "additionalProperties": false }, { "type": [ "boolean", "string" ] } ] }, "r": { "description": "\"Royalty\" components, as introduced in Acquisitions Incorporated", "type": "boolean", "markdownDescription": ""Royalty" components, as introduced in Acquisitions Incorporated" } }, "additionalProperties": false }, "duration": { "$ref": "../util-time.json#/$defs/durationEffect" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entriesHigherLevel": { "type": "array", "items": { "$ref": "../entry.json" } }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "damageInflict": { "type": "array", "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageResist": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageImmune": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageVulnerable": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionImmune": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrow": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "abilityCheck": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "strength", "constitution", "dexterity", "intelligence", "wisdom", "charisma" ] } }, "spellAttack": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "description": "- M: Melee\n- R: Ranged\n- O: Other/Unknown", "enum": [ "M", "R", "O" ], "markdownDescription": "- M: Melee\n- R: Ranged\n- O: Other/Unknown" } }, "areaTags": { "description": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "ST", "MT", "R", "N", "C", "Y", "H", "L", "S", "Q", "W" ] }, "markdownDescription": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder" }, "miscTags": { "type": "array", "description": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "AAD", "ADV", "DFT", "FMV", "HL", "LGT", "LGTS", "MAC", "OBJ", "OBS", "PIR", "PRM", "PS", "RO", "SCL", "SCT", "SMN", "SGT", "THP", "TP", "UBA" ] }, "markdownDescription": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action" }, "affectsCreatureType": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/creatureType" } }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "scalingLevelDice": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/scalingLevelDiceItem" } }, { "$ref": "#/$defs/scalingLevelDiceItem" } ] }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "groups": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "classes": { "type": "object", "properties": { "fromClassList": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromClassListVariant": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromSubclass": { "type": "array", "items": { "type": "object", "properties": { "class": { "$ref": "#/$defs/class" }, "subclass": { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "subSubclass": { "type": "string" } }, "required": [ "name", "shortName", "source" ], "additionalProperties": false } }, "required": [ "class", "subclass" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "races": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "baseName": { "type": "string" }, "baseSource": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "backgrounds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "optionalfeatures": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "featureType": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "feats": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "../util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "roll20Spell": { "$ref": "roll20.json#/properties/spell" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "../util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "../util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "_foundryMerge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false }, "spell": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "level": { "type": "integer" }, "school": { "$ref": "../util.json#/$defs/spellSchool" }, "subschools": { "type": "array", "items": { "type": "string", "examples": [ "contaminated" ] }, "minItems": 1, "uniqueItems": true }, "meta": { "type": "object", "properties": { "ritual": { "type": "boolean" }, "technomagic": { "type": "boolean" } }, "additionalProperties": false }, "time": { "type": "array", "items": { "$ref": "../util-time.json#/$defs/time" } }, "range": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "special", "point", "line", "cube", "cone", "emanation", "radius", "sphere", "hemisphere", "cylinder" ] }, "distance": { "type": "object", "properties": { "type": { "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ] }, "amount": { "type": "integer" }, "typeSecondary": { "description": "Homebrew only", "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ], "markdownDescription": "Homebrew only" }, "amountSecondary": { "description": "Homebrew only", "type": "integer", "markdownDescription": "Homebrew only" } }, "required": [ "type" ], "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": false }, "components": { "type": "object", "properties": { "v": { "type": "boolean" }, "s": { "type": "boolean" }, "m": { "oneOf": [ { "type": "object", "properties": { "text": { "type": "string" }, "cost": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "consume": { "oneOf": [ { "type": "boolean" }, { "type": "string", "const": "optional" } ] } }, "required": [ "text" ], "additionalProperties": false }, { "type": [ "boolean", "string" ] } ] }, "r": { "description": "\"Royalty\" components, as introduced in Acquisitions Incorporated", "type": "boolean", "markdownDescription": ""Royalty" components, as introduced in Acquisitions Incorporated" } }, "additionalProperties": false }, "duration": { "$ref": "../util-time.json#/$defs/durationEffect" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entriesHigherLevel": { "type": "array", "items": { "$ref": "../entry.json" } }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "damageInflict": { "type": "array", "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageResist": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageImmune": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageVulnerable": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionImmune": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrow": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "abilityCheck": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "strength", "constitution", "dexterity", "intelligence", "wisdom", "charisma" ] } }, "spellAttack": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "description": "- M: Melee\n- R: Ranged\n- O: Other/Unknown", "enum": [ "M", "R", "O" ], "markdownDescription": "- M: Melee\n- R: Ranged\n- O: Other/Unknown" } }, "areaTags": { "description": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "ST", "MT", "R", "N", "C", "Y", "H", "L", "S", "Q", "W" ] }, "markdownDescription": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder" }, "miscTags": { "type": "array", "description": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "AAD", "ADV", "DFT", "FMV", "HL", "LGT", "LGTS", "MAC", "OBJ", "OBS", "PIR", "PRM", "PS", "RO", "SCL", "SCT", "SMN", "SGT", "THP", "TP", "UBA" ] }, "markdownDescription": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action" }, "affectsCreatureType": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/creatureType" } }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "scalingLevelDice": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/scalingLevelDiceItem" } }, { "$ref": "#/$defs/scalingLevelDiceItem" } ] }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "groups": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "classes": { "type": "object", "properties": { "fromClassList": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromClassListVariant": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromSubclass": { "type": "array", "items": { "type": "object", "properties": { "class": { "$ref": "#/$defs/class" }, "subclass": { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "subSubclass": { "type": "string" } }, "required": [ "name", "shortName", "source" ], "additionalProperties": false } }, "required": [ "class", "subclass" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "races": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "baseName": { "type": "string" }, "baseSource": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "backgrounds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "optionalfeatures": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "featureType": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "feats": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "../util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "roll20Spell": { "$ref": "roll20.json#/properties/spell" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "../util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "../util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "_foundryMerge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "level", "school", "time", "range", "duration", "entries", "source" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "../util.json#/$defs/alias" }, "level": { "type": "integer" }, "school": { "$ref": "../util.json#/$defs/spellSchool" }, "subschools": { "type": "array", "items": { "type": "string", "examples": [ "contaminated" ] }, "minItems": 1, "uniqueItems": true }, "meta": { "type": "object", "properties": { "ritual": { "type": "boolean" }, "technomagic": { "type": "boolean" } }, "additionalProperties": false }, "time": { "type": "array", "items": { "$ref": "../util-time.json#/$defs/time" } }, "range": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "special", "point", "line", "cube", "cone", "emanation", "radius", "sphere", "hemisphere", "cylinder" ] }, "distance": { "type": "object", "properties": { "type": { "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ] }, "amount": { "type": "integer" }, "typeSecondary": { "description": "Homebrew only", "type": "string", "examples": [ "feet", "yards", "miles", "self", "touch", "unlimited", "plane", "sight" ], "markdownDescription": "Homebrew only" }, "amountSecondary": { "description": "Homebrew only", "type": "integer", "markdownDescription": "Homebrew only" } }, "required": [ "type" ], "additionalProperties": false } }, "required": [ "type" ], "additionalProperties": false }, "components": { "type": "object", "properties": { "v": { "type": "boolean" }, "s": { "type": "boolean" }, "m": { "oneOf": [ { "type": "object", "properties": { "text": { "type": "string" }, "cost": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "consume": { "oneOf": [ { "type": "boolean" }, { "type": "string", "const": "optional" } ] } }, "required": [ "text" ], "additionalProperties": false }, { "type": [ "boolean", "string" ] } ] }, "r": { "description": "\"Royalty\" components, as introduced in Acquisitions Incorporated", "type": "boolean", "markdownDescription": ""Royalty" components, as introduced in Acquisitions Incorporated" } }, "additionalProperties": false }, "duration": { "$ref": "../util-time.json#/$defs/durationEffect" }, "entries": { "type": "array", "items": { "$ref": "../entry.json" } }, "entriesHigherLevel": { "type": "array", "items": { "$ref": "../entry.json" } }, "source": { "$ref": "../util.json#/$defs/source" }, "page": { "$ref": "../util.json#/$defs/page" }, "additionalSources": { "$ref": "../util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "../util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "../util.json#/$defs/reprintedAs" }, "damageInflict": { "type": "array", "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageResist": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageImmune": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "damageVulnerable": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/dataDamageType" } }, "conditionInflict": { "$ref": "../util.json#/$defs/tagsConditions" }, "conditionImmune": { "$ref": "../util.json#/$defs/tagsConditions" }, "savingThrow": { "$ref": "../util.json#/$defs/tagsSavingThrow" }, "abilityCheck": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "strength", "constitution", "dexterity", "intelligence", "wisdom", "charisma" ] } }, "spellAttack": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "description": "- M: Melee\n- R: Ranged\n- O: Other/Unknown", "enum": [ "M", "R", "O" ], "markdownDescription": "- M: Melee\n- R: Ranged\n- O: Other/Unknown" } }, "areaTags": { "description": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "ST", "MT", "R", "N", "C", "Y", "H", "L", "S", "Q", "W" ] }, "markdownDescription": "By convention, only the effects of the spell cast at its base level are considered when populating these.\n\n- C: Cube\n- H: Hemisphere\n- L: Line\n- MT: Multiple Targets\n- N: Cone\n- Q: Square\n- R: Circle\n- ST: Single Target\n- S: Sphere\n- W: Wall\n- Y: Cylinder" }, "miscTags": { "type": "array", "description": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "AAD", "ADV", "DFT", "FMV", "HL", "LGT", "LGTS", "MAC", "OBJ", "OBS", "PIR", "PRM", "PS", "RO", "SCL", "SCT", "SMN", "SGT", "THP", "TP", "UBA" ] }, "markdownDescription": "- AAD: Additional Attack Damage\n- ADV: Grants Advantage\n- DFT: Difficult Terrain\n- FMV: Forced Movement\n- HL: Healing\n- LGT: Creates Light\n- LGTS: Creates Sunlight\n- MAC: Modifies AC\n- OBJ: Affects Objects\n- OBS: Obscures Vision\n- PIR: Permanent If Repeated\n- PRM: Permanent Effects\n- PS: Plane Shifting\n- RO: Rollable Effects\n- SCL: Scaling Effects\n- SCT: Scaling Targets\n- SMN: Summons Creature\n- SGT: Requires Sight\n- THP: Grants Temporary Hit Points\n- TP: Teleportation\n- UBA: Uses Bonus Action" }, "affectsCreatureType": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "../util.json#/$defs/creatureType" } }, "legacy": { "$ref": "../util.json#/$defs/legacy" }, "scalingLevelDice": { "oneOf": [ { "type": "array", "items": { "$ref": "#/$defs/scalingLevelDiceItem" } }, { "$ref": "#/$defs/scalingLevelDiceItem" } ] }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "groups": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "classes": { "type": "object", "properties": { "fromClassList": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromClassListVariant": { "type": "array", "items": { "$ref": "#/$defs/class" }, "minItems": 1, "uniqueItems": true }, "fromSubclass": { "type": "array", "items": { "type": "object", "properties": { "class": { "$ref": "#/$defs/class" }, "subclass": { "type": "object", "properties": { "name": { "type": "string" }, "shortName": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "subSubclass": { "type": "string" } }, "required": [ "name", "shortName", "source" ], "additionalProperties": false } }, "required": [ "class", "subclass" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true } }, "additionalProperties": false }, "races": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "baseName": { "type": "string" }, "baseSource": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "backgrounds": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "optionalfeatures": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "featureType": { "type": "array", "items": { "$ref": "../util.json#/$defs/dataOptionalfeatureType" }, "uniqueItems": true } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "feats": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ] }, "minItems": 1, "uniqueItems": true }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "../util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "roll20Spell": { "$ref": "roll20.json#/properties/spell" }, "foundrySystem": { "$ref": "../util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "../util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "../util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "../util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "../util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "../entry.json" }, "_foundryMerge": { "$ref": "../util-foundry.json#/$defs/foundryMergeObject" }, "_copy": { "$ref": "../util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] }, "class": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "../util.json#/$defs/source" }, "definedInSource": { "$ref": "../util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "scalingLevelDiceItem": { "type": "object", "properties": { "label": { "type": "string" }, "scaling": { "type": "object", "patternProperties": { "\\d+": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "properties": { "spell": { "type": "array", "items": { "$ref": "#/$defs/spell" }, "minItems": 1, "uniqueItems": true }, "_meta": { "$ref": "../util.json#/$defs/metaBlock" } }, "required": [ "spell" ], "additionalProperties": false } ``` ## schema\brew\tables.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "tables.json", "version": "1.1.12", "type": "object", "$defs": { "tableData": { "type": "object", "properties": { "tables": { "type": "array", "items": { "$ref": "#/$defs/tableData" } }, "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "data": { "description": "A generic object for storing special data for external use-cases. Keys prefixed with \"rd-\" should be added as \"data-\" HTML attributes when rendering to HTML.", "type": "object", "markdownDescription": "A generic object for storing special data for external use-cases. Keys prefixed with "rd-" should be added as "data-" HTML attributes when rendering to HTML." }, "caption": { "type": "string" }, "isStriped": { "type": "boolean" }, "isNameGenerator": { "type": "boolean", "description": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc.", "markdownDescription": "Uses the result rolled to construct a name from multiple columns, such as Prefix, Given, Family, Suffix names etc." }, "style": { "type": "string" }, "colLabels": { "type": "array", "items": { "$ref": "entry.json#/$defs/_entryTableColLabelItem" } }, "colLabelRows": { "type": "array", "items": { "type": "array", "items": { "$ref": "entry.json#/$defs/_entryTableColLabelItem" } }, "minItems": 1 }, "colStyles": { "type": "array", "items": { "type": "string" } }, "rowLabels": { "type": "array", "items": { "type": "string" } }, "rowStyles": { "type": "array", "items": { "type": "string" } }, "rows": { "type": "array", "items": { "anyOf": [ { "type": "array", "items": { "$ref": "entry.json" } }, { "$ref": "entry.json#/$defs/entryTableRow" } ] } }, "footnotes": { "type": "array", "items": { "$ref": "entry.json" } }, "intro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "Primarily for homebrew use." }, "outro": { "description": "Primarily for homebrew use.", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "Primarily for homebrew use." }, "type": { "type": "string", "default": "table", "enum": [ "table", "tableGroup" ] }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "chapter": { "type": "object", "properties": { "name": { "type": "string" }, "ordinal": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "chapter", "appendix", "part", "episode", "level", "section" ] }, "identifier": { "type": [ "integer", "string" ] } }, "additionalProperties": false, "required": [ "type", "identifier" ] }, "index": { "type": "integer" } } }, "parentEntity": { "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "additionalProperties": false, "required": [ "prop", "uid" ] }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" } }, "dependencies": { "colLabels": { "not": { "required": [ "colLabelRows" ] } }, "colLabelRows": { "not": { "required": [ "colLabels" ] } } }, "additionalProperties": false, "if": { "properties": { "type": { "const": "tableGroup" } }, "required": [ "type" ] }, "then": { "required": [ "name", "source", "tables" ] }, "else": { "required": [ "name", "source", "rows" ] } } }, "properties": { "table": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/tableData" } }, "_meta": { "$ref": "util.json#/$defs/metaBlock" } }, "required": [ "table" ], "additionalProperties": false } ``` ## schema\brew\trapshazards.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "trapshazards.json", "version": "1.4.8", "type": "object", "$defs": { "_trapHazardTier": { "type": "integer", "minimum": 1, "maximum": 4 }, "_trapLevel": { "description": "Alternative to \"tier\" which allows for non-standard level ranges.", "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } }, "markdownDescription": "Alternative to "tier" which allows for non-standard level ranges." }, "_trapHazardThreat": { "type": "string", "enum": [ "nuisance", "setback", "moderate", "dangerous", "deadly" ] }, "_trapHazardRating": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "level": { "$ref": "#/$defs/_trapLevel" }, "threat": { "$ref": "#/$defs/_trapHazardThreat" } }, "required": [ "threat" ], "additionalProperties": false }, { "type": "object", "properties": { "tier": { "$ref": "#/$defs/_trapHazardTier" }, "threat": { "$ref": "#/$defs/_trapHazardThreat" } }, "required": [ "threat" ], "additionalProperties": false } ] }, "minItems": 1, "uniqueItems": true }, "_trapTrigger": { "type": "array", "items": { "$ref": "entry.json" }, "minItems": 1 }, "trap": { "oneOf": [ { "description": "Older format, used in DMG.\n\nExtended to support XDMG.", "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "trapHazType": { "type": "string", "description": "- HAUNT: Haunted Trap\n- MAG: Magical Trap\n- MECH: Mechanical Trap\n- TRP: Trap", "enum": [ "MECH", "MAG", "TRP", "HAUNT" ], "markdownDescription": "- HAUNT: Haunted Trap\n- MAG: Magical Trap\n- MECH: Mechanical Trap\n- TRP: Trap" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "trigger": { "$ref": "#/$defs/_trapTrigger" }, "duration": { "$ref": "util-time.json#/$defs/durationEffect" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "rating": { "$ref": "#/$defs/_trapHazardRating" }, "hauntBonus": { "type": "string" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false, "required": [ "name", "trapHazType", "source", "entries" ], "markdownDescription": "Older format, used in DMG.\n\nExtended to support XDMG." }, { "description": "XGE \"Traps Revisited\" Simple/Complex traps", "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "trapHazType": { "type": "string", "enum": [ "SMPL", "CMPX" ] }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "rating": { "$ref": "#/$defs/_trapHazardRating" }, "trigger": { "$ref": "#/$defs/_trapTrigger" }, "initiative": { "oneOf": [ { "type": "integer", "minimum": 1, "maximum": 3 }, { "description": "Custom initiative, for homebrew only.", "type": "string", "markdownDescription": "Custom initiative, for homebrew only." } ] }, "initiativeNote": { "$ref": "entry.json" }, "effect": { "type": "array", "items": { "$ref": "entry.json" } }, "eActive": { "type": "array", "items": { "$ref": "entry.json" } }, "eDynamic": { "type": "array", "items": { "$ref": "entry.json" } }, "eConstant": { "type": "array", "items": { "$ref": "entry.json" } }, "countermeasures": { "type": "array", "items": { "$ref": "entry.json" } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "$ref": "util.json#/$defs/fluffObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "additionalProperties": false, "required": [ "name", "trapHazType", "source", "entries", "trigger", "countermeasures" ], "markdownDescription": "XGE "Traps Revisited" Simple/Complex traps" } ] }, "hazard": { "type": "object", "properties": { "name": { "type": "string" }, "alias": { "$ref": "util.json#/$defs/alias" }, "trapHazType": { "type": "string", "description": "- ENV: Environmental Hazard\n- EST: Eldritch Storm\n- GEN: Generic\n- WTH: Weather\n- WLD: Wilderness Hazard", "markdownDescription": "- ENV: Environmental Hazard\n- EST: Eldritch Storm\n- GEN: Generic\n- WTH: Weather\n- WLD: Wilderness Hazard", "examples": [ "ENV", "EST", "GEN", "WTH", "WLD" ] }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "rating": { "$ref": "#/$defs/_trapHazardRating" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryEffects": { "$ref": "util-foundry.json#/$defs/foundryEffectsArray" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "_foundryMerge": { "$ref": "util-foundry.json#/$defs/foundryMergeObject" } }, "additionalProperties": false, "required": [ "name", "source", "entries" ] } }, "properties": { "trap": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/trap" } }, "hazard": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/hazard" } } }, "additionalProperties": false } ``` ## schema\brew\util-additionalspells.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-additionalspells.json", "version": "1.0.3", "title": "Util: Additional Spells", "$defs": { "_additionalSpellObject": { "type": "object", "patternProperties": { "^\\d+$": { "description": "Spells keyed by character/class level.", "oneOf": [ { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, { "$ref": "#/$defs/_additionalSpellLevelObject" } ], "markdownDescription": "Spells keyed by character/class level." }, "^s\\d+$": { "description": "Spells keyed by spell level, access to which is gated behind the character advancing to a point where they could cast those spells with e.g. a Spellcasting class feature (Mark spells from ERLW races)", "oneOf": [ { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, { "$ref": "#/$defs/_additionalSpellLevelObject" } ], "markdownDescription": "Spells keyed by spell level, access to which is gated behind the character advancing to a point where they could cast those spells with e.g. a Spellcasting class feature (Mark spells from ERLW races)" } }, "properties": { "_": { "description": "Spells gained when gaining a particular feature, regardless of level or caster level", "oneOf": [ { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, { "$ref": "#/$defs/_additionalSpellLevelObject" } ], "markdownDescription": "Spells gained when gaining a particular feature, regardless of level or caster level" } }, "minProperties": 1, "additionalProperties": false }, "_additionalSpellLevelObject": { "type": "object", "properties": { "rest": { "description": "Spells which recharge on short or long rest", "$ref": "#/$defs/_additionalSpellRechargeObject", "markdownDescription": "Spells which recharge on short or long rest" }, "daily": { "description": "Spells which recharge on long rest", "$ref": "#/$defs/_additionalSpellRechargeObject", "markdownDescription": "Spells which recharge on long rest" }, "will": { "description": "At-will spells", "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject", "markdownDescription": "At-will spells" }, "ritual": { "description": "Ritual-only spells", "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject", "markdownDescription": "Ritual-only spells" }, "resource": { "description": "Spells which cost a specific resource to use (such as Ki), but otherwise have no restrictions", "$ref": "#/$defs/_additionalSpellRechargeObject", "markdownDescription": "Spells which cost a specific resource to use (such as Ki), but otherwise have no restrictions" }, "limited": { "description": "Spells which do not recharge, and have a limited number of uses", "$ref": "#/$defs/_additionalSpellRechargeObject", "markdownDescription": "Spells which do not recharge, and have a limited number of uses" }, "_": { "description": "Spells which do not fall into the above categories (i.e. have no specific recharge, and are simply known)", "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject", "markdownDescription": "Spells which do not fall into the above categories (i.e. have no specific recharge, and are simply known)" } }, "additionalProperties": false }, "_additionalSpellRechargeObject": { "type": "object", "properties": { "1": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "2": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "3": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "4": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "5": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "6": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "7": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "8": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "9": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "9e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "8e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "7e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "6e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "5e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "4e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "3e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "2e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "1e": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "pb": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "pbe": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "halfPb": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "halfPbe": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "str": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "dex": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "con": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "int": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "wis": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" }, "cha": { "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject" } }, "additionalProperties": false }, "_additionalSpellArrayOfStringOrFilterObject": { "type": "array", "minItems": 1, "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "all": { "type": "string", "description": "A range of spells to be added, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: \"level=0|class=Wizard\"", "markdownDescription": "A range of spells to be added, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: "level=0|class=Wizard"" } }, "required": [ "all" ], "additionalProperties": false }, { "type": "object", "properties": { "choose": { "type": "string", "description": "A range of spells to be chosen from, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: \"level=0|class=Wizard\"", "markdownDescription": "A range of spells to be chosen from, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: "level=0|class=Wizard"" }, "count": { "type": "integer" } }, "required": [ "choose" ], "additionalProperties": false }, { "type": "object", "properties": { "choose": { "type": "object", "properties": { "from": { "description": "An array of spell UIDs to be chosen from.", "type": "array", "items": { "type": "string" }, "minItems": 2, "uniqueItems": true, "markdownDescription": "An array of spell UIDs to be chosen from." }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "required": [ "choose" ], "additionalProperties": false } ] } }, "additionalSpellsAbility": { "description": "Optionally specify the ability score used for e.g. racial spellcasting", "oneOf": [ { "type": "object", "properties": { "choose": { "type": "array", "items": { "$ref": "util.json#/$defs/abilityScoreAbbreviation" }, "uniqueItems": true } }, "required": [ "choose" ], "additionalProperties": false }, { "description": "\"inherit\" is used for special cases, where the ability score matches a choice the player made when taking the feature", "type": "string", "enum": [ "str", "dex", "con", "int", "wis", "cha", "inherit" ], "markdownDescription": ""inherit" is used for special cases, where the ability score matches a choice the player made when taking the feature" } ], "markdownDescription": "Optionally specify the ability score used for e.g. racial spellcasting" }, "additionalSpellsArray": { "description": "A collection of additional spells which a feature grants.\n\nThis array enables import functionality for VTTs, and should be used in addition to \"classSpells\"/\"subclassSpells\"/\"subSubclassSpells\" blocks which enable references on the site.", "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "description": "Optional display name for the group", "type": "string", "markdownDescription": "Optional display name for the group" }, "ability": { "$ref": "#/$defs/additionalSpellsAbility" }, "resourceName": { "description": "Optional resource name for resource-cast spells in this group", "type": "string", "markdownDescription": "Optional resource name for resource-cast spells in this group" }, "innate": { "description": "Spells which can be innately cast, without expending normal spell resources", "$ref": "#/$defs/_additionalSpellObject", "markdownDescription": "Spells which can be innately cast, without expending normal spell resources" }, "known": { "description": "Spells which are always known", "$ref": "#/$defs/_additionalSpellObject", "markdownDescription": "Spells which are always known" }, "prepared": { "description": "Spells which are always prepared", "$ref": "#/$defs/_additionalSpellObject", "markdownDescription": "Spells which are always prepared" }, "expanded": { "description": "Expansions to a class' default spell list, from which spells can be chosen (e.g. Warlock Patron spells)", "$ref": "#/$defs/_additionalSpellObject", "markdownDescription": "Expansions to a class' default spell list, from which spells can be chosen (e.g. Warlock Patron spells)" } }, "additionalProperties": false, "minProperties": 1 }, "markdownDescription": "A collection of additional spells which a feature grants.\n\nThis array enables import functionality for VTTs, and should be used in addition to "classSpells"/"subclassSpells"/"subSubclassSpells" blocks which enable references on the site." } } } ``` ## schema\brew\util-copy.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-copy.json", "title": "Util: Copy", "version": "1.0.9", "$defs": { "_mod_renameArr_rename": { "type": "object", "properties": { "rename": { "type": "string" }, "with": { "type": "string" } }, "required": [ "rename", "with" ], "additionalProperties": false }, "_mod_removeArr_name": { "type": "string" }, "_mod_removeArr_base": { "properties": { "mode": { "const": "removeArr" }, "force": { "const": true } }, "additionalProperties": false }, "_mod_senseObject": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "blindsight", "darkvision", "tremorsense", "truesight" ] }, "range": { "type": "integer", "minimum": 0 } }, "required": [ "type", "range" ], "additionalProperties": false }, "_mod_additionalSpellReplacementObject": { "type": "object", "patternProperties": { "^(0|[1-9]e?)$": { "type": "array", "items": { "type": "object", "properties": { "replace": { "type": "string" }, "with": { "type": "string" } }, "required": [ "replace", "with" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true } }, "minProperties": 1, "additionalProperties": false }, "_mod_additionalSpellAddRemoveObject": { "type": "object", "patternProperties": { "^(0|[1-9]e?)$": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "minProperties": 1, "additionalProperties": false }, "copyModifier": { "anyOf": [ { "type": "object", "properties": { "mode": { "const": "replaceTxt" }, "replace": { "type": "string" }, "with": { "type": "string" }, "flags": { "type": "string" }, "props": { "description": "If unspecified, defaults to `[null, \"entries\", \"headerEntries\", \"footerEntries\"]`. To apply to _any_ string, including those outside of sub-properties (for instance, when trying to replace text in an array of plain strings), include `null` as one of the props (i.e. `\"props\": [null]`)", "type": "array", "items": { "type": [ "string", "null" ] }, "markdownDescription": "If unspecified, defaults to [null, "entries", "headerEntries", "footerEntries"]. To apply to _any_ string, including those outside of sub-properties (for instance, when trying to replace text in an array of plain strings), include null as one of the props (i.e. "props": [null])" } }, "required": [ "mode", "replace", "with" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "replaceName" }, "replace": { "type": "string" }, "with": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "mode", "replace", "with" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "appendStr" }, "str": { "type": "string" }, "joiner": { "type": "string" } }, "required": [ "mode", "str" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "prependArr" }, "items": { "anyOf": [ { "type": "string" }, { "type": "object" }, { "type": "array" } ] } }, "required": [ "mode", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "appendArr" }, "items": { "anyOf": [ { "type": "string" }, { "type": "object" }, { "type": "array" } ] } }, "required": [ "mode", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "appendIfNotExistsArr" }, "items": { "anyOf": [ { "type": "string" }, { "type": "object" }, { "type": "array" } ] } }, "required": [ "mode", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "replaceArr" }, "replace": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "index": { "type": "integer" } }, "required": [ "index" ], "additionalProperties": false }, { "type": "object", "properties": { "regex": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "regex" ], "additionalProperties": false } ] }, "items": { "anyOf": [ { "type": "string" }, { "type": "object" }, { "type": "array" } ] } }, "required": [ "mode", "replace", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "replaceOrAppendArr" }, "replace": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "index": { "type": "integer" } }, "required": [ "index" ], "additionalProperties": false }, { "type": "object", "properties": { "regex": { "type": "string" }, "flags": { "type": "string" } }, "required": [ "regex" ], "additionalProperties": false } ] }, "items": { "anyOf": [ { "type": "object" }, { "type": "array" } ] } }, "required": [ "mode", "replace", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "insertArr" }, "index": { "type": "integer" }, "items": { "anyOf": [ { "type": "object" }, { "type": "string" }, { "type": "array" } ] } }, "required": [ "mode", "index", "items" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "removeArr" }, "force": { "const": true }, "names": { "anyOf": [ { "$ref": "#/$defs/_mod_removeArr_name" }, { "type": "array", "items": { "$ref": "#/$defs/_mod_removeArr_name" }, "minItems": 1, "uniqueItems": true } ] } }, "additionalProperties": false, "required": [ "mode", "names" ] }, { "type": "object", "properties": { "mode": { "const": "removeArr" }, "force": { "const": true }, "items": { "anyOf": [ { "type": "string" }, { "type": "array", "minItems": 1, "uniqueItems": true } ] } }, "additionalProperties": false, "required": [ "mode", "items" ] }, { "type": "object", "properties": { "mode": { "const": "renameArr" }, "renames": { "anyOf": [ { "$ref": "#/$defs/_mod_renameArr_rename" }, { "type": "array", "items": { "$ref": "#/$defs/_mod_renameArr_rename" }, "minItems": 1, "uniqueItems": true } ] } }, "required": [ "mode", "renames" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "setProp" }, "prop": { "type": "string" }, "value": {} }, "required": [ "mode", "value" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "calculateProp" }, "prop": { "type": "string" }, "formula": { "type": "string" } }, "required": [ "mode", "prop", "formula" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "replaceSpells" }, "spells": { "$ref": "#/$defs/_mod_additionalSpellReplacementObject" }, "daily": { "$ref": "#/$defs/_mod_additionalSpellReplacementObject" } }, "required": [ "mode" ], "minProperties": 2, "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "removeSpells" }, "spells": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" }, "daily": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" } }, "required": [ "mode" ], "minProperties": 2, "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addSpells" }, "name": { "type": "string" }, "spells": { "type": "object", "patternProperties": { "^(0|[1-9]e?)$": { "type": "object", "properties": { "spells": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true } }, "required": [ "spells" ], "additionalProperties": false } }, "additionalProperties": false }, "will": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "daily": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" }, "weekly": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" }, "monthly": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" }, "yearly": { "$ref": "#/$defs/_mod_additionalSpellAddRemoveObject" } }, "required": [ "mode" ], "minProperties": 2, "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addSkills" }, "skills": { "type": "object", "propertyNames": { "$ref": "util.json#/$defs/skillNameLower" }, "patternProperties": { "": { "$ref": "util.json#/$defs/proficiencyLevel" } }, "minProperties": 1, "additionalProperties": false } }, "required": [ "mode", "skills" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addSaves" }, "saves": { "type": "object", "propertyNames": { "type": "string", "enum": [ "str", "dex", "con", "int", "wis", "cha" ] }, "patternProperties": { "": { "$ref": "util.json#/$defs/proficiencyLevel" } }, "minProperties": 1, "additionalProperties": false } }, "required": [ "mode", "saves" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addAllSkills" }, "skills": { "$ref": "util.json#/$defs/proficiencyLevel" } }, "required": [ "mode", "skills" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addAllSaves" }, "saves": { "$ref": "util.json#/$defs/proficiencyLevel" } }, "required": [ "mode", "saves" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "addSenses" }, "senses": { "anyOf": [ { "$ref": "#/$defs/_mod_senseObject" }, { "type": "array", "items": { "$ref": "#/$defs/_mod_senseObject" }, "minItems": 1, "uniqueItems": true } ] } }, "required": [ "mode", "senses" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "scalarAddProp" }, "prop": { "type": "string" }, "scalar": { "type": "number" } }, "required": [ "mode", "scalar", "prop" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "scalarMultProp" }, "prop": { "type": "string" }, "scalar": { "type": "number" }, "floor": { "const": true } }, "required": [ "mode", "scalar", "prop" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "scalarAddHit" }, "scalar": { "type": "number" } }, "required": [ "mode", "scalar" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "scalarAddDc" }, "scalar": { "type": "number" } }, "required": [ "mode", "scalar" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "maxSize" }, "max": { "$ref": "util.json#/$defs/size" } }, "required": [ "mode", "max" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "scalarMultXp" }, "scalar": { "type": "number" }, "floor": { "const": true } }, "required": [ "mode", "scalar" ], "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "prefixSuffixStringProp" }, "prop": { "type": "string" }, "prefix": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "mode", "prop" ], "minProperties": 3, "additionalProperties": false }, { "type": "object", "properties": { "mode": { "const": "prefixSuffixStringProp" }, "prefix": { "type": "string" }, "suffix": { "type": "string" } }, "required": [ "mode" ], "minProperties": 2, "additionalProperties": false } ] }, "copyBlock_copy_base": { "type": "object", "properties": { "_mod": { "$ref": "#/$defs/_modObject" }, "_templates": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "_preserve": { "type": "object", "patternProperties": { ".*": { "const": true } } } }, "additionalProperties": false }, "copyBlock_copy_generic": { "type": "object", "properties": { "_mod": { "$ref": "#/$defs/_modObject" }, "_templates": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false }, "minItems": 1, "uniqueItems": true }, "_preserve": { "type": "object", "patternProperties": { ".*": { "const": true } } }, "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "pantheon": { "description": "Used in deity data", "type": "string", "markdownDescription": "Used in deity data" }, "shortName": { "description": "Used in subclass data", "type": "string", "markdownDescription": "Used in subclass data" }, "className": { "description": "Used in subclass data", "type": "string", "markdownDescription": "Used in subclass data" }, "classSource": { "description": "Used in subclass data", "$ref": "util.json#/$defs/source", "markdownDescription": "Used in subclass data" }, "subclassSource": { "description": "Used in subclass feature data", "$ref": "util.json#/$defs/source", "markdownDescription": "Used in subclass feature data" }, "subclassShortName": { "description": "Used in subclass feature data", "type": "string", "markdownDescription": "Used in subclass feature data" }, "level": { "description": "Used in subclass feature data", "type": "integer", "markdownDescription": "Used in subclass feature data" }, "raceName": { "description": "Used in race feature data", "type": "string", "markdownDescription": "Used in race feature data" }, "raceSource": { "description": "Used in race feature data", "$ref": "util.json#/$defs/source", "markdownDescription": "Used in race feature data" } }, "additionalProperties": false, "required": [ "name", "source" ] }, "copyBlockGeneric": { "type": "object", "properties": { "_copy": { "$ref": "#/$defs/copyBlock_copy_generic" } }, "required": [ "_copy" ] }, "version": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "_mod": { "$ref": "#/$defs/_modObject" }, "_preserve": { "description": "Note that, by default, all properties are preserved for a version. To avoid preserving properties, pass an empty object `{}`.", "$ref": "#/$defs/_preserveObject", "markdownDescription": "Note that, by default, all properties are preserved for a version. To avoid preserving properties, pass an empty object {}." } }, "required": [ "name", "source" ] }, { "type": "object", "properties": { "_abstract": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "_mod": { "$ref": "#/$defs/_modObject" }, "_preserve": { "description": "Note that, by default, all properties are preserved for a version. To avoid preserving properties, pass an empty object `{}`.", "$ref": "#/$defs/_preserveObject", "markdownDescription": "Note that, by default, all properties are preserved for a version. To avoid preserving properties, pass an empty object {}." } }, "required": [ "name", "source", "_mod" ] }, "_implementations": { "type": "array", "items": { "type": "object", "properties": { "_variables": { "type": "object" } }, "required": [ "_variables" ] } } }, "required": [ "_abstract", "_implementations" ], "additionalProperties": false } ] }, "versionsArray": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/version" } }, "_modObject": { "type": "object", "patternProperties": { ".*": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/copyModifier" }, { "type": "array", "items": { "$ref": "#/$defs/copyModifier" } } ] } } }, "_preserveObject": { "type": "object", "patternProperties": { ".*": { "const": true } } } } } ``` ## schema\brew\util-edition.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-edition.json", "version": "1.0.1", "title": "Util: Edition", "$defs": { "edition": { "description": "A context-sensitive behaviour hint. Generally, entities marked with `\"edition\": \"one\"` will not be modified (as they are assumed to be up-to-date) prior to display/use, and entities lacking an `\"edition\"` or using `\"edition\": \"classic\"` may be modified to better suit modern rules. For example:\n- Classes/subclasses: an edition mismatch between class and subclass will prompt the renderer to add a note that the subclass is from a different game edition, and that feature levels may have to be adjusted accordingly (notably, when rendering synthetic subclass copies)\n- Plutonium, when using the \"Modern (2024)\" rules version: non-\"one\" species will be stripped of their ability scores; non-\"one\" backgrounds will gain extra ability scores; etc.", "type": "string", "enum": [ "classic", "one" ], "markdownDescription": "A context-sensitive behaviour hint. Generally, entities marked with "edition": "one" will not be modified (as they are assumed to be up-to-date) prior to display/use, and entities lacking an "edition" or using "edition": "classic" may be modified to better suit modern rules. For example:\n- Classes/subclasses: an edition mismatch between class and subclass will prompt the renderer to add a note that the subclass is from a different game edition, and that feature levels may have to be adjusted accordingly (notably, when rendering synthetic subclass copies)\n- Plutonium, when using the "Modern (2024)" rules version: non-"one" species will be stripped of their ability scores; non-"one" backgrounds will gain extra ability scores; etc." } } } ``` ## schema\brew\util-foundry.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-foundry.json", "title": "Util: Foundry", "version": "1.1.6", "$defs": { "entryDataObject": { "description": "Additional \"5etools-type\" data to be stored on the entry.", "type": "object", "properties": { "languageProficiencies": { "$ref": "util.json#/$defs/languageProficiencies" }, "skillProficiencies": { "$ref": "util.json#/$defs/skillProficiencies" }, "weaponProficiencies": { "$ref": "util.json#/$defs/weaponProficiencies" }, "armorProficiencies": { "$ref": "util.json#/$defs/armorProficiencies" }, "toolProficiencies": { "$ref": "util.json#/$defs/toolProficiencies" }, "savingThrowProficiencies": { "$ref": "util.json#/$defs/savingThrowProficiencies" }, "skillToolLanguageProficiencies": { "$ref": "util.json#/$defs/skillToolLanguageProficiencies" }, "expertise": { "$ref": "util.json#/$defs/expertise" }, "resist": { "$ref": "util.json#/$defs/damageResistArrayPlayer" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArrayPlayer" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArrayPlayer" }, "resources": { "$ref": "util.json#/$defs/resourcesArray" }, "senses": { "$ref": "util.json#/$defs/sensesArray" }, "additionalSpells": { "$ref": "util-additionalspells.json#/$defs/additionalSpellsArray" } }, "additionalProperties": false, "markdownDescription": "Additional "5etools-type" data to be stored on the entry." }, "foundryId": { "type": "string", "minLength": 16, "maxLength": 16, "pattern": "^[A-Za-z0-9]+$" }, "foundryIdShort": { "type": "string", "minLength": 1, "maxLength": 16, "pattern": "^[A-Za-z0-9]+$" }, "foundryTokenScale": { "type": "number", "minimum": 0.2, "maximum": 3, "multipleOf": 0.1 }, "foundryTokenSubjectScale": { "type": "number", "minimum": 0.8, "maximum": 3, "multipleOf": 0.1 }, "foundrySystemObject": { "type": "object" }, "foundryFlagsObject": { "type": "object" }, "foundryAdvancementObject": { "type": "object" }, "foundryAdvancementsArray": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/foundryAdvancementObject" }, "uniqueItems": true }, "foundryPrototypeTokenObject": { "type": "object" }, "foundryImg": { "type": "string" }, "_foundrySkill": { "type": "string", "enum": [ "acr", "ani", "arc", "ath", "dec", "his", "ins", "itm", "inv", "med", "nat", "prc", "prf", "per", "rel", "slt", "ste", "sur" ] }, "_foundryTool": { "type": "string", "enum": [ "alchemist", "bagpipes", "brewer", "calligrapher", "card", "carpenter", "cartographer", "chess", "cobbler", "cook", "dice", "disg", "drum", "dulcimer", "flute", "forg", "glassblower", "herb", "horn", "jeweler", "leatherworker", "lute", "lyre", "mason", "navg", "painter", "panflute", "pois", "potter", "shawm", "smith", "thief", "tinker", "viol", "weaver", "woodcarver" ] }, "_foundryIdRef": { "type": "object", "properties": { "foundryId": { "$ref": "#/$defs/foundryIdShort" } }, "required": [ "foundryId" ] }, "foundrySubEntitiesObject": { "description": "A 5etools-data-like object of additional entities to import.", "type": "object", "properties": { "item": { "$ref": "items.json#/$defs/subEntityItemArray" } }, "minProperties": 1, "markdownDescription": "A 5etools-data-like object of additional entities to import." }, "_foundryActivityProfileBase": { "type": "object", "properties": { "name": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "movement": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "sizes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "count": { "type": [ "integer", "string" ] }, "level": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } } } } }, "_foundryActivityProfile": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "movement": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "sizes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "count": { "type": [ "integer", "string" ] }, "level": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } } } }, "additionalProperties": false, "unevaluatedProperties": { "not": { "anyOf": [ { "required": [ "cr" ] }, { "required": [ "uuid" ] } ] } } }, { "type": "object", "properties": { "name": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "movement": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "sizes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "count": { "type": [ "integer", "string" ] }, "level": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } } }, "cr": { "type": "string" } }, "additionalProperties": false, "required": [ "cr" ] }, { "type": "object", "properties": { "name": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "movement": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "sizes": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "count": { "type": [ "integer", "string" ] }, "level": { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } } }, "uuid": { "type": "string", "pattern": "^@creature\\[.*\\]$" } }, "additionalProperties": false, "required": [ "uuid" ] } ] }, "_foundryActivityProfiles": { "type": "array", "items": { "$ref": "#/$defs/_foundryActivityProfile" } }, "_foundryActivityObject_base": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false }, "required": [ "type" ] }, "_foundryActivityObject_attack": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "attack" } }, "required": [ "type" ] }, "_foundryActivityObject_damage": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "damage" } }, "required": [ "type" ] }, "_foundryActivityObject_save": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "save" } }, "required": [ "type" ] }, "_foundryActivityObject_check": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "check" }, "check": { "type": "object", "properties": { "associated": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/_foundrySkill" }, { "$ref": "#/$defs/_foundryTool" } ] } }, "ability": { "$ref": "util.json#/$defs/abilityScoreAbbreviation" } } } }, "required": [ "type" ] }, "_foundryActivityObject_heal": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "heal" } }, "required": [ "type" ] }, "_foundryActivityObject_cast": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "cast" }, "spell": { "type": "object", "properties": { "uuid": { "type": "string" } } } }, "required": [ "type" ] }, "_foundryActivityObject_enchant": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef", "type": "object", "properties": { "foundryId": { "$ref": "#/$defs/foundryIdShort" }, "riders": { "type": "object", "properties": { "activity": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "effect": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } } }, "minProperties": 1 } }, "required": [ "foundryId" ] } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "enchant" }, "enchant": { "type": "object", "properties": { "self": { "const": true } } } }, "required": [ "type" ] }, "_foundryActivityObject_summon": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "summon" }, "profiles": { "$ref": "#/$defs/_foundryActivityProfiles" } }, "required": [ "type" ] }, "_foundryActivityObject_transform": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "transform" }, "profiles": { "$ref": "#/$defs/_foundryActivityProfiles" }, "transform": { "type": "object", "properties": { "customize": { "const": true } } } }, "required": [ "type" ] }, "_foundryActivityObject_utility": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking a \"rider\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking a "rider"." }, "img": { "type": "string" }, "description": { "type": "object" }, "descriptionEntries": { "description": "If supplied, will be used to populate \"description.chatFlavor\".", "type": "array", "items": { "$ref": "entry.json" }, "markdownDescription": "If supplied, will be used to populate "description.chatFlavor"." }, "consumption": { "type": "object", "properties": { "targets": { "type": "array", "items": { "type": "object", "properties": { "target": { "oneOf": [ { "type": "string" }, { "description": "A link to an importable entity", "type": "object", "properties": { "prop": { "type": "string" }, "uid": { "type": "string" } }, "required": [ "prop", "uid" ], "additionalProperties": false, "markdownDescription": "A link to an importable entity" }, { "description": "A link to a 5etools-style resource", "type": "object", "properties": { "consumes": { "type": "object", "properties": { "name": { "$ref": "util.json#/$defs/consumesName" } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "consumes" ], "additionalProperties": false, "markdownDescription": "A link to a 5etools-style resource" } ] } } } } } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/_foundryIdRef" } }, "_id": false, "sort": false, "template": false, "affects": false, "type": { "const": "utility" } }, "required": [ "type" ] }, "foundryActivityObject": { "anyOf": [ { "$ref": "#/$defs/_foundryActivityObject_attack" }, { "$ref": "#/$defs/_foundryActivityObject_damage" }, { "$ref": "#/$defs/_foundryActivityObject_save" }, { "$ref": "#/$defs/_foundryActivityObject_check" }, { "$ref": "#/$defs/_foundryActivityObject_heal" }, { "$ref": "#/$defs/_foundryActivityObject_cast" }, { "$ref": "#/$defs/_foundryActivityObject_summon" }, { "$ref": "#/$defs/_foundryActivityObject_enchant" }, { "$ref": "#/$defs/_foundryActivityObject_transform" }, { "$ref": "#/$defs/_foundryActivityObject_utility" } ] }, "_foundryEffectObject": { "type": "object", "properties": { "foundryId": { "description": "Use only when required. For example, when linking an \"enchantmentRiderParent\".", "$ref": "#/$defs/foundryIdShort", "markdownDescription": "Use only when required. For example, when linking an "enchantmentRiderParent"." }, "name": { "type": "string" }, "img": { "type": "string" }, "description": { "type": "string" }, "descriptionEntries": { "type": "array", "items": { "$ref": "entry.json" } }, "changes": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" }, "mode": { "type": [ "string", "integer" ] }, "value": true, "priority": { "type": [ "string", "integer" ] } }, "required": [ "key", "mode", "value" ], "additionalProperties": false } }, "statuses": { "description": "Dumped via e.g. `copy(Object.keys(CONFIG.DND5E.conditionTypes).sort())`", "type": "array", "items": { "type": "string", "enum": [ "bleeding", "blinded", "burning", "charmed", "cursed", "deafened", "dehydration", "diseased", "exhaustion", "falling", "frightened", "grappled", "incapacitated", "invisible", "malnutrition", "paralyzed", "petrified", "poisoned", "prone", "restrained", "silenced", "stunned", "suffocation", "surprised", "transformed", "unconscious", "coverHalf", "coverThreeQuarters", "dead", "dodging", "ethereal", "hiding", "marked", "stable", "flying" ] }, "markdownDescription": "Dumped via e.g. copy(Object.keys(CONFIG.DND5E.conditionTypes).sort())" }, "flags": { "type": "object" }, "duration": { "type": "object" }, "disabled": { "const": true }, "transfer": { "const": true }, "enchantmentLevelMin": { "type": "number", "minimum": 0, "maximum": 20 }, "enchantmentLevelMax": { "type": "number", "minimum": 0, "maximum": 20 }, "enchantmentRiderParent": { "$ref": "#/$defs/foundryIdShort" }, "type": { "type": "string", "enum": [ "enchantment" ] } }, "additionalProperties": false }, "foundryEffectObject": { "anyOf": [ { "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "changes" ] } ] }, { "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "statuses" ] } ] }, { "description": "An effect with no functional changes, but a name. Should only be used for effects which cannot be otherwise automated.", "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "name" ] } ], "markdownDescription": "An effect with no functional changes, but a name. Should only be used for effects which cannot be otherwise automated." }, { "description": "An effect with no functional changes, but a duration. Should only be used for effects which cannot be otherwise automated.", "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "duration" ] } ], "markdownDescription": "An effect with no functional changes, but a duration. Should only be used for effects which cannot be otherwise automated." }, { "description": "An effect with no functional changes, but descriptive text. Should only be used for effects which cannot be otherwise automated.", "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "description" ] } ], "markdownDescription": "An effect with no functional changes, but descriptive text. Should only be used for effects which cannot be otherwise automated." }, { "description": "An effect with no functional changes, but descriptive text. Should only be used for effects which cannot be otherwise automated.", "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "required": [ "descriptionEntries" ] } ], "markdownDescription": "An effect with no functional changes, but descriptive text. Should only be used for effects which cannot be otherwise automated." }, { "description": "An effect with no functional changes, but an enchantment link.", "allOf": [ { "$ref": "#/$defs/_foundryEffectObject" }, { "type": "object", "properties": { "type": { "const": "enchantment" } }, "required": [ "foundryId", "type" ] } ], "markdownDescription": "An effect with no functional changes, but an enchantment link." } ] }, "foundryActivitiesArray": { "type": "array", "items": { "$ref": "#/$defs/foundryActivityObject" }, "uniqueItems": true }, "foundryEffectsArray": { "type": "array", "items": { "$ref": "#/$defs/foundryEffectObject" }, "minItems": 1, "uniqueItems": true }, "foundrySideDataGenericObject": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/foundryEffectObject" } }, "flags": { "$ref": "#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "#/$defs/foundryMergeObject" } }, "required": [ "name", "source" ], "additionalProperties": false }, "foundrySideDataGenericArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/foundrySideDataGenericObject" } }, "foundrySideDataGenericFeatureObject": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/foundryEffectObject" } }, "flags": { "$ref": "#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "#/$defs/foundryMergeObject" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "isIgnored": { "const": true }, "ignoreSrdActivities": { "const": true }, "ignoreSrdEffects": { "const": true }, "subEntities": { "$ref": "#/$defs/foundrySubEntitiesObject" } }, "required": [ "name", "source" ], "additionalProperties": false }, "foundrySideDataGenericFeatureArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/foundrySideDataGenericFeatureObject" } }, "foundrySideDataGenericActorObject": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "system": { "$ref": "#/$defs/foundrySystemObject" }, "activities": { "type": "array", "items": { "$ref": "#/$defs/foundryActivityObject" } }, "effects": { "type": "array", "items": { "$ref": "#/$defs/foundryEffectObject" } }, "flags": { "$ref": "#/$defs/foundryFlagsObject" }, "advice": { "$ref": "entry.json" }, "img": { "type": "string" }, "advancement": { "$ref": "util-foundry.json#/$defs/foundryAdvancementsArray" }, "migrationVersion": { "type": "integer" }, "_merge": { "$ref": "#/$defs/foundryMergeObject" }, "prototypeToken": { "$ref": "#/$defs/foundryPrototypeTokenObject" } }, "required": [ "name", "source" ], "additionalProperties": false }, "foundrySideDataGenericActorArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/foundrySideDataGenericActorObject" } }, "foundryMergeObject": { "description": "If our \"X\" (e.g. \"system\") should be merged with any base \"X\", rather than overwriting.", "type": "object", "properties": { "system": { "const": true }, "chooseSystem": { "const": true }, "effects": { "const": true }, "flags": { "const": true }, "chooseFlags": { "const": true }, "activities": { "const": true } }, "minProperties": 1, "markdownDescription": "If our "X" (e.g. "system") should be merged with any base "X", rather than overwriting." } } } ``` ## schema\brew\util-time.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-time.json", "version": "1.0.5", "title": "Util: Time", "$defs": { "time": { "type": "object", "properties": { "number": { "type": "integer" }, "unit": { "type": "string", "examples": [ "action", "bonus", "reaction", "round", "minute", "hour", "special" ] }, "condition": { "type": "string" }, "note": { "type": "string" } }, "required": [ "unit" ], "additionalProperties": false }, "timeMinutes": { "oneOf": [ { "type": "integer" }, { "type": "object", "properties": { "min": { "type": "integer" }, "max": { "type": "integer" } }, "required": [ "min", "max" ], "additionalProperties": false } ] }, "_durationEffectItem": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "instant", "timed", "permanent", "special" ] }, "duration": { "type": "object", "properties": { "type": { "type": "string", "examples": [ "turn", "round", "minute", "hour", "day", "week", "month", "year" ] }, "amount": { "type": "integer" }, "upTo": { "type": "boolean" } }, "required": [ "type" ], "additionalProperties": false }, "concentration": { "type": "boolean" }, "ends": { "type": "array", "items": { "type": "string", "description": "The examples given are short forms that are automatically expanded to \"discharged\", \"dispelled\" & \"triggered\".\n\nHomebrew files should state custom end conditions in full.", "markdownDescription": "The examples given are short forms that are automatically expanded to "discharged", "dispelled" & "triggered".\n\nHomebrew files should state custom end conditions in full.", "examples": [ "dispel", "trigger", "discharge" ] } }, "condition": { "type": "string" } }, "required": [ "type" ], "additionalProperties": false }, "durationEffect": { "type": "array", "items": { "$ref": "#/$defs/_durationEffectItem" }, "minItems": 1, "uniqueItems": true } } } ``` ## schema\brew\util-token.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util-token.json", "version": "1.0.3", "title": "Util: Token", "$defs": { "tokenUrl": { "deprecated": true, "description": "A full token URL for the entity. Prefer \"tokenHref\" instead, or \"token\" for internal use.", "$ref": "util.json#/$defs/url", "not": { "type": "string", "pattern": "^https?://(5e\\.tools|5etools-mirror-\\d+\\.github\\.io)/" }, "markdownDescription": "A full token URL for the entity. Prefer "tokenHref" instead, or "token" for internal use." }, "token": { "description": "A name/source pair used to construct a token URL for the entity. For example `\"name\": \"Goblin\", \"source\": \"MM\"` for a creature token would refer to the MM Goblin's token.", "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" } }, "required": [ "name", "source" ], "additionalProperties": false, "markdownDescription": "A name/source pair used to construct a token URL for the entity. For example "name": "Goblin", "source": "MM" for a creature token would refer to the MM Goblin's token." }, "tokenHref": { "$ref": "entry.json#/$defs/mediaHref" }, "_altArtTokenTags": { "type": "array", "items": { "type": "string", "enum": [ "topDown" ] }, "uniqueItems": true, "minItems": 1 }, "_altArtItemSite": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "tokenTags": { "$ref": "#/$defs/_altArtTokenTags" } }, "required": [ "name", "source" ], "additionalProperties": false }, "_altArtItemHomebrewTokenUrl": { "deprecated": true, "type": "object", "properties": { "tokenUrl": { "type": "string" }, "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "tokenTags": { "$ref": "#/$defs/_altArtTokenTags" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" } }, "required": [ "tokenUrl" ], "additionalProperties": false }, "_altArtItemHomebrewToken": { "type": "object", "properties": { "token": { "$ref": "#/$defs/token" }, "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "tokenTags": { "$ref": "#/$defs/_altArtTokenTags" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" } }, "required": [ "token" ], "additionalProperties": false }, "_altArtItemHomebrewTokenHref": { "type": "object", "properties": { "tokenHref": { "$ref": "#/$defs/tokenHref" }, "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "tokenTags": { "$ref": "#/$defs/_altArtTokenTags" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" } }, "required": [ "tokenHref" ], "additionalProperties": false }, "_altArtItem": { "oneOf": [ { "$ref": "#/$defs/_altArtItemSite" }, { "$ref": "#/$defs/_altArtItemHomebrewTokenUrl" }, { "$ref": "#/$defs/_altArtItemHomebrewToken" }, { "$ref": "#/$defs/_altArtItemHomebrewTokenHref" } ] }, "altArt": { "type": "array", "items": { "$ref": "#/$defs/_altArtItem" }, "minItems": 1, "uniqueItems": true } } } ``` ## schema\brew\util.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "util.json", "title": "Util", "description": "Utility definitions to be used in other schemas.", "version": "1.17.37", "$defs": { "metaDependenciesArray": { "type": "array", "items": { "type": "string" }, "minItems": 1, "uniqueItems": true }, "metaBlock": { "type": "object", "properties": { "dependencies": { "type": "object", "patternProperties": { "^[a-zA-Z]+$": { "$ref": "#/$defs/metaDependenciesArray" } } }, "otherSources": { "type": "object", "properties": { "monster": { "description": "Keys are other sources to be loaded; values are `otherSources` sources from that source to search for.", "type": "object", "markdownDescription": "Keys are other sources to be loaded; values are otherSources sources from that source to search for." } } } } }, "url": { "type": "string", "description": "\"uri-reference\" is unsuitable for brew, as it requires URL-encoding \"'\" (see: https://www.ietf.org/rfc/rfc3986.txt)", "markdownDescription": ""uri-reference" is unsuitable for brew, as it requires URL-encoding "'" (see: https://www.ietf.org/rfc/rfc3986.txt)", "minLength": 3 }, "_sourceString": { "type": "string", "description": "An identifying string, as seen in the JSON in \"source\" fields.", "pattern": "^([-a-zA-Z0-9&+!]{1,2}|[-a-zA-Z0-9&+!][-a-zA-Z0-9&+! ]+[-a-zA-Z0-9&+!])$", "markdownDescription": "An identifying string, as seen in the JSON in "source" fields." }, "source": { "anyOf": [ { "$ref": "#/$defs/_sourceString" }, { "$ref": "sources-homebrew-legacy.json#/$defs/sourcesColon" } ] }, "corpusId": { "description": "An ID that will be used to refer to this corpus (adventure/book) in tags.", "anyOf": [ { "$ref": "#/$defs/_sourceString" }, { "$ref": "sources-homebrew-legacy.json#/$defs/sourcesColon" } ], "markdownDescription": "An ID that will be used to refer to this corpus (adventure/book) in tags." }, "sourceJson": { "anyOf": [ { "type": "string", "description": "An identifying string, as seen in the JSON in \"source\" fields.", "pattern": "^([-a-zA-Z0-9&+!]{1,2}|[-a-zA-Z0-9&+!][-a-zA-Z0-9&+! ]+[-a-zA-Z0-9&+!])$", "markdownDescription": "An identifying string, as seen in the JSON in "source" fields.", "minLength": 6, "not": { "anyOf": [ { "type": "string", "pattern": "^(?:UA|XUA)" }, { "$ref": "sources-5etools.json#/$defs/sources" } ] } }, { "$ref": "sources-homebrew-legacy.json#/$defs/sourcesShort" }, { "$ref": "sources-homebrew-legacy.json#/$defs/sourcesColon" } ] }, "page": { "oneOf": [ { "type": "string", "not": { "pattern": "^\\d+$" } }, { "type": "integer" } ] }, "otherSources": { "type": "array", "items": { "type": "object", "properties": { "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "#/$defs/page" } }, "required": [ "source" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "additionalSources": { "type": "array", "items": { "type": "object", "properties": { "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "#/$defs/page" } }, "required": [ "source" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "alias": { "type": "array", "items": { "type": "string" } }, "group": { "description": "A group name, indexed by page search. E.g. searching \"Lycanthrope\" would otherwise fail to find anything.\n\nOnly works on a given page, and not in Omnisearch.", "type": [ "null", "array" ], "items": { "type": "string" }, "markdownDescription": "A group name, indexed by page search. E.g. searching "Lycanthrope" would otherwise fail to find anything.\n\nOnly works on a given page, and not in Omnisearch." }, "reprintedAs": { "type": "array", "items": { "oneOf": [ { "description": "A UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "A UID, e.g. "longsword|phb"" }, { "type": "object", "properties": { "uid": { "description": "A UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "A UID, e.g. "longsword|phb"" }, "tag": { "description": "A tag used in the renderer, e.g. \"creature\"", "type": "string", "markdownDescription": "A tag used in the renderer, e.g. "creature"" }, "edition": { "$ref": "util-edition.json#/$defs/edition" } }, "additionalProperties": false, "required": [ "uid" ], "minProperties": 2 } ] }, "uniqueItems": true, "minItems": 1 }, "isReprinted": { "description": "Prefer \"reprintedAs\", where available.", "const": true, "markdownDescription": "Prefer "reprintedAs", where available." }, "tagNameStats": { "type": "string", "enum": [ "spell", "item", "itemMastery", "creature", "condition", "disease", "status", "background", "race", "optfeature", "reward", "feat", "psionic", "object", "cult", "boon", "trap", "hazard", "variantrule", "charoption", "vehicle", "vehupgrade", "class", "action", "language", "classFeature", "subclassFeature", "table", "recipe", "skill", "sense", "legroup", "deck", "facility" ] }, "tagNameStatsAbbreviation": { "type": "string", "enum": [ "itemProperty" ] }, "propNameStats": { "type": "string", "enum": [ "subclass", "monsterFluff", "raceFluff" ] }, "abilityScoreAbbreviation": { "type": "string", "enum": [ "str", "dex", "con", "int", "wis", "cha" ] }, "languageNameLower": { "oneOf": [ { "type": "string", "enum": [ "abyssal", "aquan", "auran", "celestial", "common", "common sign language", "deep speech", "draconic", "druidic", "dwarvish", "elvish", "giant", "gith", "gnomish", "goblin", "halfling", "ignan", "infernal", "orc", "other", "primordial", "sylvan", "terran", "thieves' cant", "undercommon" ] }, { "type": "string", "pattern": "^[^|]+\\|.+$" } ] }, "languageProficiencies": { "type": "array", "items": { "type": "object", "properties": { "any": { "type": "integer" }, "anyStandard": { "type": "integer" }, "anyExotic": { "type": "integer" }, "anyRare": { "type": "integer" }, "abyssal": { "const": true }, "celestial": { "const": true }, "common": { "const": true }, "common sign language": { "const": true }, "deep speech": { "const": true }, "draconic": { "const": true }, "infernal": { "const": true }, "gith": { "const": true }, "gnomish": { "const": true }, "goblin": { "const": true }, "halfling": { "const": true }, "orc": { "const": true }, "primordial": { "const": true }, "aquan": { "const": true }, "auran": { "const": true }, "ignan": { "const": true }, "terran": { "const": true }, "sylvan": { "const": true }, "undercommon": { "const": true }, "dwarvish": { "const": true }, "elvish": { "const": true }, "giant": { "const": true }, "other": { "const": true }, "druidic": { "const": true }, "thieves' cant": { "const": true }, "choose": { "type": "object", "properties": { "from": { "type": "array", "items": { "$ref": "#/$defs/languageNameLower" }, "uniqueItems": true, "minItems": 2 }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "additionalProperties": false, "patternProperties": { "^[^|]+\\|.+$": { "const": true } } }, "uniqueItems": true, "minItems": 1 }, "toolNameLower": { "anyOf": [ { "type": "string", "enum": [ "artisan's tools", "alchemist's supplies", "brewer's supplies", "calligrapher's supplies", "carpenter's tools", "cartographer's tools", "cobbler's tools", "cook's utensils", "glassblower's tools", "jeweler's tools", "leatherworker's tools", "mason's tools", "painter's supplies", "potter's tools", "smith's tools", "tinker's tools", "weaver's tools", "woodcarver's tools", "disguise kit", "forgery kit", "gaming set", "dragonchess set", "dice set", "three-dragon ante set", "playing card set", "herbalism kit", "musical instrument", "bagpipes", "drum", "dulcimer", "flute", "horn", "lute", "lyre", "pan flute", "shawm", "viol", "navigator's tools", "thieves' tools", "poisoner's kit", "vehicles", "vehicles (air)", "vehicles (land)", "vehicles (water)", "vehicles (space)" ] }, { "type": "string", "pattern": "^[^|]+\\|.+$" } ] }, "toolProficiencies": { "type": "array", "items": { "type": "object", "properties": { "any": { "type": "integer" }, "anyArtisansTool": { "type": "integer" }, "artisan's tools": { "const": true }, "alchemist's supplies": { "const": true }, "brewer's supplies": { "const": true }, "calligrapher's supplies": { "const": true }, "carpenter's tools": { "const": true }, "cartographer's tools": { "const": true }, "cobbler's tools": { "const": true }, "cook's utensils": { "const": true }, "glassblower's tools": { "const": true }, "jeweler's tools": { "const": true }, "leatherworker's tools": { "const": true }, "mason's tools": { "const": true }, "painter's supplies": { "const": true }, "potter's tools": { "const": true }, "smith's tools": { "const": true }, "tinker's tools": { "const": true }, "weaver's tools": { "const": true }, "woodcarver's tools": { "const": true }, "disguise kit": { "const": true }, "forgery kit": { "const": true }, "anyGamingSet": { "type": "integer" }, "gaming set": { "const": true }, "dragonchess set": { "const": true }, "dice set": { "const": true }, "three-dragon ante set": { "const": true }, "playing card set": { "const": true }, "herbalism kit": { "const": true }, "anyMusicalInstrument": { "type": "integer" }, "musical instrument": { "const": true }, "bagpipes": { "const": true }, "drum": { "const": true }, "dulcimer": { "const": true }, "flute": { "const": true }, "horn": { "const": true }, "lute": { "const": true }, "lyre": { "const": true }, "pan flute": { "const": true }, "shawm": { "const": true }, "viol": { "const": true }, "navigator's tools": { "const": true }, "thieves' tools": { "const": true }, "poisoner's kit": { "const": true }, "vehicles": { "const": true }, "vehicles (air)": { "const": true }, "vehicles (land)": { "const": true }, "vehicles (water)": { "const": true }, "vehicles (space)": { "const": true }, "choose": { "type": "object", "properties": { "from": { "type": "array", "items": { "anyOf": [ { "$ref": "#/$defs/toolNameLower" }, { "type": "string", "enum": [ "anyArtisansTool", "anyMusicalInstrument" ] } ] }, "uniqueItems": true, "minItems": 2 }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "additionalProperties": false, "patternProperties": { "^[^|]+\\|.+$": { "const": true } } }, "uniqueItems": true, "minItems": 1 }, "skillNameLower": { "anyOf": [ { "type": "string", "enum": [ "athletics", "acrobatics", "sleight of hand", "stealth", "arcana", "history", "investigation", "nature", "religion", "animal handling", "insight", "medicine", "perception", "survival", "deception", "intimidation", "performance", "persuasion" ] }, { "type": "string", "pattern": "^[^|]+\\|.+$" } ] }, "skillProficiencies": { "type": "array", "items": { "type": "object", "properties": { "any": { "type": "integer" }, "athletics": { "const": true }, "acrobatics": { "const": true }, "sleight of hand": { "const": true }, "stealth": { "const": true }, "arcana": { "const": true }, "history": { "const": true }, "investigation": { "const": true }, "nature": { "const": true }, "religion": { "const": true }, "animal handling": { "const": true }, "insight": { "const": true }, "medicine": { "const": true }, "perception": { "const": true }, "survival": { "const": true }, "deception": { "const": true }, "intimidation": { "const": true }, "performance": { "const": true }, "persuasion": { "const": true }, "choose": { "type": "object", "properties": { "from": { "type": "array", "items": { "$ref": "#/$defs/skillNameLower" }, "uniqueItems": true, "minItems": 2 }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "additionalProperties": false, "patternProperties": { "^[^|]+\\|.+$": { "const": true } } }, "uniqueItems": true, "minItems": 1 }, "skillToolLanguageProficiencies": { "type": "array", "items": { "type": "object", "properties": { "anyLanguage": { "type": "integer" }, "anyStandardLanguage": { "type": "integer" }, "anyExoticLanguage": { "type": "integer" }, "anyRareLanguage": { "type": "integer" }, "abyssal": { "const": true }, "celestial": { "const": true }, "common": { "const": true }, "common sign language": { "const": true }, "deep speech": { "const": true }, "draconic": { "const": true }, "infernal": { "const": true }, "gith": { "const": true }, "gnomish": { "const": true }, "goblin": { "const": true }, "halfling": { "const": true }, "orc": { "const": true }, "primordial": { "const": true }, "aquan": { "const": true }, "auran": { "const": true }, "ignan": { "const": true }, "terran": { "const": true }, "sylvan": { "const": true }, "undercommon": { "const": true }, "dwarvish": { "const": true }, "elvish": { "const": true }, "giant": { "const": true }, "other": { "const": true }, "druidic": { "const": true }, "thieves' cant": { "const": true }, "otherLanguage": { "const": true }, "anyTool": { "type": "integer" }, "anyArtisansTool": { "type": "integer" }, "artisan's tools": { "const": true }, "alchemist's supplies": { "const": true }, "brewer's supplies": { "const": true }, "calligrapher's supplies": { "const": true }, "carpenter's tools": { "const": true }, "cartographer's tools": { "const": true }, "cobbler's tools": { "const": true }, "cook's utensils": { "const": true }, "glassblower's tools": { "const": true }, "jeweler's tools": { "const": true }, "leatherworker's tools": { "const": true }, "mason's tools": { "const": true }, "painter's supplies": { "const": true }, "potter's tools": { "const": true }, "smith's tools": { "const": true }, "tinker's tools": { "const": true }, "weaver's tools": { "const": true }, "woodcarver's tools": { "const": true }, "disguise kit": { "const": true }, "forgery kit": { "const": true }, "anyGamingSet": { "type": "integer" }, "gaming set": { "const": true }, "dragonchess set": { "const": true }, "dice set": { "const": true }, "three-dragon ante set": { "const": true }, "playing card set": { "const": true }, "herbalism kit": { "const": true }, "anyMusicalInstrument": { "type": "integer" }, "musical instrument": { "const": true }, "bagpipes": { "const": true }, "drum": { "const": true }, "dulcimer": { "const": true }, "flute": { "const": true }, "horn": { "const": true }, "lute": { "const": true }, "lyre": { "const": true }, "pan flute": { "const": true }, "shawm": { "const": true }, "viol": { "const": true }, "navigator's tools": { "const": true }, "thieves' tools": { "const": true }, "poisoner's kit": { "const": true }, "vehicles": { "const": true }, "vehicles (air)": { "const": true }, "vehicles (land)": { "const": true }, "vehicles (water)": { "const": true }, "vehicles (space)": { "const": true }, "anySkill": { "type": "integer" }, "athletics": { "const": true }, "acrobatics": { "const": true }, "sleight of hand": { "const": true }, "stealth": { "const": true }, "arcana": { "const": true }, "history": { "const": true }, "investigation": { "const": true }, "nature": { "const": true }, "religion": { "const": true }, "animal handling": { "const": true }, "insight": { "const": true }, "medicine": { "const": true }, "perception": { "const": true }, "survival": { "const": true }, "deception": { "const": true }, "intimidation": { "const": true }, "performance": { "const": true }, "persuasion": { "const": true }, "choose": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "from": { "type": "array", "items": { "anyOf": [ { "$ref": "#/$defs/languageNameLower" }, { "$ref": "#/$defs/toolNameLower" }, { "$ref": "#/$defs/skillNameLower" }, { "type": "string", "enum": [ "anySkill", "anyTool", "anyArtisansTool", "anyMusicalInstrument", "anyLanguage", "anyStandardLanguage", "anyExoticLanguage", "anyRareLanguage" ] } ] }, "minItems": 2 }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false }, { "type": "object", "properties": { "fromFilter": { "type": "string" }, "count": { "type": "integer" }, "type": { "type": "string", "enum": [ "weapon", "armor", "skill", "tool", "language", "savingThrow" ] } }, "required": [ "fromFilter", "type" ], "additionalProperties": false } ] }, "uniqueItems": true, "minItems": 1 } }, "additionalProperties": false, "patternProperties": { "^[^|]+\\|.+$": { "const": true } } }, "uniqueItems": true, "minItems": 1 }, "weaponProficiencies": { "type": "array", "items": { "type": "object", "properties": { "simple": { "const": true }, "martial": { "const": true }, "firearms": { "const": true }, "improvised": { "const": true }, "choose": { "type": "object", "properties": { "fromFilter": { "description": "A filter string, e.g. \"type=martial weapon|miscellaneous=mundane\"", "type": "string", "markdownDescription": "A filter string, e.g. "type=martial weapon|miscellaneous=mundane"" }, "count": { "type": "integer" } }, "required": [ "fromFilter" ], "additionalProperties": false }, "all": { "type": "object", "properties": { "fromFilter": { "description": "A filter string, e.g. \"type=martial weapon|miscellaneous=mundane\"", "type": "string", "markdownDescription": "A filter string, e.g. "type=martial weapon|miscellaneous=mundane"" } }, "required": [ "fromFilter" ], "additionalProperties": false } }, "patternProperties": { "^[^|]+\\|.+$": { "const": true } }, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "armorProficiencies": { "type": "array", "items": { "type": "object", "properties": { "light": { "const": true }, "medium": { "const": true }, "heavy": { "const": true }, "shield": { "const": true } }, "minProperties": 1, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "savingThrowProficiencies": { "type": "array", "items": { "type": "object", "properties": { "str": { "const": true }, "dex": { "const": true }, "con": { "const": true }, "int": { "const": true }, "wis": { "const": true }, "cha": { "const": true }, "choose": { "type": "object", "properties": { "from": { "type": "array", "items": { "enum": [ "str", "dex", "con", "int", "wis", "cha" ] }, "uniqueItems": true, "minItems": 2 }, "count": { "type": "integer" } }, "required": [ "from" ], "additionalProperties": false } }, "minProperties": 1, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "expertise": { "type": "array", "items": { "type": "object", "properties": { "anyProficientSkill": { "type": "number" }, "athletics": { "const": true }, "acrobatics": { "const": true }, "sleight of hand": { "const": true }, "stealth": { "const": true }, "arcana": { "const": true }, "history": { "const": true }, "investigation": { "const": true }, "nature": { "const": true }, "religion": { "const": true }, "animal handling": { "const": true }, "insight": { "const": true }, "medicine": { "const": true }, "perception": { "const": true }, "survival": { "const": true }, "deception": { "const": true }, "intimidation": { "const": true }, "performance": { "const": true }, "persuasion": { "const": true }, "anyProficientTool": { "type": "number" }, "artisan's tools": { "const": true }, "alchemist's supplies": { "const": true }, "brewer's supplies": { "const": true }, "calligrapher's supplies": { "const": true }, "carpenter's tools": { "const": true }, "cartographer's tools": { "const": true }, "cobbler's tools": { "const": true }, "cook's utensils": { "const": true }, "glassblower's tools": { "const": true }, "jeweler's tools": { "const": true }, "leatherworker's tools": { "const": true }, "mason's tools": { "const": true }, "painter's supplies": { "const": true }, "potter's tools": { "const": true }, "smith's tools": { "const": true }, "tinker's tools": { "const": true }, "weaver's tools": { "const": true }, "woodcarver's tools": { "const": true }, "disguise kit": { "const": true }, "forgery kit": { "const": true }, "gaming set": { "const": true }, "dragonchess set": { "const": true }, "dice set": { "const": true }, "three-dragon ante set": { "const": true }, "playing card set": { "const": true }, "herbalism kit": { "const": true }, "musical instrument": { "const": true }, "bagpipes": { "const": true }, "drum": { "const": true }, "dulcimer": { "const": true }, "flute": { "const": true }, "horn": { "const": true }, "lute": { "const": true }, "lyre": { "const": true }, "pan flute": { "const": true }, "shawm": { "const": true }, "viol": { "const": true }, "navigator's tools": { "const": true }, "thieves' tools": { "const": true }, "vehicles": { "const": true }, "vehicles (air)": { "const": true }, "vehicles (land)": { "const": true }, "vehicles (water)": { "const": true }, "vehicles (space)": { "const": true }, "poisoner's kit": { "const": true } }, "additionalProperties": false, "patternProperties": { "^[^|]+\\|.+$": { "const": true } } }, "uniqueItems": true, "minItems": 1 }, "abilityScores": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "choose": { "oneOf": [ { "type": "object", "properties": { "from": { "type": "array", "items": { "$ref": "#/$defs/abilityScoreAbbreviation" }, "uniqueItems": true, "minItems": 1 }, "count": { "type": "integer" }, "amount": { "type": "integer" }, "entry": { "$ref": "entry.json" } }, "required": [ "from" ], "additionalProperties": false }, { "type": "object", "properties": { "weighted": { "type": "object", "properties": { "from": { "type": "array", "items": { "$ref": "#/$defs/abilityScoreAbbreviation" }, "uniqueItems": true, "minItems": 1 }, "weights": { "type": "array", "items": { "type": "integer" }, "minItems": 1 } } }, "entry": { "$ref": "entry.json" } }, "required": [ "weighted" ], "additionalProperties": false } ] }, "hidden": { "type": "boolean" }, "max": { "description": "The max ability score this ASI allows (otherwise assumed to be 20).", "type": "integer", "markdownDescription": "The max ability score this ASI allows (otherwise assumed to be 20)." } }, "additionalProperties": false } }, "additionalFeatsArray": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "any": { "type": "integer" }, "anyFromCategory": { "type": "object", "properties": { "category": { "type": "array", "items": { "$ref": "#/$defs/dataFeatCategory" }, "uniqueItems": true, "minItems": 1 }, "count": { "type": "integer" } }, "required": [ "category" ], "additionalProperties": false } }, "patternProperties": { "^[^|]+\\|.+$": { "const": true } }, "additionalProperties": false } ] }, "uniqueItems": true, "minItems": 1 }, "proficiencyTag": { "type": "string", "enum": [ "Skill Proficiency", "Armor Proficiency", "Weapon Proficiency", "Tool Proficiency", "Language Proficiency" ] }, "traitTagCharacter": { "oneOf": [ { "$ref": "util.json#/$defs/proficiencyTag" }, { "type": "string", "enum": [ "Amphibious", "Improved Resting", "Magic Resistance", "Natural Armor", "Natural Weapon", "Powerful Build", "Skill Bonus Dice", "Sunlight Sensitivity", "Tool Bonus Dice", "Damage Resistance", "Damage Immunity", "Condition Immunity" ] } ] }, "_speedVal": { "oneOf": [ { "type": "object", "properties": { "number": { "type": "integer" }, "condition": { "type": "string" } }, "required": [ "number", "condition" ], "additionalProperties": false }, { "type": "integer" }, { "const": true } ] }, "_speedMode": { "type": "string", "enum": [ "walk", "burrow", "climb", "fly", "swim" ] }, "speed": { "oneOf": [ { "type": "object", "properties": { "walk": { "$ref": "#/$defs/_speedVal" }, "burrow": { "$ref": "#/$defs/_speedVal" }, "climb": { "$ref": "#/$defs/_speedVal" }, "fly": { "$ref": "#/$defs/_speedVal" }, "canHover": { "const": true }, "swim": { "$ref": "#/$defs/_speedVal" }, "choose": { "type": "object", "properties": { "from": { "type": "array", "items": { "$ref": "#/$defs/_speedMode" }, "uniqueItems": true, "minItems": 2 }, "amount": { "type": "integer" }, "note": { "type": "string" } }, "required": [ "amount", "from" ], "additionalProperties": false }, "alternate": { "type": "object", "properties": { "walk": { "type": "array", "items": { "$ref": "#/$defs/_speedVal" }, "uniqueItems": true }, "burrow": { "type": "array", "items": { "$ref": "#/$defs/_speedVal" }, "uniqueItems": true }, "climb": { "type": "array", "items": { "$ref": "#/$defs/_speedVal" }, "uniqueItems": true }, "fly": { "type": "array", "items": { "$ref": "#/$defs/_speedVal" }, "uniqueItems": true }, "swim": { "type": "array", "items": { "$ref": "#/$defs/_speedVal" }, "uniqueItems": true } } }, "hidden": { "type": "array", "items": { "$ref": "#/$defs/_speedMode" }, "uniqueItems": true, "minItems": 1 } }, "additionalProperties": false }, { "type": "integer" }, { "const": "Varies" } ] }, "rarity": { "type": "string", "enum": [ "rare", "uncommon", "very rare", "legendary", "artifact", "common" ] }, "prerequisite": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "level": { "oneOf": [ { "type": "object", "properties": { "level": { "type": "integer" }, "class": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "visible": { "description": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations. This functions as a combination of \"visibleStats\" and \"visibleList\".", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations. This functions as a combination of "visibleStats" and "visibleList"." }, "visibleStats": { "description": "Governs whether or not the class name is visible in the prerequisite line.", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the prerequisite line." }, "visibleList": { "description": "Governs whether or not the class name is visible in the list display. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the list display. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations." } }, "required": [ "name" ], "additionalProperties": false }, "subclass": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "visible": { "description": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations. This functions as a combination of \"visibleStats\" and \"visibleList\".", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations. This functions as a combination of "visibleStats" and "visibleList"." }, "visibleStats": { "description": "Governs whether or not the class name is visible in the prerequisite line.", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the prerequisite line." }, "visibleList": { "description": "Governs whether or not the class name is visible in the list display. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.", "const": true, "markdownDescription": "Governs whether or not the class name is visible in the list display. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations." } }, "required": [ "name" ], "additionalProperties": false } }, "required": [ "level" ], "additionalProperties": false }, { "type": "integer", "minimum": 1 } ] }, "pact": { "type": "string", "examples": [ "Chain", "Tome", "Blade", "Talisman" ] }, "patron": { "type": "string", "examples": [ "The Archfey", "The Fiend", "The Great Old One", "The Hexblade", "The Raven Queen", "The Seeker" ] }, "spell": { "type": "array", "items": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "choose": { "type": "string", "description": "A range prerequisite spells, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: \"level=0|class=Wizard\"", "markdownDescription": "A range prerequisite spells, formatted similarly to the options in a {@filter ...} tag.\n\nFor example: "level=0|class=Wizard"" }, "entry": { "type": "string" }, "entrySummary": { "description": "Used in short/list displays", "type": "string", "markdownDescription": "Used in short/list displays" } }, "required": [ "choose", "entry" ], "additionalProperties": false } ] }, "uniqueItems": true, "minItems": 1 }, "feat": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "minItems": 1 }, "featCategory": { "type": "array", "items": { "$ref": "#/$defs/dataFeatCategory" }, "uniqueItems": true, "minItems": 1 }, "exclusiveFeatCategory": { "type": "array", "items": { "$ref": "#/$defs/dataFeatCategory" }, "uniqueItems": true, "minItems": 1 }, "optionalfeature": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "minItems": 1 }, "feature": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "minItems": 1 }, "item": { "type": "array", "items": { "type": "string" } }, "itemType": { "type": "array", "items": { "$ref": "items-shared.json#/$defs/itemType" }, "uniqueItems": true, "minItems": 1 }, "itemProperty": { "oneOf": [ { "$ref": "items-shared.json#/$defs/itemPropertyArray" }, { "type": "null" } ] }, "other": { "description": "A free text prerequisite", "type": "string", "markdownDescription": "A free text prerequisite" }, "otherSummary": { "description": "A free text prerequisite, with a shortened form for list display.", "type": "object", "properties": { "entry": { "type": "string" }, "entrySummary": { "description": "Used in short/list displays", "type": "string", "markdownDescription": "Used in short/list displays" } }, "required": [ "entry", "entrySummary" ], "markdownDescription": "A free text prerequisite, with a shortened form for list display." }, "race": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "displayEntry": { "description": "Optional long-form name to be used in the rendered entity.", "type": "string", "markdownDescription": "Optional long-form name to be used in the rendered entity." }, "subrace": { "type": "string" } }, "required": [ "name" ], "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "background": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "displayEntry": { "description": "Optional long-form name to be used in the rendered entity.", "type": "string", "markdownDescription": "Optional long-form name to be used in the rendered entity." } }, "required": [ "name" ], "additionalProperties": false } }, "ability": { "type": "array", "items": { "type": "object", "properties": { "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" } }, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "spellcasting": { "const": true }, "spellcasting2020": { "description": "Renders with the updated text found in UA2020: Feats", "const": true, "markdownDescription": "Renders with the updated text found in UA2020: Feats" }, "spellcastingFeature": { "description": "A more restrictive spellcasting variant; specifically \"Spellcasting Feature\"", "const": true, "markdownDescription": "A more restrictive spellcasting variant; specifically "Spellcasting Feature"" }, "spellcastingPrepared": { "description": "A more restrictive spellcasting variant; specifically \"Spellcasting feature from a class that prepares spells\"", "const": true, "markdownDescription": "A more restrictive spellcasting variant; specifically "Spellcasting feature from a class that prepares spells"" }, "psionics": { "const": true }, "spellcastingFocus": { "oneOf": [ { "const": true }, { "type": "array", "items": { "type": "string", "examples": [ "arcane", "druid", "holy", "tool", "artisansTool" ] }, "minItems": 1, "uniqueItems": true } ] }, "proficiency": { "type": "array", "items": { "type": "object", "properties": { "armor": { "type": "string", "enum": [ "light", "medium", "heavy", "shield" ] }, "weapon": { "description": "Any weapon.", "type": "string", "enum": [ "simple", "martial" ], "markdownDescription": "Any <simple|martial> weapon." }, "weaponGroup": { "description": "All weapons.", "type": "string", "enum": [ "simple", "martial" ], "markdownDescription": "All <simple|martial> weapons." } }, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "expertise": { "type": "array", "items": { "type": "object", "properties": { "skill": { "oneOf": [ { "const": true } ] } }, "additionalProperties": false }, "uniqueItems": true, "minItems": 1 }, "alignment": { "type": "array", "items": { "$ref": "util.json#/$defs/alignment" }, "uniqueItems": true, "minItems": 1 }, "campaign": { "type": "array", "items": { "type": "string", "examples": [ "Dragonlance", "Planescape", "Eberron" ] }, "uniqueItems": true, "minItems": 1 }, "culture": { "type": "array", "items": { "type": "string", "examples": [ "Elven" ] }, "uniqueItems": true, "minItems": 1 }, "membership": { "type": "array", "items": { "type": "string", "examples": [ "Cult of the Dragon", "Emerald Enclave", "Harpers", "Lords' Alliance", "Order of the Gauntlet", "Purple Dragon Knights", "Red Wizards", "Zhentarim" ] }, "uniqueItems": true, "minItems": 1 }, "group": { "type": "array", "items": { "type": "string", "examples": [ "expert", "mage", "priest", "warrior" ] }, "uniqueItems": true, "minItems": 1 }, "note": { "description": "An additional note that accompanies the proficiencies, but is not part of them.", "type": "string", "markdownDescription": "An additional note that accompanies the proficiencies, but is not part of them." } }, "additionalProperties": false } }, "creatureType": { "type": "string", "examples": [ "aberration", "beast", "celestial", "construct", "dragon", "elemental", "fey", "fiend", "giant", "humanoid", "monstrosity", "ooze", "plant", "undead" ] }, "alignment": { "type": "string", "description": "- L: Lawful\n- N: Neutral\n- NX: Neutral (law/chaos axis)\n- NY: Neutral (good/evil axis)\n- C: Chaotic\n- G: Good\n- E: Evil\n- U: Unaligned\n- A: Any", "enum": [ "L", "N", "NX", "NY", "C", "G", "E", "U", "A" ], "markdownDescription": "- L: Lawful\n- N: Neutral\n- NX: Neutral (law/chaos axis)\n- NY: Neutral (good/evil axis)\n- C: Chaotic\n- G: Good\n- E: Evil\n- U: Unaligned\n- A: Any" }, "size": { "type": "string", "description": "- F: Fine\n- D: Diminutive\n- T: Tiny\n- S: Small\n- M: Medium\n- L: Large\n- H: Huge\n- G: Gargantuan\n- C: Colossal\n- V: Varies.", "markdownDescription": "- F: Fine\n- D: Diminutive\n- T: Tiny\n- S: Small\n- M: Medium\n- L: Large\n- H: Huge\n- G: Gargantuan\n- C: Colossal\n- V: Varies.", "enum": [ "F", "D", "T", "S", "M", "L", "H", "G", "C", "V" ] }, "dataCondition": { "type": "string", "examples": [ "blinded", "charmed", "deafened", "exhaustion", "frightened", "grappled", "incapacitated", "invisible", "paralyzed", "petrified", "poisoned", "prone", "restrained", "stunned", "unconscious", "disease" ] }, "dataDamageType": { "type": "string", "enum": [ "acid", "bludgeoning", "cold", "fire", "force", "lightning", "necrotic", "piercing", "poison", "psychic", "radiant", "slashing", "thunder" ] }, "dataOptionalfeatureType": { "type": "string", "description": "- AF: Alchemical Formula\n- AI: Artificer Infusion\n- AS: Arcane Shot\n- AS:V1-UA: Arcane Shot, V1 (UA)\n- AS:V2-UA: Arcane Shot, V2 (UA)\n- ED: Elemental Discipline\n- EI: Eldritch Invocation\n- FS:B: Fighting Style; Bard\n- FS:F: Fighting Style; Fighter\n- FS:P: Fighting Style; Paladin\n- FS:R: Fighting Style; Ranger\n- IWM:A: Infernal War Machine Upgrade, Armor\n- IWM:G: Infernal War Machine Upgrade, Gadget\n- IWM:W: Infernal War Machine Variant, Weapon\n- MM: Metamagic\n- MV: Maneuver\n- MV:B: Maneuver, Battle Master\n- MV:C2-UA: Maneuver, Cavalier V2 (UA)\n- OR: Onomancy Resonant\n- OTH: Other\n- PB: Pact Boon\n- RN: Rune Knight Rune\n- RP: Renown Perk\n- SHP:F: Ship Upgrade, Figurehead\n- SHP:H: Ship Upgrade, Hull\n- SHP:M: Ship Upgrade, Movement\n- SHP:O: Ship Upgrade, Miscellaneous\n- SHP:W: Ship Upgrade, Weapon\n- TT: Traveler's Trick", "markdownDescription": "- AF: Alchemical Formula\n- AI: Artificer Infusion\n- AS: Arcane Shot\n- AS:V1-UA: Arcane Shot, V1 (UA)\n- AS:V2-UA: Arcane Shot, V2 (UA)\n- ED: Elemental Discipline\n- EI: Eldritch Invocation\n- FS:B: Fighting Style; Bard\n- FS:F: Fighting Style; Fighter\n- FS:P: Fighting Style; Paladin\n- FS:R: Fighting Style; Ranger\n- IWM:A: Infernal War Machine Upgrade, Armor\n- IWM:G: Infernal War Machine Upgrade, Gadget\n- IWM:W: Infernal War Machine Variant, Weapon\n- MM: Metamagic\n- MV: Maneuver\n- MV:B: Maneuver, Battle Master\n- MV:C2-UA: Maneuver, Cavalier V2 (UA)\n- OR: Onomancy Resonant\n- OTH: Other\n- PB: Pact Boon\n- RN: Rune Knight Rune\n- RP: Renown Perk\n- SHP:F: Ship Upgrade, Figurehead\n- SHP:H: Ship Upgrade, Hull\n- SHP:M: Ship Upgrade, Movement\n- SHP:O: Ship Upgrade, Miscellaneous\n- SHP:W: Ship Upgrade, Weapon\n- TT: Traveler's Trick", "examples": [ "ED", "EI", "MM", "MV", "MV:B", "OTH", "FS:F", "FS:B", "FS:R", "FS:P", "MV:C2-UA", "AS:V1-UA", "AS:V2-UA", "AS", "PB", "AI", "SHP:H", "SHP:M", "SHP:W", "SHP:F", "SHP:O", "IWM:W", "IWM:A", "IWM:G", "OR", "RN", "AF", "TT", "RP" ] }, "dataFeatCategory": { "type": "string", "description": "- D: Dragonmark\n- G: General\n- O: Origin\n- FS: Fighting Style\n- FS:P: Fighting Style (Paladin)\n- FS:R: Fighting Style (Ranger)\n- EB: Epic Boon", "markdownDescription": "- D: Dragonmark\n- G: General\n- O: Origin\n- FS: Fighting Style\n- FS:P: Fighting Style (Paladin)\n- FS:R: Fighting Style (Ranger)\n- EB: Epic Boon", "examples": [ "D", "G", "O", "FS", "FS:P", "FS:R", "EB" ] }, "damageImmunityArray": { "oneOf": [ { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "immune": { "$ref": "#/$defs/damageImmunityArray" }, "note": { "type": "string" }, "cond": { "const": true } }, "additionalProperties": false, "required": [ "immune" ] } ] }, "uniqueItems": true, "minItems": 1 }, { "type": "null" } ] }, "damageImmunityArrayPlayer": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "choose": { "type": "object", "properties": { "from": { "$ref": "#/$defs/damageImmunityArrayPlayer" }, "count": { "type": "integer" } }, "additionalProperties": false, "required": [ "from" ] } } } ] }, "uniqueItems": true }, "damageResistArray": { "oneOf": [ { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "resist": { "$ref": "#/$defs/damageResistArray" }, "note": { "type": "string" }, "cond": { "const": true } }, "additionalProperties": false, "required": [ "resist" ] } ] }, "uniqueItems": true, "minItems": 1 }, { "type": "null" } ] }, "damageResistArrayPlayer": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "choose": { "type": "object", "properties": { "from": { "$ref": "#/$defs/damageResistArrayPlayer" }, "count": { "type": "integer" } }, "additionalProperties": false, "required": [ "from" ] } } } ] }, "uniqueItems": true, "minItems": 1 }, "damageVulnerabilityArray": { "oneOf": [ { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "vulnerable": { "$ref": "#/$defs/damageVulnerabilityArray" }, "note": { "type": "string" }, "cond": { "const": true } }, "additionalProperties": false, "required": [ "vulnerable" ] } ] }, "uniqueItems": true }, { "type": "null" } ] }, "damageVulnerabilityArrayPlayer": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataDamageType" }, { "type": "object", "properties": { "choose": { "type": "object", "properties": { "from": { "$ref": "#/$defs/damageVulnerabilityArrayPlayer" }, "count": { "type": "integer" } }, "additionalProperties": false, "required": [ "from" ] } } } ] }, "uniqueItems": true, "minItems": 1 }, "conditionImmunityArray": { "oneOf": [ { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataCondition" }, { "type": "object", "properties": { "special": { "type": "string" } }, "additionalProperties": false, "required": [ "special" ] }, { "type": "object", "properties": { "preNote": { "type": "string" }, "conditionImmune": { "$ref": "#/$defs/conditionImmunityArray" }, "note": { "type": "string" }, "cond": { "const": true } }, "additionalProperties": false, "required": [ "conditionImmune" ] } ] }, "uniqueItems": true, "minItems": 1 }, { "type": "null" } ] }, "conditionImmunityArrayPlayer": { "type": "array", "items": { "oneOf": [ { "$ref": "#/$defs/dataCondition" }, { "type": "object", "properties": { "choose": { "type": "object", "properties": { "from": { "$ref": "#/$defs/conditionImmunityArrayPlayer" }, "count": { "type": "integer" } }, "additionalProperties": false, "required": [ "from" ] } } } ] }, "uniqueItems": true, "minItems": 1 }, "_resourcesItemBase": { "type": "object", "properties": { "name": { "type": "string" }, "recharge": { "type": "string", "enum": [ "restShort", "restLong", "dawn", "dusk", "midnight" ] } }, "required": [ "name" ], "additionalProperties": false }, "resourcesArray": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "recharge": { "type": "string", "enum": [ "restShort", "restLong", "dawn", "dusk", "midnight" ] }, "type": { "const": "dicePool" }, "count": { "type": [ "integer", "string" ] }, "number": { "type": [ "integer", "string" ] }, "faces": { "type": [ "integer", "string" ] } }, "required": [ "name", "type", "count", "number", "faces" ], "additionalProperties": false }, { "type": "object", "properties": { "name": { "type": "string" }, "recharge": { "type": "string", "enum": [ "restShort", "restLong", "dawn", "dusk", "midnight" ] }, "type": { "const": "pointPool" }, "count": { "type": [ "integer", "string" ] } }, "required": [ "name", "type", "count" ], "additionalProperties": false } ] }, "uniqueItems": true }, "sensesArray": { "type": "array", "items": { "type": "object", "propertyNames": { "enum": [ "blindsight", "darkvision", "tremorsense", "truesight" ] }, "additionalProperties": { "type": "integer" }, "minProperties": 1 }, "uniqueItems": true }, "consumesName": { "type": "string", "examples": [ "Superiority Die", "Ki", "Channel Divinity", "Psionic Energy Die", "Wild Shape", "Sorcery Point", "Arcane Shot", "Focus Point" ] }, "_consumesObjectBase": { "type": "object", "properties": { "name": { "$ref": "#/$defs/consumesName" } }, "additionalProperties": false }, "consumesObject": { "oneOf": [ { "type": "object", "properties": { "name": { "$ref": "#/$defs/consumesName" }, "amount": { "type": "integer" } }, "additionalProperties": false, "required": [ "name" ] }, { "type": "object", "properties": { "name": { "$ref": "#/$defs/consumesName" }, "amountMin": { "type": "integer" }, "amountMax": { "type": "integer" } }, "additionalProperties": false, "required": [ "name", "amountMin", "amountMax" ] } ] }, "dataDamageTags": { "type": "string", "description": "- A: Acid\n- B: Bludgeoning\n- C: Cold\n- F: Fire\n- O: Force\n- L: Lightning\n- N: Necrotic\n- P: Piercing\n- I: Poison\n- Y: Psychic\n- R: Radiant\n- S: Slashing\n- T: Thunder", "enum": [ "A", "B", "C", "F", "O", "L", "N", "P", "I", "Y", "R", "S", "T" ], "markdownDescription": "- A: Acid\n- B: Bludgeoning\n- C: Cold\n- F: Fire\n- O: Force\n- L: Lightning\n- N: Necrotic\n- P: Piercing\n- I: Poison\n- Y: Psychic\n- R: Radiant\n- S: Slashing\n- T: Thunder" }, "spellSchool": { "type": "string", "description": "- A: Abjuration\n- C: Conjuration\n- D: Divination\n- E: Enchantment\n- V: Evocation\n- I: Illusion\n- N: Necromancy\n- T: Transmutation\n- P: Psychic", "not": { "enum": [ "Abjuration", "Conjuration", "Divination", "Enchantment", "Evocation", "Illusion", "Necromancy", "Transmutation", "Psychic" ] }, "markdownDescription": "- A: Abjuration\n- C: Conjuration\n- D: Divination\n- E: Enchantment\n- V: Evocation\n- I: Illusion\n- N: Necromancy\n- T: Transmutation\n- P: Psychic", "examples": [ "A", "C", "D", "E", "V", "I", "N", "T", "P" ] }, "genericFluffArrayItemData": { "type": "object", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false }, "genericFluffArray": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "anyOf": [ { "type": "object", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false, "required": [ "name", "source" ] }, { "type": "object", "$comment": "This is a custom pre-processor tag, which merges together the array of objects into one. This allows proper inheritance, which JSON schema don't really do.", "properties": { "name": { "type": "string" }, "preserveName": { "const": true }, "source": { "$ref": "util.json#/$defs/source" }, "images": { "oneOf": [ { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } }, { "type": "null" } ] }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "_copy": { "$ref": "util-copy.json#/$defs/copyBlock_copy_generic" } }, "additionalProperties": false, "required": [ "_copy" ] } ] } }, "tagsConditions": { "type": "array", "uniqueItems": true, "items": { "type": "string", "examples": [ "blinded", "charmed", "deafened", "exhaustion", "frightened", "grappled", "incapacitated", "invisible", "paralyzed", "petrified", "poisoned", "prone", "restrained", "stunned", "unconscious" ] } }, "tagsSavingThrow": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "enum": [ "strength", "constitution", "dexterity", "intelligence", "wisdom", "charisma" ] } }, "srd": { "type": [ "boolean", "string" ] }, "basicRules": { "const": true }, "legacy": { "const": true }, "fluffObject": { "type": "object", "properties": { "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "images": { "type": "array", "items": { "$ref": "entry.json#/$defs/entryImage" } } } }, "_startingEquipment_equipmentType": { "type": "string", "enum": [ "weapon", "weaponSimple", "weaponSimpleMelee", "weaponSimpleRanged", "weaponMartial", "weaponMartialMelee", "weaponMartialRanged", "instrumentMusical", "armorLight", "armorMedium", "armorHeavy", "weaponMelee", "weaponRanged", "focusSpellcastingArcane", "focusSpellcastingDruidic", "focusSpellcastingHoly", "setGaming", "toolArtisan" ] }, "startingEquipment": { "description": "Optional well-structured data version of the \"default\" property, for use in applications that require it.", "type": "array", "items": { "type": "object", "patternProperties": { ".*": { "type": "array", "items": { "oneOf": [ { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, { "type": "object", "properties": { "item": { "description": "An item UID, e.g. \"longsword|phb\"", "type": "string", "markdownDescription": "An item UID, e.g. "longsword|phb"" }, "quantity": { "type": "integer" }, "displayName": { "description": "The display name this item should be given", "type": "string", "markdownDescription": "The display name this item should be given" }, "containsValue": { "description": "The value (in copper pieces) that this piece of equipment contains in coins.", "type": "integer", "markdownDescription": "The value (in copper pieces) that this piece of equipment contains in coins." } }, "required": [ "item" ], "additionalProperties": false }, { "type": "object", "properties": { "equipmentType": { "$ref": "#/$defs/_startingEquipment_equipmentType" }, "quantity": { "type": "integer" }, "displayName": { "type": "string" } }, "required": [ "equipmentType" ], "additionalProperties": false }, { "type": "object", "properties": { "equipmentTypes": { "type": "array", "items": { "$ref": "#/$defs/_startingEquipment_equipmentType" } }, "quantity": { "type": "integer" }, "displayName": { "type": "string" } }, "required": [ "equipmentTypes" ], "additionalProperties": false }, { "type": "object", "properties": { "value": { "description": "A value in copper pieces", "type": "integer", "markdownDescription": "A value in copper pieces" } }, "required": [ "value" ], "additionalProperties": false }, { "type": "object", "properties": { "special": { "description": "The name of a non-statted item, such as \"wooden stake\"", "type": "string", "markdownDescription": "The name of a non-statted item, such as "wooden stake"" }, "quantity": { "type": "integer" }, "worthValue": { "description": "The worth (in copper pieces) of this piece of equipment.", "type": "integer", "markdownDescription": "The worth (in copper pieces) of this piece of equipment." }, "containsValue": { "description": "The value (in copper pieces) that this piece of equipment contains in coins.", "type": "integer", "markdownDescription": "The value (in copper pieces) that this piece of equipment contains in coins." } }, "required": [ "special" ], "additionalProperties": false } ] } } } }, "markdownDescription": "Optional well-structured data version of the "default" property, for use in applications that require it." }, "reqAttuneTags": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "background": { "type": "string" }, "race": { "type": "string" }, "creatureType": { "$ref": "#/$defs/creatureType" }, "size": { "$ref": "#/$defs/size" }, "class": { "type": "string" }, "languageProficiency": { "$ref": "#/$defs/languageNameLower" }, "skillProficiency": { "$ref": "#/$defs/skillNameLower" }, "alignment": { "type": "array", "items": { "$ref": "#/$defs/alignment" } }, "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "spellcasting": { "const": true }, "psionics": { "const": true } } }, "uniqueItems": true }, "adventureBookData": { "type": "array", "items": { "$ref": "entry.json" }, "minItems": 1 }, "optionalfeatureProgression": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "featureType": { "type": "array", "items": { "$ref": "#/$defs/dataOptionalfeatureType" }, "uniqueItems": true }, "progression": { "oneOf": [ { "type": "array", "description": "Features gained when the total count of features increases according to level.", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20, "markdownDescription": "Features gained when the total count of features increases according to level." }, { "type": "object", "description": "Features gained at the exact levels specified.", "patternProperties": { "^\\d+$": { "type": "integer" } }, "additionalProperties": false, "markdownDescription": "Features gained at the exact levels specified." }, { "type": "object", "description": "Features gained at the level this feature is gained.", "properties": { "*": { "type": "integer" } }, "additionalProperties": false, "markdownDescription": "Features gained at the level this feature is gained." } ] }, "required": { "oneOf": [ { "type": "array", "items": { "type": "array", "items": { "type": "string" } }, "minItems": 20, "maxItems": 20 }, { "type": "object", "patternProperties": { "^\\d+$": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] } }, "required": [ "name", "featureType", "progression" ] } }, "featProgression": { "type": "array", "minItems": 1, "items": { "type": "object", "properties": { "name": { "type": "string" }, "category": { "type": "array", "items": { "$ref": "#/$defs/dataFeatCategory" }, "uniqueItems": true }, "progression": { "oneOf": [ { "type": "array", "description": "Feats gained when the total count of feats increases according to level.", "items": { "type": "integer" }, "minItems": 20, "maxItems": 20, "markdownDescription": "Feats gained when the total count of feats increases according to level." }, { "type": "object", "description": "Feats gained at the exact levels specified.", "patternProperties": { "^\\d+$": { "type": "integer" } }, "additionalProperties": false, "markdownDescription": "Feats gained at the exact levels specified." }, { "type": "object", "description": "Feats gained at the level this feat is gained.", "properties": { "*": { "type": "integer" } }, "additionalProperties": false, "markdownDescription": "Feats gained at the level this feat is gained." } ] }, "required": { "oneOf": [ { "type": "array", "items": { "type": "array", "items": { "type": "string" } }, "minItems": 20, "maxItems": 20 }, { "type": "object", "patternProperties": { "^\\d+$": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ] } }, "required": [ "name", "category", "progression" ] } }, "spellListSpellRef": { "description": "A reference to a spell or an existing spell list, linked by name and source. Assumes PHB as the source, if none is provided.", "oneOf": [ { "description": "A group spell list", "type": "object", "properties": { "groupName": { "type": "string" }, "groupSource": { "$ref": "util.json#/$defs/source" }, "spellSchools": { "type": "array", "items": { "$ref": "#/$defs/spellSchool" }, "minItems": 1, "uniqueItems": true } }, "required": [ "groupName", "groupSource" ], "additionalProperties": false, "markdownDescription": "A group spell list" }, { "description": "Another class's spell list", "type": "object", "properties": { "className": { "type": "string" }, "classSource": { "$ref": "util.json#/$defs/source" } }, "required": [ "className", "classSource" ], "additionalProperties": false, "markdownDescription": "Another class's spell list" }, { "description": "Another subclass's spell list", "type": "object", "properties": { "className": { "type": "string" }, "classSource": { "$ref": "util.json#/$defs/source" }, "subclassName": { "type": "string" }, "subclassSource": { "$ref": "util.json#/$defs/source" } }, "required": [ "className", "classSource", "subclassName", "subclassSource" ], "additionalProperties": false, "markdownDescription": "Another subclass's spell list" }, { "description": "Another sub-subclass's spell list", "type": "object", "properties": { "className": { "type": "string" }, "classSource": { "$ref": "util.json#/$defs/source" }, "subclassName": { "type": "string" }, "subclassSource": { "$ref": "util.json#/$defs/source" }, "subSubclassName": { "type": "string" }, "subSubclassSource": { "type": "string" } }, "required": [ "className", "classSource", "subclassName", "subclassSource", "subSubclassName", "subSubclassSource" ], "additionalProperties": false, "markdownDescription": "Another sub-subclass's spell list" }, { "description": "A spell UID of the form \"fireball\" (PHB source assumed by default) or \"shape water|xge\"", "type": "string", "markdownDescription": "A spell UID of the form "fireball" (PHB source assumed by default) or "shape water|xge"" } ], "markdownDescription": "A reference to a spell or an existing spell list, linked by name and source. Assumes PHB as the source, if none is provided." }, "proficiencyLevel": { "description": "- 1: Proficient\n- 2: Expertise", "type": "integer", "enum": [ 1, 2 ], "markdownDescription": "- 1: Proficient\n- 2: Expertise" } }, "markdownDescription": "Utility definitions to be used in other schemas." } ``` ## schema\brew\variantrules.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "variantrules.json", "version": "1.1.14", "title": "RulesArray", "type": "object", "properties": { "variantrule": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/variantrule" } } }, "additionalProperties": false, "required": [ "variantrule" ], "$defs": { "variantrule": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "ruleType": { "description": "- C: Core\n- O: Optional\n- P: Prerelease\n- V: Variant\n- VO: Variant Optional\n- VV: Variant Variant", "type": "string", "enum": [ "C", "O", "P", "V", "VO", "VV" ], "markdownDescription": "- C: Core\n- O: Optional\n- P: Prerelease\n- V: Variant\n- VO: Variant Optional\n- VV: Variant Variant" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "additionalSources": { "$ref": "util.json#/$defs/additionalSources" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" } }, "required": [ "name", "entries", "source" ], "additionalProperties": false } } } ``` ## schema\brew\vehicles.json ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "vehicles.json", "version": "1.8.0", "type": "object", "$defs": { "vehicleTerrain": { "description": "Note that a vehicle's \"primary\" terrain should be listed first.", "type": "array", "items": { "type": "string", "examples": [ "land", "sea", "air", "space" ] }, "markdownDescription": "Note that a vehicle's "primary" terrain should be listed first." }, "_vehicleCost": { "description": "In copper pieces.", "type": "number", "markdownDescription": "In copper pieces." }, "spelljammerElementalAirshipPaceObj": { "type": "object", "properties": { "walk": { "$ref": "#/$defs/_spelljammerElementalAirshipPace" }, "burrow": { "$ref": "#/$defs/_spelljammerElementalAirshipPace" }, "climb": { "$ref": "#/$defs/_spelljammerElementalAirshipPace" }, "fly": { "$ref": "#/$defs/_spelljammerElementalAirshipPace" }, "swim": { "$ref": "#/$defs/_spelljammerElementalAirshipPace" } }, "additionalProperties": false }, "_spelljammerElementalAirshipPace": { "type": [ "string", "number" ] }, "spelljammerElementalAirshipHullObj": { "type": "object", "properties": { "ac": { "type": "integer" }, "acFrom": { "type": "array", "items": { "type": "string" } }, "hp": { "type": "integer" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" } }, "required": [ "ac", "hp" ], "additionalProperties": false }, "spelljammerElementalAirshipStation": { "type": "object", "properties": { "name": { "type": "string" }, "size": { "type": "array", "items": { "$ref": "util.json#/$defs/size" }, "uniqueItems": true }, "ac": { "type": "integer" }, "hp": { "type": "integer" }, "count": { "type": "integer" }, "crew": { "type": "integer" }, "costs": { "type": "array", "items": { "type": "object", "properties": { "cost": { "$ref": "#/$defs/_vehicleCost" }, "note": { "type": "string" } }, "additionalProperties": false } }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "action": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "additionalProperties": false } } }, "required": [ "name", "entries" ], "additionalProperties": false }, "vehicle": { "oneOf": [ { "$ref": "#/$defs/vehicleShip" }, { "$ref": "#/$defs/vehicleSpelljammer" }, { "$ref": "#/$defs/vehicleElementalAirship" }, { "$ref": "#/$defs/vehicleInfernalWarMachine" }, { "$ref": "#/$defs/vehicleCreature" }, { "$ref": "#/$defs/vehicleObject" } ] }, "vehicleUpgrade": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "upgradeType": { "type": "array", "items": { "$ref": "util.json#/$defs/dataOptionalfeatureType", "type": "string" } }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" } }, "required": [ "name", "entries", "source", "upgradeType" ], "additionalProperties": false }, "vehicleShip": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "vehicleType": { "const": "SHIP" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" }, "size": { "type": "string" }, "dimensions": { "type": "array", "items": { "type": "string" } }, "capCrew": { "type": "integer" }, "capPassenger": { "type": "integer" }, "capCargo": { "type": [ "number", "string" ] }, "pace": { "type": [ "number" ] }, "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "actionThresholds": { "type": "object", "description": "A map of \"number of vehicle actions\": \"number of remaining crew members\"", "patternProperties": { "\\d+": { "type": "integer" } }, "markdownDescription": "A map of "number of vehicle actions": "number of remaining crew members"" }, "action": { "type": "array", "items": { "$ref": "entry.json" } }, "hull": { "type": "object", "properties": { "ac": { "type": "integer" }, "hp": { "type": "integer" }, "hpNote": { "type": "string" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" } }, "required": [ "ac", "hp" ], "additionalProperties": false }, "control": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "ac": { "type": "integer" }, "hp": { "type": "integer" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "ac", "hp", "entries" ], "additionalProperties": false } }, "movement": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "isControl": { "type": "boolean" }, "ac": { "type": "integer" }, "hp": { "type": "integer" }, "hpNote": { "type": "string" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" }, "locomotion": { "description": "Legacy format, from the original UA release.", "type": "array", "items": { "type": "object", "properties": { "mode": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "mode", "entries" ], "additionalProperties": false }, "markdownDescription": "Legacy format, from the original UA release." }, "speed": { "type": "array", "items": { "type": "object", "properties": { "mode": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "mode", "entries" ], "additionalProperties": false } } }, "required": [ "ac", "hp" ], "additionalProperties": false } }, "weapon": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "ac": { "type": "integer" }, "hp": { "type": "integer" }, "count": { "type": "integer" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, "other": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } }, "required": [ "name", "entries" ], "additionalProperties": false } }, "trait": { "oneOf": [ { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } }, "type": { "type": "string", "enum": [ "entries", "inset" ] }, "sort": { "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.", "type": "integer", "markdownDescription": "Forces a sort order. Traits with sort orders will always be arranged before those without." } }, "required": [ "name", "entries" ], "additionalProperties": false } }, { "type": "null" } ] }, "token": { "$ref": "util-token.json#/$defs/token" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "hasToken": { "type": "boolean" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "tokenUrl": { "$ref": "util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "required": [ "name", "source" ], "additionalProperties": false }, "vehicleSpelljammer": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "vehicleType": { "const": "SPELLJAMMER" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" }, "dimensions": { "type": "array", "items": { "type": "string" } }, "capCrew": { "type": "integer" }, "capCrewNote": { "type": "string" }, "capCargo": { "type": [ "number", "string" ] }, "pace": { "$ref": "#/$defs/spelljammerElementalAirshipPaceObj" }, "speed": { "$ref": "util.json#/$defs/speed" }, "hull": { "$ref": "#/$defs/spelljammerElementalAirshipHullObj" }, "cost": { "$ref": "#/$defs/_vehicleCost" }, "weapon": { "type": "array", "items": { "$ref": "#/$defs/spelljammerElementalAirshipStation" }, "minItems": 1, "uniqueItems": true }, "token": { "$ref": "util-token.json#/$defs/token" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "hasToken": { "type": "boolean" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "tokenUrl": { "$ref": "util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "required": [ "name", "source" ], "additionalProperties": false }, "vehicleElementalAirship": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "vehicleType": { "const": "ELEMENTAL_AIRSHIP" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" }, "capCrew": { "type": "integer" }, "capCrewNote": { "type": "string" }, "capPassenger": { "type": "integer" }, "capCargo": { "type": [ "number", "string" ] }, "pace": { "$ref": "#/$defs/spelljammerElementalAirshipPaceObj" }, "speed": { "$ref": "util.json#/$defs/speed" }, "hull": { "$ref": "#/$defs/spelljammerElementalAirshipHullObj" }, "cost": { "$ref": "#/$defs/_vehicleCost" }, "weapon": { "type": "array", "items": { "$ref": "#/$defs/spelljammerElementalAirshipStation" }, "minItems": 1, "uniqueItems": true }, "station": { "type": "array", "items": { "$ref": "#/$defs/spelljammerElementalAirshipStation" }, "minItems": 1, "uniqueItems": true }, "token": { "$ref": "util-token.json#/$defs/token" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "hasToken": { "type": "boolean" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "tokenUrl": { "$ref": "util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "required": [ "name", "source" ], "additionalProperties": false }, "vehicleInfernalWarMachine": { "type": "object", "properties": { "name": { "type": "string" }, "source": { "$ref": "util.json#/$defs/source" }, "page": { "$ref": "util.json#/$defs/page" }, "otherSources": { "$ref": "util.json#/$defs/otherSources" }, "reprintedAs": { "$ref": "util.json#/$defs/reprintedAs" }, "legacy": { "$ref": "util.json#/$defs/legacy" }, "vehicleType": { "const": "INFWAR" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" }, "size": { "type": "string" }, "weight": { "type": "integer" }, "capCreature": { "type": "number" }, "capCargo": { "type": "number" }, "speed": { "type": "integer" }, "str": { "type": "integer" }, "dex": { "type": "integer" }, "con": { "type": "integer" }, "int": { "type": "integer" }, "wis": { "type": "integer" }, "cha": { "type": "integer" }, "hp": { "type": "object", "properties": { "hp": { "type": "integer", "description": "Hit Points", "markdownDescription": "Hit Points" }, "dt": { "type": "integer", "description": "Damage Threshold", "markdownDescription": "Damage Threshold" }, "mt": { "type": "integer", "description": "Mishap Threshold", "markdownDescription": "Mishap Threshold" } }, "additionalProperties": false, "required": [ "hp", "dt" ] }, "ac": { "type": "integer" }, "resist": { "$ref": "util.json#/$defs/damageResistArray" }, "conditionImmune": { "$ref": "util.json#/$defs/conditionImmunityArray" }, "immune": { "$ref": "util.json#/$defs/damageImmunityArray" }, "vulnerable": { "$ref": "util.json#/$defs/damageVulnerabilityArray" }, "trait": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } } } }, "actionStation": { "type": "array", "description": "The Action Stations section of a vehicle block, for example the \"Helm\" or a weapon.", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } } }, "markdownDescription": "The Action Stations section of a vehicle block, for example the "Helm" or a weapon." }, "reaction": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "entry.json" } } } } }, "token": { "$ref": "util-token.json#/$defs/token" }, "tokenCredit": { "type": "string" }, "tokenCustom": { "const": true }, "hasToken": { "type": "boolean" }, "hasFluff": { "type": "boolean" }, "hasFluffImages": { "type": "boolean" }, "fluff": { "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source", "$ref": "util.json#/$defs/fluffObject", "markdownDescription": "This is intended to be used for Homebrew only - site data should include a fluff file per source" }, "foundryTokenScale": { "$ref": "util-foundry.json#/$defs/foundryTokenScale" }, "foundrySystem": { "$ref": "util-foundry.json#/$defs/foundrySystemObject" }, "foundryActivities": { "$ref": "util-foundry.json#/$defs/foundryActivitiesArray" }, "foundryFlags": { "$ref": "util-foundry.json#/$defs/foundryFlagsObject" }, "foundryImg": { "$ref": "util-foundry.json#/$defs/foundryImg" }, "foundryAdvice": { "$ref": "entry.json" }, "tokenUrl": { "$ref": "util-token.json#/$defs/tokenUrl" }, "tokenHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectHref": { "$ref": "util-token.json#/$defs/tokenHref" }, "foundryTokenSubjectScale": { "$ref": "util-foundry.json#/$defs/foundryTokenSubjectScale" } }, "required": [ "name", "source" ], "additionalProperties": false }, "vehicleCreature": { "type": "object", "properties": { "vehicleType": { "const": "CREATURE" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" } } }, "vehicleObject": { "type": "object", "properties": { "vehicleType": { "const": "OBJECT" }, "terrain": { "$ref": "#/$defs/vehicleTerrain" } } } }, "properties": { "vehicle": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/vehicle" } }, "vehicleUpgrade": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/vehicleUpgrade" } } }, "additionalProperties": false } ```