{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://ironswornrpg.com/datasworn-source.schema.json", "$ref": "#/definitions/SourceRoot", "title": "DataswornSource v0.2.0", "description": "Source data schema for Datasworn, which describes game rules compatible with the Ironsworn tabletop roleplaying game by Shawn Tomkin.\n\nThe source data omits IDs, and makes properties that provide a default value optional; these values are inserted during validation/processing to produce the JSON for distribution.", "definitions": { "SourceRoot": { "title": "SourceRoot", "description": "The root object for a Datasworn source file, whose schema is discriminated by the `type` property. Unlike the JSON schema for distribution, this may be a standalone object (Asset, Npc, Move, OracleRollable, DelveSite, DelveSiteTheme, DelveSiteDomain, or Rarity), but it still must specify its `ruleset` and `datasworn_version`.", "anyOf": [ { "$ref": "#/definitions/RulesPackage" }, { "allOf": [ { "properties": { "type": { "enum": [ "asset", "npc", "move", "oracle_rollable", "delve_site", "delve_site_theme", "delve_site_domain", "rarity" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "type": { "const": "asset", "type": "string" } } }, "then": { "$ref": "#/definitions/Asset" } }, { "if": { "properties": { "type": { "const": "npc", "type": "string" } } }, "then": { "$ref": "#/definitions/Npc" } }, { "if": { "properties": { "type": { "const": "move", "type": "string" } } }, "then": { "$ref": "#/definitions/Move" } }, { "if": { "properties": { "type": { "const": "oracle_rollable", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleRollable" } }, { "if": { "properties": { "type": { "const": "delve_site", "type": "string" } } }, "then": { "$ref": "#/definitions/DelveSite" } }, { "if": { "properties": { "type": { "const": "delve_site_theme", "type": "string" } } }, "then": { "$ref": "#/definitions/DelveSiteTheme" } }, { "if": { "properties": { "type": { "const": "delve_site_domain", "type": "string" } } }, "then": { "$ref": "#/definitions/DelveSiteDomain" } }, { "if": { "properties": { "type": { "const": "rarity", "type": "string" } } }, "then": { "$ref": "#/definitions/Rarity" } } ], "required": [ "type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator." }, { "additionalProperties": true, "type": "object", "required": [ "datasworn_version", "ruleset" ], "properties": { "datasworn_version": { "description": "The version of the Datasworn format used by this data.", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "const": "0.2.0", "type": "string" }, "ruleset": { "$ref": "#/definitions/RulesetId" } } } ] } ] }, "ActionRollMethod": { "title": "ActionRollMethod", "description": " - `miss`: An automatic miss.\n - `weak_hit`: An automatic weak hit.\n - `strong_hit`: An automatic strong hit.\n - `player_choice`: The player chooses which roll option to use.\n - `highest`: Use the roll option with the best/highest value.\n - `lowest`: Use the roll option with the worst/lowest value.\n - `all`: Use _every_ roll option at once.", "enum": [ "miss", "weak_hit", "strong_hit", "player_choice", "highest", "lowest", "all" ] }, "AnyId": { "title": "AnyId", "description": "Represents any kind of non-wildcard ID, including IDs of embedded objects.", "anyOf": [ { "$ref": "#/definitions/AtlasEntryId" }, { "$ref": "#/definitions/NpcId" }, { "$ref": "#/definitions/NpcVariantId" }, { "$ref": "#/definitions/OracleRollableId" }, { "$ref": "#/definitions/AssetAbilityOracleRollableId" }, { "$ref": "#/definitions/MoveOracleRollableId" }, { "$ref": "#/definitions/TruthOptionOracleRollableId" }, { "$ref": "#/definitions/OracleRollableRowId" }, { "$ref": "#/definitions/AssetAbilityOracleRollableRowId" }, { "$ref": "#/definitions/MoveOracleRollableRowId" }, { "$ref": "#/definitions/TruthOptionOracleRollableRowId" }, { "$ref": "#/definitions/AssetId" }, { "$ref": "#/definitions/AssetAbilityId" }, { "$ref": "#/definitions/AssetAbilityMoveId" }, { "$ref": "#/definitions/MoveId" }, { "$ref": "#/definitions/AssetAbilityMoveConditionId" }, { "$ref": "#/definitions/MoveConditionId" }, { "$ref": "#/definitions/AssetAbilityMoveOutcomeId" }, { "$ref": "#/definitions/MoveOutcomeId" }, { "$ref": "#/definitions/AtlasCollectionId" }, { "$ref": "#/definitions/NpcCollectionId" }, { "$ref": "#/definitions/OracleCollectionId" }, { "$ref": "#/definitions/AssetCollectionId" }, { "$ref": "#/definitions/MoveCategoryId" }, { "$ref": "#/definitions/DelveSiteId" }, { "$ref": "#/definitions/DelveSiteDenizenId" }, { "$ref": "#/definitions/DelveSiteDomainId" }, { "$ref": "#/definitions/DelveSiteDomainFeatureId" }, { "$ref": "#/definitions/DelveSiteThemeFeatureId" }, { "$ref": "#/definitions/DelveSiteDomainDangerId" }, { "$ref": "#/definitions/DelveSiteThemeDangerId" }, { "$ref": "#/definitions/DelveSiteThemeId" }, { "$ref": "#/definitions/RarityId" }, { "$ref": "#/definitions/TruthId" }, { "$ref": "#/definitions/TruthOptionId" } ] }, "AnyIdWildcard": { "title": "AnyIdWildcard", "description": "Represents any kind of wildcard ID, including IDs of embedded objects.", "anyOf": [ { "$ref": "#/definitions/AtlasEntryIdWildcard" }, { "$ref": "#/definitions/NpcIdWildcard" }, { "$ref": "#/definitions/NpcVariantIdWildcard" }, { "$ref": "#/definitions/OracleRollableIdWildcard" }, { "$ref": "#/definitions/AssetAbilityOracleRollableIdWildcard" }, { "$ref": "#/definitions/MoveOracleRollableIdWildcard" }, { "$ref": "#/definitions/TruthOptionOracleRollableIdWildcard" }, { "$ref": "#/definitions/OracleRollableRowIdWildcard" }, { "$ref": "#/definitions/AssetAbilityOracleRollableRowIdWildcard" }, { "$ref": "#/definitions/MoveOracleRollableRowIdWildcard" }, { "$ref": "#/definitions/TruthOptionOracleRollableRowIdWildcard" }, { "$ref": "#/definitions/AssetIdWildcard" }, { "$ref": "#/definitions/AssetAbilityIdWildcard" }, { "$ref": "#/definitions/AssetAbilityMoveIdWildcard" }, { "$ref": "#/definitions/MoveIdWildcard" }, { "$ref": "#/definitions/AssetAbilityMoveConditionIdWildcard" }, { "$ref": "#/definitions/MoveConditionIdWildcard" }, { "$ref": "#/definitions/AssetAbilityMoveOutcomeIdWildcard" }, { "$ref": "#/definitions/MoveOutcomeIdWildcard" }, { "$ref": "#/definitions/AtlasCollectionIdWildcard" }, { "$ref": "#/definitions/NpcCollectionIdWildcard" }, { "$ref": "#/definitions/OracleCollectionIdWildcard" }, { "$ref": "#/definitions/AssetCollectionIdWildcard" }, { "$ref": "#/definitions/MoveCategoryIdWildcard" }, { "$ref": "#/definitions/DelveSiteIdWildcard" }, { "$ref": "#/definitions/DelveSiteDenizenIdWildcard" }, { "$ref": "#/definitions/DelveSiteDomainIdWildcard" }, { "$ref": "#/definitions/DelveSiteDomainFeatureIdWildcard" }, { "$ref": "#/definitions/DelveSiteThemeFeatureIdWildcard" }, { "$ref": "#/definitions/DelveSiteDomainDangerIdWildcard" }, { "$ref": "#/definitions/DelveSiteThemeDangerIdWildcard" }, { "$ref": "#/definitions/DelveSiteThemeIdWildcard" }, { "$ref": "#/definitions/RarityIdWildcard" }, { "$ref": "#/definitions/TruthIdWildcard" }, { "$ref": "#/definitions/TruthOptionIdWildcard" } ] }, "AnyMove": { "title": "AnyMove", "anyOf": [ { "$ref": "#/definitions/Move" }, { "$ref": "#/definitions/EmbeddedMove" } ] }, "AnyMoveConditionId": { "title": "AnyMoveConditionId", "anyOf": [ { "$ref": "#/definitions/AssetAbilityMoveConditionId" }, { "$ref": "#/definitions/MoveConditionId" } ] }, "AnyMoveConditionIdWildcard": { "title": "AnyMoveConditionIdWildcard", "anyOf": [ { "$ref": "#/definitions/AssetAbilityMoveConditionIdWildcard" }, { "$ref": "#/definitions/MoveConditionIdWildcard" } ] }, "AnyMoveId": { "title": "AnyMoveId", "anyOf": [ { "$ref": "#/definitions/MoveId" }, { "$ref": "#/definitions/AssetAbilityMoveId" } ] }, "AnyMoveIdWildcard": { "title": "AnyMoveIdWildcard", "anyOf": [ { "$ref": "#/definitions/MoveIdWildcard" }, { "$ref": "#/definitions/AssetAbilityMoveIdWildcard" } ] }, "AnyMoveOutcomeId": { "title": "AnyMoveOutcomeId", "anyOf": [ { "$ref": "#/definitions/AssetAbilityMoveOutcomeId" }, { "$ref": "#/definitions/MoveOutcomeId" } ] }, "AnyMoveOutcomeIdWildcard": { "title": "AnyMoveOutcomeIdWildcard", "anyOf": [ { "$ref": "#/definitions/AssetAbilityMoveOutcomeIdWildcard" }, { "$ref": "#/definitions/MoveOutcomeIdWildcard" } ] }, "AnyOracleRollable": { "title": "AnyOracleRollable", "anyOf": [ { "$ref": "#/definitions/OracleRollable" }, { "$ref": "#/definitions/EmbeddedOracleRollable" } ] }, "AnyOracleRollableId": { "title": "AnyOracleRollableId", "anyOf": [ { "$ref": "#/definitions/OracleRollableId" }, { "$ref": "#/definitions/AssetAbilityOracleRollableId" }, { "$ref": "#/definitions/TruthOptionOracleRollableId" }, { "$ref": "#/definitions/MoveOracleRollableId" } ] }, "AnyOracleRollableIdWildcard": { "title": "AnyOracleRollableIdWildcard", "anyOf": [ { "$ref": "#/definitions/OracleRollableIdWildcard" }, { "$ref": "#/definitions/AssetAbilityOracleRollableIdWildcard" }, { "$ref": "#/definitions/TruthOptionOracleRollableIdWildcard" }, { "$ref": "#/definitions/MoveOracleRollableIdWildcard" } ] }, "AnyOracleRollableRowId": { "title": "AnyOracleRollableRowId", "anyOf": [ { "$ref": "#/definitions/OracleRollableRowId" }, { "$ref": "#/definitions/AssetAbilityOracleRollableRowId" }, { "$ref": "#/definitions/MoveOracleRollableRowId" }, { "$ref": "#/definitions/TruthOptionOracleRollableRowId" } ] }, "AnyOracleRollableRowIdWildcard": { "title": "AnyOracleRollableRowIdWildcard", "anyOf": [ { "$ref": "#/definitions/OracleRollableRowIdWildcard" }, { "$ref": "#/definitions/AssetAbilityOracleRollableRowIdWildcard" }, { "$ref": "#/definitions/MoveOracleRollableRowIdWildcard" }, { "$ref": "#/definitions/TruthOptionOracleRollableRowIdWildcard" } ] }, "Asset": { "title": "Asset", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "category", "abilities", "type" ], "properties": { "_id": { "$ref": "#/definitions/AssetId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/AssetIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "category": { "description": "A localized category label for this asset. This is the surtitle above the asset's name on the card.", "examples": [ "Combat Talent", "Command Vehicle", "Companion", "Deed", "Module", "Path", "Ritual", "Support Vehicle" ], "$ref": "#/definitions/Label" }, "options": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Options are input fields set when the player purchases the asset. They're likely to remain the same through the life of the asset. Typically, they are rendered at the top of the asset card.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetOptionField" } } }, "requirement": { "description": "Describes prerequisites for purchasing or using this asset.", "$ref": "#/definitions/MarkdownString" }, "abilities": { "type": "array", "items": { "description": "Abilities provided by this asset. Most assets have 3.", "$ref": "#/definitions/AssetAbility" } }, "controls": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetControlField" } } }, "count_as_impact": { "default": false, "description": "If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn).", "type": "boolean" }, "attachments": { "$ref": "#/definitions/AssetAttachment" }, "shared": { "default": false, "description": "Most assets only benefit to their owner, but certain assets (like Starforged's module and command vehicle assets) are shared amongst the player's allies, too.", "type": "boolean" }, "type": { "const": "asset", "type": "string" } } }, "AssetAbility": { "title": "AssetAbility", "description": "An asset ability: one of the purchasable features of an asset. Most assets have three.", "type": "object", "required": [ "text" ], "properties": { "_id": { "$ref": "#/definitions/AssetAbilityId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "A handful of asset abilities have a label/name, for instance classic Ironsworn companion assets. Most canonical assets omit this property.", "$ref": "#/definitions/Label" }, "text": { "description": "The complete rules text of this asset ability.", "$ref": "#/definitions/MarkdownString" }, "enabled": { "default": false, "description": "Is this asset ability enabled?", "type": "boolean" }, "moves": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "AssetAbilityMoves", "description": "Unique moves added by this asset ability.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "AssetAbilityMove", "$ref": "#/definitions/EmbeddedMove" } } }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "AssetAbilityOracles", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "AssetAbilityOracleRollable", "$ref": "#/definitions/EmbeddedOracleRollable" } } }, "options": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Fields that are expected to be set once and remain the same through the life of the asset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetAbilityOptionField" } } }, "controls": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Fields whose values are expected to change over the life of the asset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetAbilityControlField" } } }, "enhance_asset": { "description": "Changes made to the asset, when this ability is enabled.", "$ref": "#/definitions/AssetEnhancement" }, "enhance_moves": { "description": "Describes changes made to various moves by this asset ability. Usually these require specific trigger conditions.", "type": "array", "items": { "$ref": "#/definitions/MoveEnhancement" } }, "tags": { "$ref": "#/definitions/Tags" } }, "additionalProperties": false }, "AssetAbilityControlField": { "title": "AssetAbilityControlField", "properties": { "field_type": { "enum": [ "clock", "counter", "checkbox", "text" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "clock", "type": "string" } } }, "then": { "$ref": "#/definitions/ClockField" } }, { "if": { "properties": { "field_type": { "const": "counter", "type": "string" } } }, "then": { "$ref": "#/definitions/CounterField" } }, { "if": { "properties": { "field_type": { "const": "checkbox", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetCheckboxField" } }, { "if": { "properties": { "field_type": { "const": "text", "type": "string" } } }, "then": { "$ref": "#/definitions/TextField" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetAbilityId": { "title": "AssetAbilityId", "description": "A unique ID representing an AssetAbility object.", "pattern": "^asset\\.ability:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)$", "type": "string" }, "AssetAbilityIdWildcard": { "title": "AssetAbilityIdWildcard", "description": "A wildcarded AssetAbilityId that can be used to match multiple AssetAbility objects.", "pattern": "^asset\\.ability:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)$", "type": "string" }, "AssetAbilityMoveConditionId": { "title": "AssetAbilityMoveConditionId", "description": "A unique ID representing an AssetAbilityMoveCondition object.", "pattern": "^asset\\.ability\\.move\\.condition:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+)$", "type": "string" }, "AssetAbilityMoveConditionIdWildcard": { "title": "AssetAbilityMoveConditionIdWildcard", "description": "A wildcarded AssetAbilityMoveConditionId that can be used to match multiple AssetAbilityMoveCondition objects.", "pattern": "^asset\\.ability\\.move\\.condition:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+|\\*)$", "type": "string" }, "AssetAbilityMoveId": { "title": "AssetAbilityMoveId", "description": "A unique ID representing an AssetAbilityMove object.", "pattern": "^asset\\.ability\\.move:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityMoveIdWildcard": { "title": "AssetAbilityMoveIdWildcard", "description": "A wildcarded AssetAbilityMoveId that can be used to match multiple AssetAbilityMove objects.", "pattern": "^asset\\.ability\\.move:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityMoveOutcomeId": { "title": "AssetAbilityMoveOutcomeId", "description": "A unique ID representing an AssetAbilityMoveOutcome object.", "pattern": "^asset\\.ability\\.move\\.outcome:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)\\.([a-z][a-z0-9_]*|\\*)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityMoveOutcomeIdWildcard": { "title": "AssetAbilityMoveOutcomeIdWildcard", "description": "A wildcarded AssetAbilityMoveOutcomeId that can be used to match multiple AssetAbilityMoveOutcome objects.", "pattern": "^asset\\.ability\\.move\\.outcome:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)\\.([a-z][a-z0-9_]*|\\*)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityOptionField": { "title": "AssetAbilityOptionField", "properties": { "field_type": { "enum": [ "text" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "text", "type": "string" } } }, "then": { "$ref": "#/definitions/TextField" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetAbilityOracleRollableId": { "title": "AssetAbilityOracleRollableId", "description": "A unique ID representing an AssetAbilityOracleRollable object.", "pattern": "^asset\\.ability\\.oracle_rollable:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityOracleRollableIdWildcard": { "title": "AssetAbilityOracleRollableIdWildcard", "description": "A wildcarded AssetAbilityOracleRollableId that can be used to match multiple AssetAbilityOracleRollable objects.", "pattern": "^asset\\.ability\\.oracle_rollable:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "AssetAbilityOracleRollableRowId": { "title": "AssetAbilityOracleRollableRowId", "description": "A unique ID representing an AssetAbilityOracleRollableRow object.", "pattern": "^asset\\.ability\\.oracle_rollable\\.row:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+)$", "type": "string" }, "AssetAbilityOracleRollableRowIdWildcard": { "title": "AssetAbilityOracleRollableRowIdWildcard", "description": "A wildcarded AssetAbilityOracleRollableRowId that can be used to match multiple AssetAbilityOracleRollableRow objects.", "pattern": "^asset\\.ability\\.oracle_rollable\\.row:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+|\\*)$", "type": "string" }, "AssetAttachment": { "title": "AssetAttachment", "description": "Describes which assets can be attached to this asset. Example: Starforged's Module assets, which can be equipped by Command Vehicle assets. See p. 55 of Starforged for more info.", "type": "object", "required": [ "assets" ], "properties": { "assets": { "description": "Asset IDs (which may be wildcards) that may be attached to this asset", "type": "array", "items": { "$ref": "#/definitions/AssetIdWildcard" } }, "max": { "default": null, "description": "Null if there's no upper limit to the number of attached assets.", "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ] } }, "additionalProperties": false }, "AssetCardFlipField": { "title": "AssetCardFlipField", "type": "object", "required": [ "label", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "Is the card flipped over?", "default": false, "type": "boolean" }, "field_type": { "const": "card_flip", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" }, "is_impact": { "default": false, "description": "Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?", "type": "boolean" }, "disables_asset": { "default": false, "description": "Does this field disable the asset when its value is set to `true`?", "type": "boolean" } }, "additionalProperties": false }, "AssetCheckboxField": { "title": "AssetCheckboxField", "type": "object", "required": [ "label", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "Is the box checked?", "default": false, "type": "boolean" }, "field_type": { "const": "checkbox", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" }, "is_impact": { "default": false, "description": "Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?", "type": "boolean" }, "disables_asset": { "default": false, "description": "Does this field disable the asset when its value is set to `true`?", "type": "boolean" } }, "additionalProperties": false }, "AssetCollection": { "title": "AssetCollection", "type": "object", "required": [ "name", "_source", "type" ], "properties": { "_id": { "$ref": "#/definitions/AssetCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/AssetCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/AssetCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Asset" } } }, "collections": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetCollection" } } }, "type": { "const": "asset_collection", "type": "string" } }, "additionalProperties": false }, "AssetCollectionId": { "title": "AssetCollectionId", "description": "A unique ID representing an AssetCollection object.", "pattern": "^asset_collection:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){1,4})$", "type": "string" }, "AssetCollectionIdWildcard": { "title": "AssetCollectionIdWildcard", "description": "A wildcarded AssetCollectionId that can be used to match multiple AssetCollection objects.", "pattern": "^asset_collection:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){1,4})$", "type": "string" }, "AssetConditionMeter": { "title": "AssetConditionMeter", "description": "Some assets provide a special condition meter of their own. The most common example is the health meters on companion assets. Asset condition meters may also include their own controls, such as the checkboxes that Starforged companion assets use to indicate they are \"out of action\".", "type": "object", "required": [ "label", "max", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The current value of this meter.", "default": 0, "type": "integer" }, "min": { "default": 0, "description": "The minimum value of this meter.", "type": "integer" }, "max": { "description": "The maximum value of this meter.", "type": "integer" }, "rollable": { "default": true, "description": "Is this meter's `value` usable as a stat in an action roll?", "const": true, "type": "boolean" }, "field_type": { "const": "condition_meter", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" }, "moves": { "description": "Provides hints for moves that interact with this condition meter, such as suffer and recovery moves.", "releaseStage": "experimental", "type": "object", "properties": { "suffer": { "description": "The ID(s) of suffer moves associated with the condition meter. If the suffer move makes an action roll, this condition meter value should be made available as a roll option.", "type": "array", "items": { "examples": [ "move:classic/suffer/companion_endure_harm", "move:starforged/suffer/companion_takes_a_hit", "move:starforged/suffer/withstand_damage" ], "$ref": "#/definitions/AnyMoveIdWildcard" } }, "recover": { "description": "The ID(s) of recovery moves associated with this meter.", "type": "array", "items": { "examples": [ "move:classic/adventure/heal", "move:classic/adventure/make_camp", "move:classic/relationship/sojourn", "move:starforged/recover/heal", "move:starforged/recover/repair" ], "$ref": "#/definitions/AnyMoveIdWildcard" } } } }, "controls": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Checkbox controls rendered as part of the condition meter.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetConditionMeterControlField" } } } }, "additionalProperties": false }, "AssetConditionMeterControlField": { "title": "AssetConditionMeterControlField", "description": "A checkbox control field, rendered as part of an asset condition meter.", "properties": { "field_type": { "enum": [ "checkbox", "card_flip" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "checkbox", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetCheckboxField" } }, { "if": { "properties": { "field_type": { "const": "card_flip", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetCardFlipField" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetConditionMeterEnhancement": { "title": "AssetConditionMeterEnhancement", "description": "Some assets provide a special condition meter of their own. The most common example is the health meters on companion assets. Asset condition meters may also include their own controls, such as the checkboxes that Starforged companion assets use to indicate they are \"out of action\".", "type": "object", "required": [ "field_type", "max" ], "properties": { "field_type": { "const": "condition_meter", "type": "string" }, "max": { "description": "The maximum value of this meter.", "type": "integer" } }, "additionalProperties": false }, "AssetControlField": { "title": "AssetControlField", "properties": { "field_type": { "enum": [ "condition_meter", "select_enhancement", "checkbox", "card_flip" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "condition_meter", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetConditionMeter" } }, { "if": { "properties": { "field_type": { "const": "select_enhancement", "type": "string" } } }, "then": { "$ref": "#/definitions/SelectEnhancementField" } }, { "if": { "properties": { "field_type": { "const": "checkbox", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetCheckboxField" } }, { "if": { "properties": { "field_type": { "const": "card_flip", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetCardFlipField" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetControlFieldEnhancement": { "title": "AssetControlFieldEnhancement", "properties": { "field_type": { "enum": [ "condition_meter" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "condition_meter", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetConditionMeterEnhancement" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetControlValueRef": { "title": "AssetControlValueRef", "description": "A reference to the value of an asset control.", "type": "object", "required": [ "control", "using" ], "properties": { "assets": { "default": null, "description": "Asset IDs (which may be wildcarded) that may provide the control field. For asset ability enhancements, `null` is used to represent the asset's own control fields.", "anyOf": [ { "default": null, "type": "array", "items": { "$ref": "#/definitions/AssetIdWildcard" } }, { "type": "null" } ] }, "control": { "description": "The dictionary key of the asset control field.", "examples": [ "health", "integrity" ], "$ref": "#/definitions/DictKey" }, "using": { "description": "A reference to the value of an asset control.", "const": "asset_control", "type": "string" } }, "additionalProperties": false }, "AssetEnhancement": { "title": "AssetEnhancement", "description": "Describes enhancements made to this asset in a partial asset object. The changes should be applied recursively; only the values that are specified should be changed.", "type": "object", "properties": { "controls": { "remarks": "Deserialize as a dictionary object.", "description": "Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetControlFieldEnhancement" } } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "count_as_impact": { "description": "If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn).", "type": "boolean" }, "attachments": { "$ref": "#/definitions/AssetAttachment" }, "shared": { "description": "Most assets only benefit to their owner, but certain assets (like Starforged's module and command vehicle assets) are shared amongst the player's allies, too.", "type": "boolean" } }, "additionalProperties": false }, "AssetId": { "title": "AssetId", "description": "A unique ID representing an Asset object.", "pattern": "^asset:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})$", "type": "string" }, "AssetIdWildcard": { "title": "AssetIdWildcard", "description": "A wildcarded AssetId that can be used to match multiple Asset objects.", "pattern": "^asset:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})$", "type": "string" }, "AssetOptionField": { "title": "AssetOptionField", "description": "Options are asset input fields which are set once, usually when the character takes the asset. The most common example is the \"name\" field on companion assets. A more complex example is the choice of a god's stat for the Devotant asset.", "properties": { "field_type": { "enum": [ "select_value", "select_enhancement", "text" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "field_type": { "const": "select_value", "type": "string" } } }, "then": { "$ref": "#/definitions/SelectValueField" } }, { "if": { "properties": { "field_type": { "const": "select_enhancement", "type": "string" } } }, "then": { "$ref": "#/definitions/SelectEnhancementField" } }, { "if": { "properties": { "field_type": { "const": "text", "type": "string" } } }, "then": { "$ref": "#/definitions/TextField" } } ], "required": [ "field_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator." }, "AssetOptionValueRef": { "title": "AssetOptionValueRef", "description": "A reference to the value of an asset option.", "type": "object", "required": [ "option", "using" ], "properties": { "assets": { "default": null, "description": "Asset IDs (which may be wildcarded) that may provide the option field. For asset ability enhancements, `null` is used to represent the asset's own option fields.", "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/AssetIdWildcard" } }, { "type": "null" } ] }, "option": { "description": "The dictionary key of the asset option field.", "$ref": "#/definitions/DictKey" }, "using": { "description": "A reference to the value of an asset option.", "const": "asset_option", "type": "string" } }, "additionalProperties": false }, "AtlasCollection": { "title": "AtlasCollection", "type": "object", "required": [ "name", "_source", "type" ], "properties": { "_id": { "$ref": "#/definitions/AtlasCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/AtlasCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/AtlasCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AtlasEntry" } } }, "collections": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AtlasCollection" } } }, "type": { "const": "atlas_collection", "type": "string" } }, "additionalProperties": false }, "AtlasCollectionId": { "title": "AtlasCollectionId", "description": "A unique ID representing an AtlasCollection object.", "pattern": "^atlas_collection:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){1,4})$", "type": "string" }, "AtlasCollectionIdWildcard": { "title": "AtlasCollectionIdWildcard", "description": "A wildcarded AtlasCollectionId that can be used to match multiple AtlasCollection objects.", "pattern": "^atlas_collection:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){1,4})$", "type": "string" }, "AtlasEntry": { "title": "AtlasEntry", "description": "An atlas entry, like the Ironlands region entries found in classic Ironsworn.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "features", "description", "type" ], "properties": { "_id": { "$ref": "#/definitions/AtlasEntryId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/AtlasEntryIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "features": { "type": "array", "items": { "$ref": "#/definitions/MarkdownString" } }, "summary": { "$ref": "#/definitions/MarkdownString" }, "description": { "$ref": "#/definitions/MarkdownString" }, "quest_starter": { "$ref": "#/definitions/MarkdownString" }, "your_truth": { "$ref": "#/definitions/MarkdownString" }, "type": { "const": "atlas_entry", "type": "string" } } }, "AtlasEntryId": { "title": "AtlasEntryId", "description": "A unique ID representing an AtlasEntry object.", "pattern": "^atlas_entry:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})$", "type": "string" }, "AtlasEntryIdWildcard": { "title": "AtlasEntryIdWildcard", "description": "A wildcarded AtlasEntryId that can be used to match multiple AtlasEntry objects.", "pattern": "^atlas_entry:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})$", "type": "string" }, "AttachedAssetControlValueRef": { "title": "AttachedAssetControlValueRef", "description": "A reference to the value of an attached asset control. For example, a Module asset could use this to roll using the `integrity` control of an attached Vehicle.", "type": "object", "required": [ "control", "using" ], "properties": { "control": { "description": "The dictionary key of the asset control field.", "examples": [ "health", "integrity" ], "$ref": "#/definitions/DictKey" }, "using": { "description": "A reference to the value of an attached asset control. For example, a Module asset could use this to roll using the `integrity` control of an attached Vehicle.", "const": "attached_asset_control", "type": "string" } }, "additionalProperties": false }, "AttachedAssetOptionValueRef": { "title": "AttachedAssetOptionValueRef", "description": "A reference to the value of an attached asset option.", "type": "object", "required": [ "option", "using" ], "properties": { "option": { "description": "The dictionary key of the asset option field.", "$ref": "#/definitions/DictKey" }, "using": { "description": "A reference to the value of an attached asset option.", "const": "attached_asset_option", "type": "string" } }, "additionalProperties": false }, "AuthorInfo": { "title": "AuthorInfo", "examples": [ { "name": "Shawn Tomkin", "url": "https://ironswornrpg.com" } ], "description": "Information on the original creator of this material.", "type": "object", "required": [ "name" ], "properties": { "name": { "description": "The name of the author.", "examples": [ "Shawn Tomkin" ], "$ref": "#/definitions/Label" }, "email": { "description": "An optional email contact for the author", "$ref": "#/definitions/Email" }, "url": { "description": "An optional URL for the author's website.", "$ref": "#/definitions/WebUrl" } }, "additionalProperties": false }, "ChallengeRank": { "title": "ChallengeRank", "description": "Challenge rank, represented as an integer from 1 (troublesome) to 5 (epic).\n\n - `1`: Troublesome\n - `2`: Dangerous\n - `3`: Formidable\n - `4`: Extreme\n - `5`: Epic", "enum": [ 1, 2, 3, 4, 5 ] }, "ClockField": { "title": "ClockField", "description": "A clock with 4 or more segments.", "remarks": "Semantics are similar to HTML ``, but rendered as a clock (a circle with equally sized wedges).", "type": "object", "required": [ "label", "max", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The current value of this input.", "default": 0, "type": "integer" }, "min": { "default": 0, "const": 0, "type": "integer", "description": "The minimum number of filled clock segments. This is always 0." }, "max": { "title": "ClockSize", "multipleOf": 2, "minimum": 2, "description": "The size of the clock -- in other words, the maximum number of filled clock segments. Standard clocks have 4, 6, 8, or 10 segments.", "type": "integer" }, "rollable": { "default": false, "const": false, "type": "boolean" }, "field_type": { "const": "clock", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" } }, "additionalProperties": false }, "CollectableType": { "title": "CollectableType", "enum": [ "atlas_entry", "npc", "oracle_rollable", "asset", "move" ] }, "CollectionType": { "title": "CollectionType", "enum": [ "atlas_collection", "npc_collection", "oracle_collection", "asset_collection", "move_category" ] }, "ConditionMeterField": { "title": "ConditionMeterField", "description": "A meter with an integer value, bounded by a minimum and maximum.", "type": "object", "required": [ "label", "max", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The current value of this meter.", "default": 0, "type": "integer" }, "min": { "default": 0, "description": "The minimum value of this meter.", "type": "integer" }, "max": { "description": "The maximum value of this meter.", "type": "integer" }, "rollable": { "default": true, "description": "Is this meter's `value` usable as a stat in an action roll?", "const": true, "type": "boolean" }, "field_type": { "const": "condition_meter", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" } }, "additionalProperties": false }, "ConditionMeterKey": { "title": "ConditionMeterKey", "examples": [ "health", "spirit", "supply" ], "description": "A basic, rollable player character resource specified by the ruleset.", "$ref": "#/definitions/DictKey" }, "ConditionMeterRule": { "title": "ConditionMeterRule", "description": "Describes a standard player character condition meter.", "type": "object", "required": [ "description", "label", "max" ], "properties": { "description": { "description": "A description of this condition meter.", "$ref": "#/definitions/MarkdownString" }, "shared": { "default": false, "description": "Is this condition meter shared by all players?", "type": "boolean" }, "tags": { "releaseStage": "experimental", "$ref": "#/definitions/Tags" }, "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The current value of this meter.", "default": 0, "type": "integer" }, "min": { "default": 0, "description": "The minimum value of this meter.", "type": "integer" }, "max": { "description": "The maximum value of this meter.", "type": "integer" }, "rollable": { "default": true, "description": "Is this meter's `value` usable as a stat in an action roll?", "const": true, "type": "boolean" } }, "additionalProperties": false }, "ConditionMeterValueRef": { "title": "ConditionMeterValueRef", "description": "A reference to the value of a standard player condition meter.", "type": "object", "required": [ "condition_meter", "using" ], "properties": { "condition_meter": { "$ref": "#/definitions/ConditionMeterKey" }, "using": { "description": "A reference to the value of a standard player condition meter.", "const": "condition_meter", "type": "string" } }, "additionalProperties": false }, "CoreTags": { "title": "CoreTags", "type": "object", "properties": { "supernatural": { "description": "This object is supernatural in nature, and is ideal for settings that feature supernatural or mythic powers.", "type": "boolean" }, "technological": { "description": "This object is technological in nature, and is ideal for settings that feature remarkable technologies.", "type": "boolean" }, "requires_allies": { "description": "This object requires allies to function, and is intended for co-op play, or guided play with allies. It is not appropriate for solo play.", "type": "boolean" } }, "additionalProperties": false }, "CounterField": { "title": "CounterField", "description": "A basic counter representing a non-rollable integer value. They usually start at 0, and may or may not have a maximum.", "remarks": "Semantics are similar to ``", "type": "object", "required": [ "label", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The current value of this input.", "default": 0, "type": "integer" }, "min": { "default": 0, "type": "integer", "description": "The (inclusive) minimum value." }, "max": { "default": null, "description": "The (inclusive) maximum value, or `null` if there's no maximum.", "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "rollable": { "default": false, "const": false, "type": "boolean" }, "field_type": { "const": "counter", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" } }, "additionalProperties": false }, "CssColor": { "title": "CssColor", "remarks": "See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value", "description": "A CSS color value.", "type": "string" }, "CustomValue": { "title": "CustomValue", "description": "An arbitrary static integer value with a label.", "type": "object", "required": [ "label", "value", "using" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "type": "integer" }, "using": { "description": "An arbitrary static integer value with a label.", "const": "custom", "type": "string" } }, "additionalProperties": false }, "DelveSite": { "title": "DelveSite", "description": "A delve site with a theme, domain, and denizens.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "rank", "theme", "domain", "description", "denizens", "type" ], "properties": { "_id": { "$ref": "#/definitions/DelveSiteId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/DelveSiteIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "rank": { "$ref": "#/definitions/ChallengeRank" }, "region": { "description": "The ID of an atlas entry representing the region in which this delve site is located.", "$ref": "#/definitions/AtlasEntryId" }, "theme": { "description": "The ID of the site's DelveSiteTheme card.", "$ref": "#/definitions/DelveSiteThemeId" }, "domain": { "description": "The ID of the site's DelveSiteDomain card.", "$ref": "#/definitions/DelveSiteDomainId" }, "extra_card": { "description": "An additional theme or domain card ID, for use with optional rules in Ironsworn: Delve.", "anyOf": [ { "$ref": "#/definitions/DelveSiteThemeId" }, { "$ref": "#/definitions/DelveSiteDomainId" } ] }, "description": { "$ref": "#/definitions/MarkdownString" }, "denizens": { "rollable": "1d100", "description": "Represents the delve site's denizen matrix as an array of objects.", "allOf": [ { "type": "array", "items": { "$ref": "#/definitions/DelveSiteDenizen" } }, { "type": "array", "items": [ { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "very_common", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 1, "type": "number" }, "max": { "const": 27, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "common", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 28, "type": "number" }, "max": { "const": 41, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "common", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 42, "type": "number" }, "max": { "const": 55, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "common", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 56, "type": "number" }, "max": { "const": 69, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "uncommon", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 70, "type": "number" }, "max": { "const": 75, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "uncommon", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 76, "type": "number" }, "max": { "const": 81, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "uncommon", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 82, "type": "number" }, "max": { "const": 87, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "uncommon", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 88, "type": "number" }, "max": { "const": 93, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "rare", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 94, "type": "number" }, "max": { "const": 95, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "rare", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 96, "type": "number" }, "max": { "const": 97, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "rare", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 98, "type": "number" }, "max": { "const": 99, "type": "number" } } } } }, { "additionalProperties": true, "title": "DelveSiteDenizenStatic", "type": "object", "required": [ "frequency", "roll" ], "properties": { "frequency": { "const": "unforeseen", "type": "string" }, "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 100, "type": "number" }, "max": { "const": 100, "type": "number" } } } } } ], "additionalItems": false, "minItems": 12, "maxItems": 12 } ] }, "type": { "const": "delve_site", "type": "string" } } }, "DelveSiteDenizen": { "title": "DelveSiteDenizen", "description": "Represents an entry in a delve site denizen matrix. Denizen matrices are described in Ironsworn: Delve.", "type": "object", "required": [ "frequency", "roll" ], "properties": { "name": { "description": "A name for the denizen, if it's different than the `name` property of the NPC.", "$ref": "#/definitions/Label" }, "npc": { "description": "The ID of the relevant NPC entry, if one is specified.", "$ref": "#/definitions/NpcId" }, "frequency": { "$ref": "#/definitions/DelveSiteDenizenFrequency" }, "roll": { "$ref": "#/definitions/DiceRange" }, "_id": { "$ref": "#/definitions/DelveSiteDenizenId" } }, "additionalProperties": false }, "DelveSiteDenizenFrequency": { "title": "DelveSiteDenizenFrequency", "enum": [ "very_common", "common", "uncommon", "rare", "unforeseen" ] }, "DelveSiteDenizenId": { "title": "DelveSiteDenizenId", "description": "A unique ID representing a DelveSiteDenizen object.", "pattern": "^delve_site\\.denizen:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)\\.(\\d+)$", "type": "string" }, "DelveSiteDenizenIdWildcard": { "title": "DelveSiteDenizenIdWildcard", "description": "A wildcarded DelveSiteDenizenId that can be used to match multiple DelveSiteDenizen objects.", "pattern": "^delve_site\\.denizen:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)\\.(\\d+|\\*)$", "type": "string" }, "DelveSiteDomain": { "title": "DelveSiteDomain", "description": "A delve site Domain card.", "type": "object", "additionalProperties": false, "required": [ "name", "_source", "summary", "features", "dangers", "type" ], "properties": { "_id": { "$ref": "#/definitions/DelveSiteDomainId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/DelveSiteDomainIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "summary": { "description": "The text that appears below the title on the card.", "$ref": "#/definitions/MarkdownString" }, "descriptipn": { "description": "Optional extended description text.", "$ref": "#/definitions/MarkdownString" }, "name_oracle": { "description": "An oracle table ID containing place name elements. For examples, see oracle ID `oracle_rollable:delve/site_name/place/barrow`, and its siblings in oracle collection ID `oracle_collection:delve/site_name/place`. These oracles are used by the site name oracle from Ironsworn: Delve (`oracle_rollable:delve/site_name/format`) to create random names for delve sites.", "$ref": "#/definitions/OracleRollableId" }, "features": { "allOf": [ { "type": "array", "items": { "$ref": "#/definitions/DelveSiteDomainFeature" } }, { "type": "array", "items": [ { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 21, "type": "number" }, "max": { "const": 43, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 44, "type": "number" }, "max": { "const": 56, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 57, "type": "number" }, "max": { "const": 64, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 65, "type": "number" }, "max": { "const": 68, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 69, "type": "number" }, "max": { "const": 72, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 73, "type": "number" }, "max": { "const": 76, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 77, "type": "number" }, "max": { "const": 80, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 81, "type": "number" }, "max": { "const": 84, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 85, "type": "number" }, "max": { "const": 88, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 89, "type": "number" }, "max": { "const": 98, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 99, "type": "number" }, "max": { "const": 99, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 100, "type": "number" }, "max": { "const": 100, "type": "number" } } } } } ], "additionalItems": false, "minItems": 12, "maxItems": 12 } ] }, "dangers": { "allOf": [ { "type": "array", "items": { "$ref": "#/definitions/DelveSiteDomainDanger" } }, { "type": "array", "items": [ { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 31, "type": "number" }, "max": { "const": 33, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 34, "type": "number" }, "max": { "const": 36, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 37, "type": "number" }, "max": { "const": 39, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 40, "type": "number" }, "max": { "const": 42, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 43, "type": "number" }, "max": { "const": 45, "type": "number" } } } } } ], "additionalItems": false, "minItems": 5, "maxItems": 5 } ] }, "type": { "const": "delve_site_domain", "type": "string" } } }, "DelveSiteDomainDanger": { "title": "DelveSiteDomainDanger", "description": "Represents a row in an oracle table, with a single text cell.", "type": "object", "required": [ "text" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/DelveSiteDomainDangerId" } }, "additionalProperties": false }, "DelveSiteDomainDangerId": { "title": "DelveSiteDomainDangerId", "description": "A unique ID representing a DelveSiteDomainDanger object.", "pattern": "^delve_site_domain\\.danger:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)\\.(\\d+)$", "type": "string" }, "DelveSiteDomainDangerIdWildcard": { "title": "DelveSiteDomainDangerIdWildcard", "description": "A wildcarded DelveSiteDomainDangerId that can be used to match multiple DelveSiteDomainDanger objects.", "pattern": "^delve_site_domain\\.danger:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)\\.(\\d+|\\*)$", "type": "string" }, "DelveSiteDomainFeature": { "title": "DelveSiteDomainFeature", "description": "Represents a row in an oracle table, with a single text cell.", "type": "object", "required": [ "text" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/DelveSiteDomainFeatureId" } }, "additionalProperties": false }, "DelveSiteDomainFeatureId": { "title": "DelveSiteDomainFeatureId", "description": "A unique ID representing a DelveSiteDomainFeature object.", "pattern": "^delve_site_domain\\.feature:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)\\.(\\d+)$", "type": "string" }, "DelveSiteDomainFeatureIdWildcard": { "title": "DelveSiteDomainFeatureIdWildcard", "description": "A wildcarded DelveSiteDomainFeatureId that can be used to match multiple DelveSiteDomainFeature objects.", "pattern": "^delve_site_domain\\.feature:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)\\.(\\d+|\\*)$", "type": "string" }, "DelveSiteDomainId": { "title": "DelveSiteDomainId", "description": "A unique ID representing a DelveSiteDomain object.", "pattern": "^delve_site_domain:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)$", "type": "string" }, "DelveSiteDomainIdWildcard": { "title": "DelveSiteDomainIdWildcard", "description": "A wildcarded DelveSiteDomainId that can be used to match multiple DelveSiteDomain objects.", "pattern": "^delve_site_domain:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)$", "type": "string" }, "DelveSiteId": { "title": "DelveSiteId", "description": "A unique ID representing a DelveSite object.", "pattern": "^delve_site:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)$", "type": "string" }, "DelveSiteIdWildcard": { "title": "DelveSiteIdWildcard", "description": "A wildcarded DelveSiteId that can be used to match multiple DelveSite objects.", "pattern": "^delve_site:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)$", "type": "string" }, "DelveSiteTheme": { "title": "DelveSiteTheme", "description": "A delve site theme card.", "type": "object", "additionalProperties": false, "required": [ "name", "_source", "summary", "features", "dangers", "type" ], "properties": { "_id": { "$ref": "#/definitions/DelveSiteThemeId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/DelveSiteThemeIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "summary": { "description": "The text that appears below the title on the card.", "$ref": "#/definitions/MarkdownString" }, "descriptipn": { "description": "Optional extended description text.", "$ref": "#/definitions/MarkdownString" }, "features": { "allOf": [ { "type": "array", "items": { "$ref": "#/definitions/DelveSiteThemeFeature" } }, { "type": "array", "items": [ { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 1, "type": "number" }, "max": { "const": 4, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 5, "type": "number" }, "max": { "const": 8, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 9, "type": "number" }, "max": { "const": 12, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 13, "type": "number" }, "max": { "const": 16, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 17, "type": "number" }, "max": { "const": 20, "type": "number" } } } } } ], "additionalItems": false, "minItems": 5, "maxItems": 5 } ] }, "dangers": { "allOf": [ { "type": "array", "items": { "$ref": "#/definitions/DelveSiteThemeDanger" } }, { "type": "array", "items": [ { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 1, "type": "number" }, "max": { "const": 5, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 6, "type": "number" }, "max": { "const": 10, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 11, "type": "number" }, "max": { "const": 12, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 13, "type": "number" }, "max": { "const": 14, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 15, "type": "number" }, "max": { "const": 16, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 17, "type": "number" }, "max": { "const": 18, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 19, "type": "number" }, "max": { "const": 20, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 21, "type": "number" }, "max": { "const": 22, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 23, "type": "number" }, "max": { "const": 24, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 25, "type": "number" }, "max": { "const": 26, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 27, "type": "number" }, "max": { "const": 28, "type": "number" } } } } }, { "additionalProperties": true, "type": "object", "required": [ "roll" ], "properties": { "roll": { "title": "DiceRangeStatic", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "const": 29, "type": "number" }, "max": { "const": 30, "type": "number" } } } } } ], "additionalItems": false, "minItems": 12, "maxItems": 12 } ] }, "type": { "const": "delve_site_theme", "type": "string" } } }, "DelveSiteThemeDanger": { "title": "DelveSiteThemeDanger", "description": "Represents a row in an oracle table, with a single text cell.", "type": "object", "required": [ "text" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/DelveSiteThemeDangerId" } }, "additionalProperties": false }, "DelveSiteThemeDangerId": { "title": "DelveSiteThemeDangerId", "description": "A unique ID representing a DelveSiteThemeDanger object.", "pattern": "^delve_site_theme\\.danger:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)\\.(\\d+)$", "type": "string" }, "DelveSiteThemeDangerIdWildcard": { "title": "DelveSiteThemeDangerIdWildcard", "description": "A wildcarded DelveSiteThemeDangerId that can be used to match multiple DelveSiteThemeDanger objects.", "pattern": "^delve_site_theme\\.danger:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)\\.(\\d+|\\*)$", "type": "string" }, "DelveSiteThemeFeature": { "title": "DelveSiteThemeFeature", "description": "Represents a row in an oracle table, with a single text cell.", "type": "object", "required": [ "text" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/DelveSiteThemeFeatureId" } }, "additionalProperties": false }, "DelveSiteThemeFeatureId": { "title": "DelveSiteThemeFeatureId", "description": "A unique ID representing a DelveSiteThemeFeature object.", "pattern": "^delve_site_theme\\.feature:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)\\.(\\d+)$", "type": "string" }, "DelveSiteThemeFeatureIdWildcard": { "title": "DelveSiteThemeFeatureIdWildcard", "description": "A wildcarded DelveSiteThemeFeatureId that can be used to match multiple DelveSiteThemeFeature objects.", "pattern": "^delve_site_theme\\.feature:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)\\.(\\d+|\\*)$", "type": "string" }, "DelveSiteThemeId": { "title": "DelveSiteThemeId", "description": "A unique ID representing a DelveSiteTheme object.", "pattern": "^delve_site_theme:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)$", "type": "string" }, "DelveSiteThemeIdWildcard": { "title": "DelveSiteThemeIdWildcard", "description": "A wildcarded DelveSiteThemeId that can be used to match multiple DelveSiteTheme objects.", "pattern": "^delve_site_theme:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)$", "type": "string" }, "DiceExpression": { "title": "DiceExpression", "pattern": "([1-9][0-9]*)d([1-9][0-9]*)([+-]([1-9][0-9]*))?", "description": "A simple dice roll expression with an optional (positive or negative) modifer.", "examples": [ "1d100", "1d6+2", "2d10" ], "type": "string" }, "DiceRange": { "title": "DiceRange", "description": "Represents a range of dice roll results, bounded by `min` and `max` (inclusive).", "type": "object", "required": [ "min", "max" ], "properties": { "min": { "description": "Low end of the dice range.", "type": "integer" }, "max": { "description": "High end of the dice range.", "type": "integer" } }, "additionalProperties": false }, "DictKey": { "title": "DictKey", "pattern": "^[a-z][a-z0-9_]*$", "description": "A `snake_case` key used in a Datasworn dictionary object.", "remarks": "If you need to generate a key from a user-provided label, it's recommended to use a 'slugify' function/library, e.g. https://www.npmjs.com/package/slugify for NodeJS.", "type": "string" }, "Documentation": { "title": "Documentation", "description": "Implementation hints or other developer-facing comments on this node. These should be omitted when representing an object for gameplay.", "type": "string" }, "Email": { "title": "Email", "format": "email", "description": "An email address.", "type": "string" }, "EmbeddedActionRollMove": { "title": "EmbeddedActionRollMove", "type": "object", "required": [ "name", "text", "trigger", "outcomes", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedMoveId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerActionRoll" }, "allow_momentum_burn": { "default": true, "description": "Is burning momentum allowed for this move?", "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "action_roll", "type": "string" } }, "additionalProperties": false }, "EmbeddedMove": { "title": "EmbeddedMove", "properties": { "roll_type": { "enum": [ "action_roll", "no_roll", "progress_roll", "special_track" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "roll_type": { "const": "action_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedActionRollMove" } }, { "if": { "properties": { "roll_type": { "const": "no_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedNoRollMove" } }, { "if": { "properties": { "roll_type": { "const": "progress_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedProgressRollMove" } }, { "if": { "properties": { "roll_type": { "const": "special_track", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedSpecialTrackMove" } } ], "required": [ "roll_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator." }, "EmbeddedMoveId": { "title": "EmbeddedMoveId", "$ref": "#/definitions/AssetAbilityMoveId" }, "EmbeddedMoveIdWildcard": { "title": "EmbeddedMoveIdWildcard", "$ref": "#/definitions/AssetAbilityMoveIdWildcard" }, "EmbeddedNoRollMove": { "title": "EmbeddedNoRollMove", "type": "object", "required": [ "name", "text", "trigger", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedMoveId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerNoRoll" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "default": null, "type": "null" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "no_roll", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleColumnText": { "title": "EmbeddedOracleColumnText", "type": "object", "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleColumnText2": { "title": "EmbeddedOracleColumnText2", "type": "object", "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText2" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text2", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleColumnText3": { "title": "EmbeddedOracleColumnText3", "type": "object", "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText3" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text3", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleRollable": { "title": "EmbeddedOracleRollable", "properties": { "oracle_type": { "enum": [ "table_text", "table_text2", "table_text3", "column_text", "column_text2", "column_text3" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "oracle_type": { "const": "table_text", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleTableText" } }, { "if": { "properties": { "oracle_type": { "const": "table_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleTableText2" } }, { "if": { "properties": { "oracle_type": { "const": "table_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleTableText3" } }, { "if": { "properties": { "oracle_type": { "const": "column_text", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleColumnText" } }, { "if": { "properties": { "oracle_type": { "const": "column_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleColumnText2" } }, { "if": { "properties": { "oracle_type": { "const": "column_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/EmbeddedOracleColumnText3" } } ], "required": [ "oracle_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator." }, "EmbeddedOracleRollableId": { "title": "EmbeddedOracleRollableId", "anyOf": [ { "$ref": "#/definitions/AssetAbilityOracleRollableId" }, { "$ref": "#/definitions/TruthOptionOracleRollableId" }, { "$ref": "#/definitions/MoveOracleRollableId" } ] }, "EmbeddedOracleRollableIdWildcard": { "title": "EmbeddedOracleRollableIdWildcard", "anyOf": [ { "$ref": "#/definitions/AssetAbilityOracleRollableIdWildcard" }, { "$ref": "#/definitions/TruthOptionOracleRollableIdWildcard" }, { "$ref": "#/definitions/MoveOracleRollableIdWildcard" } ] }, "EmbeddedOracleTableText": { "title": "EmbeddedOracleTableText", "type": "object", "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText" } }, "column_labels": { "title": "TextColumnLabels", "default": { "roll": "Roll", "text": "Result" }, "type": "object", "required": [ "roll", "text" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleTableText2": { "title": "EmbeddedOracleTableText2", "type": "object", "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText2" } }, "column_labels": { "title": "Text2ColumnLabels", "default": { "roll": "Roll", "text": "Result", "text2": "Details" }, "type": "object", "required": [ "roll", "text", "text2" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text2", "type": "string" } }, "additionalProperties": false }, "EmbeddedOracleTableText3": { "title": "EmbeddedOracleTableText3", "type": "object", "required": [ "name", "rows", "column_labels", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedOracleRollableId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText3" } }, "column_labels": { "title": "Text3ColumnLabels", "type": "object", "required": [ "roll", "text", "text2", "text3" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" }, "text3": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text3", "type": "string" } }, "additionalProperties": false }, "EmbeddedProgressRollMove": { "title": "EmbeddedProgressRollMove", "type": "object", "required": [ "name", "text", "trigger", "outcomes", "type", "roll_type", "tracks" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedMoveId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerProgressRoll" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "progress_roll", "type": "string" }, "tracks": { "description": "Describes the common features of progress tracks associated with this move.", "$ref": "#/definitions/ProgressTrackTypeInfo" } }, "additionalProperties": false }, "EmbeddedSpecialTrackMove": { "title": "EmbeddedSpecialTrackMove", "type": "object", "required": [ "name", "text", "trigger", "outcomes", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/EmbeddedMoveId" }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerSpecialTrack" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "special_track", "type": "string" } }, "additionalProperties": false }, "EmbedOnlyType": { "title": "EmbedOnlyType", "enum": [ "ability", "condition", "outcome", "option", "row", "feature", "danger", "denizen", "variant" ] }, "EntityPrompt": { "title": "EntityPrompt", "description": "This type is a placeholder and may see signficant changes in v0.2.0.", "releaseStage": "experimental", "type": "object", "required": [ "text" ], "properties": { "text": { "$ref": "#/definitions/MarkdownString" } }, "additionalProperties": false }, "Expansion": { "title": "Expansion", "additionalProperties": true, "description": "A Datasworn package that relies on an external package to provide its ruleset.", "type": "object", "required": [ "_id", "type", "datasworn_version", "ruleset" ], "properties": { "_id": { "$ref": "#/definitions/ExpansionId" }, "type": { "const": "expansion", "type": "string" }, "datasworn_version": { "description": "The version of the Datasworn format used by this data.", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "const": "0.2.0", "type": "string" }, "description": { "$ref": "#/definitions/MarkdownString" }, "title": { "description": "The title of the source document.", "examples": [ "Ironsworn Rulebook", "Ironsworn Assets Master Set", "Ironsworn: Delve", "Ironsworn: Starforged Rulebook", "Ironsworn: Starforged Assets", "Sundered Isles" ], "$ref": "#/definitions/Label" }, "authors": { "minItems": 1, "description": "Lists authors credited by the source material.", "type": "array", "items": { "$ref": "#/definitions/AuthorInfo" } }, "date": { "pattern": "[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))", "format": "date", "remarks": "You may prefer to deserialize this as a Date object.", "description": "The date of the source documents's last update, formatted YYYY-MM-DD. Required because it's used to determine whether the data needs updating.", "type": "string" }, "url": { "description": "A URL where the source document is available.", "examples": [ "https://ironswornrpg.com" ], "$ref": "#/definitions/WebUrl" }, "license": { "description": "An URL pointing to the location where this content's license can be found.\n\nA `null` here indicates that the content provides __no__ license, and is not intended for redistribution.", "examples": [ "https://creativecommons.org/licenses/by/4.0", "https://creativecommons.org/licenses/by-nc-sa/4.0" ], "anyOf": [ { "$ref": "#/definitions/WebUrl" }, { "type": "null" } ] }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleTablesCollection" } } }, "moves": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing move categories, which contain moves.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/MoveCategory" } } }, "assets": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing asset collections, which contain assets.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetCollection" } } }, "atlas": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing atlas collections, which contain atlas entries.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AtlasCollection" } } }, "npcs": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing NPC collections, which contain NPCs.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/NpcCollection" } } }, "truths": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object of truth categories.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Truth" } } }, "rarities": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing rarities, like those presented in Ironsworn: Delve.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Rarity" } } }, "delve_sites": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSite" } } }, "site_themes": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing delve site themes.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSiteTheme" } } }, "site_domains": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing delve site domains.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSiteDomain" } } }, "ruleset": { "$ref": "#/definitions/RulesetId" }, "rules": { "$ref": "#/definitions/RulesExpansion" } } }, "ExpansionId": { "title": "ExpansionId", "examples": [ "delve", "sundered_isles" ], "pattern": "^[a-z][a-z0-9_]*$", "description": "The ID of a Datasworn package that relies on an external package to provide its ruleset.", "type": "string" }, "I18nHint": { "title": "I18nHint", "releaseStage": "experimental", "type": "object", "properties": { "part_of_speech": { "description": "The part of speech for this string.", "$ref": "#/definitions/PartOfSpeech" } }, "additionalProperties": false }, "I18nHints": { "title": "I18nHints", "description": "Internationalization/localization hints for the text content of this object.", "releaseStage": "experimental", "type": "object", "properties": { "text": { "$ref": "#/definitions/I18nHint" }, "text2": { "$ref": "#/definitions/I18nHint" }, "text3": { "$ref": "#/definitions/I18nHint" }, "template": { "type": "object", "properties": { "text": { "$ref": "#/definitions/I18nHint" }, "text2": { "$ref": "#/definitions/I18nHint" }, "text3": { "$ref": "#/definitions/I18nHint" } } } }, "additionalProperties": false }, "ImpactCategory": { "title": "ImpactCategory", "description": "Describes a category of standard impacts/debilities.", "type": "object", "required": [ "label", "description" ], "properties": { "label": { "description": "A label for this impact category.", "$ref": "#/definitions/Label" }, "description": { "description": "A description of this impact category.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object of the Impacts in this category.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/ImpactRule" } } } }, "additionalProperties": false }, "ImpactRule": { "title": "ImpactRule", "description": "Describes a standard impact/debility.", "type": "object", "required": [ "label", "description" ], "properties": { "label": { "description": "The label for this impact.", "$ref": "#/definitions/Label" }, "description": { "description": "A description of this impact.", "$ref": "#/definitions/MarkdownString" }, "shared": { "default": false, "description": "Is this impact applied to all players at once?", "type": "boolean" }, "prevents_recovery": { "default": [], "description": "Any ruleset condition meters that can't recover when this impact is active.", "type": "array", "items": { "$ref": "#/definitions/ConditionMeterKey" } }, "permanent": { "default": false, "description": "Is this impact permanent?", "type": "boolean" }, "tags": { "releaseStage": "experimental", "$ref": "#/definitions/Tags" } }, "additionalProperties": false }, "Label": { "title": "Label", "description": "A localized, player-facing name or label, formatted as plain text. In some contexts it may be undesirable to render this text, but it should always be exposed to assistive technology (e.g. with `aria-label` in HTML).", "i18n": true, "type": "string" }, "MarkdownString": { "title": "MarkdownString", "description": "Localized, player-facing text, formatted in Markdown. It is *not* formatted for use \"out of the box\"; it uses some custom syntax, intended to be replaced in whatever way is most appropriate for your implementation.\n\n* `[Link text](datasworn:move:starforged/suffer/pay_the_price)`: A link to the identified object. The ID must conform to the `AnyId` type; no wildcards allowed.\n* `{{table>oracle_rollable:starforged/core/action}}`: the referenced oracle is rendered here in the source material. The ID must conform to the `AnyOracleRollableId` type; no wildcards allowed.\n* `{{table_columns>move:delve/delve/delve_the_depths}}`: Render *all* direct OracleRollable children of the identified node. This can be an OracleCollectionId, or the ID of anything that can have EmbeddedOracleRollables (such as a Move or TruthOption).\n", "format": "markdown", "i18n": true, "type": "string" }, "MarkdownTemplateString": { "title": "MarkdownTemplateString", "i18n": true, "description": "A rich text string in Markdown with replaced values from oracle roll results.\n\nThe custom syntax `{{some_row_key>some_oracle_table_id}}` should be replaced by the `some_row_key` string of a rolled oracle table. This is usually the `text` key, for example `{{text>oracle_rollable:starforged/core/action}}`\n", "format": "markdown", "releaseStage": "experimental", "type": "string" }, "Move": { "title": "Move", "properties": { "roll_type": { "enum": [ "action_roll", "no_roll", "progress_roll", "special_track" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "roll_type": { "const": "action_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveActionRoll" } }, { "if": { "properties": { "roll_type": { "const": "no_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveNoRoll" } }, { "if": { "properties": { "roll_type": { "const": "progress_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveProgressRoll" } }, { "if": { "properties": { "roll_type": { "const": "special_track", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveSpecialTrack" } } ], "required": [ "roll_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator." }, "MoveActionRoll": { "title": "Move (action roll)", "description": "A move that makes an action roll.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "text", "trigger", "outcomes", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/MoveId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.", "type": "array", "items": { "$ref": "#/definitions/MoveIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "MoveOracles", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "MoveOracleRollable", "$ref": "#/definitions/EmbeddedOracleRollable" } } }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerActionRoll" }, "allow_momentum_burn": { "default": true, "description": "Is burning momentum allowed for this move?", "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "action_roll", "type": "string" } } }, "MoveActionRollEnhancement": { "title": "MoveActionRollEnhancement", "description": "An object that describes changes to a move. These changes should be applied recursively, altering only the specified properties; enhanced arrays should be concatencated with the original array value.", "type": "object", "required": [ "roll_type" ], "properties": { "enhances": { "description": "An array of wildcard IDs. An item must match one of the wildcard IDs to receive this enhancement. If this is `null`, any ID is valid.", "default": null, "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/AnyMoveIdWildcard" } }, { "type": "null" } ] }, "roll_type": { "description": "A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.", "const": "action_roll", "type": "string" }, "trigger": { "$ref": "#/definitions/TriggerActionRollEnhancement" } }, "additionalProperties": false }, "MoveCategory": { "title": "MoveCategory", "type": "object", "required": [ "name", "_source", "type" ], "properties": { "_id": { "$ref": "#/definitions/MoveCategoryId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/MoveCategoryIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/MoveCategoryIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Move" } } }, "collections": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/MoveCategory" } } }, "type": { "const": "move_category", "type": "string" } }, "additionalProperties": false }, "MoveCategoryId": { "title": "MoveCategoryId", "description": "A unique ID representing a MoveCategory object.", "pattern": "^move_category:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){1,4})$", "type": "string" }, "MoveCategoryIdWildcard": { "title": "MoveCategoryIdWildcard", "description": "A wildcarded MoveCategoryId that can be used to match multiple MoveCategory objects.", "pattern": "^move_category:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){1,4})$", "type": "string" }, "MoveConditionId": { "title": "MoveConditionId", "description": "A unique ID representing a MoveCondition object.", "pattern": "^move\\.condition:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)$", "type": "string" }, "MoveConditionIdWildcard": { "title": "MoveConditionIdWildcard", "description": "A wildcarded MoveConditionId that can be used to match multiple MoveCondition objects.", "pattern": "^move\\.condition:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)$", "type": "string" }, "MoveEnhancement": { "title": "MoveEnhancement", "properties": { "roll_type": { "enum": [ "action_roll", "no_roll", "progress_roll", "special_track" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "roll_type": { "const": "action_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveActionRollEnhancement" } }, { "if": { "properties": { "roll_type": { "const": "no_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveNoRollEnhancement" } }, { "if": { "properties": { "roll_type": { "const": "progress_roll", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveProgressRollEnhancement" } }, { "if": { "properties": { "roll_type": { "const": "special_track", "type": "string" } } }, "then": { "$ref": "#/definitions/MoveSpecialTrackEnhancement" } } ], "required": [ "roll_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator." }, "MoveId": { "title": "MoveId", "description": "A unique ID representing a Move object.", "pattern": "^move:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})$", "type": "string" }, "MoveIdWildcard": { "title": "MoveIdWildcard", "description": "A wildcarded MoveId that can be used to match multiple Move objects.", "pattern": "^move:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})$", "type": "string" }, "MoveNoRoll": { "title": "MoveNoRoll", "description": "A move that makes no progress rolls or action rolls.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "text", "trigger", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/MoveId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.", "type": "array", "items": { "$ref": "#/definitions/MoveIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "MoveOracles", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "MoveOracleRollable", "$ref": "#/definitions/EmbeddedOracleRollable" } } }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerNoRoll" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "default": null, "type": "null" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "no_roll", "type": "string" } } }, "MoveNoRollEnhancement": { "title": "MoveNoRollEnhancement", "description": "An object that describes changes to a move. These changes should be applied recursively, altering only the specified properties; enhanced arrays should be concatencated with the original array value.", "type": "object", "required": [ "roll_type" ], "properties": { "enhances": { "description": "An array of wildcard IDs. An item must match one of the wildcard IDs to receive this enhancement. If this is `null`, any ID is valid.", "default": null, "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/AnyMoveIdWildcard" } }, { "type": "null" } ] }, "roll_type": { "description": "A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.", "const": "no_roll", "type": "string" }, "trigger": { "$ref": "#/definitions/TriggerNoRollEnhancement" } }, "additionalProperties": false }, "MoveOracleRollableId": { "title": "MoveOracleRollableId", "description": "A unique ID representing a MoveOracleRollable object.", "pattern": "^move\\.oracle_rollable:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "MoveOracleRollableIdWildcard": { "title": "MoveOracleRollableIdWildcard", "description": "A wildcarded MoveOracleRollableId that can be used to match multiple MoveOracleRollable objects.", "pattern": "^move\\.oracle_rollable:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "MoveOracleRollableRowId": { "title": "MoveOracleRollableRowId", "description": "A unique ID representing a MoveOracleRollableRow object.", "pattern": "^move\\.oracle_rollable\\.row:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+)$", "type": "string" }, "MoveOracleRollableRowIdWildcard": { "title": "MoveOracleRollableRowIdWildcard", "description": "A wildcarded MoveOracleRollableRowId that can be used to match multiple MoveOracleRollableRow objects.", "pattern": "^move\\.oracle_rollable\\.row:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.([a-z][a-z0-9_]*|\\*)\\.(\\d+|\\*)$", "type": "string" }, "MoveOutcome": { "title": "MoveOutcome", "type": "object", "required": [ "text" ], "properties": { "_id": { "$ref": "#/definitions/AnyMoveOutcomeId" }, "text": { "$ref": "#/definitions/MarkdownString" }, "oracle_rolls": { "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } } }, "additionalProperties": false }, "MoveOutcomeId": { "title": "MoveOutcomeId", "description": "A unique ID representing a MoveOutcome object.", "pattern": "^move\\.outcome:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "MoveOutcomeIdWildcard": { "title": "MoveOutcomeIdWildcard", "description": "A wildcarded MoveOutcomeId that can be used to match multiple MoveOutcome objects.", "pattern": "^move\\.outcome:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "MoveOutcomes": { "title": "MoveOutcomes", "description": "A standalone localized description for each move outcome (miss, weak hit, or strong hit). This is for for e.g. VTT implementations, where it's often useful to display only the rules text relevant to a roll result.\n\n This often requires light editorialization to create text that can stand alone without reference to the rest of the move. For example, 'as above' (in reference to another move outcome) shouldn't be used here; instead, the relevant text should be repeated.", "type": "object", "required": [ "strong_hit", "weak_hit", "miss" ], "properties": { "strong_hit": { "$ref": "#/definitions/MoveOutcome" }, "weak_hit": { "$ref": "#/definitions/MoveOutcome" }, "miss": { "$ref": "#/definitions/MoveOutcome" } }, "additionalProperties": false }, "MoveProgressRoll": { "title": "Progress Move", "description": "A progress move that rolls on a standard progress track type (whose features are defined by this move object). For progress rolls that use special tracks, see MoveSpecialTrack.", "type": "object", "required": [ "name", "_source", "text", "trigger", "outcomes", "type", "roll_type", "tracks" ], "properties": { "_id": { "$ref": "#/definitions/MoveId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.", "type": "array", "items": { "$ref": "#/definitions/MoveIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "MoveOracles", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "MoveOracleRollable", "$ref": "#/definitions/EmbeddedOracleRollable" } } }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerProgressRoll" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "progress_roll", "type": "string" }, "tracks": { "description": "Describes the common features of progress tracks associated with this move.", "$ref": "#/definitions/ProgressTrackTypeInfo" } }, "additionalProperties": false }, "MoveProgressRollEnhancement": { "title": "MoveProgressRollEnhancement", "description": "An object that describes changes to a move. These changes should be applied recursively, altering only the specified properties; enhanced arrays should be concatencated with the original array value.", "type": "object", "required": [ "roll_type" ], "properties": { "enhances": { "description": "An array of wildcard IDs. An item must match one of the wildcard IDs to receive this enhancement. If this is `null`, any ID is valid.", "default": null, "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/AnyMoveIdWildcard" } }, { "type": "null" } ] }, "roll_type": { "description": "A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.", "const": "progress_roll", "type": "string" }, "trigger": { "$ref": "#/definitions/TriggerProgressRollEnhancement" } }, "additionalProperties": false }, "MoveRollType": { "title": "MoveRollType", "description": " - `no_roll`: A move that makes no action rolls or progress rolls.\n - `action_roll`: A move that makes an action roll.\n - `progress_roll`: A progress move that rolls on a standard progress track type (defined by this move).\n - `special_track`: A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", "enum": [ "no_roll", "action_roll", "progress_roll", "special_track" ] }, "MoveSpecialTrack": { "title": "Progress Move (special track roll)", "description": "A progress move that rolls on a special track, such as Legacies (Starforged) or Bonds (classic Ironsworn). For progress moves that use standard progress tracks, see MoveProgressRoll instead.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "text", "trigger", "outcomes", "type", "roll_type" ], "properties": { "_id": { "$ref": "#/definitions/MoveId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.", "type": "array", "items": { "$ref": "#/definitions/MoveIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "text": { "description": "The complete rules text of the move.", "$ref": "#/definitions/MarkdownString" }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "title": "MoveOracles", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "title": "MoveOracleRollable", "$ref": "#/definitions/EmbeddedOracleRollable" } } }, "trigger": { "title": "Trigger", "description": "Trigger conditions for this move.", "$ref": "#/definitions/TriggerSpecialTrack" }, "allow_momentum_burn": { "default": false, "description": "Is burning momentum allowed for this move?", "const": false, "type": "boolean" }, "outcomes": { "title": "MoveOutcomes", "$ref": "#/definitions/MoveOutcomes" }, "type": { "const": "move", "type": "string" }, "roll_type": { "const": "special_track", "type": "string" } } }, "MoveSpecialTrackEnhancement": { "title": "MoveSpecialTrackEnhancement", "description": "An object that describes changes to a move. These changes should be applied recursively, altering only the specified properties; enhanced arrays should be concatencated with the original array value.", "type": "object", "required": [ "roll_type" ], "properties": { "enhances": { "description": "An array of wildcard IDs. An item must match one of the wildcard IDs to receive this enhancement. If this is `null`, any ID is valid.", "default": null, "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/AnyMoveIdWildcard" } }, { "type": "null" } ] }, "roll_type": { "description": "A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.", "const": "special_track", "type": "string" }, "trigger": { "$ref": "#/definitions/TriggerSpecialTrackEnhancement" } }, "additionalProperties": false }, "NonCollectableType": { "title": "NonCollectableType", "enum": [ "delve_site", "delve_site_domain", "delve_site_theme", "rarity", "truth" ] }, "Npc": { "title": "Npc", "description": "A non-player character entry, similar to those in Chapter 5 of the Ironsworn Rulebook, or Chapter 4 of Starforged.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "features", "description", "rank", "nature", "drives", "tactics", "type" ], "properties": { "_id": { "$ref": "#/definitions/NpcId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/NpcIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "features": { "type": "array", "items": { "$ref": "#/definitions/MarkdownString" } }, "summary": { "$ref": "#/definitions/MarkdownString" }, "description": { "$ref": "#/definitions/MarkdownString" }, "quest_starter": { "$ref": "#/definitions/MarkdownString" }, "your_truth": { "$ref": "#/definitions/MarkdownString" }, "rank": { "description": "The suggested challenge rank for this NPC.", "$ref": "#/definitions/ChallengeRank" }, "nature": { "$ref": "#/definitions/NpcNature" }, "drives": { "type": "array", "items": { "$ref": "#/definitions/MarkdownString" } }, "tactics": { "type": "array", "items": { "$ref": "#/definitions/MarkdownString" } }, "variants": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/NpcVariant" } } }, "type": { "const": "npc", "type": "string" } } }, "NpcCollection": { "title": "NpcCollection", "type": "object", "required": [ "name", "_source", "type" ], "properties": { "_id": { "$ref": "#/definitions/NpcCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/NpcCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/NpcCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Npc" } } }, "collections": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/NpcCollection" } } }, "type": { "const": "npc_collection", "type": "string" } }, "additionalProperties": false }, "NpcCollectionId": { "title": "NpcCollectionId", "description": "A unique ID representing a NpcCollection object.", "pattern": "^npc_collection:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){1,4})$", "type": "string" }, "NpcCollectionIdWildcard": { "title": "NpcCollectionIdWildcard", "description": "A wildcarded NpcCollectionId that can be used to match multiple NpcCollection objects.", "pattern": "^npc_collection:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){1,4})$", "type": "string" }, "NpcId": { "title": "NpcId", "description": "A unique ID representing a Npc object.", "pattern": "^npc:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})$", "type": "string" }, "NpcIdWildcard": { "title": "NpcIdWildcard", "description": "A wildcarded NpcId that can be used to match multiple Npc objects.", "pattern": "^npc:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})$", "type": "string" }, "NpcNature": { "title": "NpcNature", "description": "A localized category label describing the nature of this NPC.\n\nIn Ironsworn classic, this is probably the singular form of the parent collection's name.\n\nFor Starforged, see the table on p. 258 for examples.", "examples": [ "Ironlander", "Firstborn", "Animal", "Beast", "Horror", "Anomaly", "Creature", "Human", "Machine", "Monster", "Vehicle" ], "$ref": "#/definitions/Label" }, "NpcVariant": { "title": "NpcVariant", "type": "object", "required": [ "name", "rank", "nature", "description" ], "properties": { "_id": { "$ref": "#/definitions/NpcVariantId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "$ref": "#/definitions/Label" }, "rank": { "description": "The suggested challenge rank for this NPC.", "$ref": "#/definitions/ChallengeRank" }, "nature": { "$ref": "#/definitions/NpcNature" }, "summary": { "$ref": "#/definitions/MarkdownString" }, "description": { "$ref": "#/definitions/MarkdownString" } }, "additionalProperties": false }, "NpcVariantId": { "title": "NpcVariantId", "description": "A unique ID representing a NpcVariant object.", "pattern": "^npc\\.variant:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "NpcVariantIdWildcard": { "title": "NpcVariantIdWildcard", "description": "A wildcarded NpcVariantId that can be used to match multiple NpcVariant objects.", "pattern": "^npc\\.variant:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.([a-z][a-z0-9_]*|\\*)$", "type": "string" }, "OracleCollection": { "title": "OracleCollection", "properties": { "oracle_type": { "enum": [ "tables", "table_shared_rolls", "table_shared_text", "table_shared_text2", "table_shared_text3" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "oracle_type": { "const": "tables", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTablesCollection" } }, { "if": { "properties": { "oracle_type": { "const": "table_shared_rolls", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableSharedRolls" } }, { "if": { "properties": { "oracle_type": { "const": "table_shared_text", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableSharedText" } }, { "if": { "properties": { "oracle_type": { "const": "table_shared_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableSharedText2" } }, { "if": { "properties": { "oracle_type": { "const": "table_shared_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableSharedText3" } } ], "required": [ "oracle_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator." }, "OracleCollectionId": { "title": "OracleCollectionId", "description": "A unique ID representing an OracleCollection object.", "pattern": "^oracle_collection:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){1,4})$", "type": "string" }, "OracleCollectionIdWildcard": { "title": "OracleCollectionIdWildcard", "description": "A wildcarded OracleCollectionId that can be used to match multiple OracleCollection objects.", "pattern": "^oracle_collection:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){1,4})$", "type": "string" }, "OracleColumnText": { "title": "OracleColumnText", "description": "Represents a single column in an OracleCollection.", "type": "object", "additionalProperties": true, "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text", "type": "string" } } }, "OracleColumnText2": { "title": "OracleColumnText2", "type": "object", "additionalProperties": true, "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText2" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text2", "type": "string" } } }, "OracleColumnText3": { "title": "OracleColumnText3", "type": "object", "additionalProperties": true, "required": [ "name", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText3" } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "column_text3", "type": "string" } } }, "OracleDuplicateBehavior": { "title": "OracleDuplicateBehavior", "description": "Special roll instructions to use when rolling multiple times on a single oracle.\n\n - `reroll`: Duplicate results should be re-rolled.\n - `keep`: Duplicates results should be kept.\n - `make_it_worse`: Duplicate results should be kept, and they compound to make things worse.", "enum": [ "reroll", "keep", "make_it_worse" ] }, "OracleMatchBehavior": { "title": "OracleMatchBehavior", "type": "object", "required": [ "text" ], "properties": { "text": { "$ref": "#/definitions/MarkdownString" } }, "additionalProperties": false }, "OracleRoll": { "title": "OracleRoll", "type": "object", "properties": { "oracle": { "default": null, "description": "The ID of the oracle to be rolled. A `null` value indicates that it's a roll on the same table.", "anyOf": [ { "$ref": "#/definitions/OracleRollableId" }, { "type": "null" } ] }, "auto": { "default": false, "description": "Both Ironsworn and Starforged explicitly recommend *against* rolling all details at once. That said, some oracle results only provide useful information once a secondary roll occurs, such as \"Action + Theme\" or \"Roll twice\".", "type": "boolean" }, "duplicates": { "description": "Special rules on how to handle duplicate results, when rolling multiple times.", "default": "reroll", "$ref": "#/definitions/OracleDuplicateBehavior" }, "dice": { "default": null, "description": "The dice roll to make on the oracle table. Set it to `null` if you just want the table's default.", "anyOf": [ { "$ref": "#/definitions/DiceExpression" }, { "type": "null" } ] }, "number_of_rolls": { "minimum": 1, "default": 1, "description": "The number of times to roll.", "type": "integer" } }, "additionalProperties": false }, "OracleRollable": { "title": "OracleRollable", "description": "A collection of table rows from which random results may be rolled. This may represent a standalone table, or a column in a larger table.", "properties": { "oracle_type": { "enum": [ "table_text", "table_text2", "table_text3", "column_text", "column_text2", "column_text3" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "oracle_type": { "const": "table_text", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText" } }, { "if": { "properties": { "oracle_type": { "const": "table_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText2" } }, { "if": { "properties": { "oracle_type": { "const": "table_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText3" } }, { "if": { "properties": { "oracle_type": { "const": "column_text", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleColumnText" } }, { "if": { "properties": { "oracle_type": { "const": "column_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleColumnText2" } }, { "if": { "properties": { "oracle_type": { "const": "column_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleColumnText3" } } ], "required": [ "oracle_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator." }, "OracleRollableId": { "title": "OracleRollableId", "description": "A unique ID representing an OracleRollable object.", "pattern": "^oracle_rollable:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})$", "type": "string" }, "OracleRollableIdWildcard": { "title": "OracleRollableIdWildcard", "description": "A wildcarded OracleRollableId that can be used to match multiple OracleRollable objects.", "pattern": "^oracle_rollable:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})$", "type": "string" }, "OracleRollableRow": { "title": "OracleRollableRow", "anyOf": [ { "$ref": "#/definitions/OracleRollableRowText" }, { "$ref": "#/definitions/OracleRollableRowText2" }, { "$ref": "#/definitions/OracleRollableRowText3" } ] }, "OracleRollableRowId": { "title": "OracleRollableRowId", "description": "A unique ID representing an OracleRollableRow object.", "pattern": "^oracle_rollable\\.row:([a-z][a-z0-9_]*(?:\\/[a-z][a-z0-9_]*){2,5})\\.(\\d+)$", "type": "string" }, "OracleRollableRowIdWildcard": { "title": "OracleRollableRowIdWildcard", "description": "A wildcarded OracleRollableRowId that can be used to match multiple OracleRollableRow objects.", "pattern": "^oracle_rollable\\.row:((?:[a-z][a-z0-9_]*|\\*)(?:\\/(?:[a-z][a-z0-9_]*|\\*|\\*\\*)){2,5})\\.(\\d+|\\*)$", "type": "string" }, "OracleRollableRowText": { "title": "OracleRollableRowText", "description": "Represents a row in an oracle table, with a single text cell.", "type": "object", "required": [ "text" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/AnyOracleRollableRowId" } }, "additionalProperties": false }, "OracleRollableRowText2": { "title": "OracleRollableRowText2", "description": "Represents a row in an oracle table that provides a secondary text field.", "type": "object", "required": [ "text", "text2" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/AnyOracleRollableRowId" }, "text2": { "description": "The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue.", "anyOf": [ { "$ref": "#/definitions/MarkdownString" }, { "type": "null" } ] } }, "additionalProperties": false }, "OracleRollableRowText3": { "title": "OracleRollableRowText3", "description": "Represents a row in an oracle table with 3 text cells.", "type": "object", "required": [ "text", "text2", "text3" ], "properties": { "text": { "description": "The primary text content of this row.", "$ref": "#/definitions/MarkdownString" }, "icon": { "$ref": "#/definitions/SvgImageUrl" }, "oracle_rolls": { "description": "Further oracle rolls prompted by this table row.", "type": "array", "items": { "$ref": "#/definitions/OracleRoll" } }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "embed_table": { "releaseStage": "experimental", "description": "Hints that the identified table should be rendered inside this table row.", "$ref": "#/definitions/OracleRollableId" }, "template": { "releaseStage": "experimental", "$ref": "#/definitions/OracleRollTemplate" }, "_i18n": { "releaseStage": "experimental", "$ref": "#/definitions/I18nHints" }, "roll": { "default": null, "anyOf": [ { "$ref": "#/definitions/DiceRange" }, { "type": "null" } ], "description": "`null` represents an unrollable row, included only for rendering purposes." }, "tags": { "$ref": "#/definitions/Tags" }, "_id": { "$ref": "#/definitions/AnyOracleRollableRowId" }, "text2": { "description": "The secondary text for this row. Use `null` to represent a cell with a blank or empty value.", "anyOf": [ { "$ref": "#/definitions/MarkdownString" }, { "type": "null" } ] }, "text3": { "description": "The tertiary text for this row. Use `null` to represent a cell with a blank or empty vlue.", "anyOf": [ { "$ref": "#/definitions/MarkdownString" }, { "type": "null" } ] } }, "additionalProperties": false }, "OracleRollableTable": { "title": "OracleRollableTable", "properties": { "oracle_type": { "enum": [ "table_text", "table_text2", "table_text3" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "oracle_type": { "const": "table_text", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText" } }, { "if": { "properties": { "oracle_type": { "const": "table_text2", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText2" } }, { "if": { "properties": { "oracle_type": { "const": "table_text3", "type": "string" } } }, "then": { "$ref": "#/definitions/OracleTableText3" } } ], "required": [ "oracle_type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator." }, "OracleRollTemplate": { "title": "OracleRollTemplate", "releaseStage": "experimental", "description": "Provides string templates that may be used in place of the static row text from `OracleRollableRow#text`, `OracleRollableRow#text2`, and `OracleRollableRow#text3`.\n\n These strings are formatted in Markdown, but use a special syntax for their placeholders: `{{text>some_oracle_rollable_id}}`. The placeholder should be replaced with the value of a rolled (or selected) `OracleRollableRow#text` from the target oracle rollable ID.", "type": "object", "properties": { "text": { "description": "A string template that may be used in place of OracleRollableRow#text.", "examples": [ "{{text>oracle_rollable:starforged/faction/name/affiliation}} of the {{text>oracle_rollable:starforged/faction/name/legacy}} {{text>oracle_rollable:starforged/faction/name/identity}}" ], "$ref": "#/definitions/MarkdownTemplateString" }, "text2": { "description": "A string template that may be used in place of OracleRollableRow#text2.", "$ref": "#/definitions/MarkdownTemplateString" }, "text3": { "description": "A string template that may be used in place of OracleRollableRow#text3.", "$ref": "#/definitions/MarkdownTemplateString" } }, "additionalProperties": false }, "OracleTablesCollection": { "title": "OracleTablesCollection", "description": "An OracleCollection that represents a category or grouping of tables, which may themselves be `OracleTablesCollection`s.", "type": "object", "required": [ "name", "_source", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleRollableTable" } } }, "collections": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleCollection" } } }, "type": { "const": "oracle_collection", "type": "string" }, "oracle_type": { "const": "tables", "type": "string" } }, "additionalProperties": false }, "OracleTableSharedRolls": { "title": "OracleTableSharedRolls", "description": "An OracleCollection representing a single table with one roll column and multiple text columns.", "type": "object", "required": [ "name", "_source", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleColumnText" } } }, "column_labels": { "title": "SharedRollsLabels", "default": { "roll": "Roll" }, "type": "object", "required": [ "roll" ], "properties": { "roll": { "$ref": "#/definitions/Label" } }, "description": "Provides column labels for this table. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). For all other column labels, see the `name` property of each child `OracleColumn`." }, "type": { "const": "oracle_collection", "type": "string" }, "oracle_type": { "const": "table_shared_rolls", "type": "string" } }, "additionalProperties": false }, "OracleTableSharedText": { "title": "OracleTableSharedText", "description": "An OracleCollection representing a single table with multiple roll columns and one text column.", "type": "object", "required": [ "name", "_source", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleColumnText" } } }, "column_labels": { "title": "SharedTextLabels", "default": { "text": "Result" }, "type": "object", "required": [ "text" ], "properties": { "text": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_collection", "type": "string" }, "oracle_type": { "const": "table_shared_text", "type": "string" } }, "additionalProperties": false }, "OracleTableSharedText2": { "title": "OracleTableSharedText2", "description": "An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns.", "type": "object", "required": [ "name", "_source", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleColumnText2" } } }, "column_labels": { "title": "SharedText2Labels", "default": { "text": "Result", "text2": "Details" }, "type": "object", "required": [ "text", "text2" ], "properties": { "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_collection", "type": "string" }, "oracle_type": { "const": "table_shared_text2", "type": "string" } }, "additionalProperties": false }, "OracleTableSharedText3": { "title": "OracleTableSharedText3", "description": "An OracleCollection representing a single table with multiple roll columns, and 3 shared text columns.", "type": "object", "required": [ "name", "_source", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleCollectionId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "enhances": { "description": "This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.", "type": "array", "items": { "$ref": "#/definitions/OracleCollectionIdWildcard" } }, "summary": { "description": "A brief summary of this collection, no more than a few sentences in length. This is intended for use in application tooltips and similar sorts of hints. Longer text should use the \"description\" key instead.", "$ref": "#/definitions/MarkdownString" }, "description": { "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.", "$ref": "#/definitions/MarkdownString" }, "contents": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleColumnText3" } } }, "column_labels": { "title": "SharedText3Labels", "type": "object", "required": [ "text", "text2", "text3" ], "properties": { "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" }, "text3": { "$ref": "#/definitions/Label" } }, "default": {} }, "type": { "const": "oracle_collection", "type": "string" }, "oracle_type": { "const": "table_shared_text3", "type": "string" } }, "additionalProperties": false }, "OracleTableText": { "title": "OracleTableText", "description": "Represents a basic rollable oracle table with one roll column and one text result column.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText" } }, "column_labels": { "title": "TextColumnLabels", "default": { "roll": "Roll", "text": "Result" }, "type": "object", "required": [ "roll", "text" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text", "type": "string" } } }, "OracleTableText2": { "title": "OracleTableText2", "description": "A rollable oracle table with one roll column and two text columns.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "rows", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText2" } }, "column_labels": { "title": "Text2ColumnLabels", "default": { "roll": "Roll", "text": "Result", "text2": "Details" }, "type": "object", "required": [ "roll", "text", "text2" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text2", "type": "string" } } }, "OracleTableText3": { "title": "OracleTableText3", "description": "A rollable oracle table with one roll column and 3 text columns.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "rows", "column_labels", "type", "oracle_type" ], "properties": { "_id": { "$ref": "#/definitions/OracleRollableId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/OracleRollableIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "recommended_rolls": { "type": "object", "required": [ "min", "max" ], "properties": { "min": { "default": 1, "type": "integer" }, "max": { "default": 1, "type": "integer" } } }, "dice": { "default": "1d100", "description": "The roll used to select a result on this oracle.", "$ref": "#/definitions/DiceExpression" }, "match": { "description": "Most oracle tables are insensitive to matches, but a few define special match behavior.", "$ref": "#/definitions/OracleMatchBehavior" }, "rows": { "description": "An array of objects, each representing a single row of the table.", "rollable": true, "type": "array", "items": { "$ref": "#/definitions/OracleRollableRowText3" } }, "column_labels": { "title": "Text3ColumnLabels", "type": "object", "required": [ "roll", "text", "text2", "text3" ], "properties": { "roll": { "$ref": "#/definitions/Label" }, "text": { "$ref": "#/definitions/Label" }, "text2": { "$ref": "#/definitions/Label" }, "text3": { "$ref": "#/definitions/Label" } } }, "type": { "const": "oracle_rollable", "type": "string" }, "oracle_type": { "const": "table_text3", "type": "string" } } }, "PageNumber": { "title": "PageNumber", "minimum": 1, "description": "Represents a page number in a book.", "type": "integer" }, "PartOfSpeech": { "title": "PartOfSpeech", "releaseStage": "experimental", "description": " - `common_noun`: A common noun.\n - `proper_noun`: A proper noun.\n - `adjunct_common_noun`: A common noun used as an adjective, to modify another noun.\n - `adjunct_proper_noun`: A proper noun used as an adjective, to modify another noun.\n - `verb`: A verb in present tense\n - `gerund`: Gerund or present participle of a verb, e.g. \"going\", \"seeing\", \"waving\". Can function as a noun, an adjective, or a progressive verb.\n - `adjective`: An adjective.\n - `attributive_verb`: A verb used as an adjective, to modify a noun.\n - `adjective_as_proper_noun`: An adjective used as a proper noun.\n - `common_noun_as_proper_noun`: An common noun used as a proper noun.", "enum": [ "common_noun", "proper_noun", "adjunct_common_noun", "adjunct_proper_noun", "verb", "gerund", "adjective", "attributive_verb", "adjective_as_proper_noun", "common_noun_as_proper_noun" ] }, "ProgressRollMethod": { "title": "ProgressRollMethod", "description": " - `miss`: An automatic miss.\n - `weak_hit`: An automatic weak hit.\n - `strong_hit`: An automatic strong hit.\n - `progress_roll`: Make a progress roll on a progress track associated with this move.", "enum": [ "miss", "weak_hit", "strong_hit", "progress_roll" ] }, "ProgressRollOption": { "title": "ProgressRollOption", "type": "object", "required": [ "using" ], "properties": { "using": { "const": "progress_track", "type": "string" } }, "additionalProperties": false }, "ProgressTrackTypeInfo": { "title": "ProgressTrackTypeInfo", "description": "Describes the features of a type of progress track.", "type": "object", "required": [ "category" ], "properties": { "category": { "description": "A category label for progress tracks of this type.", "examples": [ "Vow", "Journey", "Combat", "Scene Challenge", "Expedition", "Connection", "Delve" ], "$ref": "#/definitions/Label" }, "controls": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "type": "object", "properties": {} } } } }, "additionalProperties": false }, "Rarity": { "title": "Rarity", "description": "A rarity, as described in Ironsworn: Delve.", "type": "object", "additionalProperties": true, "required": [ "name", "_source", "asset", "description", "type" ], "properties": { "_id": { "$ref": "#/definitions/RarityId", "description": "The unique Datasworn ID for this node." }, "_comment": { "$ref": "#/definitions/Documentation" }, "name": { "description": "The primary name/label for this node.", "$ref": "#/definitions/Label" }, "canonical_name": { "description": "The name of this node as it appears on the page in the book, if it's different from `name`.", "$ref": "#/definitions/Label" }, "_source": { "description": "Attribution for the original source (such as a book or website) of this node, including the author and licensing information.", "$ref": "#/definitions/SourceInfo" }, "suggestions": { "$ref": "#/definitions/Suggestions" }, "tags": { "$ref": "#/definitions/Tags" }, "replaces": { "description": "This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.", "type": "array", "items": { "$ref": "#/definitions/RarityIdWildcard" } }, "color": { "description": "An optional thematic color associated with this node. For an example, see \"Basic Creature Form\" (Starforged p. 337).", "$ref": "#/definitions/CssColor" }, "images": { "type": "array", "items": { "description": "Extra images associated with this node.", "$ref": "#/definitions/WebpImageUrl" } }, "icon": { "description": "An SVG icon associated with this collection.", "$ref": "#/definitions/SvgImageUrl" }, "asset": { "description": "The asset augmented by this rarity.", "$ref": "#/definitions/AssetId" }, "description": { "description": "A description of this rarity.", "$ref": "#/definitions/MarkdownString" }, "xp_cost": { "minimum": 3, "maximum": 5, "default": 3, "description": "From Ironsworn: Delve, p. 174:\n\n Some assets will bring a rarity into play more often than others, so the experience point cost for a rarity will vary by the linked asset. These costs are shown in the tables on page 175.\n\n If you are playing solo, and aren’t concerned with the relative balance of rarity abilities, you can ignore these variable costs. If so, spend 3 experience points to purchase a rarity.", "type": "integer" }, "type": { "const": "rarity", "type": "string" } } }, "RarityId": { "title": "RarityId", "description": "A unique ID representing a Rarity object.", "pattern": "^rarity:([a-z][a-z0-9_]*\\/[a-z][a-z0-9_]*)$", "type": "string" }, "RarityIdWildcard": { "title": "RarityIdWildcard", "description": "A wildcarded RarityId that can be used to match multiple Rarity objects.", "pattern": "^rarity:((?:[a-z][a-z0-9_]*|\\*)\\/[a-z][a-z0-9_]*|\\/\\*|\\/\\*\\*)$", "type": "string" }, "RollableValue": { "title": "RollableValue", "description": "Provides a value like a stat, condition meter, or other number (usually for use in an action roll). The expected value is an integer, or null.", "properties": { "using": { "enum": [ "stat", "condition_meter", "asset_control", "asset_option", "attached_asset_control", "attached_asset_option", "custom" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "using": { "const": "stat", "type": "string" } } }, "then": { "$ref": "#/definitions/StatValueRef" } }, { "if": { "properties": { "using": { "const": "condition_meter", "type": "string" } } }, "then": { "$ref": "#/definitions/ConditionMeterValueRef" } }, { "if": { "properties": { "using": { "const": "asset_control", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetControlValueRef" } }, { "if": { "properties": { "using": { "const": "asset_option", "type": "string" } } }, "then": { "$ref": "#/definitions/AssetOptionValueRef" } }, { "if": { "properties": { "using": { "const": "attached_asset_control", "type": "string" } } }, "then": { "$ref": "#/definitions/AttachedAssetControlValueRef" } }, { "if": { "properties": { "using": { "const": "attached_asset_option", "type": "string" } } }, "then": { "$ref": "#/definitions/AttachedAssetOptionValueRef" } }, { "if": { "properties": { "using": { "const": "custom", "type": "string" } } }, "then": { "$ref": "#/definitions/CustomValue" } } ], "required": [ "using" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator." }, "Rules": { "title": "Rules", "description": "Describes rules for player characters in this ruleset, such as stats and condition meters.", "releaseStage": "experimental", "type": "object", "properties": { "stats": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard stats used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/StatRule" } } }, "condition_meters": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard condition meters used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/ConditionMeterRule" } } }, "impacts": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard impacts/debilities used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/ImpactCategory" } } }, "special_tracks": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/SpecialTrackRule" } } }, "tags": { "default": {}, "remarks": "Deserialize as a dictionary object.", "releaseStage": "experimental", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/TagRule" } } } }, "additionalProperties": false }, "Ruleset": { "title": "Ruleset", "additionalProperties": true, "description": "A standalone Datasworn package that describes its own ruleset.", "type": "object", "required": [ "_id", "type", "datasworn_version" ], "properties": { "_id": { "$ref": "#/definitions/RulesetId" }, "type": { "const": "ruleset", "type": "string" }, "datasworn_version": { "description": "The version of the Datasworn format used by this data.", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "const": "0.2.0", "type": "string" }, "description": { "$ref": "#/definitions/MarkdownString" }, "title": { "description": "The title of the source document.", "examples": [ "Ironsworn Rulebook", "Ironsworn Assets Master Set", "Ironsworn: Delve", "Ironsworn: Starforged Rulebook", "Ironsworn: Starforged Assets", "Sundered Isles" ], "$ref": "#/definitions/Label" }, "authors": { "minItems": 1, "description": "Lists authors credited by the source material.", "type": "array", "items": { "$ref": "#/definitions/AuthorInfo" } }, "date": { "pattern": "[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))", "format": "date", "remarks": "You may prefer to deserialize this as a Date object.", "description": "The date of the source documents's last update, formatted YYYY-MM-DD. Required because it's used to determine whether the data needs updating.", "type": "string" }, "url": { "description": "A URL where the source document is available.", "examples": [ "https://ironswornrpg.com" ], "$ref": "#/definitions/WebUrl" }, "license": { "description": "An URL pointing to the location where this content's license can be found.\n\nA `null` here indicates that the content provides __no__ license, and is not intended for redistribution.", "examples": [ "https://creativecommons.org/licenses/by/4.0", "https://creativecommons.org/licenses/by-nc-sa/4.0" ], "anyOf": [ { "$ref": "#/definitions/WebUrl" }, { "type": "null" } ] }, "oracles": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/OracleTablesCollection" } } }, "moves": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing move categories, which contain moves.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/MoveCategory" } } }, "assets": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing asset collections, which contain assets.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AssetCollection" } } }, "atlas": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing atlas collections, which contain atlas entries.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/AtlasCollection" } } }, "npcs": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing NPC collections, which contain NPCs.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/NpcCollection" } } }, "truths": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object of truth categories.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Truth" } } }, "rarities": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing rarities, like those presented in Ironsworn: Delve.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/Rarity" } } }, "delve_sites": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSite" } } }, "site_themes": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing delve site themes.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSiteTheme" } } }, "site_domains": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "A dictionary object containing delve site domains.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/DelveSiteDomain" } } }, "rules": { "$ref": "#/definitions/Rules" } } }, "RulesetId": { "title": "RulesetId", "examples": [ "classic", "starforged" ], "pattern": "^[a-z][a-z0-9_]*$", "description": "The ID of standalone Datasworn package that describes its own ruleset.", "type": "string" }, "RulesExpansion": { "title": "RulesExpansion", "description": "Describes rules for player characters in this ruleset, such as stats and condition meters.", "releaseStage": "experimental", "type": "object", "properties": { "stats": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard stats used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/StatRule" } } }, "condition_meters": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard condition meters used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/ConditionMeterRule" } } }, "impacts": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the standard impacts/debilities used by player characters in this ruleset.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/ImpactCategory" } } }, "special_tracks": { "default": {}, "remarks": "Deserialize as a dictionary object.", "description": "Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/SpecialTrackRule" } } }, "tags": { "default": {}, "remarks": "Deserialize as a dictionary object.", "releaseStage": "experimental", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/TagRule" } } } }, "additionalProperties": false }, "RulesPackage": { "title": "RulesPackage", "description": "Describes game rules compatible with the Ironsworn tabletop role-playing game by Shawn Tomkin.", "properties": { "type": { "enum": [ "ruleset", "expansion" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "type": { "const": "ruleset", "type": "string" } } }, "then": { "$ref": "#/definitions/Ruleset" } }, { "if": { "properties": { "type": { "const": "expansion", "type": "string" } } }, "then": { "$ref": "#/definitions/Expansion" } } ], "required": [ "type" ], "type": "object", "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator." }, "RulesPackageId": { "title": "RulesPackageId", "anyOf": [ { "$ref": "#/definitions/RulesetId" }, { "$ref": "#/definitions/ExpansionId" } ] }, "RuleType": { "title": "RuleType", "enum": [ "impact", "condition_meter", "special_track", "stat" ] }, "SelectEnhancementField": { "title": "SelectEnhancementField", "description": "Select from player and/or asset enhancements. Use it to describe modal abilities. For examples, see Ironclad (classic Ironsworn) and Windbinder (Sundered Isles).", "remarks": "Semantics are similar to the HTML `` element", "type": "object", "required": [ "label", "field_type" ], "properties": { "label": { "$ref": "#/definitions/Label" }, "value": { "description": "The key of the currently selected choice from the `choices` property, or `null` if none is selected.", "default": null, "anyOf": [ { "$ref": "#/definitions/DictKey" }, { "type": "null" } ] }, "choices": { "default": {}, "remarks": "Deserialize as a dictionary object.", "type": "object", "patternProperties": { "^[a-z][a-z0-9_]*$": { "$ref": "#/definitions/SelectValueFieldChoice" } } }, "field_type": { "const": "select_value", "type": "string" }, "icon": { "description": "An icon associated with this input.", "$ref": "#/definitions/SvgImageUrl" } }, "additionalProperties": false }, "SelectValueFieldChoice": { "title": "SelectValueFieldChoice", "properties": { "using": { "enum": [ "stat", "condition_meter", "asset_control", "asset_option", "attached_asset_control", "attached_asset_option", "custom" ] } }, "additionalProperties": true, "allOf": [ { "if": { "properties": { "using": { "const": "stat", "type": "string" } } }, "then": { "description": "Represents an option in a list of choices.", "remarks": "Semantics are similar to the HTML `