From 0e995ed485d7f6bf56e30342a4b91b8348282b4c Mon Sep 17 00:00:00 2001 From: rsek <5354757+rsek@users.noreply.github.com> Date: Sun, 16 Jun 2024 19:02:07 -0700 Subject: [PATCH 01/21] add copy of schema for later use in migration tools --- src/migration/history/v0.0.10/Datasworn.d.ts | 4156 ++ .../history/v0.0.10/DataswornSource.d.ts | 4165 ++ .../history/v0.0.10/classic/classic.json | 22561 +++++++ .../v0.0.10/datasworn-source.schema.json | 8777 +++ .../history/v0.0.10/datasworn.schema.json | 8640 +++ .../history/v0.0.10/delve/delve.json | 16053 +++++ .../v0.0.10/starforged/starforged.json | 53163 ++++++++++++++++ 7 files changed, 117515 insertions(+) create mode 100644 src/migration/history/v0.0.10/Datasworn.d.ts create mode 100644 src/migration/history/v0.0.10/DataswornSource.d.ts create mode 100644 src/migration/history/v0.0.10/classic/classic.json create mode 100644 src/migration/history/v0.0.10/datasworn-source.schema.json create mode 100644 src/migration/history/v0.0.10/datasworn.schema.json create mode 100644 src/migration/history/v0.0.10/delve/delve.json create mode 100644 src/migration/history/v0.0.10/starforged/starforged.json diff --git a/src/migration/history/v0.0.10/Datasworn.d.ts b/src/migration/history/v0.0.10/Datasworn.d.ts new file mode 100644 index 000000000..118e959a9 --- /dev/null +++ b/src/migration/history/v0.0.10/Datasworn.d.ts @@ -0,0 +1,4156 @@ +/** + * Describes game rules compatible with the Ironsworn tabletop role-playing game by Shawn Tomkin. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator. + */ +export type RulesPackage = Ruleset | Expansion; +/** + * A standalone Datasworn package that describes its own ruleset. + */ +export interface Ruleset { + _id: RulesetId; + type: 'ruleset'; + /** + * The version of the Datasworn format used by this data. + * @pattern ```javascript + * /^(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-]+)*))?$/ + * ``` + */ + datasworn_version: '0.0.10'; + description?: MarkdownString; + title: SourceTitle; + /** + * Lists authors credited by the source material. + */ + authors: AuthorInfo[]; + /** + * 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. + */ + date: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url: WebUrl; + license: License; + rules: Rules; + /** + * A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections. + * @remarks Deserialize as a dictionary object. + */ + oracles: Record; + /** + * A dictionary object containing move categories, which contain moves. + * @remarks Deserialize as a dictionary object. + */ + moves: Record; + /** + * A dictionary object containing asset collections, which contain assets. + * @remarks Deserialize as a dictionary object. + */ + assets: Record; + /** + * A dictionary object containing atlas collections, which contain atlas entries. + * @remarks Deserialize as a dictionary object. + */ + atlas?: Record; + /** + * A dictionary object containing NPC collections, which contain NPCs. + * @remarks Deserialize as a dictionary object. + */ + npcs?: Record; + /** + * A dictionary object of truth categories. + * @remarks Deserialize as a dictionary object. + */ + truths?: Record; + /** + * A dictionary object containing rarities, like those presented in Ironsworn: Delve. + * @remarks Deserialize as a dictionary object. + */ + rarities?: Record; + /** + * A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve + * @remarks Deserialize as a dictionary object. + */ + delve_sites?: Record; + /** + * A dictionary object containing delve site themes. + * @remarks Deserialize as a dictionary object. + */ + site_themes?: Record; + /** + * A dictionary object containing delve site domains. + * @remarks Deserialize as a dictionary object. + */ + site_domains?: Record; +} +/** + * A Datasworn package that relies on an external package to provide its ruleset. + */ +export interface Expansion { + description?: MarkdownString; + title?: SourceTitle; + /** + * Lists authors credited by the source material. + */ + authors?: AuthorInfo[]; + /** + * 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. + */ + date?: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url?: WebUrl; + license?: License; + /** + * A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections. + * @remarks Deserialize as a dictionary object. + */ + oracles?: Record; + /** + * A dictionary object containing move categories, which contain moves. + * @remarks Deserialize as a dictionary object. + */ + moves?: Record; + /** + * A dictionary object containing asset collections, which contain assets. + * @remarks Deserialize as a dictionary object. + */ + assets?: Record; + /** + * A dictionary object containing atlas collections, which contain atlas entries. + * @remarks Deserialize as a dictionary object. + */ + atlas?: Record; + /** + * A dictionary object containing NPC collections, which contain NPCs. + * @remarks Deserialize as a dictionary object. + */ + npcs?: Record; + /** + * A dictionary object of truth categories. + * @remarks Deserialize as a dictionary object. + */ + truths?: Record; + /** + * A dictionary object containing rarities, like those presented in Ironsworn: Delve. + * @remarks Deserialize as a dictionary object. + */ + rarities?: Record; + /** + * A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve + * @remarks Deserialize as a dictionary object. + */ + delve_sites?: Record; + /** + * A dictionary object containing delve site themes. + * @remarks Deserialize as a dictionary object. + */ + site_themes?: Record; + /** + * A dictionary object containing delve site domains. + * @remarks Deserialize as a dictionary object. + */ + site_domains?: Record; + _id: ExpansionId; + type: 'expansion'; + /** + * The version of the Datasworn format used by this data. + * @pattern ```javascript + * /^(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-]+)*))?$/ + * ``` + */ + datasworn_version: '0.0.10'; + ruleset: RulesetId; + rules?: RulesExpansion; +} +/** + * A unique ID for an AssetAbility. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/assets\/([a-z][a-z_]*)\/([a-z][a-z_]*)\/abilities\/(0|[1-9][0-9]*)$/ + * ``` + */ +export type AssetAbilityId = string; +/** + * A unique ID for an AssetCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/assets\/([a-z][a-z_]*)$/ + * ``` + */ +export type AssetCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple AssetCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/assets\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AssetCollectionIdWildcard = string; +/** + * A unique ID for an Asset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/assets\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + */ +export type AssetId = string; +/** + * A wildcarded ID that can be used to match multiple Assets. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/assets\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AssetIdWildcard = string; +/** + * A unique ID for an AtlasCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/atlas\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/atlas/ironlands" + */ +export type AtlasCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple AtlasCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/atlas\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AtlasCollectionIdWildcard = string; +/** + * A unique ID for an AtlasEntry. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/atlas\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/atlas/ironlands/hinterlands" + */ +export type AtlasEntryId = string; +/** + * A wildcarded ID that can be used to match multiple AtlasEntrys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/atlas\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AtlasEntryIdWildcard = string; +/** + * A unique ID for a ConditionMeterRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/condition_meters\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/condition_meters/health" + * @example "starforged/rules/condition_meters/spirit" + */ +export type ConditionMeterRuleId = string; +/** + * A unique ID for a DelveSiteDomain. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/site_domains\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/site_domains/shadowfen" + */ +export type DelveSiteDomainId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSiteDomains. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/site_domains\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteDomainIdWildcard = string; +/** + * A unique ID for a DelveSite. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/delve_sites\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/delve_sites/alvas_rest" + */ +export type DelveSiteId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSites. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/delve_sites\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteIdWildcard = string; +/** + * A unique ID for a DelveSiteTheme. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/site_themes\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/site_themes/hallowed" + */ +export type DelveSiteThemeId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSiteThemes. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/site_themes\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteThemeIdWildcard = string; +/** + * 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. + * @pattern ```javascript + * /^([a-z][a-z_]*)$/ + * ``` + */ +export type DictKey = string; +/** + * The ID of a Datasworn package that relies on an external package to provide its ruleset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})$/ + * ``` + * @example "delve" + */ +export type ExpansionId = string; +/** + * A unique ID for an ImpactRuleCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/rules\/impacts\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/rules/impacts/conditions" + * @example "starforged/collections/rules/impacts/vehicle_troubles" + */ +export type ImpactRuleCollectionId = string; +/** + * A unique ID for an ImpactRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/impacts\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/impacts/conditions/wounded" + * @example "starforged/rules/impacts/vehicle_troubles/battered" + */ +export type ImpactRuleId = string; +/** + * A unique ID for a MoveCategory. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/moves\/([a-z][a-z_]*)$/ + * ``` + * @example "starforged/collections/moves/adventure" + */ +export type MoveCategoryId = string; +/** + * A wildcarded ID that can be used to match multiple MoveCategorys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/moves\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type MoveCategoryIdWildcard = string; +/** + * A move ID, for a standard move or a unique asset move + * @example "classic/moves/combat/strike" + * @example "starforged/assets/module/grappler/abilities/0/moves/ready_grappler" + */ +export type MoveId = string; +/** + * A move ID with wildcards. + */ +export type MoveIdWildcard = string; +/** + * A unique ID for a NpcCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/npcs\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/npcs/firstborn" + * @example "starforged/collections/npcs/sample_npcs" + */ +export type NpcCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple NpcCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/npcs\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type NpcCollectionIdWildcard = string; +/** + * A unique ID for a Npc. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/npcs\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/npcs/firstborn/elf" + * @example "starforged/npcs/sample_npcs/chiton" + */ +export type NpcId = string; +/** + * A wildcarded ID that can be used to match multiple Npcs. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/npcs\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type NpcIdWildcard = string; +/** + * A unique ID for a NpcVariant. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/npcs\/([a-z][a-z_]*)\/([a-z][a-z_]*)\/variants\/([a-z][a-z_]*)$/ + * ``` + * @example "starforged/npcs/sample_npcs/chiton/variants/chiton_drone_pack" + */ +export type NpcVariantId = string; +/** + * A unique ID for an OracleCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/oracles(\/([a-z][a-z_]*)){1,3}$/ + * ``` + * @example "starforged/collections/oracles/core" + * @example "starforged/collections/oracles/character/names" + * @example "starforged/collections/oracles/planets/furnace/settlements" + */ +export type OracleCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple OracleCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/oracles((\/([a-z][a-z_]*)){1,3}|\/\*\*|\/\*\*\/([a-z][a-z_]*)|\/([a-z][a-z_]*)\/\*\*)$/ + * ``` + */ +export type OracleCollectionIdWildcard = string; +/** + * A unique ID for an OracleRollable. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/oracles(\/([a-z][a-z_]*)){1,3}\/([a-z][a-z_]*)$/ + * ``` + * @example "starforged/oracles/core/action" + * @example "starforged/oracles/character/names/given" + * @example "starforged/oracles/planets/furnace/settlements/terminus" + */ +export type OracleRollableId = string; +/** + * Oracle table wildcards can also use '**' to represent any number of collection levels in the oracle tree. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/oracles((\/([a-z][a-z_]*)){1,3}|\/\*\*|\/\*\*\/([a-z][a-z_]*)|\/([a-z][a-z_]*)\/\*\*)\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type OracleRollableIdWildcard = string; +/** + * A unique ID for a Rarity. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rarities\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rarities/ayethins_journal" + */ +export type RarityId = string; +/** + * A wildcarded ID that can be used to match multiple Raritys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/rarities\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type RarityIdWildcard = string; +/** + * The ID of standalone Datasworn package that describes its own ruleset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})$/ + * ``` + * @example "classic" + * @example "starforged" + * @example "sundered_isles" + */ +export type RulesetId = string; +/** + * A unique ID for a SpecialTrackRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/special_tracks\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/special_tracks/bonds" + * @example "delve/rules/special_tracks/failure" + * @example "starforged/rules/special_tracks/bonds_legacy" + */ +export type SpecialTrackRuleId = string; +/** + * A unique ID for a StatRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/stats\/([a-z][a-z_]*)$/ + * ``` + */ +export type StatRuleId = string; +/** + * A unique ID for a Truth. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/truths\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/truths/iron" + * @example "starforged/truths/iron" + */ +export type TruthId = string; +/** + * A wildcarded ID that can be used to match multiple Truths. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/truths\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type TruthIdWildcard = string; +/** + * Information on the original creator of this material. + * @example {} + */ +export interface AuthorInfo { + /** + * @example "Shawn Tomkin" + */ + name: string; + /** + * An optional email contact for the author + */ + email?: string; + /** + * An optional URL for the author's website. + */ + url?: string; +} +/** + * A CSS color value. + * @remarks See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value + */ +export type CssColor = string; +/** + * A date formatted YYYY-MM-DD. + * @remarks You may prefer to deserialize this as a Date object. + * @pattern ```javascript + * /[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))/ + * ``` + */ +export type Date = string; +/** + * An URL pointing to the location where this element's license can be found. + * + * A `null` here indicates that the content provides __no__ license, and is not intended for redistribution. + * @example "https://creativecommons.org/licenses/by/4.0" + * @example "https://creativecommons.org/licenses/by-nc-sa/4.0" + */ +export type License = WebUrl | null; +/** + * Represents a page number in a book. + * @minimum 1 + */ +export type PageNumber = number; +/** + * Metadata describing the original source of this item + */ +export interface SourceInfo { + title: SourceTitle; + /** + * The page number where this item is described in full. + */ + page?: PageNumber; + /** + * Lists authors credited by the source material. + */ + authors: AuthorInfo[]; + /** + * 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. + */ + date: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url: WebUrl; + license: License; +} +/** + * The title of the source document. + * @example "Ironsworn Rulebook" + * @example "Ironsworn Assets Master Set" + * @example "Ironsworn: Delve" + * @example "Ironsworn: Starforged Rulebook" + * @example "Ironsworn: Starforged Assets" + * @example "Sundered Isles" + */ +export type SourceTitle = string; +/** + * @experimental + */ +export interface Suggestions { + oracles?: OracleRollableId[]; + assets?: AssetId[]; + moves?: MoveId[]; + site_domains?: DelveSiteDomainId[]; + site_themes?: DelveSiteThemeId[]; + npcs?: NpcId[]; + atlas?: AtlasEntryId[]; + rarities?: RarityId[]; +} +/** + * A relative (local) URL pointing to a vector image in the SVG format. + * @pattern ```javascript + * /\.svg$/ + * ``` + */ +export type SvgImageUrl = string; +/** + * An absolute URL pointing to a website. + */ +export type WebUrl = string; +/** + * A relative (local) URL pointing to a raster image in the WEBP format. + * @pattern ```javascript + * /\.webp$/ + * ``` + */ +export type WebpImageUrl = string; +/** + * @experimental + */ +export interface I18nHint { + /** + * The part of speech for this string. + */ + part_of_speech?: PartOfSpeech; +} +/** + * Internationalization/localization hints for the text content of this object. + * @experimental + */ +export interface I18nHints { + text?: I18nHint; + text2?: I18nHint; + text3?: I18nHint; + template?: { + text?: I18nHint; + text2?: I18nHint; + text3?: I18nHint; + }; +} +/** + * A localized label for an input. 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). + * @pattern ```javascript + * /^[^A-Z]+$/ + * ``` + * @i18n + */ +export type InputLabel = string; +/** + * A localized plain text name or label. + * @i18n + */ +export type Label = string; +/** + * Localized text, formatted in Markdown. + * + * It uses some custom syntax; e.g. `{{table:some_oracle_table_id}}` indicates that the referenced oracle table is rendered there in the source material. + * @i18n + */ +export type MarkdownString = string; +/** + * - `common_noun`: A common noun. + * - `proper_noun`: A proper noun. + * - `adjunct_common_noun`: A common noun used as an adjective, to modify another noun. + * - `adjunct_proper_noun`: A proper noun used as an adjective, to modify another noun. + * - `verb`: A verb in present tense + * - `gerund`: Gerund or present participle of a verb, e.g. "going", "seeing", "waving". Can function as a noun, an adjective, or a progressive verb. + * - `adjective`: An adjective. + * - `attributive_verb`: A verb used as an adjective, to modify a noun. + * - `adjective_as_proper_noun`: An adjective used as a proper noun. + * - `common_noun_as_proper_noun`: An common noun used as a proper noun. + */ +export type PartOfSpeech = 'common_noun' | 'proper_noun' | 'adjunct_common_noun' | 'adjunct_proper_noun' | 'verb' | 'gerund' | 'adjective' | 'attributive_verb' | 'adjective_as_proper_noun' | 'common_noun_as_proper_noun'; +/** + * A rich text string in Markdown with replaced values from oracle roll results. + * + * The 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 `result` key, for example `{{result:starforged/oracles/core/action}}` + * + * @i18n + * @experimental + */ +export type TemplateString = string; +export type CollectableType = 'oracle_rollable' | 'move' | 'asset' | 'atlas_entry' | 'npc'; +export type CollectionType = 'oracle_collection' | 'move_category' | 'asset_collection' | 'atlas_collection' | 'npc_collection'; +/** + * Describes a standard player character condition meter. + */ +export interface ConditionMeterRule { + /** + * A description of this condition meter. + */ + description: MarkdownString; + /** + * Is this condition meter shared by all players? + * @default false + */ + shared: boolean; + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable: true; +} +/** + * Describes a category of standard impacts/debilities. + */ +export interface ImpactCategory { + /** + * A label for this impact category. + */ + label: InputLabel; + /** + * A description of this impact category. + */ + description: MarkdownString; + /** + * A dictionary object of the Impacts in this category. + * @remarks Deserialize as a dictionary object. + */ + contents: Record; +} +/** + * Describes a standard impact/debility. + */ +export interface ImpactRule { + /** + * The label for this impact. + */ + label: InputLabel; + /** + * A description of this impact. + */ + description: MarkdownString; + /** + * Is this impact applied to all players at once? + * @default false + */ + shared: boolean; + /** + * Any ruleset condition meters that can't recover when this impact is active. + * @default [] + */ + prevents_recovery: ConditionMeterKey[]; + /** + * Is this impact permanent? + * @default false + */ + permanent: boolean; +} +export type NonCollectableType = 'delve_site' | 'delve_site_theme' | 'delve_site_domain' | 'truth' | 'rarity'; +export type ObjectType = CollectableType | NonCollectableType | CollectionType; +/** + * Describes rules for player characters in this ruleset, such as stats and condition meters. + * @experimental + */ +export interface Rules { + /** + * Describes the standard stats used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + stats: Record; + /** + * Describes the standard condition meters used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + condition_meters: Record; + /** + * Describes the standard impacts/debilities used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + impacts: Record; + /** + * Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + * @remarks Deserialize as a dictionary object. + */ + special_tracks: Record; + /** + * @remarks Deserialize as a dictionary object. + * @default + * ```javascript + * { + * + * } + * ``` + * @experimental + */ + tags: Record; +} +/** + * Describes rules for player characters in this ruleset, such as stats and condition meters. + * @experimental + */ +export interface RulesExpansion { + /** + * Describes the standard stats used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + stats?: Record; + /** + * Describes the standard condition meters used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + condition_meters?: Record; + /** + * Describes the standard impacts/debilities used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + impacts?: Record; + /** + * Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + * @remarks Deserialize as a dictionary object. + */ + special_tracks?: Record; + /** + * @remarks Deserialize as a dictionary object. + * @default + * ```javascript + * { + * + * } + * ``` + * @experimental + */ + tags?: Record; +} +/** + * Describes a special track like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ +export interface SpecialTrackRule { + /** + * A label for this special track. + */ + label: InputLabel; + /** + * A description of this special track. + */ + description: MarkdownString; + /** + * Is this track shared by all players? + * @default false + */ + shared: boolean; + /** + * Is this track an optional rule? + * @default false + */ + optional: boolean; +} +/** + * Describes a standard player character stat. + */ +export interface StatRule { + /** + * A label for this stat. + * @example "edge" + */ + label: InputLabel; + /** + * A description of this stat. + * @example "Quickness, agility, and prowess when fighting at a distance." + */ + description: MarkdownString; +} +export type Tag = boolean | number | DictKey | DiceExpression | OracleRollableId | MoveId | AssetId | AtlasEntryId | NpcId | OracleCollectionId | MoveCategoryId | AssetCollectionId | AtlasCollectionId | NpcCollectionId | DelveSiteId | DelveSiteThemeId | DelveSiteDomainId | TruthId | RarityId | Array; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `value_type` property as a discriminator. + */ +export type TagRule = { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array: boolean; + value_type: 'boolean'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array: boolean; + value_type: 'integer'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'oracle_rollable'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'move'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'asset'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'atlas_entry'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'npc'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'oracle_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'move_category'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'asset_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'atlas_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'npc_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'delve_site'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'delve_site_theme'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'delve_site_domain'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'truth'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard: boolean; + value_type: 'rarity'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array: boolean; + value_type: 'enum'; + enum: DictKey[]; +}; +/** + * Challenge rank, represented as an integer from 1 (troublesome) to 5 (epic). + * + * - `1`: Troublesome + * - `2`: Dangerous + * - `3`: Formidable + * - `4`: Extreme + * - `5`: Epic + */ +export type ChallengeRank = 1 | 2 | 3 | 4 | 5; +/** + * Describes the features of a type of progress track. + */ +export interface ProgressTrackTypeInfo { + /** + * A category label for progress tracks of this type. + * @example "Vow" + * @example "Journey" + * @example "Combat" + * @example "Scene Challenge" + * @example "Expedition" + * @example "Connection" + * @example "Delve" + */ + category: Label; + /** + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; +} +/** + * Special, ruleset-specific progress tracks. Usually, one exists per player character, and they persist through the life of the player character. + * 'Canonical' examples: + * * `bonds_track`, described in the Ironsworn Rulebook. For the Starforged legacy track, use `bonds_legacy` instead. + * * `failure_track`, described in Ironsworn: Delve + * * `quests_legacy`, `bonds_legacy`, and `discoveries_legacy`, described Ironsworn: Starforged + * + * + * @example "bonds_track" + * @example "failure_track" + * @example "quests_legacy" + * @example "bonds_legacy" + * @example "discoveries_legacy" + */ +export type SpecialTrackType = DictKey; +/** + * A reference to the value of an asset control. + */ +export interface AssetControlValueRef { + /** + * 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. + * @default null + */ + assets: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * A reference to the value of an asset control. + */ + using: 'asset_control'; +} +/** + * A reference to the value of an asset option. + */ +export interface AssetOptionValueRef { + /** + * 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. + * @default null + */ + assets: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an asset option. + */ + using: 'asset_option'; +} +/** + * 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. + */ +export interface AttachedAssetControlValueRef { + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * 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. + */ + using: 'attached_asset_control'; +} +/** + * A reference to the value of an attached asset option. + */ +export interface AttachedAssetOptionValueRef { + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an attached asset option. + */ + using: 'attached_asset_option'; +} +/** + * A reference to the value of a standard player condition meter. + */ +export interface ConditionMeterValueRef { + condition_meter: ConditionMeterKey; + /** + * A reference to the value of a standard player condition meter. + */ + using: 'condition_meter'; +} +/** + * An arbitrary static integer value with a label. + */ +export interface CustomValue { + label: InputLabel; + value: number; + /** + * An arbitrary static integer value with a label. + */ + using: 'custom'; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator. + */ +export type RollableValue = StatValueRef | ConditionMeterValueRef | AssetControlValueRef | AssetOptionValueRef | AttachedAssetControlValueRef | AttachedAssetOptionValueRef | CustomValue; +/** + * A reference to the value of a standard player character stat. + */ +export interface StatValueRef { + stat: StatKey; + /** + * A reference to the value of a standard player character stat. + */ + using: 'stat'; +} +/** + * A non-player character entry, similar to those in Chapter 5 of the Ironsworn Rulebook, or Chapter 4 of Starforged. + */ +export interface Npc { + /** + * The unique Datasworn ID for this item. + */ + _id: NpcId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + features: MarkdownString[]; + summary?: MarkdownString; + description: MarkdownString; + quest_starter?: MarkdownString; + your_truth?: MarkdownString; + /** + * The suggested challenge rank for this NPC. + */ + rank: ChallengeRank; + nature: NpcNature; + drives: MarkdownString[]; + tactics: MarkdownString[]; + /** + * @remarks Deserialize as a dictionary object. + */ + variants?: Record; + type: 'npc'; +} +export interface NpcCollection { + /** + * The unique Datasworn ID for this item. + */ + _id: NpcCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'npc_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: NpcCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: NpcCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * A localized category label describing the nature of this NPC. + * + * In Ironsworn classic, this is probably the singular form of the parent collection's name. + * + * For Starforged, see the table on p. 258 for examples. + * @example "Ironlander" + * @example "Firstborn" + * @example "Animal" + * @example "Beast" + * @example "Horror" + * @example "Anomaly" + * @example "Creature" + * @example "Human" + * @example "Machine" + * @example "Monster" + * @example "Vehicle" + */ +export type NpcNature = Label; +export interface NpcVariant { + /** + * The unique Datasworn ID for this item. + */ + _id: NpcVariantId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + name: Label; + /** + * The suggested challenge rank for this NPC. + */ + rank: ChallengeRank; + nature: NpcNature; + summary?: MarkdownString; + description: MarkdownString; +} +/** + * A simple dice roll expression with an optional modifer. + * @pattern ```javascript + * /([1-9][0-9]*)d([1-9][0-9]*)([+-]([1-9][0-9]*))?/ + * ``` + * @example "1d100" + * @example "1d6+2" + */ +export type DiceExpression = string; +/** + * Special roll instructions to use when rolling multiple times on a single oracle. + * + * - `reroll`: Duplicate results should be re-rolled. + * - `keep`: Duplicates results should be kept. + * - `make_it_worse`: Duplicate results should be kept, and they compound to make things worse. + */ +export type OracleDuplicateBehavior = 'reroll' | 'keep' | 'make_it_worse'; +export interface OracleMatchBehavior { + text: MarkdownString; +} +export interface OracleRoll { + /** + * The ID of the oracle to be rolled. A `null` value indicates that it's a roll on the same table. + * @default null + */ + oracle: OracleRollableId | null; + /** + * 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". + * @default false + */ + auto: boolean; + /** + * Special rules on how to handle duplicate results, when rolling multiple times. + * @default "reroll" + */ + duplicates: OracleDuplicateBehavior; + /** + * The dice roll to make on the oracle table. Set it to `null` if you just want the table's default. + * @default null + */ + dice: DiceExpression | null; + /** + * The number of times to roll. + * @default 1 + * @minimum 1 + */ + number_of_rolls: number; +} +/** + * Provides string templates that may be used in place of the static row text from `OracleTableRow#text`, `OracleTableRow#text2`, and `OracleTableRow#text3`. + * + * These strings are formatted in Markdown, but use a special syntax for their placeholders: `{{text:some_oracle_table_id}}`. The placeholder should be replaced with the value of a rolled (or selected) `OracleTableRow#text` from the target oracle table ID. + * @experimental + */ +export interface OracleRollTemplate { + /** + * A string template that may be used in place of OracleTableRow#text. + * @example "{{text:starforged/oracles/factions/affiliation}} of the {{text:starforged/oracles/factions/legacy}} {{text:starforged/oracles/factions/identity}}" + */ + text?: TemplateString; + /** + * A string template that may be used in place of OracleTableRow#text2. + */ + text2?: TemplateString; + /** + * A string template that may be used in place of OracleTableRow#text3. + */ + text3?: TemplateString; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleCollection = OracleTablesCollection | OracleTableSharedRolls | OracleTableSharedText | OracleTableSharedText2 | OracleTableSharedText3; +/** + * Represents a single column in an OracleCollection. + */ +export interface OracleColumnText { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + oracle_type: 'column_text'; +} +export interface OracleColumnText2 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + oracle_type: 'column_text2'; +} +export interface OracleColumnText3 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + oracle_type: 'column_text3'; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleRollable = OracleTableText | OracleTableText2 | OracleTableText3 | OracleColumnText | OracleColumnText2 | OracleColumnText3; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleTableRollable = OracleTableText | OracleTableText2 | OracleTableText3; +export type OracleTableRow = OracleTableRowText | OracleTableRowText2 | OracleTableRowText3; +/** + * Represents a row in an oracle table, with a single text cell. + */ +export interface OracleTableRowText { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max: number | null; +} +/** + * Represents a row in an oracle table that provides a secondary text field. + */ +export interface OracleTableRowText2 { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max: number | null; + /** + * The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text2: MarkdownString | null; +} +/** + * Represents a row in an oracle table with 3 text cells. + */ +export interface OracleTableRowText3 { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max: number | null; + /** + * The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text2: MarkdownString | null; + /** + * The tertiary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text3: MarkdownString | null; +} +/** + * An OracleCollection representing a single table with one roll column and multiple `result` columns. + */ +export interface OracleTableSharedRolls { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * 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`. + * @default {} + */ + column_labels: { + /** + * @default "Roll" + */ + roll: Label; + }; + /** + * A table with one shared roll column, and multiple unique text columns. + */ + oracle_type: 'table_shared_rolls'; +} +/** + * An OracleCollection representing a single table with multiple roll columns and one `result` column. + */ +export interface OracleTableSharedText { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + /** + * @default "Result" + */ + text: Label; + }; + /** + * A table with multiple unique roll columns, and one shared text column. + */ + oracle_type: 'table_shared_text'; +} +/** + * An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns. + */ +export interface OracleTableSharedText2 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + /** + * @default "Result" + */ + text: Label; + /** + * @default "Details" + */ + text2: Label; + }; + /** + * A table with multiple unique roll columns, and 2 shared text columns. + */ + oracle_type: 'table_shared_text2'; +} +/** + * An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns. + */ +export interface OracleTableSharedText3 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + /** + * @default "Result" + */ + text: Label; + }; + /** + * A table with multiple unique roll columns, and 3 shared text columns. + */ + oracle_type: 'table_shared_text3'; +} +/** + * Represents a basic rollable oracle table with one roll column and one text result column. + */ +export interface OracleTableText { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + /** + * @default "Roll" + */ + roll: Label; + /** + * @default "Result" + */ + text: Label; + }; +} +/** + * A rollable oracle table with one roll column and two text columns. + */ +export interface OracleTableText2 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text2'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + /** + * @default "Roll" + */ + roll: Label; + /** + * @default "Result" + */ + text: Label; + /** + * @default "Details" + */ + text2: Label; + }; +} +/** + * A rollable oracle table with one roll column and 3 text columns. + */ +export interface OracleTableText3 { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text3'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels: { + roll: Label; + text: Label; + text2: Label; + text3: Label; + }; +} +/** + * An OracleCollection that represents a category or grouping of tables, which may themselves be `OracleTablesCollection`s. + */ +export interface OracleTablesCollection { + /** + * The unique Datasworn ID for this item. + */ + _id: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * A grouping of separate tables. + */ + oracle_type: 'tables'; + /** + * @remarks Deserialize as a dictionary object. + */ + collections?: Record; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `player_choice`: The player chooses which roll option to use. + * - `highest`: Use the roll option with the best/highest value. + * - `lowest`: Use the roll option with the worst/lowest value. + * - `all`: Use _every_ roll option at once. + */ +export type ActionRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'player_choice' | 'highest' | 'lowest' | 'all'; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator. + */ +export type Move = MoveActionRoll | MoveNoRoll | MoveProgressRoll | MoveSpecialTrack; +/** + * A move that makes an action roll. + */ +export interface MoveActionRoll { + /** + * The unique Datasworn ID for this item. + */ + _id: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A move that makes an action roll. + */ + roll_type: 'action_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerActionRoll; + outcomes: MoveOutcomes; + type: 'move'; +} +/** + * 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. + */ +export interface MoveActionRollEnhancement { + /** + * 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 + */ + enhances: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'action_roll'; + trigger?: TriggerActionRollEnhancement; +} +export interface MoveCategory { + /** + * The unique Datasworn ID for this item. + */ + _id: MoveCategoryId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'move_category'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: MoveCategoryId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: MoveCategoryId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator. + */ +export type MoveEnhancement = MoveActionRollEnhancement | MoveNoRollEnhancement | MoveProgressRollEnhancement | MoveSpecialTrackEnhancement; +/** + * A move that makes no progress rolls or action rolls. + */ +export interface MoveNoRoll { + /** + * The unique Datasworn ID for this item. + */ + _id: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A move that makes no action rolls or progress rolls. + */ + roll_type: 'no_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerNoRoll; + /** + * @default null + */ + outcomes: null; + type: 'move'; +} +/** + * 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. + */ +export interface MoveNoRollEnhancement { + /** + * 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 + */ + enhances: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'no_roll'; + trigger?: TriggerNoRollEnhancement; +} +export interface MoveOutcome { + /** + * @pattern ```javascript + * /On a __(strong hit|weak hit|miss)__/ + * ``` + */ + text: MarkdownString; + oracle_rolls?: OracleRoll[]; +} +/** + * 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. + * + * 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. + */ +export interface MoveOutcomes { + strong_hit: MoveOutcome; + weak_hit: MoveOutcome; + miss: MoveOutcome; +} +/** + * 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. + */ +export interface MoveProgressRoll { + /** + * The unique Datasworn ID for this item. + */ + _id: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A progress move that rolls on a standard progress track type (defined by this move). + */ + roll_type: 'progress_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerProgressRoll; + outcomes: MoveOutcomes; + type: 'move'; + /** + * Describes the common features of progress tracks associated with this move. + */ + tracks: ProgressTrackTypeInfo; +} +/** + * 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. + */ +export interface MoveProgressRollEnhancement { + /** + * 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 + */ + enhances: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'progress_roll'; + trigger?: TriggerProgressRollEnhancement; +} +/** + * - `no_roll`: A move that makes no action rolls or progress rolls. + * - `action_roll`: A move that makes an action roll. + * - `progress_roll`: A progress move that rolls on a standard progress track type (defined by this move). + * - `special_track`: A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ +export type MoveRollType = 'no_roll' | 'action_roll' | 'progress_roll' | 'special_track'; +/** + * 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. + */ +export interface MoveSpecialTrack { + /** + * The unique Datasworn ID for this item. + */ + _id: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ + roll_type: 'special_track'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerSpecialTrack; + outcomes: MoveOutcomes; + type: 'move'; +} +/** + * 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. + */ +export interface MoveSpecialTrackEnhancement { + /** + * 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 + */ + enhances: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'special_track'; + trigger?: TriggerSpecialTrackEnhancement; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `progress_roll`: Make a progress roll on a progress track associated with this move. + */ +export type ProgressRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'progress_roll'; +export interface ProgressRollOption { + using: 'progress_track'; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `player_choice`: The player chooses which roll option to use. + * - `highest`: Use the roll option with the best/highest value. + * - `lowest`: Use the roll option with the worst/lowest value. + * - `all`: Use _every_ roll option at once. + */ +export type SpecialTrackRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'player_choice' | 'highest' | 'lowest' | 'all'; +/** + * Describes trigger conditions for a move that makes an action roll. + */ +export interface TriggerActionRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerActionRollCondition[]; +} +export interface TriggerActionRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + method: ActionRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: RollableValue[]; +} +export interface TriggerActionRollConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method: ActionRollMethod | null; + /** + * @default null + */ + roll_options: RollableValue[] | null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerActionRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerActionRollConditionEnhancement[]; +} +/** + * Information on who can activate this trigger condition. Usually this is just the player, but some asset abilities can trigger from an ally's move. + */ +export interface TriggerBy { + /** + * Can this trigger be activated by the player who owns this? + * @default true + */ + player: boolean; + /** + * Can this trigger be activated by one of the player's allies? + * @default false + */ + ally: boolean; +} +/** + * Describes trigger conditions for a move that makes no rolls. + */ +export interface TriggerNoRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + * @default null + */ + conditions: TriggerNoRollCondition[] | null; +} +export interface TriggerNoRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * @default null + */ + method: null; + /** + * The options available when rolling with this trigger condition. + * @default null + */ + roll_options: null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerNoRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerNoRollCondition[]; +} +export interface TriggerProgressRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerProgressRollCondition[]; +} +export interface TriggerProgressRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * @default "progress_roll" + */ + method: ProgressRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: ProgressRollOption[]; +} +export interface TriggerProgressRollConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method: ProgressRollMethod | null; + /** + * @default null + */ + roll_options: ProgressRollOption[] | null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerProgressRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerProgressRollConditionEnhancement[]; +} +export interface TriggerSpecialTrack { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerSpecialTrackCondition[]; +} +export interface TriggerSpecialTrackCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + method: SpecialTrackRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: TriggerSpecialTrackConditionOption[]; +} +/** + * A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacy (Starforged). + */ +export interface TriggerSpecialTrackConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method: SpecialTrackRollMethod | null; + /** + * @default null + */ + roll_options: TriggerSpecialTrackConditionOption[] | null; +} +export interface TriggerSpecialTrackConditionOption { + using: SpecialTrackType; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerSpecialTrackEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerSpecialTrackConditionEnhancement[]; +} +export interface Asset { + /** + * The unique Datasworn ID for this item. + */ + _id: AssetId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A localized category label for this asset. This is the surtitle above the asset's name on the card. + * @example "Combat Talent" + * @example "Command Vehicle" + * @example "Companion" + * @example "Deed" + * @example "Module" + * @example "Path" + * @example "Ritual" + * @example "Support Vehicle" + */ + category: Label; + /** + * This asset's icon. + */ + icon?: SvgImageUrl; + /** + * A thematic color associated with this asset. + */ + color?: CssColor; + /** + * 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. + * @remarks Deserialize as a dictionary object. + */ + options?: Record; + /** + * Describes prerequisites for purchasing or using this asset. + */ + requirement?: MarkdownString; + abilities: AssetAbility[]; + /** + * Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + /** + * If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn). + * @default false + */ + count_as_impact: boolean; + attachments?: AssetAttachment; + /** + * 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. + * @default false + */ + shared: boolean; + type: 'asset'; +} +/** + * An asset ability: one of the purchasable features of an asset. Most assets have three. + */ +export interface AssetAbility { + /** + * The unique Datasworn ID for this item. + */ + _id: AssetAbilityId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * A handful of asset abilities have a label/name, for instance classic Ironsworn companion assets. Most canonical assets omit this property. + */ + name?: Label; + /** + * The complete rules text of this asset ability. + */ + text: MarkdownString; + /** + * Is this asset ability enabled? + * @default false + */ + enabled: boolean; + /** + * Unique moves added by this asset ability. + * @remarks Deserialize as a dictionary object. + */ + moves?: Record; + /** + * Fields that are expected to be set once and remain the same through the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + options?: Record; + /** + * Fields whose values are expected to change over the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + /** + * Changes made to the asset, when this ability is enabled. + */ + enhance_asset?: AssetEnhancement; + /** + * Describes changes made to various moves by this asset ability. Usually these require specific trigger conditions. + */ + enhance_moves?: MoveEnhancement[]; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetAbilityControlField = ClockField | CounterField | AssetCheckboxField | TextField; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetAbilityOptionField = TextField; +/** + * 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. + */ +export interface AssetAttachment { + /** + * Asset IDs (which may be wildcards) that may be attached to this asset + */ + assets: AssetIdWildcard[]; + /** + * Null if there's no upper limit to the number of attached assets. + * @default null + */ + max: number | null; +} +export interface AssetCardFlipField { + label: InputLabel; + /** + * Is the card flipped over? + * @default false + */ + value: boolean; + field_type: 'card_flip'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`? + * @default false + */ + is_impact: boolean; + /** + * Does this field disable the asset when its value is set to `true`? + * @default false + */ + disables_asset: boolean; +} +export interface AssetCheckboxField { + label: InputLabel; + /** + * Is the box checked? + * @default false + */ + value: boolean; + field_type: 'checkbox'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`? + * @default false + */ + is_impact: boolean; + /** + * Does this field disable the asset when its value is set to `true`? + * @default false + */ + disables_asset: boolean; +} +export interface AssetCollection { + /** + * The unique Datasworn ID for this item. + */ + _id: AssetCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'asset_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: AssetCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: AssetCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * 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". + */ +export interface AssetConditionMeter { + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable: true; + field_type: 'condition_meter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Provides hints for moves that interact with this condition meter, such as suffer and recovery moves. + * @experimental + */ + moves?: { + /** + * 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. + */ + suffer?: MoveIdWildcard[]; + /** + * The ID(s) of recovery moves associated with this meter. + */ + recover?: MoveIdWildcard[]; + }; + /** + * Checkbox controls rendered as part of the condition meter. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; +} +/** + * A checkbox control field, rendered as part of an asset condition meter. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetConditionMeterControlField = AssetCheckboxField | AssetCardFlipField; +/** + * 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". + */ +export interface AssetConditionMeterEnhancement { + field_type: 'condition_meter'; + /** + * The maximum value of this meter. + */ + max: number; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetControlField = AssetConditionMeter | SelectEnhancementField | AssetCheckboxField | AssetCardFlipField; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetControlFieldEnhancement = AssetConditionMeterEnhancement; +/** + * 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. + */ +export interface AssetEnhancement { + /** + * Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + suggestions?: Suggestions; + /** + * If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn). + */ + count_as_impact?: boolean; + attachments?: AssetAttachment; + /** + * 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. + */ + shared?: boolean; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetOptionField = SelectValueField | SelectEnhancementField | TextField; +/** + * A clock with 4 or more segments. + * @remarks Semantics are similar to HTML ``, but rendered as a clock (a circle with equally sized wedges). + */ +export interface ClockField { + label: InputLabel; + /** + * The current value of this input. + * @default 0 + */ + value: number; + /** + * The minimum number of filled clock segments. This is always 0. + */ + min: 0; + /** + * The size of the clock -- in other words, the maximum number of filled clock segments. Standard clocks have 4, 6, 8, or 10 segments. + * @minimum 2 + */ + max: number; + rollable: false; + field_type: 'clock'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * A meter with an integer value, bounded by a minimum and maximum. + */ +export interface ConditionMeterField { + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable: true; + field_type: 'condition_meter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * 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 `` + */ +export interface CounterField { + label: InputLabel; + /** + * The current value of this input. + * @default 0 + */ + value: number; + /** + * The (inclusive) minimum value. + * @default 0 + */ + min: number; + /** + * The (inclusive) maximum value, or `null` if there's no maximum. + * @default null + */ + max: number | null; + rollable: false; + field_type: 'counter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * 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 + */ +export interface SelectValueField { + label: InputLabel; + /** + * The current value of this input. + * @default null + */ + value: DictKey | null; + /** + * @remarks Deserialize as a dictionary object. + */ + choices: Record; + field_type: 'select_value'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator. + */ +export type SelectValueFieldChoice = { + label: InputLabel; + choice_type: 'choice'; + stat: StatKey; + /** + * A reference to the value of a standard player character stat. + */ + using: 'stat'; +} | { + label: InputLabel; + choice_type: 'choice'; + condition_meter: ConditionMeterKey; + /** + * A reference to the value of a standard player condition meter. + */ + using: 'condition_meter'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * 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. + * @default null + */ + assets: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * A reference to the value of an asset control. + */ + using: 'asset_control'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * 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. + * @default null + */ + assets: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an asset option. + */ + using: 'asset_option'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * 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. + */ + using: 'attached_asset_control'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an attached asset option. + */ + using: 'attached_asset_option'; +} | { + label: InputLabel; + choice_type: 'choice'; + value: number; + /** + * An arbitrary static integer value with a label. + */ + using: 'custom'; +}; +/** + * Represents an input that accepts plain text. + * @remarks Semantics are similar to the HTML `` element. + */ +export interface TextField { + label: InputLabel; + /** + * The content of this text input, or `null` if it's empty + * @default null + */ + value: string | null; + field_type: 'text'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * A setting truth category. + */ +export interface Truth { + /** + * The unique Datasworn ID for this item. + */ + _id: TruthId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * @default "1d100" + */ + dice: DiceExpression; + icon?: SvgImageUrl; + summary?: MarkdownString; + options: TruthOption[]; + your_character?: MarkdownString; +} +export interface TruthOption { + min?: number; + max?: number; + summary?: MarkdownString; + description: MarkdownString; + quest_starter: MarkdownString; + /** + * Represents a basic rollable oracle table with one roll column and one text result column. + */ + table?: { + oracle_type: 'table_text'; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + }; +} +export interface AtlasCollection { + /** + * The unique Datasworn ID for this item. + */ + _id: AtlasCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'atlas'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: AtlasCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: AtlasCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * @remarks Deserialize as a dictionary object. + */ + collections?: Record; +} +/** + * An atlas entry, like the Ironlands region entries found in classic Ironsworn. + */ +export interface AtlasEntry { + /** + * The unique Datasworn ID for this item. + */ + _id: AtlasEntryId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + features: MarkdownString[]; + summary?: MarkdownString; + description: MarkdownString; + quest_starter?: MarkdownString; + your_truth?: MarkdownString; + type: 'atlas_entry'; +} +/** + * A basic, rollable player character resource specified by the ruleset. + * @example "health" + * @example "spirit" + * @example "supply" + */ +export type ConditionMeterKey = DictKey; +/** + * A basic player character stat. + * @example "edge" + * @example "heart" + * @example "iron" + * @example "shadow" + * @example "wits" + */ +export type StatKey = DictKey; +/** + * A rarity, as described in Ironsworn: Delve. + */ +export interface Rarity { + /** + * The unique Datasworn ID for this item. + */ + _id: RarityId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * The asset augmented by this rarity. + */ + asset: AssetId; + type: 'rarity'; + icon?: SvgImageUrl; + /** + * From Ironsworn: Delve, p. 174: + * + * 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. + * + * 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. + * @default 3 + * @minimum 3 + * @maximum 5 + */ + xp_cost: number; + description: MarkdownString; +} +/** + * A delve site with a theme, domain, and denizens. + */ +export interface DelveSite { + /** + * The unique Datasworn ID for this item. + */ + _id: DelveSiteId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site'; + icon?: SvgImageUrl; + rank: ChallengeRank; + /** + * The ID of an atlas entry representing the region in which this delve site is located. + */ + region?: AtlasEntryId; + /** + * The ID of the site's DelveSiteTheme card. + */ + theme: DelveSiteThemeId; + /** + * The ID of the site's DelveSiteDomain card. + */ + domain: DelveSiteDomainId; + /** + * An additional theme or domain card ID, for use with optional rules in Ironsworn: Delve. + */ + extra_card?: DelveSiteThemeId | DelveSiteDomainId; + description: MarkdownString; + /** + * Represents the delve site's denizen matrix as an array of objects. + */ + denizens: DelveSiteDenizen[] & [ + { + min: 1; + max: 27; + frequency: 'very_common'; + }, + { + min: 28; + max: 41; + frequency: 'common'; + }, + { + min: 42; + max: 55; + frequency: 'common'; + }, + { + min: 56; + max: 69; + frequency: 'common'; + }, + { + min: 70; + max: 75; + frequency: 'uncommon'; + }, + { + min: 76; + max: 81; + frequency: 'uncommon'; + }, + { + min: 82; + max: 87; + frequency: 'uncommon'; + }, + { + min: 88; + max: 93; + frequency: 'uncommon'; + }, + { + min: 94; + max: 95; + frequency: 'rare'; + }, + { + min: 96; + max: 97; + frequency: 'rare'; + }, + { + min: 98; + max: 99; + frequency: 'rare'; + }, + { + min: 100; + max: 100; + frequency: 'unforeseen'; + } + ]; +} +/** + * Represents an entry in a site denizen matrix. Denizen matrices are described in Ironsworn: Delve. + */ +export interface DelveSiteDenizen { + /** + * A name for the denizen, if it's different than the `name` property of the NPC. + */ + name?: Label; + /** + * Low end of the dice range for this denizen. + */ + min: number; + /** + * High end of the dice range for this denizen. + */ + max: number; + /** + * The ID of the relevant NPC entry, if one is specified. + */ + npc?: NpcId; + frequency: DelveSiteDenizenFrequency; +} +export type DelveSiteDenizenFrequency = 'very_common' | 'common' | 'uncommon' | 'rare' | 'unforeseen'; +/** + * A delve site Domain card. + */ +export interface DelveSiteDomain { + /** + * The unique Datasworn ID for this item. + */ + _id: DelveSiteDomainId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site_domain'; + /** + * @deprecated + */ + summary: MarkdownString; + description?: MarkdownString; + icon?: SvgImageUrl; + /** + * An oracle table ID containing place name elements. For examples, see oracle ID `delve/oracles/site_name/place/barrow`, and its siblings in oracle collection ID `delve/collections/oracles/site_name/place`. These oracles are used by the site name oracle from Ironsworn: Delve (ID: delve/oracles/site_name/format) to create random names for delve sites. + */ + name_oracle?: OracleRollableId; + features: OracleTableRowText[] & [ + { + min: 21; + max: 43; + }, + { + min: 44; + max: 56; + }, + { + min: 57; + max: 64; + }, + { + min: 65; + max: 68; + }, + { + min: 69; + max: 72; + }, + { + min: 73; + max: 76; + }, + { + min: 77; + max: 80; + }, + { + min: 81; + max: 84; + }, + { + min: 85; + max: 88; + }, + { + min: 89; + max: 98; + }, + { + min: 99; + max: 99; + }, + { + min: 100; + max: 100; + } + ]; + dangers: OracleTableRowText[] & [ + { + min: 31; + max: 33; + }, + { + min: 34; + max: 36; + }, + { + min: 37; + max: 39; + }, + { + min: 40; + max: 42; + }, + { + min: 43; + max: 45; + } + ]; +} +/** + * A delve site theme card. + */ +export interface DelveSiteTheme { + /** + * The unique Datasworn ID for this item. + */ + _id: DelveSiteThemeId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site_theme'; + summary: MarkdownString; + description?: MarkdownString; + icon?: SvgImageUrl; + features: OracleTableRowText[] & [ + { + min: 1; + max: 4; + }, + { + min: 5; + max: 8; + }, + { + min: 9; + max: 12; + }, + { + min: 13; + max: 16; + }, + { + min: 17; + max: 20; + } + ]; + dangers: OracleTableRowText[] & [ + { + min: 1; + max: 5; + }, + { + min: 6; + max: 10; + }, + { + min: 11; + max: 12; + }, + { + min: 13; + max: 14; + }, + { + min: 15; + max: 16; + }, + { + min: 17; + max: 18; + }, + { + min: 19; + max: 20; + }, + { + min: 21; + max: 22; + }, + { + min: 23; + max: 24; + }, + { + min: 25; + max: 26; + }, + { + min: 27; + max: 28; + }, + { + min: 29; + max: 30; + } + ]; +} diff --git a/src/migration/history/v0.0.10/DataswornSource.d.ts b/src/migration/history/v0.0.10/DataswornSource.d.ts new file mode 100644 index 000000000..756b32666 --- /dev/null +++ b/src/migration/history/v0.0.10/DataswornSource.d.ts @@ -0,0 +1,4165 @@ +/** + * 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`. + */ +export type SourceRoot = RulesPackage | ((Asset | Npc | Move | OracleRollable | DelveSite | DelveSiteTheme | DelveSiteDomain | Rarity) & { + /** + * The version of the Datasworn format used by this data. + * @pattern ```javascript + * /^(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-]+)*))?$/ + * ``` + */ + datasworn_version: '0.0.10'; + ruleset: RulesetId; +}); +/** + * Describes game rules compatible with the Ironsworn tabletop role-playing game by Shawn Tomkin. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator. + */ +export type RulesPackage = Ruleset | Expansion; +/** + * A standalone Datasworn package that describes its own ruleset. + */ +export interface Ruleset { + _id: RulesetId; + type: 'ruleset'; + /** + * The version of the Datasworn format used by this data. + * @pattern ```javascript + * /^(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-]+)*))?$/ + * ``` + */ + datasworn_version: '0.0.10'; + description?: MarkdownString; + title?: SourceTitle; + /** + * Lists authors credited by the source material. + */ + authors?: AuthorInfo[]; + /** + * 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. + */ + date?: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url?: WebUrl; + license?: License; + rules?: Rules; + /** + * A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections. + * @remarks Deserialize as a dictionary object. + */ + oracles?: Record; + /** + * A dictionary object containing move categories, which contain moves. + * @remarks Deserialize as a dictionary object. + */ + moves?: Record; + /** + * A dictionary object containing asset collections, which contain assets. + * @remarks Deserialize as a dictionary object. + */ + assets?: Record; + /** + * A dictionary object containing atlas collections, which contain atlas entries. + * @remarks Deserialize as a dictionary object. + */ + atlas?: Record; + /** + * A dictionary object containing NPC collections, which contain NPCs. + * @remarks Deserialize as a dictionary object. + */ + npcs?: Record; + /** + * A dictionary object of truth categories. + * @remarks Deserialize as a dictionary object. + */ + truths?: Record; + /** + * A dictionary object containing rarities, like those presented in Ironsworn: Delve. + * @remarks Deserialize as a dictionary object. + */ + rarities?: Record; + /** + * A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve + * @remarks Deserialize as a dictionary object. + */ + delve_sites?: Record; + /** + * A dictionary object containing delve site themes. + * @remarks Deserialize as a dictionary object. + */ + site_themes?: Record; + /** + * A dictionary object containing delve site domains. + * @remarks Deserialize as a dictionary object. + */ + site_domains?: Record; +} +/** + * A Datasworn package that relies on an external package to provide its ruleset. + */ +export interface Expansion { + description?: MarkdownString; + title?: SourceTitle; + /** + * Lists authors credited by the source material. + */ + authors?: AuthorInfo[]; + /** + * 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. + */ + date?: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url?: WebUrl; + license?: License; + /** + * A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections. + * @remarks Deserialize as a dictionary object. + */ + oracles?: Record; + /** + * A dictionary object containing move categories, which contain moves. + * @remarks Deserialize as a dictionary object. + */ + moves?: Record; + /** + * A dictionary object containing asset collections, which contain assets. + * @remarks Deserialize as a dictionary object. + */ + assets?: Record; + /** + * A dictionary object containing atlas collections, which contain atlas entries. + * @remarks Deserialize as a dictionary object. + */ + atlas?: Record; + /** + * A dictionary object containing NPC collections, which contain NPCs. + * @remarks Deserialize as a dictionary object. + */ + npcs?: Record; + /** + * A dictionary object of truth categories. + * @remarks Deserialize as a dictionary object. + */ + truths?: Record; + /** + * A dictionary object containing rarities, like those presented in Ironsworn: Delve. + * @remarks Deserialize as a dictionary object. + */ + rarities?: Record; + /** + * A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve + * @remarks Deserialize as a dictionary object. + */ + delve_sites?: Record; + /** + * A dictionary object containing delve site themes. + * @remarks Deserialize as a dictionary object. + */ + site_themes?: Record; + /** + * A dictionary object containing delve site domains. + * @remarks Deserialize as a dictionary object. + */ + site_domains?: Record; + _id: ExpansionId; + type: 'expansion'; + /** + * The version of the Datasworn format used by this data. + * @pattern ```javascript + * /^(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-]+)*))?$/ + * ``` + */ + datasworn_version: '0.0.10'; + ruleset: RulesetId; + rules?: RulesExpansion; +} +/** + * A unique ID for an AssetAbility. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/assets\/([a-z][a-z_]*)\/([a-z][a-z_]*)\/abilities\/(0|[1-9][0-9]*)$/ + * ``` + */ +export type AssetAbilityId = string; +/** + * A unique ID for an AssetCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/assets\/([a-z][a-z_]*)$/ + * ``` + */ +export type AssetCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple AssetCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/assets\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AssetCollectionIdWildcard = string; +/** + * A unique ID for an Asset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/assets\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + */ +export type AssetId = string; +/** + * A wildcarded ID that can be used to match multiple Assets. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/assets\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AssetIdWildcard = string; +/** + * A unique ID for an AtlasCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/atlas\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/atlas/ironlands" + */ +export type AtlasCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple AtlasCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/atlas\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AtlasCollectionIdWildcard = string; +/** + * A unique ID for an AtlasEntry. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/atlas\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/atlas/ironlands/hinterlands" + */ +export type AtlasEntryId = string; +/** + * A wildcarded ID that can be used to match multiple AtlasEntrys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/atlas\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type AtlasEntryIdWildcard = string; +/** + * A unique ID for a ConditionMeterRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/condition_meters\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/condition_meters/health" + * @example "starforged/rules/condition_meters/spirit" + */ +export type ConditionMeterRuleId = string; +/** + * A unique ID for a DelveSiteDomain. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/site_domains\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/site_domains/shadowfen" + */ +export type DelveSiteDomainId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSiteDomains. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/site_domains\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteDomainIdWildcard = string; +/** + * A unique ID for a DelveSite. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/delve_sites\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/delve_sites/alvas_rest" + */ +export type DelveSiteId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSites. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/delve_sites\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteIdWildcard = string; +/** + * A unique ID for a DelveSiteTheme. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/site_themes\/([a-z][a-z_]*)$/ + * ``` + * @example "delve/site_themes/hallowed" + */ +export type DelveSiteThemeId = string; +/** + * A wildcarded ID that can be used to match multiple DelveSiteThemes. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/site_themes\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type DelveSiteThemeIdWildcard = string; +/** + * 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. + * @pattern ```javascript + * /^([a-z][a-z_]*)$/ + * ``` + */ +export type DictKey = string; +/** + * The ID of a Datasworn package that relies on an external package to provide its ruleset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})$/ + * ``` + * @example "delve" + */ +export type ExpansionId = string; +/** + * A unique ID for an ImpactRuleCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/rules\/impacts\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/rules/impacts/conditions" + * @example "starforged/collections/rules/impacts/vehicle_troubles" + */ +export type ImpactRuleCollectionId = string; +/** + * A unique ID for an ImpactRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/impacts\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/impacts/conditions/wounded" + * @example "starforged/rules/impacts/vehicle_troubles/battered" + */ +export type ImpactRuleId = string; +/** + * A unique ID for a MoveCategory. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/moves\/([a-z][a-z_]*)$/ + * ``` + * @example "starforged/collections/moves/adventure" + */ +export type MoveCategoryId = string; +/** + * A wildcarded ID that can be used to match multiple MoveCategorys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/moves\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type MoveCategoryIdWildcard = string; +/** + * A move ID, for a standard move or a unique asset move + * @example "classic/moves/combat/strike" + * @example "starforged/assets/module/grappler/abilities/0/moves/ready_grappler" + */ +export type MoveId = string; +/** + * A move ID with wildcards. + */ +export type MoveIdWildcard = string; +/** + * A unique ID for a NpcCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/npcs\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/collections/npcs/firstborn" + * @example "starforged/collections/npcs/sample_npcs" + */ +export type NpcCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple NpcCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/npcs\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type NpcCollectionIdWildcard = string; +/** + * A unique ID for a Npc. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/npcs\/([a-z][a-z_]*)\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/npcs/firstborn/elf" + * @example "starforged/npcs/sample_npcs/chiton" + */ +export type NpcId = string; +/** + * A wildcarded ID that can be used to match multiple Npcs. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/npcs\/(\*|([a-z][a-z_]*))\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type NpcIdWildcard = string; +/** + * A unique ID for a NpcVariant. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/npcs\/([a-z][a-z_]*)\/([a-z][a-z_]*)\/variants\/([a-z][a-z_]*)$/ + * ``` + * @example "starforged/npcs/sample_npcs/chiton/variants/chiton_drone_pack" + */ +export type NpcVariantId = string; +/** + * A unique ID for an OracleCollection. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/collections\/oracles(\/([a-z][a-z_]*)){1,3}$/ + * ``` + * @example "starforged/collections/oracles/core" + * @example "starforged/collections/oracles/character/names" + * @example "starforged/collections/oracles/planets/furnace/settlements" + */ +export type OracleCollectionId = string; +/** + * A wildcarded ID that can be used to match multiple OracleCollections. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/collections\/oracles((\/([a-z][a-z_]*)){1,3}|\/\*\*|\/\*\*\/([a-z][a-z_]*)|\/([a-z][a-z_]*)\/\*\*)$/ + * ``` + */ +export type OracleCollectionIdWildcard = string; +/** + * @example "starforged/oracles/core/action" + * @example "starforged/oracles/character/names/given" + * @example "starforged/oracles/planets/furnace/settlements/terminus" + */ +export type OracleRollableId = string; +/** + * Oracle table wildcards can also use '**' to represent any number of collection levels in the oracle tree. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/oracles((\/([a-z][a-z_]*)){1,3}|\/\*\*|\/\*\*\/([a-z][a-z_]*)|\/([a-z][a-z_]*)\/\*\*)\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type OracleRollableIdWildcard = string; +/** + * A unique ID for a Rarity. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rarities\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rarities/ayethins_journal" + */ +export type RarityId = string; +/** + * A wildcarded ID that can be used to match multiple Raritys. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/rarities\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type RarityIdWildcard = string; +/** + * The ID of standalone Datasworn package that describes its own ruleset. + * @pattern ```javascript + * /^([a-z0-9_]{3,})$/ + * ``` + * @example "classic" + * @example "starforged" + * @example "sundered_isles" + */ +export type RulesetId = string; +/** + * A unique ID for a SpecialTrackRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/special_tracks\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/rules/special_tracks/bonds" + * @example "delve/rules/special_tracks/failure" + * @example "starforged/rules/special_tracks/bonds_legacy" + */ +export type SpecialTrackRuleId = string; +/** + * A unique ID for a StatRule. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/rules\/stats\/([a-z][a-z_]*)$/ + * ``` + */ +export type StatRuleId = string; +/** + * A unique ID for a Truth. + * @pattern ```javascript + * /^([a-z0-9_]{3,})\/truths\/([a-z][a-z_]*)$/ + * ``` + * @example "classic/truths/iron" + * @example "starforged/truths/iron" + */ +export type TruthId = string; +/** + * A wildcarded ID that can be used to match multiple Truths. + * @pattern ```javascript + * /^(\*|([a-z0-9_]{3,}))\/truths\/(\*|([a-z][a-z_]*))$/ + * ``` + */ +export type TruthIdWildcard = string; +/** + * Information on the original creator of this material. + * @example {} + */ +export interface AuthorInfo { + /** + * @example "Shawn Tomkin" + */ + name: string; + /** + * An optional email contact for the author + */ + email?: string; + /** + * An optional URL for the author's website. + */ + url?: string; +} +/** + * A CSS color value. + * @remarks See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value + */ +export type CssColor = string; +/** + * A date formatted YYYY-MM-DD. + * @remarks You may prefer to deserialize this as a Date object. + * @pattern ```javascript + * /[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))/ + * ``` + */ +export type Date = string; +/** + * An URL pointing to the location where this element's license can be found. + * + * A `null` here indicates that the content provides __no__ license, and is not intended for redistribution. + * @example "https://creativecommons.org/licenses/by/4.0" + * @example "https://creativecommons.org/licenses/by-nc-sa/4.0" + */ +export type License = WebUrl | null; +/** + * Represents a page number in a book. + * @minimum 1 + */ +export type PageNumber = number; +/** + * Metadata describing the original source of this item + */ +export interface SourceInfo { + title: SourceTitle; + /** + * The page number where this item is described in full. + */ + page?: PageNumber; + /** + * Lists authors credited by the source material. + */ + authors: AuthorInfo[]; + /** + * 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. + */ + date: Date; + /** + * A URL where the source document is available. + * @example "https://ironswornrpg.com" + */ + url: WebUrl; + license: License; +} +/** + * The title of the source document. + * @example "Ironsworn Rulebook" + * @example "Ironsworn Assets Master Set" + * @example "Ironsworn: Delve" + * @example "Ironsworn: Starforged Rulebook" + * @example "Ironsworn: Starforged Assets" + * @example "Sundered Isles" + */ +export type SourceTitle = string; +/** + * @experimental + */ +export interface Suggestions { + oracles?: OracleRollableId[]; + assets?: AssetId[]; + moves?: MoveId[]; + site_domains?: DelveSiteDomainId[]; + site_themes?: DelveSiteThemeId[]; + npcs?: NpcId[]; + atlas?: AtlasEntryId[]; + rarities?: RarityId[]; +} +/** + * A relative (local) URL pointing to a vector image in the SVG format. + * @pattern ```javascript + * /\.svg$/ + * ``` + */ +export type SvgImageUrl = string; +/** + * An absolute URL pointing to a website. + */ +export type WebUrl = string; +/** + * A relative (local) URL pointing to a raster image in the WEBP format. + * @pattern ```javascript + * /\.webp$/ + * ``` + */ +export type WebpImageUrl = string; +/** + * @experimental + */ +export interface I18nHint { + /** + * The part of speech for this string. + */ + part_of_speech?: PartOfSpeech; +} +/** + * Internationalization/localization hints for the text content of this object. + * @experimental + */ +export interface I18nHints { + text?: I18nHint; + text2?: I18nHint; + text3?: I18nHint; + template?: { + text?: I18nHint; + text2?: I18nHint; + text3?: I18nHint; + }; +} +/** + * A localized label for an input. 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). + * @pattern ```javascript + * /^[^A-Z]+$/ + * ``` + * @i18n + */ +export type InputLabel = string; +/** + * A localized plain text name or label. + * @i18n + */ +export type Label = string; +/** + * Localized text, formatted in Markdown. + * + * It uses some custom syntax; e.g. `{{table:some_oracle_table_id}}` indicates that the referenced oracle table is rendered there in the source material. + * @i18n + */ +export type MarkdownString = string; +/** + * - `common_noun`: A common noun. + * - `proper_noun`: A proper noun. + * - `adjunct_common_noun`: A common noun used as an adjective, to modify another noun. + * - `adjunct_proper_noun`: A proper noun used as an adjective, to modify another noun. + * - `verb`: A verb in present tense + * - `gerund`: Gerund or present participle of a verb, e.g. "going", "seeing", "waving". Can function as a noun, an adjective, or a progressive verb. + * - `adjective`: An adjective. + * - `attributive_verb`: A verb used as an adjective, to modify a noun. + * - `adjective_as_proper_noun`: An adjective used as a proper noun. + * - `common_noun_as_proper_noun`: An common noun used as a proper noun. + */ +export type PartOfSpeech = 'common_noun' | 'proper_noun' | 'adjunct_common_noun' | 'adjunct_proper_noun' | 'verb' | 'gerund' | 'adjective' | 'attributive_verb' | 'adjective_as_proper_noun' | 'common_noun_as_proper_noun'; +/** + * A rich text string in Markdown with replaced values from oracle roll results. + * + * The 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 `result` key, for example `{{result:starforged/oracles/core/action}}` + * + * @i18n + * @experimental + */ +export type TemplateString = string; +export type CollectableType = 'oracle_rollable' | 'move' | 'asset' | 'atlas_entry' | 'npc'; +export type CollectionType = 'oracle_collection' | 'move_category' | 'asset_collection' | 'atlas_collection' | 'npc_collection'; +/** + * Describes a standard player character condition meter. + */ +export interface ConditionMeterRule { + /** + * A description of this condition meter. + */ + description: MarkdownString; + /** + * Is this condition meter shared by all players? + * @default false + */ + shared?: boolean; + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value?: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min?: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable?: true; +} +/** + * Describes a category of standard impacts/debilities. + */ +export interface ImpactCategory { + /** + * A label for this impact category. + */ + label: InputLabel; + /** + * A description of this impact category. + */ + description: MarkdownString; + /** + * A dictionary object of the Impacts in this category. + * @remarks Deserialize as a dictionary object. + */ + contents: Record; +} +/** + * Describes a standard impact/debility. + */ +export interface ImpactRule { + /** + * The label for this impact. + */ + label: InputLabel; + /** + * A description of this impact. + */ + description: MarkdownString; + /** + * Is this impact applied to all players at once? + * @default false + */ + shared?: boolean; + /** + * Any ruleset condition meters that can't recover when this impact is active. + * @default [] + */ + prevents_recovery?: ConditionMeterKey[]; + /** + * Is this impact permanent? + * @default false + */ + permanent?: boolean; +} +export type NonCollectableType = 'delve_site' | 'delve_site_theme' | 'delve_site_domain' | 'truth' | 'rarity'; +export type ObjectType = CollectableType | NonCollectableType | CollectionType; +/** + * Describes rules for player characters in this ruleset, such as stats and condition meters. + * @experimental + */ +export interface Rules { + /** + * Describes the standard stats used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + stats: Record; + /** + * Describes the standard condition meters used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + condition_meters: Record; + /** + * Describes the standard impacts/debilities used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + impacts: Record; + /** + * Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + * @remarks Deserialize as a dictionary object. + */ + special_tracks: Record; + /** + * @remarks Deserialize as a dictionary object. + * @default + * ```javascript + * { + * + * } + * ``` + * @experimental + */ + tags?: Record; +} +/** + * Describes rules for player characters in this ruleset, such as stats and condition meters. + * @experimental + */ +export interface RulesExpansion { + /** + * Describes the standard stats used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + stats?: Record; + /** + * Describes the standard condition meters used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + condition_meters?: Record; + /** + * Describes the standard impacts/debilities used by player characters in this ruleset. + * @remarks Deserialize as a dictionary object. + */ + impacts?: Record; + /** + * Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + * @remarks Deserialize as a dictionary object. + */ + special_tracks?: Record; + /** + * @remarks Deserialize as a dictionary object. + * @default + * ```javascript + * { + * + * } + * ``` + * @experimental + */ + tags?: Record; +} +/** + * Describes a special track like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ +export interface SpecialTrackRule { + /** + * A label for this special track. + */ + label: InputLabel; + /** + * A description of this special track. + */ + description: MarkdownString; + /** + * Is this track shared by all players? + * @default false + */ + shared?: boolean; + /** + * Is this track an optional rule? + * @default false + */ + optional?: boolean; +} +/** + * Describes a standard player character stat. + */ +export interface StatRule { + /** + * A label for this stat. + * @example "edge" + */ + label: InputLabel; + /** + * A description of this stat. + * @example "Quickness, agility, and prowess when fighting at a distance." + */ + description: MarkdownString; +} +export type Tag = boolean | number | DictKey | DiceExpression | OracleRollableId | MoveId | AssetId | AtlasEntryId | NpcId | OracleCollectionId | MoveCategoryId | AssetCollectionId | AtlasCollectionId | NpcCollectionId | DelveSiteId | DelveSiteThemeId | DelveSiteDomainId | TruthId | RarityId | Array; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `value_type` property as a discriminator. + */ +export type TagRule = { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array?: boolean; + value_type: 'boolean'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array?: boolean; + value_type: 'integer'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'oracle_rollable'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'move'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'asset'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'atlas_entry'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'npc'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'oracle_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'move_category'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'asset_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'atlas_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'npc_collection'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'delve_site'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'delve_site_theme'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'delve_site_domain'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'truth'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID. + * @default false + */ + wildcard?: boolean; + value_type: 'rarity'; +} | { + /** + * Types of object that can receive this tag, or `null` if any type of object accepts it. + * @default null + */ + applies_to?: ObjectType[] | null; + description: MarkdownString; + /** + * @default false + */ + array?: boolean; + value_type: 'enum'; + enum: DictKey[]; +}; +/** + * Challenge rank, represented as an integer from 1 (troublesome) to 5 (epic). + * + * - `1`: Troublesome + * - `2`: Dangerous + * - `3`: Formidable + * - `4`: Extreme + * - `5`: Epic + */ +export type ChallengeRank = 1 | 2 | 3 | 4 | 5; +/** + * Describes the features of a type of progress track. + */ +export interface ProgressTrackTypeInfo { + /** + * A category label for progress tracks of this type. + * @example "Vow" + * @example "Journey" + * @example "Combat" + * @example "Scene Challenge" + * @example "Expedition" + * @example "Connection" + * @example "Delve" + */ + category: Label; + /** + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; +} +/** + * Special, ruleset-specific progress tracks. Usually, one exists per player character, and they persist through the life of the player character. + * 'Canonical' examples: + * * `bonds_track`, described in the Ironsworn Rulebook. For the Starforged legacy track, use `bonds_legacy` instead. + * * `failure_track`, described in Ironsworn: Delve + * * `quests_legacy`, `bonds_legacy`, and `discoveries_legacy`, described Ironsworn: Starforged + * + * + * @example "bonds_track" + * @example "failure_track" + * @example "quests_legacy" + * @example "bonds_legacy" + * @example "discoveries_legacy" + */ +export type SpecialTrackType = DictKey; +/** + * A reference to the value of an asset control. + */ +export interface AssetControlValueRef { + /** + * 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. + * @default null + */ + assets?: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * A reference to the value of an asset control. + */ + using: 'asset_control'; +} +/** + * A reference to the value of an asset option. + */ +export interface AssetOptionValueRef { + /** + * 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. + * @default null + */ + assets?: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an asset option. + */ + using: 'asset_option'; +} +/** + * 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. + */ +export interface AttachedAssetControlValueRef { + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * 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. + */ + using: 'attached_asset_control'; +} +/** + * A reference to the value of an attached asset option. + */ +export interface AttachedAssetOptionValueRef { + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an attached asset option. + */ + using: 'attached_asset_option'; +} +/** + * A reference to the value of a standard player condition meter. + */ +export interface ConditionMeterValueRef { + condition_meter: ConditionMeterKey; + /** + * A reference to the value of a standard player condition meter. + */ + using: 'condition_meter'; +} +/** + * An arbitrary static integer value with a label. + */ +export interface CustomValue { + label: InputLabel; + value: number; + /** + * An arbitrary static integer value with a label. + */ + using: 'custom'; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator. + */ +export type RollableValue = StatValueRef | ConditionMeterValueRef | AssetControlValueRef | AssetOptionValueRef | AttachedAssetControlValueRef | AttachedAssetOptionValueRef | CustomValue; +/** + * A reference to the value of a standard player character stat. + */ +export interface StatValueRef { + stat: StatKey; + /** + * A reference to the value of a standard player character stat. + */ + using: 'stat'; +} +/** + * A non-player character entry, similar to those in Chapter 5 of the Ironsworn Rulebook, or Chapter 4 of Starforged. + */ +export interface Npc { + /** + * The unique Datasworn ID for this item. + */ + _id?: NpcId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + features: MarkdownString[]; + summary?: MarkdownString; + description: MarkdownString; + quest_starter?: MarkdownString; + your_truth?: MarkdownString; + /** + * The suggested challenge rank for this NPC. + */ + rank: ChallengeRank; + nature: NpcNature; + drives: MarkdownString[]; + tactics: MarkdownString[]; + /** + * @remarks Deserialize as a dictionary object. + */ + variants?: Record; + type: 'npc'; +} +export interface NpcCollection { + /** + * The unique Datasworn ID for this item. + */ + _id?: NpcCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'npc_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: NpcCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: NpcCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * A localized category label describing the nature of this NPC. + * + * In Ironsworn classic, this is probably the singular form of the parent collection's name. + * + * For Starforged, see the table on p. 258 for examples. + * @example "Ironlander" + * @example "Firstborn" + * @example "Animal" + * @example "Beast" + * @example "Horror" + * @example "Anomaly" + * @example "Creature" + * @example "Human" + * @example "Machine" + * @example "Monster" + * @example "Vehicle" + */ +export type NpcNature = Label; +export interface NpcVariant { + /** + * The unique Datasworn ID for this item. + */ + _id?: NpcVariantId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + name: Label; + /** + * The suggested challenge rank for this NPC. + */ + rank: ChallengeRank; + nature: NpcNature; + summary?: MarkdownString; + description: MarkdownString; +} +/** + * A simple dice roll expression with an optional modifer. + * @pattern ```javascript + * /([1-9][0-9]*)d([1-9][0-9]*)([+-]([1-9][0-9]*))?/ + * ``` + * @example "1d100" + * @example "1d6+2" + */ +export type DiceExpression = string; +/** + * Special roll instructions to use when rolling multiple times on a single oracle. + * + * - `reroll`: Duplicate results should be re-rolled. + * - `keep`: Duplicates results should be kept. + * - `make_it_worse`: Duplicate results should be kept, and they compound to make things worse. + */ +export type OracleDuplicateBehavior = 'reroll' | 'keep' | 'make_it_worse'; +export interface OracleMatchBehavior { + text: MarkdownString; +} +export interface OracleRoll { + /** + * The ID of the oracle to be rolled. A `null` value indicates that it's a roll on the same table. + * @default null + */ + oracle?: OracleRollableId | null; + /** + * 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". + * @default false + */ + auto?: boolean; + /** + * Special rules on how to handle duplicate results, when rolling multiple times. + * @default "reroll" + */ + duplicates?: OracleDuplicateBehavior; + /** + * The dice roll to make on the oracle table. Set it to `null` if you just want the table's default. + * @default null + */ + dice?: DiceExpression | null; + /** + * The number of times to roll. + * @default 1 + * @minimum 1 + */ + number_of_rolls?: number; +} +/** + * Provides string templates that may be used in place of the static row text from `OracleTableRow#text`, `OracleTableRow#text2`, and `OracleTableRow#text3`. + * + * These strings are formatted in Markdown, but use a special syntax for their placeholders: `{{text:some_oracle_table_id}}`. The placeholder should be replaced with the value of a rolled (or selected) `OracleTableRow#text` from the target oracle table ID. + * @experimental + */ +export interface OracleRollTemplate { + /** + * A string template that may be used in place of OracleTableRow#text. + * @example "{{text:starforged/oracles/factions/affiliation}} of the {{text:starforged/oracles/factions/legacy}} {{text:starforged/oracles/factions/identity}}" + */ + text?: TemplateString; + /** + * A string template that may be used in place of OracleTableRow#text2. + */ + text2?: TemplateString; + /** + * A string template that may be used in place of OracleTableRow#text3. + */ + text3?: TemplateString; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleCollection = OracleTablesCollection | OracleTableSharedRolls | OracleTableSharedText | OracleTableSharedText2 | OracleTableSharedText3; +/** + * Represents a single column in an OracleCollection. + */ +export interface OracleColumnText { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + oracle_type: 'column_text'; +} +export interface OracleColumnText2 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + oracle_type: 'column_text2'; +} +export interface OracleColumnText3 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary label at the head of this column. + */ + name: Label; + /** + * Optional secondary text at the head of this column. For best results, this should be no more than a few words in length. + */ + summary?: MarkdownString; + /** + * An optional thematic color for this column. For an example, see "Basic Creature Form" (Starforged p. 337) + */ + color?: CssColor; + /** + * An optional icon for this column. + */ + icon?: SvgImageUrl; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + /** + * @experimental + */ + tags?: Record>; + suggestions?: Suggestions; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + oracle_type: 'column_text3'; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleRollable = OracleTableText | OracleTableText2 | OracleTableText3 | OracleColumnText | OracleColumnText2 | OracleColumnText3; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator. + */ +export type OracleTableRollable = OracleTableText | OracleTableText2 | OracleTableText3; +export type OracleTableRow = OracleTableRowText | OracleTableRowText2 | OracleTableRowText3; +/** + * Represents a row in an oracle table, with a single text cell. + */ +export interface OracleTableRowText { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min?: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max?: number | null; +} +/** + * Represents a row in an oracle table that provides a secondary text field. + */ +export interface OracleTableRowText2 { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min?: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max?: number | null; + /** + * The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text2: MarkdownString | null; +} +/** + * Represents a row in an oracle table with 3 text cells. + */ +export interface OracleTableRowText3 { + /** + * The primary text content of this row. + */ + text: MarkdownString; + icon?: SvgImageUrl; + /** + * Further oracle rolls prompted by this table row. + */ + oracle_rolls?: OracleRoll[]; + suggestions?: Suggestions; + /** + * Hints that the identified table should be rendered inside this table row. + * @experimental + */ + embed_table?: OracleRollableId; + /** + * @experimental + */ + template?: OracleRollTemplate; + /** + * @experimental + */ + _i18n?: I18nHints; + /** + * Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + min?: number | null; + /** + * High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes. + * @default null + */ + max?: number | null; + /** + * The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text2: MarkdownString | null; + /** + * The tertiary text for this row. Use `null` to represent a cell with a blank or empty vlue. + */ + text3: MarkdownString | null; +} +/** + * An OracleCollection representing a single table with one roll column and multiple `result` columns. + */ +export interface OracleTableSharedRolls { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * 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`. + * @default {} + */ + column_labels?: { + /** + * @default "Roll" + */ + roll: Label; + }; + /** + * A table with one shared roll column, and multiple unique text columns. + */ + oracle_type?: 'table_shared_rolls'; +} +/** + * An OracleCollection representing a single table with multiple roll columns and one `result` column. + */ +export interface OracleTableSharedText { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + /** + * @default "Result" + */ + text: Label; + }; + /** + * A table with multiple unique roll columns, and one shared text column. + */ + oracle_type: 'table_shared_text'; +} +/** + * An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns. + */ +export interface OracleTableSharedText2 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + /** + * @default "Result" + */ + text: Label; + /** + * @default "Details" + */ + text2: Label; + }; + /** + * A table with multiple unique roll columns, and 2 shared text columns. + */ + oracle_type: 'table_shared_text2'; +} +/** + * An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns. + */ +export interface OracleTableSharedText3 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + /** + * @default "Result" + */ + text: Label; + }; + /** + * A table with multiple unique roll columns, and 3 shared text columns. + */ + oracle_type: 'table_shared_text3'; +} +/** + * Represents a basic rollable oracle table with one roll column and one text result column. + */ +export interface OracleTableText { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + /** + * @default "Roll" + */ + roll: Label; + /** + * @default "Result" + */ + text: Label; + }; +} +/** + * A rollable oracle table with one roll column and two text columns. + */ +export interface OracleTableText2 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text2'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + /** + * @default "Roll" + */ + roll: Label; + /** + * @default "Result" + */ + text: Label; + /** + * @default "Details" + */ + text2: Label; + }; +} +/** + * A rollable oracle table with one roll column and 3 text columns. + */ +export interface OracleTableText3 { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleRollableId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + oracle_type: 'table_text3'; + /** + * Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object. + */ + replaces?: OracleRollableId; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice?: DiceExpression; + /** + * Most oracle tables are insensitive to matches, but a few define special match behavior. + */ + match?: OracleMatchBehavior; + type: 'oracle_rollable'; + /** + * An array of objects, each representing a single row of the table. + */ + rows: Array; + recommended_rolls?: { + /** + * @default 1 + */ + min: number; + /** + * @default 1 + */ + max: number; + }; + /** + * An icon that represents this table. + */ + icon?: SvgImageUrl; + /** + * A brief summary of the oracle table's intended usage, 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. + */ + summary?: MarkdownString; + /** + * A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + /** + * The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row). + * @default {} + */ + column_labels?: { + roll: Label; + text: Label; + text2: Label; + text3: Label; + }; +} +/** + * An OracleCollection that represents a category or grouping of tables, which may themselves be `OracleTablesCollection`s. + */ +export interface OracleTablesCollection { + /** + * The unique Datasworn ID for this item. + */ + _id?: OracleCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'oracle_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: OracleCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: OracleCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * A grouping of separate tables. + */ + oracle_type?: 'tables'; + /** + * @remarks Deserialize as a dictionary object. + */ + collections?: Record; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `player_choice`: The player chooses which roll option to use. + * - `highest`: Use the roll option with the best/highest value. + * - `lowest`: Use the roll option with the worst/lowest value. + * - `all`: Use _every_ roll option at once. + */ +export type ActionRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'player_choice' | 'highest' | 'lowest' | 'all'; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator. + */ +export type Move = MoveActionRoll | MoveNoRoll | MoveProgressRoll | MoveSpecialTrack; +/** + * A move that makes an action roll. + */ +export interface MoveActionRoll { + /** + * The unique Datasworn ID for this item. + */ + _id?: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A move that makes an action roll. + */ + roll_type: 'action_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerActionRoll; + outcomes: MoveOutcomes; + type: 'move'; +} +/** + * 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. + */ +export interface MoveActionRollEnhancement { + /** + * 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 + */ + enhances?: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'action_roll'; + trigger?: TriggerActionRollEnhancement; +} +export interface MoveCategory { + /** + * The unique Datasworn ID for this item. + */ + _id?: MoveCategoryId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'move_category'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: MoveCategoryId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: MoveCategoryId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator. + */ +export type MoveEnhancement = MoveActionRollEnhancement | MoveNoRollEnhancement | MoveProgressRollEnhancement | MoveSpecialTrackEnhancement; +/** + * A move that makes no progress rolls or action rolls. + */ +export interface MoveNoRoll { + /** + * The unique Datasworn ID for this item. + */ + _id?: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A move that makes no action rolls or progress rolls. + */ + roll_type: 'no_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerNoRoll; + /** + * @default null + */ + outcomes?: null; + type: 'move'; +} +/** + * 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. + */ +export interface MoveNoRollEnhancement { + /** + * 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 + */ + enhances?: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'no_roll'; + trigger?: TriggerNoRollEnhancement; +} +export interface MoveOutcome { + /** + * @pattern ```javascript + * /On a __(strong hit|weak hit|miss)__/ + * ``` + */ + text: MarkdownString; + oracle_rolls?: OracleRoll[]; +} +/** + * 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. + * + * 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. + */ +export interface MoveOutcomes { + strong_hit: MoveOutcome; + weak_hit: MoveOutcome; + miss: MoveOutcome; +} +/** + * 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. + */ +export interface MoveProgressRoll { + /** + * The unique Datasworn ID for this item. + */ + _id?: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A progress move that rolls on a standard progress track type (defined by this move). + */ + roll_type: 'progress_roll'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerProgressRoll; + outcomes: MoveOutcomes; + type: 'move'; + /** + * Describes the common features of progress tracks associated with this move. + */ + tracks: ProgressTrackTypeInfo; +} +/** + * 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. + */ +export interface MoveProgressRollEnhancement { + /** + * 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 + */ + enhances?: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'progress_roll'; + trigger?: TriggerProgressRollEnhancement; +} +/** + * - `no_roll`: A move that makes no action rolls or progress rolls. + * - `action_roll`: A move that makes an action roll. + * - `progress_roll`: A progress move that rolls on a standard progress track type (defined by this move). + * - `special_track`: A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ +export type MoveRollType = 'no_roll' | 'action_roll' | 'progress_roll' | 'special_track'; +/** + * 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. + */ +export interface MoveSpecialTrack { + /** + * The unique Datasworn ID for this item. + */ + _id?: MoveId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move. + */ + replaces?: MoveId; + /** + * The complete rules text of the move. + */ + text: MarkdownString; + /** + * Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement. + */ + oracles?: OracleRollableId[]; + /** + * A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged). + */ + roll_type: 'special_track'; + /** + * Trigger conditions for this move. + */ + trigger: TriggerSpecialTrack; + outcomes: MoveOutcomes; + type: 'move'; +} +/** + * 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. + */ +export interface MoveSpecialTrackEnhancement { + /** + * 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 + */ + enhances?: MoveIdWildcard[] | null; + /** + * A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties. + */ + roll_type: 'special_track'; + trigger?: TriggerSpecialTrackEnhancement; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `progress_roll`: Make a progress roll on a progress track associated with this move. + */ +export type ProgressRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'progress_roll'; +export interface ProgressRollOption { + using: 'progress_track'; +} +/** + * - `miss`: An automatic miss. + * - `weak_hit`: An automatic weak hit. + * - `strong_hit`: An automatic strong hit. + * - `player_choice`: The player chooses which roll option to use. + * - `highest`: Use the roll option with the best/highest value. + * - `lowest`: Use the roll option with the worst/lowest value. + * - `all`: Use _every_ roll option at once. + */ +export type SpecialTrackRollMethod = 'miss' | 'weak_hit' | 'strong_hit' | 'player_choice' | 'highest' | 'lowest' | 'all'; +/** + * Describes trigger conditions for a move that makes an action roll. + */ +export interface TriggerActionRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerActionRollCondition[]; +} +export interface TriggerActionRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + method: ActionRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: RollableValue[]; +} +export interface TriggerActionRollConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method?: ActionRollMethod | null; + /** + * @default null + */ + roll_options?: RollableValue[] | null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerActionRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerActionRollConditionEnhancement[]; +} +/** + * Information on who can activate this trigger condition. Usually this is just the player, but some asset abilities can trigger from an ally's move. + */ +export interface TriggerBy { + /** + * Can this trigger be activated by the player who owns this? + * @default true + */ + player?: boolean; + /** + * Can this trigger be activated by one of the player's allies? + * @default false + */ + ally?: boolean; +} +/** + * Describes trigger conditions for a move that makes no rolls. + */ +export interface TriggerNoRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + * @default null + */ + conditions?: TriggerNoRollCondition[] | null; +} +export interface TriggerNoRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * @default null + */ + method?: null; + /** + * The options available when rolling with this trigger condition. + * @default null + */ + roll_options?: null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerNoRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerNoRollCondition[]; +} +export interface TriggerProgressRoll { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerProgressRollCondition[]; +} +export interface TriggerProgressRollCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * @default "progress_roll" + */ + method?: ProgressRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: ProgressRollOption[]; +} +export interface TriggerProgressRollConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method?: ProgressRollMethod | null; + /** + * @default null + */ + roll_options?: ProgressRollOption[] | null; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerProgressRollEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerProgressRollConditionEnhancement[]; +} +export interface TriggerSpecialTrack { + /** + * A markdown string containing the primary trigger text for this move. + * + * Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions. + * @pattern ```javascript + * /.*\.{3}/ + * ``` + */ + text: MarkdownString; + /** + * Specific conditions that qualify for this trigger. + */ + conditions: TriggerSpecialTrackCondition[]; +} +export interface TriggerSpecialTrackCondition { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + method: SpecialTrackRollMethod; + /** + * The options available when rolling with this trigger condition. + */ + roll_options: TriggerSpecialTrackConditionOption[]; +} +/** + * A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacy (Starforged). + */ +export interface TriggerSpecialTrackConditionEnhancement { + /** + * A markdown string of any trigger text specific to this trigger condition. + */ + text?: MarkdownString; + by?: TriggerBy; + /** + * A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`. + * @default null + */ + method?: SpecialTrackRollMethod | null; + /** + * @default null + */ + roll_options?: TriggerSpecialTrackConditionOption[] | null; +} +export interface TriggerSpecialTrackConditionOption { + using: SpecialTrackType; +} +/** + * Describes changes/additions made to the enhanced move's trigger conditions. + */ +export interface TriggerSpecialTrackEnhancement { + /** + * Trigger conditions added to the enhanced move. + */ + conditions: TriggerSpecialTrackConditionEnhancement[]; +} +export interface Asset { + /** + * The unique Datasworn ID for this item. + */ + _id?: AssetId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A localized category label for this asset. This is the surtitle above the asset's name on the card. + * @example "Combat Talent" + * @example "Command Vehicle" + * @example "Companion" + * @example "Deed" + * @example "Module" + * @example "Path" + * @example "Ritual" + * @example "Support Vehicle" + */ + category: Label; + /** + * This asset's icon. + */ + icon?: SvgImageUrl; + /** + * A thematic color associated with this asset. + */ + color?: CssColor; + /** + * 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. + * @remarks Deserialize as a dictionary object. + */ + options?: Record; + /** + * Describes prerequisites for purchasing or using this asset. + */ + requirement?: MarkdownString; + abilities: AssetAbility[]; + /** + * Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + /** + * If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn). + * @default false + */ + count_as_impact?: boolean; + attachments?: AssetAttachment; + /** + * 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. + * @default false + */ + shared?: boolean; + type: 'asset'; +} +/** + * An asset ability: one of the purchasable features of an asset. Most assets have three. + */ +export interface AssetAbility { + /** + * The unique Datasworn ID for this item. + */ + _id?: AssetAbilityId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * A handful of asset abilities have a label/name, for instance classic Ironsworn companion assets. Most canonical assets omit this property. + */ + name?: Label; + /** + * The complete rules text of this asset ability. + */ + text: MarkdownString; + /** + * Is this asset ability enabled? + * @default false + */ + enabled?: boolean; + /** + * Unique moves added by this asset ability. + * @remarks Deserialize as a dictionary object. + */ + moves?: Record; + /** + * Fields that are expected to be set once and remain the same through the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + options?: Record; + /** + * Fields whose values are expected to change over the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + /** + * Changes made to the asset, when this ability is enabled. + */ + enhance_asset?: AssetEnhancement; + /** + * Describes changes made to various moves by this asset ability. Usually these require specific trigger conditions. + */ + enhance_moves?: MoveEnhancement[]; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetAbilityControlField = ClockField | CounterField | AssetCheckboxField | TextField; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetAbilityOptionField = TextField; +/** + * 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. + */ +export interface AssetAttachment { + /** + * Asset IDs (which may be wildcards) that may be attached to this asset + */ + assets: AssetIdWildcard[]; + /** + * Null if there's no upper limit to the number of attached assets. + * @default null + */ + max?: number | null; +} +export interface AssetCardFlipField { + label: InputLabel; + /** + * Is the card flipped over? + * @default false + */ + value?: boolean; + field_type: 'card_flip'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`? + * @default false + */ + is_impact?: boolean; + /** + * Does this field disable the asset when its value is set to `true`? + * @default false + */ + disables_asset?: boolean; +} +export interface AssetCheckboxField { + label: InputLabel; + /** + * Is the box checked? + * @default false + */ + value?: boolean; + field_type: 'checkbox'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`? + * @default false + */ + is_impact?: boolean; + /** + * Does this field disable the asset when its value is set to `true`? + * @default false + */ + disables_asset?: boolean; +} +export interface AssetCollection { + /** + * The unique Datasworn ID for this item. + */ + _id?: AssetCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'asset_collection'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: AssetCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: AssetCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; +} +/** + * 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". + */ +export interface AssetConditionMeter { + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value?: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min?: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable?: true; + field_type: 'condition_meter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; + /** + * Provides hints for moves that interact with this condition meter, such as suffer and recovery moves. + * @experimental + */ + moves?: { + /** + * 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. + */ + suffer?: MoveIdWildcard[]; + /** + * The ID(s) of recovery moves associated with this meter. + */ + recover?: MoveIdWildcard[]; + }; + /** + * Checkbox controls rendered as part of the condition meter. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; +} +/** + * A checkbox control field, rendered as part of an asset condition meter. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetConditionMeterControlField = AssetCheckboxField | AssetCardFlipField; +/** + * 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". + */ +export interface AssetConditionMeterEnhancement { + field_type: 'condition_meter'; + /** + * The maximum value of this meter. + */ + max: number; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetControlField = AssetConditionMeter | SelectEnhancementField | AssetCheckboxField | AssetCardFlipField; +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetControlFieldEnhancement = AssetConditionMeterEnhancement; +/** + * 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. + */ +export interface AssetEnhancement { + /** + * Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset. + * @remarks Deserialize as a dictionary object. + */ + controls?: Record; + suggestions?: Suggestions; + /** + * If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn). + */ + count_as_impact?: boolean; + attachments?: AssetAttachment; + /** + * 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. + */ + shared?: boolean; +} +/** + * 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. + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator. + */ +export type AssetOptionField = SelectValueField | SelectEnhancementField | TextField; +/** + * A clock with 4 or more segments. + * @remarks Semantics are similar to HTML ``, but rendered as a clock (a circle with equally sized wedges). + */ +export interface ClockField { + label: InputLabel; + /** + * The current value of this input. + * @default 0 + */ + value?: number; + /** + * The minimum number of filled clock segments. This is always 0. + */ + min?: 0; + /** + * The size of the clock -- in other words, the maximum number of filled clock segments. Standard clocks have 4, 6, 8, or 10 segments. + * @minimum 2 + */ + max: number; + rollable?: false; + field_type: 'clock'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * A meter with an integer value, bounded by a minimum and maximum. + */ +export interface ConditionMeterField { + label: InputLabel; + /** + * The current value of this meter. + * @default 0 + */ + value?: number; + /** + * The minimum value of this meter. + * @default 0 + */ + min?: number; + /** + * The maximum value of this meter. + */ + max: number; + /** + * Is this meter's `value` usable as a stat in an action roll? + */ + rollable?: true; + field_type: 'condition_meter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * 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 `` + */ +export interface CounterField { + label: InputLabel; + /** + * The current value of this input. + * @default 0 + */ + value?: number; + /** + * The (inclusive) minimum value. + * @default 0 + */ + min?: number; + /** + * The (inclusive) maximum value, or `null` if there's no maximum. + * @default null + */ + max?: number | null; + rollable?: false; + field_type: 'counter'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * 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 + */ +export interface SelectValueField { + label: InputLabel; + /** + * The current value of this input. + * @default null + */ + value?: DictKey | null; + /** + * @remarks Deserialize as a dictionary object. + */ + choices: Record; + field_type: 'select_value'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator. + */ +export type SelectValueFieldChoice = { + label: InputLabel; + choice_type: 'choice'; + stat: StatKey; + /** + * A reference to the value of a standard player character stat. + */ + using: 'stat'; +} | { + label: InputLabel; + choice_type: 'choice'; + condition_meter: ConditionMeterKey; + /** + * A reference to the value of a standard player condition meter. + */ + using: 'condition_meter'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * 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. + * @default null + */ + assets?: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * A reference to the value of an asset control. + */ + using: 'asset_control'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * 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. + * @default null + */ + assets?: AssetIdWildcard[] | null; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an asset option. + */ + using: 'asset_option'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * The dictionary key of the asset control field. + * @example "health" + * @example "integrity" + */ + control: DictKey; + /** + * 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. + */ + using: 'attached_asset_control'; +} | { + label: InputLabel; + choice_type: 'choice'; + /** + * The dictionary key of the asset option field. + */ + option: DictKey; + /** + * A reference to the value of an attached asset option. + */ + using: 'attached_asset_option'; +} | { + label: InputLabel; + choice_type: 'choice'; + value: number; + /** + * An arbitrary static integer value with a label. + */ + using: 'custom'; +}; +/** + * Represents an input that accepts plain text. + * @remarks Semantics are similar to the HTML `` element. + */ +export interface TextField { + label: InputLabel; + /** + * The content of this text input, or `null` if it's empty + * @default null + */ + value?: string | null; + field_type: 'text'; + /** + * An icon associated with this input. + */ + icon?: SvgImageUrl; +} +/** + * A setting truth category. + */ +export interface Truth { + /** + * The unique Datasworn ID for this item. + */ + _id?: TruthId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * @default "1d100" + */ + dice?: DiceExpression; + icon?: SvgImageUrl; + summary?: MarkdownString; + options: TruthOption[]; + your_character?: MarkdownString; +} +export interface TruthOption { + min?: number; + max?: number; + summary?: MarkdownString; + description: MarkdownString; + quest_starter: MarkdownString; + /** + * Represents a basic rollable oracle table with one roll column and one text result column. + */ + table?: { + oracle_type: 'table_text'; + /** + * The roll used to select a result on this oracle. + * @default "1d100" + */ + dice: DiceExpression; + /** + * An array of objects, each representing a single row of the table. + */ + rows: OracleTableRowText[]; + }; +} +export interface AtlasCollection { + /** + * The unique Datasworn ID for this item. + */ + _id?: AtlasCollectionId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * A thematic color associated with this collection. + */ + color?: CssColor; + /** + * 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. + */ + summary?: MarkdownString; + /** + * A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead. + */ + description?: MarkdownString; + images?: WebpImageUrl[]; + /** + * An SVG icon associated with this collection. + */ + icon?: SvgImageUrl; + type: 'atlas'; + /** + * This collection's content enhances the identified collection, rather than being a standalone collection of its own. + */ + enhances?: AtlasCollectionId; + /** + * This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection. + */ + replaces?: AtlasCollectionId; + /** + * @remarks Deserialize as a dictionary object. + */ + contents?: Record; + /** + * @remarks Deserialize as a dictionary object. + */ + collections?: Record; +} +/** + * An atlas entry, like the Ironlands region entries found in classic Ironsworn. + */ +export interface AtlasEntry { + /** + * The unique Datasworn ID for this item. + */ + _id?: AtlasEntryId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + features: MarkdownString[]; + summary?: MarkdownString; + description: MarkdownString; + quest_starter?: MarkdownString; + your_truth?: MarkdownString; + type: 'atlas_entry'; +} +/** + * A basic, rollable player character resource specified by the ruleset. + * @example "health" + * @example "spirit" + * @example "supply" + */ +export type ConditionMeterKey = DictKey; +/** + * A basic player character stat. + * @example "edge" + * @example "heart" + * @example "iron" + * @example "shadow" + * @example "wits" + */ +export type StatKey = DictKey; +/** + * A rarity, as described in Ironsworn: Delve. + */ +export interface Rarity { + /** + * The unique Datasworn ID for this item. + */ + _id?: RarityId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + /** + * The asset augmented by this rarity. + */ + asset: AssetId; + type: 'rarity'; + icon?: SvgImageUrl; + /** + * From Ironsworn: Delve, p. 174: + * + * 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. + * + * 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. + * @default 3 + * @minimum 3 + * @maximum 5 + */ + xp_cost?: number; + description: MarkdownString; +} +/** + * A delve site with a theme, domain, and denizens. + */ +export interface DelveSite { + /** + * The unique Datasworn ID for this item. + */ + _id?: DelveSiteId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site'; + icon?: SvgImageUrl; + rank: ChallengeRank; + /** + * The ID of an atlas entry representing the region in which this delve site is located. + */ + region?: AtlasEntryId; + /** + * The ID of the site's DelveSiteTheme card. + */ + theme: DelveSiteThemeId; + /** + * The ID of the site's DelveSiteDomain card. + */ + domain: DelveSiteDomainId; + /** + * An additional theme or domain card ID, for use with optional rules in Ironsworn: Delve. + */ + extra_card?: DelveSiteThemeId | DelveSiteDomainId; + description: MarkdownString; + /** + * Represents the delve site's denizen matrix as an array of objects. + */ + denizens: DelveSiteDenizen[] & [ + { + min: 1; + max: 27; + frequency: 'very_common'; + }, + { + min: 28; + max: 41; + frequency: 'common'; + }, + { + min: 42; + max: 55; + frequency: 'common'; + }, + { + min: 56; + max: 69; + frequency: 'common'; + }, + { + min: 70; + max: 75; + frequency: 'uncommon'; + }, + { + min: 76; + max: 81; + frequency: 'uncommon'; + }, + { + min: 82; + max: 87; + frequency: 'uncommon'; + }, + { + min: 88; + max: 93; + frequency: 'uncommon'; + }, + { + min: 94; + max: 95; + frequency: 'rare'; + }, + { + min: 96; + max: 97; + frequency: 'rare'; + }, + { + min: 98; + max: 99; + frequency: 'rare'; + }, + { + min: 100; + max: 100; + frequency: 'unforeseen'; + } + ]; +} +/** + * Represents an entry in a site denizen matrix. Denizen matrices are described in Ironsworn: Delve. + */ +export interface DelveSiteDenizen { + /** + * A name for the denizen, if it's different than the `name` property of the NPC. + */ + name?: Label; + /** + * Low end of the dice range for this denizen. + */ + min: number; + /** + * High end of the dice range for this denizen. + */ + max: number; + /** + * The ID of the relevant NPC entry, if one is specified. + */ + npc?: NpcId; + frequency: DelveSiteDenizenFrequency; +} +export type DelveSiteDenizenFrequency = 'very_common' | 'common' | 'uncommon' | 'rare' | 'unforeseen'; +/** + * A delve site Domain card. + */ +export interface DelveSiteDomain { + /** + * The unique Datasworn ID for this item. + */ + _id?: DelveSiteDomainId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site_domain'; + /** + * @deprecated + */ + summary: MarkdownString; + description?: MarkdownString; + icon?: SvgImageUrl; + /** + * An oracle table ID containing place name elements. For examples, see oracle ID `delve/oracles/site_name/place/barrow`, and its siblings in oracle collection ID `delve/collections/oracles/site_name/place`. These oracles are used by the site name oracle from Ironsworn: Delve (ID: delve/oracles/site_name/format) to create random names for delve sites. + */ + name_oracle?: OracleRollableId; + features: OracleTableRowText[] & [ + { + min: 21; + max: 43; + }, + { + min: 44; + max: 56; + }, + { + min: 57; + max: 64; + }, + { + min: 65; + max: 68; + }, + { + min: 69; + max: 72; + }, + { + min: 73; + max: 76; + }, + { + min: 77; + max: 80; + }, + { + min: 81; + max: 84; + }, + { + min: 85; + max: 88; + }, + { + min: 89; + max: 98; + }, + { + min: 99; + max: 99; + }, + { + min: 100; + max: 100; + } + ]; + dangers: OracleTableRowText[] & [ + { + min: 31; + max: 33; + }, + { + min: 34; + max: 36; + }, + { + min: 37; + max: 39; + }, + { + min: 40; + max: 42; + }, + { + min: 43; + max: 45; + } + ]; +} +/** + * A delve site theme card. + */ +export interface DelveSiteTheme { + /** + * The unique Datasworn ID for this item. + */ + _id?: DelveSiteThemeId; + /** + * Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay. + */ + _comment?: string; + /** + * The primary name/label for this item. + */ + name: Label; + /** + * The name of this item as it appears on the page in the book, if it's different from `name`. + */ + canonical_name?: Label; + /** + * Attribution for the original source (such as a book or website) of this item, including the author and licensing information. + */ + _source: SourceInfo; + suggestions?: Suggestions; + /** + * @experimental + */ + tags?: Record>; + type: 'delve_site_theme'; + summary: MarkdownString; + description?: MarkdownString; + icon?: SvgImageUrl; + features: OracleTableRowText[] & [ + { + min: 1; + max: 4; + }, + { + min: 5; + max: 8; + }, + { + min: 9; + max: 12; + }, + { + min: 13; + max: 16; + }, + { + min: 17; + max: 20; + } + ]; + dangers: OracleTableRowText[] & [ + { + min: 1; + max: 5; + }, + { + min: 6; + max: 10; + }, + { + min: 11; + max: 12; + }, + { + min: 13; + max: 14; + }, + { + min: 15; + max: 16; + }, + { + min: 17; + max: 18; + }, + { + min: 19; + max: 20; + }, + { + min: 21; + max: 22; + }, + { + min: 23; + max: 24; + }, + { + min: 25; + max: 26; + }, + { + min: 27; + max: 28; + }, + { + min: 29; + max: 30; + } + ]; +} diff --git a/src/migration/history/v0.0.10/classic/classic.json b/src/migration/history/v0.0.10/classic/classic.json new file mode 100644 index 000000000..465be2db6 --- /dev/null +++ b/src/migration/history/v0.0.10/classic/classic.json @@ -0,0 +1,22561 @@ +{ + "_id": "classic", + "datasworn_version": "0.0.10", + "type": "ruleset", + "title": "Ironsworn Rulebook", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0", + "rules": { + "condition_meters": { + "health": { + "label": "health", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "shared": false, + "description": "Health represents your current physical condition and stamina." + }, + "spirit": { + "label": "spirit", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "shared": false, + "description": "Spirit is your current mental state." + }, + "supply": { + "label": "supply", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "shared": true, + "description": "Supply is an abstract representation of your preparedness, including ammo, food, water, and general upkeep." + } + }, + "stats": { + "edge": { + "label": "edge", + "description": "Quickness, agility, and prowess in ranged combat." + }, + "heart": { + "label": "heart", + "description": "Courage, willpower, empathy, sociability, and loyalty." + }, + "iron": { + "label": "iron", + "description": "Physical strength, endurance, aggressiveness, and prowess in close combat." + }, + "shadow": { + "label": "shadow", + "description": "Sneakiness, deceptiveness, and cunning." + }, + "wits": { + "label": "wits", + "description": "Expertise, knowledge, and observation." + } + }, + "impacts": { + "conditions": { + "label": "conditions", + "description": "As with all debilities, conditions impact your max momentum and momentum reset. In addition, if you are wounded, shaken, or unprepared, you cannot increase the associated track.", + "contents": { + "wounded": { + "label": "wounded", + "prevents_recovery": ["health"], + "permanent": false, + "shared": false, + "description": "You are severely injured and need treatment to recover." + }, + "shaken": { + "label": "shaken", + "prevents_recovery": ["spirit"], + "permanent": false, + "shared": false, + "description": "You are despairing or distraught, and need comfort to recover." + }, + "unprepared": { + "label": "unprepared", + "prevents_recovery": ["supply"], + "permanent": false, + "shared": true, + "description": "You and your allies have exhausted their supplies, and must gather provisions in a community to recover." + }, + "encumbered": { + "label": "encumbered", + "prevents_recovery": [], + "permanent": false, + "shared": false, + "description": "You are carrying excessive or cumbersome weight." + } + } + }, + "banes": { + "label": "banes", + "description": "Banes are permanent. They forever impact your character through the momentum penalty and—more importantly—through the narrative impact of being maimed or corrupted.", + "contents": { + "maimed": { + "label": "maimed", + "prevents_recovery": [], + "permanent": true, + "shared": false, + "description": "You have suffered a wound which causes you ongoing physical challenges, such as the loss of an eye or hand. Or, you bear horrific scars which serve as a constant reminder of your failures." + }, + "corrupted": { + "label": "corrupted", + "prevents_recovery": [], + "permanent": true, + "shared": false, + "description": "Your experiences have left you emotionally scarred. You are at the threshold of losing yourself to darkness." + } + } + }, + "burdens": { + "label": "burdens", + "description": "Burdens are a result of life-changing experiences that leave you bound to quests. Clearing a burden can only be accomplished by resolving the quest.", + "contents": { + "cursed": { + "label": "cursed", + "prevents_recovery": [], + "permanent": false, + "shared": false, + "description": "Cursed is marked when you [Face Death](ironsworn/moves/suffer/face_death) and return with a soul-bound quest. This burden can only be cleared by completing the quest." + }, + "tormented": { + "label": "tormented", + "prevents_recovery": [], + "permanent": false, + "shared": false, + "description": "Tormented is marked when you [Face Desolation](ironsworn/moves/suffer/face_desolation) and undertake a quest to prevent a dire future." + } + } + } + }, + "special_tracks": { + "bonds": { + "label": "bonds", + "optional": false, + "shared": false, + "description": "As you build relationships and complete quests in the service of others, you create bonds by making the Forge a Bond move." + } + }, + "tags": {} + }, + "oracles": { + "action_and_theme": { + "_id": "classic/collections/oracles/action_and_theme", + "type": "oracle_collection", + "name": "Action and Theme Oracles", + "oracle_type": "tables", + "contents": { + "action": { + "_id": "classic/oracles/action_and_theme/action", + "type": "oracle_rollable", + "name": "Action", + "canonical_name": "Oracle 1: Action", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this table to inspire a discovery, event, character goal, or situation. A roll on this table can be combined with a [Theme](id:classic/oracles/action_and_theme/theme) to provide an action and a subject. Then, interpret the result based on the context of the question and your current situation.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "suggestions": { + "oracles": ["classic/oracles/action_and_theme/theme"] + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Scheme", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Clash", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Weaken", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Initiate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Create", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Swear", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Avenge", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Guard", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Defeat", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Control", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Break", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Risk", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Surrender", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Inspect", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Raid", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Evade", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 17, + "max": 17, + "text": "Assault", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 18, + "max": 18, + "text": "Deflect", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 19, + "max": 19, + "text": "Threaten", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 20, + "max": 20, + "text": "Attack", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 21, + "max": 21, + "text": "Leave", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 22, + "max": 22, + "text": "Preserve", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 23, + "max": 23, + "text": "Manipulate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 24, + "max": 24, + "text": "Remove", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 25, + "max": 25, + "text": "Eliminate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 26, + "max": 26, + "text": "Withdraw", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 27, + "max": 27, + "text": "Abandon", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 28, + "max": 28, + "text": "Investigate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 29, + "max": 29, + "text": "Hold", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 30, + "max": 30, + "text": "Focus", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 31, + "max": 31, + "text": "Uncover", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 32, + "max": 32, + "text": "Breach", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 33, + "max": 33, + "text": "Aid", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 34, + "max": 34, + "text": "Uphold", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 35, + "max": 35, + "text": "Falter", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 36, + "max": 36, + "text": "Suppress", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 37, + "max": 37, + "text": "Hunt", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 38, + "max": 38, + "text": "Share", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 39, + "max": 39, + "text": "Destroy", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 40, + "max": 40, + "text": "Avoid", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 41, + "max": 41, + "text": "Reject", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 42, + "max": 42, + "text": "Demand", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 43, + "max": 43, + "text": "Explore", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 44, + "max": 44, + "text": "Bolster", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 45, + "max": 45, + "text": "Seize", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 46, + "max": 46, + "text": "Mourn", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 47, + "max": 47, + "text": "Reveal", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 48, + "max": 48, + "text": "Gather", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 49, + "max": 49, + "text": "Defy", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 50, + "max": 50, + "text": "Transform", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 51, + "max": 51, + "text": "Persevere", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 52, + "max": 52, + "text": "Serve", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 53, + "max": 53, + "text": "Begin", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 54, + "max": 54, + "text": "Move", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 55, + "max": 55, + "text": "Coordinate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 56, + "max": 56, + "text": "Resist", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 57, + "max": 57, + "text": "Await", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 58, + "max": 58, + "text": "Impress", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 59, + "max": 59, + "text": "Take", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 60, + "max": 60, + "text": "Oppose", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 61, + "max": 61, + "text": "Capture", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 62, + "max": 62, + "text": "Overwhelm", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 63, + "max": 63, + "text": "Challenge", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 64, + "max": 64, + "text": "Acquire", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 65, + "max": 65, + "text": "Protect", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 66, + "max": 66, + "text": "Finish", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 67, + "max": 67, + "text": "Strengthen", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 68, + "max": 68, + "text": "Restore", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 69, + "max": 69, + "text": "Advance", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 70, + "max": 70, + "text": "Command", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 71, + "max": 71, + "text": "Refuse", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 72, + "max": 72, + "text": "Find", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 73, + "max": 73, + "text": "Deliver", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 74, + "max": 74, + "text": "Hide", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 75, + "max": 75, + "text": "Fortify", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 76, + "max": 76, + "text": "Betray", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 77, + "max": 77, + "text": "Secure", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 78, + "max": 78, + "text": "Arrive", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 79, + "max": 79, + "text": "Affect", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 80, + "max": 80, + "text": "Change", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 81, + "max": 81, + "text": "Defend", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 82, + "max": 82, + "text": "Debate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 83, + "max": 83, + "text": "Support", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 84, + "max": 84, + "text": "Follow", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 85, + "max": 85, + "text": "Construct", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 86, + "max": 86, + "text": "Locate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 87, + "max": 87, + "text": "Endure", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 88, + "max": 88, + "text": "Release", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 89, + "max": 89, + "text": "Lose", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 90, + "max": 90, + "text": "Reduce", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 91, + "max": 91, + "text": "Escalate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 92, + "max": 92, + "text": "Distract", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 93, + "max": 93, + "text": "Journey", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 94, + "max": 94, + "text": "Escort", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 95, + "max": 95, + "text": "Learn", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 96, + "max": 96, + "text": "Communicate", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 97, + "max": 97, + "text": "Depart", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 98, + "max": 98, + "text": "Search", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 99, + "max": 99, + "text": "Charge", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Summon", + "_i18n": { + "text": { + "part_of_speech": "verb" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 174, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "theme": { + "_id": "classic/oracles/action_and_theme/theme", + "type": "oracle_rollable", + "name": "Theme", + "canonical_name": "Oracle 2: Theme", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "As with the [Action](id:classic/oracles/action_and_theme/action) oracle, this is an interpretative table which you can use to answer questions or generate new situations. Combined, the Action and Theme tables provide creative prompts suitable for most situations and questions. In fact, with some creative interpretations, it’s entirely possible to play with only these two tables.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "suggestions": { + "oracles": ["classic/oracles/action_and_theme/action"] + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Risk", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Ability", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Price", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Ally", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Battle", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Safety", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Survival", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Weapon", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Wound", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Shelter", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Leader", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Fear", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Time", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Duty", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Secret", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Innocence", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 17, + "max": 17, + "text": "Renown", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 18, + "max": 18, + "text": "Direction", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 19, + "max": 19, + "text": "Death", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 20, + "max": 20, + "text": "Honor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 21, + "max": 21, + "text": "Labor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 22, + "max": 22, + "text": "Solution", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 23, + "max": 23, + "text": "Tool", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 24, + "max": 24, + "text": "Balance", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 25, + "max": 25, + "text": "Love", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 26, + "max": 26, + "text": "Barrier", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 27, + "max": 27, + "text": "Creation", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 28, + "max": 28, + "text": "Decay", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 29, + "max": 29, + "text": "Trade", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 30, + "max": 30, + "text": "Bond", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 31, + "max": 31, + "text": "Hope", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 32, + "max": 32, + "text": "Superstition", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 33, + "max": 33, + "text": "Peace", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 34, + "max": 34, + "text": "Deception", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 35, + "max": 35, + "text": "History", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 36, + "max": 36, + "text": "World", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 37, + "max": 37, + "text": "Vow", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 38, + "max": 38, + "text": "Protection", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 39, + "max": 39, + "text": "Nature", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 40, + "max": 40, + "text": "Opinion", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 41, + "max": 41, + "text": "Burden", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 42, + "max": 42, + "text": "Vengeance", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 43, + "max": 43, + "text": "Opportunity", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 44, + "max": 44, + "text": "Faction", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 45, + "max": 45, + "text": "Danger", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 46, + "max": 46, + "text": "Corruption", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 47, + "max": 47, + "text": "Freedom", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 48, + "max": 48, + "text": "Debt", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 49, + "max": 49, + "text": "Hate", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 50, + "max": 50, + "text": "Possession", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 51, + "max": 51, + "text": "Stranger", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 52, + "max": 52, + "text": "Passage", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 53, + "max": 53, + "text": "Land", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 54, + "max": 54, + "text": "Creature", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 55, + "max": 55, + "text": "Disease", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 56, + "max": 56, + "text": "Advantage", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 57, + "max": 57, + "text": "Blood", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 58, + "max": 58, + "text": "Language", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 59, + "max": 59, + "text": "Rumor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 60, + "max": 60, + "text": "Weakness", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 61, + "max": 61, + "text": "Greed", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 62, + "max": 62, + "text": "Family", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 63, + "max": 63, + "text": "Resource", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 64, + "max": 64, + "text": "Structure", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 65, + "max": 65, + "text": "Dream", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 66, + "max": 66, + "text": "Community", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 67, + "max": 67, + "text": "War", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 68, + "max": 68, + "text": "Portent", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 69, + "max": 69, + "text": "Prize", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 70, + "max": 70, + "text": "Destiny", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 71, + "max": 71, + "text": "Momentum", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 72, + "max": 72, + "text": "Power", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 73, + "max": 73, + "text": "Memory", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 74, + "max": 74, + "text": "Ruin", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 75, + "max": 75, + "text": "Mysticism", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 76, + "max": 76, + "text": "Rival", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 77, + "max": 77, + "text": "Problem", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 78, + "max": 78, + "text": "Idea", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 79, + "max": 79, + "text": "Revenge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 80, + "max": 80, + "text": "Health", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 81, + "max": 81, + "text": "Fellowship", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 82, + "max": 82, + "text": "Enemy", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 83, + "max": 83, + "text": "Religion", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 84, + "max": 84, + "text": "Spirit", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 85, + "max": 85, + "text": "Fame", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 86, + "max": 86, + "text": "Desolation", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 87, + "max": 87, + "text": "Strength", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 88, + "max": 88, + "text": "Knowledge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 89, + "max": 89, + "text": "Truth", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 90, + "max": 90, + "text": "Quest", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 91, + "max": 91, + "text": "Pride", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 92, + "max": 92, + "text": "Loss", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 93, + "max": 93, + "text": "Law", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 94, + "max": 94, + "text": "Path", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 95, + "max": 95, + "text": "Warning", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 96, + "max": 96, + "text": "Relationship", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 97, + "max": 97, + "text": "Wealth", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 98, + "max": 98, + "text": "Home", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 99, + "max": 99, + "text": "Strategy", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Supply", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 175, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 174, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "character": { + "_id": "classic/collections/oracles/character", + "type": "oracle_collection", + "name": "Character", + "oracle_type": "tables", + "contents": { + "role": { + "_id": "classic/oracles/character/role", + "type": "oracle_rollable", + "name": "Character Role", + "canonical_name": "Oracle 10: Character Role", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to define the background for a character, or to generate a random encounter.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 2, + "text": "Criminal", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 3, + "max": 4, + "text": "Healer", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 5, + "max": 6, + "text": "Bandit", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 7, + "max": 9, + "text": "Guide", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 10, + "max": 12, + "text": "Performer", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 13, + "max": 15, + "text": "Miner", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 16, + "max": 18, + "text": "Mercenary", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 19, + "max": 21, + "text": "Outcast", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 22, + "max": 24, + "text": "Vagrant", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 25, + "max": 27, + "text": "Forester", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 28, + "max": 30, + "text": "Traveler", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 31, + "max": 33, + "text": "Mystic", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 34, + "max": 36, + "text": "Priest", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 37, + "max": 39, + "text": "Sailor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 40, + "max": 42, + "text": "Pilgrim", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 43, + "max": 45, + "text": "Thief", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 46, + "max": 48, + "text": "Adventurer", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 49, + "max": 51, + "text": "Forager", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 52, + "max": 54, + "text": "Leader", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 55, + "max": 58, + "text": "Guard", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 59, + "max": 62, + "text": "Artisan", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 63, + "max": 66, + "text": "Scout", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 67, + "max": 70, + "text": "Herder", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 71, + "max": 74, + "text": "Fisher", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 75, + "max": 79, + "text": "Warrior", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 80, + "max": 84, + "text": "Hunter", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 85, + "max": 89, + "text": "Raider", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 90, + "max": 94, + "text": "Trader", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 95, + "max": 99, + "text": "Farmer", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Unusual role", + "suggestions": { + "oracles": [ + "classic/oracles/action_and_theme/action", + "classic/oracles/action_and_theme/theme" + ] + }, + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 182, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "goal": { + "_id": "classic/oracles/character/goal", + "type": "oracle_rollable", + "name": "Character Goal", + "canonical_name": "Oracle 11: Character Goal", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to define the primary motivation of an NPC or a faction. It can also be used to kick-off a personal quest for your own character.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 3, + "text": "Obtain an object" + }, + { + "min": 4, + "max": 6, + "text": "Make an agreement" + }, + { + "min": 7, + "max": 9, + "text": "Build a relationship" + }, + { + "min": 10, + "max": 12, + "text": "Undermine a relationship" + }, + { + "min": 13, + "max": 15, + "text": "Seek a truth" + }, + { + "min": 16, + "max": 18, + "text": "Pay a debt" + }, + { + "min": 19, + "max": 21, + "text": "Refute a falsehood" + }, + { + "min": 22, + "max": 24, + "text": "Harm a rival" + }, + { + "min": 25, + "max": 27, + "text": "Cure an ill" + }, + { + "min": 28, + "max": 30, + "text": "Find a person" + }, + { + "min": 31, + "max": 33, + "text": "Find a home" + }, + { + "min": 34, + "max": 36, + "text": "Seize power" + }, + { + "min": 37, + "max": 39, + "text": "Restore a relationship" + }, + { + "min": 40, + "max": 42, + "text": "Create an item" + }, + { + "min": 43, + "max": 45, + "text": "Travel to a place" + }, + { + "min": 46, + "max": 48, + "text": "Secure provisions" + }, + { + "min": 49, + "max": 51, + "text": "Rebel against power" + }, + { + "min": 52, + "max": 54, + "text": "Collect a debt" + }, + { + "min": 55, + "max": 57, + "text": "Protect a secret" + }, + { + "min": 58, + "max": 60, + "text": "Spread faith" + }, + { + "min": 61, + "max": 63, + "text": "Enrich themselves" + }, + { + "min": 64, + "max": 66, + "text": "Protect a person" + }, + { + "min": 67, + "max": 69, + "text": "Protect the status quo" + }, + { + "min": 70, + "max": 72, + "text": "Advance status" + }, + { + "min": 73, + "max": 75, + "text": "Defend a place" + }, + { + "min": 76, + "max": 78, + "text": "Avenge a wrong" + }, + { + "min": 79, + "max": 81, + "text": "Fulfill a duty" + }, + { + "min": 82, + "max": 84, + "text": "Gain knowledge" + }, + { + "min": 85, + "max": 87, + "text": "Prove worthiness" + }, + { + "min": 88, + "max": 90, + "text": "Find redemption" + }, + { + "min": 91, + "max": 92, + "text": "Escape from something" + }, + { + "min": 93, + "max": 95, + "text": "Resolve a dispute" + }, + { + "min": 96, + "max": 100, + "text": "Roll twice", + "oracle_rolls": [ + { + "oracle": null, + "dice": null, + "auto": true, + "duplicates": "reroll", + "number_of_rolls": 2 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 182, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "descriptor": { + "_id": "classic/oracles/character/descriptor", + "type": "oracle_rollable", + "name": "Character Descriptor", + "canonical_name": "Oracle 12: Character Descriptor", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to help flesh out a character’s personality or physical characteristics. Roll more than once to add additional detail.", + "recommended_rolls": { + "min": 1, + "max": 3 + }, + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Stoic", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Attractive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Passive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Aloof", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Affectionate", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Generous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Smug", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Armed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Clever", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Brave", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Ugly", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Sociable", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Doomed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Connected", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Bold", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Jealous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 17, + "max": 17, + "text": "Angry", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 18, + "max": 18, + "text": "Active", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 19, + "max": 19, + "text": "Suspicious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 20, + "max": 20, + "text": "Hostile", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 21, + "max": 21, + "text": "Hardhearted", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 22, + "max": 22, + "text": "Successful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 23, + "max": 23, + "text": "Talented", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 24, + "max": 24, + "text": "Experienced", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 25, + "max": 25, + "text": "Deceitful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 26, + "max": 26, + "text": "Ambitious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 27, + "max": 27, + "text": "Aggressive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 28, + "max": 28, + "text": "Conceited", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 29, + "max": 29, + "text": "Proud", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 30, + "max": 30, + "text": "Stern", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 31, + "max": 31, + "text": "Dependent", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 32, + "max": 32, + "text": "Wary", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 33, + "max": 33, + "text": "Strong", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 34, + "max": 34, + "text": "Insightful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 35, + "max": 35, + "text": "Dangerous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 36, + "max": 36, + "text": "Quirky", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 37, + "max": 37, + "text": "Cheery", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 38, + "max": 38, + "text": "Disfigured", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 39, + "max": 39, + "text": "Intolerant", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 40, + "max": 40, + "text": "Skilled", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 41, + "max": 41, + "text": "Stingy", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 42, + "max": 42, + "text": "Timid", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 43, + "max": 43, + "text": "Insensitive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 44, + "max": 44, + "text": "Wild", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 45, + "max": 45, + "text": "Bitter", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 46, + "max": 46, + "text": "Cunning", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 47, + "max": 47, + "text": "Remorseful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 48, + "max": 48, + "text": "Kind", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 49, + "max": 49, + "text": "Charming", + "_i18n": { + "text": { + "part_of_speech": "gerund" + } + } + }, + { + "min": 50, + "max": 50, + "text": "Oblivious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 51, + "max": 51, + "text": "Critical", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 52, + "max": 52, + "text": "Cautious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 53, + "max": 53, + "text": "Resourceful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 54, + "max": 54, + "text": "Weary", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 55, + "max": 55, + "text": "Wounded", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 56, + "max": 56, + "text": "Anxious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 57, + "max": 57, + "text": "Powerful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 58, + "max": 58, + "text": "Athletic", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 59, + "max": 59, + "text": "Driven", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 60, + "max": 60, + "text": "Cruel", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 61, + "max": 61, + "text": "Quiet", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 62, + "max": 62, + "text": "Honest", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 63, + "max": 63, + "text": "Infamous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 64, + "max": 64, + "text": "Dying", + "_i18n": { + "text": { + "part_of_speech": "gerund" + } + } + }, + { + "min": 65, + "max": 65, + "text": "Reclusive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 66, + "max": 66, + "text": "Artistic", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 67, + "max": 67, + "text": "Disabled", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 68, + "max": 68, + "text": "Confused", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 69, + "max": 69, + "text": "Manipulative", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 70, + "max": 70, + "text": "Relaxed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 71, + "max": 71, + "text": "Stealthy", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 72, + "max": 72, + "text": "Confident", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 73, + "max": 73, + "text": "Weak", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 74, + "max": 74, + "text": "Friendly", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 75, + "max": 75, + "text": "Wise", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 76, + "max": 76, + "text": "Influential", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 77, + "max": 77, + "text": "Young", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 78, + "max": 78, + "text": "Adventurous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 79, + "max": 79, + "text": "Oppressed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 80, + "max": 80, + "text": "Vengeful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 81, + "max": 81, + "text": "Cooperative", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 82, + "max": 82, + "text": "Armored", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 83, + "max": 83, + "text": "Apathetic", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 84, + "max": 84, + "text": "Determined", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 85, + "max": 85, + "text": "Loyal", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 86, + "max": 86, + "text": "Sick", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 87, + "max": 87, + "text": "Religious", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 88, + "max": 88, + "text": "Selfish", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 89, + "max": 89, + "text": "Old", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 90, + "max": 90, + "text": "Fervent", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 91, + "max": 91, + "text": "Violent", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 92, + "max": 92, + "text": "Agreeable", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 93, + "max": 93, + "text": "Hot-tempered", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 94, + "max": 94, + "text": "Stubborn", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 95, + "max": 95, + "text": "Incompetent", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 96, + "max": 96, + "text": "Greedy", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 97, + "max": 97, + "text": "Cowardly", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 98, + "max": 98, + "text": "Obsessed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 99, + "max": 99, + "text": "Careless", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Ironsworn", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 183, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 182, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "moves": { + "_id": "classic/collections/oracles/moves", + "type": "oracle_collection", + "name": "Moves", + "oracle_type": "tables", + "contents": { + "endure_harm": { + "_id": "classic/oracles/moves/endure_harm", + "type": "oracle_rollable", + "name": "Endure Harm", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "The harm is mortal. [Face Death](id:classic/moves/suffer/face_death)." + }, + { + "min": 11, + "max": 20, + "text": "You are dying. You need to Heal within an hour or two, or [Face Death](id:classic/moves/suffer/face_death)." + }, + { + "min": 21, + "max": 35, + "text": "You are unconscious and out of action. If left alone, you come back to your senses in an hour or two. If you are vulnerable to a foe not inclined to show mercy, [Face Death](id:classic/moves/suffer/face_death)." + }, + { + "min": 36, + "max": 50, + "text": "You are reeling and fighting to stay conscious. If you engage in any vigorous activity (such as running or fighting) before taking a breather for a few minutes, roll on this table again (before resolving the other move)." + }, + { + "min": 51, + "max": 100, + "text": "You are battered but still standing." + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 91, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "endure_stress": { + "_id": "classic/oracles/moves/endure_stress", + "type": "oracle_rollable", + "name": "Endure Stress", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "You are overwhelmed. [Face Desolation](id:classic/moves/suffer/face_desolation)." + }, + { + "min": 11, + "max": 25, + "text": "You give up. [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow) (if possible, one relevant to your current crisis)." + }, + { + "min": 26, + "max": 50, + "text": "You give in to a fear or compulsion, and act against your better instincts." + }, + { + "min": 51, + "max": 100, + "text": "You persevere." + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 93, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "pay_the_price": { + "_id": "classic/oracles/moves/pay_the_price", + "type": "oracle_rollable", + "name": "Pay the Price", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 2, + "text": "Roll again and apply that result but make it worse. If you roll this result yet again, think of something dreadful that changes the course of your quest ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and make it happen." + }, + { + "min": 3, + "max": 5, + "text": "A person or community you trusted loses faith in you, or acts against you." + }, + { + "min": 6, + "max": 9, + "text": "A person or community you care about is exposed to danger." + }, + { + "min": 10, + "max": 16, + "text": "You are separated from something or someone." + }, + { + "min": 17, + "max": 23, + "text": "Your action has an unintended effect." + }, + { + "min": 24, + "max": 32, + "text": "Something of value is lost or destroyed." + }, + { + "min": 33, + "max": 41, + "text": "The current situation worsens." + }, + { + "min": 42, + "max": 50, + "text": "A new danger or foe is revealed." + }, + { + "min": 51, + "max": 59, + "text": "It causes a delay or puts you at a disadvantage." + }, + { + "min": 60, + "max": 68, + "text": "It is harmful." + }, + { + "min": 69, + "max": 76, + "text": "It is stressful." + }, + { + "min": 77, + "max": 85, + "text": "A surprising development complicates your quest." + }, + { + "min": 86, + "max": 90, + "text": "It wastes resources." + }, + { + "min": 91, + "max": 94, + "text": "It forces you to act against your best intentions." + }, + { + "min": 95, + "max": 98, + "text": "A friend, companion, or ally is put in harm’s way (or you are, if alone)." + }, + { + "min": 99, + "max": 100, + "text": "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", + "oracle_rolls": [ + { + "oracle": null, + "dice": null, + "auto": true, + "duplicates": "make_it_worse", + "number_of_rolls": 2 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 105, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "collections": { + "ask_the_oracle": { + "_id": "classic/collections/oracles/moves/ask_the_oracle", + "type": "oracle_collection", + "name": "Ask the Oracle", + "oracle_type": "table_shared_text", + "contents": { + "almost_certain": { + "_id": "classic/oracles/moves/ask_the_oracle/almost_certain", + "type": "oracle_rollable", + "name": "Almost Certain", + "oracle_type": "column_text", + "dice": "1d100", + "match": { + "text": "On a match, an extreme result or twist has occurred." + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "No" + }, + { + "min": 11, + "max": 100, + "text": "Yes" + } + ] + }, + "likely": { + "_id": "classic/oracles/moves/ask_the_oracle/likely", + "type": "oracle_rollable", + "name": "Likely", + "oracle_type": "column_text", + "dice": "1d100", + "match": { + "text": "On a match, an extreme result or twist has occurred." + }, + "rows": [ + { + "min": 1, + "max": 25, + "text": "No" + }, + { + "min": 26, + "max": 100, + "text": "Yes" + } + ] + }, + "fifty_fifty": { + "_id": "classic/oracles/moves/ask_the_oracle/fifty_fifty", + "type": "oracle_rollable", + "name": "50/50", + "oracle_type": "column_text", + "dice": "1d100", + "match": { + "text": "On a match, an extreme result or twist has occurred." + }, + "rows": [ + { + "min": 1, + "max": 50, + "text": "No" + }, + { + "min": 51, + "max": 100, + "text": "Yes" + } + ] + }, + "unlikely": { + "_id": "classic/oracles/moves/ask_the_oracle/unlikely", + "type": "oracle_rollable", + "name": "Unlikely", + "oracle_type": "column_text", + "dice": "1d100", + "match": { + "text": "On a match, an extreme result or twist has occurred." + }, + "rows": [ + { + "min": 1, + "max": 75, + "text": "No" + }, + { + "min": 76, + "max": 100, + "text": "Yes" + } + ] + }, + "small_chance": { + "_id": "classic/oracles/moves/ask_the_oracle/small_chance", + "type": "oracle_rollable", + "name": "Small Chance", + "oracle_type": "column_text", + "dice": "1d100", + "match": { + "text": "On a match, an extreme result or twist has occurred." + }, + "rows": [ + { + "min": 1, + "max": 90, + "text": "No" + }, + { + "min": 91, + "max": 100, + "text": "Yes" + } + ] + } + }, + "column_labels": { + "text": "Result" + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 107, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 49, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "name": { + "_id": "classic/collections/oracles/name", + "type": "oracle_collection", + "name": "Name", + "oracle_type": "tables", + "contents": { + "elf": { + "_id": "classic/oracles/name/elf", + "type": "oracle_rollable", + "name": "Elf Names", + "canonical_name": "Oracle 14: Elf Names", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to generate a name for an elf character.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 2, + "text": "Arsula", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 3, + "max": 4, + "text": "Naidita", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 6, + "text": "Belesunna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 7, + "max": 8, + "text": "Vidarna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 10, + "text": "Ninsunu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 12, + "text": "Balathu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 14, + "text": "Dorosi", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 15, + "max": 16, + "text": "Gezera", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 18, + "text": "Zursan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 19, + "max": 20, + "text": "Seleeku", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 22, + "text": "Utamara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 23, + "max": 24, + "text": "Nebakay", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 26, + "text": "Dismashk", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 27, + "max": 28, + "text": "Mitunu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 30, + "text": "Atani", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 32, + "text": "Kinzura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 34, + "text": "Sumula", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 35, + "max": 36, + "text": "Ukames", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 38, + "text": "Ahmeshki", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 39, + "max": 40, + "text": "Ilsit", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 42, + "text": "Mayatanay", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 43, + "max": 44, + "text": "Etana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 46, + "text": "Gamanna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 47, + "max": 48, + "text": "Nessana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 50, + "text": "Uralar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 52, + "text": "Tishetu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 54, + "text": "Leucia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 55, + "max": 56, + "text": "Sutahe", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 58, + "text": "Dotani", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 59, + "max": 60, + "text": "Uktannu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 62, + "text": "Retenay", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 63, + "max": 64, + "text": "Kendalanu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 66, + "text": "Tahuta", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 67, + "max": 68, + "text": "Mattissa", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 70, + "text": "Anatu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 72, + "text": "Aralu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 74, + "text": "Arakhi", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 75, + "max": 76, + "text": "Ibrahem", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 78, + "text": "Sinosu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 79, + "max": 80, + "text": "Jemshida", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 82, + "text": "Visapni", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 83, + "max": 84, + "text": "Hullata", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 86, + "text": "Sidura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 87, + "max": 88, + "text": "Kerihu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 90, + "text": "Ereshki", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 92, + "text": "Cybela", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 94, + "text": "Anunna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 95, + "max": 96, + "text": "Otani", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 98, + "text": "Ditani", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 99, + "max": 100, + "text": "Faraza", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 186, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "collections": { + "ironlander": { + "_id": "classic/collections/oracles/name/ironlander", + "type": "oracle_collection", + "name": "Ironlander Names", + "canonical_name": "Oracle 13: Ironlander Names", + "oracle_type": "tables", + "summary": "Use this oracle to quickly generate a name for an Ironlander character. Roll on either table. Surnames are not used in the Ironlands, and names are often gender-neutral.", + "contents": { + "a": { + "_id": "classic/oracles/name/ironlander/a", + "type": "oracle_rollable", + "name": "Table A", + "canonical_name": "Ironlander Names", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Solana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Keelan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Cadigan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Sola", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Kodroth", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Kione", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Katja", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Tio", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Artiga", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Eos", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Bastien", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Elli", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Maura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Haleema", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Abella", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Morter", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 17, + "text": "Wulan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 18, + "max": 18, + "text": "Mai", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 19, + "max": 19, + "text": "Farina", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 20, + "max": 20, + "text": "Pearce", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 21, + "text": "Wynne", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 22, + "max": 22, + "text": "Haf", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 23, + "max": 23, + "text": "Aeddon", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 24, + "max": 24, + "text": "Khinara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 25, + "text": "Milla", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 26, + "max": 26, + "text": "Nakata", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 27, + "max": 27, + "text": "Kynan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 28, + "max": 28, + "text": "Kiah", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 29, + "text": "Jaggar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 30, + "max": 30, + "text": "Beca", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 31, + "text": "Ikram", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 32, + "max": 32, + "text": "Melia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 33, + "text": "Sidan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 34, + "max": 34, + "text": "Deshi", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 35, + "max": 35, + "text": "Tessa", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 36, + "max": 36, + "text": "Sibila", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 37, + "text": "Morien", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 38, + "max": 38, + "text": "Mona", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 39, + "max": 39, + "text": "Padma", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 40, + "max": 40, + "text": "Avella", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 41, + "text": "Naila", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 42, + "max": 42, + "text": "Lio", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 43, + "max": 43, + "text": "Cera", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 44, + "max": 44, + "text": "Ithela", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 45, + "text": "Zhan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 46, + "max": 46, + "text": "Kaivan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 47, + "max": 47, + "text": "Valeri", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 48, + "max": 48, + "text": "Hirsham", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 49, + "text": "Pemba", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 50, + "max": 50, + "text": "Edda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 51, + "text": "Lestara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 52, + "max": 52, + "text": "Lago", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 53, + "text": "Elstan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 54, + "max": 54, + "text": "Saskia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 55, + "max": 55, + "text": "Kabeera", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 56, + "max": 56, + "text": "Caldas", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 57, + "text": "Nisus", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 58, + "max": 58, + "text": "Serene", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 59, + "max": 59, + "text": "Chenda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 60, + "max": 60, + "text": "Themon", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 61, + "text": "Erin", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 62, + "max": 62, + "text": "Alban", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 63, + "max": 63, + "text": "Parcell", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 64, + "max": 64, + "text": "Jelma", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 65, + "text": "Willa", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 66, + "max": 66, + "text": "Nadira", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 67, + "max": 67, + "text": "Gwen", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 68, + "max": 68, + "text": "Amara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 69, + "text": "Masias", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 70, + "max": 70, + "text": "Kanno", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 71, + "text": "Razeena", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 72, + "max": 72, + "text": "Mira", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 73, + "text": "Perella", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 74, + "max": 74, + "text": "Myrick", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 75, + "max": 75, + "text": "Qamar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 76, + "max": 76, + "text": "Kormak", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 77, + "text": "Zura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 78, + "max": 78, + "text": "Zanita", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 79, + "max": 79, + "text": "Brynn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 80, + "max": 80, + "text": "Tegan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 81, + "text": "Pendry", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 82, + "max": 82, + "text": "Quinn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 83, + "max": 83, + "text": "Fanir", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 84, + "max": 84, + "text": "Glain", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 85, + "text": "Emelyn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 86, + "max": 86, + "text": "Kendi", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 87, + "max": 87, + "text": "Althus", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 88, + "max": 88, + "text": "Leela", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 89, + "text": "Ishana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 90, + "max": 90, + "text": "Flint", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 91, + "text": "Delkash", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 92, + "max": 92, + "text": "Nia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 93, + "text": "Nan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 94, + "max": 94, + "text": "Keeara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 95, + "max": 95, + "text": "Katania", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 96, + "max": 96, + "text": "Morell", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 97, + "text": "Temir", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 98, + "max": 98, + "text": "Bas", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 99, + "max": 99, + "text": "Sabine", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Tallus", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 184, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "b": { + "_id": "classic/oracles/name/ironlander/b", + "type": "oracle_rollable", + "name": "Table B", + "canonical_name": "Ironlander Names", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Segura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Gethin", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Bataar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Basira", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Joa", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Glynn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Toran", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Arasen", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Kuron", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Griff", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Owena", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Adda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Euros", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Kova", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Kara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Morgan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 17, + "text": "Nanda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 18, + "max": 18, + "text": "Tamara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 19, + "max": 19, + "text": "Asha", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 20, + "max": 20, + "text": "Delos", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 21, + "text": "Torgan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 22, + "max": 22, + "text": "Makari", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 23, + "max": 23, + "text": "Selva", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 24, + "max": 24, + "text": "Kimura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 25, + "text": "Rhian", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 26, + "max": 26, + "text": "Tristan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 27, + "max": 27, + "text": "Siorra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 28, + "max": 28, + "text": "Sayer", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 29, + "text": "Cortina", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 30, + "max": 30, + "text": "Vesna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 31, + "text": "Kataka", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 32, + "max": 32, + "text": "Keyshia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 33, + "text": "Mila", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 34, + "max": 34, + "text": "Lili", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 35, + "max": 35, + "text": "Vigo", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 36, + "max": 36, + "text": "Sadia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 37, + "text": "Malik", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 38, + "max": 38, + "text": "Dag", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 39, + "max": 39, + "text": "Kuno", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 40, + "max": 40, + "text": "Reva", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 41, + "text": "Kai", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 42, + "max": 42, + "text": "Kalina", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 43, + "max": 43, + "text": "Jihan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 44, + "max": 44, + "text": "Hennion", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 45, + "text": "Abram", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 46, + "max": 46, + "text": "Aida", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 47, + "max": 47, + "text": "Myrtle", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 48, + "max": 48, + "text": "Nekun", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 49, + "text": "Menna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 50, + "max": 50, + "text": "Tahir", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 51, + "text": "Sarria", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 52, + "max": 52, + "text": "Nakura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 53, + "text": "Akiya", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 54, + "max": 54, + "text": "Talan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 55, + "max": 55, + "text": "Mattick", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 56, + "max": 56, + "text": "Okoth", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 57, + "text": "Khulan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 58, + "max": 58, + "text": "Verena", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 59, + "max": 59, + "text": "Beltran", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 60, + "max": 60, + "text": "Del", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 61, + "text": "Ranna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 62, + "max": 62, + "text": "Alina", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 63, + "max": 63, + "text": "Muna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 64, + "max": 64, + "text": "Mura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 65, + "text": "Torrens", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 66, + "max": 66, + "text": "Yuda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 67, + "max": 67, + "text": "Nazmi", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 68, + "max": 68, + "text": "Ghalen", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 69, + "text": "Sarda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 70, + "max": 70, + "text": "Shona", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 71, + "text": "Kalidas", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 72, + "max": 72, + "text": "Wena", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 73, + "text": "Sendra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 74, + "max": 74, + "text": "Kori", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 75, + "max": 75, + "text": "Setara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 76, + "max": 76, + "text": "Lucia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 77, + "text": "Maya", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 78, + "max": 78, + "text": "Reema", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 79, + "max": 79, + "text": "Yorath", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 80, + "max": 80, + "text": "Rhoddri", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 81, + "text": "Shekhar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 82, + "max": 82, + "text": "Servan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 83, + "max": 83, + "text": "Reese", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 84, + "max": 84, + "text": "Kenrick", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 85, + "text": "Indirra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 86, + "max": 86, + "text": "Giliana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 87, + "max": 87, + "text": "Jebran", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 88, + "max": 88, + "text": "Kotama", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 89, + "text": "Fara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 90, + "max": 90, + "text": "Katrin", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 91, + "text": "Namba", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 92, + "max": 92, + "text": "Lona", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 93, + "text": "Taylah", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 94, + "max": 94, + "text": "Kato", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 95, + "max": 95, + "text": "Esra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 96, + "max": 96, + "text": "Eleri", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 97, + "text": "Irsia", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 98, + "max": 98, + "text": "Kayu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 99, + "max": 99, + "text": "Bevan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Chandra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 185, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 184, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "other": { + "_id": "classic/collections/oracles/name/other", + "type": "oracle_collection", + "name": "Other Names", + "canonical_name": "Oracle 15: Other Names", + "oracle_type": "table_shared_rolls", + "summary": "Use this oracle to generate names for other firstborn characters.", + "contents": { + "giants": { + "_id": "classic/oracles/name/other/giants", + "type": "oracle_rollable", + "name": "Giants", + "oracle_type": "column_text", + "dice": "1d100", + "rows": [ + { + "min": 1, + "max": 4, + "text": "Chony", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 8, + "text": "Banda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 12, + "text": "Jochu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 16, + "text": "Kira", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 20, + "text": "Khatir", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 24, + "text": "Chaidu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 28, + "text": "Atan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 32, + "text": "Buandu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 36, + "text": "Javyn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 40, + "text": "Khashin", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 44, + "text": "Bayara", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 48, + "text": "Temura", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 52, + "text": "Kidha", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 56, + "text": "Kathos", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 60, + "text": "Tanua", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 64, + "text": "Bashtu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 68, + "text": "Jaran", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 72, + "text": "Othos", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 76, + "text": "Khutan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 80, + "text": "Otaan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 84, + "text": "Martu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 88, + "text": "Baku", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 92, + "text": "Tuban", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 96, + "text": "Qudan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 100, + "text": "Denua", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ] + }, + "varou": { + "_id": "classic/oracles/name/other/varou", + "type": "oracle_rollable", + "name": "Varou", + "oracle_type": "column_text", + "dice": "1d100", + "rows": [ + { + "min": 1, + "max": 4, + "text": "Vata", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 8, + "text": "Zora", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 12, + "text": "Jasna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 16, + "text": "Charna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 20, + "text": "Tana", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 24, + "text": "Soveen", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 28, + "text": "Radka", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 32, + "text": "Zlata", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 36, + "text": "Leesla", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 40, + "text": "Byna", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 44, + "text": "Meeka", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 48, + "text": "Iskra", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 52, + "text": "Jarek", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 56, + "text": "Darva", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 60, + "text": "Neda", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 64, + "text": "Keha", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 68, + "text": "Zhivka", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 72, + "text": "Kvata", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 76, + "text": "Staysa", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 80, + "text": "Evka", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 84, + "text": "Vuksha", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 88, + "text": "Muko", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 92, + "text": "Dreko", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 96, + "text": "Aleko", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 100, + "text": "Vojan", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ] + }, + "trolls": { + "_id": "classic/oracles/name/other/trolls", + "type": "oracle_rollable", + "name": "Trolls", + "oracle_type": "column_text", + "dice": "1d100", + "rows": [ + { + "min": 1, + "max": 4, + "text": "Rattle", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 5, + "max": 8, + "text": "Scratch", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 9, + "max": 12, + "text": "Wallow", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 13, + "max": 16, + "text": "Groak", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 17, + "max": 20, + "text": "Gimble", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 24, + "text": "Scar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 25, + "max": 28, + "text": "Cratch", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 29, + "max": 32, + "text": "Creech", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 33, + "max": 36, + "text": "Shush", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 37, + "max": 40, + "text": "Glush", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 44, + "text": "Slar", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 45, + "max": 48, + "text": "Gnash", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 49, + "max": 52, + "text": "Stoad", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 53, + "max": 56, + "text": "Grig", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 57, + "max": 60, + "text": "Bleat", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 64, + "text": "Chortle", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 65, + "max": 68, + "text": "Cluck", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 69, + "max": 72, + "text": "Slith", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 73, + "max": 76, + "text": "Mongo", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 77, + "max": 80, + "text": "Creak", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 84, + "text": "Burble", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 85, + "max": 88, + "text": "Vrusk", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 89, + "max": 92, + "text": "Snuffle", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 93, + "max": 96, + "text": "Leech", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 97, + "max": 100, + "text": "Herk", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ] + } + }, + "column_labels": { + "roll": "Roll" + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 187, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 184, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "place": { + "_id": "classic/collections/oracles/place", + "type": "oracle_collection", + "name": "Place Oracles", + "oracle_type": "tables", + "contents": { + "region": { + "_id": "classic/oracles/place/region", + "type": "oracle_rollable", + "name": "Region", + "canonical_name": "Oracle 3: Region", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle when you want to randomly select a region with the Ironlands.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 12, + "text": "[Barrier Islands](id:classic/atlas/ironlands/barrier_islands)" + }, + { + "min": 13, + "max": 24, + "text": "[Ragged Coast](id:classic/atlas/ironlands/ragged_coast)" + }, + { + "min": 25, + "max": 34, + "text": "[Deep Wilds](id:classic/atlas/ironlands/deep_wilds)" + }, + { + "min": 35, + "max": 46, + "text": "[Flooded Lands](id:classic/atlas/ironlands/flooded_lands)" + }, + { + "min": 47, + "max": 60, + "text": "[Havens](id:classic/atlas/ironlands/havens)" + }, + { + "min": 61, + "max": 72, + "text": "[Hinterlands](id:classic/atlas/ironlands/hinterlands)" + }, + { + "min": 73, + "max": 84, + "text": "[Tempest Hills](id:classic/atlas/ironlands/tempest_hills)" + }, + { + "min": 85, + "max": 94, + "text": "[Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains)" + }, + { + "min": 95, + "max": 99, + "text": "[Shattered Wastes](id:classic/atlas/ironlands/shattered_wastes)" + }, + { + "min": 100, + "max": 100, + "text": "Elsewhere" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 176, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "location": { + "_id": "classic/oracles/place/location", + "type": "oracle_rollable", + "name": "Location", + "canonical_name": "Oracle 4: Location", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle when traveling to generate a point-of-interest or to answer a question about a place where someone or something can be found.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Hideout", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Ruin", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Mine", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Waste", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Mystical Site", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 6, + "max": 6, + "text": "Path", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 7, + "max": 7, + "text": "Outpost", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 8, + "max": 8, + "text": "Wall", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 9, + "max": 9, + "text": "Battlefield", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 10, + "max": 10, + "text": "Hovel", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 11, + "max": 11, + "text": "Spring", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 12, + "max": 12, + "text": "Lair", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 13, + "max": 13, + "text": "Fort", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 14, + "max": 14, + "text": "Bridge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 15, + "max": 15, + "text": "Camp", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 16, + "max": 16, + "text": "Cairn/Grave", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 17, + "max": 18, + "text": "Caravan", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 19, + "max": 20, + "text": "Waterfall", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 21, + "max": 22, + "text": "Cave", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 23, + "max": 24, + "text": "Swamp", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 25, + "max": 26, + "text": "Fen", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 27, + "max": 28, + "text": "Ravine", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 29, + "max": 30, + "text": "Road", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 31, + "max": 32, + "text": "Tree", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 33, + "max": 34, + "text": "Pond", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 35, + "max": 36, + "text": "Fields", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 37, + "max": 38, + "text": "Marsh", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 39, + "max": 40, + "text": "Steading", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 41, + "max": 42, + "text": "Rapids", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 43, + "max": 44, + "text": "Pass", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 45, + "max": 46, + "text": "Trail", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 47, + "max": 48, + "text": "Glade", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 49, + "max": 50, + "text": "Plain", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 51, + "max": 52, + "text": "Ridge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 53, + "max": 54, + "text": "Cliff", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 55, + "max": 56, + "text": "Grove", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 57, + "max": 58, + "text": "Village", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 59, + "max": 60, + "text": "Moor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 61, + "max": 62, + "text": "Thicket", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 63, + "max": 64, + "text": "River Ford", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 65, + "max": 66, + "text": "Valley", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 67, + "max": 68, + "text": "Bay/Fjord", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 69, + "max": 70, + "text": "Foothills", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 71, + "max": 72, + "text": "Lake", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 73, + "max": 75, + "text": "River", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 76, + "max": 79, + "text": "Forest", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 80, + "max": 83, + "text": "Coast", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 84, + "max": 88, + "text": "Hill", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 89, + "max": 93, + "text": "Mountain", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 94, + "max": 99, + "text": "Woods", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Anomaly", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 176, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "coastal_waters_location": { + "_id": "classic/oracles/place/coastal_waters_location", + "type": "oracle_rollable", + "name": "Coastal Waters Location", + "canonical_name": "Oracle 5: Coastal Waters Location", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to identify a point-of-interest or destination when you are traveling by ship or boat.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 1, + "text": "Fleet", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 2, + "max": 2, + "text": "Sargassum", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 3, + "max": 3, + "text": "Flotsam", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 4, + "max": 4, + "text": "Mystical Site", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 5, + "max": 5, + "text": "Lair", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 6, + "max": 10, + "text": "Wreck", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 11, + "max": 15, + "text": "Harbor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 16, + "max": 23, + "text": "Ship/Boat", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 24, + "max": 30, + "text": "Rocks", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 31, + "max": 38, + "text": "Fjord", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 39, + "max": 46, + "text": "Estuary", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 47, + "max": 54, + "text": "Cove", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 55, + "max": 62, + "text": "Bay", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 63, + "max": 70, + "text": "Ice", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 71, + "max": 85, + "text": "Island", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 86, + "max": 99, + "text": "Open Water", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 100, + "max": 100, + "text": "Anomaly", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 176, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "descriptor": { + "_id": "classic/oracles/place/descriptor", + "type": "oracle_rollable", + "name": "Location Descriptor", + "canonical_name": "Oracle 6: Location Descriptor", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to add detail to the [Location](id:classic/oracles/place/location) or [Coastal Waters Location](id:classic/oracles/place/coastal_waters_location) oracles, or by itself to generate a description of a location. Roll more than once for extra detail.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 2, + "text": "High", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 3, + "max": 4, + "text": "Remote", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 5, + "max": 6, + "text": "Exposed", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 7, + "max": 8, + "text": "Small", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 9, + "max": 10, + "text": "Broken", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 11, + "max": 12, + "text": "Diverse", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 13, + "max": 14, + "text": "Rough", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 15, + "max": 16, + "text": "Dark", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 17, + "max": 18, + "text": "Shadowy", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 19, + "max": 20, + "text": "Contested", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 21, + "max": 22, + "text": "Grim", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 23, + "max": 24, + "text": "Wild", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 25, + "max": 26, + "text": "Fertile", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 27, + "max": 28, + "text": "Blocked", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 29, + "max": 30, + "text": "Ancient", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 31, + "max": 32, + "text": "Perilous", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 33, + "max": 34, + "text": "Hidden", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 35, + "max": 36, + "text": "Occupied", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 37, + "max": 38, + "text": "Rich", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 39, + "max": 40, + "text": "Big", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 41, + "max": 42, + "text": "Savage", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 43, + "max": 44, + "text": "Defended", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 45, + "max": 46, + "text": "Withered", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 47, + "max": 48, + "text": "Mystical", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 49, + "max": 50, + "text": "Inaccessible", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 51, + "max": 52, + "text": "Protected", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 53, + "max": 54, + "text": "Abandoned", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 55, + "max": 56, + "text": "Wide", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 57, + "max": 58, + "text": "Foul", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 59, + "max": 60, + "text": "Dead", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 61, + "max": 62, + "text": "Ruined", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 63, + "max": 64, + "text": "Barren", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 65, + "max": 66, + "text": "Cold", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 67, + "max": 68, + "text": "Blighted", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 69, + "max": 70, + "text": "Low", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 71, + "max": 72, + "text": "Beautiful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 73, + "max": 74, + "text": "Abundant", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 75, + "max": 76, + "text": "Lush", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 77, + "max": 78, + "text": "Flooded", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 79, + "max": 80, + "text": "Empty", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 81, + "max": 82, + "text": "Strange", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 83, + "max": 84, + "text": "Corrupted", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 85, + "max": 86, + "text": "Peaceful", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 87, + "max": 88, + "text": "Forgotten", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 89, + "max": 90, + "text": "Expansive", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 91, + "max": 92, + "text": "Settled", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 93, + "max": 94, + "text": "Dense", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 95, + "max": 96, + "text": "Civilized", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 97, + "max": 98, + "text": "Desolate", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 99, + "max": 100, + "text": "Isolated", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 177, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 176, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "settlement": { + "_id": "classic/collections/oracles/settlement", + "type": "oracle_collection", + "name": "Settlement Oracles", + "oracle_type": "tables", + "summary": "To give the settlement additional detail, roll on the [Location Descriptor](classic/oracles/place/descriptor) oracle. To spark an idea for an event or feature related to the settlement, roll on the [Action](id:classic/oracles/action_and_theme/action) and [Theme](id:classic/oracles/action_and_theme/theme) oracles.", + "contents": { + "trouble": { + "_id": "classic/oracles/settlement/trouble", + "type": "oracle_rollable", + "name": "Settlement Trouble", + "canonical_name": "Oracle 9: Settlement Trouble", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this table to generate a narrative hook for a problem faced by a community. This oracle can help inspire a vow for your character or serve as a prompt for a trouble you encounter when you interact with a settlement.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 2, + "text": "Outsiders rejected" + }, + { + "min": 3, + "max": 4, + "text": "Dangerous discovery" + }, + { + "min": 5, + "max": 6, + "text": "Dreadful omens" + }, + { + "min": 7, + "max": 8, + "text": "Natural disaster" + }, + { + "min": 9, + "max": 10, + "text": "Old wounds reopened" + }, + { + "min": 11, + "max": 12, + "text": "Important object is lost" + }, + { + "min": 13, + "max": 14, + "text": "Someone is captured" + }, + { + "min": 15, + "max": 16, + "text": "Mysterious phenomenon" + }, + { + "min": 17, + "max": 18, + "text": "Revolt against a leader" + }, + { + "min": 19, + "max": 20, + "text": "Vengeful outcast" + }, + { + "min": 21, + "max": 22, + "text": "Rival settlement" + }, + { + "min": 23, + "max": 24, + "text": "Nature strikes back" + }, + { + "min": 25, + "max": 26, + "text": "Someone is missing" + }, + { + "min": 27, + "max": 28, + "text": "Production halts" + }, + { + "min": 29, + "max": 30, + "text": "Mysterious murders" + }, + { + "min": 31, + "max": 32, + "text": "Debt comes due" + }, + { + "min": 33, + "max": 34, + "text": "Unjust leadership" + }, + { + "min": 35, + "max": 36, + "text": "Disastrous accident" + }, + { + "min": 37, + "max": 38, + "text": "In league with the enemy" + }, + { + "min": 39, + "max": 40, + "text": "Raiders prey on the weak" + }, + { + "min": 41, + "max": 42, + "text": "Cursed past" + }, + { + "min": 43, + "max": 44, + "text": "An innocent is accused" + }, + { + "min": 45, + "max": 46, + "text": "Corrupted by dark magic" + }, + { + "min": 47, + "max": 48, + "text": "Isolated by brutal weather" + }, + { + "min": 49, + "max": 50, + "text": "Provisions are scarce" + }, + { + "min": 51, + "max": 52, + "text": "Sickness run amok" + }, + { + "min": 53, + "max": 54, + "text": "Allies become enemies" + }, + { + "min": 55, + "max": 56, + "text": "Attack is imminent" + }, + { + "min": 57, + "max": 58, + "text": "Lost caravan" + }, + { + "min": 59, + "max": 60, + "text": "Dark secret revealed" + }, + { + "min": 61, + "max": 62, + "text": "Urgent expedition" + }, + { + "min": 63, + "max": 64, + "text": "A leader falls" + }, + { + "min": 65, + "max": 66, + "text": "Families in conflict" + }, + { + "min": 67, + "max": 68, + "text": "Incompetent leadership" + }, + { + "min": 69, + "max": 70, + "text": "Reckless warmongering" + }, + { + "min": 71, + "max": 72, + "text": "Beast on the hunt" + }, + { + "min": 73, + "max": 74, + "text": "Betrayed from within" + }, + { + "min": 75, + "max": 76, + "text": "Broken truce" + }, + { + "min": 77, + "max": 78, + "text": "Wrathful haunt" + }, + { + "min": 79, + "max": 80, + "text": "Conflict with firstborn" + }, + { + "min": 81, + "max": 82, + "text": "Trade route blocked" + }, + { + "min": 83, + "max": 84, + "text": "In the crossfire" + }, + { + "min": 85, + "max": 86, + "text": "Stranger causes discord" + }, + { + "min": 87, + "max": 88, + "text": "Important event threatened" + }, + { + "min": 89, + "max": 90, + "text": "Dangerous tradition" + }, + { + "min": 91, + "max": 100, + "text": "Roll twice", + "oracle_rolls": [ + { + "oracle": null, + "dice": null, + "auto": true, + "duplicates": "reroll", + "number_of_rolls": 2 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 181, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "name": { + "_id": "classic/oracles/settlement/name", + "type": "oracle_rollable", + "name": "Settlement Name", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Ask this oracle for a thematic name for an Ironlander settlement. Roll once for the category, and again to pick from the examples. Alternatively, just roll for the category and come up with a name that fits the theme.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 15, + "text": "__A feature of the landscape.__ Envision what it is. What makes it unusual or distinctive?", + "embed_table": "classic/oracles/settlement/name/landscape_feature", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/landscape_feature", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 16, + "max": 30, + "text": "__A manmade edifice.__ What is it? Why is it important to this settlement’s history?,", + "embed_table": "classic/oracles/settlement/name/manmade_edifice", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/manmade_edifice", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 31, + "max": 45, + "text": "__A creature.__ Why have the people of this settlement chosen this creature as their totem? How is it represented in art or rituals?", + "embed_table": "classic/oracles/settlement/name/creature", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/creature", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 46, + "max": 60, + "text": "__A historical event.__ What happened here? What place or practice commemorates this event?", + "embed_table": "classic/oracles/settlement/name/historical_event", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/historical_event", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 61, + "max": 75, + "text": "__A word in an Old World language.__ What culture is represented by this word? What does it translate to?", + "embed_table": "classic/oracles/settlement/name/old_world_language", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/old_world_language", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 76, + "max": 90, + "text": "__A season or environmental aspect.__ What influence does the weather have on this settlement?", + "embed_table": "classic/oracles/settlement/name/environmental_aspect", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/environmental_aspect", + "dice": null, + "auto": false, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + }, + { + "min": 91, + "max": 100, + "text": "Something Else...", + "embed_table": "classic/oracles/settlement/name/something_else", + "oracle_rolls": [ + { + "oracle": "classic/oracles/settlement/name/something_else", + "dice": null, + "auto": true, + "duplicates": "reroll", + "number_of_rolls": 1 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "collections": { + "name": { + "_id": "classic/collections/oracles/settlement/name", + "type": "oracle_collection", + "name": "Settlement Name", + "canonical_name": "Oracle 7: Settlement Name", + "oracle_type": "tables", + "contents": { + "landscape_feature": { + "_id": "classic/oracles/settlement/name/landscape_feature", + "type": "oracle_rollable", + "name": "Landscape Feature", + "canonical_name": "A feature of the landscape", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A feature of the landscape.__ Envision what it is. What makes it unusual or distinctive?", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Highmount", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Brackwater", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Frostwood", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Redcrest", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Grimtree", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Stoneford", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Deepwater", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Whitefall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Graycliff", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Three Rivers", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "manmade_edifice": { + "_id": "classic/oracles/settlement/name/manmade_edifice", + "type": "oracle_rollable", + "name": "Manmade Edifice", + "canonical_name": "A manmade edifice", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A manmade edifice.__ What is it? Why is it important to this settlement’s history?,", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Whitebridge", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Lonefort", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Highcairn", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Redhall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Darkwell", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Timberwall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Stonetower", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Thornhall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Cinderhome", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Fallowfield", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "creature": { + "_id": "classic/oracles/settlement/name/creature", + "type": "oracle_rollable", + "name": "Creature", + "canonical_name": "A creature", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A creature.__ Why have the people of this settlement chosen this creature as their totem? How is it represented in art or rituals?", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Ravencliff", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Bearmark", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Wolfcrag", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Eaglespire", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Wyvern's Rest", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Boarwood", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Foxhollow", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Elderwatch", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Elkfield", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Dragonshadow", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "historical_event": { + "_id": "classic/oracles/settlement/name/historical_event", + "type": "oracle_rollable", + "name": "Historical Event", + "canonical_name": "A historical event", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A historical event.__ What happened here? What place or practice commemorates this event?", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Swordbreak", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Fool's Fall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Firstmeet", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Brokenhelm", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Mournhaunt", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Olgar's Stand", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Lostwater", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Rojirra's Lament", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Lastmarch", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Rockfall", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "old_world_language": { + "_id": "classic/oracles/settlement/name/old_world_language", + "type": "oracle_rollable", + "name": "Old World Language", + "canonical_name": "A word in an Old World language", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A word in an Old World language.__ What culture is represented by this word? What does it translate to?", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Abon", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Daveza", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Damula", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Essus", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Sina", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Kazeera", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Khazu", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Sova", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Nabuma", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Tiza", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "environmental_aspect": { + "_id": "classic/oracles/settlement/name/environmental_aspect", + "type": "oracle_rollable", + "name": "Environmental Aspect", + "canonical_name": "A season or environmental aspect", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "__A season or environmental aspect.__ What influence does the weather have on this settlement?", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "Winterhome", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 11, + "max": 20, + "text": "Windhaven", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 21, + "max": 30, + "text": "Stormrest", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 31, + "max": 40, + "text": "Bleakfrost", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 41, + "max": 50, + "text": "Springtide", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 51, + "max": 60, + "text": "Duskmoor", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 61, + "max": 70, + "text": "Frostcrag", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 71, + "max": 80, + "text": "Springbrook", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 81, + "max": 90, + "text": "Icebreak", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + }, + { + "min": 91, + "max": 100, + "text": "Summersong", + "_i18n": { + "text": { + "part_of_speech": "proper_noun" + } + } + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "something_else": { + "_id": "classic/oracles/settlement/name/something_else", + "type": "oracle_rollable", + "name": "Something Else", + "oracle_type": "table_text", + "dice": "1d100", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 10, + "text": "A trade good (Ironhome)" + }, + { + "min": 11, + "max": 20, + "text": "An Old World city (New Arkesh)" + }, + { + "min": 21, + "max": 30, + "text": "A founder or famous settler (Kei's Hall)" + }, + { + "min": 31, + "max": 40, + "text": "A god (Elisora)" + }, + { + "min": 41, + "max": 50, + "text": "A historical item (Blackhelm)" + }, + { + "min": 51, + "max": 60, + "text": "A firstborn race (Elfbrook)" + }, + { + "min": 61, + "max": 70, + "text": "An elvish word or name (Nessana)" + }, + { + "min": 71, + "max": 80, + "text": "A mythic belief or event (Ghostwalk)" + }, + { + "min": 81, + "max": 90, + "text": "A positive term (Hope)" + }, + { + "min": 91, + "max": 100, + "text": "A negative term (Forsaken)" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "quick_name": { + "_id": "classic/collections/oracles/settlement/quick_name", + "type": "oracle_collection", + "name": "Quick Settlement Name Generator", + "canonical_name": "Oracle 8: Quick Settlement Name Generator", + "oracle_type": "table_shared_rolls", + "summary": "Use this oracle as a simpler alternative for settlement names. Roll once for the prefix, and once for the suffix. If the combination doesn’t quite work, look at adjacent rows or reverse the digits.", + "contents": { + "prefix": { + "_id": "classic/oracles/settlement/quick_name/prefix", + "type": "oracle_rollable", + "name": "Prefix", + "oracle_type": "column_text", + "dice": "1d100", + "rows": [ + { + "min": 1, + "max": 4, + "text": "Bleak", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 5, + "max": 8, + "text": "Green", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 9, + "max": 12, + "text": "Wolf", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 13, + "max": 16, + "text": "Raven", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 17, + "max": 20, + "text": "Gray", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 21, + "max": 24, + "text": "Red", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 25, + "max": 28, + "text": "Axe", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 29, + "max": 32, + "text": "Great", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 33, + "max": 36, + "text": "Wood", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 37, + "max": 40, + "text": "Low", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 41, + "max": 44, + "text": "White", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 45, + "max": 48, + "text": "Storm", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 49, + "max": 52, + "text": "Black", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 53, + "max": 56, + "text": "Mourn", + "_i18n": { + "text": { + "part_of_speech": "attributive_verb" + } + } + }, + { + "min": 57, + "max": 60, + "text": "New", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 61, + "max": 64, + "text": "Stone", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 65, + "max": 68, + "text": "Grim", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 69, + "max": 72, + "text": "Lost", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 73, + "max": 76, + "text": "High", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + }, + { + "min": 77, + "max": 80, + "text": "Rock", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 81, + "max": 84, + "text": "Shield", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 85, + "max": 88, + "text": "Sword", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 89, + "max": 92, + "text": "Frost", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 93, + "max": 96, + "text": "Thorn", + "_i18n": { + "text": { + "part_of_speech": "adjunct_common_noun" + } + } + }, + { + "min": 97, + "max": 100, + "text": "Long", + "_i18n": { + "text": { + "part_of_speech": "adjective" + } + } + } + ] + }, + "suffix": { + "_id": "classic/oracles/settlement/quick_name/suffix", + "type": "oracle_rollable", + "name": "Suffix", + "oracle_type": "column_text", + "dice": "1d100", + "rows": [ + { + "min": 1, + "max": 4, + "text": "moor", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 5, + "max": 8, + "text": "ford", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 9, + "max": 12, + "text": "crag", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 13, + "max": 16, + "text": "watch", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 17, + "max": 20, + "text": "hope", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 21, + "max": 24, + "text": "wood", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 25, + "max": 28, + "text": "ridge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 29, + "max": 32, + "text": "stone", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 33, + "max": 36, + "text": "haven", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 37, + "max": 40, + "text": "fall(s)", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 41, + "max": 44, + "text": "river", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 45, + "max": 48, + "text": "field", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 49, + "max": 52, + "text": "hill", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 53, + "max": 56, + "text": "bridge", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 57, + "max": 60, + "text": "mark", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 61, + "max": 64, + "text": "cairn", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 65, + "max": 68, + "text": "land", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 69, + "max": 72, + "text": "hall", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 73, + "max": 76, + "text": "mount", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 77, + "max": 80, + "text": "rock", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 81, + "max": 84, + "text": "brook", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 85, + "max": 88, + "text": "barrow", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 89, + "max": 92, + "text": "stead", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 93, + "max": 96, + "text": "home", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + }, + { + "min": 97, + "max": 100, + "text": "wick", + "_i18n": { + "text": { + "part_of_speech": "common_noun" + } + } + } + ] + } + }, + "column_labels": { + "roll": "Roll" + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 180, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 178, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "turning_point": { + "_id": "classic/collections/oracles/turning_point", + "type": "oracle_collection", + "name": "Turning Point Oracles", + "oracle_type": "tables", + "contents": { + "combat_action": { + "_id": "classic/oracles/turning_point/combat_action", + "type": "oracle_rollable", + "name": "Combat Action", + "canonical_name": "Oracle 16: Combat Action", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to help inspire an action for an NPC in combat. When you’re not sure what your foe does next, particularly when they have initiative, roll on this table and interpret the result as appropriate to the situation.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 3, + "text": "Compel a surrender." + }, + { + "min": 4, + "max": 6, + "text": "Coordinate with allies." + }, + { + "min": 7, + "max": 9, + "text": "Gather reinforcements." + }, + { + "min": 10, + "max": 13, + "text": "Seize something or someone." + }, + { + "min": 14, + "max": 17, + "text": "Provoke a reckless response." + }, + { + "min": 18, + "max": 21, + "text": "Intimidate or frighten." + }, + { + "min": 22, + "max": 25, + "text": "Reveal a surprising truth." + }, + { + "min": 26, + "max": 29, + "text": "Shift focus to someone or something else." + }, + { + "min": 30, + "max": 33, + "text": "Destroy something, or render it useless." + }, + { + "min": 34, + "max": 39, + "text": "Take a decisive action." + }, + { + "min": 40, + "max": 45, + "text": "Reinforce defenses." + }, + { + "min": 46, + "max": 52, + "text": "Ready an action." + }, + { + "min": 53, + "max": 60, + "text": "Use the terrain to gain advantage." + }, + { + "min": 61, + "max": 68, + "text": "Leverage the advantage of a weapon or ability." + }, + { + "min": 69, + "max": 78, + "text": "Create an opportunity." + }, + { + "min": 79, + "max": 89, + "text": "Attack with precision." + }, + { + "min": 90, + "max": 99, + "text": "Attack with power." + }, + { + "min": 100, + "max": 100, + "text": "Take a completely unexpected action." + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 188, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "mystic_backlash": { + "_id": "classic/oracles/turning_point/mystic_backlash", + "type": "oracle_rollable", + "name": "Mystic Backlash", + "canonical_name": "Oracle 17: Mystic Backlash", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Those who deal in magic may find themselves at the mercy of chaos. This oracle can supplement, or replace, the [Pay the Price](id:classic/moves/fate/pay_the_price) table when resolving the outcome of a failed ritual or other negative interaction with mystical forces. Use this oracle in dramatic moments, or to introduce an unexpected outcome triggered by a match.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 4, + "text": "Your ritual has the opposite affect." + }, + { + "min": 5, + "max": 8, + "text": "You are sapped of strength." + }, + { + "min": 9, + "max": 12, + "text": "Your friend, ally, or companion is adversely affected." + }, + { + "min": 13, + "max": 16, + "text": "You destroy an important object." + }, + { + "min": 17, + "max": 20, + "text": "You inadvertently summon a horror." + }, + { + "min": 21, + "max": 24, + "text": "You collapse, and drift into a troubled sleep." + }, + { + "min": 25, + "max": 28, + "text": "You undergo a physical torment which leaves its mark upon you." + }, + { + "min": 29, + "max": 32, + "text": "You hear ghostly voices whispering of dark portents." + }, + { + "min": 33, + "max": 36, + "text": "You are lost in shadow, and find yourself in another place without memory of how you got there." + }, + { + "min": 37, + "max": 40, + "text": "You alert someone or something to your presence." + }, + { + "min": 41, + "max": 44, + "text": "You are not yourself, and act against a friend, ally, or companion." + }, + { + "min": 45, + "max": 48, + "text": "You affect or damage your surroundings, causing a disturbance or potential harm." + }, + { + "min": 49, + "max": 52, + "text": "You waste resources." + }, + { + "min": 53, + "max": 56, + "text": "You suffer the loss of a sense for several hours." + }, + { + "min": 57, + "max": 60, + "text": "You lose your connection to magic for a day or so, and cannot perform rituals." + }, + { + "min": 61, + "max": 64, + "text": "Your ritual affects the target in an unexpected and problematic way." + }, + { + "min": 65, + "max": 68, + "text": "Your ritual reveals a surprising and troubling truth." + }, + { + "min": 69, + "max": 72, + "text": "You are tempted by dark powers." + }, + { + "min": 73, + "max": 76, + "text": "You see a troubling vision of your future." + }, + { + "min": 77, + "max": 80, + "text": "You can't perform this ritual again until you acquire an important component." + }, + { + "min": 81, + "max": 84, + "text": "You develop a strange fear or compulsion." + }, + { + "min": 85, + "max": 88, + "text": "Your ritual causes creatures to exhibit strange or aggressive behavior." + }, + { + "min": 89, + "max": 92, + "text": "You are tormented by an apparition from your past." + }, + { + "min": 93, + "max": 96, + "text": "You are wracked with sudden sickness." + }, + { + "min": 97, + "max": 100, + "text": "Roll twice more on this table. Both results occur. If they are the same result, make it worse.", + "oracle_rolls": [ + { + "oracle": null, + "dice": null, + "auto": true, + "duplicates": "make_it_worse", + "number_of_rolls": 2 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 189, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "major_plot_twist": { + "_id": "classic/oracles/turning_point/major_plot_twist", + "type": "oracle_rollable", + "name": "Major Plot Twist", + "canonical_name": "Oracle 18: Major Plot Twist", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle to introduce a narrative surprise or revelation. Most of these results have a negative implication, and can be used to resolve a match at a crucial moment in your story. In particular, this is an effective tool to leverage when you make a move with matched 10’s on the challenge dice.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 5, + "text": "It was all a diversion." + }, + { + "min": 6, + "max": 10, + "text": "A dark secret is revealed." + }, + { + "min": 11, + "max": 15, + "text": "A trap is sprung." + }, + { + "min": 16, + "max": 20, + "text": "An assumption is revealed to be false." + }, + { + "min": 21, + "max": 25, + "text": "A secret alliance is revealed." + }, + { + "min": 26, + "max": 30, + "text": "Your actions benefit an enemy." + }, + { + "min": 31, + "max": 35, + "text": "Someone returns unexpectedly." + }, + { + "min": 36, + "max": 40, + "text": "A more dangerous foe is revealed." + }, + { + "min": 41, + "max": 45, + "text": "You and an enemy share a common goal." + }, + { + "min": 46, + "max": 50, + "text": "A true identity is revealed." + }, + { + "min": 51, + "max": 55, + "text": "You are betrayed by someone who was trusted." + }, + { + "min": 56, + "max": 60, + "text": "You are too late." + }, + { + "min": 61, + "max": 65, + "text": "The true enemy is revealed." + }, + { + "min": 66, + "max": 70, + "text": "The enemy gains new allies." + }, + { + "min": 71, + "max": 75, + "text": "A new danger appears." + }, + { + "min": 76, + "max": 80, + "text": "Someone or something goes missing." + }, + { + "min": 81, + "max": 85, + "text": "The truth of a relationship is revealed." + }, + { + "min": 86, + "max": 90, + "text": "Two seemingly unrelated situations are shown to be connected." + }, + { + "min": 91, + "max": 95, + "text": "Unexpected powers or abilities are revealed." + }, + { + "min": 96, + "max": 100, + "text": "Roll twice more on this table. Both results occur. If they are the same result, make it more dramatic.", + "oracle_rolls": [ + { + "oracle": null, + "dice": null, + "auto": true, + "duplicates": "make_it_worse", + "number_of_rolls": 2 + } + ] + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 190, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "challenge_rank": { + "_id": "classic/oracles/turning_point/challenge_rank", + "type": "oracle_rollable", + "name": "Challenge Rank", + "canonical_name": "Oracle 19: Challenge Rank", + "oracle_type": "table_text", + "dice": "1d100", + "summary": "Use this oracle when you want to randomly determine the challenge rank of a quest, journey, or foe.", + "column_labels": { + "roll": "Roll", + "text": "Result" + }, + "rows": [ + { + "min": 1, + "max": 20, + "text": "Troublesome" + }, + { + "min": 21, + "max": 55, + "text": "Dangerous" + }, + { + "min": 56, + "max": 80, + "text": "Formidable" + }, + { + "min": 81, + "max": 93, + "text": "Extreme" + }, + { + "min": 94, + "max": 100, + "text": "Epic" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 190, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 188, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "assets": { + "combat_talent": { + "_id": "classic/collections/assets/combat_talent", + "type": "asset_collection", + "name": "Combat Talent Assets", + "description": "*Ironsworn* characters are assumed to be skilled fighters. Even without a combat talent, you can wield weapons and perform [combat moves](id:classic/collections/moves/combat). A combat talent reflects a particular area of expertise, and gives you additional options and bonuses.\n\nCombat talent assets typically require you to wield a specific weapon, as noted in the asset text. For example, if you are a [Shield-Bearer](id:classic/assets/combat_talent/shield-bearer) and don’t have a shield at the ready, you can’t use the asset’s abilities.", + "contents": { + "archer": { + "_id": "classic/assets/combat_talent/archer", + "type": "asset", + "name": "Archer", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a bow...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/archer/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by taking a moment to aim, choose your approach and add +1.\n\n * Trust your instincts: Roll +wits, and take +2 momentum on a strong hit.\n * Line up your shot: Roll +edge, and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "by taking a moment to aim and trust your instincts" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "by taking a moment to aim and line up your shot" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/archer/abilities/1", + "enabled": false, + "text": "Once per fight, when you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash), you may take extra shots and suffer -1 supply (decide before rolling). When you do, reroll any dice. On a hit, inflict +2 harm and take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "if take extra shots and suffer -1 supply (decide before rolling, once per fight)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/archer/abilities/2", + "enabled": false, + "text": "When you [Resupply](id:classic/moves/adventure/resupply) by hunting, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by hunting" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "berserker": { + "_id": "classic/assets/combat_talent/berserker", + "type": "asset", + "name": "Berserker", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you are clad only in animal pelts...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/berserker/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) by embodying your wild nature, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by embodying your wild nature" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/berserker/abilities/1", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) by unleashing your rage (decide before rolling), inflict +1 harm on a hit. Then, choose one.\n\n * Push yourself: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * Lose yourself: [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by unleashing your rage (decide before rolling)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/berserker/abilities/2", + "enabled": false, + "text": "When you [Endure Harm](id:classic/moves/suffer/endure_harm) in a fight, and your health is above 0, you may let the pain inflame your wildness (decide before rolling). If you then score a strong hit and choose to embrace the pain, take +momentum equal to your remaining health. A weak hit counts as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_harm"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in a fight, if you let the pain inflame your wildness (when your health is above 0)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "brawler": { + "_id": "classic/assets/combat_talent/brawler", + "type": "asset", + "name": "Brawler", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you are unarmed or fighting with a non-deadly weapon...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/brawler/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +iron by engaging in close-quarters brawling (such as punching, tripping, or grappling), add +1. If you score a hit, you may also inflict 1 harm.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "by engaging in close-quarters brawling (such as punching, tripping, or grappling)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/brawler/abilities/1", + "enabled": false, + "text": "When you use an unarmed attack or simple weapon to [Strike](id:classic/moves/combat/strike) with deadly intent, add +2 and inflict 2 harm on a hit (instead of 1). On a weak hit or miss, suffer -1 momentum (in addition to any other outcome of the move).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you use an unarmed attack or simple weapon with deadly intent" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/brawler/abilities/2", + "enabled": false, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) or [Clash](id:classic/moves/combat/clash) against a brawling attack, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "against a brawling attack" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "cutthroat": { + "_id": "classic/assets/combat_talent/cutthroat", + "type": "asset", + "name": "Cutthroat", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a dagger or knife...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/cutthroat/abilities/0", + "enabled": true, + "text": "When you are in position to [Strike](id:classic/moves/combat/strike) at an unsuspecting foe, choose one (before rolling).\n\n * Add +2 and take +1 momentum on a hit.\n * Inflict +2 harm on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "against an unspecting foe" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/cutthroat/abilities/1", + "enabled": false, + "text": "When you [Compel](id:classic/moves/relationship/compel) someone at the point of your blade, or when you rely on your blade to [Face Danger](id:classic/moves/adventure/face_danger), add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/compel"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "someone at the point of your blade" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "when you rely on your blade" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/cutthroat/abilities/2", + "enabled": false, + "text": "Once per fight, when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +shadow by performing a feint or misdirection, reroll any dice and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "by performing a feint or misdirection" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "duelist": { + "_id": "classic/assets/combat_talent/duelist", + "type": "asset", + "name": "Duelist", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a bladed weapon in each hand...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/duelist/abilities/0", + "enabled": true, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash), you may add +2. If you do (decide before rolling), inflict +1 harm on a strong hit and count a weak hit as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ] + } + ] + }, + { + "_id": "classic/assets/combat_talent/duelist/abilities/1", + "enabled": false, + "text": "Once per fight, when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +edge by making a bold display of your combat prowess, you may reroll any dice.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "by making a bold display of your combat prowess (once per fight)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/duelist/abilities/2", + "enabled": false, + "text": "When you [Draw the Circle](id:classic/moves/relationship/draw_the_circle), choose one (before rolling).\n\n * Add +2.\n * Take +2 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/draw_the_circle"] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "fletcher": { + "_id": "classic/assets/combat_talent/fletcher", + "type": "asset", + "name": "Fletcher", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/combat_talent/fletcher/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by crafting arrows of fine quality, add +1. Then, take +1 supply or +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by crafting arrows of fine quality" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/fletcher/abilities/1", + "enabled": false, + "text": "When you [Resupply](id:classic/moves/adventure/resupply) by recovering or gathering arrows after a battle, add +2.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by recovering or gathering arrows after a battle" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/fletcher/abilities/2", + "enabled": false, + "text": "When you craft a single arrow designated for a specific foe, envision the process and materials, and roll +wits. On a strong hit, take both. On a weak hit, choose one.\n\n * Seeker: When a shooter uses the arrow to [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) against this foe, reroll any dice (one time only).\n * Ravager: When a shooter uses the arrow to inflict harm against this foe, inflict +1d6 harm (one time only).", + "moves": { + "craft_arrow": { + "_id": "classic/assets/combat_talent/fletcher/abilities/2/moves/craft_arrow", + "type": "move", + "name": "Craft Arrow", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you craft a single arrow designated for a specific foe..." + }, + "text": "When you craft a single arrow designated for a specific foe, envision the process and materials, and roll +wits. On a strong hit, take both. On a weak hit, choose one.\n\n * Seeker: When a shooter uses the arrow to [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) against this foe, reroll any dice (one time only).\n * Ravager: When a shooter uses the arrow to inflict harm against this foe, inflict +1d6 harm (one time only).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, take both:\n\n * Seeker: When a shooter uses the arrow to [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) against this foe, reroll any dice (one time only).\n * Ravager: When a shooter uses the arrow to inflict harm against this foe, inflict +1d6 harm (one time only)." + }, + "weak_hit": { + "text": "On a __weak hit__, choose one.\n\n * Seeker: When a shooter uses the arrow to [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) against this foe, reroll any dice (one time only).\n * Ravager: When a shooter uses the arrow to inflict harm against this foe, inflict +1d6 harm (one time only)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "ironclad": { + "_id": "classic/assets/combat_talent/ironclad", + "type": "asset", + "name": "Ironclad", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wear armor...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/ironclad/abilities/0", + "enabled": true, + "text": "When you equip or adjust your armor, choose one.\n\n * Lightly armored: When you [Endure Harm](id:classic/moves/suffer/endure_harm) in a fight, add +1 and take +1 momentum on a hit.\n * Geared for war: Mark encumbered. When you [Endure Harm](id:classic/moves/suffer/endure_harm) in a fight, add +2 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_harm"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "In a fight while you are lightly armored" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_harm"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "In a fight while you are geared for war" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/ironclad/abilities/1", + "enabled": false, + "text": "When you [Clash](id:classic/moves/combat/clash) while you are geared for war, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/clash"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "While you are geared for war" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/ironclad/abilities/2", + "enabled": false, + "text": "When you [Compel](id:classic/moves/relationship/compel) in a situation where strength of arms is a factor, add +2.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/compel"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "In a situation where strength of arms is a factor" + } + ] + } + } + ] + } + ], + "controls": { + "equipped": { + "label": "equipped", + "field_type": "select_enhancement", + "choices": { + "lightly_armored": { + "label": "lightly armored", + "choice_type": "choice", + "enhance_asset": { + "count_as_impact": false + } + }, + "geared_for_war": { + "label": "geared for war", + "choice_type": "choice", + "enhance_asset": { + "count_as_impact": true + } + } + }, + "value": null + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "long_arm": { + "_id": "classic/assets/combat_talent/long_arm", + "type": "asset", + "name": "Long-Arm", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a staff...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/long_arm/abilities/0", + "enabled": true, + "text": "In your hands, a humble staff is a deadly weapon (2 harm). When you instead use it as a simple weapon (1 harm), you may [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) +edge (instead of iron). If you do, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "When you strike with a staff as a simple weapon" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/long_arm/abilities/1", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +edge using your staff to disarm, trip, shove, or stun your foe, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "Using your staff to disarm, trip, shove, or stun your foe" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/long_arm/abilities/2", + "enabled": false, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) and score a strong hit, or if you accompany an ally who scores a strong hit on that move, your staff provides support and comfort in your travels; take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"], + "trigger": { + "conditions": [ + { + "by": { + "ally": true, + "player": true + }, + "method": null, + "roll_options": null + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "shield_bearer": { + "_id": "classic/assets/combat_talent/shield_bearer", + "type": "asset", + "name": "Shield-Bearer", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a shield...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/shield_bearer/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) using your shield as cover, add +1. When you [Clash](id:classic/moves/combat/clash) in close quarters, take +1 momentum on a strong hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using your shield as cover" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/clash"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in close quarters" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/shield_bearer/abilities/1", + "enabled": false, + "text": "When you paint your shield with a meaningful symbol, envision what you create. Then, if you [Endure Stress](id:classic/moves/suffer/endure_stress) as you face off against a fearsome foe, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_stress"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "While your shield is painted with a meaningful symbol" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/shield_bearer/abilities/2", + "enabled": false, + "text": "When forced to [Endure Harm](id:classic/moves/suffer/endure_harm) in a fight, you may instead sacrifice your shield and ignore all harm. If you do, the shield is destroyed. Once per fight, you also take initiative when you sacrifice your shield to avoid harm.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_harm"] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "skirmisher": { + "_id": "classic/assets/combat_talent/skirmisher", + "type": "asset", + "name": "Skirmisher", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a spear...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/skirmisher/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) by holding a foe at bay using your spear’s reach, roll +iron or +edge. If you score a hit, you may...\n\n * Iron: [Strike](id:classic/moves/combat/strike) (if you have initiative) or [Clash](id:classic/moves/combat/clash) now, and add +1.\n * Edge: Take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "iron" + }, + { + "using": "stat", + "stat": "edge" + } + ], + "text": "by holding a foe at bay using your spear's reach" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/skirmisher/abilities/1", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) in close combat, you may attempt to drive your spear home (decide before rolling). If you do, add +1 and inflict +2 harm on a hit. If you score a hit and the fight continues, [Face Danger](id:classic/moves/adventure/face_danger) +iron to recover your spear.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in close combat with your spear" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/skirmisher/abilities/2", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by bracing your spear against a charging foe, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by bracing your spear against a charging foe" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "slinger": { + "_id": "classic/assets/combat_talent/slinger", + "type": "asset", + "name": "Slinger", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a sling...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/slinger/abilities/0", + "enabled": true, + "text": "When launched from a sling, a simple stone inflicts deadly harm (2 harm). When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) by barraging your foe with sling-bullets, inflict harm on a strong hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by barraging your foe with sling-bullets" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/slinger/abilities/1", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) by launching stones at an advancing foe, you may choose one (before rolling).\n\n * Hold them back: Retain initiative on a weak hit, but inflict only 1 harm.\n * Hit them hard: Inflict +1 harm on a hit, but suffer -1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by launching stones at an advancing foe" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/slinger/abilities/2", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by preparing stones of a special quality or material, add +1. Then, take +1 momentum or +1 supply on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by preparing stones of a special quality or material" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "sunderer": { + "_id": "classic/assets/combat_talent/sunderer", + "type": "asset", + "name": "Sunderer", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield an axe...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/sunderer/abilities/0", + "enabled": true, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) in close quarters, you may suffer -1 momentum and inflict +1 harm on a hit (decide before rolling).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in close quarters with your axe" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/sunderer/abilities/1", + "enabled": false, + "text": "When you have your axe in hand, and use the promise of violence to [Compel](id:classic/moves/relationship/compel) or [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/relationship/compel", + "classic/moves/adventure/secure_an_advantage" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "when you have your axe in hand and use the promise of violence" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/sunderer/abilities/2", + "enabled": false, + "text": "When you make a tribute to a fallen foe (formidable or greater) by carving a rune in the haft of your axe, roll +heart. On a strong hit, inflict +1d6 harm (one time only) when you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). On a weak hit, as above, but this death weighs on you; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "moves": { + "carve_rune": { + "_id": "classic/assets/combat_talent/sunderer/abilities/2/moves/carve_rune", + "type": "move", + "name": "Carve Rune", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you make a tribute to a fallen foe (formidable or greater) by carving a rune in the haft of your axe..." + }, + "text": "When you make a tribute to a fallen foe (formidable or greater) by carving a rune in the haft of your axe, roll +heart. On a strong hit, inflict +1d6 harm (one time only) when you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). On a weak hit, as above, but this death weighs on you; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, inflict +1d6 harm (one time only) when you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash)." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but this death weighs on you; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n\nInflict +1d6 harm (one time only) when you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "swordmaster": { + "_id": "classic/assets/combat_talent/swordmaster", + "type": "asset", + "name": "Swordmaster", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a sword...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/swordmaster/abilities/0", + "enabled": true, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) and burn momentum to improve your result, inflict +2 harm. If the fight continues, add +1 on your next move.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ] + } + ] + }, + { + "_id": "classic/assets/combat_talent/swordmaster/abilities/1", + "enabled": false, + "text": "When you [Clash](id:classic/moves/combat/clash) and score a strong hit, add +1 if you immediately follow with a [Strike](id:classic/moves/combat/strike).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/clash"] + } + ] + }, + { + "_id": "classic/assets/combat_talent/swordmaster/abilities/2", + "enabled": false, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) by kneeling and grasping your sword’s blade, add +1 and take +1 momentum on a hit. If you let the edge draw blood from your hands, [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm) in exchange for an additional +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by kneeling and grasping your sword's blade" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "thunder_bringer": { + "_id": "classic/assets/combat_talent/thunder_bringer", + "type": "asset", + "name": "Thunder-Bringer", + "category": "Combat Talent", + "count_as_impact": false, + "shared": false, + "requirement": "If you wield a mighty hammer...", + "abilities": [ + { + "_id": "classic/assets/combat_talent/thunder_bringer/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger), [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), or [Compel](id:classic/moves/relationship/compel) by hitting or breaking an inanimate object, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by hitting or breaking an inanimate object" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/thunder_bringer/abilities/1", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) a foe to knock them back, stun them, or put them off balance, inflict 1 harm (instead of 2) and take +2 momentum on a hit. On a strong hit, you also create an opening and add +1 on your next move.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to knock a foe back, stun them, or put them off balance" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/combat_talent/thunder_bringer/abilities/2", + "enabled": false, + "text": "When you [Turn the Tide](id:classic/moves/combat/turn_the_tide), you may [Strike](id:classic/moves/combat/strike) with all the fury and power you can muster. If you do (decide before rolling), you may reroll any dice and inflict +2 harm on a strong hit, but count a weak hit as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/turn_the_tide"] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 40, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "companion": { + "_id": "classic/collections/assets/companion", + "type": "asset_collection", + "name": "Companion Assets", + "description": "Companions are your NPC helpers. When you acquire a companion, give them a name and envision their appearance and personality. If they don’t have a starting ability, choose one. Upgrading a companion enables additional abilities.\n\nCompanions utilize a health track and may suffer harm as a result of one of your moves. When your companion takes damage, make the [Companion Endure Harm](id:classic/moves/suffer/companion_endure_harm) move to determine the outcome. See page 43 to learn more.", + "contents": { + "cave_lion": { + "_id": "classic/assets/companion/cave_lion", + "type": "asset", + "name": "Cave Lion", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your cat takes down its prey.", + "abilities": [ + { + "_id": "classic/assets/companion/cave_lion/abilities/0", + "name": "Eager", + "enabled": false, + "text": "When your cat chases down big game, you may [Resupply](id:classic/moves/adventure/resupply) with +edge (instead of +wits). If you do, take +1 supply or +1 momentum on a strong hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "When your cat chases down big game" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/cave_lion/abilities/1", + "name": "Inescapable", + "enabled": false, + "text": "When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) or [Strike](id:classic/moves/combat/strike) by sending your cat to attack, roll +edge. On a hit, take +2 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/enter_the_fray", + "classic/moves/combat/strike" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "By sending your cat to attack" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/cave_lion/abilities/2", + "name": "Protective", + "enabled": false, + "text": "When you [Make Camp](id:classic/moves/adventure/make_camp), your cat is alert to trouble. If you or an ally choose to relax, take +1 spirit. If you focus, take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/make_camp"] + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 4, + "value": 4, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "giant_spider": { + "_id": "classic/assets/companion/giant_spider", + "type": "asset", + "name": "Giant Spider", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your spider uncovers secrets.", + "abilities": [ + { + "_id": "classic/assets/companion/giant_spider/abilities/0", + "name": "Discreet", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by sending your spider to scout a place, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "By sending your spider to scout a place" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/giant_spider/abilities/1", + "name": "Soul-Piercing", + "enabled": false, + "text": "You may [Face Danger](id:classic/moves/adventure/face_danger) +shadow by sending your spider to secretly study someone. On a hit, the spider returns to reveal the target’s deepest fears through a reflection in its glassy eyes. Use this to [Gather Information](id:classic/moves/adventure/gather_information) and reroll any dice.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "By sending your spider to secretly study someone" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/giant_spider/abilities/2", + "name": "Ensnaring", + "enabled": false, + "text": "When your spider sets a trap, add +1 as you [Enter the Fray](id:classic/moves/combat/enter_the_fray) +shadow. On a strong hit, also inflict 2 harm.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "When your spider sets a trap" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 4, + "value": 4, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "hawk": { + "_id": "classic/assets/companion/hawk", + "type": "asset", + "name": "Hawk", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your hawk can aid you while it is aloft.", + "abilities": [ + { + "_id": "classic/assets/companion/hawk/abilities/0", + "name": "Far-seeing", + "enabled": false, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey), or when you [Resupply](id:classic/moves/adventure/resupply) by hunting for small game, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"] + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "By hunting for small game" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/hawk/abilities/1", + "name": "Fierce", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +edge using your hawk to harass and distract your foes, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "Using your hawk to harass and distract your foes" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/hawk/abilities/2", + "name": "Vigilant", + "enabled": false, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) +wits to detect an approaching threat, or when you [Enter the Fray](id:classic/moves/combat/enter_the_fray) +wits against an ambush, add +2.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "To detect an approaching threat" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 3, + "value": 3, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "horse": { + "_id": "classic/assets/companion/horse", + "type": "asset", + "name": "Horse", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "You and your horse ride as one.", + "abilities": [ + { + "_id": "classic/assets/companion/horse/abilities/0", + "name": "Swift", + "enabled": false, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) +edge using your horse’s speed and grace, or when you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey), add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"] + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "Using your horse’s speed and grace" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/horse/abilities/1", + "name": "Fearless", + "enabled": false, + "text": "When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) or [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +heart by charging into combat, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/enter_the_fray", + "classic/moves/adventure/secure_an_advantage" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "By charging into combat" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/horse/abilities/2", + "name": "Mighty", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) at close range while mounted, add +1 and inflict +1 harm on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "At close range while mounted" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "hound": { + "_id": "classic/assets/companion/hound", + "type": "asset", + "name": "Hound", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your hound is your steadfast companion.", + "abilities": [ + { + "_id": "classic/assets/companion/hound/abilities/0", + "name": "Sharp", + "enabled": false, + "text": "When you [Gather Information](id:classic/moves/adventure/gather_information) using your hound’s keen senses to track your quarry or investigate a scene, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/gather_information"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "Using your hound’s keen senses to track your quarry or investigate a scene" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/hound/abilities/1", + "name": "Ferocious", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) alongside your hound and score a hit, inflict +1 harm or take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "Alongside your hound" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/hound/abilities/2", + "name": "Loyal", + "enabled": false, + "text": "When you [Endure Stress](id:classic/moves/suffer/endure_stress) in the company of your hound, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_stress"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "In the company of your hound" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 4, + "value": 4, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "kindred": { + "_id": "classic/assets/companion/kindred", + "type": "asset", + "name": "Kindred", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your friend stands by you.", + "abilities": [ + { + "_id": "classic/assets/companion/kindred/abilities/0", + "name": "Skilled", + "enabled": false, + "options": { + "expertise": { + "label": "expertise", + "field_type": "text", + "value": null + } + }, + "text": "When you make a move outside of combat aided by your companion’s expertise, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you make a move outside of combat aided by your companion’s expertise" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/kindred/abilities/1", + "name": "Shield-Kin", + "enabled": false, + "text": "When you [Clash](id:classic/moves/combat/clash) or [Battle](id:classic/moves/combat/battle) alongside your companion, or when you [Face Danger](id:classic/moves/adventure/face_danger) against an attack by standing together, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/clash", + "classic/moves/combat/battle" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "Alongside your Kindred companion" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "Against an attack by standing together with your Kindred companion" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/kindred/abilities/2", + "name": "Bonded", + "enabled": false, + "text": "Once you mark a bond with your companion, add +1 when you [Face Desolation](id:classic/moves/suffer/face_desolation) in their presence.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_desolation"] + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 4, + "value": 4, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "mammoth": { + "_id": "classic/assets/companion/mammoth", + "type": "asset", + "name": "Mammoth", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your mammoth walks a resolute path.", + "abilities": [ + { + "_id": "classic/assets/companion/mammoth/abilities/0", + "name": "Lumbering", + "enabled": false, + "text": "When your mammoth travels with you as you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey), you may add +2 but suffer -1 momentum (decide before rolling)." + }, + { + "_id": "classic/assets/companion/mammoth/abilities/1", + "name": "Beast of burden", + "enabled": false, + "text": "When you make a move which requires you to roll +supply, you may instead roll +your mammoth’s health.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/make_camp", + "delve/moves/delve/check_your_gear" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "health", + "assets": null + } + ] + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/mammoth/abilities/2", + "name": "Overpowering", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) by riding your mammoth against a pack of foes, add +1 and inflict +1 harm on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by riding your mammoth against a pack of foes" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "owl": { + "_id": "classic/assets/companion/owl", + "type": "asset", + "name": "Owl", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your owl soars through the darkness.", + "abilities": [ + { + "_id": "classic/assets/companion/owl/abilities/0", + "name": "Nocturnal", + "enabled": false, + "text": "If you [Resupply](id:classic/moves/adventure/resupply) at night by sending your owl to hunt, take +2 momentum on a hit. When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) +wits against an ambush in darkness, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "at night by sending your owl to hunt" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "against an ambush in darkness" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/owl/abilities/1", + "name": "Sage", + "enabled": false, + "text": "When you leverage your owl’s secret knowledge to perform a ritual, add +1 or take +1 momentum on a hit (decide before rolling).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["*/assets/ritual/*/abilities/*/moves/*"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "leverage your owl's secret knowledge to perform a ritual" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/owl/abilities/2", + "name": "Embodying", + "enabled": false, + "text": "When you [Face Death](id:classic/moves/suffer/face_death), take your owl’s health as +momentum before you roll.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_death"] + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 3, + "value": 3, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "raven": { + "_id": "classic/assets/companion/raven", + "type": "asset", + "name": "Raven", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your raven heeds your call.", + "abilities": [ + { + "_id": "classic/assets/companion/raven/abilities/0", + "name": "Sly", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) +shadow using your raven to perform trickery (such as creating a distraction or stealing a small object) add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/face_danger" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "using your raven to perform trickery (such as creating a distraction or stealing a small object)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/raven/abilities/1", + "name": "Knowing", + "enabled": false, + "text": "When you [Face Death](id:classic/moves/suffer/face_death), add +2 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_death"] + } + ] + }, + { + "_id": "classic/assets/companion/raven/abilities/2", + "name": "Diligent", + "enabled": false, + "text": "When your raven carries messages for you, you may [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), [Gather Information](id:classic/moves/adventure/gather_information), or [Compel](id:classic/moves/relationship/compel) from a distance.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information", + "classic/moves/relationship/compel" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "your raven carries messages for you" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 2, + "value": 2, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 2, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "young_wyvern": { + "_id": "classic/assets/companion/young_wyvern", + "type": "asset", + "name": "Young Wyvern", + "category": "Companion", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Your wyvern won’t devour you. For now.", + "abilities": [ + { + "_id": "classic/assets/companion/young_wyvern/abilities/0", + "name": "Insatiable", + "enabled": false, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) and score a hit, you may suffer -1 supply in exchange for +2 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"] + } + ] + }, + { + "_id": "classic/assets/companion/young_wyvern/abilities/1", + "name": "Indomitable", + "enabled": false, + "text": "When you make the [Companion Endure Harm](id:classic/moves/suffer/companion_endure_harm) move for your wyvern, add +2 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/companion_endure_harm"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "for your wyvern" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/companion/young_wyvern/abilities/2", + "name": "Savage", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) by commanding your wyvern to attack, roll +heart. Your wyvern inflicts 3 harm on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "By commanding your wyvern to attack" + } + ] + } + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 5, + "value": 5, + "moves": { + "recover": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ], + "suffer": ["classic/moves/suffer/companion_endure_harm"] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 39, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "path": { + "_id": "classic/collections/assets/path", + "type": "asset_collection", + "name": "Path Assets", + "summary": "Paths represent your background, interests, training, and skills.", + "description": "Paths represent your background, interests, training, and skills. They provide mechanical and narrative advantages, but also reflect who you are and how you interact with the world. For example, a [Ritualist](id:classic/assets/path/ritualist) would likely have a different outlook than a [Veteran](id:classic/assets/path/veteran). Choosing both those paths can reflect an evolution of your character or an interesting background.", + "contents": { + "alchemist": { + "_id": "classic/assets/path/alchemist", + "type": "asset", + "name": "Alchemist", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/alchemist/abilities/0", + "enabled": true, + "text": "When you create an elixir, choose an effect: Deftness (edge), audacity (heart), vigor (iron), slyness (shadow), or clarity (wits). Then, suffer -1 supply and roll +wits. On a strong hit, you create a single dose. The character who consumes the elixir must [Face Danger](id:classic/moves/adventure/face_danger) +iron and score a hit, after which they add +1 when making moves with the related stat until their health, spirit, or momentum fall below +1. On a weak hit, as above, but suffer an additional -1 supply to create it.", + "moves": { + "create_elixir": { + "_id": "classic/assets/path/alchemist/abilities/0/moves/create_elixir", + "type": "move", + "name": "Create Elixir", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Elixir of deftness (edge)" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Elixir of audacity (heart)" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Elixir of vigor (iron)" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Elixir of slyness (shadow)" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Elixir of clarity (wits)" + } + ], + "text": "When you create an elixir..." + }, + "text": "When you create an elixir, choose an effect: Deftness (edge), audacity (heart), vigor (iron), slyness (shadow), or clarity (wits). Then, suffer -1 supply and roll +wits. On a strong hit, you create a single dose. The character who consumes the elixir must [Face Danger](id:classic/moves/adventure/face_danger) +iron and score a hit, after which they add +1 when making moves with the related stat until their health, spirit, or momentum fall below +1. On a weak hit, as above, but suffer an additional -1 supply to create it.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you create a single dose. The character who consumes the elixir must [Face Danger](id:classic/moves/adventure/face_danger) +iron and score a hit, after which they add +1 when making moves with the related stat until their health, spirit, or momentum fall below +1." + }, + "weak_hit": { + "text": "On a __weak hit__, you create a single dose, but suffer an additional -1 supply to create it.\n\nThe character who consumes the elixir must [Face Danger](id:classic/moves/adventure/face_danger) +iron and score a hit, after which they add +1 when making moves with the related stat until their health, spirit, or momentum fall below +1." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/path/alchemist/abilities/1", + "enabled": false, + "text": "As above, and you may choose two effects for a single dose, or create two doses of the same effect.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/path/alchemist/abilities/0/moves/create_elixir" + ] + } + ] + }, + { + "_id": "classic/assets/path/alchemist/abilities/2", + "enabled": false, + "text": "When you prepare an elixir, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/path/alchemist/abilities/0/moves/create_elixir" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "animal_kin": { + "_id": "classic/assets/path/animal_kin", + "type": "asset", + "name": "Animal Kin", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/animal_kin/abilities/0", + "enabled": true, + "text": "When you make a move to pacify, calm, control, aid, or fend off an animal (or an animal or beast companion), add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to pacify, calm, control, aid, or fend off an animal (or an animal or beast companion)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/animal_kin/abilities/1", + "enabled": false, + "text": "You may add or upgrade an animal or beast companion asset for 1 fewer experience. Once you mark all their abilities, you may [Forge a Bond](id:classic/moves/relationship/forge_a_bond) with them and take an automatic strong hit. When you do, mark a bond twice and take 1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/forge_a_bond"], + "trigger": { + "conditions": [ + { + "method": "strong_hit", + "roll_options": null, + "text": "after you mark all the abilities of an animal or beast companion asset" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/animal_kin/abilities/2", + "enabled": false, + "text": "Once per fight, when you leverage your animal or beast companion to make a move, reroll any dice. On a hit, take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "once per fight, when you leverage your animal or beast companion to make a move" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "banner_sworn": { + "_id": "classic/assets/path/banner_sworn", + "type": "asset", + "name": "Banner-Sworn", + "category": "Path", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Once you mark a bond with a leader or faction...", + "abilities": [ + { + "_id": "classic/assets/path/banner_sworn/abilities/0", + "enabled": true, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to serve your leader or faction on a mission, you may reroll any dice. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and mark experience, take +1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"] + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to serve your leader or faction on a mission" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/banner_sworn/abilities/1", + "enabled": false, + "text": "When you [Sojourn](id:classic/moves/relationship/sojourn) or [Make Camp](id:classic/moves/adventure/make_camp) in the company of your banner-kin, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/relationship/sojourn", + "classic/moves/adventure/make_camp" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in the company of your banner-kin" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/banner_sworn/abilities/2", + "enabled": false, + "text": "When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) bearing your banner, add +1 and take +1 momentum on a hit. When you burn momentum while carrying your banner in combat, take +1 momentum after you reset.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "bearing your banner" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "battle_scarred": { + "_id": "classic/assets/path/battle_scarred", + "type": "asset", + "name": "Battle-Scarred", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "Once you become maimed...", + "abilities": [ + { + "_id": "classic/assets/path/battle_scarred/abilities/0", + "enabled": false, + "text": "You focus your energies: Reduce your edge or iron by 1 and add +2 to wits or heart, or +1 to each (to a maximum of +4)." + }, + { + "_id": "classic/assets/path/battle_scarred/abilities/1", + "enabled": false, + "text": "You overcome your limitations: Reduce your maximum health by 1. Maimed no longer counts as a debility, and does not reduce your maximum momentum or reset value. When you [Endure Stress](id:classic/moves/suffer/endure_stress) +heart, take +1 momentum on a strong hit." + }, + { + "_id": "classic/assets/path/battle_scarred/abilities/2", + "enabled": false, + "text": "You have stared down death before: When you are at 0 health and [Endure Harm](id:classic/moves/suffer/endure_harm), you may roll +wits or +heart (instead of +health or +iron). If you do, take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_harm"], + "trigger": { + "conditions": [ + { + "method": "highest", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + }, + { + "using": "stat", + "stat": "heart" + } + ], + "text": "When you are at 0 health" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "blade_bound": { + "_id": "classic/assets/path/blade_bound", + "type": "asset", + "name": "Blade-Bound", + "category": "Path", + "options": { + "name": { + "label": "name", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Once you mark a bond with a kin-blade, a sentient weapon imbued with the spirit of your ancestor...", + "abilities": [ + { + "_id": "classic/assets/path/blade_bound/abilities/0", + "enabled": false, + "text": "When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) or [Draw the Circle](id:classic/moves/relationship/draw_the_circle) while wielding your kin-blade, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/enter_the_fray", + "classic/moves/relationship/draw_the_circle" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "while wielding your kin-blade" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/blade_bound/abilities/1", + "enabled": false, + "text": "When you [Gather Information](id:classic/moves/adventure/gather_information) by listening to the whispers of your kin-blade, add +1 and take +2 momentum on a hit. Then, [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/gather_information"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by listening to the whispers of your kin-blade" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/blade_bound/abilities/2", + "enabled": false, + "text": "When you [Strike](id:classic/moves/combat/strike) with your kin-blade to inflict savage harm (decide before rolling), add +1 and inflict +2 harm on a hit. Then, [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/strike"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "with your kin-blade to inflict savage harm (decide before rolling)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "bonded": { + "_id": "classic/assets/path/bonded", + "type": "asset", + "name": "Bonded", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/bonded/abilities/0", + "enabled": true, + "text": "When you make a move which gives you an add for sharing a bond, add +1 more.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "you make a move which gives you an add for sharing a bond" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/bonded/abilities/1", + "enabled": false, + "text": "When you completely fill a box on your bonds progress track, envision what your relationships have taught you. Then, take 1 experience and +2 momentum." + }, + { + "_id": "classic/assets/path/bonded/abilities/2", + "enabled": false, + "text": "When you make a move in a crucial moment and score a miss, you may cling to thoughts of your bond-kin for courage or encouragement. If you do, reroll any dice. On another miss, in addition to the outcome of the move, you must mark shaken or corrupted. If both debilities are already marked, [Face Desolation](id:classic/moves/suffer/face_desolation).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "commander": { + "_id": "classic/assets/path/commander", + "type": "asset", + "name": "Commander", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/commander/abilities/0", + "enabled": true, + "text": "You lead a warband with +4 strength. Roll +strength when you command your warband to [Face Danger](id:classic/moves/adventure/face_danger), [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), [Compel](id:classic/moves/relationship/compel), or [Battle](id:classic/moves/combat/battle). When you face the negative outcome of any move, you may suffer -1 strength as the cost. When you [Make Camp](id:classic/moves/adventure/make_camp) or [Sojourn](id:classic/moves/relationship/sojourn) and score a hit, take +1 strength. While at 0 strength, this asset counts as a debility.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel", + "classic/moves/combat/battle" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "strength", + "assets": null + } + ], + "text": "By commanding your warband" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ] + } + ] + }, + { + "_id": "classic/assets/path/commander/abilities/1", + "enabled": false, + "text": "You may dispatch scouts from your warband to [Gather Information](id:classic/moves/adventure/gather_information) or [Resupply](id:classic/moves/adventure/resupply); if you do, roll +strength.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/gather_information", + "classic/moves/adventure/resupply" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "strength", + "assets": null + } + ], + "text": "By dispatching scouts from your warband" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/commander/abilities/2", + "enabled": false, + "text": "Once you [Forge a Bond](id:classic/moves/relationship/forge_a_bond) with your warband, take +1 momentum on a hit when you leverage a warband ability." + } + ], + "controls": { + "strength": { + "label": "strength", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 4, + "value": 4, + "moves": { + "recover": [ + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn" + ] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "dancer": { + "_id": "classic/assets/path/dancer", + "type": "asset", + "name": "Dancer", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/dancer/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +edge by dancing for an audience, add +1 and take +2 momentum on a hit. On a strong hit, also add +2 (one time only) if you make a move to interact with someone in the audience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "by dancing for an audience" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/dancer/abilities/1", + "enabled": false, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) +edge in a fight by nimbly avoiding your foe’s attacks, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in a fight by nimbly avoiding your foe’s attacks" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/dancer/abilities/2", + "enabled": false, + "text": "When you or an ally make a progress move and score a hit, you may perform a dance to commemorate the event. If you do, roll +edge. On a strong hit, you and each of your allies take +2 momentum and +1 spirit. On a weak hit, you take +1 momentum or +1 spirit, but your allies are unmoved.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "by": { + "ally": true, + "player": true + }, + "method": null, + "roll_options": null + } + ] + } + } + ], + "moves": { + "commemorate": { + "_id": "classic/assets/path/dancer/abilities/2/moves/commemorate", + "type": "move", + "name": "Commemorate", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ] + } + ], + "text": "When you or an ally make a progress move and score a hit, and you perform a dance to commemorate the event..." + }, + "text": "When you or an ally make a progress move and score a hit, you may perform a dance to commemorate the event. If you do, roll +edge. On a strong hit, you and each of your allies take +2 momentum and +1 spirit. On a weak hit, you take +1 momentum or +1 spirit, but your allies are unmoved.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you and each of your allies take +2 momentum and +1 spirit." + }, + "weak_hit": { + "text": "On a __weak hit__, you take +1 momentum or +1 spirit, but your allies are unmoved." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 4, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "devotant": { + "_id": "classic/assets/path/devotant", + "type": "asset", + "name": "Devotant", + "category": "Path", + "options": { + "gods_name": { + "label": "god's name", + "field_type": "text", + "value": null + }, + "stat": { + "label": "stat", + "field_type": "select_value", + "choices": { + "edge": { + "label": "edge", + "choice_type": "choice", + "using": "stat", + "stat": "edge" + }, + "heart": { + "label": "heart", + "choice_type": "choice", + "using": "stat", + "stat": "heart" + }, + "iron": { + "label": "iron", + "choice_type": "choice", + "using": "stat", + "stat": "iron" + }, + "shadow": { + "label": "shadow", + "choice_type": "choice", + "using": "stat", + "stat": "shadow" + }, + "wits": { + "label": "wits", + "choice_type": "choice", + "using": "stat", + "stat": "wits" + } + }, + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/devotant/abilities/0", + "enabled": true, + "text": "When you say your daily prayers, you may [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by asking your god to grant a blessing. If you do, roll +your god’s stat. On a hit, take +2 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_option", + "option": "stat", + "assets": null + } + ], + "text": "by asking your god to grant a blessing when you say your daily prayers" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/devotant/abilities/1", + "enabled": false, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to serve your god on a divine quest, you may roll +your god’s stat and reroll any dice. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and mark experience, take +1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_option", + "option": "stat", + "assets": null + } + ], + "text": "to serve your god on a divine quest" + } + ] + } + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to serve your god on a divine quest" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/devotant/abilities/2", + "enabled": false, + "text": "When you [Sojourn](id:classic/moves/relationship/sojourn) by sharing the word of your god, you may roll +your god’s stat. If you do, take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_option", + "option": "stat", + "assets": null + } + ], + "text": "By sharing the word of your god" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "empowered": { + "_id": "classic/assets/path/empowered", + "type": "asset", + "name": "Empowered", + "category": "Path", + "options": { + "title_lineage": { + "label": "title/lineage", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/empowered/abilities/0", + "enabled": true, + "text": "When you [Sojourn](id:classic/moves/relationship/sojourn) and score a weak hit or miss, you may claim the rights of hospitality warranted by your title or lineage. If you do, roll all dice again and add +1. On a miss, you are refused, and your presumption causes significant new trouble.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"] + } + ] + }, + { + "_id": "classic/assets/path/empowered/abilities/1", + "enabled": false, + "text": "When you exert your title or lineage to [Compel](id:classic/moves/relationship/compel), add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/compel"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you exert your title or lineage" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/empowered/abilities/2", + "enabled": false, + "text": "When you forgo your title or lineage and [Forge a Bond](id:classic/moves/relationship/forge_a_bond) as an equal, or when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to serve someone of a lower station, add +1 and take +1 momentum or +1 spirit on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/forge_a_bond"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "as an equal, foregoing your title or lineage" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to serve someone of a lower station" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "fated": { + "_id": "classic/assets/path/fated", + "type": "asset", + "name": "Fated", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/fated/abilities/0", + "enabled": true, + "text": "When you [Face Death](id:classic/moves/suffer/face_death) or [Face Desolation](id:classic/moves/suffer/face_desolation) while your epic background vow is unfulfilled, it is not yet your time. Instead of rolling, you may take an automatic strong hit. If you do, this asset counts as a debility (and you no longer have this protection) until you next [Reach a Milestone](id:classic/moves/quest/reach_a_milestone) on the background vow.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/suffer/face_death", + "classic/moves/suffer/face_desolation" + ], + "trigger": { + "conditions": [ + { + "method": "strong_hit", + "roll_options": null, + "text": "while your epic background vow is unfulfilled" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/fated/abilities/1", + "enabled": false, + "text": "When you [Reach a Milestone](id:classic/moves/quest/reach_a_milestone) on your background vow, take +2 momentum or +1 spirit.", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/quest/reach_a_milestone"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "on your background vow" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/fated/abilities/2", + "enabled": false, + "text": "For every two boxes filled on your background vow progress track, take 1 experience. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow), your fate is at hand. Envision your final sacrifice and reroll any dice.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "on your background vow" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "fortune_hunter": { + "_id": "classic/assets/path/fortune_hunter", + "type": "asset", + "name": "Fortune Hunter", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/fortune_hunter/abilities/0", + "enabled": true, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to someone under the promise of payment, add +1 and give the quest a special mark. When you successfully [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) to them, take +wealth equal to the rank of the quest. If you leverage wealth when making a move where resources are a factor, add +wealth and suffer -1 wealth.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to someone under the promise of payment" + } + ] + } + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to someone under the promise of payment" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "you leverage wealth when making a move where resources are a factor" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/fortune_hunter/abilities/1", + "enabled": false, + "text": "When in a community or trading, you may suffer -1 wealth and take +2 supply." + }, + { + "_id": "classic/assets/path/fortune_hunter/abilities/2", + "enabled": false, + "text": "When you [Resupply](id:classic/moves/adventure/resupply) by scavenging or looting, and score a strong hit with a match, you may envision finding an object of value. If you do, take +1 supply (instead of +2) and +1 wealth.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by scavenging or looting" + } + ] + } + } + ] + } + ], + "controls": { + "wealth": { + "label": "wealth", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 5, + "value": 0 + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "herbalist": { + "_id": "classic/assets/path/herbalist", + "type": "asset", + "name": "Herbalist", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/herbalist/abilities/0", + "enabled": true, + "text": "When you attempt to [Heal](id:classic/moves/adventure/heal) using herbal remedies, and you have at least +1 supply, choose one (decide before rolling).\n\n * Add +2.\n * On a hit, take or give an additional +1 health.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/heal"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using herbal remedies, and you have at least +1 supply" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/heal"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using herbal remedies, and you have at least +1 supply" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/herbalist/abilities/1", + "enabled": false, + "text": "When you [Heal](id:classic/moves/adventure/heal) a companion, ally, or other character, and score a hit, take +1 spirit or +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/heal"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "a companion, ally, or other character" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/herbalist/abilities/2", + "enabled": false, + "text": "When you [Make Camp](id:classic/moves/adventure/make_camp) and choose the option to partake, you can create a restorative meal. If you do, you and your companions take +1 health. Any allies who choose to partake also take +1 health, and do not suffer -supply.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/make_camp"], + "trigger": { + "conditions": [ + { + "by": { + "ally": true, + "player": true + }, + "method": null, + "roll_options": null + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "honorbound": { + "_id": "classic/assets/path/honorbound", + "type": "asset", + "name": "Honorbound", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/honorbound/abilities/0", + "enabled": true, + "text": "When you [Turn the Tide](id:classic/moves/combat/turn_the_tide), envision how your vows give you strength in this moment. Then, when you make your move, add +2 (instead of +1) and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/combat/turn_the_tide"] + } + ] + }, + { + "_id": "classic/assets/path/honorbound/abilities/1", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) by telling a hard truth, add +1 and take +1 momentum on a hit. On a weak hit or miss, envision how this truth complicates your current situation.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by telling a hard truth" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/honorbound/abilities/2", + "enabled": false, + "text": "When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and score a miss, you may reroll one challenge die. If you score a miss again, reduce your maximum spirit by 1. You may recover this lost spirit when you next [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and score a strong hit.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "improviser": { + "_id": "classic/assets/path/improviser", + "type": "asset", + "name": "Improviser", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/improviser/abilities/0", + "enabled": true, + "text": "When you [Check Your Gear](id:delve/moves/delve/check_your_gear), you may roll +wits (instead of +supply). If you do, envision how you make do with a clever solution, and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["delve/moves/delve/check_your_gear"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/improviser/abilities/1", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) by cobbling together an ad hoc tool or apparatus, add +1 and take +1 momentum on a hit. After rolling, you may also suffer -1 supply and add +1 more.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/face_danger" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by cobbling together an ad hoc tool or apparatus" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/improviser/abilities/2", + "enabled": false, + "text": "When you throw caution to the wind and make an impulsive move in a risky situation, you may add +2. If you do, take +1 momentum on a strong hit, but count a weak hit as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "when you throw caution to the wind and make an impulsive move in a risky situation" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "infiltrator": { + "_id": "classic/assets/path/infiltrator", + "type": "asset", + "name": "Infiltrator", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/infiltrator/abilities/0", + "enabled": true, + "text": "When you make a move to breach, traverse, or hide within an area held by an enemy, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to breach, traverse, or hide within an area held by an enemy" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/infiltrator/abilities/1", + "enabled": false, + "text": "When you [Gather Information](id:classic/moves/adventure/gather_information) within an enemy area to discover their positions, plans, or methods, or when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) within that area through observation, you may roll +shadow (instead of +wits). If you do, take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/gather_information"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Within an enemy area to discover their positions, plans, or methods" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Within an enemy area area through observation" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/infiltrator/abilities/2", + "enabled": false, + "text": "When you [Resupply](id:classic/moves/adventure/resupply) within an enemy area by scavenging or looting, you may roll +shadow (instead of +wits). If you do, take +1 momentum or +1 supply on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Within an enemy area by scavenging or looting" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "lorekeeper": { + "_id": "classic/assets/path/lorekeeper", + "type": "asset", + "name": "Lorekeeper", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/lorekeeper/abilities/0", + "enabled": true, + "text": "You are the bearer of a mystical archive. When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Gather Information](id:classic/moves/adventure/gather_information) using lore recalled from your studies, add +1. If you have a few hours to search the archive, add +2. On a hit, envision the obscure but helpful knowledge you put to use ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using lore recalled from your studies" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using lore recalled from your studies, and you have a few hours to search the archive" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/lorekeeper/abilities/1", + "enabled": false, + "text": "When you learn of a site or object holding lost knowledge, and [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to recover it for the archive, reroll any dice. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and mark experience, take +1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to recover a site or object's lost knowledge for the archive" + } + ] + } + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to recover a site or object's lost knowledge for the archive" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/lorekeeper/abilities/2", + "enabled": false, + "text": "One time only, you may browse the archive’s forbidden depths. If you do, raise your wits by 1 and roll an action die. On 1-3, you must also mark corrupted or [Face Desolation](id:classic/moves/suffer/face_desolation) (ignoring momentum)." + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 6, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "loyalist": { + "_id": "classic/assets/path/loyalist", + "type": "asset", + "name": "Loyalist", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/loyalist/abilities/0", + "enabled": true, + "text": "When you [Aid Your Ally](id:classic/moves/adventure/aid_your_ally), add +1 and take +1 momentum on a hit. This is in addition to the benefits taken by your ally.", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/adventure/aid_your_ally"] + } + ] + }, + { + "_id": "classic/assets/path/loyalist/abilities/1", + "enabled": false, + "text": "When an ally makes the [Endure Stress](id:classic/moves/suffer/endure_stress) move in your company, they add +1 and you take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/endure_stress"], + "trigger": { + "conditions": [ + { + "by": { + "ally": true, + "player": false + }, + "method": null, + "roll_options": null, + "text": "When an ally makes the [Endure Stress](id:classic/moves/suffer/endure_stress) move in your company" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/loyalist/abilities/2", + "enabled": false, + "text": "When you stand with your ally as they make a progress move, envision how you support them. Then, roll one challenge die. On a 1-9, your ally may replace one of their challenge dice with yours. On a 10, envision how you inadvertently undermine their action; your ally must replace their lowest challenge die with yours.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "by": { + "ally": true, + "player": false + }, + "method": null, + "roll_options": null, + "text": "when you stand with your ally as they make a progress move" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "masked": { + "_id": "classic/assets/path/masked", + "type": "asset", + "name": "Masked", + "category": "Path", + "options": { + "material": { + "label": "material", + "field_type": "select_value", + "choices": { + "thunderwood": { + "label": "thunderwood", + "choice_type": "choice", + "using": "stat", + "stat": "edge" + }, + "bloodwood": { + "label": "bloodwood", + "choice_type": "choice", + "using": "stat", + "stat": "iron" + }, + "ghostwood": { + "label": "ghostwood", + "choice_type": "choice", + "using": "stat", + "stat": "shadow" + }, + "whisperwood": { + "label": "whisperwood", + "choice_type": "choice", + "using": "stat", + "stat": "wits" + } + }, + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "requirement": "Once you mark a bond with elves, and are gifted a mask of precious elderwood...", + "abilities": [ + { + "_id": "classic/assets/path/masked/abilities/0", + "enabled": true, + "text": "Choose your mask’s material.\n\n * Thunderwood: Edge / Health\n * Bloodwood: Iron / Health\n * Ghostwood: Shadow / Spirit\n * Whisperwood: Wits / Spirit\n\nWhen you wear the mask and make a move which uses its stat, add +1. If you roll a 1 on your action die, suffer -1 to the associated track (in addition to any other outcome of the move).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "asset_option", + "option": "material", + "assets": null + } + ], + "text": "when you wear your elderwood mask" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/masked/abilities/1", + "enabled": false, + "text": "As above, and you may instead add +2 and suffer -2 (decide before rolling).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "asset_option", + "option": "material", + "assets": null + } + ], + "text": "when you wear your elderwood mask" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/masked/abilities/2", + "enabled": false, + "text": "When you [Face Death](id:classic/moves/suffer/face_death) or [Face Desolation](id:classic/moves/suffer/face_desolation) while wearing the mask, you may roll +its stat (instead of +heart).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/suffer/face_death", + "classic/moves/suffer/face_desolation" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_option", + "option": "material", + "assets": null + } + ], + "text": "when you wear your elderwood mask" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "oathbreaker": { + "_id": "classic/assets/path/oathbreaker", + "type": "asset", + "name": "Oathbreaker", + "category": "Path", + "count_as_impact": true, + "shared": false, + "requirement": "Once you [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow)...", + "abilities": [ + { + "_id": "classic/assets/path/oathbreaker/abilities/0", + "enabled": true, + "text": "This asset counts as a debility. One time only, when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to redeem yourself (extreme or greater), give that vow a special mark. When you [Reach a Milestone](id:classic/moves/quest/reach_a_milestone) on the marked vow, take +2 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "one time only, to redeem yourself (extreme or greater)" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/oathbreaker/abilities/1", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) by reaffirming your commitment to your marked vow, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by reaffirming your commitment to your marked vow" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/oathbreaker/abilities/2", + "enabled": false, + "text": "When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) on your marked quest and score a hit, you find redemption and automatically activate this ability at no cost. You may then improve one of your stats by +1 and discard this asset.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "one time only, to redeem yourself (extreme or greater)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "outcast": { + "_id": "classic/assets/path/outcast", + "type": "asset", + "name": "Outcast", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/outcast/abilities/0", + "enabled": true, + "text": "When your supply is reduced to 0, suffer any remaining -supply as -momentum. Then, roll +wits. On a strong hit, you manage to scrape by and take +1 supply. On a weak hit, you may suffer -2 momentum in exchange for +1 supply. On a miss, you are [Out of Supply](id:classic/moves/suffer/out_of_supply).", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/suffer/out_of_supply"] + } + ], + "moves": { + "scrape_by": { + "_id": "classic/assets/path/outcast/abilities/0/moves/scrape_by", + "type": "move", + "name": "Scrape By", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When your supply is reduced to 0..." + }, + "text": "When your supply is reduced to 0, suffer any remaining -supply as -momentum. Then, roll +wits. On a strong hit, you manage to scrape by and take +1 supply. On a weak hit, you may suffer -2 momentum in exchange for +1 supply. On a miss, you are [Out of Supply](id:classic/moves/suffer/out_of_supply).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you manage to scrape by and take +1 supply." + }, + "weak_hit": { + "text": "On a __weak hit__, you may suffer -2 momentum in exchange for +1 supply." + }, + "miss": { + "text": "On a __miss__, you are [Out of Supply](id:classic/moves/suffer/out_of_supply)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/path/outcast/abilities/1", + "enabled": false, + "text": "When you [Sojourn](id:classic/moves/relationship/sojourn), you may reroll any dice. If you do (decide before your first roll), your needs are few, but your isolation sets you apart from others. A strong hit counts as a weak hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"] + } + ] + }, + { + "_id": "classic/assets/path/outcast/abilities/2", + "enabled": false, + "text": "When you [Reach Your Destination](id:classic/moves/adventure/reach_your_destination) and score a strong hit, you recall or recognize something helpful about this place. Envision what it is, and take +2 momentum.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/adventure/reach_your_destination"] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "pretender": { + "_id": "classic/assets/path/pretender", + "type": "asset", + "name": "Pretender", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/pretender/abilities/0", + "enabled": true, + "text": "When you establish a false identity, roll +shadow. On a strong hit, you may add +2 when you make moves using this identity to deceive or influence others. If you roll a 1 on your action die when using your false identity, someone doubts you. Make appropriate moves to reassure them or prevent them from revealing the truth. On a weak hit, as above, but add +1 (instead of +2).", + "moves": { + "establish_false_identity": { + "_id": "classic/assets/path/pretender/abilities/0/moves/establish_false_identity", + "type": "move", + "name": "Establish False Identity", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ] + } + ], + "text": "When you establish a false identity..." + }, + "text": "When you establish a false identity, roll +shadow. On a strong hit, you may add +2 when you make moves using this identity to deceive or influence others. If you roll a 1 on your action die when using your false identity, someone doubts you. Make appropriate moves to reassure them or prevent them from revealing the truth. On a weak hit, as above, but add +1 (instead of +2).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you may add +2 when you make moves using this identity to deceive or influence others. If you roll a 1 on your action die when using your false identity, someone doubts you. Make appropriate moves to reassure them or prevent them from revealing the truth." + }, + "weak_hit": { + "text": "On a __weak hit__, you may add +1 when you make moves using this identity to deceive or influence others. If you roll a 1 on your action die when using your false identity, someone doubts you. Make appropriate moves to reassure them or prevent them from revealing the truth." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/path/pretender/abilities/1", + "enabled": false, + "text": "As above, and you may roll +shadow (instead of +heart) when you [Sojourn](id:classic/moves/relationship/sojourn) under your false identity. If you do, take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Under your false identity" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/path/pretender/abilities/0/moves/establish_false_identity" + ] + } + ] + }, + { + "_id": "classic/assets/path/pretender/abilities/2", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by revealing your true identity in a dramatic moment, reroll any dice.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by revealing your true identity in a dramatic moment" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "revenant": { + "_id": "classic/assets/path/revenant", + "type": "asset", + "name": "Revenant", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "Once you [Face Death](id:classic/moves/suffer/face_death) and return to the world of the living...", + "abilities": [ + { + "_id": "classic/assets/path/revenant/abilities/0", + "enabled": true, + "text": "When you are at 0 health, and [Endure Harm](id:classic/moves/suffer/endure_harm) or [Face Death](id:classic/moves/suffer/face_death), add +1. If you then burn momentum to improve your result, envision what bond or vow binds you to this world, and take +2 momentum after you reset.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/suffer/endure_harm", + "classic/moves/suffer/face_death" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "when you are at 0 health" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/revenant/abilities/1", + "enabled": false, + "text": "When you make a move to investigate, oppose, or interact with a horror, spirit, or other undead being, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": null, + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to investigate, oppose, or interact with a horror, spirit, or other undead being" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/revenant/abilities/2", + "enabled": false, + "text": "When you bring death to your foe to [End the Fight](id:classic/moves/combat/end_the_fight), you may burn momentum to cancel one (not both) of the challenge dice if your momentum is greater than the value of that die. If you do, [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/combat/end_the_fight"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you bring death to your foe to [End the Fight](id:classic/moves/combat/end_the_fight)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "rider": { + "_id": "classic/assets/path/rider", + "type": "asset", + "name": "Rider", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "If you are with your horse companion...", + "abilities": [ + { + "_id": "classic/assets/path/rider/abilities/0", + "enabled": true, + "text": "When you [Heal](id:classic/moves/adventure/heal) your horse, or when you [Face Danger](id:classic/moves/adventure/face_danger) to calm or encourage it, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/heal"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "your horse" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to calm or encourage your horse" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/rider/abilities/1", + "enabled": false, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey), you may push your horse harder and add +1 (after rolling). If you do, make the [Companion Endure Harm](id:classic/moves/suffer/companion_endure_harm) move (1 harm).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"] + } + ] + }, + { + "_id": "classic/assets/path/rider/abilities/2", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) +wits by sizing up a perilous situation from the saddle, you are one with your horse’s instincts. Add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "by sizing up a perilous situation from the saddle" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "ritualist": { + "_id": "classic/assets/path/ritualist", + "type": "asset", + "name": "Ritualist", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "Once you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) (formidable or greater) in service to an elder mystic, and [Forge a Bond](id:classic/moves/relationship/forge_a_bond) to train with them...", + "abilities": [ + { + "_id": "classic/assets/path/ritualist/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) to ready yourself for a ritual, envision how you prepare. Then, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to ready yourself for a ritual" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/ritualist/abilities/1", + "enabled": false, + "text": "When you perform a ritual, you may suffer -1 supply and add +1 (decide before rolling).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["*/assets/ritual/*/abilities/*/moves/*"] + } + ] + }, + { + "_id": "classic/assets/path/ritualist/abilities/2", + "enabled": false, + "text": "When you tattoo the essence of a new ritual onto your skin, envision the mark you create. You may then purchase and upgrade that ritual asset for 1 fewer experience." + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "shadow_kin": { + "_id": "classic/assets/path/shadow_kin", + "type": "asset", + "name": "Shadow-Kin", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "Once you become corrupted...", + "abilities": [ + { + "_id": "classic/assets/path/shadow_kin/abilities/0", + "enabled": false, + "text": "You harden your heart: Reduce your heart stat by 1 and add up to +2 to shadow (to a maximum of +4)." + }, + { + "_id": "classic/assets/path/shadow_kin/abilities/1", + "enabled": false, + "text": "You are attuned to the realms of shadow: When you perform a ritual, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["*/assets/ritual/*/abilities/*/moves/*"] + } + ] + }, + { + "_id": "classic/assets/path/shadow_kin/abilities/2", + "enabled": false, + "text": "You know the sly ways of death: When you [Face Death](id:classic/moves/suffer/face_death), you may roll +shadow (instead of +heart). On a weak hit, if you choose to undertake a deathbound quest, you may roll +shadow (instead of +heart) and reroll any dice as you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow). When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) on that quest and and mark experience, take +2 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_death"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ] + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 8, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "sighted": { + "_id": "classic/assets/path/sighted", + "type": "asset", + "name": "Sighted", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/sighted/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) or [Gather Information](id:classic/moves/adventure/gather_information) to identify or detect mystic forces, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to identify or detect mystic forces" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/sighted/abilities/1", + "enabled": false, + "text": "When you [Compel](id:classic/moves/relationship/compel), [Forge a Bond](id:classic/moves/relationship/forge_a_bond), or [Test Your Bond](id:classic/moves/relationship/test_your_bond) with a fellow mystic or mystical being, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/relationship/compel", + "classic/moves/relationship/forge_a_bond", + "classic/moves/relationship/test_your_bond" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "with a fellow mystic or mystical being" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/sighted/abilities/2", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by studying someone or something in a charged situation, add +1 and take +1 momentum on a hit. When you also pierce the veil to explore deeper truths (decide before rolling), you may reroll any dice. If you do, count a weak hit as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by studying someone or something in a charged situation" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "slayer": { + "_id": "classic/assets/path/slayer", + "type": "asset", + "name": "Slayer", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/slayer/abilities/0", + "enabled": true, + "text": "When you [Gather Information](id:classic/moves/adventure/gather_information) by tracking a beast or horror, or when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by readying yourself for a fight against them, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/gather_information"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by tracking a beast or horror" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by readying yourself for a fight against a beast or horror" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/slayer/abilities/1", + "enabled": false, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to slay a beast or horror, you may reroll any dice. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and mark experience, take +1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to slay a beast or horror" + } + ] + } + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to slay a beast or horror" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/slayer/abilities/2", + "enabled": false, + "text": "When you slay a beast or horror (at least formidable), you may take a trophy and choose one.\n\n * Power a ritual: When you or an ally make a ritual move, reroll any dice (one time only).\n * Prove your worth: When you [Sojourn](id:classic/moves/relationship/sojourn), reroll any dice (one time only).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["*/assets/ritual/*/abilities/*/moves/*"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "use a trophy to power a ritual (one time only)" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationships/sojourn"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "use a trophy to prove your worth (one time only)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "spirit_bound": { + "_id": "classic/assets/path/spirit_bound", + "type": "asset", + "name": "Spirit-Bound", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/spirit_bound/abilities/0", + "enabled": true, + "text": "You are haunted by someone whose death you caused through your actions or failures. When you consult with their spirit to [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Gather Information](id:classic/moves/adventure/gather_information), add +1 and take +2 momentum on a hit. On a weak hit, also [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you consult with the spirit that haunts you" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/spirit_bound/abilities/1", + "enabled": false, + "text": "When you [Face Death](id:classic/moves/suffer/face_death) guided by the spirit, add +1. On a strong hit, envision what you learn and take 1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_death"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "guided by the spirit that haunts you" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/spirit_bound/abilities/2", + "enabled": false, + "text": "One time only, when you successfully [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) (formidable or greater) in service to the spirit, choose one.\n\n * Let them go: Take 2 experience for each marked ability and discard this asset.\n * Deepen your connection: Add +1 more when you leverage this asset.", + "enhance_moves": [ + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/suffer/face_death"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in service to the spirit that haunts you (one time only)" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "storyweaver": { + "_id": "classic/assets/path/storyweaver", + "type": "asset", + "name": "Storyweaver", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/storyweaver/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), [Compel](id:classic/moves/relationship/compel), or [Forge a Bond](id:classic/moves/relationship/forge_a_bond) by sharing an inspiring or enlightening song, poem, or tale, envision the story you tell. Then, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/relationship/compel", + "classic/moves/relationship/forge_a_bond" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by sharing an inspiring or enlightening song, poem, or tale" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/storyweaver/abilities/1", + "enabled": false, + "text": "When you [Make Camp](id:classic/moves/adventure/make_camp) and choose the option to relax, you may share a story with your allies or compose a new story if alone. If you do, envision the story you tell and take +1 spirit or +1 momentum. Any allies who choose to relax in your company may also take +1 spirit or +1 momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/make_camp"] + } + ] + }, + { + "_id": "classic/assets/path/storyweaver/abilities/2", + "enabled": false, + "text": "When you [Sojourn](id:classic/moves/relationship/sojourn) within a community with which you share a bond, add +2 (instead of +1).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "within a community with which you share a bond" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "trickster": { + "_id": "classic/assets/path/trickster", + "type": "asset", + "name": "Trickster", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/trickster/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger), [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), or [Compel](id:classic/moves/relationship/compel) by lying, bluffing, stealing, or cheating, add +1." + }, + { + "_id": "classic/assets/path/trickster/abilities/1", + "enabled": false, + "text": "When you [Gather Information](id:classic/moves/adventure/gather_information) by investigating a devious scheme, you may roll +shadow (instead of +wits). If you do, take +2 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/gather_information"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "By investigating a devious scheme" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/trickster/abilities/2", + "enabled": false, + "text": "When you [Forge a Bond](id:classic/moves/relationship/forge_a_bond) for a relationship founded on a lie, choose one.\n\n * Keep your secret: Roll +shadow (instead of +heart).\n * Reveal the truth: Roll +heart. On a strong hit, mark a bond twice and take 1 experience. A weak hit counts as a miss.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/forge_a_bond"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Keep your secret" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "Reveal the truth" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "veteran": { + "_id": "classic/assets/path/veteran", + "type": "asset", + "name": "Veteran", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/veteran/abilities/0", + "enabled": true, + "text": "When you burn momentum to improve your result in combat, envision how your hard-won fighting experience gives you the upper hand. Then, take +1 momentum after you reset, and add +1 when you make your next move. Once per fight, you also take initiative when burning momentum to improve a miss to a weak hit." + }, + { + "_id": "classic/assets/path/veteran/abilities/1", + "enabled": false, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to someone who fought beside you, or [Forge a Bond](id:classic/moves/relationship/forge_a_bond) with them, add +2 and take +2 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to someone who fought beside you" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/forge_a_bond"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "with someone who fought beside you" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/veteran/abilities/2", + "enabled": false, + "text": "When you [Resupply](id:classic/moves/adventure/resupply) by looting the dead on a field of battle, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/resupply"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by looting the dead on a field of battle" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "waterborn": { + "_id": "classic/assets/path/waterborn", + "type": "asset", + "name": "Waterborn", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/waterborn/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger), [Gather Information](id:classic/moves/adventure/gather_information), or [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) related to your knowledge of watercraft, water travel, or aquatic environments or creatures, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/gather_information", + "classic/moves/adventure/secure_an_advantage" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "related to your knowledge of watercraft, water travel, or aquatic environments or creatures" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/waterborn/abilities/1", + "enabled": false, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) by boat or ship, add +1. On a strong hit, also choose one.\n\n * The wind is at your back: Mark progress twice.\n * Find safe anchor: [Make Camp](id:classic/moves/adventure/make_camp) now and reroll any dice.\n * Reap the bounty: [Resupply](id:classic/moves/adventure/resupply) now and reroll any dice.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by boat or ship" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/waterborn/abilities/2", + "enabled": false, + "text": "When you [Enter the Fray](id:classic/moves/combat/enter_the_fray) aboard a boat or ship, reroll any dice.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/combat/enter_the_fray"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "aboard a boat or ship" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "wayfinder": { + "_id": "classic/assets/path/wayfinder", + "type": "asset", + "name": "Wayfinder", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/wayfinder/abilities/0", + "enabled": true, + "text": "When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey), take +1 momentum on a strong hit. If you burn momentum to improve your result, also take +1 momentum after you reset.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"] + } + ] + }, + { + "_id": "classic/assets/path/wayfinder/abilities/1", + "enabled": false, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Gather Information](id:classic/moves/adventure/gather_information) by carefully surveying the landscape or scouting ahead, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by carefully surveying the landscape or scouting ahead" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/wayfinder/abilities/2", + "enabled": false, + "text": "When you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to safely guide someone on a perilous journey, you may reroll any dice. When you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) and mark experience, take +1 experience.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/quest/swear_an_iron_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to safely guide someone on a perilous journey" + } + ] + } + }, + { + "roll_type": "progress_roll", + "enhances": ["classic/moves/quest/fulfill_your_vow"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to safely guide someone on a perilous journey" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "weaponmaster": { + "_id": "classic/assets/path/weaponmaster", + "type": "asset", + "name": "Weaponmaster", + "category": "Path", + "count_as_impact": false, + "shared": false, + "requirement": "Once you [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) (formidable or greater) in service to a seasoned warrior, and [Forge a Bond](id:classic/moves/relationship/forge_a_bond) to train with them...", + "abilities": [ + { + "_id": "classic/assets/path/weaponmaster/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by sizing up your foe in a fight, or in a charged situation which may lead to a fight, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by sizing up your foe in a fight, or in a charged situation which may lead to a fight" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/weaponmaster/abilities/1", + "enabled": false, + "text": "When you study or train in a new weapon or technique, you may obtain and upgrade that combat talent for 1 fewer experience.", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/quest/advance"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you study or train in a new weapon or technique" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/weaponmaster/abilities/2", + "enabled": false, + "text": "When you [Turn the Tide](id:classic/moves/combat/turn_the_tide) with a sudden change of weapon or technique, and your next move is a [Strike](id:classic/moves/combat/strike), add +1 and inflict +2 harm on a strong hit.", + "enhance_moves": [ + { + "roll_type": "no_roll", + "enhances": ["classic/moves/combat/turn_the_tide"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "with a sudden change of weapon or technique" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 10, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "wildblood": { + "_id": "classic/assets/path/wildblood", + "type": "asset", + "name": "Wildblood", + "category": "Path", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/wildblood/abilities/0", + "enabled": true, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger), [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage), or [Gather Information](id:classic/moves/adventure/gather_information) using your knowledge of tracking, woodcraft, or woodland creatures, add +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/gather_information" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "using your knowledge of tracking, woodcraft, or woodland creatures" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/wildblood/abilities/1", + "enabled": false, + "text": "When you [Face Danger](id:classic/moves/adventure/face_danger) or [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by hiding or sneaking in the woodlands, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/face_danger", + "classic/moves/adventure/secure_an_advantage" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by hiding or sneaking in the woodlands" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/wildblood/abilities/2", + "enabled": false, + "text": "When you [Make Camp](id:classic/moves/adventure/make_camp) in the woodlands, you may roll +wits (instead of +supply). If you do, you and your allies each choose 1 more option on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/make_camp"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "In the woodlands" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "wright": { + "_id": "classic/assets/path/wright", + "type": "asset", + "name": "Wright", + "category": "Path", + "options": { + "specialty": { + "label": "specialty", + "field_type": "text", + "value": null + } + }, + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/path/wright/abilities/0", + "enabled": true, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) by crafting a useful item using your specialty, or when you [Face Danger](id:classic/moves/adventure/face_danger) to create or repair an item in a perilous situation, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by crafting a useful item using your specialty" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to create or repair an item in a perilous situation" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/wright/abilities/1", + "enabled": false, + "text": "As above, and you may suffer -1 supply (after rolling) to add an additional +1.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/secure_an_advantage"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "by crafting a useful item using your specialty" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/face_danger"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "to create or repair an item in a perilous situation" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/path/wright/abilities/2", + "enabled": false, + "text": "When you give the item you create as a gift to commemorate an important event or relationship, you may (one time only) reroll any dice when you [Compel](id:classic/moves/relationship/compel), [Forge a Bond](id:classic/moves/relationship/forge_a_bond), or [Test Your Bond](id:classic/moves/relationship/test_your_bond).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/relationship/compel", + "classic/moves/relationship/forge_a_bond", + "classic/moves/relationship/test_your_bond" + ], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "When you give the item you create as a gift to commemorate an important event or relationship" + } + ] + } + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 12, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 40, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "ritual": { + "_id": "classic/collections/assets/ritual", + "type": "asset_collection", + "name": "Ritual Assets", + "description": "Magic in *Ironsworn* is cast through rituals which help support your actions or act as unique moves. Like all assets, rituals can be selected as you gain experience and can be upgraded over time to make them more flexible or powerful.\n\nAll rituals utilize a move as their default marked ability. You must make this move and the associated action roll to trigger the effect. Any secondary abilities you gain by upgrading the asset are dependent on performing the ritual described as the default ability.", + "contents": { + "augur": { + "_id": "classic/assets/ritual/augur", + "type": "asset", + "name": "Augur", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/augur/abilities/0", + "enabled": true, + "text": "When you summon a flock of crows and ask a single question, roll +wits. On a strong hit, you interpret their calls as a helpful omen. Envision the response ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and take +2 momentum. On a weak hit, the crows ignore your question and offer a clue to an unrelated problem or opportunity in this area. Envision what you learn ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum.", + "moves": { + "augur": { + "_id": "classic/assets/ritual/augur/abilities/0/moves/augur", + "type": "move", + "name": "Augur", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you summon a flock of crows and ask a single question..." + }, + "text": "When you summon a flock of crows and ask a single question, roll +wits. On a strong hit, you interpret their calls as a helpful omen. Envision the response ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and take +2 momentum. On a weak hit, the crows ignore your question and offer a clue to an unrelated problem or opportunity in this area. Envision what you learn ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you interpret their calls as a helpful omen. Envision the response ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, the crows ignore your question and offer a clue to an unrelated problem or opportunity in this area. Envision what you learn ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/augur/abilities/1", + "enabled": false, + "text": "As above, and the crows will also help guide you on the proper path. On a hit, add +1 on the next segment when you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/augur/abilities/0/moves/augur" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/augur/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/augur/abilities/0/moves/augur" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "awakening": { + "_id": "classic/assets/ritual/awakening", + "type": "asset", + "name": "Awakening", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/awakening/abilities/0", + "enabled": true, + "text": "When you create a simulacrum, roll +heart. On a strong hit, your creation is given unnatural life. If it aids you as you make a move to assault or overcome an obstacle through strength, add +2. It has 3 health and suffers harm as appropriate, but is not a companion and may not be healed. At 0 health, it is dead. On a weak hit, as above, but if you roll a 1 on your action die when aided by your creation, you must [Face Danger](id:classic/moves/adventure/face_danger) +heart to keep it from turning on you (as a formidable foe).", + "moves": { + "awaken_simulacrum": { + "_id": "classic/assets/ritual/awakening/abilities/0/moves/awaken_simulacrum", + "type": "move", + "name": "Awaken Simulacrum", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you create a simulacrum..." + }, + "text": "When you create a simulacrum, roll +heart. On a strong hit, your creation is given unnatural life. If it aids you as you make a move to assault or overcome an obstacle through strength, add +2. It has 3 health and suffers harm as appropriate, but is not a companion and may not be healed. At 0 health, it is dead. On a weak hit, as above, but if you roll a 1 on your action die when aided by your creation, you must [Face Danger](id:classic/moves/adventure/face_danger) +heart to keep it from turning on you (as a formidable foe).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, your creation is given unnatural life. If it aids you as you make a move to assault or overcome an obstacle through strength, add +2. It has 3 health and suffers harm as appropriate, but is not a companion and may not be healed. At 0 health, it is dead." + }, + "weak_hit": { + "text": "On a __weak hit__, your creation is given unnatural life. If it aids you as you make a move to assault or overcome an obstacle through strength, add +2. It has 3 health and suffers harm as appropriate, but is not a companion and may not be healed. At 0 health, it is dead.\n\nHowever, if you roll a 1 on your action die when aided by your creation, you must [Face Danger](id:classic/moves/adventure/face_danger) +heart to keep it from turning on you (as a formidable foe)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/awakening/abilities/1", + "enabled": false, + "text": "Your simulacrum has 6 health.", + "enhance_asset": { + "controls": { + "health": { + "field_type": "condition_meter", + "max": 6 + } + } + } + }, + { + "_id": "classic/assets/ritual/awakening/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/awakening/abilities/0/moves/awaken_simulacrum" + ] + } + ] + } + ], + "controls": { + "health": { + "label": "health", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 3, + "value": 3 + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 14, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "bind": { + "_id": "classic/assets/ritual/bind", + "type": "asset", + "name": "Bind", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/bind/abilities/0", + "enabled": true, + "text": "When you wear an animal pelt and dance in moonlight, roll +wits. On a strong hit, you or an ally may wear the pelt and add +1 when making moves with the related stat (wolf-edge; bear-iron; deer-heart; fox-shadow; boar-wits). If the wearer rolls a 1 on their action die while making a move using the pelt, the magic is spent. On a weak hit, as above, but the wilds call as you dance; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "moves": { + "bind": { + "_id": "classic/assets/ritual/bind/abilities/0/moves/bind", + "type": "move", + "name": "Bind", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you wear an animal pelt and dance in moonlight..." + }, + "text": "When you wear an animal pelt and dance in moonlight, roll +wits. On a strong hit, you or an ally may wear the pelt and add +1 when making moves with the related stat (wolf-edge; bear-iron; deer-heart; fox-shadow; boar-wits). If the wearer rolls a 1 on their action die while making a move using the pelt, the magic is spent. On a weak hit, as above, but the wilds call as you dance; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you or an ally may wear the pelt and add +1 when making moves with the related stat (wolf-edge; bear-iron; deer-heart; fox-shadow; boar-wits). If the wearer rolls a 1 on their action die while making a move using the pelt, the magic is spent." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the wilds call as you dance; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n\nYou or an ally may wear the pelt and add +1 when making moves with the related stat (wolf-edge; bear-iron; deer-heart; fox-shadow; boar-wits). If the wearer rolls a 1 on their action die while making a move using the pelt, the magic is spent." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/bind/abilities/1", + "enabled": false, + "text": "As above, and you may instead perform this ritual wearing the pelt of a beast. If you do, name the related stat and add +2 (instead of +1).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/bind/abilities/0/moves/bind" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/bind/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/bind/abilities/0/moves/bind" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "communion": { + "_id": "classic/assets/ritual/communion", + "type": "asset", + "name": "Communion", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/communion/abilities/0", + "enabled": true, + "text": "When you surround the remains of a recently deceased intelligent creature with lit candles, and summon its spirit, roll +heart. Add +1 if you share a bond. On a strong hit, the spirit appears and you may converse for a few minutes. Make moves as appropriate (add +1). On a weak hit, as above, but the spirit also delivers troubling news unrelated to your purpose. Envision what it tells you ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "moves": { + "commune": { + "_id": "classic/assets/ritual/communion/abilities/0/moves/commune", + "type": "move", + "name": "Commune", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you surround the remains of a recently deceased intelligent creature with lit candles, and summon its spirit..." + }, + "text": "When you surround the remains of a recently deceased intelligent creature with lit candles, and summon its spirit, roll +heart. Add +1 if you share a bond. On a strong hit, the spirit appears and you may converse for a few minutes. Make moves as appropriate (add +1). On a weak hit, as above, but the spirit also delivers troubling news unrelated to your purpose. Envision what it tells you ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, the spirit appears and you may converse for a few minutes. Make moves as appropriate (add +1)." + }, + "weak_hit": { + "text": "On a __weak hit__, the spirit appears and you may converse for a few minutes. Make moves as appropriate (add +1).\n\nHowever, the spirit also delivers troubling news unrelated to your purpose. Envision what it tells you ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) and [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/communion/abilities/1", + "enabled": false, + "text": "As above, and you may also commune with the long-dead.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/communion/abilities/0/moves/commune" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/communion/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/communion/abilities/0/moves/commune" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "divination": { + "_id": "classic/assets/ritual/divination", + "type": "asset", + "name": "Divination", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/divination/abilities/0", + "enabled": true, + "text": "When you take a drop of blood from a willing subject (not yourself) and cast the rune-carved stones, roll +heart. On a strong hit, you may read the runes to gain insight about the subject and people close to them, including information you and the subject have no knowledge of. If you use the reading to [Gather Information](id:classic/moves/adventure/gather_information), [Compel](id:classic/moves/relationship/compel), or [Forge a Bond](id:classic/moves/relationship/forge_a_bond), add +1. On a weak hit, as above, but the runes reveal their secrets only with extra time and focus; suffer -2 momentum.", + "moves": { + "cast_runes": { + "_id": "classic/assets/ritual/divination/abilities/0/moves/cast_runes", + "type": "move", + "name": "Cast Runes", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you take a drop of blood from a willing subject (not yourself) and cast the rune-carved stones..." + }, + "text": "When you take a drop of blood from a willing subject (not yourself) and cast the rune-carved stones, roll +heart. On a strong hit, you may read the runes to gain insight about the subject and people close to them, including information you and the subject have no knowledge of. If you use the reading to [Gather Information](id:classic/moves/adventure/gather_information), [Compel](id:classic/moves/relationship/compel), or [Forge a Bond](id:classic/moves/relationship/forge_a_bond), add +1. On a weak hit, as above, but the runes reveal their secrets only with extra time and focus; suffer -2 momentum.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you may read the runes to gain insight about the subject and people close to them, including information you and the subject have no knowledge of.\n\nIf you use the reading to [Gather Information](id:classic/moves/adventure/gather_information), [Compel](id:classic/moves/relationship/compel), or [Forge a Bond](id:classic/moves/relationship/forge_a_bond), add +1." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the runes reveal their secrets only with extra time and focus; suffer -2 momentum.\n\nYou may read the runes to gain insight about the subject and people close to them, including information you and the subject have no knowledge of.\n\nIf you use the reading to [Gather Information](id:classic/moves/adventure/gather_information), [Compel](id:classic/moves/relationship/compel), or [Forge a Bond](id:classic/moves/relationship/forge_a_bond), add +1." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/divination/abilities/1", + "enabled": false, + "text": "As above, and your divination can also reveal information about the subject’s future.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/divination/abilities/0/moves/cast_runes" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/divination/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/divination/abilities/0/moves/cast_runes" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "invoke": { + "_id": "classic/assets/ritual/invoke", + "type": "asset", + "name": "Invoke", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/invoke/abilities/0", + "enabled": true, + "text": "When you consume the mystical essence of your surroundings, roll +wits. On a strong hit, add the value of your action die to your essence track (max 6). You may then [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) +essence to create minor mystical effects or illusions. If you do, suffer -1 essence and take +1 momentum on a hit. On a weak hit, as above, but capturing these energies is harrowing; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/adventure/secure_an_advantage", + "classic/moves/adventure/face_danger" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "essence", + "assets": null + } + ], + "text": "to create minor mystical effects or illusions" + } + ] + } + } + ], + "moves": { + "invoke": { + "_id": "classic/assets/ritual/invoke/abilities/0/moves/invoke", + "type": "move", + "name": "Invoke", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you consume the mystical essence of your surroundings..." + }, + "text": "When you consume the mystical essence of your surroundings, roll +wits. On a strong hit, add the value of your action die to your essence track (max 6). You may then [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) +essence to create minor mystical effects or illusions. If you do, suffer -1 essence and take +1 momentum on a hit. On a weak hit, as above, but capturing these energies is harrowing; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, add the value of your action die to your essence track (max 6).\n\nYou may then [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) +essence to create minor mystical effects or illusions. If you do, suffer -1 essence and take +1 momentum on a hit." + }, + "weak_hit": { + "text": "On a __weak hit__, add the value of your action die to your essence track (max 6). However, capturing these energies is harrowing; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n\nYou may then [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Face Danger](id:classic/moves/adventure/face_danger) +essence to create minor mystical effects or illusions. If you do, suffer -1 essence and take +1 momentum on a hit." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/invoke/abilities/1", + "enabled": false, + "text": "You may [Compel](id:classic/moves/relationship/compel) +essence (and suffer -1 essence) through a show of power.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/compel"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "essence", + "assets": null + } + ], + "text": "through a show of power" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/ritual/invoke/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 essence on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/invoke/abilities/0/moves/invoke" + ] + } + ] + } + ], + "controls": { + "essence": { + "label": "essence", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 6, + "value": 0 + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "keen": { + "_id": "classic/assets/ritual/keen", + "type": "asset", + "name": "Keen", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/keen/abilities/0", + "enabled": true, + "text": "When you hold a weapon and sing a keen for those it has killed, roll +heart. On a strong hit, the wielder inflicts +1 harm when they [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). If they roll a 1 on their action die when making a move to inflict harm, the magic is spent. On a weak hit, as above, but the voices of those who were slain join in your song; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "moves": { + "keen": { + "_id": "classic/assets/ritual/keen/abilities/0/moves/keen", + "type": "move", + "name": "Keen", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you hold a weapon and sing a keen for those it has killed..." + }, + "text": "When you hold a weapon and sing a keen for those it has killed, roll +heart. On a strong hit, the wielder inflicts +1 harm when they [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). If they roll a 1 on their action die when making a move to inflict harm, the magic is spent. On a weak hit, as above, but the voices of those who were slain join in your song; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, the wielder inflicts +1 harm when they [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). If they roll a 1 on their action die when making a move to inflict harm, the magic is spent." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the voices of those who were slain join in your song; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n\nThe wielder inflicts +1 harm when they [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash). If they roll a 1 on their action die when making a move to inflict harm, the magic is spent." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/keen/abilities/1", + "enabled": false, + "text": "As above, and the wielder may also (one time only) add +1 and take +2 momentum on a hit when they [Draw the Circle](id:classic/moves/relationship/draw_the_circle), [Enter the Fray](id:classic/moves/combat/enter_the_fray), or [Battle](id:classic/moves/combat/battle).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/keen/abilities/0/moves/keen" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/keen/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/keen/abilities/0/moves/keen" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "leech": { + "_id": "classic/assets/ritual/leech", + "type": "asset", + "name": "Leech", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/leech/abilities/0", + "enabled": true, + "text": "When you mark your hands or weapon with an intricate blood rune, roll +iron. On a strong hit, the rune thirsts for fresh blood. One time only, when you make a move to inflict harm, reroll any dice and inflict +2 harm on a hit. Then, for each point of harm inflicted, take +1 and allocate it as +health or +momentum. On a weak hit, as above, but this asset counts as a debility until the rune’s thirst is quenched.", + "moves": { + "draw_blood_rune": { + "_id": "classic/assets/ritual/leech/abilities/0/moves/draw_blood_rune", + "type": "move", + "name": "Draw Blood Rune", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ] + } + ], + "text": "When you mark your hands or weapon with an intricate blood rune..." + }, + "text": "When you mark your hands or weapon with an intricate blood rune, roll +iron. On a strong hit, the rune thirsts for fresh blood. One time only, when you make a move to inflict harm, reroll any dice and inflict +2 harm on a hit. Then, for each point of harm inflicted, take +1 and allocate it as +health or +momentum. On a weak hit, as above, but this asset counts as a debility until the rune’s thirst is quenched.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, the rune thirsts for fresh blood.\n\nOne time only, when you make a move to inflict harm, reroll any dice and inflict +2 harm on a hit. Then, for each point of harm inflicted, take +1 and allocate it as +health or +momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, the rune thirsts for fresh blood, but this asset counts as a debility until the rune’s thirst is quenched.\n\nOne time only, when you make a move to inflict harm, reroll any dice and inflict +2 harm on a hit. Then, for each point of harm inflicted, take +1 and allocate it as +health or +momentum." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/leech/abilities/1", + "enabled": false, + "text": "As above, and you may also touch an ally or companion and let them take any remaining points as +health or +momentum.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/leech/abilities/0/moves/draw_blood_rune" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/leech/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/leech/abilities/0/moves/draw_blood_rune" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "lightbearer": { + "_id": "classic/assets/ritual/lightbearer", + "type": "asset", + "name": "Lightbearer", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/lightbearer/abilities/0", + "enabled": true, + "text": "When you focus on a source of light and capture its essence, roll +wits. On a strong hit, set your light track to +6. On a weak hit, make it +3. Then, when you make a move to overcome or navigate darkness, you may add +2 and suffer -1 light.", + "moves": { + "capture_light": { + "_id": "classic/assets/ritual/lightbearer/abilities/0/moves/capture_light", + "type": "move", + "name": "Capture Light", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you focus on a source of light and capture its essence..." + }, + "text": "When you focus on a source of light and capture its essence, roll +wits. On a strong hit, set your light track to +6. On a weak hit, make it +3. Then, when you make a move to overcome or navigate darkness, you may add +2 and suffer -1 light.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, set your light track to +6.\n\nWhen you make a move to overcome or navigate darkness, you may add +2 and suffer -1 light." + }, + "weak_hit": { + "text": "On a __weak hit__, set your light track to +3.\n\nWhen you make a move to overcome or navigate darkness, you may add +2 and suffer -1 light." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/lightbearer/abilities/1", + "enabled": false, + "text": "You may use your light to [Strike](id:classic/moves/combat/strike) or [Clash](id:classic/moves/combat/clash) against a dark-dwelling foe. Choose the amount of light to unleash, and roll +light (instead of +iron or +edge). Suffer -light equal to that amount. On a hit, your harm is 1+your unleashed light.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/moves/combat/strike", + "classic/moves/combat/clash" + ], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "asset_control", + "control": "light", + "assets": null + } + ], + "text": "when you unleash light against a dark-dwelling foe" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/ritual/lightbearer/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/lightbearer/abilities/0/moves/capture_light" + ] + } + ] + } + ], + "controls": { + "light": { + "label": "light", + "field_type": "condition_meter", + "rollable": true, + "min": 0, + "max": 6, + "value": 0, + "moves": { + "recover": [ + "classic/assets/ritual/lightbearer/abilities/0/moves/capture_light" + ] + } + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "scry": { + "_id": "classic/assets/ritual/scry", + "type": "asset", + "name": "Scry", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/scry/abilities/0", + "enabled": true, + "text": "When you look into flames to study a remote person or location, roll +shadow. You or someone with you must have knowledge of the target. On a strong hit, you may [Gather Information](id:classic/moves/adventure/gather_information) through observation using +shadow or +wits. On a weak hit, as above, but the flames are hungry; choose one to sacrifice.\n\n * Your blood: [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).\n * Something precious: [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n * Provisions: Suffer -2 supply.", + "moves": { + "scry": { + "_id": "classic/assets/ritual/scry/abilities/0/moves/scry", + "type": "move", + "name": "Scry", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ] + } + ], + "text": "When you look into flames to study a remote person or location (you or someone with you must have knowledge of the target)..." + }, + "text": "When you look into flames to study a remote person or location, roll +shadow. You or someone with you must have knowledge of the target. On a strong hit, you may [Gather Information](id:classic/moves/adventure/gather_information) through observation using +shadow or +wits. On a weak hit, as above, but the flames are hungry; choose one to sacrifice.\n\n * Your blood: [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).\n * Something precious: [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n * Provisions: Suffer -2 supply.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you may [Gather Information](id:classic/moves/adventure/gather_information) through observation using +shadow or +wits." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the flames are hungry; choose one to sacrifice.\n\n * Your blood: [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).\n * Something precious: [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n * Provisions: Suffer -2 supply.\n\nYou may [Gather Information](id:classic/moves/adventure/gather_information) through observation using +shadow or +wits." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/scry/abilities/1", + "enabled": false, + "text": "As above, and you may instead study a past event.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/scry/abilities/0/moves/scry" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/scry/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/scry/abilities/0/moves/scry" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "shadow_walk": { + "_id": "classic/assets/ritual/shadow_walk", + "type": "asset", + "name": "Shadow-Walk", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/shadow_walk/abilities/0", + "enabled": true, + "text": "When you cloak yourself with the gossamer veil of the shadow realms, roll +shadow. On a strong hit, take +1 momentum. Then, reroll any dice (one time only) when you make a move by ambushing, hiding, or sneaking. On a weak hit, as above, but the shadows try to lead you astray. You must first [Face Danger](id:classic/moves/adventure/face_danger) to find your way.", + "moves": { + "shadow_walk": { + "_id": "classic/assets/ritual/shadow_walk/abilities/0/moves/shadow_walk", + "type": "move", + "name": "Shadow-Walk", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ] + } + ], + "text": "When you cloak yourself with the gossamer veil of the shadow realms..." + }, + "text": "When you cloak yourself with the gossamer veil of the shadow realms, roll +shadow. On a strong hit, take +1 momentum. Then, reroll any dice (one time only) when you make a move by ambushing, hiding, or sneaking. On a weak hit, as above, but the shadows try to lead you astray. You must first [Face Danger](id:classic/moves/adventure/face_danger) to find your way.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, take +1 momentum. Then, reroll any dice (one time only) when you make a move by ambushing, hiding, or sneaking." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the shadows try to lead you astray. You must first [Face Danger](id:classic/moves/adventure/face_danger) to find your way.\n\nTake +1 momentum. Then, reroll any dice (one time only) when you make a move by ambushing, hiding, or sneaking." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/shadow_walk/abilities/1", + "enabled": false, + "text": "As above, and you may also travel along the hidden paths of the shadow realms to [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) using +shadow (instead of +wits). If you do, [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress) and mark progress twice on a strong hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/shadow_walk/abilities/0/moves/shadow_walk" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/shadow_walk/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/shadow_walk/abilities/0/moves/shadow_walk" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 16, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "sway": { + "_id": "classic/assets/ritual/sway", + "type": "asset", + "name": "Sway", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/sway/abilities/0", + "enabled": true, + "text": "When you speak a person’s name three times to the wind, roll +wits. On a strong hit, the wind whispers of this person’s need. Envision what you hear ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you use this information or fulfill this need when you [Compel](id:classic/moves/relationship/compel) them, you may reroll any dice (one time only). On a weak hit, as above, but this person’s need creates a troubling dilemma or complication; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "moves": { + "sway": { + "_id": "classic/assets/ritual/sway/abilities/0/moves/sway", + "type": "move", + "name": "Sway", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you speak a person’s name three times to the wind..." + }, + "text": "When you speak a person’s name three times to the wind, roll +wits. On a strong hit, the wind whispers of this person’s need. Envision what you hear ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you use this information or fulfill this need when you [Compel](id:classic/moves/relationship/compel) them, you may reroll any dice (one time only). On a weak hit, as above, but this person’s need creates a troubling dilemma or complication; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, the wind whispers of this person’s need. Envision what you hear ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you use this information or fulfill this need when you [Compel](id:classic/moves/relationship/compel) them, you may reroll any dice (one time only)." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but this person’s need creates a troubling dilemma or complication; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).\n\nThe wind whispers of this person’s need. Envision what you hear ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you use this information or fulfill this need when you [Compel](id:classic/moves/relationship/compel) them, you may reroll any dice (one time only)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/sway/abilities/1", + "enabled": false, + "text": "As above, and if you score a strong hit when you [Compel](id:classic/moves/relationship/compel), you may also reroll any dice (one time only) when you [Gather Information](id:classic/moves/adventure/gather_information) from this person.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/shadow_walk/abilities/0/moves/shadow_walk" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/sway/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/sway/abilities/0/moves/sway" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "talisman": { + "_id": "classic/assets/ritual/talisman", + "type": "asset", + "name": "Talisman", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/talisman/abilities/0", + "enabled": true, + "text": "When you fashion a charm, envision it and name the specific person or creature it protects against. Then roll +wits. On a strong hit, when the wearer opposes the target through a move, add +2. If a 1 is rolled on the action die while making a move using the charm, the magic is spent. On a weak hit, as above, but the wearer adds +1 when making a move (instead of +2).", + "moves": { + "fashion_talisman": { + "_id": "classic/assets/ritual/talisman/abilities/0/moves/fashion_talisman", + "type": "move", + "name": "Fashion Talisman", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you fashion a charm that protects against a specific person or creature..." + }, + "text": "When you fashion a charm, envision it and name the specific person or creature it protects against. Then roll +wits. On a strong hit, when the wearer opposes the target through a move, add +2. If a 1 is rolled on the action die while making a move using the charm, the magic is spent. On a weak hit, as above, but the wearer adds +1 when making a move (instead of +2).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, when the wearer opposes the target through a move, add +2. If a 1 is rolled on the action die while making a move using the charm, the magic is spent." + }, + "weak_hit": { + "text": "On a __weak hit__, when the wearer opposes the target through a move, add +1. If a 1 is rolled on the action die while making a move using the charm, the magic is spent." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/talisman/abilities/1", + "enabled": false, + "text": "As above, and you may instead fashion a charm which aids the wearer against all supernatural threats, such as mystic rituals or horrors.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/talisman/abilities/0/moves/fashion_talisman" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/talisman/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/talisman/abilities/0/moves/fashion_talisman" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "tether": { + "_id": "classic/assets/ritual/tether", + "type": "asset", + "name": "Tether", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/tether/abilities/0", + "enabled": true, + "text": "When you commune with the spirits of a place, roll +heart. If you share a bond with someone there, add +1. On a strong hit, you are tethered. When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) to return, you may roll +spirit or +heart (instead of +wits), and take +1 momentum on a hit. When you [Reach Your Destination](id:classic/moves/adventure/reach_your_destination), take +2 momentum on a strong hit. The tether is lost if you perform this ritual elsewhere, or when you [Face Desolation](id:classic/moves/suffer/face_desolation). On a weak hit, as above, but the spirits reveal a disturbing aspect of the place; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/adventure/undertake_a_journey"], + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + }, + { + "using": "condition_meter", + "condition_meter": "spirit" + } + ], + "text": "to return to a tethered place" + } + ] + } + }, + { + "roll_type": "action_roll", + "enhances": ["classic/moves/suffer/face_desolation"] + } + ], + "moves": { + "tether": { + "_id": "classic/assets/ritual/tether/abilities/0/moves/tether", + "type": "move", + "name": "Tether", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you commune with the spirits of a place..." + }, + "text": "When you commune with the spirits of a place, roll +heart. If you share a bond with someone there, add +1. On a strong hit, you are tethered. When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) to return, you may roll +spirit or +heart (instead of +wits), and take +1 momentum on a hit. When you [Reach Your Destination](id:classic/moves/adventure/reach_your_destination), take +2 momentum on a strong hit. The tether is lost if you perform this ritual elsewhere, or when you [Face Desolation](id:classic/moves/suffer/face_desolation). On a weak hit, as above, but the spirits reveal a disturbing aspect of the place; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you are tethered. When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) to return, you may roll +spirit or +heart (instead of +wits), and take +1 momentum on a hit. When you [Reach Your Destination](id:classic/moves/adventure/reach_your_destination), take +2 momentum on a strong hit. The tether is lost if you perform this ritual elsewhere, or when you [Face Desolation](id:classic/moves/suffer/face_desolation)." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the spirits reveal a disturbing aspect of the place; [Endure Stress](id:classic/moves/suffer/endure_stress) (2 stress).\n\nYou are tethered. When you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey) to return, you may roll +spirit or +heart (instead of +wits), and take +1 momentum on a hit. When you [Reach Your Destination](id:classic/moves/adventure/reach_your_destination), take +2 momentum on a strong hit. The tether is lost if you perform this ritual elsewhere, or when you [Face Desolation](id:classic/moves/suffer/face_desolation)." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/tether/abilities/1", + "enabled": false, + "text": "As above, and you may also reroll any dice when you [Sojourn](id:classic/moves/relationship/sojourn) in the tethered place.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": ["classic/moves/relationship/sojourn"], + "trigger": { + "conditions": [ + { + "method": null, + "roll_options": null, + "text": "in a tethered place" + } + ] + } + } + ] + }, + { + "_id": "classic/assets/ritual/tether/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/tether/abilities/0/moves/tether" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "totem": { + "_id": "classic/assets/ritual/totem", + "type": "asset", + "name": "Totem", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/totem/abilities/0", + "enabled": true, + "text": "When you hold a totem of your animal or beast companion and focus on it, roll +heart. On a strong hit, you are bound together. Add +1 and take +1 momentum on a hit when you use a companion ability. If you roll a 1 on your action die when using a companion ability, the magic is spent. On a weak hit, as above, but creating this connection is unsettling; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "moves": { + "focus_totem": { + "_id": "classic/assets/ritual/totem/abilities/0/moves/focus_totem", + "type": "move", + "name": "Focus Totem", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you hold a totem of your animal or beast companion and focus on it..." + }, + "text": "When you hold a totem of your animal or beast companion and focus on it, roll +heart. On a strong hit, you are bound together. Add +1 and take +1 momentum on a hit when you use a companion ability. If you roll a 1 on your action die when using a companion ability, the magic is spent. On a weak hit, as above, but creating this connection is unsettling; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you are bound together. Add +1 and take +1 momentum on a hit when you use a companion ability. If you roll a 1 on your action die when using a companion ability, the magic is spent." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but creating this connection is unsettling; [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).\n\nYou are bound together. Add +1 and take +1 momentum on a hit when you use a companion ability. If you roll a 1 on your action die when using a companion ability, the magic is spent." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/totem/abilities/1", + "enabled": false, + "text": "As above, and you may also perceive the world through your companion’s senses while you make moves aided by them (even when you are apart).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/totem/abilities/0/moves/focus_totem" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/totem/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/totem/abilities/0/moves/focus_totem" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "visage": { + "_id": "classic/assets/ritual/visage", + "type": "asset", + "name": "Visage", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/visage/abilities/0", + "enabled": true, + "text": "When you paint yourself in blood and ash, roll +wits. On a strong hit, you may add +2 and take +1 momentum on a hit when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) using fear or intimidation. If you roll a 1 on your action die when making a move aided by your visage, the magic is spent. On a weak hit, as above, but the blood must be your own; [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).", + "moves": { + "paint_visage": { + "_id": "classic/assets/ritual/visage/abilities/0/moves/paint_visage", + "type": "move", + "name": "Paint Visage", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you paint yourself in blood and ash..." + }, + "text": "When you paint yourself in blood and ash, roll +wits. On a strong hit, you may add +2 and take +1 momentum on a hit when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) using fear or intimidation. If you roll a 1 on your action die when making a move aided by your visage, the magic is spent. On a weak hit, as above, but the blood must be your own; [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you may add +2 and take +1 momentum on a hit when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) using fear or intimidation. If you roll a 1 on your action die when making a move aided by your visage, the magic is spent." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but the blood must be your own; [Endure Harm](id:classic/moves/suffer/endure_harm) (2 harm).\n\nYou may add +2 and take +1 momentum on a hit when you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) or [Compel](id:classic/moves/relationship/compel) using fear or intimidation. If you roll a 1 on your action die when making a move aided by your visage, the magic is spent." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/visage/abilities/1", + "enabled": false, + "text": "As above, and you may also add +1 when you [Strike](id:classic/moves/combat/strike), [Clash](id:classic/moves/combat/clash), or [Battle](id:classic/moves/combat/battle).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/visage/abilities/0/moves/paint_visage" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/visage/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/visage/abilities/0/moves/paint_visage" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "ward": { + "_id": "classic/assets/ritual/ward", + "type": "asset", + "name": "Ward", + "category": "Ritual", + "count_as_impact": false, + "shared": false, + "abilities": [ + { + "_id": "classic/assets/ritual/ward/abilities/0", + "enabled": true, + "text": "When you walk a wide circle, sprinkling the ground with salt, roll +wits. On a strong hit, choose two. On a weak hit, choose one.\n\n * When a foe first crosses the boundary, take +1 momentum.\n * When you first inflict harm against a foe within the boundary, inflict +1 harm.\n * Your ward is ‘likely’ ([Ask the Oracle](id:classic/oracles/moves/ask_the_oracle/likely)) to trap a foe within the boundary.", + "moves": { + "ward": { + "_id": "classic/assets/ritual/ward/abilities/0/moves/ward", + "type": "move", + "name": "Ward", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you walk a wide circle, sprinkling the ground with salt..." + }, + "text": "When you walk a wide circle, sprinkling the ground with salt, roll +wits. On a strong hit, choose two. On a weak hit, choose one.\n\n * When a foe first crosses the boundary, take +1 momentum.\n * When you first inflict harm against a foe within the boundary, inflict +1 harm.\n * Your ward is ‘likely’ ([Ask the Oracle](id:classic/oracles/moves/ask_the_oracle/likely)) to trap a foe within the boundary.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, choose two.\n\n * When a foe first crosses the boundary, take +1 momentum.\n * When you first inflict harm against a foe within the boundary, inflict +1 harm.\n * Your ward is ‘likely’ ([Ask the Oracle](id:classic/oracles/moves/ask_the_oracle/likely)) to trap a foe within the boundary." + }, + "weak_hit": { + "text": "On a __weak hit__, choose one.\n\n * When a foe first crosses the boundary, take +1 momentum.\n * When you first inflict harm against a foe within the boundary, inflict +1 harm.\n * Your ward is ‘likely’ ([Ask the Oracle](id:classic/oracles/moves/ask_the_oracle/likely)) to trap a foe within the boundary." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Assets Master Set", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + } + }, + { + "_id": "classic/assets/ritual/ward/abilities/1", + "enabled": false, + "text": "As above, and improve the effect of your ward (+2 momentum, +2 harm, and [‘almost certain’](id:classic/oracles/moves/ask_the_oracle/almost_certain)).", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/ward/abilities/0/moves/ward" + ] + } + ] + }, + { + "_id": "classic/assets/ritual/ward/abilities/2", + "enabled": false, + "text": "When you perform this ritual, add +1 and take +1 momentum on a hit.", + "enhance_moves": [ + { + "roll_type": "action_roll", + "enhances": [ + "classic/assets/ritual/ward/abilities/0/moves/ward" + ] + } + ] + } + ], + "_source": { + "title": "Ironsworn Assets Master Set", + "page": 18, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 41, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "atlas": { + "ironlands": { + "_id": "classic/collections/atlas/ironlands", + "type": "atlas", + "name": "The Ironlands", + "summary": "The Ironlands is a rugged peninsula of isolated settlements and untracked wilds on the frontier of the known world. Two generations ago, your people settled here when a cataclysm drove them from their former homes.", + "contents": { + "barrier_islands": { + "_id": "classic/atlas/ironlands/barrier_islands", + "type": "atlas_entry", + "name": "Barrier Islands", + "summary": "This long chain of bleak islands parallels the [Ragged Coast](id:classic/atlas/ironlands/ragged_coast). The islands are sparsely populated by [Ironlanders](id:classic/collections/npcs/ironlanders), mostly fisher-folk who brave the surrounding waters.", + "features": [ + "Crashing waves and treacherous currents", + "Jagged rocks hidden just beneath the surface", + "Snow-dappled cliffs jutting out of the sea", + "Low clouds and curling mists", + "Ferocious winds", + "Gliding seabirds", + "Decaying wrecks of wooden ships", + "Fisher-folk braving the wild sea", + "Lurking seaborne [raiders](id:classic/npcs/ironlanders/raider)" + ], + "description": "This long string of islands parallels the [Ragged Coast](id:classic/atlas/ironlands/ragged_coast). They are beautiful, but imposing. The slate-gray cliffs rise dramatically out of the water, topped by treeless moors. Waterfalls, fed by persistent rains, plunge over these cliffs into the raging sea. The winds are fierce and ever-present. In the winter, sleet, snow, and ocean mist can cut visibility to the length of one’s arm.\n\nThe islands are sparsely populated by [Ironlanders](id:classic/collections/npcs/ironlanders), mostly fisher-folk who brave the surrounding waters. Their settlements cling to narrow, rock-strewn shores or lie on high overlooks. At night, the dim lights of their fires and torches glimmer pitifully against the wild, storm-tossed sea.", + "quest_starter": "The spectral maiden appears at the bow of your ship, offering to guide you safely through the storm—for a price. What does she demand of you?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 113, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "ragged_coast": { + "_id": "classic/atlas/ironlands/ragged_coast", + "type": "atlas_entry", + "name": "Ragged Coast", + "summary": "This is a rugged land of snow-capped cliffs overlooking blue waters. [Ironlander](id:classic/collections/npcs/ironlanders) settlements are located at the head of the fjords in the shelter of narrow valleys.", + "features": [ + "Narrow fjords", + "Settlements built on rocky shores", + "Trade ships flying colorful sails", + "Shipbuilders hammering at wooden hulls", + "[Raiders](id:classic/npcs/ironlanders/raider) sounding the drums of war", + "Schools of orca gliding through the waves", + "Monstrous serpents rising from unfathomable depths" + ], + "description": "This coast is marked by massive fjords. It is a rugged land of snow-capped cliffs overlooking blue waters.\n\n[Ironlander](id:classic/collections/npcs/ironlanders) settlements are located at the head of the fjords in the shelter of narrow valleys. From there, both fisher-folk and [raiders](id:classic/npcs/ironlanders/raider) set sail. Their kin gather to see them off, laying wreaths of spruce in their wake.\n\nIn the center of each settlement, at the front of the longhouse, a stack of rune-marked river stones memorialize those who did not return—one stone for each of the lost.", + "quest_starter": "A ship which set off from a coastal settlement is found washed up on shore. It is empty. This ship carried something of great importance, now lost. What was it, and why do you swear to recover it?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 114, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "deep_wilds": { + "_id": "classic/atlas/ironlands/deep_wilds", + "type": "atlas_entry", + "name": "Deep Wilds", + "summary": "This vast swath of ancient forest is largely uninhabited and unexplored by [Ironlanders](id:classic/collections/npcs/ironlanders). Most avoid this region.", + "features": [ + "Unbroken woodland", + "A thick canopy casts the forest floor in shadow", + "Lingering fog", + "Constant rains", + "[Elves](id:classic/npcs/firstborn/elf), ever watchful", + "Ancient trees hung with moss", + "Streams winding their way through rough terrain", + "Skittering and growls from out of the mist" + ], + "description": "The Deep Wilds are a vast swath of ancient forest. The ground is a lush carpet of ferns and lichens. The gnarled branches are cloaked in hanging moss. The air is almost perpetually misty and wet. Unlike the bordering regions, heavy snow is rare here. Instead, there is the ceaseless patter of rain dripping from high boughs and the rush of river over rock. The air carries the earthy smells of damp and decay.\n\nA few [Ironlanders](id:classic/collections/npcs/ironlanders) live along the fringes of the Deep Wilds, taking advantage of the relatively temperate climate and abundant game. However, most avoid this region. This is a land of the [firstborn](id:classic/collections/npcs/firstborn), of monstrous [beasts](id:classic/collections/npcs/beasts), of [horrors](id:classic/collections/npcs/horrors) that defy description. This is the world before humans.", + "quest_starter": "An [Ironlander](id:classic/collections/npcs/ironlanders) has sided with an enemy in the heart of the Wilds, and is leading attacks against Ironlander settlements. Who is this person? Who have they joined forces with? What will you do to stop these attacks?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 115, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "flooded_lands": { + "_id": "classic/atlas/ironlands/flooded_lands", + "type": "atlas_entry", + "name": "Flooded Lands", + "summary": "This is a low-lying region of bogs, swamps, lakes, and slow-moving rivers. A few hardy [Ironlanders](id:classic/collections/npcs/ironlanders) live here in small settlements built atop hillocks, or in homes standing on stilts over the wetlands.", + "features": [ + "Fetid wetlands", + "Dead trees poisoned by salt water", + "Networks of sluggish rivers", + "Ponds and lakes shrouded in clinging mist", + "Beguiling ghostlights, drawn to the warmth of the living", + "Biting insects", + "Creatures, just beneath the surface, laying in wait" + ], + "description": "This is a low-lying region of bogs, swamps, lakes, and slow-moving rivers. Near the coast, the water is salty and riddled with dead trees. Further north, the morass of forested wetlands and bogs is interspersed with rare patches of higher ground. Through it all, twisting rivers make their sluggish journey to the sea. The smell of these lands is rotten and dank. It is the smell of slow death.\n\nA few hardy [Ironlanders](id:classic/collections/npcs/ironlanders) live here in small settlements built atop hillocks, or in homes standing on stilts over the wetlands. Most fish and forage, making their way among the waterways on flat-bottomed boats propelled by long poles. Some dig through peat for bog iron—a cold, wet, grueling task.\n\nTravel is precarious here. One step has you on solid ground. The next sends you plunging through a thin layer of peat into a murky bog. Then, bony hands reach out to you, grasping, pulling. “Stay with me,” a voice whispers. “Stay with me here in the dark.”", + "quest_starter": "Rising flood waters threaten to overwhelm an Ironlander settlement. Escape by boat is the only option, but there are few boats and many people. What’s more, there is something hungry in the water, waiting to feed.", + "_source": { + "title": "Ironsworn Rulebook", + "page": 116, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "havens": { + "_id": "classic/atlas/ironlands/havens", + "type": "atlas_entry", + "name": "Havens", + "summary": "This is an expansive area of forests, rivers, shrubland, and low hills. It is a relative oasis in the harsh Ironlands, but even here there is little comfort or safety.", + "features": [ + "Rolling hills and rocky bluffs", + "Pockets of dense wood, thick with shadow", + "Walled settlements", + "Verdant heaths", + "Wide rivers navigated by wary boatmen", + "Long, harsh winters" + ], + "description": "This is an expansive region of forests, rivers, shrubland, and low hills. After an arduous journey, after untold losses, the first Ironlander settlers looked upon the Havens as a fresh start—a relative oasis in a fierce, uncaring land. It gave them hope.\n\nYears later, that hope is fading. Even within the Havens, there is little rest or safety. The winters are long. The harvests are never enough. [Raiders](id:classic/npcs/ironlanders/raider) strike without mercy. The thick woods, deep rivers and dark nights hold secrets and lurking [horrors](id:classic/collections/npcs/horrors). Some say the Ironlands is a living thing, a malevolent spirit, intent on ridding itself of the human invaders. Slowly, season by season, year by year, it is succeeding.\n\nThe [Ironlander](id:classic/collections/npcs/ironlanders) settlements in this region typically stand on hills or at the confluence of rivers. The buildings are made of wood, or sometimes stone, with roofs covered in turf. The central homes and communal structures are protected by an outer palisade fashioned from earth and wood. Outside these walls, from spring through autumn, farmers work the meager fields. In winter, the settlements are smothered by deep snow and oppressive gray clouds.", + "quest_starter": "A settlement has fallen under the unjust rule of a cruel leader. What leverage do they hold over these people? What is your connection to the community? What can be done to overthrow this tyrant?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 117, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "hinterlands": { + "_id": "classic/atlas/ironlands/hinterlands", + "type": "atlas_entry", + "name": "Hinterlands", + "summary": "This imposing terrain consists of dense forests nestled against rugged hills. The Ironlander settlements in this region serve primarily as bases for hunters and trappers.", + "features": [ + "Dense forests nestled against rugged terrain", + "[Hunter](id:classic/npcs/ironlanders/hunter) camps and remote settlements", + "Birdsong interspersed with sudden, unsettling stillness", + "[Ironlanders](id:classic/collections/npcs/ironlanders), foraging and hunting game", + "Hungry [beasts](id:classic/collections/npcs/beasts), stalking", + "[Varou](id:classic/npcs/firstborn/varou) bands, howling their war song" + ], + "description": "This high terrain consists of a long string of forested hills.\n\nIsolated [Ironlander](id:classic/collections/npcs/ironlanders) settlements in this region serve primarily as bases for [hunters](id:classic/npcs/ironlanders/hunter) and trappers. A few farmers do the best they can with the rocky soil, but the people depend mostly on meat, mushrooms, berries, and other bounties from the forest to sustain them during the long winters.\n\nThose winters are bitter and harsh. Snow gathers as deep as an Ironlander is tall, or more. Hunters, cloaked in heavy furs, wear snowshoes to navigate across the rough terrain. At night, they make camp. They drink and tell stories. They try to ward away the encroaching darkness with a blazing fire. They cast nervous glances at sounds just beyond the light.\n\nIn the spring and summer, the melting snow feeds tumultuous rivers. The forests burst with rich life. But, always there is a chill in the air. Always there is a reminder of the coming winter.", + "quest_starter": "A group of [Ironlanders](id:classic/collections/npcs/ironlanders) have been forced out of their Hinterland settlement. What caused them to leave? With winter coming, and food in short supply, will you attempt to reclaim their settlement or convince someone to take them in?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 118, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "tempest_hills": { + "_id": "classic/atlas/ironlands/tempest_hills", + "type": "atlas_entry", + "name": "Tempest Hills", + "summary": "These highlands are defined by rugged hills, low mountains, thin woods, and grassy plateaus. [Ironlanders](id:classic/collections/npcs/ironlanders) live here in nomadic camps or mining settlements.", + "features": [ + "Stunted forests", + "Howling winds", + "Mist-shrouded waterfalls", + "Mining settlements", + "Nomad encampments on high plateaus", + "[Ironlander](id:classic/collections/npcs/ironlanders) caravans hauling bounties of ore", + "Wary [giants](id:classic/npcs/firstborn/giant) keeping their distance", + "[Mammoths](id:classic/npcs/beasts/mammoth) grazing in alpine meadows" + ], + "description": "These highlands are defined by rugged hills and low mountains, thin conifer woods, and wide, grassy plateaus, leading up to the heights of the [Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains). Through most seasons, the constant ill-winds break against the sides of the hills, screeching and moaning. In the dead of winter, some say these winds carry the names of those fated to die during the long cold season.\n\nNomadic [Ironlanders](id:classic/collections/npcs/ironlanders) live among the hills, herding livestock. In the spring and summer they move among high pastures. In the winter, they find some relief from the brutal weather in sheltered valleys.\n\nOthers live in mining settlements, drawing iron ore from riverbeds and shallow digs. Their furnaces, sending up plumes of black smoke, convert the ore into wrought iron, which is sent south for trade with the [Havens](id:classic/atlas/ironlands/havens).", + "quest_starter": "You have come across or learned of a rich source of unclaimed iron and silver among these hills. What hazards must be overcome before a mine can be established? What force opposes you or attempts to establish its own claim?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 119, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "veiled_mountains": { + "_id": "classic/atlas/ironlands/veiled_mountains", + "type": "atlas_entry", + "name": "Veiled Mountains", + "summary": "These great peaks mark the northern bounds of the settled lands. A few hardy [Ironlanders](id:classic/collections/npcs/ironlanders) dwell here in small mining communities. Most of them head south before the long, brutal winter takes hold.", + "features": [ + "Massive peaks shrouded in roiling clouds", + "Howling [beasts](id:classic/collections/npcs/beasts)", + "Endless snows", + "Precarious mountain trails", + "Stone cairns, marking the dead", + "Abandoned settlements", + "Circling [wyverns](id:classic/npcs/beasts/wyvern)" + ], + "description": "Commonly referred to as the Veils, these great mountains mark the northern bounds of the settled lands. They are almost perpetually shrouded in cloud, snow, and mist. On the rare day they are visible to those [Ironlanders](id:classic/collections/npcs/ironlanders) far south in the [Havens](id:classic/atlas/ironlands/havens), the sight of the towering peaks is enough to inspire a mix of fear and awe.\n\nFor a few, that feeling is a call rather than a warning. The Ironlanders who dwell here are mostly members of small mining communities. They seek fortunes in iron or silver, but often find only death in the endless, brutal cold. Even those who manage to eke out some sort of life among the Veils are sure to head south before the onset of winter. Before the long dark takes hold.", + "quest_starter": "As winter fast approaches, there is no sign of the [Ironlanders](id:classic/collections/npcs/ironlanders) who live in a small mining community on the flanks of the Veils. They should have been off the mountain weeks ago. Time is running out.", + "_source": { + "title": "Ironsworn Rulebook", + "page": 120, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "shattered_wastes": { + "_id": "classic/atlas/ironlands/shattered_wastes", + "type": "atlas_entry", + "name": "Shattered Wastes", + "summary": "This plain of jagged, broken ice is uninhabited by [Ironlanders](id:classic/collections/npcs/ironlanders). No one knows the bounds of this land or what lies beyond.", + "features": [ + "Vast fields of broken ice", + "Discomforting stillness", + "Deep crevasses, plunging into darkness", + "Piercing cold", + "Unnatural [horrors](id:classic/collections/npcs/horrors) breaking through the ice" + ], + "description": "To the north of the [Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains) lies the Shattered Wastes, a plain of jagged, broken ice.\n\nNo one knows the bounds of this land or what lies beyond. No [Ironlanders](id:classic/collections/npcs/ironlanders) dwell here, and only a handful have explored the passage into the Wastes through the Veils. Those who survived the journey returned with stories of unimaginable cold and things moving beneath the ice.", + "quest_starter": "The traveler returned from his journey into the Shattered Wastes with dead, frostbitten hands and extraordinary stories. The others scoff at him, but you believe. Why? What does he tell you? What compels you to see for yourself?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 121, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "moves": { + "adventure": { + "_id": "classic/collections/moves/adventure", + "type": "move_category", + "name": "Adventure Moves", + "summary": "Adventure moves are used as you travel the Ironlands, investigate situations, and deal with threats.", + "contents": { + "face_danger": { + "_id": "classic/moves/adventure/face_danger", + "type": "move", + "name": "Face Danger", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "With speed, agility, or precision" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "With charm, loyalty, or courage" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "With aggressive action, forceful defense, strength, or endurance" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "With deception, stealth, or trickery" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "With expertise, insight, or observation" + } + ], + "text": "When you attempt something risky or react to an imminent threat..." + }, + "text": "When __you attempt something risky or react to an imminent threat__, envision your action and roll. If you act...\n\n * With speed, agility, or precision: Roll +edge.\n * With charm, loyalty, or courage: Roll +heart.\n * With aggressive action, forceful defense, strength, or endurance: Roll +iron.\n * With deception, stealth, or trickery: Roll +shadow.\n * With expertise, insight, or observation: Roll +wits.\n\nOn a __strong hit__, you are successful. Take +1 momentum.\n\nOn a __weak hit__, you succeed, but face a troublesome cost. Choose one.\n\n * You are delayed, lose advantage, or face a new danger: Suffer -1 momentum.\n * You are tired or hurt: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * You are dispirited or afraid: [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).\n * You sacrifice resources: Suffer -1 supply.\n\nOn a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you are successful. Take +1 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, you succeed, but face a troublesome cost. Choose one.\n\n * You are delayed, lose advantage, or face a new danger: Suffer -1 momentum.\n * You are tired or hurt: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * You are dispirited or afraid: [Endure Stress](id:classic/moves/suffer/endure_stress) (1 stress).\n * You sacrifice resources: Suffer -1 supply." + }, + "miss": { + "text": "On a __miss__, you fail, or your progress is undermined by a dramatic and costly turn of events. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 60, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "secure_an_advantage": { + "_id": "classic/moves/adventure/secure_an_advantage", + "type": "move", + "name": "Secure an Advantage", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "With speed, agility, or precision" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "With charm, loyalty, or courage" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "With aggressive action, forceful defense, strength, or endurance" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "With deception, stealth, or trickery" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "With expertise, insight, or observation" + } + ], + "text": "When you assess a situation, make preparations, or attempt to gain leverage..." + }, + "text": "When __you assess a situation, make preparations, or attempt to gain leverage__, envision your action and roll. If you act...\n\n * With speed, agility, or precision: Roll +edge.\n * With charm, loyalty, or courage: Roll +heart.\n * With aggressive action, forceful defense, strength, or endurance: Roll +iron.\n * With deception, stealth, or trickery: Roll +shadow.\n * With expertise, insight, or observation: Roll +wits.\n\nOn a __strong hit__, you gain advantage. Choose one.\n\n * Take control: Make another move now (not a progress move), and add +1.\n * Prepare to act: Take +2 momentum.\n\nOn a __weak hit__, your advantage is short-lived. Take +1 momentum.\n\nOn a __miss__, you fail or your assumptions betray you. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you gain advantage. Choose one.\n\n * Take control: Make another move now (not a progress move), and add +1.\n * Prepare to act: Take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, your advantage is short-lived. Take +1 momentum." + }, + "miss": { + "text": "On a __miss__, you fail or your assumptions betray you. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 61, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "gather_information": { + "_id": "classic/moves/adventure/gather_information", + "type": "move", + "name": "Gather Information", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you search an area, ask questions, conduct an investigation, or follow a track..." + }, + "text": "When __you search an area, ask questions, conduct an investigation, or follow a track__, roll +wits. If you act within a community or ask questions of a person with whom you share a bond, add +1.\n\nOn a __strong hit__, you discover something helpful and specific. The path you must follow or action you must take to make progress is made clear. Envision what you learn ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +2 momentum.\n\nOn a __weak hit__, the information complicates your quest or introduces a new danger. Envision what you discover ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum.\n\nOn a __miss__, your investigation unearths a dire threat or reveals an unwelcome truth that undermines your quest. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you discover something helpful and specific. The path you must follow or action you must take to make progress is made clear. Envision what you learn ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, the information complicates your quest or introduces a new danger. Envision what you discover ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and take +1 momentum." + }, + "miss": { + "text": "On a __miss__, your investigation unearths a dire threat or reveals an unwelcome truth that undermines your quest. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 62, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "heal": { + "_id": "classic/moves/adventure/heal", + "type": "move", + "name": "Heal", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + }, + { + "method": "lowest", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + }, + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Mend your own wounds" + } + ], + "text": "When you treat an injury or ailment..." + }, + "text": "When __you treat an injury or ailment__, roll +wits. If you are mending your own wounds, roll +wits or +iron, whichever is lower.\n\nOn a __strong hit__, your care is helpful. If you (or the ally under your care) have the wounded condition, you may clear it. Then, take or give up to +2 health.\n\nOn a __weak hit__, as above, but you must suffer -1 supply or -1 momentum (your choice).\n\nOn a __miss__, your aid is ineffective. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, your care is helpful. If you (or the ally under your care) have the wounded condition, you may clear it. Then, take or give up to +2 health." + }, + "weak_hit": { + "text": "On a __weak hit__, your care is helpful, but you must suffer -1 supply or -1 momentum (your choice). If you (or the ally under your care) have the wounded condition, you may clear it. Then, take or give up to +2 health." + }, + "miss": { + "text": "On a __miss__, your aid is ineffective. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 63, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "resupply": { + "_id": "classic/moves/adventure/resupply", + "type": "move", + "name": "Resupply", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you hunt, forage, or scavenge..." + }, + "text": "When __you hunt, forage, or scavenge__, roll +wits.\n\nOn a __strong hit__, you bolster your resources. Take +2 supply.\n\nOn a __weak hit__, take up to +2 supply, but suffer -1 momentum for each.\n\nOn a __miss__, you find nothing helpful. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you bolster your resources. Take +2 supply." + }, + "weak_hit": { + "text": "On a __weak hit__, take up to +2 supply, but suffer -1 momentum for each." + }, + "miss": { + "text": "On a __miss__, you find nothing helpful. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 63, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "make_camp": { + "_id": "classic/moves/adventure/make_camp", + "type": "move", + "name": "Make Camp", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "condition_meter", + "condition_meter": "supply" + } + ] + } + ], + "text": "When you rest and recover for several hours in the wild..." + }, + "text": "When __you rest and recover for several hours in the wild__, roll +supply.\n\nOn a __strong hit__, you and your allies may each choose two. On a __weak hit__, choose one.\n\n * Recuperate: Take +1 health for you and any companions.\n * Partake: Suffer -1 supply and take +1 health for you and any companions.\n * Relax: Take +1 spirit.\n * Focus: Take +1 momentum.\n * Prepare: When you break camp, add +1 if you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey).\n\nOn a __miss__, you take no comfort. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you and your allies may each choose two.\n\n * Recuperate: Take +1 health for you and any companions.\n * Partake: Suffer -1 supply and take +1 health for you and any companions.\n * Relax: Take +1 spirit.\n * Focus: Take +1 momentum.\n * Prepare: When you break camp, add +1 if you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey)." + }, + "weak_hit": { + "text": "On a __weak hit__, you and your allies may each choose one.\n\n * Recuperate: Take +1 health for you and any companions.\n * Partake: Suffer -1 supply and take +1 health for you and any companions.\n * Relax: Take +1 spirit.\n * Focus: Take +1 momentum.\n * Prepare: When you break camp, add +1 if you [Undertake a Journey](id:classic/moves/adventure/undertake_a_journey)." + }, + "miss": { + "text": "On a __miss__, you take no comfort. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 64, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "undertake_a_journey": { + "_id": "classic/moves/adventure/undertake_a_journey", + "type": "move", + "name": "Undertake a Journey", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ] + } + ], + "text": "When you travel across hazardous or unfamiliar lands..." + }, + "text": "When __you travel across hazardous or unfamiliar lands__, set the rank of your journey.\n\n * Troublesome journey: 3 progress per waypoint.\n * Dangerous journey: 2 progress per waypoint.\n * Formidable journey: 1 progress per waypoint.\n * Extreme journey: 2 ticks per waypoint.\n * Epic journey: 1 tick per waypoint.\n\nThen, for each segment of your journey, roll +wits. If you are setting off from a community with which you share a bond, add +1 to your initial roll.\n\nOn a __strong hit__, you reach a waypoint. If the waypoint is unknown to you, envision it ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Then, choose one.\n\n * You make good use of your resources: Mark progress.\n * You move at speed: Mark progress and take +1 momentum, but suffer -1 supply.\n\nOn a __weak hit__, you reach a waypoint and mark progress, but suffer -1 supply.\n\nOn a __miss__, you are waylaid by a perilous event. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you reach a waypoint. If the waypoint is unknown to you, envision it ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Then, choose one.\n\n * You make good use of your resources: Mark progress.\n * You move at speed: Mark progress and take +1 momentum, but suffer -1 supply." + }, + "weak_hit": { + "text": "On a __weak hit__, you reach a waypoint and mark progress, but suffer -1 supply." + }, + "miss": { + "text": "On a __miss__, you are waylaid by a perilous event. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 65, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "reach_your_destination": { + "_id": "classic/moves/adventure/reach_your_destination", + "type": "move", + "name": "Reach Your Destination", + "roll_type": "progress_roll", + "tracks": { + "category": "Journey" + }, + "trigger": { + "conditions": [ + { + "method": "progress_roll", + "roll_options": [ + { + "using": "progress_track" + } + ] + } + ], + "text": "When your journey comes to an end..." + }, + "text": "When __your journey comes to an end__, roll the challenge dice and compare to your progress. Momentum is ignored on this roll.\n\nOn a __strong hit__, the situation at your destination favors you. Choose one.\n\n * Make another move now (not a progress move), and add +1.\n * Take +1 momentum.\n\nOn a __weak hit__, you arrive but face an unforeseen hazard or complication. Envision what you find ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure).\n\nOn a __miss__, you have gone hopelessly astray, your objective is lost to you, or you were misled about your destination. If your journey continues, clear all but one filled progress, and raise the journey’s rank by one (if not already epic).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, the situation at your destination favors you. Choose one.\n\n * Make another move now (not a progress move), and add +1.\n * Take +1 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, you arrive but face an unforeseen hazard or complication. Envision what you find ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure)." + }, + "miss": { + "text": "On a __miss__, you have gone hopelessly astray, your objective is lost to you, or you were misled about your destination. If your journey continues, clear all but one filled progress, and raise the journey’s rank by one (if not already epic)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 68, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 60, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "relationship": { + "_id": "classic/collections/moves/relationship", + "type": "move_category", + "name": "Relationship Moves", + "summary": "Relationship moves are made as you interact with others in the world, fight duels, form bonds, support your allies, and determine the ultimate fate of your character.", + "contents": { + "compel": { + "_id": "classic/moves/relationship/compel", + "type": "move", + "name": "Compel", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "Charm, pacify, barter, or convince" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "Threaten or incite" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Lie or swindle" + } + ], + "text": "When you attempt to persuade someone to do something..." + }, + "text": "When __you attempt to persuade someone to do something__, envision your approach and roll. If you...\n\n * Charm, pacify, barter, or convince: Roll +heart (add +1 if you share a bond).\n * Threaten or incite: Roll +iron.\n * Lie or swindle: Roll +shadow.\n\nOn a __strong hit__, they’ll do what you want or share what they know. Take +1 momentum. If you use this exchange to [Gather Information](id:classic/moves/adventure/gather_information), make that move now and add +1.\n\nOn a __weak hit__, as above, but they ask something of you in return. Envision what they want ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure).\n\nOn a __miss__, they refuse or make a demand which costs you greatly. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, they’ll do what you want or share what they know. Take +1 momentum. If you use this exchange to [Gather Information](id:classic/moves/adventure/gather_information), make that move now and add +1." + }, + "weak_hit": { + "text": "On a __weak hit__, they’ll do what you want or share what they know... but they ask something of you in return. Envision what they want ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure).\n\nTake +1 momentum. If you use this exchange to [Gather Information](id:classic/moves/adventure/gather_information), make that move now and add +1." + }, + "miss": { + "text": "On a __miss__, they refuse or make a demand which costs you greatly. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 69, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "sojourn": { + "_id": "classic/moves/relationship/sojourn", + "type": "move", + "name": "Sojourn", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you spend time in a community seeking assistance..." + }, + "text": "When __you spend time in a community seeking assistance__, roll +heart. If you share a bond, add +1. On __strong hit__, you and your allies may each choose two from within the categories below. On a __weak hit__, choose one. If you share a bond, choose one more.\n\nOn a hit, you and your allies may each focus on one of your chosen recover actions and roll +heart again. If you share a bond, add +1. On a __strong hit__, take +2 more for that action. On a __weak hit__, take +1 more. On a __miss__, it goes badly and you lose all benefits for that action.\n\n__Clear a Condition__\n\n * Mend: Clear a wounded debility and take +1 health.\n * Hearten: Clear a shaken debility and take +1 spirit.\n * Equip: Clear an unprepared debility and take +1 supply.\n\n__Recover__\n\n * Recuperate: Take +2 health for yourself and any companions.\n * Consort: Take +2 spirit.\n * Provision: Take +2 supply.\n * Plan: Take +2 momentum.\n\n__Provide Aid__\n\n * Take a quest: Envision what this community needs, or what trouble it is facing ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you chose to help, [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) and add +1.\n\nOn a __miss__, you find no help here. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you and your allies may each choose two from within the categories below.\n\nYou and your allies may each focus on one of your chosen recover actions and roll +heart again. If you share a bond, add +1. On a __strong hit__, take +2 more for that action. On a __weak hit__, take +1 more. On a __miss__, it goes badly and you lose all benefits for that action.\n\n__Clear a Condition__\n\n * Mend: Clear a wounded debility and take +1 health.\n * Hearten: Clear a shaken debility and take +1 spirit.\n * Equip: Clear an unprepared debility and take +1 supply.\n\n__Recover__\n\n * Recuperate: Take +2 health for yourself and any companions.\n * Consort: Take +2 spirit.\n * Provision: Take +2 supply.\n * Plan: Take +2 momentum.\n\n__Provide Aid__\n\n * Take a quest: Envision what this community needs, or what trouble it is facing ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you chose to help, [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) and add +1." + }, + "weak_hit": { + "text": "On a __weak hit__, you and your allies may each choose one from within the categories below.\n\nYou and your allies may each focus on one of your chosen recover actions and roll +heart again. If you share a bond, add +1. On a __strong hit__, take +2 more for that action. On a __weak hit__, take +1 more. On a __miss__, it goes badly and you lose all benefits for that action.\n\n__Clear a Condition__\n\n * Mend: Clear a wounded debility and take +1 health.\n * Hearten: Clear a shaken debility and take +1 spirit.\n * Equip: Clear an unprepared debility and take +1 supply.\n\n__Recover__\n\n * Recuperate: Take +2 health for yourself and any companions.\n * Consort: Take +2 spirit.\n * Provision: Take +2 supply.\n * Plan: Take +2 momentum.\n\n__Provide Aid__\n\n * Take a quest: Envision what this community needs, or what trouble it is facing ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). If you chose to help, [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) and add +1." + }, + "miss": { + "text": "On a __miss__, you find no help here. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 71, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "draw_the_circle": { + "_id": "classic/moves/relationship/draw_the_circle", + "type": "move", + "name": "Draw the Circle", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you challenge someone to a formal duel, or accept a challenge..." + }, + "text": "When __you challenge someone to a formal duel, or accept a challenge__, roll +heart. If you share a bond with this community, add +1.\n\nOn a __strong hit__, take +1 momentum. You may also choose up to two boasts and take +1 momentum for each.\n\nOn a __weak hit__, you may choose one boast in exchange for +1 momentum.\n\n * Grant first strike: Your foe has initiative.\n * Bare yourself: Take no benefit of armor or shield; your foe’s harm is +1.\n * Hold no iron: Take no benefit of weapons; your harm is 1.\n * Bloody yourself: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * To the death: One way or another, this fight must end with death.\n\nOn a __miss__, you begin the duel at a disadvantage. Your foe has initiative. [Pay the Price](id:classic/moves/fate/pay_the_price). Then, make moves to resolve the fight. If you are the victor, you may make a lawful demand, and your opponent must comply or forfeit their honor and standing. If you refuse the challenge, surrender, or are defeated, they make a demand of you.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, take +1 momentum. You may also choose up to two boasts and take +1 momentum for each.\n\n * Grant first strike: Your foe has initiative.\n * Bare yourself: Take no benefit of armor or shield; your foe’s harm is +1.\n * Hold no iron: Take no benefit of weapons; your harm is 1.\n * Bloody yourself: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * To the death: One way or another, this fight must end with death.\n\nThen, make moves to resolve the fight. If you are the victor, you may make a lawful demand, and your opponent must comply or forfeit their honor and standing. If you refuse the challenge, surrender, or are defeated, they make a demand of you." + }, + "weak_hit": { + "text": "On a __weak hit__, you may choose one boast in exchange for +1 momentum.\n\n * Grant first strike: Your foe has initiative.\n * Bare yourself: Take no benefit of armor or shield; your foe’s harm is +1.\n * Hold no iron: Take no benefit of weapons; your harm is 1.\n * Bloody yourself: [Endure Harm](id:classic/moves/suffer/endure_harm) (1 harm).\n * To the death: One way or another, this fight must end with death.\n\nThen, make moves to resolve the fight. If you are the victor, you may make a lawful demand, and your opponent must comply or forfeit their honor and standing. If you refuse the challenge, surrender, or are defeated, they make a demand of you." + }, + "miss": { + "text": "On a __miss__, you begin the duel at a disadvantage. Your foe has initiative. [Pay the Price](id:classic/moves/fate/pay_the_price).\n\nThen, make moves to resolve the fight. If you are the victor, you may make a lawful demand, and your opponent must comply or forfeit their honor and standing. If you refuse the challenge, surrender, or are defeated, they make a demand of you." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 73, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "forge_a_bond": { + "_id": "classic/moves/relationship/forge_a_bond", + "type": "move", + "name": "Forge a Bond", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you spend significant time with a person or community, stand together to face hardships, or make sacrifices for their cause..." + }, + "text": "When __you spend significant time with a person or community, stand together to face hardships, or make sacrifices for their cause__, you can attempt to create a bond. When you do, roll +heart. If you make this move after you successfully [Fulfill Your Vow](id:classic/moves/quest/fulfill_your_vow) to their benefit, you may reroll any dice.\n\nOn a __strong hit__, make note of the bond, mark a tick on your bond progress track, and choose one.\n\n * Take +1 spirit.\n * Take +2 momentum.\n\nOn a __weak hit__, they ask something more of you first. Envision what it is ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), do it (or [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow)), and mark the bond. If you refuse or fail, [Pay the Price](id:classic/moves/fate/pay_the_price).\n\nOn a __miss__, they reject you. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, make note of the bond, mark a tick on your bond progress track, and choose one.\n\n * Take +1 spirit.\n * Take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, they ask something more of you first. Envision what it is ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), do it (or [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow)), and mark the bond. If you refuse or fail, [Pay the Price](id:classic/moves/fate/pay_the_price)." + }, + "miss": { + "text": "On a __miss__, they reject you. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 74, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "test_your_bond": { + "_id": "classic/moves/relationship/test_your_bond", + "type": "move", + "name": "Test Your Bond", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When your bond is tested through conflict, betrayal, or circumstance..." + }, + "text": "When __your bond is tested through conflict, betrayal, or circumstance__, roll +heart.\n\nOn a __strong hit__, this test has strengthened your bond. Choose one.\n\n * Take +1 spirit.\n * Take +2 momentum.\n\nOn a __weak hit__, your bond is fragile and you must prove your loyalty. Envision what they ask of you ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and do it (or [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow)). If you refuse or fail, clear the bond and [Pay the Price](id:classic/moves/fate/pay_the_price).\n\nOn a __miss__, or if you have no interest in maintaining this relationship, clear the bond and [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, this test has strengthened your bond. Choose one.\n\n * Take +1 spirit.\n * Take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, your bond is fragile and you must prove your loyalty. Envision what they ask of you ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and do it (or [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow)). If you refuse or fail, clear the bond and [Pay the Price](id:classic/moves/fate/pay_the_price)." + }, + "miss": { + "text": "On a __miss__, clear the bond and [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 75, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "aid_your_ally": { + "_id": "classic/moves/relationship/aid_your_ally", + "type": "move", + "name": "Aid Your Ally", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) in direct support of an ally..." + }, + "text": "When __you [Secure an Advantage](id:classic/moves/adventure/secure_an_advantage) in direct support of an ally__, and score a hit, they (instead of you) can take the benefits of the move. If you are in combat and score a strong hit, you and your ally have initiative.", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 76, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "write_your_epilogue": { + "_id": "classic/moves/relationship/write_your_epilogue", + "type": "move", + "name": "Write Your Epilogue", + "roll_type": "special_track", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "bonds_track" + } + ] + } + ], + "text": "When you retire from your life as Ironsworn..." + }, + "text": "When __you retire from your life as Ironsworn__, envision two things: What you hope for, and what you fear. Then, roll the challenge dice and compare to your bonds. Momentum is ignored on this roll.\n\nOn a __strong hit__, things come to pass as you hoped.\n\nOn a __weak hit__, your life takes an unexpected turn, but not necessarily for the worse. You find yourself spending your days with someone or in a place you did not foresee. Envision it ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure).\n\nOn a __miss__, your fears are realized.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, things come to pass as you had hoped." + }, + "weak_hit": { + "text": "On a __weak hit__, your life takes an unexpected turn, but not necessarily for the worse. You find yourself spending your days with someone or in a place you did not foresee. Envision it ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure)." + }, + "miss": { + "text": "On a __miss__, your fears are realized." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 77, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 69, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "combat": { + "_id": "classic/collections/moves/combat", + "type": "move_category", + "name": "Combat Moves", + "summary": "When there are no other options, when the sword slips free of its sheath, when the arrow is nocked, when the shield is brought to bear, make these moves.", + "contents": { + "enter_the_fray": { + "_id": "classic/moves/combat/enter_the_fray", + "type": "move", + "name": "Enter the Fray", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "Facing off against your foe" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Moving into position against an unaware foe, or striking without warning" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Ambushed" + } + ], + "text": "When you enter into combat..." + }, + "text": "When __you enter into combat__, set the rank of each of your foes.\n\n * Troublesome foe: 3 progress per harm; inflicts 1 harm.\n * Dangerous foe: 2 progress per harm; inflicts 2 harm.\n * Formidable foe: 1 progress per harm; inflicts 3 harm.\n * Extreme foe: 2 ticks per harm; inflicts 4 harm.\n * Epic foe: 1 tick per harm; inflicts 5 harm.\n\nThen, roll to determine who is in control. If you are...\n\n * Facing off against your foe: Roll +heart.\n * Moving into position against an unaware foe, or striking without warning: Roll +shadow.\n * Ambushed: Roll +wits.\n\nOn a __strong hit__, take +2 momentum. You have initiative.\n\nOn a __weak hit__, choose one.\n\n * Bolster your position: Take +2 momentum.\n * Prepare to act: Take initiative.\n\nOn a __miss__, combat begins with you at a disadvantage. [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, take +2 momentum. You have initiative." + }, + "weak_hit": { + "text": "On a __weak hit__, choose one.\n\n * Bolster your position: Take +2 momentum.\n * Prepare to act: Take initiative." + }, + "miss": { + "text": "On a __miss__, combat begins with you at a disadvantage. [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 78, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "strike": { + "_id": "classic/moves/combat/strike", + "type": "move", + "name": "Strike", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "In close quarters" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "At range" + } + ], + "text": "When you have initiative and attack..." + }, + "text": "When __you have initiative and attack in close quarters__, roll +iron. When __you have initiative and attack at range__, roll +edge.\n\nOn a __strong hit__, inflict +1 harm. You retain initiative.\n\nOn a __weak hit__, inflict your harm and lose initiative.\n\nOn a __miss__, your attack fails and you must [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, inflict +1 harm. You retain initiative." + }, + "weak_hit": { + "text": "On a __weak hit__, inflict your harm and lose initiative." + }, + "miss": { + "text": "On a __miss__, your attack fails and you must [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 78, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "clash": { + "_id": "classic/moves/combat/clash", + "type": "move", + "name": "Clash", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "Fight with them in close quarters" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "Exchange a volley at range, or shoot at an advancing foe" + } + ], + "text": "When your foe has initiative and you..." + }, + "text": "When __your foe has initiative and you fight with them in close quarters__, roll +iron. When __you exchange a volley at range, or shoot at an advancing foe__, roll +edge.\n\nOn a __strong hit__, inflict your harm and choose one. You have the initiative.\n\n * You bolster your position: Take +1 momentum.\n * You find an opening: Inflict +1 harm.\n\nOn a __weak hit__, inflict your harm, but then [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative.\n\nOn a __miss__, you are outmatched and must [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, inflict your harm and choose one. You have the initiative.\n\n * You bolster your position: Take +1 momentum.\n * You find an opening: Inflict +1 harm." + }, + "weak_hit": { + "text": "On a __weak hit__, inflict your harm, but then [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative." + }, + "miss": { + "text": "On a __miss__, you are outmatched and must [Pay the Price](id:classic/moves/fate/pay_the_price). Your foe has initiative." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 80, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "turn_the_tide": { + "_id": "classic/moves/combat/turn_the_tide", + "type": "move", + "name": "Turn the Tide", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "Once per fight, when you risk it all..." + }, + "text": "Once per fight, when you __risk it all__, you may steal initiative from your foe to make a move (not a progress move). When you do, add +1 and take +1 momentum on a hit. If you fail to score a hit on that move, you must suffer a dire outcome. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 81, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "end_the_fight": { + "_id": "classic/moves/combat/end_the_fight", + "type": "move", + "name": "End the Fight", + "roll_type": "progress_roll", + "tracks": { + "category": "Combat" + }, + "trigger": { + "conditions": [ + { + "method": "progress_roll", + "roll_options": [ + { + "using": "progress_track" + } + ] + } + ], + "text": "When you make a move to take decisive action, and score a strong hit..." + }, + "text": "When __you make a move to take decisive action__, and score a strong hit, you may resolve the outcome of this fight. If you do, roll the challenge dice and compare to your progress. Momentum is ignored on this roll.\n\nOn a __strong hit__, this foe is no longer in the fight. They are killed, out of action, flee, or surrender as appropriate to the situation and your intent ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure).\n\nOn a __weak hit__, as above, but you must also choose one.\n\n * It’s worse than you thought: [Endure Harm](id:classic/moves/suffer/endure_harm).\n * You are overcome: [Endure Stress](id:classic/moves/suffer/endure_stress).\n * Your victory is short-lived: A new danger or foe appears, or an existing danger worsens.\n * You suffer collateral damage: Something of value is lost or broken, or someone important must pay the cost.\n * You’ll pay for it: An objective falls out of reach.\n * Others won’t forget: You are marked for vengeance.\n\nOn a __miss__, you have lost this fight. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, this foe is no longer in the fight. They are killed, out of action, flee, or surrender as appropriate to the situation and your intent ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure)." + }, + "weak_hit": { + "text": "On a __weak hit__, this foe is no longer in the fight... but you must also choose one.\n\n * It’s worse than you thought: [Endure Harm](id:classic/moves/suffer/endure_harm).\n * You are overcome: [Endure Stress](id:classic/moves/suffer/endure_stress).\n * Your victory is short-lived: A new danger or foe appears, or an existing danger worsens.\n * You suffer collateral damage: Something of value is lost or broken, or someone important must pay the cost.\n * You’ll pay for it: An objective falls out of reach.\n * Others won’t forget: You are marked for vengeance.\n\nThe foe is killed, out of action, flees, or surrenders as appropriate to the situation and your intent ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure)." + }, + "miss": { + "text": "On a __miss__, you have lost this fight. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 82, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "battle": { + "_id": "classic/moves/combat/battle", + "type": "move", + "name": "Battle", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "edge" + } + ], + "text": "Fight at range, or using your speed and the terrain to your advantage" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ], + "text": "Fight depending on your courage, allies, or companions" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + } + ], + "text": "Fight in close to overpower your opponents" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "shadow" + } + ], + "text": "Fight using trickery to befuddle your opponents" + }, + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "wits" + } + ], + "text": "Fight using careful tactics to outsmart your opponents" + } + ], + "text": "When you fight a battle, and it happens in a blur, and you..." + }, + "text": "When __you fight a battle, and it happens in a blur__, envision your objective and roll. If you primarily...\n\n * Fight at range, or using your speed and the terrain to your advantage: Roll +edge.\n * Fight depending on your courage, allies, or companions: Roll +heart.\n * Fight in close to overpower your opponents: Roll +iron.\n * Fight using trickery to befuddle your opponents: Roll +shadow.\n * Fight using careful tactics to outsmart your opponents: Roll +wits.\n\nOn a __strong hit__, you achieve your objective unconditionally. Take +2 momentum.\n\nOn a __weak hit__, you achieve your objective, but not without cost. [Pay the Price](id:classic/moves/fate/pay_the_price).\n\nOn a __miss__, you are defeated and the objective is lost to you. [Pay the Price](id:classic/moves/fate/pay_the_price).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you achieve your objective unconditionally. Take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, you achieve your objective, but not without cost. [Pay the Price](id:classic/moves/fate/pay_the_price)." + }, + "miss": { + "text": "On a __miss__, you are defeated and the objective is lost to you. [Pay the Price](id:classic/moves/fate/pay_the_price)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 84, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 78, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "suffer": { + "_id": "classic/collections/moves/suffer", + "type": "move_category", + "name": "Suffer Moves", + "summary": "These moves are made as a result of a perilous event or bad outcome on other moves. They represent what happens to you, and how you hold up against the trauma.", + "contents": { + "endure_harm": { + "_id": "classic/moves/suffer/endure_harm", + "type": "move", + "name": "Endure Harm", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "highest", + "roll_options": [ + { + "using": "stat", + "stat": "iron" + }, + { + "using": "condition_meter", + "condition_meter": "health" + } + ] + } + ], + "text": "When you face physical damage..." + }, + "text": "When __you face physical damage__, suffer -health equal to your foe’s rank or as appropriate to the situation. If your health is 0, suffer -momentum equal to any remaining -health. Then, roll +health or +iron, whichever is higher.\n\nOn a __strong hit__, choose one.\n\n * Shake it off: If your health is greater than 0, suffer -1 momentum in exchange for +1 health.\n * Embrace the pain: Take +1 momentum.\n\nOn a __weak hit__, you press on.\n\nOn a __miss__, also suffer -1 momentum. If you are at 0 health, you must mark wounded or maimed (if currently unmarked) or roll on the following table.\n\n{{table:classic/oracles/moves/endure_harm}}", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, choose one.\n\n * Shake it off: If your health is greater than 0, suffer -1 momentum in exchange for +1 health.\n * Embrace the pain: Take +1 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, you press on." + }, + "miss": { + "text": "On a __miss__, also suffer -1 momentum. If you are at 0 health, you must mark wounded or maimed (if currently unmarked) or roll on the following table.\n\n{{table:classic/oracles/moves/endure_harm}}" + } + }, + "oracles": ["classic/oracles/moves/endure_harm"], + "_source": { + "title": "Ironsworn Rulebook", + "page": 91, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "face_death": { + "_id": "classic/moves/suffer/face_death", + "type": "move", + "name": "Face Death", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you are brought to the brink of death, and glimpse the world beyond..." + }, + "text": "When __you are brought to the brink of death__, and glimpse the world beyond, roll +heart.\n\nOn a __strong hit__, death rejects you. You are cast back into the mortal world.\n\nOn a __weak hit__, choose one.\n\n * You die, but not before making a noble sacrifice. Envision your final moments.\n * Death desires something of you in exchange for your life. Envision what it wants ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) (formidable or extreme) to complete that quest. If you fail to score a hit when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow), or refuse the quest, you are dead. Otherwise, you return to the mortal world and are now cursed. You may only clear the cursed debility by completing the quest.\n\nOn a __miss__, you are dead.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, death rejects you. You are cast back into the mortal world." + }, + "weak_hit": { + "text": "On a __weak hit__, choose one.\n\n * You die, but not before making a noble sacrifice. Envision your final moments.\n * Death desires something of you in exchange for your life. Envision what it wants ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) (formidable or extreme) to complete that quest. If you fail to score a hit when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow), or refuse the quest, you are dead. Otherwise, you return to the mortal world and are now cursed. You may only clear the cursed debility by completing the quest." + }, + "miss": { + "text": "On a __miss__, you are dead." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 93, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "companion_endure_harm": { + "_id": "classic/moves/suffer/companion_endure_harm", + "type": "move", + "name": "Companion Endure Harm", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "highest", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + }, + { + "using": "asset_control", + "control": "health", + "assets": ["*/assets/companion/*"] + } + ] + } + ], + "text": "When your companion faces physical damage..." + }, + "text": "When __your companion faces physical damage__, they suffer -health equal to the amount of harm inflicted. If your companion’s health is 0, exchange any leftover -health for -momentum. Then, roll +heart or +your companion’s health, whichever is higher.\n\nOn a __strong hit__, your companion rallies. Give them +1 health.\n\nOn a __weak hit__, your companion is battered. If their health is 0, they cannot assist you until they gain at least +1 health.\n\nOn a __miss__, also suffer -1 momentum. If your companion’s health is 0, they are gravely wounded and out of action. Without aid, they die in an hour or two. If you roll a miss with a 1 on your action die, and your companion’s health is 0, they are now dead. Take 1 experience for each marked ability on your companion asset, and remove it.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, your companion rallies. Give them +1 health." + }, + "weak_hit": { + "text": "On a __weak hit__, your companion is battered. If their health is 0, they cannot assist you until they gain at least +1 health." + }, + "miss": { + "text": "On a __miss__, also suffer -1 momentum. If your companion’s health is 0, they are gravely wounded and out of action. Without aid, they die in an hour or two.\n\nIf you roll a miss with a 1 on your action die, and your companion’s health is 0, they are now dead. Take 1 experience for each marked ability on your companion asset, and remove it." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 94, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "endure_stress": { + "_id": "classic/moves/suffer/endure_stress", + "type": "move", + "name": "Endure Stress", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "highest", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + }, + { + "using": "condition_meter", + "condition_meter": "spirit" + } + ] + } + ], + "text": "When you face mental shock or despair..." + }, + "text": "When __you face mental shock or despair__, suffer -spirit equal to your foe’s rank or as appropriate to the situation. If your spirit is 0, suffer -momentum equal to any remaining -spirit. Then, roll +spirit or +heart, whichever is higher.\n\nOn a __strong hit__, choose one.\n\n * Shake it off: If your spirit is greater than 0, suffer -1 momentum in exchange for +1 spirit\n * Embrace the darkness: Take +1 momentum\n\nOn a __weak hit__, you press on.\n\nOn a __miss__, also suffer -1 momentum. If you are at 0 spirit, you must mark shaken or corrupted (if currently unmarked) or roll on the following table.\n\n{{table:classic/oracles/moves/endure_stress}}", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, choose one.\n\n * Shake it off: If your spirit is greater than 0, suffer -1 momentum in exchange for +1 spirit\n * Embrace the darkness: Take +1 momentum" + }, + "weak_hit": { + "text": "On a __weak hit__, you press on." + }, + "miss": { + "text": "On a __miss__, also suffer -1 momentum. If you are at 0 spirit, you must mark shaken or corrupted (if currently unmarked) or roll on the following table.\n\n{{table:classic/oracles/moves/endure_stress}}" + } + }, + "oracles": ["classic/oracles/moves/endure_stress"], + "_source": { + "title": "Ironsworn Rulebook", + "page": 95, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "face_desolation": { + "_id": "classic/moves/suffer/face_desolation", + "type": "move", + "name": "Face Desolation", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you are brought to the brink of desolation..." + }, + "text": "When __you are brought to the brink of desolation__, roll +heart.\n\nOn a __strong hit__, you resist and press on.\n\nOn a __weak hit__, choose one.\n\n * Your spirit or sanity breaks, but not before you make a noble sacrifice. Envision your final moments.\n * You see a vision of a dreaded event coming to pass. Envision that dark future ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) (formidable or extreme) to prevent it. If you fail to score a hit when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow), or refuse the quest, you are lost. Otherwise, you return to your senses and are now tormented. You may only clear the tormented debility by completing the quest.\n\nOn a __miss__, you succumb to despair or horror and are lost.", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you resist and press on." + }, + "weak_hit": { + "text": "On a __weak hit__, choose one.\n\n * Your spirit or sanity breaks, but not before you make a noble sacrifice. Envision your final moments.\n * You see a vision of a dreaded event coming to pass. Envision that dark future ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) (formidable or extreme) to prevent it. If you fail to score a hit when you [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow), or refuse the quest, you are lost. Otherwise, you return to your senses and are now tormented. You may only clear the tormented debility by completing the quest." + }, + "miss": { + "text": "On a __miss__, you succumb to despair or horror and are lost." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 96, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "out_of_supply": { + "_id": "classic/moves/suffer/out_of_supply", + "type": "move", + "name": "Out of Supply", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When your supply is exhausted (reduced to 0)..." + }, + "text": "When __your supply is exhausted__ (reduced to 0), mark unprepared. If you suffer additional -supply while unprepared, you must exchange each additional -supply for any combination of -health, -spirit or -momentum as appropriate to the circumstances.", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 97, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "face_a_setback": { + "_id": "classic/moves/suffer/face_a_setback", + "type": "move", + "name": "Face a Setback", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When your momentum is at its minimum (-6), and you suffer additional -momentum..." + }, + "text": "When __your momentum is at its minimum__ (-6), and you suffer additional -momentum, choose one.\n\n * Exchange each additional -momentum for any combination of -health, -spirit, or -supply as appropriate to the circumstances.\n * Envision an event or discovery ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure) which undermines your progress in a current quest, journey or fight. Then, for each additional _momentum, clear 1 unit of progress on that track per its rank (troublesome=clear 3 progress; dangerous=clear 2 progress; formidable=clear 1 progress; extreme=clear 2 ticks; epic=clear 1 tick).", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 97, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 90, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "quest": { + "_id": "classic/collections/moves/quest", + "type": "move_category", + "name": "Quest Moves", + "summary": "Making and fulfilling vows is central to your character’s motivations. These oaths drive your story and give you the means to gain experience and acquire new abilities. When you embark upon a quest, manage your progress on a quest, seek to complete a quest, or gain the rewards of a quest, make these moves.", + "contents": { + "swear_an_iron_vow": { + "_id": "classic/moves/quest/swear_an_iron_vow", + "type": "move", + "name": "Swear an Iron Vow", + "roll_type": "action_roll", + "trigger": { + "conditions": [ + { + "method": "player_choice", + "roll_options": [ + { + "using": "stat", + "stat": "heart" + } + ] + } + ], + "text": "When you swear upon iron to complete a quest..." + }, + "text": "When __you swear upon iron to complete a quest__, write your vow and give the quest a rank. Then, roll +heart. If you make this vow to a person or community with whom you share a bond, add +1.\n\nOn a __strong hit__, you are emboldened and it is clear what you must do next ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Take +2 momentum.\n\nOn a __weak hit__, you are determined but begin your quest with more questions than answers. Take +1 momentum, and envision what you do to find a path forward.\n\nOn a __miss__, you face a significant obstacle before you can begin your quest. Envision what stands in your way ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and choose one.\n\n * You press on: Suffer -2 momentum, and do what you must to overcome this obstacle.\n * You give up: [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, you are emboldened and it is clear what you must do next ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Take +2 momentum." + }, + "weak_hit": { + "text": "On a __weak hit__, you are determined but begin your quest with more questions than answers. Take +1 momentum, and envision what you do to find a path forward." + }, + "miss": { + "text": "On a __miss__, you face a significant obstacle before you can begin your quest. Envision what stands in your way ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and choose one.\n\n * You press on: Suffer -2 momentum, and do what you must to overcome this obstacle.\n * You give up: [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 98, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "reach_a_milestone": { + "_id": "classic/moves/quest/reach_a_milestone", + "type": "move", + "name": "Reach a Milestone", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you make significant progress in your quest by overcoming a critical obstacle, completing a perilous journey, solving a complex mystery, defeating a powerful threat, gaining vital support, or acquiring a crucial item..." + }, + "text": "When __you make significant progress in your quest by overcoming a critical obstacle, completing a perilous journey, solving a complex mystery, defeating a powerful threat, gaining vital support, or acquiring a crucial item__, you may mark progress.\n\n * Troublesome quest: Mark 3 progress.\n * Dangerous quest: Mark 2 progress.\n * Formidable quest: Mark 1 progress.\n * Extreme quest: Mark 2 ticks.\n * Epic quest: Mark 1 tick.", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 100, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "fulfill_your_vow": { + "_id": "classic/moves/quest/fulfill_your_vow", + "type": "move", + "name": "Fulfill Your Vow", + "roll_type": "progress_roll", + "tracks": { + "category": "Vow" + }, + "trigger": { + "conditions": [ + { + "method": "progress_roll", + "roll_options": [ + { + "using": "progress_track" + } + ] + } + ], + "text": "When you achieve what you believe to be the fulfillment of your vow..." + }, + "text": "When __you achieve what you believe to be the fulfillment of your vow__, roll the challenge dice and compare to your progress. Momentum is ignored on this roll.\n\nOn a __strong hit__, your quest is complete. Mark experience (troublesome=1; dangerous=2; formidable=3; extreme=4; epic=5).\n\nOn a __weak hit__, there is more to be done or you realize the truth of your quest. Envision what you discover ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Then, mark experience (troublesome=0; dangerous=1; formidable=2; extreme=3; epic=4). You may [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to set things right. If you do, add +1.\n\nOn a __miss__, your quest is undone. Envision what happens ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and choose one.\n\n * You recommit: Clear all but one filled progress, and raise the quest’s rank by one (if not already epic).\n * You give up: [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow).", + "outcomes": { + "strong_hit": { + "text": "On a __strong hit__, your quest is complete. Mark experience (troublesome=1; dangerous=2; formidable=3; extreme=4; epic=5)." + }, + "weak_hit": { + "text": "On a __weak hit__, there is more to be done or you realize the truth of your quest. Envision what you discover ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure). Then, mark experience (troublesome=0; dangerous=1; formidable=2; extreme=3; epic=4). You may [Swear an Iron Vow](id:classic/moves/quest/swear_an_iron_vow) to set things right. If you do, add +1." + }, + "miss": { + "text": "On a __miss__, your quest is undone. Envision what happens ([Ask the Oracle](id:classic/moves/fate/ask_the_oracle) if unsure), and choose one.\n\n * You recommit: Clear all but one filled progress, and raise the quest’s rank by one (if not already epic).\n * You give up: [Forsake Your Vow](id:classic/moves/quest/forsake_your_vow)." + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 101, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "forsake_your_vow": { + "_id": "classic/moves/quest/forsake_your_vow", + "type": "move", + "name": "Forsake Your Vow", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you renounce your quest, betray your promise, or the goal is lost to you..." + }, + "text": "When __you renounce your quest, betray your promise, or the goal is lost to you__, clear the vow and [Endure Stress](id:classic/moves/suffer/endure_stress). You suffer _spirit equal to the rank of your quest (troublesome=1; dangerous=2; formidable=3; extreme=4; epic=5). If the vow was made to a person or community with whom you share a bond, Test Your Bond when you next meet.", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 102, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "advance": { + "_id": "classic/moves/quest/advance", + "type": "move", + "name": "Advance", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you focus on your skills, receive training, find inspiration, earn a reward, or gain a companion..." + }, + "text": "When __you focus on your skills, receive training, find inspiration, earn a reward, or gain a companion__, you may spend 3 experience to add a new asset, or 2 experience to upgrade an asset.", + "outcomes": null, + "_source": { + "title": "Ironsworn Rulebook", + "page": 103, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 98, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "fate": { + "_id": "classic/collections/moves/fate", + "type": "move_category", + "name": "Fate Moves", + "summary": "When you face the outcome of a move, want to know what happens next, or have a question about people, places and events external to your character, the fate moves help you discover an answer.", + "description": "In solo and co-op play, the fate moves mediate the result of other moves or serve as inspirational prompts for your story. When you face the outcome of a move, want to know what happens next, or have a question about people, places and events external to your character, the fate moves help you discover an answer.\n\nIn guided mode, your GM represents the whims of fate. They can reference these moves as they like, but they can also decide the outcome or direct the question back to you.\n\nThere are three key aspects of using the fate moves:\n * __Instinct:__ If an answer to a question or the result of a situation is obvious, interesting and dramatic, make it happen.\n * __Randomness:__ You can roll on random tables to generate a result or answer a question.\n * __Inspiration:__ You can use creative prompts, such as those included in the oracles chapter (page 165) to guide your story.", + "contents": { + "pay_the_price": { + "_id": "classic/moves/fate/pay_the_price", + "type": "move", + "name": "Pay the Price", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you suffer the outcome of a move..." + }, + "text": "When __you suffer the outcome of a move__, choose one.\n\n * Make the most obvious negative outcome happen.\n * Envision two negative outcomes. Rate one as ‘likely’, and [Ask the Oracle](id:classic/moves/fate/ask_the_oracle) using the yes/no table. On a ‘yes’, make that outcome happen. Otherwise, make it the other.\n * Roll on the following table. If you have difficulty interpreting the result to fit the current situation, roll again.\n\n{{table:classic/oracles/moves/pay_the_price}}", + "outcomes": null, + "oracles": ["classic/oracles/moves/pay_the_price"], + "_source": { + "title": "Ironsworn Rulebook", + "page": 105, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + }, + "ask_the_oracle": { + "_id": "classic/moves/fate/ask_the_oracle", + "type": "move", + "name": "Ask the Oracle", + "roll_type": "no_roll", + "trigger": { + "conditions": null, + "text": "When you seek to resolve questions, discover details in the world, determine how other characters respond, or trigger encounters or events..." + }, + "text": "When __you seek to resolve questions, discover details in the world, determine how other characters respond, or trigger encounters or events__, you may...\n\n * Draw a conclusion: Decide the answer based on the most interesting and obvious result.\n * Ask a yes/no question: Decide the odds of a ‘yes’, and roll on the table below to check the answer.\n * Pick two: Envision two options. Rate one as ‘likely’, and roll on the table below to see if it is true. If not, it is the other.\n * Spark an idea: Brainstorm or use a random prompt.\n\nOdds | The answer is ‘yes’ if you roll...\n---------------|-----------------------------------\nAlmost Certain | 11 or greater\nLikely | 26 or greater\n50/50 | 51 or greater\nUnlikely | 76 or greater\nSmall Chance | 91 or greater\n\nOn a match, an extreme result or twist has occurred.", + "outcomes": null, + "oracles": [ + "classic/oracles/moves/ask_the_oracle/small_chance", + "classic/oracles/moves/ask_the_oracle/unlikely", + "classic/oracles/moves/ask_the_oracle/fifty_fifty", + "classic/oracles/moves/ask_the_oracle/likely", + "classic/oracles/moves/ask_the_oracle/almost_certain" + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 107, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 98, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by/4.0" + } + } + }, + "npcs": { + "ironlanders": { + "_id": "classic/collections/npcs/ironlanders", + "type": "npc_collection", + "name": "Ironlanders", + "summary": "The __Ironlanders__ are the humans who have settled these lands.", + "description": "Ironlanders are the human inhabitants of these lands. Unless your story emphasizes adventures well outside of the settled regions, the majority of your interactions will be with fellow Ironlanders.\n\nThis section covers a few broad categories of Ironlanders. They are not representative of the variety of people and cultures in these lands. When you are forced to fight an Ironlander and need to determine their rank, you can [Ask the Oracle](id:classic/oracles/turning_point/challenge_rank/foe), or follow these guidelines:\n\n * A common citizen or brute is __troublesome__.\n * A trained warrior is __dangerous__.\n * A powerful or veteran warrior is __formidable__.", + "contents": { + "broken": { + "_id": "classic/npcs/ironlanders/broken", + "type": "npc", + "name": "Broken", + "rank": 1, + "nature": "Ironlander", + "features": [ + "Crazed eyes", + "Painted skin", + "Feral screams", + "Scavenged clothing and weapons" + ], + "drives": ["Show my power", "Share my pain"], + "tactics": ["Spring from hiding", "Ferocious attacks"], + "description": "Another people sailed to the Ironlands from the [Old World](id:classic/truths/old_world) long before our kin settled here. Something happened. Something changed them.\n\nWhether it was the long struggle in a harsh land, the ravages of war, or the corruption of some dark force, they left their humanity behind and became what we call the broken. Now, they exist only to kill, to destroy.\n\nWe fear the broken for their savagery. But, more than this, we fear them as a dark portent of what we might one day become.", + "quest_starter": "Years ago, an Ironlander child was taken by a broken tribe. Now they are seen living among them. What is your connection to this person? Can they be brought home, or are they forever lost?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 138, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "common_folk": { + "_id": "classic/npcs/ironlanders/common_folk", + "type": "npc", + "name": "Common Folk", + "rank": 1, + "nature": "Ironlander", + "features": [ + "Diverse looks", + "Weary and worried", + "Suspicious of strangers" + ], + "drives": ["Prepare for winter", "Protect my family"], + "tactics": ["Desperate defense", "Stand together"], + "description": "Most of us in the Ironlands are common folk. We are farmers, laborers, crafters, sailors, and traders. When trouble comes, we know which way the pointy end goes and we stand together to protect our homes and kin.", + "quest_starter": "Two prominent families are at odds. What is the source of the conflict? What is your relationship to them? What danger threatens to destroy their community if they can’t put aside their petty squabble?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 139, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "hunter": { + "_id": "classic/npcs/ironlanders/hunter", + "type": "npc", + "name": "Hunter", + "rank": 2, + "nature": "Ironlander", + "features": [ + "Wearing hides and furs to ward away the cold", + "Steely gaze", + "At home in the woodlands" + ], + "drives": ["A clean kill", "Survive the hunt"], + "tactics": ["Set traps", "Keep to the shadows", "Deadly shot"], + "description": "Hunters face brutal weather, difficult terrain, dangerous [animals](id:classic/collections/npcs/animals), and worse. Many never return from their hunts. Others return, but are forever changed.", + "quest_starter": "A hunter returns to her village, panic-stricken and pleading for help. The rest of her party is still out there. What happened to them?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 139, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "mystic": { + "_id": "classic/npcs/ironlanders/mystic", + "type": "npc", + "name": "Mystic", + "rank": 2, + "nature": "Ironlander", + "features": ["Knowing eyes", "Tattooed skin"], + "drives": ["Respect the old ways", "Seek the paths of power"], + "tactics": [ + "Foresee the intent of my enemies", + "Prepare rituals", + "Use trickery" + ], + "description": "Some say you can tell a mystic by looking them in the eye. They walk in two worlds, and their eyes shimmer with that dark reflection of realms beyond our own. We call it the sight. Some hold that darkness in check. Others are consumed by it.", + "quest_starter": "A mystic returns to their home after a years-long journey. They are changed. What new power or knowledge do now they wield? What do they seek to do with it? Why do you oppose them?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 140, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "raider": { + "_id": "classic/npcs/ironlanders/raider", + "type": "npc", + "name": "Raider", + "rank": 2, + "nature": "Ironlander", + "features": ["Geared for war", "Battle fervor"], + "drives": [ + "What is theirs will be ours", + "Stand with my kin", + "Die a glorious death" + ], + "tactics": ["Intimidate", "Shield wall", "Burn it down"], + "description": "Raiders survive by seizing what they need from others. Our grain. Our meat. Our animals. Our iron. They’ll take it all, and leave us facing the long winter with nothing to sustain us but prayers to indifferent gods.", + "quest_starter": "You were raised as a raider, born to battle, but long ago left that life. Troubled by your past, you vow to wipe this powerful clan from the Ironlands. How can you defeat them? What will happen when you must face your former shield-kin?", + "your_truth": "A large raider clan is known and feared throughout the Ironlands. What is it called? Who leads it?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 140, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "warrior": { + "_id": "classic/npcs/ironlanders/warrior", + "type": "npc", + "name": "Warrior", + "rank": 2, + "nature": "Ironlander", + "features": ["Battle-hardened", "Scarred"], + "drives": [ + "The thrill of the fight", + "Protect those in my charge", + "Survive another day" + ], + "tactics": ["Maneuver for advantage", "Find an opening"], + "description": "Some Ironlanders, through strength of arms, set themselves apart from the common rabble. They are trained to fight, or simply born to it. For them, a sword, spear or axe is as natural a tool as any hammer or spade.", + "quest_starter": "A legendary warrior, now well past their prime, swears to face a daunting foe in one final battle. What help do they ask of you and why? Who is their enemy?", + "your_truth": "Warrior’s shields are often emblazoned with meaningful symbols. What are they? Family crests? Animal totems? Mystical sigils? Motifs honoring the nations of the [Old World](id:classic/truths/old_world)? If you carry a shield, what is painted on yours?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 141, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 138, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "firstborn": { + "_id": "classic/collections/npcs/firstborn", + "type": "npc_collection", + "name": "Firstborn", + "summary": "The __Firstborn__ are beings who walked the Ironlands uncountable years before humans arrived.", + "description": "The firstborn lived here long before the humans landed on these shores. The humans, in their arrogance, named this peninsula the Ironlands and called themselves Ironlanders—but the firstborn gave it names of their own in a time beyond the reach of memory.", + "contents": { + "elf": { + "_id": "classic/npcs/firstborn/elf", + "type": "npc", + "name": "Elf", + "rank": 2, + "nature": "Firstborn", + "features": [ + "Large, luminous eyes seen through wooden masks", + "Gray-green skin the texture of dry leaves", + "Sonorous voices", + "Wielding bows and spears" + ], + "drives": [ + "Protect the wilds", + "Drive out trespassers, or see them pay" + ], + "tactics": [ + "Strike from shadow", + "Force their surrender", + "Turn the forest against them" + ], + "description": "Elves are strange beings of the forest, seldom seen beyond the ancient woods of the [Deep Wilds](id:classic/atlas/ironlands/deep_wilds). They are fiercely protective of their lands and suspicious of humans. Their scouts patrol the borderlands, riding the fearsome mounts we call [gaunts](id:classic/npcs/animals/gaunt). Others of their kind watch us from the shadow of the deep woods, spears and bow at the ready. Some say elven mystics can bind the animals and beasts of the forest to aid in the defense of the Wilds.\n\nA few warn that the elves are biding their time, readying the attack which will drive us from these lands.", + "quest_starter": "The leader of an Ironlander community seeks an audience with the elves. For what purpose? Why are you compelled to help?", + "your_truth": "Elves conceal their faces behind ornate wooden masks. What do these masks signify?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 142, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "giant": { + "_id": "classic/npcs/firstborn/giant", + "type": "npc", + "name": "Giant", + "rank": 4, + "nature": "Firstborn", + "features": [ + "Dark hair and ruddy skin", + "Twice the size of a tall man, or more", + "Wearing layers of wool, hide and furs", + "Stoic and observant" + ], + "drives": ["Survive the winter", "Protect the herd"], + "tactics": [ + "Fight as a last resort", + "Sweeping strike", + "Make them flee" + ], + "description": "Giants dwell in the [Tempest Hills](id:classic/atlas/ironlands/tempest_hills) and [Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains). They live a nomadic life alone or in small family units, herding oxen, mountain goats, and sheep. In their own language they are called the Jokul.\n\nMany Ironlanders misinterpret their quiet nature for dullness, but giants are keenly intelligent and observant. They have a great respect for life, even for our kind, and will use trickery and negotiation to avoid a fight. When they are left without other options, an enraged giant is a devastating, relentless force.", + "quest_starter": "A pair of giants are raiding human settlements, stealing supplies and livestock. With winter coming, the survival of those settlements is threatened. What is driving the giants down from the hills?", + "your_truth": "Every fifth spring, the giant clans meet for a gathering. There, the memory-keepers sing of a great giant hero, revered by all. Who is this hero?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 143, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "primordial": { + "_id": "classic/npcs/firstborn/primordial", + "type": "npc", + "name": "Primordial", + "rank": 4, + "nature": "Firstborn", + "features": [ + "Personification of the natural world", + "Turbulent, changing form", + "Vaguely human-like or animal-like form" + ], + "drives": ["Embody chaos", "Cling to vestiges of power"], + "tactics": ["Control the elements", "Destroy with primal rage"], + "description": "The primordials, said to be the vestigial spirits of long-forgotten gods, are the most ancient of the firstborn. Each embodies some aspect of the natural world, bound in a form which is a crude mimicry of a human or large animal. A river primordial is a mass of rock, gravel, and flowing water. A forest primordial is comprised of wood, earth, rocks, and plants. A mountain primordial is a lumbering being of glacier stone and ice. A fire primordial, depending on its mood, might take form as embers, ash and smoke—or as a raging pyre.\n\nThey range in size from the height of an Ironlander to half-again as tall as a [giant](id:classic/npcs/firstborn/giant). Rumors persist of primordials who dwell in the deepest parts of the Wilds, or high in the ranges of the [Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains), who are as tall as an ancient tree. Beyond, some suggest, in the [Shattered Wastes](id:classic/atlas/ironlands/shattered_wastes), live primordials who tower into the clouds. Is the sound of distant thunder sometimes the footfalls of mountain-sized primordials who dwell beyond the edges of the known world?\n\nPrimordials are solitary beings and as unpredictable as the natural forces they personify. They might ignore you. They might lurk at a distance, as if observing you. Or, they might attack. They do not speak in any language we can understand. Some suggest they have no intelligence, and are merely a manifestation of the natural world, no different than a winter storm.\n\nHow do you kill an primordial? Most scoff at the idea. You are just as likely to kill the rain or the sea. A mystic might tell you to use a weapon imbued with elemental power. Don’t trust them. If you see a primordial, keep your distance. Better yet, run.", + "quest_starter": "In the dead of winter, a fire primordial is razing homes and burning a nearby wood. At night, orange flames light the sky. What can be done to stop this destruction?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 144, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "troll": { + "_id": "classic/npcs/firstborn/troll", + "type": "npc", + "name": "Troll", + "rank": 3, + "nature": "Firstborn", + "features": [ + "Long limbs", + "Sunken, beady eyes", + "Translucent skin camouflaged to the environment", + "Keen sense of smell", + "Speaks in gibberish" + ], + "drives": ["Find pretty things", "Keep it secret"], + "tactics": ["Be sneaky", "Bite and claw", "Run and hide"], + "description": "Trolls mostly live in the [Flooded Land](id:classic/atlas/ironlands/flooded_lands), but it’s not unusual to encounter one in the [Hinterlands](id:classic/atlas/ironlands/hinterlands) or even in the southern reaches of the [Havens](id:classic/atlas/ironlands/havens). They are solitary creatures, wary of contact with Ironlanders but likely to attack if scared or provoked.\n\nThey move with their back hunched, often skulking on all four gangly limbs. When they stand straight they are much taller than humans—nearly as tall as a giant. Their skin is a sickly pale gray, but they can camouflage themselves by changing it to match their environment.\n\nTrolls collect objects of all sorts, and particularly value Ironlander trinkets. They are tormented by the fear of others stealing their hoard, and are constantly seeking out new, better hiding places. The items are mostly junk to anyone but a troll, but occasionally an object of real value finds its way into the dregs.", + "quest_starter": "The villagers tolerate the troll who lives nearby because its presence serves to dissuade a greater threat. They even donate items for its hoard, and put up with its occasional thievery. But now, the troll is missing. What is the looming threat the troll helped avert?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 145, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "varou": { + "_id": "classic/npcs/firstborn/varou", + "type": "npc", + "name": "Varou", + "rank": 2, + "nature": "Firstborn", + "features": [ + "Yellow eyes shining in the moonlight", + "Pointed ears and snout-like faces" + ], + "drives": [ + "Take their land", + "Defend my kin", + "Keep the bloodcall at bay" + ], + "tactics": [ + "Strike at night", + "Leap into combat", + "Let loose the bloodcall" + ], + "description": "The varou are humanoid beings who dwell within the [Deep Wilds](id:classic/atlas/ironlands/deep_wilds) and in the woods of the [Hinterlands](id:classic/atlas/ironlands/hinterlands). They have fierce, wolf-like features and are broad-shouldered and a head taller than the average Ironlander. Their long hair is ornately groomed and decorated with beads and other trinkets.\n\nThe varou value territory above all things. They often war amongst themselves and against the [elves](id:classic/npcs/firstborn/elf) to gain or defend holdings. They mark their claims by carving clan symbols into trees. Only the foolish ignore the warning of these border signs. Several of our settlements—built too close to varou territory—are now abandoned ruins bearing the mark of a victorious varou clan.", + "quest_starter": "A varou clan has carved their mark into the trees surrounding an Ironlander community, claiming it as their territory. An attack is surely imminent. What will you do to prevent it?", + "your_truth": "A young varou receives their keth—a curved dagger—before undergoing a rite of passage. What must they do to take their place among the adults of the clan?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 146, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 142, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "animals": { + "_id": "classic/collections/npcs/animals", + "type": "npc_collection", + "name": "Animals", + "summary": "__Animals__ are common creatures.", + "description": "animals are the mundane creatures which dwell in the Ironlands. Some animals are native to these lands; others were also common in the [Old World](id:classic/truths/old_world).\n\nMost wild animals are skittish and do not pose a threat to humans. Those creatures have no rank, and can be attacked or interacted with using appropriate moves. For example, [Resupply](id:classic/moves/adventure/resupply) can represent hunting for deer or small game.\n\nA few notable exceptions—predators, aggressive creatures, and animals trained to fight—are noted here.", + "contents": { + "bear": { + "_id": "classic/npcs/animals/bear", + "type": "npc", + "name": "Bear", + "rank": 3, + "nature": "Animal", + "features": ["Fearsome teeth and claws", "Thick hide"], + "drives": ["Find food", "Defend cubs"], + "tactics": ["Roar", "Pin down", "Maul with savage force"], + "description": "Most bears are not aggressive. They avoid Ironlanders and are unlikely to attack unless they see you as a threat.\n\nThere are exceptions. The silver bears of the [Veiled Mountains](id:classic/atlas/ironlands/veiled_mountains), which sometimes range as far south as the [Tempest Hills](id:classic/atlas/ironlands/tempest_hills), are territorial, powerful, and aggressive. Likewise, the ash bear, encountered in woodlands through the Ironlands, is known for its ferocity and cunning. If either catch the scent of you on the wind, they are likely to hunt you down and attack.", + "quest_starter": "A group of hunters felled a large ash bear with several arrows. It tumbled into a river and was swept away. Unfortunately, the bear they thought dead is now stalking the group as they make their way back home.", + "_source": { + "title": "Ironsworn Rulebook", + "page": 147, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "boar": { + "_id": "classic/npcs/animals/boar", + "type": "npc", + "name": "Boar", + "rank": 2, + "nature": "Animal", + "features": ["Wiry coats", "Long tusks", "Vicious"], + "drives": ["Forage", "Protect territory", "Defend sows"], + "tactics": ["Charge and gore", "Circle and attack again"], + "description": "In the [Old World](id:classic/truths/old_world), wild boars were belligerent and dangerous animals. Here in the Ironlands? They are even bigger and meaner. They will attack without warning or provocation. They will run you down, gore you, bite you, and circle around to do it all again. And again. And again.", + "quest_starter": "A boar hunt ends in tragedy when an Ironlander is gored and grievously\nwounded. How do you know this person? What terrible truth do they\nreveal as they lay dying?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 148, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "gaunt": { + "_id": "classic/npcs/animals/gaunt", + "type": "npc", + "name": "Gaunt", + "rank": 2, + "nature": "Animal", + "features": [ + "Horse-like creature with a lean, skeletal frame", + "Ghostly pale eyes", + "Black, scaled hide" + ], + "drives": ["Run like the wind"], + "tactics": ["Rear up", "Charge", "Trample"], + "description": "A gaunt is a creature unique to the Ironlands. They maneuver across the rough, dense terrain of the [Deep Wilds](id:classic/atlas/ironlands/deep_wilds) and [Hinterlands](id:classic/atlas/ironlands/hinterlands) with uncanny speed and grace. This makes them ideal as mounts for the [elves](id:classic/npcs/firstborn/elf), who breed and train them.\n\nA gaunt will not usually act aggressively without provocation, but they are as deadly as the fiercest warhorse under the command of a talented rider.", + "quest_starter": "Villages in the [Hinterlands](id:classic/atlas/ironlands/hinterlands) have fallen prey to a large band of gaunt-riding elves. They attack with sudden and violent force, and are gone before any sort of defense can be mustered. Their leader, a warrior of unmatched skill, rides a distinctive white gaunt. What has driven these elves to strike out against the Ironlanders?", + "your_truth": "Some gaunts live in wild herds. They once roamed the wilds in countless numbers, but few now remain. What has happened to thin these herds so dramatically?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 148, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "marsh_rat": { + "_id": "classic/npcs/animals/marsh_rat", + "type": "npc", + "name": "Marsh Rat", + "rank": 1, + "nature": "Animal", + "features": ["Beady eyes", "Long tails"], + "drives": ["Eat everything", "Breed"], + "tactics": ["Swarm and bite"], + "description": "The marsh rat is a rodent of unusual size. They are all-too-common in the [Flooded Lands](id:classic/atlas/ironlands/flooded_lands) or in wetlands within the [Hinterlands](id:classic/atlas/ironlands/hinterlands) and [Deep Wilds](id:classic/atlas/ironlands/deep_wilds).\n\nThey will eat almost anything, including carrion and waste. Our grain stores and pantries are an easy target for a hungry pack, who will dig tunnels or chew through walls to get at the food. They will also try to make a meal out of living prey—deer, cattle, or even an unlucky Ironlander. It is said that a swarm of marsh rats can kill a horse and reduce it to bone in a matter of hours.", + "quest_starter": "Marsh rats raided the stores of an isolated settlement. How will you ensure the Ironlanders have enough food to survive the coming winter?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 149, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "wolf": { + "_id": "classic/npcs/animals/wolf", + "type": "npc", + "name": "Wolf", + "rank": 2, + "nature": "Animal", + "features": ["Keen senses"], + "drives": ["Fight rivals", "Mark territory", "Run with the pack"], + "tactics": ["Stalk", "Pack rush", "Drag to the ground"], + "description": "The Ironlands are home to several breeds of wolves. Most are not aggressive and stay clear of settlements and travelers. Despite that, attacks against Ironlanders are not unknown. A harsh winter and insufficient prey can drive a pack to hunt livestock or even an unwary Ironlander. As night falls we hear their howls, and hope they are well fed.", + "quest_starter": "You find the grisly remains of a pack of wolves. All are dead, even the cubs. What caused this? Why is it a harbinger of a greater danger?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 150, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 147, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "beasts": { + "_id": "classic/collections/npcs/beasts", + "type": "npc_collection", + "name": "Beasts", + "summary": "__Beasts__ are monstrous creatures of unusual size and cunning.", + "description": "Beasts are monstrous creatures of great size and power. They are natural beings—not supernatural entities—but were unknown in the [Old World](id:classic/truths/old_world).", + "contents": { + "basilisk": { + "_id": "classic/npcs/beasts/basilisk", + "type": "npc", + "name": "Basilisk", + "rank": 4, + "nature": "Beast", + "features": [ + "Giant snake", + "Dull yellow-brown skin", + "Vibrant yellow eyes" + ], + "drives": ["Devour"], + "tactics": [ + "Lay in wait", + "Mesmerizing gaze", + "Sudden bite", + "Crush" + ], + "description": "Basilisks dwell in the [Flooded Lands](id:classic/atlas/ironlands/flooded_lands), lurking in the murky waters of the swamps or within marshy thickets. There, they wait patiently for prey. They regularly feed on marsh rats or deer, but will eagerly make a meal out of a passing Ironlander.", + "quest_starter": "The adventurer set out to slay a basilisk, only to become its next meal. Because the serpent digests its prey slowly, the remains of the adventurer are still undoubtedly within the beast—along with the heirloom sword he wielded. What is your relationship to this person? Why is recovering the sword so important to you?", + "your_truth": "Some piece of a basilisk anatomy is prized by the Ironlanders. What is it? How is it used?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 151, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "elder_beast": { + "_id": "classic/npcs/beasts/elder_beast", + "type": "npc", + "name": "Elder Beast", + "rank": 4, + "nature": "Beast", + "features": [ + "Twice the size of their common kin, or more", + "Red eyes" + ], + "drives": ["Dominate"], + "tactics": ["Intimidating display", "Overwhelming attack"], + "description": "Elder beasts—wolves, bears and boars—are huge, monstrous versions of their common kin. They are primarily solitary creatures, though elder wolves have been known to lead a pack of common wolves. They are not aggressive, but are protective of their lands and the creatures within it. Some say they are avatars of the old gods and as long-lived as the oldest trees.", + "quest_starter": "An elder wolf, white as snow, appears to you in a dream. When you wake, the memory of its piercing gaze lingers. Is the vision a dark portent or a promise? Why are you compelled to seek this beast out?", + "your_truth": "What people of the Ironlands revere and protect the elder beasts? What group hunts them and why?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 152, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "harrow_spider": { + "_id": "classic/npcs/beasts/harrow_spider", + "type": "npc", + "name": "Harrow Spider", + "rank": 2, + "nature": "Beast", + "features": [ + "Massive fangs", + "Long legs and bloated body", + "Eight iridescent black eyes" + ], + "drives": ["Lurk", "Feed"], + "tactics": ["Drop atop prey", "Bite with pincers", "Trap in webbing"], + "description": "These gigantic creatures are a menace in woodlands throughout the Ironlands. Despite their size, they move through high branches with unnatural grace, dropping suddenly to grapple their prey and entomb them in webbing.", + "quest_starter": "A brood of harrow spiders attacked a contingent of Ironlanders. The single survivor tells of the horrifying encounter and the monstrous brood mother—a harrow spider larger and stronger than a warhorse. What was this group’s mission? What important item are you sworn to recover from one of the victims?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 153, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "leviathan": { + "_id": "classic/npcs/beasts/leviathan", + "type": "npc", + "name": "Leviathan", + "rank": 5, + "nature": "Beast", + "features": [ + "Massive bulk", + "Flesh as tough as iron", + "Cold black eyes", + "Sinuous grace" + ], + "drives": ["Slumber in the depths", "Destroy those who trespass"], + "tactics": [ + "Rise from the depths", + "Ram and swamp ships", + "Devour prey whole" + ], + "description": "These massive sea beasts lurk in the darkness of the deepest fjords and in the abyssal depths beyond the [Barrier Islands](id:classic/atlas/ironlands/barrier_islands). They sometimes surface to hunt within shallower waters. They will indiscriminately destroy any Ironlander craft which stray to close to their hunting grounds.\n\nWatchful sailors might catch sight of a leviathan circling their boat, studying them, in the moments before it attacks. Their dagger-shaped head is as tough and destructive as any battering ram, able to shatter a ship in a single blow.", + "quest_starter": "A leviathan lurks off the coast, preying on fishing boats and trade ships. Among the dead is someone important to you. Who is it? You have vowed to send this beast back to the depths, but doing so will require a mythic weapon—The Abyssal Harpoon, an [Old World](id:classic/truths/old_world) artifact said to be carved from the bones of a long-dead sea god. Where is this weapon rumored to be held?", + "your_truth": "Some coastal people believe leviathans are a manifestation of an ancient spirit. What is it?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 154, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "mammoth": { + "_id": "classic/npcs/beasts/mammoth", + "type": "npc", + "name": "Mammoth", + "rank": 4, + "nature": "Beast", + "features": [ + "Woolly fur", + "Large head and curved tusks", + "Prehensile trunk" + ], + "drives": [ + "Migrate to fertile ground", + "Forage for food", + "Protect the young of the herd" + ], + "tactics": ["Form a protective circle", "Charge", "Trample", "Gore"], + "description": "These beasts resemble the elephants of the [Old World](id:classic/truths/old_world)’s southern realms, but are larger and covered in a coat of thick fur. They travel in herds among the [Tempest Hills](id:classic/atlas/ironlands/tempest_hills), migrating south with the winter and north with the spring. They are not aggressive creatures, but are fearless and will fight to the death to protect their young.\n\nA herd of mammoths is an amazing and humbling sight, but smart Ironlanders keep their distance and stay upwind.", + "quest_starter": "A mammoth calf wanders alone into an Ironlander settlement. Why do you swear to reunite it with its herd?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 155, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "wyvern": { + "_id": "classic/npcs/beasts/wyvern", + "type": "npc", + "name": "Wyvern", + "rank": 4, + "nature": "Beast", + "features": [ + "Huge bat-like wings", + "Rows of teeth each the size of a knife", + "Thick hide with a metallic sheen", + "Long tail" + ], + "drives": ["Watch for prey from high above", "Feed"], + "tactics": [ + "Swoop down", + "Snap up prey", + "Fearsome roar", + "Bash with tail" + ], + "description": "There are several breeds of wyverns in the Ironlands. To the west, tawny wyverns nest in the cliffs of the [Barrier Islands](id:classic/atlas/ironlands/barrier_islands) and [Ragged Coast](id:classic/atlas/ironlands/ragged_coast), diving for fish in the surrounding waters. Inland, the verdant wyverns dwell in forested regions. The largest and most fearsome breed, the iron wyverns, hunt among the [Tempest Hills](id:classic/atlas/ironlands/tempest_hills) and along the flanks of the [Veiled Mountains](classic/atlas/ironlands/veiled_mountains).\n\nAll wyverns have wolfish heads with wide jaws, thick bodies, and sinuous tails. They have short hind limbs and elongated forelimbs which extend along their wings. In flight, they are a terrifying but awe-inspiring creature. On the ground, they lumber heavily on all four limbs, their wings folded back, jaws agape, gaze fixed on their prey. They are the grim cruelty of the Ironlands given form. They are death.", + "quest_starter": "Ancient cave paintings in the [Tempest Hills](id:classic/atlas/ironlands/tempest_hills) show humanoids riding atop wyverns. Perhaps these beasts can be tamed. Why are you obsessed with this possibility?", + "your_truth": "Rumors persist of a wyvern graveyard where wyverns instinctively go when their death is near. Where is this supposedly located? In what way do Ironlanders make use of wyvern bones?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 156, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 151, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "horrors": { + "_id": "classic/collections/npcs/horrors", + "type": "npc_collection", + "name": "Horrors", + "summary": "__Horrors__ are supernatural beings.", + "description": "Horrors are supernatural entities. In the [Old World](id:classic/truths/old_world), they were superstition and legend. Here, they are nightmares made real. The Ironlands is fertile ground for darkness and evil to take hold, spawning these undead beings of pure vengeance or mindless hate.\n\nMany horrors can be temporarily defeated through physical attacks, but cannot be killed. They are beyond death.", + "contents": { + "bonewalker": { + "_id": "classic/npcs/horrors/bonewalker", + "type": "npc", + "name": "Bonewalker", + "rank": 2, + "nature": "Horror", + "features": [ + "Skeletal corpse", + "Eye sockets glowing with a fetid red light", + "Tattered remains of clothing and armor" + ], + "drives": ["Destroy life"], + "tactics": [ + "Rush with unexpected speed", + "Attack with the weapons they bore in life", + "Grasp and claw" + ], + "description": "Bonewalkers are human remains given unnatural life. The source of the dark energy that animates them is a mystery. Some say it is the will of dark gods. Some say an ancient evil permeates this land and seeps into porous bones of the dead. Or, perhaps it is the work of corrupt mystics.\n\nBonewalkers usually roam the location of their final resting place—a burial site, a cursed battlefield, or a settlement blighted by disease or violence. Nothing remains of their previous selves. They are soulless monsters driven only to destroy the living.", + "quest_starter": "A horde of bonewalkers marches relentlessly towards the [Havens](id:classic/atlas/ironlands/havens). What dark force has gathered this army of the undead? How will you stop them?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 157, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "frostbound": { + "_id": "classic/npcs/horrors/frostbound", + "type": "npc", + "name": "Frostbound", + "rank": 3, + "nature": "Horror", + "features": [ + "Mummified, desiccated flesh", + "Frozen blue eyes", + "A sorrowful, hollow scream" + ], + "drives": ["Absorb the warmth of the living"], + "tactics": ["Sense heat", "Life-draining grasp"], + "description": "Some who fall prey to the long winters or the wild storms of the northern regions are given a horrible new life as the frostbound. These animated corpses are cursed to forever seek out the warmth their death took from them.", + "quest_starter": "A group of frostbound lurk along a mountain trail. This path is the only safe route to the lowlands from a mining village.", + "your_truth": "Can creatures other than Ironlanders become frostbound? If so, undeath gives them uncanny strength. Make them one rank higher than their living form.", + "_source": { + "title": "Ironsworn Rulebook", + "page": 158, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "chimera": { + "_id": "classic/npcs/horrors/chimera", + "type": "npc", + "name": "Chimera", + "rank": 4, + "nature": "Horror", + "features": [ + "Shambling mass of dead creatures and offal", + "Rotting stench" + ], + "drives": ["Insatiable hunger"], + "tactics": [ + "Horrifying wail", + "Relentless assault", + "Claw, bite and rend" + ], + "description": "A chimera is the corrupted form of animal flesh given unnatural life. Its body is a collection of various dead creatures, fused together into a twisted, massive entity which knows only pain and hunger. When a dozen blood-tinged eyes focus on you, when its gibbering mouths open at once to scream, your only hope is a quick death.", + "quest_starter": "Multiple chimera have spawned from the heart of a deep wood. What evil is at work there?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 158, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "haunt": { + "_id": "classic/npcs/horrors/haunt", + "type": "npc", + "name": "Haunt", + "rank": 2, + "nature": "Horror", + "features": [ + "Subtle, unsettling manifestation", + "Appear as they did in life", + "Lay bare the ravages of death", + "Stench of the grave" + ], + "drives": ["Torment the living", "Find rest"], + "tactics": [ + "Vanish and reappear", + "Horrifying visage", + "Unleash chaos" + ], + "description": "Haunts are restless spirits bound to this world by a traumatic or unjust death. They may be tied to a location, an object, or even a person.\n\nA haunt who manifests as a physical being can be dispelled by overcoming them in a fight, but only temporarily. They will only be at peace when their death is avenged or resolved. Some say a haunt can be banished, but these rituals are a lost art.", + "quest_starter": "You are plagued by a haunt. Who is it? What do they want of you?", + "your_truth": "When someone dies a violent death, or at the hand of another, they are often laid to rest using a specific, ceremonial rite. This, it is believed, prevents them from returning as a haunt. What is this ritual? What rare material is required?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 159, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "hollow": { + "_id": "classic/npcs/horrors/hollow", + "type": "npc", + "name": "Hollow", + "rank": 4, + "nature": "Horror", + "features": [ + "Vaguely humanoid shape formed of earth, plant and vermin", + "Empty black eyes behind an elven mask", + "Smells of wet soil and dead things" + ], + "drives": ["See justice done"], + "tactics": [ + "Bash with savage strength", + "Draw in a whirlwind of materials to reform and enlarge", + "Envelop and suffocate" + ], + "description": "It is said that [elves](id:classic/npcs/firstborn/elf) who die an unjust death or have cause to seek retribution can rise as a hollow. Their form is a rippling mass of dead leaves, plants, soil, carrion, and insects. They move with a nightmarish, shambling gait. Their face is the wooden mask they wore in life. Their voice is the rattle of the wind through dry leaves.\n\nAs with [haunts](id:classic/npcs/horrors/haunt), they can be temporarily defeated but cannot be killed by physical means. They are a relentless force. They will not stop until they enact their vengeance.", + "quest_starter": "A hollow terrorizes an Ironlander village. What does it seek? What will you do to stop it?", + "your_truth": "How do elven communities view a risen hollow? Are they seen as spirits of righteous vengeance or as dangerous aberrations?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 160, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "iron_revenant": { + "_id": "classic/npcs/horrors/iron_revenant", + "type": "npc", + "name": "Iron Revenant", + "rank": 4, + "nature": "Horror", + "features": [ + "Empty, patchwork shell of armor and other hunks of metal", + "Wielding iron weapons", + "A low, reverberating voice" + ], + "drives": ["Fulfill the vow", "Destroy any who stand in their way"], + "tactics": [ + "Steadfast attacks", + "Pull in iron with an unyielding, magnetic force" + ], + "description": "Some vows are held so fiercely that they survive even after death. An iron revenant is an incorporeal force of furious resolve, the unfinished vow of an Ironsworn given horrible form as a construct of metal.\n\nAttacks may slow them down or temporarily break apart their armored form, but they have no flesh to pierce and cannot be killed. An iron revenant will not stop until their vow is fulfilled.", + "quest_starter": "Someone you knew has taken form as an iron revenant. Who is it? What is their vow?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 161, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "sodden": { + "_id": "classic/npcs/horrors/sodden", + "type": "npc", + "name": "Sodden", + "rank": 3, + "nature": "Horror", + "features": ["Milky eyes", "Mottled flesh"], + "drives": ["Drown the living"], + "tactics": [ + "Draw victims into the water", + "Grab and scratch with jagged claws", + "Chilling embrace", + "Drag into the depths" + ], + "description": "A sodden is the restless spirit of someone who drowned or was put to rest in water. They can appear in seas, rivers, lakes, ponds or marshes. It is said that their loneliness compels them to draw living victims into their watery lairs.\n\nA sodden is not confined to its resting place. In fact, some believe that surviving an encounter with a sodden will leave you vulnerable around any body of water until the spirit finishes its work.", + "quest_starter": "Someone you know died and appears to you as a sodden. Who are they? Can anything be done to put them to rest?", + "your_truth": "Many Ironlanders habitually perform a quick ritual when near a body of water, believing it keeps any lurking sodden at bay. What do they do? Is there any truth to this custom?", + "_source": { + "title": "Ironsworn Rulebook", + "page": 162, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "_source": { + "title": "Ironsworn Rulebook", + "page": 157, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + }, + "rarities": {}, + "delve_sites": {}, + "site_domains": {}, + "site_themes": {}, + "truths": { + "old_world": { + "_id": "classic/truths/old_world", + "name": "The Old World", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "The savage clans called the Skulde invaded the kingdoms of the Old World. Our armies fell. Most were killed or taken into slavery. Those who escaped set sail aboard anything that would float. After an arduous months-long voyage, the survivors made landfall upon the Ironlands.", + "quest_starter": "You are a descendant of the Skulde. Because of your heritage, your family has long borne the distrust of your fellow Ironlanders. Now, a small force of Skulde have landed on our shores. Are they the harbinger of an invasion? Where do your loyalties lie?" + }, + { + "min": 34, + "max": 67, + "description": "The sickness moved like a horrible wave across the Old World, killing all in its path. Thousands fled aboard ships. However, the plague could not be outrun. On many ships, the disease was contained through ruthless measures—tossing overboard any who exhibited the slightest symptom. Other ships were forever lost. In the end, those who survived found the Ironlands and made it their new home. Some say we will forever be cursed by those we left behind.", + "quest_starter": "A settlement is stricken by disease. Though this sickness bears some similarities to the Old World plague, it doesn’t kill its victims. Instead, it changes them. How does this disease manifest? Why do you swear to seek out a cure?" + }, + { + "min": 68, + "max": 100, + "description": "The Old World could no longer sustain us. We were too large in number. We had felled the forests. Our crops withered in the barren ground. The cities and villages overflowed with desperate, hungry people. Petty kings battled for scraps. We cast our fate to the sea and found the Ironlands. A new world. A fresh start.", + "quest_starter": "Decades ago, the exodus ended. Since then, no ships have sailed here from the Old World. Until now. Word comes of a single ship, newly arrived across the vast ocean, grounded on the rocks of the Barrier Islands. When you hear the name of this ship, you swear to uncover the fate of its passengers. Why is it so important to you?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 123, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "iron": { + "_id": "classic/truths/iron", + "name": "Iron", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "The imposing hills and mountains of the Ironlands are rich in iron ore. Most prized of all is the star-forged black iron.", + "quest_starter": "The caravan, bound for the distant southlands, left the mining settlement last season but never arrived at its destination. It carried a bounty of black iron. Why is finding this lost caravan so important to you?" + }, + { + "min": 34, + "max": 67, + "description": "The weather is bleak. Rain and wind sweep in from the ocean. The winters are long and bitter. One of the first settlers complained, \"Only those made of iron dare live in this foul place\" – and thus our land was named.", + "quest_starter": "The harvest fell short. The unrelenting snows left the village isolated. The food is running out. What will you do to see these people through this harsh season?" + }, + { + "min": 68, + "max": 100, + "description": "Inscrutable metal pillars are found throughout the land. They are iron gray, and smooth as river stone. No one knows their purpose. Some say they are as old as the world. Some, such as the Iron Priests, worship them and swear vows upon them. Most make the warding sign and hurry along their way when they happen across one. The pillars do not tarnish, and even the sharpest blade cannot mark them.", + "quest_starter": "Your dreams are haunted by visions of a pillar which stands in an unfamiliar landscape. What do you see? Why are you sworn to seek it out?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 124, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "legacies": { + "_id": "classic/truths/legacies", + "name": "Legacies", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "We are the first humans to walk these lands.", + "quest_starter": "In the writings of one of the first settlers, there is a description of a glade in the heart of the Deep Wilds. The spirits of this place are said to grant a miraculous blessing. What boon does it bestow?" + }, + { + "min": 34, + "max": 67, + "description": "Other humans sailed here from the Old World untold years ago, but all that is left of them is a savage, feral people we call the broken. Is their fate to become our own?", + "quest_starter": "You find a child—one of the broken. It is wounded, and hunted by others of its kind. Do you protect it, even at the risk of inviting the wrath of the broken tribes?" + }, + { + "min": 68, + "max": 100, + "description": "Before the Ironlanders, before even the firstborn, another people lived here. Their ancient ruins are found throughout the Ironlands.", + "quest_starter": "Miners uncovered an underground ruin. Thereafter, the people of the settlement are haunted by strange dreams. The ruins call to them, they say. Several have disappeared in that dark, ancient place – including someone important to you." + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 124, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "communities": { + "_id": "classic/truths/communities", + "name": "Communities", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "We are few in number in this accursed land. Most rarely have contact with anyone outside our own small steading or village, and strangers are viewed with deep suspicion.", + "quest_starter": "In the dead of winter, a desperate man arrives at a snowbound steading. He is wounded, hungry, and nearly frozen to death. His family has been taken. By whom? Will you brave the merciless winter to save them?" + }, + { + "min": 34, + "max": 67, + "description": "We live in communities called circles. These are settlements ranging in size from a steading with a few families to a village of several hundred. Some circles belong to nomadic folk. Some powerful circles might include a cluster of settlements. We trade (and sometimes feud) with other circles.", + "quest_starter": "A decades-long feud between two circles has flared into open conflict. What is the cause of this dispute? Do you join in the fight, or swear to put a stop to it?" + }, + { + "min": 68, + "max": 100, + "description": "We have forged the Ironlands into a home. Villages within the Havens are connected by well-trod roads. Trade caravans travel between settlements in the Havens and those in outlying regions. Even so, much of this land is untamed.", + "quest_starter": "Caravans are forced to pay for passage along a trade road. This payment, one-quarter of the goods carried, leaves several communities without sufficient winter stores. Who is making these demands? How will you set things right?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 125, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "leaders": { + "_id": "classic/truths/leaders", + "name": "Leaders", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "Leadership is as varied as the people. Some communities are governed by the head of a powerful family. Or, they have a council of elders who make decisions and settle disputes. In others, the priests hold sway. For some, it is duels in the circle that decide.", + "quest_starter": "You have vivid reoccurring dreams of an Ironlands city. It has strong stone walls, bustling markets, and a keep on a high hill. And so many people! Nowhere in the Ironlands does such a city exist. In your dreams, you are the ruler of this city. Somehow, no matter how long it takes, you must make this vision a reality." + }, + { + "min": 34, + "max": 67, + "description": "Each of our communities has its own leader, called an overseer. Every seventh spring, the people affirm their current overseer or choose a new one. Some overseers wear the iron circlet reluctantly, while others thirst for power and gain it through schemes or threats.", + "quest_starter": "An overseer has fallen ill. She is sure to die without help, and the illness is unknown to the village healer. Poison, or perhaps even foul magic, is suspected. The families in the community are now at each other’s throats as they position their preferred candidates to take up the iron circlet. Will you discover the truth of the overseer’s illness and restore her to health?" + }, + { + "min": 68, + "max": 100, + "description": "Numerous clan-chiefs rule over petty domains. Most are intent on becoming the one true king. Their squabbles will be our undoing.", + "quest_starter": "You secretly possess one-half of the True Crown, an Old World relic. Centuries ago, this crown was broken in two when an assassin’s axe split the head of the supreme ruler. You are descended from that lineage. Who gave you this relic? Will you find the other half of the broken crown and attempt to unite the clans under your rule? Or, do you see another use for it?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 125, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "defense": { + "_id": "classic/truths/defense", + "name": "Defense", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "Here in the Ironlands, supplies are too precious, and the lands are too sparsely populated, to support organized fighting forces. When a community is threatened, the people stand together to protect their own.", + "quest_starter": "A settlement is unable, or unwilling, to defend itself against an imminent threat. Why? What peril do they face? What will you do to protect them?" + }, + { + "min": 34, + "max": 67, + "description": "The wardens are our soldiers, guards, and militia. They serve their communities by standing sentry, patrolling surrounding lands, and organizing defenses in times of crisis. Most have strong ties to their community. Others, called free wardens, are wandering mercenaries who hire on to serve a community or protect caravans.", + "quest_starter": "You come upon a dying warden. She tells you of an important mission, and charges you with its completion. \"Swear to me,\" she says, reaching out with a bloodied hand to give you an object crucial to the quest. What is it?" + }, + { + "min": 68, + "max": 100, + "description": "Our warbands are rallied to strike at our enemies or defend our holdings. Though not nearly as impressive as the armies that once marched across the Old World, these forces are as well-trained and equipped as their communities can manage. The banners of the warbands are adorned with depictions of their Old World history and Ironland victories.", + "quest_starter": "A warband was wiped out in a battle against an overwhelming enemy. What is your connection to this band? Who defeated them? Will you carry their banner on a quest for vengeance, or do you vow to see it brought home to a place of honor?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 126, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "mysticism": { + "_id": "classic/truths/mysticism", + "name": "Mysticism", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "Some still find comfort in the old ways. They call on mystics to divine the fortune of their newborn, or ask them to perform rituals to invoke a bountiful harvest. Others act out of fear against those who they suspect of having power. However, most folk believe true magic—if it ever existed—is lost to us now.", + "quest_starter": "Someone close to you is accused of cursing a settlement, causing fields to go fallow and cattle to become sick. What is the evidence of this? Will you defend this person and uncover the true cause of the settlement’s troubles?" + }, + { + "min": 68, + "max": 100, + "description": "Magic is rare and dangerous, but those few who wield the power are truly gifted.", + "quest_starter": "You have heard stories of someone who wields true power. They live in an isolated settlement far away. Who told you of this mystic? Are they feared or respected? Why do you swear to seek them out?" + }, + { + "min": 68, + "max": 100, + "description": "Magic courses through this land as the rivers flow through the hills. The power is there for those who choose to harness it, and even the common folk often know a helpful ritual or two.", + "quest_starter": "Someone you love walked the paths of power, and succumbed to it. Who are they? Why did they fall into darkness? Where are they now? Do you seek to save them or defeat them?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 127, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "religion": { + "_id": "classic/truths/religion", + "name": "Religion", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "A few Ironlanders still make signs or mumble prayers out of habit or tradition, but most believe the gods long ago abandoned us.", + "quest_starter": "A charismatic Ironlander, encouraging her followers to renounce the vestiges of Old World religions, proposes a new path for this new world. What doctrine does she teach? What does she seek to achieve? Are you sworn to aid or stop her?" + }, + { + "min": 34, + "max": 67, + "description": "The people honor old gods and new. In this harsh land, a prayer is a simple but powerful comfort.", + "quest_starter": "An Ironlander is determined to make a pilgrimage into dangerous lands. What holy place do they seek? Why do you swear to aid them on this journey? Who seeks to stop them and why?" + }, + { + "min": 68, + "max": 100, + "description": "Our gods are many. They make themselves known through manifestations and miracles. Some say they even secretly walk among us. The priests convey the will of the gods and hold sway over many communities.", + "quest_starter": "You bear the mark of a god. What is it? The priests declare this as a sign you are chosen to fulfill a destiny. Do you accept this fate, and swear to see it through, or are you determined to see it undone? What force opposes you?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 127, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "firstborn": { + "_id": "classic/truths/firstborn", + "name": "Firstborn", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "The firstborn have passed into legend. Some say the remnants of the old tribes still dwell in deep forests or high mountains. Most believe they were never anything more than myth.", + "quest_starter": "Someone obsessed with the firstborn wants to find evidence of their existence. This will require an expedition into the far reaches of the Ironlands. What is your role in this mission?" + }, + { + "min": 34, + "max": 67, + "description": "The firstborn live in isolation and are fiercely protective of their own lands.", + "quest_starter": "The elf, outcast from his kind, lives with Ironlanders. Over time, he became a part of the community. Now, he is dying. He yearns to return to his people before he passes. Does he seek absolution or justice? Why do you swear to help him? What force opposes his return?" + }, + { + "min": 68, + "max": 100, + "description": "The firstborn hold sway in the Ironlands. The elves of the deep forests and the giants of the hills tolerate us and even trade with us—for now. Ironlanders fear the day they decide we are no longer welcome here.", + "quest_starter": "Humans and giants are on the brink of war. What has happened? Who do you side with? Can anything be done to defuse the situation?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 128, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "beasts": { + "_id": "classic/truths/beasts", + "name": "Beasts", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "The beasts of old are nothing but legend. A few who travel into the deep forests and high mountains return with wild tales of monstrous creatures, but they are obviously delusional. No such things exist.", + "quest_starter": "You were witness to an attack by what you thought was an animal of monstrous proportions. No one believes you. In fact, you are accused of the murder you blame on this beast. How can you prove your innocence? Can you even trust your own memories of the event?" + }, + { + "min": 34, + "max": 67, + "description": "Monstrous beasts stalk the wild areas of the Ironlands.", + "quest_starter": "A prominent Ironlander is consumed with the need to bring vengeance upon a specific beast. What makes this creature distinctive? How did it earn the wrath of this Ironlander? Do you aid this person in their quest, or act to prevent their blind hate from destroying more than just the beast?" + }, + { + "min": 68, + "max": 100, + "description": "Beasts of all sorts roam the Ironlands. They dwell primarily in the reaches, but range into the settled lands to hunt. There, they often prey on cattle, but attacks on travelers, caravans, or even settlements are not uncommon.", + "quest_starter": "Professional slayers earn their keep by killing beasts. This particular slayer, famed throughout the Ironlands for her numerous kills, has gone missing on a hunt. Did she finally meet her match, or is something more nefarious at play. What is your connection to her?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 128, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + }, + "horrors": { + "_id": "classic/truths/horrors", + "name": "Horrors", + "dice": "1d100", + "options": [ + { + "min": 1, + "max": 33, + "description": "Nothing but stories to frighten children.", + "quest_starter": "The murders began last season. Local gossip suggests they are the work of a vengeful horror, but there may be more mundane forces at work. What is your connection to these killings? What will you do to stop them?" + }, + { + "min": 34, + "max": 67, + "description": "We are wary of dark forests and deep waterways, for monsters lurk in those places. In the depths of the long-night, when all is wreathed in darkness, only fools venture beyond their homes.", + "quest_starter": "You bear the scars of an attack by a horror. What was it? Are those scars physical, emotional, or both? How do you seek to make yourself whole again?" + }, + { + "min": 68, + "max": 100, + "description": "The dead do not rest in the Ironlands. At night we light torches, scatter salt, and post sentries at the gate. It is not enough. They are coming.", + "quest_starter": "A group of Ironlanders establish a settlement in a territory cursed by a malevolent horror. What evil plagues this land? Why are the Ironlanders so intent on settling here? Will you aid them, or attempt to force them to give up this foolish undertaking?" + } + ], + "_source": { + "title": "Ironsworn Rulebook", + "page": 129, + "authors": [ + { + "name": "Shawn Tomkin" + } + ], + "date": "2019-06-05", + "url": "https://ironswornrpg.com", + "license": "https://creativecommons.org/licenses/by-nc-sa/4.0" + } + } + } +} diff --git a/src/migration/history/v0.0.10/datasworn-source.schema.json b/src/migration/history/v0.0.10/datasworn-source.schema.json new file mode 100644 index 000000000..afd57311c --- /dev/null +++ b/src/migration/history/v0.0.10/datasworn-source.schema.json @@ -0,0 +1,8777 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://ironswornrpg.com/datasworn-source.schema.json", + "$ref": "#/definitions/SourceRoot", + "title": "DataswornSource v0.0.10", + "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": [ + { + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator.", + "required": ["type"], + "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" + } + } + ] + }, + { + "type": "object", + "required": ["datasworn_version", "ruleset"], + "properties": { + "datasworn_version": { + "type": "string", + "description": "The version of the Datasworn format used by this data.", + "const": "0.0.10", + "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-]+)*))?$" + }, + "ruleset": { + "$ref": "#/definitions/RulesetId" + } + }, + "additionalProperties": true + } + ] + } + ] + }, + "RulesPackage": { + "title": "RulesPackage", + "type": "object", + "description": "Describes game rules compatible with the Ironsworn tabletop role-playing game by Shawn Tomkin.", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator.", + "required": ["type"], + "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" + } + } + ] + }, + "Ruleset": { + "title": "Ruleset", + "type": "object", + "description": "A standalone Datasworn package that describes its own ruleset.", + "required": ["_id", "datasworn_version", "type"], + "properties": { + "_id": { + "$ref": "#/definitions/RulesetId" + }, + "datasworn_version": { + "type": "string", + "description": "The version of the Datasworn format used by this data.", + "const": "0.0.10", + "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-]+)*))?$" + }, + "type": { + "type": "string", + "const": "ruleset" + }, + "title": { + "$ref": "#/definitions/SourceTitle" + }, + "authors": { + "type": "array", + "description": "Lists authors credited by the source material.", + "items": { + "$ref": "#/definitions/AuthorInfo" + }, + "minItems": 1 + }, + "date": { + "$ref": "#/definitions/Date", + "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." + }, + "url": { + "$ref": "#/definitions/WebUrl", + "description": "A URL where the source document is available.", + "examples": ["https://ironswornrpg.com"] + }, + "license": { + "$ref": "#/definitions/License" + }, + "rules": { + "$ref": "#/definitions/Rules" + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "oracles": { + "type": "object", + "description": "A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleTablesCollection" + } + } + }, + "assets": { + "type": "object", + "description": "A dictionary object containing asset collections, which contain assets.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetCollection" + } + } + }, + "atlas": { + "type": "object", + "description": "A dictionary object containing atlas collections, which contain atlas entries.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AtlasCollection" + } + } + }, + "moves": { + "type": "object", + "description": "A dictionary object containing move categories, which contain moves.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/MoveCategory" + } + } + }, + "npcs": { + "type": "object", + "description": "A dictionary object containing NPC collections, which contain NPCs.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/NpcCollection" + } + } + }, + "rarities": { + "type": "object", + "description": "A dictionary object containing rarities, like those presented in Ironsworn: Delve.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Rarity" + } + } + }, + "delve_sites": { + "type": "object", + "description": "A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSite" + } + } + }, + "site_domains": { + "type": "object", + "description": "A dictionary object containing delve site domains.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSiteDomain" + } + } + }, + "site_themes": { + "type": "object", + "description": "A dictionary object containing delve site themes.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSiteTheme" + } + } + }, + "truths": { + "type": "object", + "description": "A dictionary object of truth categories.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Truth" + } + } + } + }, + "additionalProperties": true + }, + "Expansion": { + "title": "Expansion", + "type": "object", + "description": "A Datasworn package that relies on an external package to provide its ruleset.", + "required": ["_id", "datasworn_version", "type", "ruleset"], + "properties": { + "_id": { + "$ref": "#/definitions/ExpansionId" + }, + "datasworn_version": { + "type": "string", + "description": "The version of the Datasworn format used by this data.", + "const": "0.0.10", + "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-]+)*))?$" + }, + "type": { + "type": "string", + "const": "expansion" + }, + "ruleset": { + "$ref": "#/definitions/RulesetId" + }, + "title": { + "$ref": "#/definitions/SourceTitle" + }, + "authors": { + "type": "array", + "description": "Lists authors credited by the source material.", + "items": { + "$ref": "#/definitions/AuthorInfo" + }, + "minItems": 1 + }, + "date": { + "$ref": "#/definitions/Date", + "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." + }, + "url": { + "$ref": "#/definitions/WebUrl", + "description": "A URL where the source document is available.", + "examples": ["https://ironswornrpg.com"] + }, + "license": { + "$ref": "#/definitions/License" + }, + "rules": { + "$ref": "#/definitions/RulesExpansion" + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "oracles": { + "type": "object", + "description": "A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleTablesCollection" + } + } + }, + "assets": { + "type": "object", + "description": "A dictionary object containing asset collections, which contain assets.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetCollection" + } + } + }, + "atlas": { + "type": "object", + "description": "A dictionary object containing atlas collections, which contain atlas entries.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AtlasCollection" + } + } + }, + "moves": { + "type": "object", + "description": "A dictionary object containing move categories, which contain moves.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/MoveCategory" + } + } + }, + "npcs": { + "type": "object", + "description": "A dictionary object containing NPC collections, which contain NPCs.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/NpcCollection" + } + } + }, + "rarities": { + "type": "object", + "description": "A dictionary object containing rarities, like those presented in Ironsworn: Delve.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Rarity" + } + } + }, + "delve_sites": { + "type": "object", + "description": "A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSite" + } + } + }, + "site_domains": { + "type": "object", + "description": "A dictionary object containing delve site domains.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSiteDomain" + } + } + }, + "site_themes": { + "type": "object", + "description": "A dictionary object containing delve site themes.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/DelveSiteTheme" + } + } + }, + "truths": { + "type": "object", + "description": "A dictionary object of truth categories.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Truth" + } + } + } + }, + "additionalProperties": true + }, + "AssetAbilityId": { + "title": "AssetAbilityId", + "type": "string", + "description": "A unique ID for an AssetAbility.", + "pattern": "^([a-z0-9_]{3,})\\/assets\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)\\/abilities\\/(0|[1-9][0-9]*)$" + }, + "AssetCollectionId": { + "title": "AssetCollectionId", + "type": "string", + "description": "A unique ID for an AssetCollection.", + "pattern": "^([a-z0-9_]{3,})\\/collections\\/assets\\/([a-z][a-z_]*)$" + }, + "AssetCollectionIdWildcard": { + "title": "AssetCollectionIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple AssetCollections.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/collections\\/assets\\/(\\*|([a-z][a-z_]*))$" + }, + "AssetId": { + "title": "AssetId", + "type": "string", + "description": "A unique ID for an Asset.", + "pattern": "^([a-z0-9_]{3,})\\/assets\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)$" + }, + "AssetIdWildcard": { + "title": "AssetIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple Assets.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/assets\\/(\\*|([a-z][a-z_]*))\\/(\\*|([a-z][a-z_]*))$" + }, + "AtlasCollectionId": { + "title": "AtlasCollectionId", + "type": "string", + "description": "A unique ID for an AtlasCollection.", + "examples": ["classic/collections/atlas/ironlands"], + "pattern": "^([a-z0-9_]{3,})\\/collections\\/atlas\\/([a-z][a-z_]*)$" + }, + "AtlasCollectionIdWildcard": { + "title": "AtlasCollectionIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple AtlasCollections.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/collections\\/atlas\\/(\\*|([a-z][a-z_]*))$" + }, + "AtlasEntryId": { + "title": "AtlasEntryId", + "type": "string", + "description": "A unique ID for an AtlasEntry.", + "examples": ["classic/atlas/ironlands/hinterlands"], + "pattern": "^([a-z0-9_]{3,})\\/atlas\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)$" + }, + "AtlasEntryIdWildcard": { + "title": "AtlasEntryIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple AtlasEntrys.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/atlas\\/(\\*|([a-z][a-z_]*))\\/(\\*|([a-z][a-z_]*))$" + }, + "ConditionMeterRuleId": { + "title": "ConditionMeterRuleId", + "type": "string", + "description": "A unique ID for a ConditionMeterRule.", + "examples": [ + "classic/rules/condition_meters/health", + "starforged/rules/condition_meters/spirit" + ], + "pattern": "^([a-z0-9_]{3,})\\/rules\\/condition_meters\\/([a-z][a-z_]*)$" + }, + "DelveSiteDomainId": { + "title": "DelveSiteDomainId", + "type": "string", + "description": "A unique ID for a DelveSiteDomain.", + "examples": ["delve/site_domains/shadowfen"], + "pattern": "^([a-z0-9_]{3,})\\/site_domains\\/([a-z][a-z_]*)$" + }, + "DelveSiteDomainIdWildcard": { + "title": "DelveSiteDomainIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple DelveSiteDomains.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/site_domains\\/(\\*|([a-z][a-z_]*))$" + }, + "DelveSiteId": { + "title": "DelveSiteId", + "type": "string", + "description": "A unique ID for a DelveSite.", + "examples": ["delve/delve_sites/alvas_rest"], + "pattern": "^([a-z0-9_]{3,})\\/delve_sites\\/([a-z][a-z_]*)$" + }, + "DelveSiteIdWildcard": { + "title": "DelveSiteIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple DelveSites.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/delve_sites\\/(\\*|([a-z][a-z_]*))$" + }, + "DelveSiteThemeId": { + "title": "DelveSiteThemeId", + "type": "string", + "description": "A unique ID for a DelveSiteTheme.", + "examples": ["delve/site_themes/hallowed"], + "pattern": "^([a-z0-9_]{3,})\\/site_themes\\/([a-z][a-z_]*)$" + }, + "DelveSiteThemeIdWildcard": { + "title": "DelveSiteThemeIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple DelveSiteThemes.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/site_themes\\/(\\*|([a-z][a-z_]*))$" + }, + "DictKey": { + "title": "DictKey", + "type": "string", + "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.", + "pattern": "^([a-z][a-z_]*)$" + }, + "ExpansionId": { + "title": "ExpansionId", + "type": "string", + "description": "The ID of a Datasworn package that relies on an external package to provide its ruleset.", + "examples": ["delve"], + "pattern": "^([a-z0-9_]{3,})$" + }, + "ImpactRuleCollectionId": { + "title": "ImpactRuleCollectionId", + "type": "string", + "description": "A unique ID for an ImpactRuleCollection.", + "examples": [ + "classic/collections/rules/impacts/conditions", + "starforged/collections/rules/impacts/vehicle_troubles" + ], + "pattern": "^([a-z0-9_]{3,})\\/collections\\/rules\\/impacts\\/([a-z][a-z_]*)$" + }, + "ImpactRuleId": { + "title": "ImpactRuleId", + "type": "string", + "description": "A unique ID for an ImpactRule.", + "examples": [ + "classic/rules/impacts/conditions/wounded", + "starforged/rules/impacts/vehicle_troubles/battered" + ], + "pattern": "^([a-z0-9_]{3,})\\/rules\\/impacts\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)$" + }, + "MoveCategoryId": { + "title": "MoveCategoryId", + "type": "string", + "description": "A unique ID for a MoveCategory.", + "examples": ["starforged/collections/moves/adventure"], + "pattern": "^([a-z0-9_]{3,})\\/collections\\/moves\\/([a-z][a-z_]*)$" + }, + "MoveCategoryIdWildcard": { + "title": "MoveCategoryIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple MoveCategorys.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/collections\\/moves\\/(\\*|([a-z][a-z_]*))$" + }, + "MoveId": { + "title": "MoveId", + "description": "A move ID, for a standard move or a unique asset move", + "examples": [ + "classic/moves/combat/strike", + "starforged/assets/module/grappler/abilities/0/moves/ready_grappler" + ], + "anyOf": [ + { + "type": "string", + "description": "A move ID for a standard move.", + "pattern": "^([a-z0-9_]{3,})\\/moves\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)$" + }, + { + "type": "string", + "description": "A move ID for an asset move.", + "pattern": "^([a-z0-9_]{3,})\\/assets\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)\\/abilities\\/(0|[1-9][0-9]*)\\/moves\\/([a-z][a-z_]*)$" + } + ] + }, + "MoveIdWildcard": { + "title": "MoveIdWildcard", + "description": "A move ID with wildcards.", + "examples": [ + "*/moves/*/face_danger", + "*/assets/ritual/*/abilities/*/moves/*" + ], + "anyOf": [ + { + "type": "string", + "description": "A wildcarded ID that can be used to match multiple StandardMoves.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/moves\\/(\\*|([a-z][a-z_]*))\\/(\\*|([a-z][a-z_]*))$" + }, + { + "type": "string", + "description": "A wildcarded ID that can be used to match multiple AssetMoves.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/assets\\/(\\*|([a-z][a-z_]*))\\/(\\*|([a-z][a-z_]*))\\/abilities\\/(\\*|(0|[1-9][0-9]*))\\/moves\\/(\\*|([a-z][a-z_]*))$" + } + ] + }, + "NpcCollectionId": { + "title": "NpcCollectionId", + "type": "string", + "description": "A unique ID for a NpcCollection.", + "examples": [ + "classic/collections/npcs/firstborn", + "starforged/collections/npcs/sample_npcs" + ], + "pattern": "^([a-z0-9_]{3,})\\/collections\\/npcs\\/([a-z][a-z_]*)$" + }, + "NpcCollectionIdWildcard": { + "title": "NpcCollectionIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple NpcCollections.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/collections\\/npcs\\/(\\*|([a-z][a-z_]*))$" + }, + "NpcId": { + "title": "NpcId", + "type": "string", + "description": "A unique ID for a Npc.", + "examples": [ + "classic/npcs/firstborn/elf", + "starforged/npcs/sample_npcs/chiton" + ], + "pattern": "^([a-z0-9_]{3,})\\/npcs\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)$" + }, + "NpcIdWildcard": { + "title": "NpcIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple Npcs.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/npcs\\/(\\*|([a-z][a-z_]*))\\/(\\*|([a-z][a-z_]*))$" + }, + "NpcVariantId": { + "title": "NpcVariantId", + "type": "string", + "description": "A unique ID for a NpcVariant.", + "examples": [ + "starforged/npcs/sample_npcs/chiton/variants/chiton_drone_pack" + ], + "pattern": "^([a-z0-9_]{3,})\\/npcs\\/([a-z][a-z_]*)\\/([a-z][a-z_]*)\\/variants\\/([a-z][a-z_]*)$" + }, + "OracleCollectionId": { + "title": "OracleCollectionId", + "type": "string", + "description": "A unique ID for an OracleCollection.", + "examples": [ + "starforged/collections/oracles/core", + "starforged/collections/oracles/character/names", + "starforged/collections/oracles/planets/furnace/settlements" + ], + "pattern": "^([a-z0-9_]{3,})\\/collections\\/oracles(\\/([a-z][a-z_]*)){1,3}$" + }, + "OracleCollectionIdWildcard": { + "title": "OracleCollectionIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple OracleCollections.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/collections\\/oracles((\\/([a-z][a-z_]*)){1,3}|\\/\\*\\*|\\/\\*\\*\\/([a-z][a-z_]*)|\\/([a-z][a-z_]*)\\/\\*\\*)$" + }, + "OracleRollableId": { + "title": "OracleRollableId", + "examples": [ + "starforged/oracles/core/action", + "starforged/oracles/character/names/given", + "starforged/oracles/planets/furnace/settlements/terminus" + ], + "anyOf": [ + { + "title": "OracleRollableId", + "type": "string", + "description": "A unique ID for an OracleRollable.", + "examples": [ + "starforged/oracles/core/action", + "starforged/oracles/character/names/given", + "starforged/oracles/planets/furnace/settlements/terminus" + ], + "pattern": "^([a-z0-9_]{3,})\\/oracles(\\/([a-z][a-z_]*)){1,3}\\/([a-z][a-z_]*)$" + }, + { + "title": "OracleRollableId", + "type": "string", + "description": "A unique ID for an OracleRollable.", + "examples": [ + "starforged/oracles/core/action", + "starforged/oracles/character/names/given", + "starforged/oracles/planets/furnace/settlements/terminus" + ], + "pattern": "^([a-z0-9_]{3,})\\/oracles(\\/([a-z][a-z_]*)){1,3}\\/([a-z][a-z_]*)$" + } + ] + }, + "OracleRollableIdWildcard": { + "title": "OracleRollableIdWildcard", + "type": "string", + "description": "Oracle table wildcards can also use '**' to represent any number of collection levels in the oracle tree.", + "examples": [ + "*/oracles/**/peril", + "starforged/oracles/character/names/*", + "starforged/oracles/planets/*/settlements/*" + ], + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/oracles((\\/([a-z][a-z_]*)){1,3}|\\/\\*\\*|\\/\\*\\*\\/([a-z][a-z_]*)|\\/([a-z][a-z_]*)\\/\\*\\*)\\/(\\*|([a-z][a-z_]*))$" + }, + "RarityId": { + "title": "RarityId", + "type": "string", + "description": "A unique ID for a Rarity.", + "examples": ["classic/rarities/ayethins_journal"], + "pattern": "^([a-z0-9_]{3,})\\/rarities\\/([a-z][a-z_]*)$" + }, + "RarityIdWildcard": { + "title": "RarityIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple Raritys.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/rarities\\/(\\*|([a-z][a-z_]*))$" + }, + "RulesetId": { + "title": "RulesetId", + "type": "string", + "description": "The ID of standalone Datasworn package that describes its own ruleset.", + "examples": ["classic", "starforged", "sundered_isles"], + "pattern": "^([a-z0-9_]{3,})$" + }, + "SpecialTrackRuleId": { + "title": "SpecialTrackRuleId", + "type": "string", + "description": "A unique ID for a SpecialTrackRule.", + "examples": [ + "classic/rules/special_tracks/bonds", + "delve/rules/special_tracks/failure", + "starforged/rules/special_tracks/bonds_legacy" + ], + "pattern": "^([a-z0-9_]{3,})\\/rules\\/special_tracks\\/([a-z][a-z_]*)$" + }, + "StatRuleId": { + "title": "StatRuleId", + "type": "string", + "description": "A unique ID for a StatRule.", + "pattern": "^([a-z0-9_]{3,})\\/rules\\/stats\\/([a-z][a-z_]*)$" + }, + "TruthId": { + "title": "TruthId", + "type": "string", + "description": "A unique ID for a Truth.", + "examples": ["classic/truths/iron", "starforged/truths/iron"], + "pattern": "^([a-z0-9_]{3,})\\/truths\\/([a-z][a-z_]*)$" + }, + "TruthIdWildcard": { + "title": "TruthIdWildcard", + "type": "string", + "description": "A wildcarded ID that can be used to match multiple Truths.", + "pattern": "^(\\*|([a-z0-9_]{3,}))\\/truths\\/(\\*|([a-z][a-z_]*))$" + }, + "AuthorInfo": { + "title": "AuthorInfo", + "type": "object", + "description": "Information on the original creator of this material.", + "examples": [ + { + "name": "Shawn Tomkin", + "url": "https://ironswornrpg.com" + } + ], + "required": ["name"], + "properties": { + "name": { + "type": "string", + "examples": ["Shawn Tomkin"] + }, + "url": { + "type": "string", + "description": "An optional URL for the author's website.", + "format": "uri" + }, + "email": { + "title": "Email", + "type": "string", + "description": "An optional email contact for the author", + "format": "email" + } + }, + "additionalProperties": false + }, + "CssColor": { + "title": "CssColor", + "type": "string", + "description": "A CSS color value.", + "remarks": "See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value" + }, + "Date": { + "title": "Date", + "type": "string", + "description": "A date formatted YYYY-MM-DD.", + "remarks": "You may prefer to deserialize this as a Date object.", + "format": "date", + "pattern": "[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))" + }, + "License": { + "title": "License", + "description": "An URL pointing to the location where this element'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" + } + ] + }, + "PageNumber": { + "title": "PageNumber", + "type": "integer", + "description": "Represents a page number in a book.", + "minimum": 1 + }, + "SourceInfo": { + "title": "SourceInfo", + "type": "object", + "description": "Metadata describing the original source of this item", + "required": ["title", "authors", "date", "url", "license"], + "properties": { + "title": { + "$ref": "#/definitions/SourceTitle" + }, + "page": { + "$ref": "#/definitions/PageNumber", + "description": "The page number where this item is described in full." + }, + "authors": { + "type": "array", + "description": "Lists authors credited by the source material.", + "items": { + "$ref": "#/definitions/AuthorInfo" + }, + "minItems": 1 + }, + "date": { + "$ref": "#/definitions/Date", + "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." + }, + "url": { + "$ref": "#/definitions/WebUrl", + "description": "A URL where the source document is available.", + "examples": ["https://ironswornrpg.com"] + }, + "license": { + "$ref": "#/definitions/License" + } + }, + "additionalProperties": false + }, + "SourceTitle": { + "title": "SourceTitle", + "type": "string", + "description": "The title of the source document.", + "examples": [ + "Ironsworn Rulebook", + "Ironsworn Assets Master Set", + "Ironsworn: Delve", + "Ironsworn: Starforged Rulebook", + "Ironsworn: Starforged Assets", + "Sundered Isles" + ] + }, + "Suggestions": { + "title": "Suggestions", + "type": "object", + "releaseStage": "experimental", + "properties": { + "oracles": { + "type": "array", + "items": { + "$ref": "#/definitions/OracleRollableId" + } + }, + "assets": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetId" + } + }, + "atlas": { + "type": "array", + "items": { + "$ref": "#/definitions/AtlasEntryId" + } + }, + "moves": { + "type": "array", + "items": { + "$ref": "#/definitions/MoveId" + } + }, + "npcs": { + "type": "array", + "items": { + "$ref": "#/definitions/NpcId" + } + }, + "rarities": { + "type": "array", + "items": { + "$ref": "#/definitions/RarityId" + } + }, + "site_domains": { + "type": "array", + "items": { + "$ref": "#/definitions/DelveSiteDomainId" + } + }, + "site_themes": { + "type": "array", + "items": { + "$ref": "#/definitions/DelveSiteThemeId" + } + } + }, + "additionalProperties": false + }, + "SvgImageUrl": { + "title": "SvgImageUrl", + "type": "string", + "description": "A relative (local) URL pointing to a vector image in the SVG format.", + "format": "uri-reference", + "pattern": "\\.svg$" + }, + "WebUrl": { + "title": "WebUrl", + "type": "string", + "description": "An absolute URL pointing to a website.", + "format": "uri" + }, + "WebpImageUrl": { + "title": "WebpImageUrl", + "type": "string", + "description": "A relative (local) URL pointing to a raster image in the WEBP format.", + "format": "uri-reference", + "pattern": "\\.webp$" + }, + "I18nHint": { + "title": "I18nHint", + "type": "object", + "releaseStage": "experimental", + "properties": { + "part_of_speech": { + "$ref": "#/definitions/PartOfSpeech", + "description": "The part of speech for this string." + } + }, + "additionalProperties": false + }, + "I18nHints": { + "title": "I18nHints", + "type": "object", + "description": "Internationalization/localization hints for the text content of this object.", + "releaseStage": "experimental", + "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 + }, + "InputLabel": { + "title": "InputLabel", + "type": "string", + "description": "A localized label for an input. 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, + "pattern": "^[^A-Z]+$" + }, + "Label": { + "title": "Label", + "type": "string", + "description": "A localized plain text name or label.", + "i18n": true + }, + "MarkdownString": { + "title": "MarkdownString", + "type": "string", + "description": "Localized text, formatted in Markdown.\n\nIt uses some custom syntax; e.g. `{{table:some_oracle_table_id}}` indicates that the referenced oracle table is rendered there in the source material.", + "i18n": true, + "format": "markdown" + }, + "PartOfSpeech": { + "title": "PartOfSpeech", + "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" + ] + }, + "TemplateString": { + "title": "TemplateString", + "type": "string", + "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 `result` key, for example `{{result:starforged/oracles/core/action}}`\n", + "releaseStage": "experimental", + "i18n": true, + "format": "markdown" + }, + "CollectableType": { + "title": "CollectableType", + "enum": ["oracle_rollable", "move", "asset", "atlas_entry", "npc"] + }, + "CollectionType": { + "title": "CollectionType", + "enum": [ + "oracle_collection", + "move_category", + "asset_collection", + "atlas_collection", + "npc_collection" + ] + }, + "ConditionMeterRule": { + "title": "ConditionMeterRule", + "type": "object", + "description": "Describes a standard player character condition meter.", + "required": ["label", "max", "description"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "rollable": { + "type": "boolean", + "description": "Is this meter's `value` usable as a stat in an action roll?", + "default": true, + "const": true + }, + "min": { + "type": "integer", + "description": "The minimum value of this meter.", + "default": 0 + }, + "max": { + "type": "integer", + "description": "The maximum value of this meter." + }, + "value": { + "type": "integer", + "description": "The current value of this meter.", + "default": 0 + }, + "shared": { + "type": "boolean", + "description": "Is this condition meter shared by all players?", + "default": false + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A description of this condition meter." + } + }, + "additionalProperties": false + }, + "ImpactCategory": { + "title": "ImpactCategory", + "type": "object", + "description": "Describes a category of standard impacts/debilities.", + "required": ["label", "description", "contents"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel", + "description": "A label for this impact category." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A description of this impact category." + }, + "contents": { + "type": "object", + "description": "A dictionary object of the Impacts in this category.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/ImpactRule" + } + } + } + }, + "additionalProperties": false + }, + "ImpactRule": { + "title": "ImpactRule", + "type": "object", + "description": "Describes a standard impact/debility.", + "required": ["label", "description"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel", + "description": "The label for this impact." + }, + "prevents_recovery": { + "type": "array", + "description": "Any ruleset condition meters that can't recover when this impact is active.", + "default": [], + "items": { + "$ref": "#/definitions/ConditionMeterKey" + } + }, + "permanent": { + "type": "boolean", + "description": "Is this impact permanent?", + "default": false + }, + "shared": { + "type": "boolean", + "description": "Is this impact applied to all players at once?", + "default": false + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A description of this impact." + } + }, + "additionalProperties": false + }, + "NonCollectableType": { + "title": "NonCollectableType", + "enum": [ + "delve_site", + "delve_site_theme", + "delve_site_domain", + "truth", + "rarity" + ] + }, + "ObjectType": { + "title": "ObjectType", + "anyOf": [ + { + "$ref": "#/definitions/CollectableType" + }, + { + "$ref": "#/definitions/NonCollectableType" + }, + { + "$ref": "#/definitions/CollectionType" + } + ] + }, + "Rules": { + "title": "Rules", + "type": "object", + "description": "Describes rules for player characters in this ruleset, such as stats and condition meters.", + "releaseStage": "experimental", + "required": ["condition_meters", "stats", "impacts", "special_tracks"], + "properties": { + "condition_meters": { + "type": "object", + "description": "Describes the standard condition meters used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/ConditionMeterRule" + } + } + }, + "stats": { + "type": "object", + "description": "Describes the standard stats used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/StatRule" + } + } + }, + "impacts": { + "type": "object", + "description": "Describes the standard impacts/debilities used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/ImpactCategory" + } + } + }, + "special_tracks": { + "type": "object", + "description": "Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/SpecialTrackRule" + } + } + }, + "tags": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "releaseStage": "experimental", + "default": {}, + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/TagRule" + } + } + } + }, + "additionalProperties": false + }, + "RulesExpansion": { + "title": "RulesExpansion", + "type": "object", + "description": "Describes rules for player characters in this ruleset, such as stats and condition meters.", + "releaseStage": "experimental", + "properties": { + "condition_meters": { + "type": "object", + "description": "Describes the standard condition meters used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/ConditionMeterRule" + } + } + }, + "stats": { + "type": "object", + "description": "Describes the standard stats used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/StatRule" + } + } + }, + "impacts": { + "type": "object", + "description": "Describes the standard impacts/debilities used by player characters in this ruleset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/ImpactCategory" + } + } + }, + "special_tracks": { + "type": "object", + "description": "Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/SpecialTrackRule" + } + } + }, + "tags": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "releaseStage": "experimental", + "default": {}, + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/TagRule" + } + } + } + }, + "additionalProperties": false + }, + "SpecialTrackRule": { + "title": "SpecialTrackRule", + "type": "object", + "description": "Describes a special track like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", + "required": ["label", "description"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel", + "description": "A label for this special track." + }, + "optional": { + "type": "boolean", + "description": "Is this track an optional rule?", + "default": false + }, + "shared": { + "type": "boolean", + "description": "Is this track shared by all players?", + "default": false + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A description of this special track." + } + }, + "additionalProperties": false + }, + "StatRule": { + "title": "StatRule", + "type": "object", + "description": "Describes a standard player character stat.", + "required": ["label", "description"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel", + "description": "A label for this stat.", + "examples": ["edge"] + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A description of this stat.", + "examples": [ + "Quickness, agility, and prowess when fighting at a distance." + ] + } + }, + "additionalProperties": false + }, + "Tag": { + "title": "Tag", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + }, + { + "$ref": "#/definitions/DictKey" + }, + { + "$ref": "#/definitions/DiceExpression" + }, + { + "$ref": "#/definitions/OracleRollableId" + }, + { + "$ref": "#/definitions/MoveId" + }, + { + "$ref": "#/definitions/AssetId" + }, + { + "$ref": "#/definitions/AtlasEntryId" + }, + { + "$ref": "#/definitions/NpcId" + }, + { + "$ref": "#/definitions/OracleCollectionId" + }, + { + "$ref": "#/definitions/MoveCategoryId" + }, + { + "$ref": "#/definitions/AssetCollectionId" + }, + { + "$ref": "#/definitions/AtlasCollectionId" + }, + { + "$ref": "#/definitions/NpcCollectionId" + }, + { + "$ref": "#/definitions/DelveSiteId" + }, + { + "$ref": "#/definitions/DelveSiteThemeId" + }, + { + "$ref": "#/definitions/DelveSiteDomainId" + }, + { + "$ref": "#/definitions/TruthId" + }, + { + "$ref": "#/definitions/RarityId" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/OracleRollableIdWildcard" + }, + { + "$ref": "#/definitions/MoveIdWildcard" + }, + { + "$ref": "#/definitions/AssetIdWildcard" + }, + { + "$ref": "#/definitions/AtlasEntryIdWildcard" + }, + { + "$ref": "#/definitions/NpcIdWildcard" + }, + { + "$ref": "#/definitions/OracleCollectionIdWildcard" + }, + { + "$ref": "#/definitions/MoveCategoryIdWildcard" + }, + { + "$ref": "#/definitions/AssetCollectionIdWildcard" + }, + { + "$ref": "#/definitions/AtlasCollectionIdWildcard" + }, + { + "$ref": "#/definitions/NpcCollectionIdWildcard" + }, + { + "$ref": "#/definitions/DelveSiteIdWildcard" + }, + { + "$ref": "#/definitions/DelveSiteThemeIdWildcard" + }, + { + "$ref": "#/definitions/DelveSiteDomainIdWildcard" + }, + { + "$ref": "#/definitions/TruthIdWildcard" + }, + { + "$ref": "#/definitions/RarityIdWildcard" + } + ] + } + } + ] + }, + "TagRule": { + "title": "TagRule", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `value_type` property as a discriminator.", + "required": ["value_type"], + "properties": { + "value_type": { + "enum": [ + "boolean", + "integer", + "oracle_rollable", + "move", + "asset", + "atlas_entry", + "npc", + "oracle_collection", + "move_category", + "asset_collection", + "atlas_collection", + "npc_collection", + "delve_site", + "delve_site_theme", + "delve_site_domain", + "truth", + "rarity", + "enum" + ] + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "value_type": { + "const": "boolean", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleBoolean", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "array": { + "default": false, + "type": "boolean" + }, + "value_type": { + "const": "boolean", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "integer", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleInteger", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "array": { + "default": false, + "type": "boolean" + }, + "value_type": { + "const": "integer", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "oracle_rollable", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleOracleRollable", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "oracle_rollable", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "move", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleMove", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "move", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "asset", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleAsset", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "asset", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "atlas_entry", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleAtlasEntry", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "atlas_entry", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "npc", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleNpc", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "npc", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "oracle_collection", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleOracleCollection", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "oracle_collection", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "move_category", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleMoveCategory", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "move_category", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "asset_collection", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleAssetCollection", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "asset_collection", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "atlas_collection", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleAtlasCollection", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "atlas_collection", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "npc_collection", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleNpcCollection", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "npc_collection", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "delve_site", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleDelveSite", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "delve_site", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "delve_site_theme", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleDelveSiteTheme", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "delve_site_theme", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "delve_site_domain", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleDelveSiteDomain", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "delve_site_domain", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "truth", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleTruth", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "truth", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "rarity", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleRarity", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "wildcard": { + "default": false, + "description": "If `true`, this field accepts an array of wildcard IDs. If `false`, this field accepts a single non-wildcard ID.", + "type": "boolean" + }, + "value_type": { + "const": "rarity", + "type": "string" + } + }, + "required": ["description", "value_type"], + "additionalProperties": false + } + }, + { + "if": { + "properties": { + "value_type": { + "const": "enum", + "type": "string" + } + } + }, + "then": { + "type": "object", + "title": "TagRuleEnum", + "properties": { + "applies_to": { + "default": null, + "description": "Types of object that can receive this tag, or `null` if any type of object accepts it.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/ObjectType" + } + }, + { + "type": "null" + } + ] + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "array": { + "default": false, + "type": "boolean" + }, + "value_type": { + "const": "enum", + "type": "string" + }, + "enum": { + "type": "array", + "items": { + "$ref": "#/definitions/DictKey" + } + } + }, + "required": ["description", "value_type", "enum"], + "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] + }, + "ProgressTrackTypeInfo": { + "title": "ProgressTrackTypeInfo", + "type": "object", + "description": "Describes the features of a type of progress track.", + "required": ["category"], + "properties": { + "category": { + "$ref": "#/definitions/Label", + "description": "A category label for progress tracks of this type.", + "examples": [ + "Vow", + "Journey", + "Combat", + "Scene Challenge", + "Expedition", + "Connection", + "Delve" + ] + }, + "controls": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "type": "object", + "properties": {} + } + } + } + }, + "additionalProperties": false + }, + "SpecialTrackType": { + "$ref": "#/definitions/DictKey", + "title": "SpecialTrackType", + "description": "Special, ruleset-specific progress tracks. Usually, one exists per player character, and they persist through the life of the player character.\n'Canonical' examples:\n * `bonds_track`, described in the Ironsworn Rulebook. For the Starforged legacy track, use `bonds_legacy` instead.\n * `failure_track`, described in Ironsworn: Delve\n * `quests_legacy`, `bonds_legacy`, and `discoveries_legacy`, described Ironsworn: Starforged\n\n", + "examples": [ + "bonds_track", + "failure_track", + "quests_legacy", + "bonds_legacy", + "discoveries_legacy" + ] + }, + "AssetControlValueRef": { + "title": "AssetControlValueRef", + "type": "object", + "description": "A reference to the value of an asset control.", + "required": ["using", "control"], + "properties": { + "using": { + "type": "string", + "description": "A reference to the value of an asset control.", + "const": "asset_control" + }, + "control": { + "$ref": "#/definitions/DictKey", + "description": "The dictionary key of the asset control field.", + "examples": ["health", "integrity"] + }, + "assets": { + "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.", + "default": null, + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/AssetIdWildcard" + } + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "AssetOptionValueRef": { + "title": "AssetOptionValueRef", + "type": "object", + "description": "A reference to the value of an asset option.", + "required": ["using", "option"], + "properties": { + "using": { + "type": "string", + "description": "A reference to the value of an asset option.", + "const": "asset_option" + }, + "option": { + "$ref": "#/definitions/DictKey", + "description": "The dictionary key of the asset option field." + }, + "assets": { + "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.", + "default": null, + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/AssetIdWildcard" + } + }, + { + "type": "null" + } + ] + } + }, + "additionalProperties": false + }, + "AttachedAssetControlValueRef": { + "title": "AttachedAssetControlValueRef", + "type": "object", + "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.", + "required": ["using", "control"], + "properties": { + "using": { + "type": "string", + "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" + }, + "control": { + "$ref": "#/definitions/DictKey", + "description": "The dictionary key of the asset control field.", + "examples": ["health", "integrity"] + } + }, + "additionalProperties": false + }, + "AttachedAssetOptionValueRef": { + "title": "AttachedAssetOptionValueRef", + "type": "object", + "description": "A reference to the value of an attached asset option.", + "required": ["using", "option"], + "properties": { + "using": { + "type": "string", + "description": "A reference to the value of an attached asset option.", + "const": "attached_asset_option" + }, + "option": { + "$ref": "#/definitions/DictKey", + "description": "The dictionary key of the asset option field." + } + }, + "additionalProperties": false + }, + "ConditionMeterValueRef": { + "title": "ConditionMeterValueRef", + "type": "object", + "description": "A reference to the value of a standard player condition meter.", + "required": ["using", "condition_meter"], + "properties": { + "using": { + "type": "string", + "description": "A reference to the value of a standard player condition meter.", + "const": "condition_meter" + }, + "condition_meter": { + "$ref": "#/definitions/ConditionMeterKey" + } + }, + "additionalProperties": false + }, + "CustomValue": { + "title": "CustomValue", + "type": "object", + "description": "An arbitrary static integer value with a label.", + "required": ["label", "using", "value"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "using": { + "type": "string", + "description": "An arbitrary static integer value with a label.", + "const": "custom" + }, + "value": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "RollableValue": { + "title": "RollableValue", + "type": "object", + "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.", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator.", + "required": ["using"], + "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" + } + } + ] + }, + "StatValueRef": { + "title": "StatValueRef", + "type": "object", + "description": "A reference to the value of a standard player character stat.", + "required": ["using", "stat"], + "properties": { + "using": { + "type": "string", + "description": "A reference to the value of a standard player character stat.", + "const": "stat" + }, + "stat": { + "$ref": "#/definitions/StatKey" + } + }, + "additionalProperties": false + }, + "Npc": { + "title": "Npc", + "type": "object", + "description": "A non-player character entry, similar to those in Chapter 5 of the Ironsworn Rulebook, or Chapter 4 of Starforged.", + "required": [ + "type", + "name", + "rank", + "nature", + "features", + "drives", + "tactics", + "description", + "_source" + ], + "properties": { + "_id": { + "$ref": "#/definitions/NpcId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "npc" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "rank": { + "$ref": "#/definitions/ChallengeRank", + "description": "The suggested challenge rank for this NPC." + }, + "nature": { + "$ref": "#/definitions/NpcNature" + }, + "summary": { + "$ref": "#/definitions/MarkdownString" + }, + "features": { + "type": "array", + "items": { + "$ref": "#/definitions/MarkdownString" + } + }, + "drives": { + "type": "array", + "items": { + "$ref": "#/definitions/MarkdownString" + } + }, + "tactics": { + "type": "array", + "items": { + "$ref": "#/definitions/MarkdownString" + } + }, + "variants": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/NpcVariant" + } + } + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "quest_starter": { + "$ref": "#/definitions/MarkdownString" + }, + "your_truth": { + "$ref": "#/definitions/MarkdownString" + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "NpcCollection": { + "title": "NpcCollection", + "type": "object", + "required": ["type", "name", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/NpcCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "npc_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "replaces": { + "$ref": "#/definitions/NpcCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/NpcCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Npc" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "NpcNature": { + "$ref": "#/definitions/Label", + "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" + ] + }, + "NpcVariant": { + "title": "NpcVariant", + "type": "object", + "required": ["name", "rank", "nature", "description"], + "properties": { + "_id": { + "$ref": "#/definitions/NpcVariantId", + "description": "The unique Datasworn ID for this item." + }, + "name": { + "$ref": "#/definitions/Label" + }, + "rank": { + "$ref": "#/definitions/ChallengeRank", + "description": "The suggested challenge rank for this NPC." + }, + "nature": { + "$ref": "#/definitions/NpcNature" + }, + "summary": { + "$ref": "#/definitions/MarkdownString" + }, + "description": { + "$ref": "#/definitions/MarkdownString" + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + } + }, + "additionalProperties": false + }, + "DiceExpression": { + "title": "DiceExpression", + "type": "string", + "description": "A simple dice roll expression with an optional modifer.", + "examples": ["1d100", "1d6+2"], + "pattern": "([1-9][0-9]*)d([1-9][0-9]*)([+-]([1-9][0-9]*))?" + }, + "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": { + "description": "The ID of the oracle to be rolled. A `null` value indicates that it's a roll on the same table.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/OracleRollableId" + }, + { + "type": "null" + } + ] + }, + "dice": { + "description": "The dice roll to make on the oracle table. Set it to `null` if you just want the table's default.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/DiceExpression" + }, + { + "type": "null" + } + ] + }, + "auto": { + "type": "boolean", + "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\".", + "default": false + }, + "duplicates": { + "$ref": "#/definitions/OracleDuplicateBehavior", + "description": "Special rules on how to handle duplicate results, when rolling multiple times.", + "default": "reroll" + }, + "number_of_rolls": { + "type": "integer", + "description": "The number of times to roll.", + "default": 1, + "minimum": 1 + } + }, + "additionalProperties": false + }, + "OracleRollTemplate": { + "title": "OracleRollTemplate", + "type": "object", + "description": "Provides string templates that may be used in place of the static row text from `OracleTableRow#text`, `OracleTableRow#text2`, and `OracleTableRow#text3`.\n\n These strings are formatted in Markdown, but use a special syntax for their placeholders: `{{text:some_oracle_table_id}}`. The placeholder should be replaced with the value of a rolled (or selected) `OracleTableRow#text` from the target oracle table ID.", + "releaseStage": "experimental", + "properties": { + "text": { + "$ref": "#/definitions/TemplateString", + "description": "A string template that may be used in place of OracleTableRow#text.", + "examples": [ + "{{text:starforged/oracles/factions/affiliation}} of the {{text:starforged/oracles/factions/legacy}} {{text:starforged/oracles/factions/identity}}" + ] + }, + "text2": { + "$ref": "#/definitions/TemplateString", + "description": "A string template that may be used in place of OracleTableRow#text2." + }, + "text3": { + "$ref": "#/definitions/TemplateString", + "description": "A string template that may be used in place of OracleTableRow#text3." + } + }, + "additionalProperties": false + }, + "OracleCollection": { + "title": "OracleCollection", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.", + "required": ["oracle_type"], + "properties": { + "oracle_type": { + "enum": [ + "tables", + "table_shared_rolls", + "table_shared_text", + "table_shared_text2", + "OracleTableSharedText3" + ] + } + }, + "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": "OracleTableSharedText3", + "type": "string" + } + } + }, + "then": { + "$ref": "#/definitions/OracleTableSharedText3" + } + } + ] + }, + "OracleColumnText": { + "title": "OracleColumnText", + "type": "object", + "description": "Represents a single column in an OracleCollection.", + "required": ["type", "name", "oracle_type", "rows"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary label at the head of this column." + }, + "oracle_type": { + "type": "string", + "const": "column_text" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "An optional thematic color for this column. For an example, see \"Basic Creature Form\" (Starforged p. 337)" + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An optional icon for this column." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "Optional secondary text at the head of this column. For best results, this should be no more than a few words in length." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText" + } + } + }, + "additionalProperties": false + }, + "OracleColumnText2": { + "title": "OracleColumnText2", + "type": "object", + "required": ["type", "name", "oracle_type", "rows"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary label at the head of this column." + }, + "oracle_type": { + "type": "string", + "const": "column_text2" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "An optional thematic color for this column. For an example, see \"Basic Creature Form\" (Starforged p. 337)" + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An optional icon for this column." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "Optional secondary text at the head of this column. For best results, this should be no more than a few words in length." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText2" + } + } + }, + "additionalProperties": false + }, + "OracleColumnText3": { + "title": "OracleColumnText3", + "type": "object", + "required": ["type", "name", "oracle_type", "rows"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary label at the head of this column." + }, + "oracle_type": { + "type": "string", + "const": "column_text3" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "An optional thematic color for this column. For an example, see \"Basic Creature Form\" (Starforged p. 337)" + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An optional icon for this column." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "Optional secondary text at the head of this column. For best results, this should be no more than a few words in length." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText3" + } + } + }, + "additionalProperties": false + }, + "OracleRollable": { + "title": "OracleRollable", + "type": "object", + "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.", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.", + "required": ["oracle_type"], + "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" + } + } + ] + }, + "OracleTableRollable": { + "title": "OracleTableRollable", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.", + "required": ["oracle_type"], + "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" + } + } + ] + }, + "OracleTableRow": { + "title": "OracleTableRow", + "anyOf": [ + { + "$ref": "#/definitions/OracleTableRowText" + }, + { + "$ref": "#/definitions/OracleTableRowText2" + }, + { + "$ref": "#/definitions/OracleTableRowText3" + } + ] + }, + "OracleTableRowText": { + "title": "OracleTableRowText", + "type": "object", + "description": "Represents a row in an oracle table, with a single text cell.", + "required": ["text"], + "properties": { + "min": { + "description": "Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "Low end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "max": { + "description": "High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "High end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl" + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The primary text content of this row." + }, + "template": { + "$ref": "#/definitions/OracleRollTemplate", + "releaseStage": "experimental" + }, + "embed_table": { + "$ref": "#/definitions/OracleRollableId", + "description": "Hints that the identified table should be rendered inside this table row.", + "releaseStage": "experimental" + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "oracle_rolls": { + "type": "array", + "description": "Further oracle rolls prompted by this table row.", + "items": { + "$ref": "#/definitions/OracleRoll" + } + }, + "_i18n": { + "$ref": "#/definitions/I18nHints", + "releaseStage": "experimental" + } + }, + "additionalProperties": false + }, + "OracleTableRowText2": { + "title": "OracleTableRowText2", + "type": "object", + "description": "Represents a row in an oracle table that provides a secondary text field.", + "required": ["text", "text2"], + "properties": { + "min": { + "description": "Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "Low end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "max": { + "description": "High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "High end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl" + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The primary text content of this row." + }, + "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" + } + ] + }, + "template": { + "$ref": "#/definitions/OracleRollTemplate", + "releaseStage": "experimental" + }, + "embed_table": { + "$ref": "#/definitions/OracleRollableId", + "description": "Hints that the identified table should be rendered inside this table row.", + "releaseStage": "experimental" + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "oracle_rolls": { + "type": "array", + "description": "Further oracle rolls prompted by this table row.", + "items": { + "$ref": "#/definitions/OracleRoll" + } + }, + "_i18n": { + "$ref": "#/definitions/I18nHints", + "releaseStage": "experimental" + } + }, + "additionalProperties": false + }, + "OracleTableRowText3": { + "title": "OracleTableRowText3", + "type": "object", + "description": "Represents a row in an oracle table with 3 text cells.", + "required": ["text", "text2", "text3"], + "properties": { + "min": { + "description": "Low end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "Low end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "max": { + "description": "High end of the dice range for this table row. `null` represents an unrollable row, included only for rendering purposes.", + "default": null, + "anyOf": [ + { + "type": "integer", + "description": "High end of the dice range for this table row." + }, + { + "type": "null" + } + ] + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl" + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The primary text content of this row." + }, + "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" + } + ] + }, + "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" + } + ] + }, + "template": { + "$ref": "#/definitions/OracleRollTemplate", + "releaseStage": "experimental" + }, + "embed_table": { + "$ref": "#/definitions/OracleRollableId", + "description": "Hints that the identified table should be rendered inside this table row.", + "releaseStage": "experimental" + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "oracle_rolls": { + "type": "array", + "description": "Further oracle rolls prompted by this table row.", + "items": { + "$ref": "#/definitions/OracleRoll" + } + }, + "_i18n": { + "$ref": "#/definitions/I18nHints", + "releaseStage": "experimental" + } + }, + "additionalProperties": false + }, + "OracleTableSharedRolls": { + "title": "OracleTableSharedRolls", + "type": "object", + "description": "An OracleCollection representing a single table with one roll column and multiple `result` columns.", + "required": ["type", "name", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "description": "A table with one shared roll column, and multiple unique text columns.", + "default": "table_shared_rolls", + "const": "table_shared_rolls" + }, + "replaces": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleColumnText" + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "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`.", + "default": { + "roll": "Roll" + }, + "required": ["roll"], + "properties": { + "roll": { + "$ref": "#/definitions/Label", + "default": "Roll" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "OracleTableSharedText": { + "title": "OracleTableSharedText", + "type": "object", + "description": "An OracleCollection representing a single table with multiple roll columns and one `result` column.", + "required": ["type", "name", "oracle_type", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "description": "A table with multiple unique roll columns, and one shared text column.", + "const": "table_shared_text" + }, + "replaces": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleColumnText" + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": { + "text": "Result" + }, + "required": ["text"], + "properties": { + "text": { + "$ref": "#/definitions/Label", + "default": "Result" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "OracleTableSharedText2": { + "title": "OracleTableSharedText2", + "type": "object", + "description": "An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns.", + "required": ["type", "name", "oracle_type", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "description": "A table with multiple unique roll columns, and 2 shared text columns.", + "const": "table_shared_text2" + }, + "replaces": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleColumnText2" + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": { + "text": "Result", + "text2": "Details" + }, + "required": ["text", "text2"], + "properties": { + "text": { + "$ref": "#/definitions/Label", + "default": "Result" + }, + "text2": { + "$ref": "#/definitions/Label", + "default": "Details" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "OracleTableSharedText3": { + "title": "OracleTableSharedText3", + "type": "object", + "description": "An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns.", + "required": ["type", "name", "oracle_type", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "description": "A table with multiple unique roll columns, and 3 shared text columns.", + "const": "table_shared_text3" + }, + "replaces": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleColumnText3" + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": { + "text": "Result" + }, + "required": ["text"], + "properties": { + "text": { + "$ref": "#/definitions/Label", + "default": "Result" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "OracleTableText": { + "title": "OracleTableText", + "type": "object", + "description": "Represents a basic rollable oracle table with one roll column and one text result column.", + "required": ["type", "name", "oracle_type", "rows", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "const": "table_text" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon that represents this table." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "A brief summary of the oracle table's intended usage, 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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "recommended_rolls": { + "type": "object", + "required": ["min", "max"], + "properties": { + "min": { + "type": "integer", + "default": 1 + }, + "max": { + "type": "integer", + "default": 1 + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": { + "roll": "Roll", + "text": "Result" + }, + "required": ["roll", "text"], + "properties": { + "roll": { + "$ref": "#/definitions/Label", + "default": "Roll" + }, + "text": { + "$ref": "#/definitions/Label", + "default": "Result" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText" + } + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "OracleTableText2": { + "title": "OracleTableText2", + "type": "object", + "description": "A rollable oracle table with one roll column and two text columns.", + "required": ["type", "name", "oracle_type", "rows", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "const": "table_text2" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon that represents this table." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "A brief summary of the oracle table's intended usage, 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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "recommended_rolls": { + "type": "object", + "required": ["min", "max"], + "properties": { + "min": { + "type": "integer", + "default": 1 + }, + "max": { + "type": "integer", + "default": 1 + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": { + "roll": "Roll", + "text": "Result", + "text2": "Details" + }, + "required": ["roll", "text", "text2"], + "properties": { + "roll": { + "$ref": "#/definitions/Label", + "default": "Roll" + }, + "text": { + "$ref": "#/definitions/Label", + "default": "Result" + }, + "text2": { + "$ref": "#/definitions/Label", + "default": "Details" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText2" + } + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "OracleTableText3": { + "title": "OracleTableText3", + "type": "object", + "description": "A rollable oracle table with one roll column and 3 text columns.", + "required": ["type", "name", "oracle_type", "rows", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleRollableId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_rollable" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "const": "table_text3" + }, + "replaces": { + "$ref": "#/definitions/OracleRollableId", + "description": "Indicates that this object replaces the identified OracleRollable. References to the replaced object can be considered equivalent to this object." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon that represents this table." + }, + "dice": { + "$ref": "#/definitions/DiceExpression", + "description": "The roll used to select a result on this oracle.", + "default": "1d100" + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "description": "A brief summary of the oracle table's intended usage, 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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of the oracle table's intended usage, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "match": { + "$ref": "#/definitions/OracleMatchBehavior", + "description": "Most oracle tables are insensitive to matches, but a few define special match behavior." + }, + "recommended_rolls": { + "type": "object", + "required": ["min", "max"], + "properties": { + "min": { + "type": "integer", + "default": 1 + }, + "max": { + "type": "integer", + "default": 1 + } + } + }, + "column_labels": { + "title": "ColumnLabels", + "type": "object", + "description": "The label at the head of each table column. The `roll` key refers to the roll column showing the dice range (`min` and `max` on each table row).", + "default": {}, + "required": ["roll", "text", "text2", "text3"], + "properties": { + "roll": { + "$ref": "#/definitions/Label" + }, + "text": { + "$ref": "#/definitions/Label" + }, + "text2": { + "$ref": "#/definitions/Label" + }, + "text3": { + "$ref": "#/definitions/Label" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "rows": { + "type": "array", + "description": "An array of objects, each representing a single row of the table.", + "rollable": true, + "items": { + "$ref": "#/definitions/OracleTableRowText3" + } + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "OracleTablesCollection": { + "title": "OracleTablesCollection", + "type": "object", + "description": "An OracleCollection that represents a category or grouping of tables, which may themselves be `OracleTablesCollection`s.", + "required": ["type", "name", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/OracleCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "oracle_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "oracle_type": { + "type": "string", + "description": "A grouping of separate tables.", + "default": "tables", + "const": "tables" + }, + "replaces": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/OracleCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleTableRollable" + } + } + }, + "collections": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/OracleCollection" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "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" + ] + }, + "Move": { + "title": "Move", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator.", + "required": ["roll_type"], + "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" + } + } + ] + }, + "MoveActionRoll": { + "title": "MoveActionRoll", + "type": "object", + "description": "A move that makes an action roll.", + "required": [ + "type", + "name", + "roll_type", + "trigger", + "text", + "outcomes", + "_source" + ], + "properties": { + "_id": { + "$ref": "#/definitions/MoveId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "move" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "roll_type": { + "type": "string", + "description": "A move that makes an action roll.", + "const": "action_roll" + }, + "replaces": { + "$ref": "#/definitions/MoveId", + "description": "Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move." + }, + "trigger": { + "$ref": "#/definitions/TriggerActionRoll", + "title": "Trigger", + "description": "Trigger conditions for this move." + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The complete rules text of the move." + }, + "outcomes": { + "$ref": "#/definitions/MoveOutcomes", + "title": "MoveOutcomes" + }, + "oracles": { + "type": "array", + "description": "Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement.", + "items": { + "$ref": "#/definitions/OracleRollableId" + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "MoveActionRollEnhancement": { + "title": "MoveActionRollEnhancement", + "type": "object", + "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.", + "required": ["roll_type"], + "properties": { + "roll_type": { + "type": "string", + "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" + }, + "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/MoveIdWildcard" + } + }, + { + "type": "null" + } + ] + }, + "trigger": { + "$ref": "#/definitions/TriggerActionRollEnhancement" + } + }, + "additionalProperties": false + }, + "MoveCategory": { + "title": "MoveCategory", + "type": "object", + "required": ["type", "name", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/MoveCategoryId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "move_category" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "replaces": { + "$ref": "#/definitions/MoveCategoryId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/MoveCategoryId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Move" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "MoveEnhancement": { + "title": "MoveEnhancement", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator.", + "required": ["roll_type"], + "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" + } + } + ] + }, + "MoveNoRoll": { + "title": "MoveNoRoll", + "type": "object", + "description": "A move that makes no progress rolls or action rolls.", + "required": ["type", "name", "roll_type", "trigger", "text", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/MoveId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "move" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "roll_type": { + "type": "string", + "description": "A move that makes no action rolls or progress rolls.", + "const": "no_roll" + }, + "replaces": { + "$ref": "#/definitions/MoveId", + "description": "Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move." + }, + "trigger": { + "$ref": "#/definitions/TriggerNoRoll", + "title": "Trigger", + "description": "Trigger conditions for this move." + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The complete rules text of the move." + }, + "outcomes": { + "title": "MoveOutcomes", + "type": "null", + "default": null + }, + "oracles": { + "type": "array", + "description": "Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement.", + "items": { + "$ref": "#/definitions/OracleRollableId" + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "MoveNoRollEnhancement": { + "title": "MoveNoRollEnhancement", + "type": "object", + "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.", + "required": ["roll_type"], + "properties": { + "roll_type": { + "type": "string", + "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" + }, + "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/MoveIdWildcard" + } + }, + { + "type": "null" + } + ] + }, + "trigger": { + "$ref": "#/definitions/TriggerNoRollEnhancement" + } + }, + "additionalProperties": false + }, + "MoveOutcome": { + "title": "MoveOutcome", + "type": "object", + "required": ["text"], + "properties": { + "text": { + "$ref": "#/definitions/MarkdownString", + "type": "string", + "pattern": "On a __(strong hit|weak hit|miss)__" + }, + "oracle_rolls": { + "type": "array", + "items": { + "$ref": "#/definitions/OracleRoll" + } + } + }, + "additionalProperties": false + }, + "MoveOutcomes": { + "title": "MoveOutcomes", + "type": "object", + "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.", + "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": "MoveProgressRoll", + "type": "object", + "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.", + "required": [ + "type", + "name", + "roll_type", + "tracks", + "trigger", + "text", + "outcomes", + "_source" + ], + "properties": { + "_id": { + "$ref": "#/definitions/MoveId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "move" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "roll_type": { + "type": "string", + "description": "A progress move that rolls on a standard progress track type (defined by this move).", + "const": "progress_roll" + }, + "tracks": { + "$ref": "#/definitions/ProgressTrackTypeInfo", + "description": "Describes the common features of progress tracks associated with this move." + }, + "replaces": { + "$ref": "#/definitions/MoveId", + "description": "Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move." + }, + "trigger": { + "$ref": "#/definitions/TriggerProgressRoll", + "title": "Trigger", + "description": "Trigger conditions for this move." + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The complete rules text of the move." + }, + "outcomes": { + "$ref": "#/definitions/MoveOutcomes", + "title": "MoveOutcomes" + }, + "oracles": { + "type": "array", + "description": "Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement.", + "items": { + "$ref": "#/definitions/OracleRollableId" + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "MoveProgressRollEnhancement": { + "title": "MoveProgressRollEnhancement", + "type": "object", + "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.", + "required": ["roll_type"], + "properties": { + "roll_type": { + "type": "string", + "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" + }, + "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/MoveIdWildcard" + } + }, + { + "type": "null" + } + ] + }, + "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": "MoveSpecialTrack", + "type": "object", + "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.", + "required": [ + "type", + "name", + "roll_type", + "trigger", + "text", + "outcomes", + "_source" + ], + "properties": { + "_id": { + "$ref": "#/definitions/MoveId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "move" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "roll_type": { + "type": "string", + "description": "A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).", + "const": "special_track" + }, + "replaces": { + "$ref": "#/definitions/MoveId", + "description": "Indicates that this move replaces the identified move. References to the replaced move can be considered equivalent to this move." + }, + "trigger": { + "$ref": "#/definitions/TriggerSpecialTrack", + "title": "Trigger", + "description": "Trigger conditions for this move." + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The complete rules text of the move." + }, + "outcomes": { + "$ref": "#/definitions/MoveOutcomes", + "title": "MoveOutcomes" + }, + "oracles": { + "type": "array", + "description": "Oracles associated with this move. It's not recommended to roll these automatically, as almost all moves present them as an option, not a requirement.", + "items": { + "$ref": "#/definitions/OracleRollableId" + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "MoveSpecialTrackEnhancement": { + "title": "MoveSpecialTrackEnhancement", + "type": "object", + "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.", + "required": ["roll_type"], + "properties": { + "roll_type": { + "type": "string", + "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" + }, + "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/MoveIdWildcard" + } + }, + { + "type": "null" + } + ] + }, + "trigger": { + "$ref": "#/definitions/TriggerSpecialTrackEnhancement" + } + }, + "additionalProperties": false + }, + "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": { + "type": "string", + "const": "progress_track" + } + }, + "additionalProperties": false + }, + "SpecialTrackRollMethod": { + "title": "SpecialTrackRollMethod", + "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" + ] + }, + "TriggerActionRoll": { + "title": "TriggerActionRoll", + "type": "object", + "description": "Describes trigger conditions for a move that makes an action roll.", + "required": ["conditions", "text"], + "properties": { + "conditions": { + "type": "array", + "description": "Specific conditions that qualify for this trigger.", + "items": { + "$ref": "#/definitions/TriggerActionRollCondition" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "type": "string", + "description": "A markdown string containing the primary trigger text for this move.\n\nSecondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.", + "pattern": ".*\\.{3}" + } + }, + "additionalProperties": false + }, + "TriggerActionRollCondition": { + "title": "TriggerActionRollCondition", + "type": "object", + "required": ["method", "roll_options"], + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "$ref": "#/definitions/ActionRollMethod" + }, + "roll_options": { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/RollableValue" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerActionRollConditionEnhancement": { + "title": "TriggerActionRollConditionEnhancement", + "type": "object", + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "description": "A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/ActionRollMethod" + }, + { + "type": "null" + } + ] + }, + "roll_options": { + "default": null, + "anyOf": [ + { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/RollableValue" + } + }, + { + "type": "null" + } + ] + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerActionRollEnhancement": { + "title": "TriggerActionRollEnhancement", + "type": "object", + "description": "Describes changes/additions made to the enhanced move's trigger conditions.", + "required": ["conditions"], + "properties": { + "conditions": { + "type": "array", + "description": "Trigger conditions added to the enhanced move.", + "items": { + "$ref": "#/definitions/TriggerActionRollConditionEnhancement" + } + } + }, + "additionalProperties": false + }, + "TriggerBy": { + "title": "TriggerBy", + "type": "object", + "description": "Information on who can activate this trigger condition. Usually this is just the player, but some asset abilities can trigger from an ally's move.", + "properties": { + "ally": { + "type": "boolean", + "description": "Can this trigger be activated by one of the player's allies?", + "default": false + }, + "player": { + "type": "boolean", + "description": "Can this trigger be activated by the player who owns this?", + "default": true + } + }, + "additionalProperties": false + }, + "TriggerNoRoll": { + "title": "TriggerNoRoll", + "type": "object", + "description": "Describes trigger conditions for a move that makes no rolls.", + "required": ["text"], + "properties": { + "conditions": { + "description": "Specific conditions that qualify for this trigger.", + "default": null, + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/TriggerNoRollCondition" + } + }, + { + "type": "null" + } + ] + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "type": "string", + "description": "A markdown string containing the primary trigger text for this move.\n\nSecondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.", + "pattern": ".*\\.{3}" + } + }, + "additionalProperties": false + }, + "TriggerNoRollCondition": { + "title": "TriggerNoRollCondition", + "type": "object", + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "type": "null", + "default": null + }, + "roll_options": { + "type": "null", + "description": "The options available when rolling with this trigger condition.", + "default": null + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerNoRollEnhancement": { + "title": "TriggerNoRollEnhancement", + "type": "object", + "description": "Describes changes/additions made to the enhanced move's trigger conditions.", + "required": ["conditions"], + "properties": { + "conditions": { + "type": "array", + "description": "Trigger conditions added to the enhanced move.", + "items": { + "$ref": "#/definitions/TriggerNoRollCondition" + } + } + }, + "additionalProperties": false + }, + "TriggerProgressRoll": { + "title": "TriggerProgressRoll", + "type": "object", + "required": ["conditions", "text"], + "properties": { + "conditions": { + "type": "array", + "description": "Specific conditions that qualify for this trigger.", + "items": { + "$ref": "#/definitions/TriggerProgressRollCondition" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "type": "string", + "description": "A markdown string containing the primary trigger text for this move.\n\nSecondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.", + "pattern": ".*\\.{3}" + } + }, + "additionalProperties": false + }, + "TriggerProgressRollCondition": { + "title": "TriggerProgressRollCondition", + "type": "object", + "required": ["roll_options"], + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "$ref": "#/definitions/ProgressRollMethod", + "default": "progress_roll" + }, + "roll_options": { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/ProgressRollOption" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerProgressRollConditionEnhancement": { + "title": "TriggerProgressRollConditionEnhancement", + "type": "object", + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "description": "A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/ProgressRollMethod", + "default": "progress_roll" + }, + { + "type": "null" + } + ] + }, + "roll_options": { + "default": null, + "anyOf": [ + { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/ProgressRollOption" + } + }, + { + "type": "null" + } + ] + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerProgressRollEnhancement": { + "title": "TriggerProgressRollEnhancement", + "type": "object", + "description": "Describes changes/additions made to the enhanced move's trigger conditions.", + "required": ["conditions"], + "properties": { + "conditions": { + "type": "array", + "description": "Trigger conditions added to the enhanced move.", + "items": { + "$ref": "#/definitions/TriggerProgressRollConditionEnhancement" + } + } + }, + "additionalProperties": false + }, + "TriggerSpecialTrack": { + "title": "TriggerSpecialTrack", + "type": "object", + "required": ["conditions", "text"], + "properties": { + "conditions": { + "type": "array", + "description": "Specific conditions that qualify for this trigger.", + "items": { + "$ref": "#/definitions/TriggerSpecialTrackCondition" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "type": "string", + "description": "A markdown string containing the primary trigger text for this move.\n\nSecondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.", + "pattern": ".*\\.{3}" + } + }, + "additionalProperties": false + }, + "TriggerSpecialTrackCondition": { + "title": "TriggerSpecialTrackCondition", + "type": "object", + "required": ["method", "roll_options"], + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "$ref": "#/definitions/SpecialTrackRollMethod" + }, + "roll_options": { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/TriggerSpecialTrackConditionOption" + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerSpecialTrackConditionEnhancement": { + "title": "TriggerSpecialTrackConditionEnhancement", + "type": "object", + "description": "A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacy (Starforged).", + "properties": { + "by": { + "$ref": "#/definitions/TriggerBy" + }, + "method": { + "description": "A `null` value means this condition provides no roll mechanic of its own; it must be used with another trigger condition that provides a non-null `method`.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/SpecialTrackRollMethod" + }, + { + "type": "null" + } + ] + }, + "roll_options": { + "default": null, + "anyOf": [ + { + "type": "array", + "description": "The options available when rolling with this trigger condition.", + "items": { + "$ref": "#/definitions/TriggerSpecialTrackConditionOption" + } + }, + { + "type": "null" + } + ] + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "A markdown string of any trigger text specific to this trigger condition." + } + }, + "additionalProperties": false + }, + "TriggerSpecialTrackConditionOption": { + "title": "TriggerSpecialTrackConditionOption", + "type": "object", + "required": ["using"], + "properties": { + "using": { + "$ref": "#/definitions/SpecialTrackType" + } + }, + "additionalProperties": false + }, + "TriggerSpecialTrackEnhancement": { + "title": "TriggerSpecialTrackEnhancement", + "type": "object", + "description": "Describes changes/additions made to the enhanced move's trigger conditions.", + "required": ["conditions"], + "properties": { + "conditions": { + "type": "array", + "description": "Trigger conditions added to the enhanced move.", + "items": { + "$ref": "#/definitions/TriggerSpecialTrackConditionEnhancement" + } + } + }, + "additionalProperties": false + }, + "Asset": { + "title": "Asset", + "type": "object", + "required": ["type", "name", "category", "abilities", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/AssetId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "asset" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "category": { + "$ref": "#/definitions/Label", + "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" + ] + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this asset." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "This asset's icon." + }, + "options": { + "type": "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.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetOptionField" + } + } + }, + "count_as_impact": { + "type": "boolean", + "description": "If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn).", + "default": false + }, + "shared": { + "type": "boolean", + "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.", + "default": false + }, + "attachments": { + "$ref": "#/definitions/AssetAttachment" + }, + "requirement": { + "$ref": "#/definitions/MarkdownString", + "description": "Describes prerequisites for purchasing or using this asset." + }, + "abilities": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetAbility", + "description": "Abilities provided by this asset. Most assets have 3." + } + }, + "controls": { + "type": "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.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetControlField" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": true + }, + "AssetAbility": { + "title": "AssetAbility", + "type": "object", + "description": "An asset ability: one of the purchasable features of an asset. Most assets have three.", + "required": ["text"], + "properties": { + "_id": { + "$ref": "#/definitions/AssetAbilityId", + "description": "The unique Datasworn ID for this item." + }, + "name": { + "$ref": "#/definitions/Label", + "description": "A handful of asset abilities have a label/name, for instance classic Ironsworn companion assets. Most canonical assets omit this property." + }, + "enabled": { + "type": "boolean", + "description": "Is this asset ability enabled?", + "default": false + }, + "options": { + "type": "object", + "description": "Fields that are expected to be set once and remain the same through the life of the asset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetAbilityOptionField" + } + } + }, + "text": { + "$ref": "#/definitions/MarkdownString", + "description": "The complete rules text of this asset ability." + }, + "controls": { + "type": "object", + "description": "Fields whose values are expected to change over the life of the asset.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetAbilityControlField" + } + } + }, + "enhance_asset": { + "$ref": "#/definitions/AssetEnhancement", + "description": "Changes made to the asset, when this ability is enabled." + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "enhance_moves": { + "type": "array", + "description": "Describes changes made to various moves by this asset ability. Usually these require specific trigger conditions.", + "items": { + "$ref": "#/definitions/MoveEnhancement" + } + }, + "moves": { + "type": "object", + "description": "Unique moves added by this asset ability.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Move" + } + } + } + }, + "additionalProperties": false + }, + "AssetAbilityControlField": { + "title": "AssetAbilityControlField", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "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" + } + } + ] + }, + "AssetAbilityOptionField": { + "title": "AssetAbilityOptionField", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "properties": { + "field_type": { + "enum": ["text"] + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "field_type": { + "const": "text", + "type": "string" + } + } + }, + "then": { + "$ref": "#/definitions/TextField" + } + } + ] + }, + "AssetAttachment": { + "title": "AssetAttachment", + "type": "object", + "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.", + "required": ["assets"], + "properties": { + "max": { + "description": "Null if there's no upper limit to the number of attached assets.", + "default": null, + "anyOf": [ + { + "type": "integer", + "minimum": 1 + }, + { + "type": "null" + } + ] + }, + "assets": { + "type": "array", + "description": "Asset IDs (which may be wildcards) that may be attached to this asset", + "items": { + "$ref": "#/definitions/AssetIdWildcard" + } + } + }, + "additionalProperties": false + }, + "AssetCardFlipField": { + "title": "AssetCardFlipField", + "type": "object", + "required": ["label", "field_type"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "card_flip" + }, + "value": { + "type": "boolean", + "description": "Is the card flipped over?", + "default": false + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + }, + "is_impact": { + "type": "boolean", + "description": "Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?", + "default": false + }, + "disables_asset": { + "type": "boolean", + "description": "Does this field disable the asset when its value is set to `true`?", + "default": false + } + }, + "additionalProperties": false + }, + "AssetCheckboxField": { + "title": "AssetCheckboxField", + "type": "object", + "required": ["label", "field_type"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "checkbox" + }, + "value": { + "type": "boolean", + "description": "Is the box checked?", + "default": false + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + }, + "is_impact": { + "type": "boolean", + "description": "Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?", + "default": false + }, + "disables_asset": { + "type": "boolean", + "description": "Does this field disable the asset when its value is set to `true`?", + "default": false + } + }, + "additionalProperties": false + }, + "AssetCollection": { + "title": "AssetCollection", + "type": "object", + "required": ["type", "name", "_source"], + "properties": { + "_id": { + "$ref": "#/definitions/AssetCollectionId", + "description": "The unique Datasworn ID for this item." + }, + "type": { + "type": "string", + "const": "asset_collection" + }, + "name": { + "$ref": "#/definitions/Label", + "description": "The primary name/label for this item." + }, + "canonical_name": { + "$ref": "#/definitions/Label", + "description": "The name of this item as it appears on the page in the book, if it's different from `name`." + }, + "replaces": { + "$ref": "#/definitions/AssetCollectionId", + "description": "This collection replaces the identified collection. References to the replaced collection can be considered equivalent to this collection." + }, + "enhances": { + "$ref": "#/definitions/AssetCollectionId", + "description": "This collection's content enhances the identified collection, rather than being a standalone collection of its own." + }, + "color": { + "$ref": "#/definitions/CssColor", + "description": "A thematic color associated with this collection." + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An SVG icon associated with this collection." + }, + "images": { + "type": "array", + "items": { + "$ref": "#/definitions/WebpImageUrl", + "description": "Extra images associated with this collection." + } + }, + "summary": { + "$ref": "#/definitions/MarkdownString", + "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." + }, + "description": { + "$ref": "#/definitions/MarkdownString", + "description": "A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead." + }, + "contents": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Asset" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + }, + "tags": { + "type": "object", + "releaseStage": "experimental", + "patternProperties": { + "^([a-z0-9_]{3,})$": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/Tag" + } + } + } + } + }, + "_comment": { + "type": "string", + "description": "Any implementation hints or other developer-facing comments on this object. These should be omitted when presenting the object for gameplay." + }, + "_source": { + "$ref": "#/definitions/SourceInfo", + "description": "Attribution for the original source (such as a book or website) of this item, including the author and licensing information." + } + }, + "additionalProperties": false + }, + "AssetConditionMeter": { + "title": "AssetConditionMeter", + "type": "object", + "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\".", + "required": ["label", "field_type", "max"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "condition_meter" + }, + "rollable": { + "type": "boolean", + "description": "Is this meter's `value` usable as a stat in an action roll?", + "default": true, + "const": true + }, + "min": { + "type": "integer", + "description": "The minimum value of this meter.", + "default": 0 + }, + "max": { + "type": "integer", + "description": "The maximum value of this meter." + }, + "value": { + "type": "integer", + "description": "The current value of this meter.", + "default": 0 + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + }, + "controls": { + "type": "object", + "description": "Checkbox controls rendered as part of the condition meter.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetConditionMeterControlField" + } + } + }, + "moves": { + "type": "object", + "description": "Provides hints for moves that interact with this condition meter, such as suffer and recovery moves.", + "releaseStage": "experimental", + "properties": { + "recover": { + "type": "array", + "description": "The ID(s) of recovery moves associated with this meter.", + "items": { + "$ref": "#/definitions/MoveIdWildcard", + "examples": [ + "classic/moves/adventure/heal", + "classic/moves/adventure/make_camp", + "classic/moves/relationship/sojourn", + "starforged/moves/recover/heal", + "starforged/moves/recover/repair" + ] + } + }, + "suffer": { + "type": "array", + "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.", + "items": { + "$ref": "#/definitions/MoveIdWildcard", + "examples": [ + "classic/moves/suffer/companion_endure_harm", + "starforged/moves/suffer/companion_takes_a_hit", + "starforged/moves/suffer/withstand_damage" + ] + } + } + } + } + }, + "additionalProperties": false + }, + "AssetConditionMeterControlField": { + "title": "AssetConditionMeterControlField", + "type": "object", + "description": "A checkbox control field, rendered as part of an asset condition meter.", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "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" + } + } + ] + }, + "AssetConditionMeterEnhancement": { + "title": "AssetConditionMeterEnhancement", + "type": "object", + "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\".", + "required": ["field_type", "max"], + "properties": { + "field_type": { + "type": "string", + "const": "condition_meter" + }, + "max": { + "type": "integer", + "description": "The maximum value of this meter." + } + }, + "additionalProperties": false + }, + "AssetControlField": { + "title": "AssetControlField", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "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" + } + } + ] + }, + "AssetControlFieldEnhancement": { + "title": "AssetControlFieldEnhancement", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "properties": { + "field_type": { + "enum": ["condition_meter"] + } + }, + "additionalProperties": true, + "allOf": [ + { + "if": { + "properties": { + "field_type": { + "const": "condition_meter", + "type": "string" + } + } + }, + "then": { + "$ref": "#/definitions/AssetConditionMeterEnhancement" + } + } + ] + }, + "AssetEnhancement": { + "title": "AssetEnhancement", + "type": "object", + "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.", + "properties": { + "count_as_impact": { + "type": "boolean", + "description": "If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn)." + }, + "shared": { + "type": "boolean", + "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." + }, + "attachments": { + "$ref": "#/definitions/AssetAttachment" + }, + "controls": { + "type": "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.", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/AssetControlFieldEnhancement" + } + } + }, + "suggestions": { + "$ref": "#/definitions/Suggestions" + } + }, + "additionalProperties": false + }, + "AssetOptionField": { + "title": "AssetOptionField", + "type": "object", + "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.", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.", + "required": ["field_type"], + "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" + } + } + ] + }, + "ClockField": { + "title": "ClockField", + "type": "object", + "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).", + "required": ["label", "field_type", "max"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "clock" + }, + "rollable": { + "type": "boolean", + "default": false, + "const": false + }, + "min": { + "type": "integer", + "description": "The minimum number of filled clock segments. This is always 0.", + "default": 0, + "const": 0 + }, + "max": { + "title": "ClockSize", + "type": "integer", + "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.", + "multipleOf": 2, + "minimum": 2 + }, + "value": { + "type": "integer", + "description": "The current value of this input.", + "default": 0 + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + } + }, + "additionalProperties": false + }, + "ConditionMeterField": { + "title": "ConditionMeterField", + "type": "object", + "description": "A meter with an integer value, bounded by a minimum and maximum.", + "required": ["label", "field_type", "max"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "condition_meter" + }, + "rollable": { + "type": "boolean", + "description": "Is this meter's `value` usable as a stat in an action roll?", + "default": true, + "const": true + }, + "min": { + "type": "integer", + "description": "The minimum value of this meter.", + "default": 0 + }, + "max": { + "type": "integer", + "description": "The maximum value of this meter." + }, + "value": { + "type": "integer", + "description": "The current value of this meter.", + "default": 0 + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + } + }, + "additionalProperties": false + }, + "CounterField": { + "title": "CounterField", + "type": "object", + "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 ``", + "required": ["label", "field_type"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "counter" + }, + "rollable": { + "type": "boolean", + "default": false, + "const": false + }, + "min": { + "type": "integer", + "description": "The (inclusive) minimum value.", + "default": 0 + }, + "max": { + "description": "The (inclusive) maximum value, or `null` if there's no maximum.", + "default": null, + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "value": { + "type": "integer", + "description": "The current value of this input.", + "default": 0 + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + } + }, + "additionalProperties": false + }, + "SelectEnhancementField": { + "title": "SelectEnhancementField", + "type": "object", + "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", + "required": ["label", "field_type", "choices"], + "properties": { + "label": { + "$ref": "#/definitions/InputLabel" + }, + "field_type": { + "type": "string", + "const": "select_value" + }, + "choices": { + "type": "object", + "remarks": "Deserialize as a dictionary object.", + "patternProperties": { + "^([a-z][a-z_]*)$": { + "$ref": "#/definitions/SelectValueFieldChoice" + } + } + }, + "value": { + "description": "The current value of this input.", + "default": null, + "anyOf": [ + { + "$ref": "#/definitions/DictKey", + "description": "The key of the currently selected choice from the `choices` property, or `null` if none is selected.", + "default": null + }, + { + "type": "null" + } + ] + }, + "icon": { + "$ref": "#/definitions/SvgImageUrl", + "description": "An icon associated with this input." + } + }, + "additionalProperties": false + }, + "SelectValueFieldChoice": { + "title": "SelectValueFieldChoice", + "type": "object", + "remarks": "Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator.", + "required": ["using"], + "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 `