@datasworn-community/core 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/cjs/Datasworn.d.ts +5012 -0
- package/dist/cjs/Datasworn.d.ts.map +1 -0
- package/dist/cjs/Datasworn.js +3 -0
- package/dist/cjs/Datasworn.js.map +1 -0
- package/dist/cjs/DataswornSource.d.ts +5025 -0
- package/dist/cjs/DataswornSource.d.ts.map +1 -0
- package/dist/cjs/DataswornSource.js +3 -0
- package/dist/cjs/DataswornSource.js.map +1 -0
- package/dist/cjs/DataswornTree.d.ts +9 -0
- package/dist/cjs/DataswornTree.d.ts.map +1 -0
- package/dist/cjs/DataswornTree.js +25 -0
- package/dist/cjs/DataswornTree.js.map +1 -0
- package/dist/cjs/DataswornVersion.d.ts +8 -0
- package/dist/cjs/DataswornVersion.d.ts.map +1 -0
- package/dist/cjs/DataswornVersion.js +10 -0
- package/dist/cjs/DataswornVersion.js.map +1 -0
- package/dist/cjs/Errors.d.ts +5 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +11 -0
- package/dist/cjs/Errors.js.map +1 -0
- package/dist/cjs/IdElements/CONST.d.ts +37 -0
- package/dist/cjs/IdElements/CONST.d.ts.map +1 -0
- package/dist/cjs/IdElements/CONST.js +26 -0
- package/dist/cjs/IdElements/CONST.js.map +1 -0
- package/dist/cjs/IdElements/PathKeys.d.ts +13 -0
- package/dist/cjs/IdElements/PathKeys.d.ts.map +1 -0
- package/dist/cjs/IdElements/PathKeys.js +3 -0
- package/dist/cjs/IdElements/PathKeys.js.map +1 -0
- package/dist/cjs/IdElements/Pattern.d.ts +13 -0
- package/dist/cjs/IdElements/Pattern.d.ts.map +1 -0
- package/dist/cjs/IdElements/Pattern.js +20 -0
- package/dist/cjs/IdElements/Pattern.js.map +1 -0
- package/dist/cjs/IdElements/TypeGuard.d.ts +25 -0
- package/dist/cjs/IdElements/TypeGuard.d.ts.map +1 -0
- package/dist/cjs/IdElements/TypeGuard.js +72 -0
- package/dist/cjs/IdElements/TypeGuard.js.map +1 -0
- package/dist/cjs/IdElements/TypeId.d.ts +114 -0
- package/dist/cjs/IdElements/TypeId.d.ts.map +1 -0
- package/dist/cjs/IdElements/TypeId.js +259 -0
- package/dist/cjs/IdElements/TypeId.js.map +1 -0
- package/dist/cjs/IdElements/index.d.ts +6 -0
- package/dist/cjs/IdElements/index.d.ts.map +1 -0
- package/dist/cjs/IdElements/index.js +48 -0
- package/dist/cjs/IdElements/index.js.map +1 -0
- package/dist/cjs/IdParser.d.ts +380 -0
- package/dist/cjs/IdParser.d.ts.map +1 -0
- package/dist/cjs/IdParser.js +1012 -0
- package/dist/cjs/IdParser.js.map +1 -0
- package/dist/cjs/Migrations/index.d.ts +2 -0
- package/dist/cjs/Migrations/index.d.ts.map +1 -0
- package/dist/cjs/Migrations/index.js +18 -0
- package/dist/cjs/Migrations/index.js.map +1 -0
- package/dist/cjs/Migrations/updateIds.d.ts +34 -0
- package/dist/cjs/Migrations/updateIds.d.ts.map +1 -0
- package/dist/cjs/Migrations/updateIds.js +141 -0
- package/dist/cjs/Migrations/updateIds.js.map +1 -0
- package/dist/cjs/StringId.d.ts +47 -0
- package/dist/cjs/StringId.d.ts.map +1 -0
- package/dist/cjs/StringId.js +3 -0
- package/dist/cjs/StringId.js.map +1 -0
- package/dist/cjs/Tree.d.ts +5 -0
- package/dist/cjs/Tree.d.ts.map +1 -0
- package/dist/cjs/Tree.js +3 -0
- package/dist/cjs/Tree.js.map +1 -0
- package/dist/cjs/TypeNode.d.ts +93 -0
- package/dist/cjs/TypeNode.d.ts.map +1 -0
- package/dist/cjs/TypeNode.js +3 -0
- package/dist/cjs/TypeNode.js.map +1 -0
- package/dist/cjs/Utils/Array.d.ts +16 -0
- package/dist/cjs/Utils/Array.d.ts.map +1 -0
- package/dist/cjs/Utils/Array.js +14 -0
- package/dist/cjs/Utils/Array.js.map +1 -0
- package/dist/cjs/Utils/Id.d.ts +75 -0
- package/dist/cjs/Utils/Id.d.ts.map +1 -0
- package/dist/cjs/Utils/Id.js +3 -0
- package/dist/cjs/Utils/Id.js.map +1 -0
- package/dist/cjs/Utils/Number.d.ts +5 -0
- package/dist/cjs/Utils/Number.d.ts.map +1 -0
- package/dist/cjs/Utils/Number.js +4 -0
- package/dist/cjs/Utils/Number.js.map +1 -0
- package/dist/cjs/Utils/Sort.d.ts +17 -0
- package/dist/cjs/Utils/Sort.d.ts.map +1 -0
- package/dist/cjs/Utils/Sort.js +277 -0
- package/dist/cjs/Utils/Sort.js.map +1 -0
- package/dist/cjs/Utils/String.d.ts +4 -0
- package/dist/cjs/Utils/String.d.ts.map +1 -0
- package/dist/cjs/Utils/String.js +3 -0
- package/dist/cjs/Utils/String.js.map +1 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mergeExpansion.d.ts +3 -0
- package/dist/cjs/mergeExpansion.d.ts.map +1 -0
- package/dist/cjs/mergeExpansion.js +113 -0
- package/dist/cjs/mergeExpansion.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Datasworn.d.ts +5012 -0
- package/dist/esm/Datasworn.d.ts.map +1 -0
- package/dist/esm/Datasworn.js +2 -0
- package/dist/esm/Datasworn.js.map +1 -0
- package/dist/esm/DataswornSource.d.ts +5025 -0
- package/dist/esm/DataswornSource.d.ts.map +1 -0
- package/dist/esm/DataswornSource.js +2 -0
- package/dist/esm/DataswornSource.js.map +1 -0
- package/dist/esm/DataswornTree.d.ts +9 -0
- package/dist/esm/DataswornTree.d.ts.map +1 -0
- package/dist/esm/DataswornTree.js +21 -0
- package/dist/esm/DataswornTree.js.map +1 -0
- package/dist/esm/DataswornVersion.d.ts +8 -0
- package/dist/esm/DataswornVersion.d.ts.map +1 -0
- package/dist/esm/DataswornVersion.js +7 -0
- package/dist/esm/DataswornVersion.js.map +1 -0
- package/dist/esm/Errors.d.ts +5 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +7 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/IdElements/CONST.d.ts +37 -0
- package/dist/esm/IdElements/CONST.d.ts.map +1 -0
- package/dist/esm/IdElements/CONST.js +23 -0
- package/dist/esm/IdElements/CONST.js.map +1 -0
- package/dist/esm/IdElements/PathKeys.d.ts +13 -0
- package/dist/esm/IdElements/PathKeys.d.ts.map +1 -0
- package/dist/esm/IdElements/PathKeys.js +2 -0
- package/dist/esm/IdElements/PathKeys.js.map +1 -0
- package/dist/esm/IdElements/Pattern.d.ts +13 -0
- package/dist/esm/IdElements/Pattern.d.ts.map +1 -0
- package/dist/esm/IdElements/Pattern.js +18 -0
- package/dist/esm/IdElements/Pattern.js.map +1 -0
- package/dist/esm/IdElements/TypeGuard.d.ts +25 -0
- package/dist/esm/IdElements/TypeGuard.d.ts.map +1 -0
- package/dist/esm/IdElements/TypeGuard.js +67 -0
- package/dist/esm/IdElements/TypeGuard.js.map +1 -0
- package/dist/esm/IdElements/TypeId.d.ts +114 -0
- package/dist/esm/IdElements/TypeId.d.ts.map +1 -0
- package/dist/esm/IdElements/TypeId.js +257 -0
- package/dist/esm/IdElements/TypeId.js.map +1 -0
- package/dist/esm/IdElements/index.d.ts +6 -0
- package/dist/esm/IdElements/index.d.ts.map +1 -0
- package/dist/esm/IdElements/index.js +6 -0
- package/dist/esm/IdElements/index.js.map +1 -0
- package/dist/esm/IdParser.d.ts +380 -0
- package/dist/esm/IdParser.d.ts.map +1 -0
- package/dist/esm/IdParser.js +1004 -0
- package/dist/esm/IdParser.js.map +1 -0
- package/dist/esm/Migrations/index.d.ts +2 -0
- package/dist/esm/Migrations/index.d.ts.map +1 -0
- package/dist/esm/Migrations/index.js +2 -0
- package/dist/esm/Migrations/index.js.map +1 -0
- package/dist/esm/Migrations/updateIds.d.ts +34 -0
- package/dist/esm/Migrations/updateIds.d.ts.map +1 -0
- package/dist/esm/Migrations/updateIds.js +135 -0
- package/dist/esm/Migrations/updateIds.js.map +1 -0
- package/dist/esm/StringId.d.ts +47 -0
- package/dist/esm/StringId.d.ts.map +1 -0
- package/dist/esm/StringId.js +2 -0
- package/dist/esm/StringId.js.map +1 -0
- package/dist/esm/Tree.d.ts +5 -0
- package/dist/esm/Tree.d.ts.map +1 -0
- package/dist/esm/Tree.js +2 -0
- package/dist/esm/Tree.js.map +1 -0
- package/dist/esm/TypeNode.d.ts +93 -0
- package/dist/esm/TypeNode.d.ts.map +1 -0
- package/dist/esm/TypeNode.js +2 -0
- package/dist/esm/TypeNode.js.map +1 -0
- package/dist/esm/Utils/Array.d.ts +16 -0
- package/dist/esm/Utils/Array.d.ts.map +1 -0
- package/dist/esm/Utils/Array.js +11 -0
- package/dist/esm/Utils/Array.js.map +1 -0
- package/dist/esm/Utils/Id.d.ts +75 -0
- package/dist/esm/Utils/Id.d.ts.map +1 -0
- package/dist/esm/Utils/Id.js +2 -0
- package/dist/esm/Utils/Id.js.map +1 -0
- package/dist/esm/Utils/Number.d.ts +5 -0
- package/dist/esm/Utils/Number.d.ts.map +1 -0
- package/dist/esm/Utils/Number.js +3 -0
- package/dist/esm/Utils/Number.js.map +1 -0
- package/dist/esm/Utils/Sort.d.ts +17 -0
- package/dist/esm/Utils/Sort.d.ts.map +1 -0
- package/dist/esm/Utils/Sort.js +267 -0
- package/dist/esm/Utils/Sort.js.map +1 -0
- package/dist/esm/Utils/String.d.ts +4 -0
- package/dist/esm/Utils/String.d.ts.map +1 -0
- package/dist/esm/Utils/String.js +2 -0
- package/dist/esm/Utils/String.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mergeExpansion.d.ts +3 -0
- package/dist/esm/mergeExpansion.d.ts.map +1 -0
- package/dist/esm/mergeExpansion.js +107 -0
- package/dist/esm/mergeExpansion.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/json/datasworn-source.schema.json +11420 -0
- package/json/datasworn.schema.json +11354 -0
- package/migration/0.1.0/id_regex_map.json +21 -0
- package/package.json +52 -0
|
@@ -0,0 +1,5012 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* - `miss`: An automatic miss.
|
|
3
|
+
* - `weak_hit`: An automatic weak hit.
|
|
4
|
+
* - `strong_hit`: An automatic strong hit.
|
|
5
|
+
* - `player_choice`: The player chooses which roll option to use.
|
|
6
|
+
* - `highest`: Use the roll option with the best/highest value.
|
|
7
|
+
* - `lowest`: Use the roll option with the worst/lowest value.
|
|
8
|
+
* - `all`: Use _every_ roll option at once.
|
|
9
|
+
*/
|
|
10
|
+
export type ActionRollMethod = "miss" | "weak_hit" | "strong_hit" | "player_choice" | "highest" | "lowest" | "all";
|
|
11
|
+
/**
|
|
12
|
+
* Represents any kind of non-wildcard ID, including IDs of embedded objects.
|
|
13
|
+
*/
|
|
14
|
+
export type AnyId = AtlasEntryId | NpcId | NpcVariantId | OracleRollableId | AssetAbilityOracleRollableId | MoveOracleRollableId | TruthOptionOracleRollableId | OracleRollableRowId | AssetAbilityOracleRollableRowId | MoveOracleRollableRowId | TruthOptionOracleRollableRowId | AssetId | AssetAbilityId | AssetAbilityMoveId | MoveId | AssetAbilityMoveConditionId | MoveConditionId | AssetAbilityMoveOutcomeId | MoveOutcomeId | AtlasCollectionId | NpcCollectionId | OracleCollectionId | AssetCollectionId | MoveCategoryId | DelveSiteId | DelveSiteDenizenId | DelveSiteDomainId | DelveSiteDomainFeatureId | DelveSiteThemeFeatureId | DelveSiteDomainDangerId | DelveSiteThemeDangerId | DelveSiteThemeId | RarityId | TruthId | TruthOptionId;
|
|
15
|
+
/**
|
|
16
|
+
* Represents any kind of wildcard ID, including IDs of embedded objects.
|
|
17
|
+
*/
|
|
18
|
+
export type AnyIdWildcard = AtlasEntryIdWildcard | NpcIdWildcard | NpcVariantIdWildcard | OracleRollableIdWildcard | AssetAbilityOracleRollableIdWildcard | MoveOracleRollableIdWildcard | TruthOptionOracleRollableIdWildcard | OracleRollableRowIdWildcard | AssetAbilityOracleRollableRowIdWildcard | MoveOracleRollableRowIdWildcard | TruthOptionOracleRollableRowIdWildcard | AssetIdWildcard | AssetAbilityIdWildcard | AssetAbilityMoveIdWildcard | MoveIdWildcard | AssetAbilityMoveConditionIdWildcard | MoveConditionIdWildcard | AssetAbilityMoveOutcomeIdWildcard | MoveOutcomeIdWildcard | AtlasCollectionIdWildcard | NpcCollectionIdWildcard | OracleCollectionIdWildcard | AssetCollectionIdWildcard | MoveCategoryIdWildcard | DelveSiteIdWildcard | DelveSiteDenizenIdWildcard | DelveSiteDomainIdWildcard | DelveSiteDomainFeatureIdWildcard | DelveSiteThemeFeatureIdWildcard | DelveSiteDomainDangerIdWildcard | DelveSiteThemeDangerIdWildcard | DelveSiteThemeIdWildcard | RarityIdWildcard | TruthIdWildcard | TruthOptionIdWildcard;
|
|
19
|
+
export type AnyMove = Move | EmbeddedMove;
|
|
20
|
+
export type AnyMoveConditionId = AssetAbilityMoveConditionId | MoveConditionId;
|
|
21
|
+
export type AnyMoveConditionIdWildcard = AssetAbilityMoveConditionIdWildcard | MoveConditionIdWildcard;
|
|
22
|
+
export type AnyMoveId = MoveId | AssetAbilityMoveId;
|
|
23
|
+
export type AnyMoveIdWildcard = MoveIdWildcard | AssetAbilityMoveIdWildcard;
|
|
24
|
+
export type AnyMoveOutcomeId = AssetAbilityMoveOutcomeId | MoveOutcomeId;
|
|
25
|
+
export type AnyMoveOutcomeIdWildcard = AssetAbilityMoveOutcomeIdWildcard | MoveOutcomeIdWildcard;
|
|
26
|
+
export type AnyOracleRollable = OracleRollable | EmbeddedOracleRollable;
|
|
27
|
+
export type AnyOracleRollableId = OracleRollableId | AssetAbilityOracleRollableId | TruthOptionOracleRollableId | MoveOracleRollableId;
|
|
28
|
+
export type AnyOracleRollableIdWildcard = OracleRollableIdWildcard | AssetAbilityOracleRollableIdWildcard | TruthOptionOracleRollableIdWildcard | MoveOracleRollableIdWildcard;
|
|
29
|
+
export type AnyOracleRollableRowId = OracleRollableRowId | AssetAbilityOracleRollableRowId | MoveOracleRollableRowId | TruthOptionOracleRollableRowId;
|
|
30
|
+
export type AnyOracleRollableRowIdWildcard = OracleRollableRowIdWildcard | AssetAbilityOracleRollableRowIdWildcard | MoveOracleRollableRowIdWildcard | TruthOptionOracleRollableRowIdWildcard;
|
|
31
|
+
export interface Asset {
|
|
32
|
+
/**
|
|
33
|
+
* The unique Datasworn ID for this node.
|
|
34
|
+
*/
|
|
35
|
+
_id: AssetId;
|
|
36
|
+
_comment?: Documentation;
|
|
37
|
+
/**
|
|
38
|
+
* The primary name/label for this node.
|
|
39
|
+
*/
|
|
40
|
+
name: Label;
|
|
41
|
+
/**
|
|
42
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
43
|
+
*/
|
|
44
|
+
canonical_name?: Label;
|
|
45
|
+
/**
|
|
46
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
47
|
+
*/
|
|
48
|
+
_source: SourceInfo;
|
|
49
|
+
suggestions?: Suggestions;
|
|
50
|
+
tags?: Tags;
|
|
51
|
+
/**
|
|
52
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
53
|
+
*/
|
|
54
|
+
replaces?: AssetIdWildcard[];
|
|
55
|
+
/**
|
|
56
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
57
|
+
*/
|
|
58
|
+
color?: CssColor;
|
|
59
|
+
images?: WebpImageUrl[];
|
|
60
|
+
/**
|
|
61
|
+
* An SVG icon associated with this collection.
|
|
62
|
+
*/
|
|
63
|
+
icon?: SvgImageUrl;
|
|
64
|
+
/**
|
|
65
|
+
* A localized category label for this asset. This is the surtitle above the asset's name on the card.
|
|
66
|
+
* @example "Combat Talent"
|
|
67
|
+
* @example "Command Vehicle"
|
|
68
|
+
* @example "Companion"
|
|
69
|
+
* @example "Deed"
|
|
70
|
+
* @example "Module"
|
|
71
|
+
* @example "Path"
|
|
72
|
+
* @example "Ritual"
|
|
73
|
+
* @example "Support Vehicle"
|
|
74
|
+
*/
|
|
75
|
+
category: Label;
|
|
76
|
+
/**
|
|
77
|
+
* 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.
|
|
78
|
+
* @remarks Deserialize as a dictionary object.
|
|
79
|
+
* @default {}
|
|
80
|
+
*/
|
|
81
|
+
options: Record<DictKey, AssetOptionField>;
|
|
82
|
+
/**
|
|
83
|
+
* Describes prerequisites for purchasing or using this asset.
|
|
84
|
+
*/
|
|
85
|
+
requirement?: MarkdownString;
|
|
86
|
+
abilities: AssetAbility[];
|
|
87
|
+
/**
|
|
88
|
+
* Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset.
|
|
89
|
+
* @remarks Deserialize as a dictionary object.
|
|
90
|
+
* @default {}
|
|
91
|
+
*/
|
|
92
|
+
controls?: Record<DictKey, AssetControlField>;
|
|
93
|
+
/**
|
|
94
|
+
* If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn).
|
|
95
|
+
* @default false
|
|
96
|
+
*/
|
|
97
|
+
count_as_impact: boolean;
|
|
98
|
+
attachments?: AssetAttachment;
|
|
99
|
+
/**
|
|
100
|
+
* 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.
|
|
101
|
+
* @default false
|
|
102
|
+
*/
|
|
103
|
+
shared: boolean;
|
|
104
|
+
type: "asset";
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* An asset ability: one of the purchasable features of an asset. Most assets have three.
|
|
108
|
+
*/
|
|
109
|
+
export interface AssetAbility {
|
|
110
|
+
/**
|
|
111
|
+
* The unique Datasworn ID for this node.
|
|
112
|
+
*/
|
|
113
|
+
_id: AssetAbilityId;
|
|
114
|
+
_comment?: Documentation;
|
|
115
|
+
/**
|
|
116
|
+
* A handful of asset abilities have a label/name, for instance classic Ironsworn companion assets. Most canonical assets omit this property.
|
|
117
|
+
*/
|
|
118
|
+
name?: Label;
|
|
119
|
+
/**
|
|
120
|
+
* The complete rules text of this asset ability.
|
|
121
|
+
*/
|
|
122
|
+
text: MarkdownString;
|
|
123
|
+
/**
|
|
124
|
+
* Is this asset ability enabled?
|
|
125
|
+
* @default false
|
|
126
|
+
*/
|
|
127
|
+
enabled: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Unique moves added by this asset ability.
|
|
130
|
+
* @remarks Deserialize as a dictionary object.
|
|
131
|
+
* @default {}
|
|
132
|
+
*/
|
|
133
|
+
moves?: Record<DictKey, EmbeddedMove>;
|
|
134
|
+
/**
|
|
135
|
+
* @remarks Deserialize as a dictionary object.
|
|
136
|
+
* @default {}
|
|
137
|
+
*/
|
|
138
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
139
|
+
/**
|
|
140
|
+
* Fields that are expected to be set once and remain the same through the life of the asset.
|
|
141
|
+
* @remarks Deserialize as a dictionary object.
|
|
142
|
+
* @default {}
|
|
143
|
+
*/
|
|
144
|
+
options?: Record<DictKey, AssetAbilityOptionField>;
|
|
145
|
+
/**
|
|
146
|
+
* Fields whose values are expected to change over the life of the asset.
|
|
147
|
+
* @remarks Deserialize as a dictionary object.
|
|
148
|
+
* @default {}
|
|
149
|
+
*/
|
|
150
|
+
controls?: Record<DictKey, AssetAbilityControlField>;
|
|
151
|
+
/**
|
|
152
|
+
* Changes made to the asset, when this ability is enabled.
|
|
153
|
+
*/
|
|
154
|
+
enhance_asset?: AssetEnhancement;
|
|
155
|
+
/**
|
|
156
|
+
* Describes changes made to various moves by this asset ability. Usually these require specific trigger conditions.
|
|
157
|
+
*/
|
|
158
|
+
enhance_moves?: MoveEnhancement[];
|
|
159
|
+
tags?: Tags;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
163
|
+
*/
|
|
164
|
+
export type AssetAbilityControlField = ClockField | CounterField | AssetCheckboxField | TextField;
|
|
165
|
+
/**
|
|
166
|
+
* A unique ID representing an AssetAbility object.
|
|
167
|
+
* @pattern ```javascript
|
|
168
|
+
* /^asset\.ability:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)$/
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
export type AssetAbilityId = string;
|
|
172
|
+
/**
|
|
173
|
+
* A wildcarded AssetAbilityId that can be used to match multiple AssetAbility objects.
|
|
174
|
+
* @pattern ```javascript
|
|
175
|
+
* /^asset\.ability:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)$/
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export type AssetAbilityIdWildcard = string;
|
|
179
|
+
/**
|
|
180
|
+
* A unique ID representing an AssetAbilityMoveCondition object.
|
|
181
|
+
* @pattern ```javascript
|
|
182
|
+
* /^asset\.ability\.move\.condition:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)\.([a-z][a-z0-9_]*|\*)\.(\d+)$/
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
export type AssetAbilityMoveConditionId = string;
|
|
186
|
+
/**
|
|
187
|
+
* A wildcarded AssetAbilityMoveConditionId that can be used to match multiple AssetAbilityMoveCondition objects.
|
|
188
|
+
* @pattern ```javascript
|
|
189
|
+
* /^asset\.ability\.move\.condition:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)\.(\d+|\*)$/
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export type AssetAbilityMoveConditionIdWildcard = string;
|
|
193
|
+
/**
|
|
194
|
+
* A unique ID representing an AssetAbilityMove object.
|
|
195
|
+
* @pattern ```javascript
|
|
196
|
+
* /^asset\.ability\.move:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)\.([a-z][a-z0-9_]*|\*)$/
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export type AssetAbilityMoveId = string;
|
|
200
|
+
/**
|
|
201
|
+
* A wildcarded AssetAbilityMoveId that can be used to match multiple AssetAbilityMove objects.
|
|
202
|
+
* @pattern ```javascript
|
|
203
|
+
* /^asset\.ability\.move:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)$/
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export type AssetAbilityMoveIdWildcard = string;
|
|
207
|
+
/**
|
|
208
|
+
* A unique ID representing an AssetAbilityMoveOutcome object.
|
|
209
|
+
* @pattern ```javascript
|
|
210
|
+
* /^asset\.ability\.move\.outcome:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)\.([a-z][a-z0-9_]*|\*)\.([a-z][a-z0-9_]*|\*)$/
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
export type AssetAbilityMoveOutcomeId = string;
|
|
214
|
+
/**
|
|
215
|
+
* A wildcarded AssetAbilityMoveOutcomeId that can be used to match multiple AssetAbilityMoveOutcome objects.
|
|
216
|
+
* @pattern ```javascript
|
|
217
|
+
* /^asset\.ability\.move\.outcome:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)\.([a-z][a-z0-9_]*|\*)$/
|
|
218
|
+
* ```
|
|
219
|
+
*/
|
|
220
|
+
export type AssetAbilityMoveOutcomeIdWildcard = string;
|
|
221
|
+
/**
|
|
222
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
223
|
+
*/
|
|
224
|
+
export type AssetAbilityOptionField = TextField;
|
|
225
|
+
/**
|
|
226
|
+
* A unique ID representing an AssetAbilityOracleRollable object.
|
|
227
|
+
* @pattern ```javascript
|
|
228
|
+
* /^asset\.ability\.oracle_rollable:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)\.([a-z][a-z0-9_]*|\*)$/
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
export type AssetAbilityOracleRollableId = string;
|
|
232
|
+
/**
|
|
233
|
+
* A wildcarded AssetAbilityOracleRollableId that can be used to match multiple AssetAbilityOracleRollable objects.
|
|
234
|
+
* @pattern ```javascript
|
|
235
|
+
* /^asset\.ability\.oracle_rollable:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)$/
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
export type AssetAbilityOracleRollableIdWildcard = string;
|
|
239
|
+
/**
|
|
240
|
+
* A unique ID representing an AssetAbilityOracleRollableRow object.
|
|
241
|
+
* @pattern ```javascript
|
|
242
|
+
* /^asset\.ability\.oracle_rollable\.row:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)\.([a-z][a-z0-9_]*|\*)\.(\d+)$/
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
export type AssetAbilityOracleRollableRowId = string;
|
|
246
|
+
/**
|
|
247
|
+
* A wildcarded AssetAbilityOracleRollableRowId that can be used to match multiple AssetAbilityOracleRollableRow objects.
|
|
248
|
+
* @pattern ```javascript
|
|
249
|
+
* /^asset\.ability\.oracle_rollable\.row:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)\.(\d+|\*)$/
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export type AssetAbilityOracleRollableRowIdWildcard = string;
|
|
253
|
+
/**
|
|
254
|
+
* 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.
|
|
255
|
+
*/
|
|
256
|
+
export interface AssetAttachment {
|
|
257
|
+
/**
|
|
258
|
+
* Asset IDs (which may be wildcards) that may be attached to this asset
|
|
259
|
+
*/
|
|
260
|
+
assets: AssetIdWildcard[];
|
|
261
|
+
/**
|
|
262
|
+
* Null if there's no upper limit to the number of attached assets.
|
|
263
|
+
* @default null
|
|
264
|
+
*/
|
|
265
|
+
max: number | null;
|
|
266
|
+
}
|
|
267
|
+
export interface AssetCardFlipField {
|
|
268
|
+
label: Label;
|
|
269
|
+
/**
|
|
270
|
+
* Is the card flipped over?
|
|
271
|
+
* @default false
|
|
272
|
+
*/
|
|
273
|
+
value: boolean;
|
|
274
|
+
field_type: "card_flip";
|
|
275
|
+
/**
|
|
276
|
+
* An icon associated with this input.
|
|
277
|
+
*/
|
|
278
|
+
icon?: SvgImageUrl;
|
|
279
|
+
/**
|
|
280
|
+
* Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?
|
|
281
|
+
* @default false
|
|
282
|
+
*/
|
|
283
|
+
is_impact: boolean;
|
|
284
|
+
/**
|
|
285
|
+
* Does this field disable the asset when its value is set to `true`?
|
|
286
|
+
* @default false
|
|
287
|
+
*/
|
|
288
|
+
disables_asset: boolean;
|
|
289
|
+
}
|
|
290
|
+
export interface AssetCheckboxField {
|
|
291
|
+
label: Label;
|
|
292
|
+
/**
|
|
293
|
+
* Is the box checked?
|
|
294
|
+
* @default false
|
|
295
|
+
*/
|
|
296
|
+
value: boolean;
|
|
297
|
+
field_type: "checkbox";
|
|
298
|
+
/**
|
|
299
|
+
* An icon associated with this input.
|
|
300
|
+
*/
|
|
301
|
+
icon?: SvgImageUrl;
|
|
302
|
+
/**
|
|
303
|
+
* Does this field count as an impact (Starforged) or debility (Ironsworn classic) when its value is set to `true`?
|
|
304
|
+
* @default false
|
|
305
|
+
*/
|
|
306
|
+
is_impact: boolean;
|
|
307
|
+
/**
|
|
308
|
+
* Does this field disable the asset when its value is set to `true`?
|
|
309
|
+
* @default false
|
|
310
|
+
*/
|
|
311
|
+
disables_asset: boolean;
|
|
312
|
+
}
|
|
313
|
+
export interface AssetCollection {
|
|
314
|
+
/**
|
|
315
|
+
* The unique Datasworn ID for this node.
|
|
316
|
+
*/
|
|
317
|
+
_id: AssetCollectionId;
|
|
318
|
+
_comment?: Documentation;
|
|
319
|
+
/**
|
|
320
|
+
* The primary name/label for this node.
|
|
321
|
+
*/
|
|
322
|
+
name: Label;
|
|
323
|
+
/**
|
|
324
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
325
|
+
*/
|
|
326
|
+
canonical_name?: Label;
|
|
327
|
+
/**
|
|
328
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
329
|
+
*/
|
|
330
|
+
_source: SourceInfo;
|
|
331
|
+
suggestions?: Suggestions;
|
|
332
|
+
tags?: Tags;
|
|
333
|
+
/**
|
|
334
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
335
|
+
*/
|
|
336
|
+
replaces?: AssetCollectionIdWildcard[];
|
|
337
|
+
/**
|
|
338
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
339
|
+
*/
|
|
340
|
+
color?: CssColor;
|
|
341
|
+
images?: WebpImageUrl[];
|
|
342
|
+
/**
|
|
343
|
+
* An SVG icon associated with this collection.
|
|
344
|
+
*/
|
|
345
|
+
icon?: SvgImageUrl;
|
|
346
|
+
/**
|
|
347
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
348
|
+
*/
|
|
349
|
+
enhances?: AssetCollectionIdWildcard[];
|
|
350
|
+
/**
|
|
351
|
+
* 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.
|
|
352
|
+
*/
|
|
353
|
+
summary?: MarkdownString;
|
|
354
|
+
/**
|
|
355
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
356
|
+
*/
|
|
357
|
+
description?: MarkdownString;
|
|
358
|
+
/**
|
|
359
|
+
* @remarks Deserialize as a dictionary object.
|
|
360
|
+
* @default {}
|
|
361
|
+
*/
|
|
362
|
+
contents: Record<DictKey, Asset>;
|
|
363
|
+
/**
|
|
364
|
+
* @remarks Deserialize as a dictionary object.
|
|
365
|
+
* @default {}
|
|
366
|
+
*/
|
|
367
|
+
collections: Record<DictKey, AssetCollection>;
|
|
368
|
+
type: "asset_collection";
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* A unique ID representing an AssetCollection object.
|
|
372
|
+
* @pattern ```javascript
|
|
373
|
+
* /^asset_collection:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){1,4})$/
|
|
374
|
+
* ```
|
|
375
|
+
*/
|
|
376
|
+
export type AssetCollectionId = string;
|
|
377
|
+
/**
|
|
378
|
+
* A wildcarded AssetCollectionId that can be used to match multiple AssetCollection objects.
|
|
379
|
+
* @pattern ```javascript
|
|
380
|
+
* /^asset_collection:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){1,4})$/
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
export type AssetCollectionIdWildcard = string;
|
|
384
|
+
/**
|
|
385
|
+
* 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".
|
|
386
|
+
*/
|
|
387
|
+
export interface AssetConditionMeter {
|
|
388
|
+
label: Label;
|
|
389
|
+
/**
|
|
390
|
+
* The current value of this meter.
|
|
391
|
+
* @default 0
|
|
392
|
+
*/
|
|
393
|
+
value: number;
|
|
394
|
+
/**
|
|
395
|
+
* The minimum value of this meter.
|
|
396
|
+
* @default 0
|
|
397
|
+
*/
|
|
398
|
+
min: number;
|
|
399
|
+
/**
|
|
400
|
+
* The maximum value of this meter.
|
|
401
|
+
*/
|
|
402
|
+
max: number;
|
|
403
|
+
/**
|
|
404
|
+
* Is this meter's `value` usable as a stat in an action roll?
|
|
405
|
+
*/
|
|
406
|
+
rollable: true;
|
|
407
|
+
field_type: "condition_meter";
|
|
408
|
+
/**
|
|
409
|
+
* An icon associated with this input.
|
|
410
|
+
*/
|
|
411
|
+
icon?: SvgImageUrl;
|
|
412
|
+
/**
|
|
413
|
+
* Provides hints for moves that interact with this condition meter, such as suffer and recovery moves.
|
|
414
|
+
* @experimental
|
|
415
|
+
*/
|
|
416
|
+
moves?: {
|
|
417
|
+
/**
|
|
418
|
+
* 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.
|
|
419
|
+
*/
|
|
420
|
+
suffer?: AnyMoveIdWildcard[];
|
|
421
|
+
/**
|
|
422
|
+
* The ID(s) of recovery moves associated with this meter.
|
|
423
|
+
*/
|
|
424
|
+
recover?: AnyMoveIdWildcard[];
|
|
425
|
+
};
|
|
426
|
+
/**
|
|
427
|
+
* Checkbox controls rendered as part of the condition meter.
|
|
428
|
+
* @remarks Deserialize as a dictionary object.
|
|
429
|
+
* @default {}
|
|
430
|
+
*/
|
|
431
|
+
controls: Record<DictKey, AssetConditionMeterControlField>;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* A checkbox control field, rendered as part of an asset condition meter.
|
|
435
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
436
|
+
*/
|
|
437
|
+
export type AssetConditionMeterControlField = AssetCheckboxField | AssetCardFlipField;
|
|
438
|
+
/**
|
|
439
|
+
* 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".
|
|
440
|
+
*/
|
|
441
|
+
export interface AssetConditionMeterEnhancement {
|
|
442
|
+
field_type: "condition_meter";
|
|
443
|
+
/**
|
|
444
|
+
* The maximum value of this meter.
|
|
445
|
+
*/
|
|
446
|
+
max: number;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
450
|
+
*/
|
|
451
|
+
export type AssetControlField = AssetConditionMeter | SelectEnhancementField | AssetCheckboxField | AssetCardFlipField;
|
|
452
|
+
/**
|
|
453
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
454
|
+
*/
|
|
455
|
+
export type AssetControlFieldEnhancement = AssetConditionMeterEnhancement;
|
|
456
|
+
/**
|
|
457
|
+
* A reference to the value of an asset control.
|
|
458
|
+
*/
|
|
459
|
+
export interface AssetControlValueRef {
|
|
460
|
+
/**
|
|
461
|
+
* 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.
|
|
462
|
+
* @default null
|
|
463
|
+
*/
|
|
464
|
+
assets: AssetIdWildcard[] | null;
|
|
465
|
+
/**
|
|
466
|
+
* The dictionary key of the asset control field.
|
|
467
|
+
* @example "health"
|
|
468
|
+
* @example "integrity"
|
|
469
|
+
*/
|
|
470
|
+
control: DictKey;
|
|
471
|
+
/**
|
|
472
|
+
* A reference to the value of an asset control.
|
|
473
|
+
*/
|
|
474
|
+
using: "asset_control";
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* 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.
|
|
478
|
+
*/
|
|
479
|
+
export interface AssetEnhancement {
|
|
480
|
+
/**
|
|
481
|
+
* Controls are condition meters, clocks, counters, and other asset input fields whose values are expected to change throughout the life of the asset.
|
|
482
|
+
* @remarks Deserialize as a dictionary object.
|
|
483
|
+
*/
|
|
484
|
+
controls?: Record<DictKey, AssetControlFieldEnhancement>;
|
|
485
|
+
suggestions?: Suggestions;
|
|
486
|
+
/**
|
|
487
|
+
* If `true`, this asset counts as an impact (Starforged) or a debility (classic Ironsworn).
|
|
488
|
+
*/
|
|
489
|
+
count_as_impact?: boolean;
|
|
490
|
+
attachments?: AssetAttachment;
|
|
491
|
+
/**
|
|
492
|
+
* 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.
|
|
493
|
+
*/
|
|
494
|
+
shared?: boolean;
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* A unique ID representing an Asset object.
|
|
498
|
+
* @pattern ```javascript
|
|
499
|
+
* /^asset:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})$/
|
|
500
|
+
* ```
|
|
501
|
+
*/
|
|
502
|
+
export type AssetId = string;
|
|
503
|
+
/**
|
|
504
|
+
* A wildcarded AssetId that can be used to match multiple Asset objects.
|
|
505
|
+
* @pattern ```javascript
|
|
506
|
+
* /^asset:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})$/
|
|
507
|
+
* ```
|
|
508
|
+
*/
|
|
509
|
+
export type AssetIdWildcard = string;
|
|
510
|
+
/**
|
|
511
|
+
* 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.
|
|
512
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `field_type` property as a discriminator.
|
|
513
|
+
*/
|
|
514
|
+
export type AssetOptionField = SelectValueField | SelectEnhancementField | TextField;
|
|
515
|
+
/**
|
|
516
|
+
* A reference to the value of an asset option.
|
|
517
|
+
*/
|
|
518
|
+
export interface AssetOptionValueRef {
|
|
519
|
+
/**
|
|
520
|
+
* 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.
|
|
521
|
+
* @default null
|
|
522
|
+
*/
|
|
523
|
+
assets: AssetIdWildcard[] | null;
|
|
524
|
+
/**
|
|
525
|
+
* The dictionary key of the asset option field.
|
|
526
|
+
*/
|
|
527
|
+
option: DictKey;
|
|
528
|
+
/**
|
|
529
|
+
* A reference to the value of an asset option.
|
|
530
|
+
*/
|
|
531
|
+
using: "asset_option";
|
|
532
|
+
}
|
|
533
|
+
export interface AtlasCollection {
|
|
534
|
+
/**
|
|
535
|
+
* The unique Datasworn ID for this node.
|
|
536
|
+
*/
|
|
537
|
+
_id: AtlasCollectionId;
|
|
538
|
+
_comment?: Documentation;
|
|
539
|
+
/**
|
|
540
|
+
* The primary name/label for this node.
|
|
541
|
+
*/
|
|
542
|
+
name: Label;
|
|
543
|
+
/**
|
|
544
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
545
|
+
*/
|
|
546
|
+
canonical_name?: Label;
|
|
547
|
+
/**
|
|
548
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
549
|
+
*/
|
|
550
|
+
_source: SourceInfo;
|
|
551
|
+
suggestions?: Suggestions;
|
|
552
|
+
tags?: Tags;
|
|
553
|
+
/**
|
|
554
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
555
|
+
*/
|
|
556
|
+
replaces?: AtlasCollectionIdWildcard[];
|
|
557
|
+
/**
|
|
558
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
559
|
+
*/
|
|
560
|
+
color?: CssColor;
|
|
561
|
+
images?: WebpImageUrl[];
|
|
562
|
+
/**
|
|
563
|
+
* An SVG icon associated with this collection.
|
|
564
|
+
*/
|
|
565
|
+
icon?: SvgImageUrl;
|
|
566
|
+
/**
|
|
567
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
568
|
+
*/
|
|
569
|
+
enhances?: AtlasCollectionIdWildcard[];
|
|
570
|
+
/**
|
|
571
|
+
* 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.
|
|
572
|
+
*/
|
|
573
|
+
summary?: MarkdownString;
|
|
574
|
+
/**
|
|
575
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
576
|
+
*/
|
|
577
|
+
description?: MarkdownString;
|
|
578
|
+
/**
|
|
579
|
+
* @remarks Deserialize as a dictionary object.
|
|
580
|
+
* @default {}
|
|
581
|
+
*/
|
|
582
|
+
contents: Record<DictKey, AtlasEntry>;
|
|
583
|
+
/**
|
|
584
|
+
* @remarks Deserialize as a dictionary object.
|
|
585
|
+
* @default {}
|
|
586
|
+
*/
|
|
587
|
+
collections: Record<DictKey, AtlasCollection>;
|
|
588
|
+
type: "atlas_collection";
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* A unique ID representing an AtlasCollection object.
|
|
592
|
+
* @pattern ```javascript
|
|
593
|
+
* /^atlas_collection:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){1,4})$/
|
|
594
|
+
* ```
|
|
595
|
+
*/
|
|
596
|
+
export type AtlasCollectionId = string;
|
|
597
|
+
/**
|
|
598
|
+
* A wildcarded AtlasCollectionId that can be used to match multiple AtlasCollection objects.
|
|
599
|
+
* @pattern ```javascript
|
|
600
|
+
* /^atlas_collection:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){1,4})$/
|
|
601
|
+
* ```
|
|
602
|
+
*/
|
|
603
|
+
export type AtlasCollectionIdWildcard = string;
|
|
604
|
+
/**
|
|
605
|
+
* An atlas entry, like the Ironlands region entries found in classic Ironsworn.
|
|
606
|
+
*/
|
|
607
|
+
export interface AtlasEntry {
|
|
608
|
+
/**
|
|
609
|
+
* The unique Datasworn ID for this node.
|
|
610
|
+
*/
|
|
611
|
+
_id: AtlasEntryId;
|
|
612
|
+
_comment?: Documentation;
|
|
613
|
+
name: Label;
|
|
614
|
+
/**
|
|
615
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
616
|
+
*/
|
|
617
|
+
canonical_name?: Label;
|
|
618
|
+
/**
|
|
619
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
620
|
+
*/
|
|
621
|
+
_source: SourceInfo;
|
|
622
|
+
suggestions?: Suggestions;
|
|
623
|
+
tags?: Tags;
|
|
624
|
+
/**
|
|
625
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
626
|
+
*/
|
|
627
|
+
replaces?: AtlasEntryIdWildcard[];
|
|
628
|
+
/**
|
|
629
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
630
|
+
*/
|
|
631
|
+
color?: CssColor;
|
|
632
|
+
images?: WebpImageUrl[];
|
|
633
|
+
/**
|
|
634
|
+
* An SVG icon associated with this collection.
|
|
635
|
+
*/
|
|
636
|
+
icon?: SvgImageUrl;
|
|
637
|
+
features: MarkdownString[];
|
|
638
|
+
summary?: MarkdownString;
|
|
639
|
+
description: MarkdownString;
|
|
640
|
+
quest_starter?: MarkdownString;
|
|
641
|
+
your_truth?: MarkdownString;
|
|
642
|
+
type: "atlas_entry";
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* A unique ID representing an AtlasEntry object.
|
|
646
|
+
* @pattern ```javascript
|
|
647
|
+
* /^atlas_entry:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})$/
|
|
648
|
+
* ```
|
|
649
|
+
*/
|
|
650
|
+
export type AtlasEntryId = string;
|
|
651
|
+
/**
|
|
652
|
+
* A wildcarded AtlasEntryId that can be used to match multiple AtlasEntry objects.
|
|
653
|
+
* @pattern ```javascript
|
|
654
|
+
* /^atlas_entry:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})$/
|
|
655
|
+
* ```
|
|
656
|
+
*/
|
|
657
|
+
export type AtlasEntryIdWildcard = string;
|
|
658
|
+
/**
|
|
659
|
+
* 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.
|
|
660
|
+
*/
|
|
661
|
+
export interface AttachedAssetControlValueRef {
|
|
662
|
+
/**
|
|
663
|
+
* The dictionary key of the asset control field.
|
|
664
|
+
* @example "health"
|
|
665
|
+
* @example "integrity"
|
|
666
|
+
*/
|
|
667
|
+
control: DictKey;
|
|
668
|
+
/**
|
|
669
|
+
* 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.
|
|
670
|
+
*/
|
|
671
|
+
using: "attached_asset_control";
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* A reference to the value of an attached asset option.
|
|
675
|
+
*/
|
|
676
|
+
export interface AttachedAssetOptionValueRef {
|
|
677
|
+
/**
|
|
678
|
+
* The dictionary key of the asset option field.
|
|
679
|
+
*/
|
|
680
|
+
option: DictKey;
|
|
681
|
+
/**
|
|
682
|
+
* A reference to the value of an attached asset option.
|
|
683
|
+
*/
|
|
684
|
+
using: "attached_asset_option";
|
|
685
|
+
}
|
|
686
|
+
/**
|
|
687
|
+
* Information on the original creator of this material.
|
|
688
|
+
* @example ```javascript
|
|
689
|
+
* {
|
|
690
|
+
* name: "Shawn Tomkin",
|
|
691
|
+
* url: "https://ironswornrpg.com"
|
|
692
|
+
* }
|
|
693
|
+
* ```
|
|
694
|
+
*/
|
|
695
|
+
export interface AuthorInfo {
|
|
696
|
+
/**
|
|
697
|
+
* The name of the author.
|
|
698
|
+
* @example "Shawn Tomkin"
|
|
699
|
+
*/
|
|
700
|
+
name: Label;
|
|
701
|
+
/**
|
|
702
|
+
* An optional email contact for the author
|
|
703
|
+
*/
|
|
704
|
+
email?: Email;
|
|
705
|
+
/**
|
|
706
|
+
* An optional URL for the author's website.
|
|
707
|
+
*/
|
|
708
|
+
url?: WebUrl;
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
711
|
+
* Challenge rank, represented as an integer from 1 (troublesome) to 5 (epic).
|
|
712
|
+
*
|
|
713
|
+
* - `1`: Troublesome
|
|
714
|
+
* - `2`: Dangerous
|
|
715
|
+
* - `3`: Formidable
|
|
716
|
+
* - `4`: Extreme
|
|
717
|
+
* - `5`: Epic
|
|
718
|
+
*/
|
|
719
|
+
export type ChallengeRank = 1 | 2 | 3 | 4 | 5;
|
|
720
|
+
/**
|
|
721
|
+
* A clock with 4 or more segments.
|
|
722
|
+
* @remarks Semantics are similar to HTML `<input type="number">`, but rendered as a clock (a circle with equally sized wedges).
|
|
723
|
+
*/
|
|
724
|
+
export interface ClockField {
|
|
725
|
+
label: Label;
|
|
726
|
+
/**
|
|
727
|
+
* The current value of this input.
|
|
728
|
+
* @default 0
|
|
729
|
+
*/
|
|
730
|
+
value: number;
|
|
731
|
+
/**
|
|
732
|
+
* The minimum number of filled clock segments. This is always 0.
|
|
733
|
+
*/
|
|
734
|
+
min: 0;
|
|
735
|
+
/**
|
|
736
|
+
* The size of the clock -- in other words, the maximum number of filled clock segments. Standard clocks have 4, 6, 8, or 10 segments.
|
|
737
|
+
* @minimum 2
|
|
738
|
+
*/
|
|
739
|
+
max: number;
|
|
740
|
+
rollable: false;
|
|
741
|
+
field_type: "clock";
|
|
742
|
+
/**
|
|
743
|
+
* An icon associated with this input.
|
|
744
|
+
*/
|
|
745
|
+
icon?: SvgImageUrl;
|
|
746
|
+
}
|
|
747
|
+
export type CollectableType = "atlas_entry" | "npc" | "oracle_rollable" | "asset" | "move";
|
|
748
|
+
export type CollectionType = "atlas_collection" | "npc_collection" | "oracle_collection" | "asset_collection" | "move_category";
|
|
749
|
+
/**
|
|
750
|
+
* A meter with an integer value, bounded by a minimum and maximum.
|
|
751
|
+
*/
|
|
752
|
+
export interface ConditionMeterField {
|
|
753
|
+
label: Label;
|
|
754
|
+
/**
|
|
755
|
+
* The current value of this meter.
|
|
756
|
+
* @default 0
|
|
757
|
+
*/
|
|
758
|
+
value: number;
|
|
759
|
+
/**
|
|
760
|
+
* The minimum value of this meter.
|
|
761
|
+
* @default 0
|
|
762
|
+
*/
|
|
763
|
+
min: number;
|
|
764
|
+
/**
|
|
765
|
+
* The maximum value of this meter.
|
|
766
|
+
*/
|
|
767
|
+
max: number;
|
|
768
|
+
/**
|
|
769
|
+
* Is this meter's `value` usable as a stat in an action roll?
|
|
770
|
+
*/
|
|
771
|
+
rollable: true;
|
|
772
|
+
field_type: "condition_meter";
|
|
773
|
+
/**
|
|
774
|
+
* An icon associated with this input.
|
|
775
|
+
*/
|
|
776
|
+
icon?: SvgImageUrl;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* A basic, rollable player character resource specified by the ruleset.
|
|
780
|
+
* @example "health"
|
|
781
|
+
* @example "spirit"
|
|
782
|
+
* @example "supply"
|
|
783
|
+
*/
|
|
784
|
+
export type ConditionMeterKey = DictKey;
|
|
785
|
+
/**
|
|
786
|
+
* Describes a standard player character condition meter.
|
|
787
|
+
*/
|
|
788
|
+
export interface ConditionMeterRule {
|
|
789
|
+
/**
|
|
790
|
+
* A description of this condition meter.
|
|
791
|
+
*/
|
|
792
|
+
description: MarkdownString;
|
|
793
|
+
/**
|
|
794
|
+
* Is this condition meter shared by all players?
|
|
795
|
+
* @default false
|
|
796
|
+
*/
|
|
797
|
+
shared: boolean;
|
|
798
|
+
/**
|
|
799
|
+
* @experimental
|
|
800
|
+
*/
|
|
801
|
+
tags?: Tags;
|
|
802
|
+
label: Label;
|
|
803
|
+
/**
|
|
804
|
+
* The current value of this meter.
|
|
805
|
+
* @default 0
|
|
806
|
+
*/
|
|
807
|
+
value: number;
|
|
808
|
+
/**
|
|
809
|
+
* The minimum value of this meter.
|
|
810
|
+
* @default 0
|
|
811
|
+
*/
|
|
812
|
+
min: number;
|
|
813
|
+
/**
|
|
814
|
+
* The maximum value of this meter.
|
|
815
|
+
*/
|
|
816
|
+
max: number;
|
|
817
|
+
/**
|
|
818
|
+
* Is this meter's `value` usable as a stat in an action roll?
|
|
819
|
+
*/
|
|
820
|
+
rollable: true;
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* A reference to the value of a standard player condition meter.
|
|
824
|
+
*/
|
|
825
|
+
export interface ConditionMeterValueRef {
|
|
826
|
+
condition_meter: ConditionMeterKey;
|
|
827
|
+
/**
|
|
828
|
+
* A reference to the value of a standard player condition meter.
|
|
829
|
+
*/
|
|
830
|
+
using: "condition_meter";
|
|
831
|
+
}
|
|
832
|
+
export interface CoreTags {
|
|
833
|
+
/**
|
|
834
|
+
* This object is supernatural in nature, and is ideal for settings that feature supernatural or mythic powers.
|
|
835
|
+
*/
|
|
836
|
+
supernatural?: boolean;
|
|
837
|
+
/**
|
|
838
|
+
* This object is technological in nature, and is ideal for settings that feature remarkable technologies.
|
|
839
|
+
*/
|
|
840
|
+
technological?: boolean;
|
|
841
|
+
/**
|
|
842
|
+
* This object requires allies to function, and is intended for co-op play, or guided play with allies. It is not appropriate for solo play.
|
|
843
|
+
*/
|
|
844
|
+
requires_allies?: boolean;
|
|
845
|
+
}
|
|
846
|
+
/**
|
|
847
|
+
* A basic counter representing a non-rollable integer value. They usually start at 0, and may or may not have a maximum.
|
|
848
|
+
* @remarks Semantics are similar to `<input type="number" step="1">`
|
|
849
|
+
*/
|
|
850
|
+
export interface CounterField {
|
|
851
|
+
label: Label;
|
|
852
|
+
/**
|
|
853
|
+
* The current value of this input.
|
|
854
|
+
* @default 0
|
|
855
|
+
*/
|
|
856
|
+
value: number;
|
|
857
|
+
/**
|
|
858
|
+
* The (inclusive) minimum value.
|
|
859
|
+
* @default 0
|
|
860
|
+
*/
|
|
861
|
+
min: number;
|
|
862
|
+
/**
|
|
863
|
+
* The (inclusive) maximum value, or `null` if there's no maximum.
|
|
864
|
+
* @default null
|
|
865
|
+
*/
|
|
866
|
+
max: number | null;
|
|
867
|
+
rollable: false;
|
|
868
|
+
field_type: "counter";
|
|
869
|
+
/**
|
|
870
|
+
* An icon associated with this input.
|
|
871
|
+
*/
|
|
872
|
+
icon?: SvgImageUrl;
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* A CSS color value.
|
|
876
|
+
* @remarks See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value
|
|
877
|
+
*/
|
|
878
|
+
export type CssColor = string;
|
|
879
|
+
/**
|
|
880
|
+
* An arbitrary static integer value with a label.
|
|
881
|
+
*/
|
|
882
|
+
export interface CustomValue {
|
|
883
|
+
label: Label;
|
|
884
|
+
value: number;
|
|
885
|
+
/**
|
|
886
|
+
* An arbitrary static integer value with a label.
|
|
887
|
+
*/
|
|
888
|
+
using: "custom";
|
|
889
|
+
}
|
|
890
|
+
/**
|
|
891
|
+
* A delve site with a theme, domain, and denizens.
|
|
892
|
+
*/
|
|
893
|
+
export interface DelveSite {
|
|
894
|
+
/**
|
|
895
|
+
* The unique Datasworn ID for this node.
|
|
896
|
+
*/
|
|
897
|
+
_id: DelveSiteId;
|
|
898
|
+
_comment?: Documentation;
|
|
899
|
+
/**
|
|
900
|
+
* The primary name/label for this node.
|
|
901
|
+
*/
|
|
902
|
+
name: Label;
|
|
903
|
+
/**
|
|
904
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
905
|
+
*/
|
|
906
|
+
canonical_name?: Label;
|
|
907
|
+
/**
|
|
908
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
909
|
+
*/
|
|
910
|
+
_source: SourceInfo;
|
|
911
|
+
suggestions?: Suggestions;
|
|
912
|
+
tags?: Tags;
|
|
913
|
+
/**
|
|
914
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
915
|
+
*/
|
|
916
|
+
replaces?: DelveSiteIdWildcard[];
|
|
917
|
+
/**
|
|
918
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
919
|
+
*/
|
|
920
|
+
color?: CssColor;
|
|
921
|
+
images?: WebpImageUrl[];
|
|
922
|
+
/**
|
|
923
|
+
* An SVG icon associated with this collection.
|
|
924
|
+
*/
|
|
925
|
+
icon?: SvgImageUrl;
|
|
926
|
+
rank: ChallengeRank;
|
|
927
|
+
/**
|
|
928
|
+
* The ID of an atlas entry representing the region in which this delve site is located.
|
|
929
|
+
*/
|
|
930
|
+
region?: AtlasEntryId;
|
|
931
|
+
/**
|
|
932
|
+
* The ID of the site's DelveSiteTheme card.
|
|
933
|
+
*/
|
|
934
|
+
theme: DelveSiteThemeId;
|
|
935
|
+
/**
|
|
936
|
+
* The ID of the site's DelveSiteDomain card.
|
|
937
|
+
*/
|
|
938
|
+
domain: DelveSiteDomainId;
|
|
939
|
+
/**
|
|
940
|
+
* An additional theme or domain card ID, for use with optional rules in Ironsworn: Delve.
|
|
941
|
+
*/
|
|
942
|
+
extra_card?: DelveSiteThemeId | DelveSiteDomainId;
|
|
943
|
+
description: MarkdownString;
|
|
944
|
+
/**
|
|
945
|
+
* Represents the delve site's denizen matrix as an array of objects.
|
|
946
|
+
*/
|
|
947
|
+
denizens: DelveSiteDenizen[] & [
|
|
948
|
+
{
|
|
949
|
+
frequency: "very_common";
|
|
950
|
+
roll: {
|
|
951
|
+
min: 1;
|
|
952
|
+
max: 27;
|
|
953
|
+
};
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
frequency: "common";
|
|
957
|
+
roll: {
|
|
958
|
+
min: 28;
|
|
959
|
+
max: 41;
|
|
960
|
+
};
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
frequency: "common";
|
|
964
|
+
roll: {
|
|
965
|
+
min: 42;
|
|
966
|
+
max: 55;
|
|
967
|
+
};
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
frequency: "common";
|
|
971
|
+
roll: {
|
|
972
|
+
min: 56;
|
|
973
|
+
max: 69;
|
|
974
|
+
};
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
frequency: "uncommon";
|
|
978
|
+
roll: {
|
|
979
|
+
min: 70;
|
|
980
|
+
max: 75;
|
|
981
|
+
};
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
frequency: "uncommon";
|
|
985
|
+
roll: {
|
|
986
|
+
min: 76;
|
|
987
|
+
max: 81;
|
|
988
|
+
};
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
frequency: "uncommon";
|
|
992
|
+
roll: {
|
|
993
|
+
min: 82;
|
|
994
|
+
max: 87;
|
|
995
|
+
};
|
|
996
|
+
},
|
|
997
|
+
{
|
|
998
|
+
frequency: "uncommon";
|
|
999
|
+
roll: {
|
|
1000
|
+
min: 88;
|
|
1001
|
+
max: 93;
|
|
1002
|
+
};
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
frequency: "rare";
|
|
1006
|
+
roll: {
|
|
1007
|
+
min: 94;
|
|
1008
|
+
max: 95;
|
|
1009
|
+
};
|
|
1010
|
+
},
|
|
1011
|
+
{
|
|
1012
|
+
frequency: "rare";
|
|
1013
|
+
roll: {
|
|
1014
|
+
min: 96;
|
|
1015
|
+
max: 97;
|
|
1016
|
+
};
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
frequency: "rare";
|
|
1020
|
+
roll: {
|
|
1021
|
+
min: 98;
|
|
1022
|
+
max: 99;
|
|
1023
|
+
};
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
frequency: "unforeseen";
|
|
1027
|
+
roll: {
|
|
1028
|
+
min: 100;
|
|
1029
|
+
max: 100;
|
|
1030
|
+
};
|
|
1031
|
+
}
|
|
1032
|
+
];
|
|
1033
|
+
type: "delve_site";
|
|
1034
|
+
}
|
|
1035
|
+
/**
|
|
1036
|
+
* Represents an entry in a delve site denizen matrix. Denizen matrices are described in Ironsworn: Delve.
|
|
1037
|
+
*/
|
|
1038
|
+
export interface DelveSiteDenizen {
|
|
1039
|
+
/**
|
|
1040
|
+
* A name for the denizen, if it's different than the `name` property of the NPC.
|
|
1041
|
+
*/
|
|
1042
|
+
name?: Label;
|
|
1043
|
+
/**
|
|
1044
|
+
* The ID of the relevant NPC entry, if one is specified.
|
|
1045
|
+
*/
|
|
1046
|
+
npc?: NpcId;
|
|
1047
|
+
frequency: DelveSiteDenizenFrequency;
|
|
1048
|
+
roll: DiceRange;
|
|
1049
|
+
_id: DelveSiteDenizenId;
|
|
1050
|
+
}
|
|
1051
|
+
export type DelveSiteDenizenFrequency = "very_common" | "common" | "uncommon" | "rare" | "unforeseen";
|
|
1052
|
+
/**
|
|
1053
|
+
* A unique ID representing a DelveSiteDenizen object.
|
|
1054
|
+
* @pattern ```javascript
|
|
1055
|
+
* /^delve_site\.denizen:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
1056
|
+
* ```
|
|
1057
|
+
*/
|
|
1058
|
+
export type DelveSiteDenizenId = string;
|
|
1059
|
+
/**
|
|
1060
|
+
* A wildcarded DelveSiteDenizenId that can be used to match multiple DelveSiteDenizen objects.
|
|
1061
|
+
* @pattern ```javascript
|
|
1062
|
+
* /^delve_site\.denizen:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
1063
|
+
* ```
|
|
1064
|
+
*/
|
|
1065
|
+
export type DelveSiteDenizenIdWildcard = string;
|
|
1066
|
+
/**
|
|
1067
|
+
* A delve site Domain card.
|
|
1068
|
+
*/
|
|
1069
|
+
export interface DelveSiteDomain {
|
|
1070
|
+
/**
|
|
1071
|
+
* The unique Datasworn ID for this node.
|
|
1072
|
+
*/
|
|
1073
|
+
_id: DelveSiteDomainId;
|
|
1074
|
+
_comment?: Documentation;
|
|
1075
|
+
/**
|
|
1076
|
+
* The primary name/label for this node.
|
|
1077
|
+
*/
|
|
1078
|
+
name: Label;
|
|
1079
|
+
/**
|
|
1080
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1081
|
+
*/
|
|
1082
|
+
canonical_name?: Label;
|
|
1083
|
+
/**
|
|
1084
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
1085
|
+
*/
|
|
1086
|
+
_source: SourceInfo;
|
|
1087
|
+
suggestions?: Suggestions;
|
|
1088
|
+
tags?: Tags;
|
|
1089
|
+
/**
|
|
1090
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
1091
|
+
*/
|
|
1092
|
+
replaces?: DelveSiteDomainIdWildcard[];
|
|
1093
|
+
/**
|
|
1094
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1095
|
+
*/
|
|
1096
|
+
color?: CssColor;
|
|
1097
|
+
images?: WebpImageUrl[];
|
|
1098
|
+
/**
|
|
1099
|
+
* An SVG icon associated with this collection.
|
|
1100
|
+
*/
|
|
1101
|
+
icon?: SvgImageUrl;
|
|
1102
|
+
/**
|
|
1103
|
+
* The text that appears below the title on the card.
|
|
1104
|
+
*/
|
|
1105
|
+
summary: MarkdownString;
|
|
1106
|
+
/**
|
|
1107
|
+
* Optional extended description text.
|
|
1108
|
+
*/
|
|
1109
|
+
descriptipn?: MarkdownString;
|
|
1110
|
+
/**
|
|
1111
|
+
* An oracle table ID containing place name elements. For examples, see oracle ID `oracle_rollable:delve/site_name/place/barrow`, and its siblings in oracle collection ID `oracle_collection:delve/site_name/place`. These oracles are used by the site name oracle from Ironsworn: Delve (`oracle_rollable:delve/site_name/format`) to create random names for delve sites.
|
|
1112
|
+
*/
|
|
1113
|
+
name_oracle?: OracleRollableId;
|
|
1114
|
+
features: DelveSiteDomainFeature[] & [
|
|
1115
|
+
{
|
|
1116
|
+
roll: {
|
|
1117
|
+
min: 21;
|
|
1118
|
+
max: 43;
|
|
1119
|
+
};
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
roll: {
|
|
1123
|
+
min: 44;
|
|
1124
|
+
max: 56;
|
|
1125
|
+
};
|
|
1126
|
+
},
|
|
1127
|
+
{
|
|
1128
|
+
roll: {
|
|
1129
|
+
min: 57;
|
|
1130
|
+
max: 64;
|
|
1131
|
+
};
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
roll: {
|
|
1135
|
+
min: 65;
|
|
1136
|
+
max: 68;
|
|
1137
|
+
};
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
roll: {
|
|
1141
|
+
min: 69;
|
|
1142
|
+
max: 72;
|
|
1143
|
+
};
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
roll: {
|
|
1147
|
+
min: 73;
|
|
1148
|
+
max: 76;
|
|
1149
|
+
};
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
roll: {
|
|
1153
|
+
min: 77;
|
|
1154
|
+
max: 80;
|
|
1155
|
+
};
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
roll: {
|
|
1159
|
+
min: 81;
|
|
1160
|
+
max: 84;
|
|
1161
|
+
};
|
|
1162
|
+
},
|
|
1163
|
+
{
|
|
1164
|
+
roll: {
|
|
1165
|
+
min: 85;
|
|
1166
|
+
max: 88;
|
|
1167
|
+
};
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
roll: {
|
|
1171
|
+
min: 89;
|
|
1172
|
+
max: 98;
|
|
1173
|
+
};
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
roll: {
|
|
1177
|
+
min: 99;
|
|
1178
|
+
max: 99;
|
|
1179
|
+
};
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
roll: {
|
|
1183
|
+
min: 100;
|
|
1184
|
+
max: 100;
|
|
1185
|
+
};
|
|
1186
|
+
}
|
|
1187
|
+
];
|
|
1188
|
+
dangers: DelveSiteDomainDanger[] & [
|
|
1189
|
+
{
|
|
1190
|
+
roll: {
|
|
1191
|
+
min: 31;
|
|
1192
|
+
max: 33;
|
|
1193
|
+
};
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
roll: {
|
|
1197
|
+
min: 34;
|
|
1198
|
+
max: 36;
|
|
1199
|
+
};
|
|
1200
|
+
},
|
|
1201
|
+
{
|
|
1202
|
+
roll: {
|
|
1203
|
+
min: 37;
|
|
1204
|
+
max: 39;
|
|
1205
|
+
};
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
roll: {
|
|
1209
|
+
min: 40;
|
|
1210
|
+
max: 42;
|
|
1211
|
+
};
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
roll: {
|
|
1215
|
+
min: 43;
|
|
1216
|
+
max: 45;
|
|
1217
|
+
};
|
|
1218
|
+
}
|
|
1219
|
+
];
|
|
1220
|
+
type: "delve_site_domain";
|
|
1221
|
+
}
|
|
1222
|
+
/**
|
|
1223
|
+
* Represents a row in an oracle table, with a single text cell.
|
|
1224
|
+
*/
|
|
1225
|
+
export interface DelveSiteDomainDanger {
|
|
1226
|
+
/**
|
|
1227
|
+
* The primary text content of this row.
|
|
1228
|
+
*/
|
|
1229
|
+
text: MarkdownString;
|
|
1230
|
+
icon?: SvgImageUrl;
|
|
1231
|
+
/**
|
|
1232
|
+
* Further oracle rolls prompted by this table row.
|
|
1233
|
+
*/
|
|
1234
|
+
oracle_rolls?: OracleRoll[];
|
|
1235
|
+
suggestions?: Suggestions;
|
|
1236
|
+
/**
|
|
1237
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
1238
|
+
* @experimental
|
|
1239
|
+
*/
|
|
1240
|
+
embed_table?: OracleRollableId;
|
|
1241
|
+
/**
|
|
1242
|
+
* @experimental
|
|
1243
|
+
*/
|
|
1244
|
+
template?: OracleRollTemplate;
|
|
1245
|
+
/**
|
|
1246
|
+
* @experimental
|
|
1247
|
+
*/
|
|
1248
|
+
_i18n?: I18nHints;
|
|
1249
|
+
/**
|
|
1250
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
1251
|
+
* @default null
|
|
1252
|
+
*/
|
|
1253
|
+
roll: DiceRange | null;
|
|
1254
|
+
tags?: Tags;
|
|
1255
|
+
_id: DelveSiteDomainDangerId;
|
|
1256
|
+
}
|
|
1257
|
+
/**
|
|
1258
|
+
* A unique ID representing a DelveSiteDomainDanger object.
|
|
1259
|
+
* @pattern ```javascript
|
|
1260
|
+
* /^delve_site_domain\.danger:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
1261
|
+
* ```
|
|
1262
|
+
*/
|
|
1263
|
+
export type DelveSiteDomainDangerId = string;
|
|
1264
|
+
/**
|
|
1265
|
+
* A wildcarded DelveSiteDomainDangerId that can be used to match multiple DelveSiteDomainDanger objects.
|
|
1266
|
+
* @pattern ```javascript
|
|
1267
|
+
* /^delve_site_domain\.danger:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
1268
|
+
* ```
|
|
1269
|
+
*/
|
|
1270
|
+
export type DelveSiteDomainDangerIdWildcard = string;
|
|
1271
|
+
/**
|
|
1272
|
+
* Represents a row in an oracle table, with a single text cell.
|
|
1273
|
+
*/
|
|
1274
|
+
export interface DelveSiteDomainFeature {
|
|
1275
|
+
/**
|
|
1276
|
+
* The primary text content of this row.
|
|
1277
|
+
*/
|
|
1278
|
+
text: MarkdownString;
|
|
1279
|
+
icon?: SvgImageUrl;
|
|
1280
|
+
/**
|
|
1281
|
+
* Further oracle rolls prompted by this table row.
|
|
1282
|
+
*/
|
|
1283
|
+
oracle_rolls?: OracleRoll[];
|
|
1284
|
+
suggestions?: Suggestions;
|
|
1285
|
+
/**
|
|
1286
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
1287
|
+
* @experimental
|
|
1288
|
+
*/
|
|
1289
|
+
embed_table?: OracleRollableId;
|
|
1290
|
+
/**
|
|
1291
|
+
* @experimental
|
|
1292
|
+
*/
|
|
1293
|
+
template?: OracleRollTemplate;
|
|
1294
|
+
/**
|
|
1295
|
+
* @experimental
|
|
1296
|
+
*/
|
|
1297
|
+
_i18n?: I18nHints;
|
|
1298
|
+
/**
|
|
1299
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
1300
|
+
* @default null
|
|
1301
|
+
*/
|
|
1302
|
+
roll: DiceRange | null;
|
|
1303
|
+
tags?: Tags;
|
|
1304
|
+
_id: DelveSiteDomainFeatureId;
|
|
1305
|
+
}
|
|
1306
|
+
/**
|
|
1307
|
+
* A unique ID representing a DelveSiteDomainFeature object.
|
|
1308
|
+
* @pattern ```javascript
|
|
1309
|
+
* /^delve_site_domain\.feature:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
1310
|
+
* ```
|
|
1311
|
+
*/
|
|
1312
|
+
export type DelveSiteDomainFeatureId = string;
|
|
1313
|
+
/**
|
|
1314
|
+
* A wildcarded DelveSiteDomainFeatureId that can be used to match multiple DelveSiteDomainFeature objects.
|
|
1315
|
+
* @pattern ```javascript
|
|
1316
|
+
* /^delve_site_domain\.feature:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
1317
|
+
* ```
|
|
1318
|
+
*/
|
|
1319
|
+
export type DelveSiteDomainFeatureIdWildcard = string;
|
|
1320
|
+
/**
|
|
1321
|
+
* A unique ID representing a DelveSiteDomain object.
|
|
1322
|
+
* @pattern ```javascript
|
|
1323
|
+
* /^delve_site_domain:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)$/
|
|
1324
|
+
* ```
|
|
1325
|
+
*/
|
|
1326
|
+
export type DelveSiteDomainId = string;
|
|
1327
|
+
/**
|
|
1328
|
+
* A wildcarded DelveSiteDomainId that can be used to match multiple DelveSiteDomain objects.
|
|
1329
|
+
* @pattern ```javascript
|
|
1330
|
+
* /^delve_site_domain:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)$/
|
|
1331
|
+
* ```
|
|
1332
|
+
*/
|
|
1333
|
+
export type DelveSiteDomainIdWildcard = string;
|
|
1334
|
+
/**
|
|
1335
|
+
* A unique ID representing a DelveSite object.
|
|
1336
|
+
* @pattern ```javascript
|
|
1337
|
+
* /^delve_site:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)$/
|
|
1338
|
+
* ```
|
|
1339
|
+
*/
|
|
1340
|
+
export type DelveSiteId = string;
|
|
1341
|
+
/**
|
|
1342
|
+
* A wildcarded DelveSiteId that can be used to match multiple DelveSite objects.
|
|
1343
|
+
* @pattern ```javascript
|
|
1344
|
+
* /^delve_site:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)$/
|
|
1345
|
+
* ```
|
|
1346
|
+
*/
|
|
1347
|
+
export type DelveSiteIdWildcard = string;
|
|
1348
|
+
/**
|
|
1349
|
+
* A delve site theme card.
|
|
1350
|
+
*/
|
|
1351
|
+
export interface DelveSiteTheme {
|
|
1352
|
+
/**
|
|
1353
|
+
* The unique Datasworn ID for this node.
|
|
1354
|
+
*/
|
|
1355
|
+
_id: DelveSiteThemeId;
|
|
1356
|
+
_comment?: Documentation;
|
|
1357
|
+
/**
|
|
1358
|
+
* The primary name/label for this node.
|
|
1359
|
+
*/
|
|
1360
|
+
name: Label;
|
|
1361
|
+
/**
|
|
1362
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1363
|
+
*/
|
|
1364
|
+
canonical_name?: Label;
|
|
1365
|
+
/**
|
|
1366
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
1367
|
+
*/
|
|
1368
|
+
_source: SourceInfo;
|
|
1369
|
+
suggestions?: Suggestions;
|
|
1370
|
+
tags?: Tags;
|
|
1371
|
+
/**
|
|
1372
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
1373
|
+
*/
|
|
1374
|
+
replaces?: DelveSiteThemeIdWildcard[];
|
|
1375
|
+
/**
|
|
1376
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1377
|
+
*/
|
|
1378
|
+
color?: CssColor;
|
|
1379
|
+
images?: WebpImageUrl[];
|
|
1380
|
+
/**
|
|
1381
|
+
* An SVG icon associated with this collection.
|
|
1382
|
+
*/
|
|
1383
|
+
icon?: SvgImageUrl;
|
|
1384
|
+
/**
|
|
1385
|
+
* The text that appears below the title on the card.
|
|
1386
|
+
*/
|
|
1387
|
+
summary: MarkdownString;
|
|
1388
|
+
/**
|
|
1389
|
+
* Optional extended description text.
|
|
1390
|
+
*/
|
|
1391
|
+
descriptipn?: MarkdownString;
|
|
1392
|
+
features: DelveSiteThemeFeature[] & [
|
|
1393
|
+
{
|
|
1394
|
+
roll: {
|
|
1395
|
+
min: 1;
|
|
1396
|
+
max: 4;
|
|
1397
|
+
};
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
roll: {
|
|
1401
|
+
min: 5;
|
|
1402
|
+
max: 8;
|
|
1403
|
+
};
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
roll: {
|
|
1407
|
+
min: 9;
|
|
1408
|
+
max: 12;
|
|
1409
|
+
};
|
|
1410
|
+
},
|
|
1411
|
+
{
|
|
1412
|
+
roll: {
|
|
1413
|
+
min: 13;
|
|
1414
|
+
max: 16;
|
|
1415
|
+
};
|
|
1416
|
+
},
|
|
1417
|
+
{
|
|
1418
|
+
roll: {
|
|
1419
|
+
min: 17;
|
|
1420
|
+
max: 20;
|
|
1421
|
+
};
|
|
1422
|
+
}
|
|
1423
|
+
];
|
|
1424
|
+
dangers: DelveSiteThemeDanger[] & [
|
|
1425
|
+
{
|
|
1426
|
+
roll: {
|
|
1427
|
+
min: 1;
|
|
1428
|
+
max: 5;
|
|
1429
|
+
};
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
roll: {
|
|
1433
|
+
min: 6;
|
|
1434
|
+
max: 10;
|
|
1435
|
+
};
|
|
1436
|
+
},
|
|
1437
|
+
{
|
|
1438
|
+
roll: {
|
|
1439
|
+
min: 11;
|
|
1440
|
+
max: 12;
|
|
1441
|
+
};
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
roll: {
|
|
1445
|
+
min: 13;
|
|
1446
|
+
max: 14;
|
|
1447
|
+
};
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
roll: {
|
|
1451
|
+
min: 15;
|
|
1452
|
+
max: 16;
|
|
1453
|
+
};
|
|
1454
|
+
},
|
|
1455
|
+
{
|
|
1456
|
+
roll: {
|
|
1457
|
+
min: 17;
|
|
1458
|
+
max: 18;
|
|
1459
|
+
};
|
|
1460
|
+
},
|
|
1461
|
+
{
|
|
1462
|
+
roll: {
|
|
1463
|
+
min: 19;
|
|
1464
|
+
max: 20;
|
|
1465
|
+
};
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
roll: {
|
|
1469
|
+
min: 21;
|
|
1470
|
+
max: 22;
|
|
1471
|
+
};
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
roll: {
|
|
1475
|
+
min: 23;
|
|
1476
|
+
max: 24;
|
|
1477
|
+
};
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
roll: {
|
|
1481
|
+
min: 25;
|
|
1482
|
+
max: 26;
|
|
1483
|
+
};
|
|
1484
|
+
},
|
|
1485
|
+
{
|
|
1486
|
+
roll: {
|
|
1487
|
+
min: 27;
|
|
1488
|
+
max: 28;
|
|
1489
|
+
};
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
roll: {
|
|
1493
|
+
min: 29;
|
|
1494
|
+
max: 30;
|
|
1495
|
+
};
|
|
1496
|
+
}
|
|
1497
|
+
];
|
|
1498
|
+
type: "delve_site_theme";
|
|
1499
|
+
}
|
|
1500
|
+
/**
|
|
1501
|
+
* Represents a row in an oracle table, with a single text cell.
|
|
1502
|
+
*/
|
|
1503
|
+
export interface DelveSiteThemeDanger {
|
|
1504
|
+
/**
|
|
1505
|
+
* The primary text content of this row.
|
|
1506
|
+
*/
|
|
1507
|
+
text: MarkdownString;
|
|
1508
|
+
icon?: SvgImageUrl;
|
|
1509
|
+
/**
|
|
1510
|
+
* Further oracle rolls prompted by this table row.
|
|
1511
|
+
*/
|
|
1512
|
+
oracle_rolls?: OracleRoll[];
|
|
1513
|
+
suggestions?: Suggestions;
|
|
1514
|
+
/**
|
|
1515
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
1516
|
+
* @experimental
|
|
1517
|
+
*/
|
|
1518
|
+
embed_table?: OracleRollableId;
|
|
1519
|
+
/**
|
|
1520
|
+
* @experimental
|
|
1521
|
+
*/
|
|
1522
|
+
template?: OracleRollTemplate;
|
|
1523
|
+
/**
|
|
1524
|
+
* @experimental
|
|
1525
|
+
*/
|
|
1526
|
+
_i18n?: I18nHints;
|
|
1527
|
+
/**
|
|
1528
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
1529
|
+
* @default null
|
|
1530
|
+
*/
|
|
1531
|
+
roll: DiceRange | null;
|
|
1532
|
+
tags?: Tags;
|
|
1533
|
+
_id: DelveSiteThemeDangerId;
|
|
1534
|
+
}
|
|
1535
|
+
/**
|
|
1536
|
+
* A unique ID representing a DelveSiteThemeDanger object.
|
|
1537
|
+
* @pattern ```javascript
|
|
1538
|
+
* /^delve_site_theme\.danger:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
1539
|
+
* ```
|
|
1540
|
+
*/
|
|
1541
|
+
export type DelveSiteThemeDangerId = string;
|
|
1542
|
+
/**
|
|
1543
|
+
* A wildcarded DelveSiteThemeDangerId that can be used to match multiple DelveSiteThemeDanger objects.
|
|
1544
|
+
* @pattern ```javascript
|
|
1545
|
+
* /^delve_site_theme\.danger:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
1546
|
+
* ```
|
|
1547
|
+
*/
|
|
1548
|
+
export type DelveSiteThemeDangerIdWildcard = string;
|
|
1549
|
+
/**
|
|
1550
|
+
* Represents a row in an oracle table, with a single text cell.
|
|
1551
|
+
*/
|
|
1552
|
+
export interface DelveSiteThemeFeature {
|
|
1553
|
+
/**
|
|
1554
|
+
* The primary text content of this row.
|
|
1555
|
+
*/
|
|
1556
|
+
text: MarkdownString;
|
|
1557
|
+
icon?: SvgImageUrl;
|
|
1558
|
+
/**
|
|
1559
|
+
* Further oracle rolls prompted by this table row.
|
|
1560
|
+
*/
|
|
1561
|
+
oracle_rolls?: OracleRoll[];
|
|
1562
|
+
suggestions?: Suggestions;
|
|
1563
|
+
/**
|
|
1564
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
1565
|
+
* @experimental
|
|
1566
|
+
*/
|
|
1567
|
+
embed_table?: OracleRollableId;
|
|
1568
|
+
/**
|
|
1569
|
+
* @experimental
|
|
1570
|
+
*/
|
|
1571
|
+
template?: OracleRollTemplate;
|
|
1572
|
+
/**
|
|
1573
|
+
* @experimental
|
|
1574
|
+
*/
|
|
1575
|
+
_i18n?: I18nHints;
|
|
1576
|
+
/**
|
|
1577
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
1578
|
+
* @default null
|
|
1579
|
+
*/
|
|
1580
|
+
roll: DiceRange | null;
|
|
1581
|
+
tags?: Tags;
|
|
1582
|
+
_id: DelveSiteThemeFeatureId;
|
|
1583
|
+
}
|
|
1584
|
+
/**
|
|
1585
|
+
* A unique ID representing a DelveSiteThemeFeature object.
|
|
1586
|
+
* @pattern ```javascript
|
|
1587
|
+
* /^delve_site_theme\.feature:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
1588
|
+
* ```
|
|
1589
|
+
*/
|
|
1590
|
+
export type DelveSiteThemeFeatureId = string;
|
|
1591
|
+
/**
|
|
1592
|
+
* A wildcarded DelveSiteThemeFeatureId that can be used to match multiple DelveSiteThemeFeature objects.
|
|
1593
|
+
* @pattern ```javascript
|
|
1594
|
+
* /^delve_site_theme\.feature:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
1595
|
+
* ```
|
|
1596
|
+
*/
|
|
1597
|
+
export type DelveSiteThemeFeatureIdWildcard = string;
|
|
1598
|
+
/**
|
|
1599
|
+
* A unique ID representing a DelveSiteTheme object.
|
|
1600
|
+
* @pattern ```javascript
|
|
1601
|
+
* /^delve_site_theme:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)$/
|
|
1602
|
+
* ```
|
|
1603
|
+
*/
|
|
1604
|
+
export type DelveSiteThemeId = string;
|
|
1605
|
+
/**
|
|
1606
|
+
* A wildcarded DelveSiteThemeId that can be used to match multiple DelveSiteTheme objects.
|
|
1607
|
+
* @pattern ```javascript
|
|
1608
|
+
* /^delve_site_theme:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)$/
|
|
1609
|
+
* ```
|
|
1610
|
+
*/
|
|
1611
|
+
export type DelveSiteThemeIdWildcard = string;
|
|
1612
|
+
/**
|
|
1613
|
+
* A simple dice roll expression with an optional (positive or negative) modifer.
|
|
1614
|
+
* @pattern ```javascript
|
|
1615
|
+
* /([1-9][0-9]*)d([1-9][0-9]*)([+-]([1-9][0-9]*))?/
|
|
1616
|
+
* ```
|
|
1617
|
+
* @example "1d100"
|
|
1618
|
+
* @example "1d6+2"
|
|
1619
|
+
* @example "2d10"
|
|
1620
|
+
*/
|
|
1621
|
+
export type DiceExpression = string;
|
|
1622
|
+
/**
|
|
1623
|
+
* Represents a range of dice roll results, bounded by `min` and `max` (inclusive).
|
|
1624
|
+
*/
|
|
1625
|
+
export interface DiceRange {
|
|
1626
|
+
/**
|
|
1627
|
+
* Low end of the dice range.
|
|
1628
|
+
*/
|
|
1629
|
+
min: number;
|
|
1630
|
+
/**
|
|
1631
|
+
* High end of the dice range.
|
|
1632
|
+
*/
|
|
1633
|
+
max: number;
|
|
1634
|
+
}
|
|
1635
|
+
/**
|
|
1636
|
+
* A `snake_case` key used in a Datasworn dictionary object.
|
|
1637
|
+
* @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.
|
|
1638
|
+
* @pattern ```javascript
|
|
1639
|
+
* /^[a-z][a-z0-9_]*$/
|
|
1640
|
+
* ```
|
|
1641
|
+
*/
|
|
1642
|
+
export type DictKey = string;
|
|
1643
|
+
/**
|
|
1644
|
+
* Implementation hints or other developer-facing comments on this node. These should be omitted when representing an object for gameplay.
|
|
1645
|
+
*/
|
|
1646
|
+
export type Documentation = string;
|
|
1647
|
+
/**
|
|
1648
|
+
* An email address.
|
|
1649
|
+
*/
|
|
1650
|
+
export type Email = string;
|
|
1651
|
+
export interface EmbeddedActionRollMove {
|
|
1652
|
+
_id: EmbeddedMoveId;
|
|
1653
|
+
_comment?: Documentation;
|
|
1654
|
+
/**
|
|
1655
|
+
* The primary name/label for this node.
|
|
1656
|
+
*/
|
|
1657
|
+
name: Label;
|
|
1658
|
+
/**
|
|
1659
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1660
|
+
*/
|
|
1661
|
+
canonical_name?: Label;
|
|
1662
|
+
suggestions?: Suggestions;
|
|
1663
|
+
tags?: Tags;
|
|
1664
|
+
/**
|
|
1665
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1666
|
+
*/
|
|
1667
|
+
color?: CssColor;
|
|
1668
|
+
images?: WebpImageUrl[];
|
|
1669
|
+
/**
|
|
1670
|
+
* An SVG icon associated with this collection.
|
|
1671
|
+
*/
|
|
1672
|
+
icon?: SvgImageUrl;
|
|
1673
|
+
/**
|
|
1674
|
+
* The complete rules text of the move.
|
|
1675
|
+
*/
|
|
1676
|
+
text: MarkdownString;
|
|
1677
|
+
/**
|
|
1678
|
+
* Trigger conditions for this move.
|
|
1679
|
+
*/
|
|
1680
|
+
trigger: TriggerActionRoll;
|
|
1681
|
+
/**
|
|
1682
|
+
* Is burning momentum allowed for this move?
|
|
1683
|
+
* @default true
|
|
1684
|
+
*/
|
|
1685
|
+
allow_momentum_burn: boolean;
|
|
1686
|
+
outcomes: MoveOutcomes;
|
|
1687
|
+
type: "move";
|
|
1688
|
+
roll_type: "action_roll";
|
|
1689
|
+
}
|
|
1690
|
+
/**
|
|
1691
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator.
|
|
1692
|
+
*/
|
|
1693
|
+
export type EmbeddedMove = EmbeddedActionRollMove | EmbeddedNoRollMove | EmbeddedProgressRollMove | EmbeddedSpecialTrackMove;
|
|
1694
|
+
export type EmbeddedMoveId = AssetAbilityMoveId;
|
|
1695
|
+
export type EmbeddedMoveIdWildcard = AssetAbilityMoveIdWildcard;
|
|
1696
|
+
export interface EmbeddedNoRollMove {
|
|
1697
|
+
_id: EmbeddedMoveId;
|
|
1698
|
+
_comment?: Documentation;
|
|
1699
|
+
/**
|
|
1700
|
+
* The primary name/label for this node.
|
|
1701
|
+
*/
|
|
1702
|
+
name: Label;
|
|
1703
|
+
/**
|
|
1704
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1705
|
+
*/
|
|
1706
|
+
canonical_name?: Label;
|
|
1707
|
+
suggestions?: Suggestions;
|
|
1708
|
+
tags?: Tags;
|
|
1709
|
+
/**
|
|
1710
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1711
|
+
*/
|
|
1712
|
+
color?: CssColor;
|
|
1713
|
+
images?: WebpImageUrl[];
|
|
1714
|
+
/**
|
|
1715
|
+
* An SVG icon associated with this collection.
|
|
1716
|
+
*/
|
|
1717
|
+
icon?: SvgImageUrl;
|
|
1718
|
+
/**
|
|
1719
|
+
* The complete rules text of the move.
|
|
1720
|
+
*/
|
|
1721
|
+
text: MarkdownString;
|
|
1722
|
+
/**
|
|
1723
|
+
* Trigger conditions for this move.
|
|
1724
|
+
*/
|
|
1725
|
+
trigger: TriggerNoRoll;
|
|
1726
|
+
/**
|
|
1727
|
+
* Is burning momentum allowed for this move?
|
|
1728
|
+
*/
|
|
1729
|
+
allow_momentum_burn: false;
|
|
1730
|
+
/**
|
|
1731
|
+
* @default null
|
|
1732
|
+
*/
|
|
1733
|
+
outcomes: null;
|
|
1734
|
+
type: "move";
|
|
1735
|
+
roll_type: "no_roll";
|
|
1736
|
+
}
|
|
1737
|
+
export interface EmbeddedOracleColumnText {
|
|
1738
|
+
_id: EmbeddedOracleRollableId;
|
|
1739
|
+
_comment?: Documentation;
|
|
1740
|
+
/**
|
|
1741
|
+
* The primary name/label for this node.
|
|
1742
|
+
*/
|
|
1743
|
+
name: Label;
|
|
1744
|
+
/**
|
|
1745
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1746
|
+
*/
|
|
1747
|
+
canonical_name?: Label;
|
|
1748
|
+
suggestions?: Suggestions;
|
|
1749
|
+
tags?: Tags;
|
|
1750
|
+
/**
|
|
1751
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1752
|
+
*/
|
|
1753
|
+
color?: CssColor;
|
|
1754
|
+
images?: WebpImageUrl[];
|
|
1755
|
+
/**
|
|
1756
|
+
* An SVG icon associated with this collection.
|
|
1757
|
+
*/
|
|
1758
|
+
icon?: SvgImageUrl;
|
|
1759
|
+
recommended_rolls?: {
|
|
1760
|
+
/**
|
|
1761
|
+
* @default 1
|
|
1762
|
+
*/
|
|
1763
|
+
min: number;
|
|
1764
|
+
/**
|
|
1765
|
+
* @default 1
|
|
1766
|
+
*/
|
|
1767
|
+
max: number;
|
|
1768
|
+
};
|
|
1769
|
+
/**
|
|
1770
|
+
* The roll used to select a result on this oracle.
|
|
1771
|
+
* @default "1d100"
|
|
1772
|
+
*/
|
|
1773
|
+
dice: DiceExpression;
|
|
1774
|
+
/**
|
|
1775
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
1776
|
+
*/
|
|
1777
|
+
match?: OracleMatchBehavior;
|
|
1778
|
+
/**
|
|
1779
|
+
* An array of objects, each representing a single row of the table.
|
|
1780
|
+
*/
|
|
1781
|
+
rows: OracleRollableRowText[];
|
|
1782
|
+
type: "oracle_rollable";
|
|
1783
|
+
oracle_type: "column_text";
|
|
1784
|
+
}
|
|
1785
|
+
export interface EmbeddedOracleColumnText2 {
|
|
1786
|
+
_id: EmbeddedOracleRollableId;
|
|
1787
|
+
_comment?: Documentation;
|
|
1788
|
+
/**
|
|
1789
|
+
* The primary name/label for this node.
|
|
1790
|
+
*/
|
|
1791
|
+
name: Label;
|
|
1792
|
+
/**
|
|
1793
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1794
|
+
*/
|
|
1795
|
+
canonical_name?: Label;
|
|
1796
|
+
suggestions?: Suggestions;
|
|
1797
|
+
tags?: Tags;
|
|
1798
|
+
/**
|
|
1799
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1800
|
+
*/
|
|
1801
|
+
color?: CssColor;
|
|
1802
|
+
images?: WebpImageUrl[];
|
|
1803
|
+
/**
|
|
1804
|
+
* An SVG icon associated with this collection.
|
|
1805
|
+
*/
|
|
1806
|
+
icon?: SvgImageUrl;
|
|
1807
|
+
recommended_rolls?: {
|
|
1808
|
+
/**
|
|
1809
|
+
* @default 1
|
|
1810
|
+
*/
|
|
1811
|
+
min: number;
|
|
1812
|
+
/**
|
|
1813
|
+
* @default 1
|
|
1814
|
+
*/
|
|
1815
|
+
max: number;
|
|
1816
|
+
};
|
|
1817
|
+
/**
|
|
1818
|
+
* The roll used to select a result on this oracle.
|
|
1819
|
+
* @default "1d100"
|
|
1820
|
+
*/
|
|
1821
|
+
dice: DiceExpression;
|
|
1822
|
+
/**
|
|
1823
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
1824
|
+
*/
|
|
1825
|
+
match?: OracleMatchBehavior;
|
|
1826
|
+
/**
|
|
1827
|
+
* An array of objects, each representing a single row of the table.
|
|
1828
|
+
*/
|
|
1829
|
+
rows: Array<OracleRollableRowText2>;
|
|
1830
|
+
type: "oracle_rollable";
|
|
1831
|
+
oracle_type: "column_text2";
|
|
1832
|
+
}
|
|
1833
|
+
export interface EmbeddedOracleColumnText3 {
|
|
1834
|
+
_id: EmbeddedOracleRollableId;
|
|
1835
|
+
_comment?: Documentation;
|
|
1836
|
+
/**
|
|
1837
|
+
* The primary name/label for this node.
|
|
1838
|
+
*/
|
|
1839
|
+
name: Label;
|
|
1840
|
+
/**
|
|
1841
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1842
|
+
*/
|
|
1843
|
+
canonical_name?: Label;
|
|
1844
|
+
suggestions?: Suggestions;
|
|
1845
|
+
tags?: Tags;
|
|
1846
|
+
/**
|
|
1847
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1848
|
+
*/
|
|
1849
|
+
color?: CssColor;
|
|
1850
|
+
images?: WebpImageUrl[];
|
|
1851
|
+
/**
|
|
1852
|
+
* An SVG icon associated with this collection.
|
|
1853
|
+
*/
|
|
1854
|
+
icon?: SvgImageUrl;
|
|
1855
|
+
recommended_rolls?: {
|
|
1856
|
+
/**
|
|
1857
|
+
* @default 1
|
|
1858
|
+
*/
|
|
1859
|
+
min: number;
|
|
1860
|
+
/**
|
|
1861
|
+
* @default 1
|
|
1862
|
+
*/
|
|
1863
|
+
max: number;
|
|
1864
|
+
};
|
|
1865
|
+
/**
|
|
1866
|
+
* The roll used to select a result on this oracle.
|
|
1867
|
+
* @default "1d100"
|
|
1868
|
+
*/
|
|
1869
|
+
dice: DiceExpression;
|
|
1870
|
+
/**
|
|
1871
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
1872
|
+
*/
|
|
1873
|
+
match?: OracleMatchBehavior;
|
|
1874
|
+
/**
|
|
1875
|
+
* An array of objects, each representing a single row of the table.
|
|
1876
|
+
*/
|
|
1877
|
+
rows: Array<OracleRollableRowText3>;
|
|
1878
|
+
type: "oracle_rollable";
|
|
1879
|
+
oracle_type: "column_text3";
|
|
1880
|
+
}
|
|
1881
|
+
/**
|
|
1882
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.
|
|
1883
|
+
*/
|
|
1884
|
+
export type EmbeddedOracleRollable = EmbeddedOracleTableText | EmbeddedOracleTableText2 | EmbeddedOracleTableText3 | EmbeddedOracleColumnText | EmbeddedOracleColumnText2 | EmbeddedOracleColumnText3;
|
|
1885
|
+
export type EmbeddedOracleRollableId = AssetAbilityOracleRollableId | TruthOptionOracleRollableId | MoveOracleRollableId;
|
|
1886
|
+
export type EmbeddedOracleRollableIdWildcard = AssetAbilityOracleRollableIdWildcard | TruthOptionOracleRollableIdWildcard | MoveOracleRollableIdWildcard;
|
|
1887
|
+
export interface EmbeddedOracleTableText {
|
|
1888
|
+
_id: EmbeddedOracleRollableId;
|
|
1889
|
+
_comment?: Documentation;
|
|
1890
|
+
/**
|
|
1891
|
+
* The primary name/label for this node.
|
|
1892
|
+
*/
|
|
1893
|
+
name: Label;
|
|
1894
|
+
/**
|
|
1895
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1896
|
+
*/
|
|
1897
|
+
canonical_name?: Label;
|
|
1898
|
+
suggestions?: Suggestions;
|
|
1899
|
+
tags?: Tags;
|
|
1900
|
+
/**
|
|
1901
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1902
|
+
*/
|
|
1903
|
+
color?: CssColor;
|
|
1904
|
+
images?: WebpImageUrl[];
|
|
1905
|
+
/**
|
|
1906
|
+
* An SVG icon associated with this collection.
|
|
1907
|
+
*/
|
|
1908
|
+
icon?: SvgImageUrl;
|
|
1909
|
+
recommended_rolls?: {
|
|
1910
|
+
/**
|
|
1911
|
+
* @default 1
|
|
1912
|
+
*/
|
|
1913
|
+
min: number;
|
|
1914
|
+
/**
|
|
1915
|
+
* @default 1
|
|
1916
|
+
*/
|
|
1917
|
+
max: number;
|
|
1918
|
+
};
|
|
1919
|
+
/**
|
|
1920
|
+
* The roll used to select a result on this oracle.
|
|
1921
|
+
* @default "1d100"
|
|
1922
|
+
*/
|
|
1923
|
+
dice: DiceExpression;
|
|
1924
|
+
/**
|
|
1925
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
1926
|
+
*/
|
|
1927
|
+
match?: OracleMatchBehavior;
|
|
1928
|
+
/**
|
|
1929
|
+
* An array of objects, each representing a single row of the table.
|
|
1930
|
+
*/
|
|
1931
|
+
rows: OracleRollableRowText[];
|
|
1932
|
+
/**
|
|
1933
|
+
* @default
|
|
1934
|
+
* ```javascript
|
|
1935
|
+
* {
|
|
1936
|
+
* roll: "Roll",
|
|
1937
|
+
* text: "Result"
|
|
1938
|
+
* }
|
|
1939
|
+
* ```
|
|
1940
|
+
*/
|
|
1941
|
+
column_labels: {
|
|
1942
|
+
roll: Label;
|
|
1943
|
+
text: Label;
|
|
1944
|
+
};
|
|
1945
|
+
type: "oracle_rollable";
|
|
1946
|
+
oracle_type: "table_text";
|
|
1947
|
+
}
|
|
1948
|
+
export interface EmbeddedOracleTableText2 {
|
|
1949
|
+
_id: EmbeddedOracleRollableId;
|
|
1950
|
+
_comment?: Documentation;
|
|
1951
|
+
/**
|
|
1952
|
+
* The primary name/label for this node.
|
|
1953
|
+
*/
|
|
1954
|
+
name: Label;
|
|
1955
|
+
/**
|
|
1956
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
1957
|
+
*/
|
|
1958
|
+
canonical_name?: Label;
|
|
1959
|
+
suggestions?: Suggestions;
|
|
1960
|
+
tags?: Tags;
|
|
1961
|
+
/**
|
|
1962
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
1963
|
+
*/
|
|
1964
|
+
color?: CssColor;
|
|
1965
|
+
images?: WebpImageUrl[];
|
|
1966
|
+
/**
|
|
1967
|
+
* An SVG icon associated with this collection.
|
|
1968
|
+
*/
|
|
1969
|
+
icon?: SvgImageUrl;
|
|
1970
|
+
recommended_rolls?: {
|
|
1971
|
+
/**
|
|
1972
|
+
* @default 1
|
|
1973
|
+
*/
|
|
1974
|
+
min: number;
|
|
1975
|
+
/**
|
|
1976
|
+
* @default 1
|
|
1977
|
+
*/
|
|
1978
|
+
max: number;
|
|
1979
|
+
};
|
|
1980
|
+
/**
|
|
1981
|
+
* The roll used to select a result on this oracle.
|
|
1982
|
+
* @default "1d100"
|
|
1983
|
+
*/
|
|
1984
|
+
dice: DiceExpression;
|
|
1985
|
+
/**
|
|
1986
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
1987
|
+
*/
|
|
1988
|
+
match?: OracleMatchBehavior;
|
|
1989
|
+
/**
|
|
1990
|
+
* An array of objects, each representing a single row of the table.
|
|
1991
|
+
*/
|
|
1992
|
+
rows: Array<OracleRollableRowText2>;
|
|
1993
|
+
/**
|
|
1994
|
+
* @default
|
|
1995
|
+
* ```javascript
|
|
1996
|
+
* {
|
|
1997
|
+
* roll: "Roll",
|
|
1998
|
+
* text: "Result",
|
|
1999
|
+
* text2: "Details"
|
|
2000
|
+
* }
|
|
2001
|
+
* ```
|
|
2002
|
+
*/
|
|
2003
|
+
column_labels: {
|
|
2004
|
+
roll: Label;
|
|
2005
|
+
text: Label;
|
|
2006
|
+
text2: Label;
|
|
2007
|
+
};
|
|
2008
|
+
type: "oracle_rollable";
|
|
2009
|
+
oracle_type: "table_text2";
|
|
2010
|
+
}
|
|
2011
|
+
export interface EmbeddedOracleTableText3 {
|
|
2012
|
+
_id: EmbeddedOracleRollableId;
|
|
2013
|
+
_comment?: Documentation;
|
|
2014
|
+
/**
|
|
2015
|
+
* The primary name/label for this node.
|
|
2016
|
+
*/
|
|
2017
|
+
name: Label;
|
|
2018
|
+
/**
|
|
2019
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2020
|
+
*/
|
|
2021
|
+
canonical_name?: Label;
|
|
2022
|
+
suggestions?: Suggestions;
|
|
2023
|
+
tags?: Tags;
|
|
2024
|
+
/**
|
|
2025
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2026
|
+
*/
|
|
2027
|
+
color?: CssColor;
|
|
2028
|
+
images?: WebpImageUrl[];
|
|
2029
|
+
/**
|
|
2030
|
+
* An SVG icon associated with this collection.
|
|
2031
|
+
*/
|
|
2032
|
+
icon?: SvgImageUrl;
|
|
2033
|
+
recommended_rolls?: {
|
|
2034
|
+
/**
|
|
2035
|
+
* @default 1
|
|
2036
|
+
*/
|
|
2037
|
+
min: number;
|
|
2038
|
+
/**
|
|
2039
|
+
* @default 1
|
|
2040
|
+
*/
|
|
2041
|
+
max: number;
|
|
2042
|
+
};
|
|
2043
|
+
/**
|
|
2044
|
+
* The roll used to select a result on this oracle.
|
|
2045
|
+
* @default "1d100"
|
|
2046
|
+
*/
|
|
2047
|
+
dice: DiceExpression;
|
|
2048
|
+
/**
|
|
2049
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
2050
|
+
*/
|
|
2051
|
+
match?: OracleMatchBehavior;
|
|
2052
|
+
/**
|
|
2053
|
+
* An array of objects, each representing a single row of the table.
|
|
2054
|
+
*/
|
|
2055
|
+
rows: Array<OracleRollableRowText3>;
|
|
2056
|
+
column_labels: {
|
|
2057
|
+
roll: Label;
|
|
2058
|
+
text: Label;
|
|
2059
|
+
text2: Label;
|
|
2060
|
+
text3: Label;
|
|
2061
|
+
};
|
|
2062
|
+
type: "oracle_rollable";
|
|
2063
|
+
oracle_type: "table_text3";
|
|
2064
|
+
}
|
|
2065
|
+
export interface EmbeddedProgressRollMove {
|
|
2066
|
+
_id: EmbeddedMoveId;
|
|
2067
|
+
_comment?: Documentation;
|
|
2068
|
+
/**
|
|
2069
|
+
* The primary name/label for this node.
|
|
2070
|
+
*/
|
|
2071
|
+
name: Label;
|
|
2072
|
+
/**
|
|
2073
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2074
|
+
*/
|
|
2075
|
+
canonical_name?: Label;
|
|
2076
|
+
suggestions?: Suggestions;
|
|
2077
|
+
tags?: Tags;
|
|
2078
|
+
/**
|
|
2079
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2080
|
+
*/
|
|
2081
|
+
color?: CssColor;
|
|
2082
|
+
images?: WebpImageUrl[];
|
|
2083
|
+
/**
|
|
2084
|
+
* An SVG icon associated with this collection.
|
|
2085
|
+
*/
|
|
2086
|
+
icon?: SvgImageUrl;
|
|
2087
|
+
/**
|
|
2088
|
+
* The complete rules text of the move.
|
|
2089
|
+
*/
|
|
2090
|
+
text: MarkdownString;
|
|
2091
|
+
/**
|
|
2092
|
+
* Trigger conditions for this move.
|
|
2093
|
+
*/
|
|
2094
|
+
trigger: TriggerProgressRoll;
|
|
2095
|
+
/**
|
|
2096
|
+
* Is burning momentum allowed for this move?
|
|
2097
|
+
*/
|
|
2098
|
+
allow_momentum_burn: false;
|
|
2099
|
+
outcomes: MoveOutcomes;
|
|
2100
|
+
type: "move";
|
|
2101
|
+
roll_type: "progress_roll";
|
|
2102
|
+
/**
|
|
2103
|
+
* Describes the common features of progress tracks associated with this move.
|
|
2104
|
+
*/
|
|
2105
|
+
tracks: ProgressTrackTypeInfo;
|
|
2106
|
+
}
|
|
2107
|
+
export interface EmbeddedSpecialTrackMove {
|
|
2108
|
+
_id: EmbeddedMoveId;
|
|
2109
|
+
_comment?: Documentation;
|
|
2110
|
+
/**
|
|
2111
|
+
* The primary name/label for this node.
|
|
2112
|
+
*/
|
|
2113
|
+
name: Label;
|
|
2114
|
+
/**
|
|
2115
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2116
|
+
*/
|
|
2117
|
+
canonical_name?: Label;
|
|
2118
|
+
suggestions?: Suggestions;
|
|
2119
|
+
tags?: Tags;
|
|
2120
|
+
/**
|
|
2121
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2122
|
+
*/
|
|
2123
|
+
color?: CssColor;
|
|
2124
|
+
images?: WebpImageUrl[];
|
|
2125
|
+
/**
|
|
2126
|
+
* An SVG icon associated with this collection.
|
|
2127
|
+
*/
|
|
2128
|
+
icon?: SvgImageUrl;
|
|
2129
|
+
/**
|
|
2130
|
+
* The complete rules text of the move.
|
|
2131
|
+
*/
|
|
2132
|
+
text: MarkdownString;
|
|
2133
|
+
/**
|
|
2134
|
+
* Trigger conditions for this move.
|
|
2135
|
+
*/
|
|
2136
|
+
trigger: TriggerSpecialTrack;
|
|
2137
|
+
/**
|
|
2138
|
+
* Is burning momentum allowed for this move?
|
|
2139
|
+
*/
|
|
2140
|
+
allow_momentum_burn: false;
|
|
2141
|
+
outcomes: MoveOutcomes;
|
|
2142
|
+
type: "move";
|
|
2143
|
+
roll_type: "special_track";
|
|
2144
|
+
}
|
|
2145
|
+
export type EmbedOnlyType = "ability" | "condition" | "outcome" | "option" | "row" | "feature" | "danger" | "denizen" | "variant";
|
|
2146
|
+
/**
|
|
2147
|
+
* This type is a placeholder and may see signficant changes in v0.2.0.
|
|
2148
|
+
* @experimental
|
|
2149
|
+
*/
|
|
2150
|
+
export interface EntityPrompt {
|
|
2151
|
+
text: MarkdownString;
|
|
2152
|
+
}
|
|
2153
|
+
/**
|
|
2154
|
+
* A Datasworn package that relies on an external package to provide its ruleset.
|
|
2155
|
+
*/
|
|
2156
|
+
export interface Expansion {
|
|
2157
|
+
_id: ExpansionId;
|
|
2158
|
+
type: "expansion";
|
|
2159
|
+
/**
|
|
2160
|
+
* The version of the Datasworn format used by this data.
|
|
2161
|
+
* @pattern ```javascript
|
|
2162
|
+
* /^(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-]+)*))?$/
|
|
2163
|
+
* ```
|
|
2164
|
+
*/
|
|
2165
|
+
datasworn_version: "0.1.0";
|
|
2166
|
+
description?: MarkdownString;
|
|
2167
|
+
/**
|
|
2168
|
+
* The title of the source document.
|
|
2169
|
+
* @example "Ironsworn Rulebook"
|
|
2170
|
+
* @example "Ironsworn Assets Master Set"
|
|
2171
|
+
* @example "Ironsworn: Delve"
|
|
2172
|
+
* @example "Ironsworn: Starforged Rulebook"
|
|
2173
|
+
* @example "Ironsworn: Starforged Assets"
|
|
2174
|
+
* @example "Sundered Isles"
|
|
2175
|
+
*/
|
|
2176
|
+
title: Label;
|
|
2177
|
+
/**
|
|
2178
|
+
* Lists authors credited by the source material.
|
|
2179
|
+
*/
|
|
2180
|
+
authors: AuthorInfo[];
|
|
2181
|
+
/**
|
|
2182
|
+
* 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.
|
|
2183
|
+
* @remarks You may prefer to deserialize this as a Date object.
|
|
2184
|
+
* @pattern ```javascript
|
|
2185
|
+
* /[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))/
|
|
2186
|
+
* ```
|
|
2187
|
+
*/
|
|
2188
|
+
date: string;
|
|
2189
|
+
/**
|
|
2190
|
+
* A URL where the source document is available.
|
|
2191
|
+
* @example "https://ironswornrpg.com"
|
|
2192
|
+
*/
|
|
2193
|
+
url: WebUrl;
|
|
2194
|
+
/**
|
|
2195
|
+
* An URL pointing to the location where this content's license can be found.
|
|
2196
|
+
*
|
|
2197
|
+
* A `null` here indicates that the content provides __no__ license, and is not intended for redistribution.
|
|
2198
|
+
* @example "https://creativecommons.org/licenses/by/4.0"
|
|
2199
|
+
* @example "https://creativecommons.org/licenses/by-nc-sa/4.0"
|
|
2200
|
+
*/
|
|
2201
|
+
license: WebUrl | null;
|
|
2202
|
+
/**
|
|
2203
|
+
* A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.
|
|
2204
|
+
* @remarks Deserialize as a dictionary object.
|
|
2205
|
+
* @default {}
|
|
2206
|
+
*/
|
|
2207
|
+
oracles: Record<DictKey, OracleTablesCollection>;
|
|
2208
|
+
/**
|
|
2209
|
+
* A dictionary object containing move categories, which contain moves.
|
|
2210
|
+
* @remarks Deserialize as a dictionary object.
|
|
2211
|
+
* @default {}
|
|
2212
|
+
*/
|
|
2213
|
+
moves: Record<DictKey, MoveCategory>;
|
|
2214
|
+
/**
|
|
2215
|
+
* A dictionary object containing asset collections, which contain assets.
|
|
2216
|
+
* @remarks Deserialize as a dictionary object.
|
|
2217
|
+
* @default {}
|
|
2218
|
+
*/
|
|
2219
|
+
assets: Record<DictKey, AssetCollection>;
|
|
2220
|
+
/**
|
|
2221
|
+
* A dictionary object containing atlas collections, which contain atlas entries.
|
|
2222
|
+
* @remarks Deserialize as a dictionary object.
|
|
2223
|
+
* @default {}
|
|
2224
|
+
*/
|
|
2225
|
+
atlas?: Record<DictKey, AtlasCollection>;
|
|
2226
|
+
/**
|
|
2227
|
+
* A dictionary object containing NPC collections, which contain NPCs.
|
|
2228
|
+
* @remarks Deserialize as a dictionary object.
|
|
2229
|
+
* @default {}
|
|
2230
|
+
*/
|
|
2231
|
+
npcs?: Record<DictKey, NpcCollection>;
|
|
2232
|
+
/**
|
|
2233
|
+
* A dictionary object of truth categories.
|
|
2234
|
+
* @remarks Deserialize as a dictionary object.
|
|
2235
|
+
* @default {}
|
|
2236
|
+
*/
|
|
2237
|
+
truths?: Record<DictKey, Truth>;
|
|
2238
|
+
/**
|
|
2239
|
+
* A dictionary object containing rarities, like those presented in Ironsworn: Delve.
|
|
2240
|
+
* @remarks Deserialize as a dictionary object.
|
|
2241
|
+
* @default {}
|
|
2242
|
+
*/
|
|
2243
|
+
rarities?: Record<DictKey, Rarity>;
|
|
2244
|
+
/**
|
|
2245
|
+
* A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve
|
|
2246
|
+
* @remarks Deserialize as a dictionary object.
|
|
2247
|
+
* @default {}
|
|
2248
|
+
*/
|
|
2249
|
+
delve_sites?: Record<DictKey, DelveSite>;
|
|
2250
|
+
/**
|
|
2251
|
+
* A dictionary object containing delve site themes.
|
|
2252
|
+
* @remarks Deserialize as a dictionary object.
|
|
2253
|
+
* @default {}
|
|
2254
|
+
*/
|
|
2255
|
+
site_themes?: Record<DictKey, DelveSiteTheme>;
|
|
2256
|
+
/**
|
|
2257
|
+
* A dictionary object containing delve site domains.
|
|
2258
|
+
* @remarks Deserialize as a dictionary object.
|
|
2259
|
+
* @default {}
|
|
2260
|
+
*/
|
|
2261
|
+
site_domains?: Record<DictKey, DelveSiteDomain>;
|
|
2262
|
+
ruleset: RulesetId;
|
|
2263
|
+
rules?: RulesExpansion;
|
|
2264
|
+
}
|
|
2265
|
+
/**
|
|
2266
|
+
* The ID of a Datasworn package that relies on an external package to provide its ruleset.
|
|
2267
|
+
* @pattern ```javascript
|
|
2268
|
+
* /^[a-z][a-z0-9_]*$/
|
|
2269
|
+
* ```
|
|
2270
|
+
* @example "delve"
|
|
2271
|
+
* @example "sundered_isles"
|
|
2272
|
+
*/
|
|
2273
|
+
export type ExpansionId = string;
|
|
2274
|
+
/**
|
|
2275
|
+
* @experimental
|
|
2276
|
+
*/
|
|
2277
|
+
export interface I18nHint {
|
|
2278
|
+
/**
|
|
2279
|
+
* The part of speech for this string.
|
|
2280
|
+
*/
|
|
2281
|
+
part_of_speech?: PartOfSpeech;
|
|
2282
|
+
}
|
|
2283
|
+
/**
|
|
2284
|
+
* Internationalization/localization hints for the text content of this object.
|
|
2285
|
+
* @experimental
|
|
2286
|
+
*/
|
|
2287
|
+
export interface I18nHints {
|
|
2288
|
+
text?: I18nHint;
|
|
2289
|
+
text2?: I18nHint;
|
|
2290
|
+
text3?: I18nHint;
|
|
2291
|
+
template?: {
|
|
2292
|
+
text?: I18nHint;
|
|
2293
|
+
text2?: I18nHint;
|
|
2294
|
+
text3?: I18nHint;
|
|
2295
|
+
};
|
|
2296
|
+
}
|
|
2297
|
+
/**
|
|
2298
|
+
* Describes a category of standard impacts/debilities.
|
|
2299
|
+
*/
|
|
2300
|
+
export interface ImpactCategory {
|
|
2301
|
+
/**
|
|
2302
|
+
* A label for this impact category.
|
|
2303
|
+
*/
|
|
2304
|
+
label: Label;
|
|
2305
|
+
/**
|
|
2306
|
+
* A description of this impact category.
|
|
2307
|
+
*/
|
|
2308
|
+
description: MarkdownString;
|
|
2309
|
+
/**
|
|
2310
|
+
* A dictionary object of the Impacts in this category.
|
|
2311
|
+
* @remarks Deserialize as a dictionary object.
|
|
2312
|
+
* @default {}
|
|
2313
|
+
*/
|
|
2314
|
+
contents: Record<DictKey, ImpactRule>;
|
|
2315
|
+
}
|
|
2316
|
+
/**
|
|
2317
|
+
* Describes a standard impact/debility.
|
|
2318
|
+
*/
|
|
2319
|
+
export interface ImpactRule {
|
|
2320
|
+
/**
|
|
2321
|
+
* The label for this impact.
|
|
2322
|
+
*/
|
|
2323
|
+
label: Label;
|
|
2324
|
+
/**
|
|
2325
|
+
* A description of this impact.
|
|
2326
|
+
*/
|
|
2327
|
+
description: MarkdownString;
|
|
2328
|
+
/**
|
|
2329
|
+
* Is this impact applied to all players at once?
|
|
2330
|
+
* @default false
|
|
2331
|
+
*/
|
|
2332
|
+
shared: boolean;
|
|
2333
|
+
/**
|
|
2334
|
+
* Any ruleset condition meters that can't recover when this impact is active.
|
|
2335
|
+
* @default []
|
|
2336
|
+
*/
|
|
2337
|
+
prevents_recovery: ConditionMeterKey[];
|
|
2338
|
+
/**
|
|
2339
|
+
* Is this impact permanent?
|
|
2340
|
+
* @default false
|
|
2341
|
+
*/
|
|
2342
|
+
permanent: boolean;
|
|
2343
|
+
/**
|
|
2344
|
+
* @experimental
|
|
2345
|
+
*/
|
|
2346
|
+
tags?: Tags;
|
|
2347
|
+
}
|
|
2348
|
+
/**
|
|
2349
|
+
* A localized, player-facing name or label, formatted as plain text. In some contexts it may be undesirable to render this text, but it should always be exposed to assistive technology (e.g. with `aria-label` in HTML).
|
|
2350
|
+
* @i18n
|
|
2351
|
+
*/
|
|
2352
|
+
export type Label = string;
|
|
2353
|
+
/**
|
|
2354
|
+
* Localized, player-facing text, formatted in Markdown. It is *not* formatted for use "out of the box"; it uses some custom syntax, intended to be replaced in whatever way is most appropriate for your implementation.
|
|
2355
|
+
*
|
|
2356
|
+
* * `[Link text](datasworn:move:starforged/suffer/pay_the_price)`: A link to the identified object. The ID must conform to the `AnyId` type; no wildcards allowed.
|
|
2357
|
+
* * `{{table>oracle_rollable:starforged/core/action}}`: the referenced oracle is rendered here in the source material. The ID must conform to the `AnyOracleRollableId` type; no wildcards allowed.
|
|
2358
|
+
* * `{{table_columns>move:delve/delve/delve_the_depths}}`: Render *all* direct OracleRollable children of the identified node. This can be an OracleCollectionId, or the ID of anything that can have EmbeddedOracleRollables (such as a Move or TruthOption).
|
|
2359
|
+
*
|
|
2360
|
+
* @i18n
|
|
2361
|
+
*/
|
|
2362
|
+
export type MarkdownString = string;
|
|
2363
|
+
/**
|
|
2364
|
+
* A rich text string in Markdown with replaced values from oracle roll results.
|
|
2365
|
+
*
|
|
2366
|
+
* 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 `text` key, for example `{{text>oracle_rollable:starforged/core/action}}`
|
|
2367
|
+
*
|
|
2368
|
+
* @i18n
|
|
2369
|
+
* @experimental
|
|
2370
|
+
*/
|
|
2371
|
+
export type MarkdownTemplateString = string;
|
|
2372
|
+
/**
|
|
2373
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator.
|
|
2374
|
+
*/
|
|
2375
|
+
export type Move = MoveActionRoll | MoveNoRoll | MoveProgressRoll | MoveSpecialTrack;
|
|
2376
|
+
/**
|
|
2377
|
+
* A move that makes an action roll.
|
|
2378
|
+
*/
|
|
2379
|
+
export interface MoveActionRoll {
|
|
2380
|
+
/**
|
|
2381
|
+
* The unique Datasworn ID for this node.
|
|
2382
|
+
*/
|
|
2383
|
+
_id: MoveId;
|
|
2384
|
+
_comment?: Documentation;
|
|
2385
|
+
/**
|
|
2386
|
+
* The primary name/label for this node.
|
|
2387
|
+
*/
|
|
2388
|
+
name: Label;
|
|
2389
|
+
/**
|
|
2390
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2391
|
+
*/
|
|
2392
|
+
canonical_name?: Label;
|
|
2393
|
+
/**
|
|
2394
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2395
|
+
*/
|
|
2396
|
+
_source: SourceInfo;
|
|
2397
|
+
suggestions?: Suggestions;
|
|
2398
|
+
tags?: Tags;
|
|
2399
|
+
/**
|
|
2400
|
+
* Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.
|
|
2401
|
+
*/
|
|
2402
|
+
replaces?: MoveIdWildcard[];
|
|
2403
|
+
/**
|
|
2404
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2405
|
+
*/
|
|
2406
|
+
color?: CssColor;
|
|
2407
|
+
images?: WebpImageUrl[];
|
|
2408
|
+
/**
|
|
2409
|
+
* An SVG icon associated with this collection.
|
|
2410
|
+
*/
|
|
2411
|
+
icon?: SvgImageUrl;
|
|
2412
|
+
/**
|
|
2413
|
+
* The complete rules text of the move.
|
|
2414
|
+
*/
|
|
2415
|
+
text: MarkdownString;
|
|
2416
|
+
/**
|
|
2417
|
+
* @remarks Deserialize as a dictionary object.
|
|
2418
|
+
* @default {}
|
|
2419
|
+
*/
|
|
2420
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
2421
|
+
/**
|
|
2422
|
+
* Trigger conditions for this move.
|
|
2423
|
+
*/
|
|
2424
|
+
trigger: TriggerActionRoll;
|
|
2425
|
+
/**
|
|
2426
|
+
* Is burning momentum allowed for this move?
|
|
2427
|
+
* @default true
|
|
2428
|
+
*/
|
|
2429
|
+
allow_momentum_burn: boolean;
|
|
2430
|
+
outcomes: MoveOutcomes;
|
|
2431
|
+
type: "move";
|
|
2432
|
+
roll_type: "action_roll";
|
|
2433
|
+
}
|
|
2434
|
+
/**
|
|
2435
|
+
* 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.
|
|
2436
|
+
*/
|
|
2437
|
+
export interface MoveActionRollEnhancement {
|
|
2438
|
+
/**
|
|
2439
|
+
* 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.
|
|
2440
|
+
* @default null
|
|
2441
|
+
*/
|
|
2442
|
+
enhances: AnyMoveIdWildcard[] | null;
|
|
2443
|
+
/**
|
|
2444
|
+
* A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.
|
|
2445
|
+
*/
|
|
2446
|
+
roll_type: "action_roll";
|
|
2447
|
+
trigger?: TriggerActionRollEnhancement;
|
|
2448
|
+
}
|
|
2449
|
+
export interface MoveCategory {
|
|
2450
|
+
/**
|
|
2451
|
+
* The unique Datasworn ID for this node.
|
|
2452
|
+
*/
|
|
2453
|
+
_id: MoveCategoryId;
|
|
2454
|
+
_comment?: Documentation;
|
|
2455
|
+
/**
|
|
2456
|
+
* The primary name/label for this node.
|
|
2457
|
+
*/
|
|
2458
|
+
name: Label;
|
|
2459
|
+
/**
|
|
2460
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2461
|
+
*/
|
|
2462
|
+
canonical_name?: Label;
|
|
2463
|
+
/**
|
|
2464
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2465
|
+
*/
|
|
2466
|
+
_source: SourceInfo;
|
|
2467
|
+
suggestions?: Suggestions;
|
|
2468
|
+
tags?: Tags;
|
|
2469
|
+
/**
|
|
2470
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
2471
|
+
*/
|
|
2472
|
+
replaces?: MoveCategoryIdWildcard[];
|
|
2473
|
+
/**
|
|
2474
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2475
|
+
*/
|
|
2476
|
+
color?: CssColor;
|
|
2477
|
+
images?: WebpImageUrl[];
|
|
2478
|
+
/**
|
|
2479
|
+
* An SVG icon associated with this collection.
|
|
2480
|
+
*/
|
|
2481
|
+
icon?: SvgImageUrl;
|
|
2482
|
+
/**
|
|
2483
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
2484
|
+
*/
|
|
2485
|
+
enhances?: MoveCategoryIdWildcard[];
|
|
2486
|
+
/**
|
|
2487
|
+
* 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.
|
|
2488
|
+
*/
|
|
2489
|
+
summary?: MarkdownString;
|
|
2490
|
+
/**
|
|
2491
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
2492
|
+
*/
|
|
2493
|
+
description?: MarkdownString;
|
|
2494
|
+
/**
|
|
2495
|
+
* @remarks Deserialize as a dictionary object.
|
|
2496
|
+
* @default {}
|
|
2497
|
+
*/
|
|
2498
|
+
contents: Record<DictKey, Move>;
|
|
2499
|
+
/**
|
|
2500
|
+
* @remarks Deserialize as a dictionary object.
|
|
2501
|
+
* @default {}
|
|
2502
|
+
*/
|
|
2503
|
+
collections: Record<DictKey, MoveCategory>;
|
|
2504
|
+
type: "move_category";
|
|
2505
|
+
}
|
|
2506
|
+
/**
|
|
2507
|
+
* A unique ID representing a MoveCategory object.
|
|
2508
|
+
* @pattern ```javascript
|
|
2509
|
+
* /^move_category:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){1,4})$/
|
|
2510
|
+
* ```
|
|
2511
|
+
*/
|
|
2512
|
+
export type MoveCategoryId = string;
|
|
2513
|
+
/**
|
|
2514
|
+
* A wildcarded MoveCategoryId that can be used to match multiple MoveCategory objects.
|
|
2515
|
+
* @pattern ```javascript
|
|
2516
|
+
* /^move_category:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){1,4})$/
|
|
2517
|
+
* ```
|
|
2518
|
+
*/
|
|
2519
|
+
export type MoveCategoryIdWildcard = string;
|
|
2520
|
+
/**
|
|
2521
|
+
* A unique ID representing a MoveCondition object.
|
|
2522
|
+
* @pattern ```javascript
|
|
2523
|
+
* /^move\.condition:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)$/
|
|
2524
|
+
* ```
|
|
2525
|
+
*/
|
|
2526
|
+
export type MoveConditionId = string;
|
|
2527
|
+
/**
|
|
2528
|
+
* A wildcarded MoveConditionId that can be used to match multiple MoveCondition objects.
|
|
2529
|
+
* @pattern ```javascript
|
|
2530
|
+
* /^move\.condition:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)$/
|
|
2531
|
+
* ```
|
|
2532
|
+
*/
|
|
2533
|
+
export type MoveConditionIdWildcard = string;
|
|
2534
|
+
/**
|
|
2535
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `roll_type` property as a discriminator.
|
|
2536
|
+
*/
|
|
2537
|
+
export type MoveEnhancement = MoveActionRollEnhancement | MoveNoRollEnhancement | MoveProgressRollEnhancement | MoveSpecialTrackEnhancement;
|
|
2538
|
+
/**
|
|
2539
|
+
* A unique ID representing a Move object.
|
|
2540
|
+
* @pattern ```javascript
|
|
2541
|
+
* /^move:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})$/
|
|
2542
|
+
* ```
|
|
2543
|
+
*/
|
|
2544
|
+
export type MoveId = string;
|
|
2545
|
+
/**
|
|
2546
|
+
* A wildcarded MoveId that can be used to match multiple Move objects.
|
|
2547
|
+
* @pattern ```javascript
|
|
2548
|
+
* /^move:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})$/
|
|
2549
|
+
* ```
|
|
2550
|
+
*/
|
|
2551
|
+
export type MoveIdWildcard = string;
|
|
2552
|
+
/**
|
|
2553
|
+
* A move that makes no progress rolls or action rolls.
|
|
2554
|
+
*/
|
|
2555
|
+
export interface MoveNoRoll {
|
|
2556
|
+
/**
|
|
2557
|
+
* The unique Datasworn ID for this node.
|
|
2558
|
+
*/
|
|
2559
|
+
_id: MoveId;
|
|
2560
|
+
_comment?: Documentation;
|
|
2561
|
+
/**
|
|
2562
|
+
* The primary name/label for this node.
|
|
2563
|
+
*/
|
|
2564
|
+
name: Label;
|
|
2565
|
+
/**
|
|
2566
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2567
|
+
*/
|
|
2568
|
+
canonical_name?: Label;
|
|
2569
|
+
/**
|
|
2570
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2571
|
+
*/
|
|
2572
|
+
_source: SourceInfo;
|
|
2573
|
+
suggestions?: Suggestions;
|
|
2574
|
+
tags?: Tags;
|
|
2575
|
+
/**
|
|
2576
|
+
* Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.
|
|
2577
|
+
*/
|
|
2578
|
+
replaces?: MoveIdWildcard[];
|
|
2579
|
+
/**
|
|
2580
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2581
|
+
*/
|
|
2582
|
+
color?: CssColor;
|
|
2583
|
+
images?: WebpImageUrl[];
|
|
2584
|
+
/**
|
|
2585
|
+
* An SVG icon associated with this collection.
|
|
2586
|
+
*/
|
|
2587
|
+
icon?: SvgImageUrl;
|
|
2588
|
+
/**
|
|
2589
|
+
* The complete rules text of the move.
|
|
2590
|
+
*/
|
|
2591
|
+
text: MarkdownString;
|
|
2592
|
+
/**
|
|
2593
|
+
* @remarks Deserialize as a dictionary object.
|
|
2594
|
+
* @default {}
|
|
2595
|
+
*/
|
|
2596
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
2597
|
+
/**
|
|
2598
|
+
* Trigger conditions for this move.
|
|
2599
|
+
*/
|
|
2600
|
+
trigger: TriggerNoRoll;
|
|
2601
|
+
/**
|
|
2602
|
+
* Is burning momentum allowed for this move?
|
|
2603
|
+
*/
|
|
2604
|
+
allow_momentum_burn: false;
|
|
2605
|
+
/**
|
|
2606
|
+
* @default null
|
|
2607
|
+
*/
|
|
2608
|
+
outcomes: null;
|
|
2609
|
+
type: "move";
|
|
2610
|
+
roll_type: "no_roll";
|
|
2611
|
+
}
|
|
2612
|
+
/**
|
|
2613
|
+
* 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.
|
|
2614
|
+
*/
|
|
2615
|
+
export interface MoveNoRollEnhancement {
|
|
2616
|
+
/**
|
|
2617
|
+
* 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.
|
|
2618
|
+
* @default null
|
|
2619
|
+
*/
|
|
2620
|
+
enhances: AnyMoveIdWildcard[] | null;
|
|
2621
|
+
/**
|
|
2622
|
+
* A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.
|
|
2623
|
+
*/
|
|
2624
|
+
roll_type: "no_roll";
|
|
2625
|
+
trigger?: TriggerNoRollEnhancement;
|
|
2626
|
+
}
|
|
2627
|
+
/**
|
|
2628
|
+
* A unique ID representing a MoveOracleRollable object.
|
|
2629
|
+
* @pattern ```javascript
|
|
2630
|
+
* /^move\.oracle_rollable:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
2631
|
+
* ```
|
|
2632
|
+
*/
|
|
2633
|
+
export type MoveOracleRollableId = string;
|
|
2634
|
+
/**
|
|
2635
|
+
* A wildcarded MoveOracleRollableId that can be used to match multiple MoveOracleRollable objects.
|
|
2636
|
+
* @pattern ```javascript
|
|
2637
|
+
* /^move\.oracle_rollable:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
2638
|
+
* ```
|
|
2639
|
+
*/
|
|
2640
|
+
export type MoveOracleRollableIdWildcard = string;
|
|
2641
|
+
/**
|
|
2642
|
+
* A unique ID representing a MoveOracleRollableRow object.
|
|
2643
|
+
* @pattern ```javascript
|
|
2644
|
+
* /^move\.oracle_rollable\.row:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.([a-z][a-z0-9_]*|\*)\.(\d+)$/
|
|
2645
|
+
* ```
|
|
2646
|
+
*/
|
|
2647
|
+
export type MoveOracleRollableRowId = string;
|
|
2648
|
+
/**
|
|
2649
|
+
* A wildcarded MoveOracleRollableRowId that can be used to match multiple MoveOracleRollableRow objects.
|
|
2650
|
+
* @pattern ```javascript
|
|
2651
|
+
* /^move\.oracle_rollable\.row:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.([a-z][a-z0-9_]*|\*)\.(\d+|\*)$/
|
|
2652
|
+
* ```
|
|
2653
|
+
*/
|
|
2654
|
+
export type MoveOracleRollableRowIdWildcard = string;
|
|
2655
|
+
export interface MoveOutcome {
|
|
2656
|
+
_id: AnyMoveOutcomeId;
|
|
2657
|
+
text: MarkdownString;
|
|
2658
|
+
oracle_rolls?: OracleRoll[];
|
|
2659
|
+
}
|
|
2660
|
+
/**
|
|
2661
|
+
* A unique ID representing a MoveOutcome object.
|
|
2662
|
+
* @pattern ```javascript
|
|
2663
|
+
* /^move\.outcome:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
2664
|
+
* ```
|
|
2665
|
+
*/
|
|
2666
|
+
export type MoveOutcomeId = string;
|
|
2667
|
+
/**
|
|
2668
|
+
* A wildcarded MoveOutcomeId that can be used to match multiple MoveOutcome objects.
|
|
2669
|
+
* @pattern ```javascript
|
|
2670
|
+
* /^move\.outcome:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
2671
|
+
* ```
|
|
2672
|
+
*/
|
|
2673
|
+
export type MoveOutcomeIdWildcard = string;
|
|
2674
|
+
/**
|
|
2675
|
+
* 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.
|
|
2676
|
+
*
|
|
2677
|
+
* 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.
|
|
2678
|
+
*/
|
|
2679
|
+
export interface MoveOutcomes {
|
|
2680
|
+
strong_hit: MoveOutcome;
|
|
2681
|
+
weak_hit: MoveOutcome;
|
|
2682
|
+
miss: MoveOutcome;
|
|
2683
|
+
}
|
|
2684
|
+
/**
|
|
2685
|
+
* 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.
|
|
2686
|
+
*/
|
|
2687
|
+
export interface MoveProgressRoll {
|
|
2688
|
+
/**
|
|
2689
|
+
* The unique Datasworn ID for this node.
|
|
2690
|
+
*/
|
|
2691
|
+
_id: MoveId;
|
|
2692
|
+
_comment?: Documentation;
|
|
2693
|
+
/**
|
|
2694
|
+
* The primary name/label for this node.
|
|
2695
|
+
*/
|
|
2696
|
+
name: Label;
|
|
2697
|
+
/**
|
|
2698
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2699
|
+
*/
|
|
2700
|
+
canonical_name?: Label;
|
|
2701
|
+
/**
|
|
2702
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2703
|
+
*/
|
|
2704
|
+
_source: SourceInfo;
|
|
2705
|
+
suggestions?: Suggestions;
|
|
2706
|
+
tags?: Tags;
|
|
2707
|
+
/**
|
|
2708
|
+
* Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.
|
|
2709
|
+
*/
|
|
2710
|
+
replaces?: MoveIdWildcard[];
|
|
2711
|
+
/**
|
|
2712
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2713
|
+
*/
|
|
2714
|
+
color?: CssColor;
|
|
2715
|
+
images?: WebpImageUrl[];
|
|
2716
|
+
/**
|
|
2717
|
+
* An SVG icon associated with this collection.
|
|
2718
|
+
*/
|
|
2719
|
+
icon?: SvgImageUrl;
|
|
2720
|
+
/**
|
|
2721
|
+
* The complete rules text of the move.
|
|
2722
|
+
*/
|
|
2723
|
+
text: MarkdownString;
|
|
2724
|
+
/**
|
|
2725
|
+
* @remarks Deserialize as a dictionary object.
|
|
2726
|
+
* @default {}
|
|
2727
|
+
*/
|
|
2728
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
2729
|
+
/**
|
|
2730
|
+
* Trigger conditions for this move.
|
|
2731
|
+
*/
|
|
2732
|
+
trigger: TriggerProgressRoll;
|
|
2733
|
+
/**
|
|
2734
|
+
* Is burning momentum allowed for this move?
|
|
2735
|
+
*/
|
|
2736
|
+
allow_momentum_burn: false;
|
|
2737
|
+
outcomes: MoveOutcomes;
|
|
2738
|
+
type: "move";
|
|
2739
|
+
roll_type: "progress_roll";
|
|
2740
|
+
/**
|
|
2741
|
+
* Describes the common features of progress tracks associated with this move.
|
|
2742
|
+
*/
|
|
2743
|
+
tracks: ProgressTrackTypeInfo;
|
|
2744
|
+
}
|
|
2745
|
+
/**
|
|
2746
|
+
* 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.
|
|
2747
|
+
*/
|
|
2748
|
+
export interface MoveProgressRollEnhancement {
|
|
2749
|
+
/**
|
|
2750
|
+
* 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.
|
|
2751
|
+
* @default null
|
|
2752
|
+
*/
|
|
2753
|
+
enhances: AnyMoveIdWildcard[] | null;
|
|
2754
|
+
/**
|
|
2755
|
+
* A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.
|
|
2756
|
+
*/
|
|
2757
|
+
roll_type: "progress_roll";
|
|
2758
|
+
trigger?: TriggerProgressRollEnhancement;
|
|
2759
|
+
}
|
|
2760
|
+
/**
|
|
2761
|
+
* - `no_roll`: A move that makes no action rolls or progress rolls.
|
|
2762
|
+
* - `action_roll`: A move that makes an action roll.
|
|
2763
|
+
* - `progress_roll`: A progress move that rolls on a standard progress track type (defined by this move).
|
|
2764
|
+
* - `special_track`: A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).
|
|
2765
|
+
*/
|
|
2766
|
+
export type MoveRollType = "no_roll" | "action_roll" | "progress_roll" | "special_track";
|
|
2767
|
+
/**
|
|
2768
|
+
* 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.
|
|
2769
|
+
*/
|
|
2770
|
+
export interface MoveSpecialTrack {
|
|
2771
|
+
/**
|
|
2772
|
+
* The unique Datasworn ID for this node.
|
|
2773
|
+
*/
|
|
2774
|
+
_id: MoveId;
|
|
2775
|
+
_comment?: Documentation;
|
|
2776
|
+
/**
|
|
2777
|
+
* The primary name/label for this node.
|
|
2778
|
+
*/
|
|
2779
|
+
name: Label;
|
|
2780
|
+
/**
|
|
2781
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2782
|
+
*/
|
|
2783
|
+
canonical_name?: Label;
|
|
2784
|
+
/**
|
|
2785
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2786
|
+
*/
|
|
2787
|
+
_source: SourceInfo;
|
|
2788
|
+
suggestions?: Suggestions;
|
|
2789
|
+
tags?: Tags;
|
|
2790
|
+
/**
|
|
2791
|
+
* Indicates that this move replaces the identified moves. References to the replaced moves can be considered equivalent to this move.
|
|
2792
|
+
*/
|
|
2793
|
+
replaces?: MoveIdWildcard[];
|
|
2794
|
+
/**
|
|
2795
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2796
|
+
*/
|
|
2797
|
+
color?: CssColor;
|
|
2798
|
+
images?: WebpImageUrl[];
|
|
2799
|
+
/**
|
|
2800
|
+
* An SVG icon associated with this collection.
|
|
2801
|
+
*/
|
|
2802
|
+
icon?: SvgImageUrl;
|
|
2803
|
+
/**
|
|
2804
|
+
* The complete rules text of the move.
|
|
2805
|
+
*/
|
|
2806
|
+
text: MarkdownString;
|
|
2807
|
+
/**
|
|
2808
|
+
* @remarks Deserialize as a dictionary object.
|
|
2809
|
+
* @default {}
|
|
2810
|
+
*/
|
|
2811
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
2812
|
+
/**
|
|
2813
|
+
* Trigger conditions for this move.
|
|
2814
|
+
*/
|
|
2815
|
+
trigger: TriggerSpecialTrack;
|
|
2816
|
+
/**
|
|
2817
|
+
* Is burning momentum allowed for this move?
|
|
2818
|
+
*/
|
|
2819
|
+
allow_momentum_burn: false;
|
|
2820
|
+
outcomes: MoveOutcomes;
|
|
2821
|
+
type: "move";
|
|
2822
|
+
roll_type: "special_track";
|
|
2823
|
+
}
|
|
2824
|
+
/**
|
|
2825
|
+
* 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.
|
|
2826
|
+
*/
|
|
2827
|
+
export interface MoveSpecialTrackEnhancement {
|
|
2828
|
+
/**
|
|
2829
|
+
* 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.
|
|
2830
|
+
* @default null
|
|
2831
|
+
*/
|
|
2832
|
+
enhances: AnyMoveIdWildcard[] | null;
|
|
2833
|
+
/**
|
|
2834
|
+
* A move must have this `roll_type` to receive this enhancement. This is in addition to any other restrictions made by other properties.
|
|
2835
|
+
*/
|
|
2836
|
+
roll_type: "special_track";
|
|
2837
|
+
trigger?: TriggerSpecialTrackEnhancement;
|
|
2838
|
+
}
|
|
2839
|
+
export type NonCollectableType = "delve_site" | "delve_site_domain" | "delve_site_theme" | "rarity" | "truth";
|
|
2840
|
+
/**
|
|
2841
|
+
* A non-player character entry, similar to those in Chapter 5 of the Ironsworn Rulebook, or Chapter 4 of Starforged.
|
|
2842
|
+
*/
|
|
2843
|
+
export interface Npc {
|
|
2844
|
+
/**
|
|
2845
|
+
* The unique Datasworn ID for this node.
|
|
2846
|
+
*/
|
|
2847
|
+
_id: NpcId;
|
|
2848
|
+
_comment?: Documentation;
|
|
2849
|
+
name: Label;
|
|
2850
|
+
/**
|
|
2851
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2852
|
+
*/
|
|
2853
|
+
canonical_name?: Label;
|
|
2854
|
+
/**
|
|
2855
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2856
|
+
*/
|
|
2857
|
+
_source: SourceInfo;
|
|
2858
|
+
suggestions?: Suggestions;
|
|
2859
|
+
tags?: Tags;
|
|
2860
|
+
/**
|
|
2861
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
2862
|
+
*/
|
|
2863
|
+
replaces?: NpcIdWildcard[];
|
|
2864
|
+
/**
|
|
2865
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2866
|
+
*/
|
|
2867
|
+
color?: CssColor;
|
|
2868
|
+
images?: WebpImageUrl[];
|
|
2869
|
+
/**
|
|
2870
|
+
* An SVG icon associated with this collection.
|
|
2871
|
+
*/
|
|
2872
|
+
icon?: SvgImageUrl;
|
|
2873
|
+
features: MarkdownString[];
|
|
2874
|
+
summary?: MarkdownString;
|
|
2875
|
+
description: MarkdownString;
|
|
2876
|
+
quest_starter?: MarkdownString;
|
|
2877
|
+
your_truth?: MarkdownString;
|
|
2878
|
+
/**
|
|
2879
|
+
* The suggested challenge rank for this NPC.
|
|
2880
|
+
*/
|
|
2881
|
+
rank: ChallengeRank;
|
|
2882
|
+
nature: NpcNature;
|
|
2883
|
+
drives: MarkdownString[];
|
|
2884
|
+
tactics: MarkdownString[];
|
|
2885
|
+
/**
|
|
2886
|
+
* @remarks Deserialize as a dictionary object.
|
|
2887
|
+
* @default {}
|
|
2888
|
+
*/
|
|
2889
|
+
variants: Record<DictKey, NpcVariant>;
|
|
2890
|
+
type: "npc";
|
|
2891
|
+
}
|
|
2892
|
+
export interface NpcCollection {
|
|
2893
|
+
/**
|
|
2894
|
+
* The unique Datasworn ID for this node.
|
|
2895
|
+
*/
|
|
2896
|
+
_id: NpcCollectionId;
|
|
2897
|
+
_comment?: Documentation;
|
|
2898
|
+
/**
|
|
2899
|
+
* The primary name/label for this node.
|
|
2900
|
+
*/
|
|
2901
|
+
name: Label;
|
|
2902
|
+
/**
|
|
2903
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
2904
|
+
*/
|
|
2905
|
+
canonical_name?: Label;
|
|
2906
|
+
/**
|
|
2907
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
2908
|
+
*/
|
|
2909
|
+
_source: SourceInfo;
|
|
2910
|
+
suggestions?: Suggestions;
|
|
2911
|
+
tags?: Tags;
|
|
2912
|
+
/**
|
|
2913
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
2914
|
+
*/
|
|
2915
|
+
replaces?: NpcCollectionIdWildcard[];
|
|
2916
|
+
/**
|
|
2917
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
2918
|
+
*/
|
|
2919
|
+
color?: CssColor;
|
|
2920
|
+
images?: WebpImageUrl[];
|
|
2921
|
+
/**
|
|
2922
|
+
* An SVG icon associated with this collection.
|
|
2923
|
+
*/
|
|
2924
|
+
icon?: SvgImageUrl;
|
|
2925
|
+
/**
|
|
2926
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
2927
|
+
*/
|
|
2928
|
+
enhances?: NpcCollectionIdWildcard[];
|
|
2929
|
+
/**
|
|
2930
|
+
* 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.
|
|
2931
|
+
*/
|
|
2932
|
+
summary?: MarkdownString;
|
|
2933
|
+
/**
|
|
2934
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
2935
|
+
*/
|
|
2936
|
+
description?: MarkdownString;
|
|
2937
|
+
/**
|
|
2938
|
+
* @remarks Deserialize as a dictionary object.
|
|
2939
|
+
* @default {}
|
|
2940
|
+
*/
|
|
2941
|
+
contents: Record<DictKey, Npc>;
|
|
2942
|
+
/**
|
|
2943
|
+
* @remarks Deserialize as a dictionary object.
|
|
2944
|
+
* @default {}
|
|
2945
|
+
*/
|
|
2946
|
+
collections: Record<DictKey, NpcCollection>;
|
|
2947
|
+
type: "npc_collection";
|
|
2948
|
+
}
|
|
2949
|
+
/**
|
|
2950
|
+
* A unique ID representing a NpcCollection object.
|
|
2951
|
+
* @pattern ```javascript
|
|
2952
|
+
* /^npc_collection:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){1,4})$/
|
|
2953
|
+
* ```
|
|
2954
|
+
*/
|
|
2955
|
+
export type NpcCollectionId = string;
|
|
2956
|
+
/**
|
|
2957
|
+
* A wildcarded NpcCollectionId that can be used to match multiple NpcCollection objects.
|
|
2958
|
+
* @pattern ```javascript
|
|
2959
|
+
* /^npc_collection:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){1,4})$/
|
|
2960
|
+
* ```
|
|
2961
|
+
*/
|
|
2962
|
+
export type NpcCollectionIdWildcard = string;
|
|
2963
|
+
/**
|
|
2964
|
+
* A unique ID representing a Npc object.
|
|
2965
|
+
* @pattern ```javascript
|
|
2966
|
+
* /^npc:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})$/
|
|
2967
|
+
* ```
|
|
2968
|
+
*/
|
|
2969
|
+
export type NpcId = string;
|
|
2970
|
+
/**
|
|
2971
|
+
* A wildcarded NpcId that can be used to match multiple Npc objects.
|
|
2972
|
+
* @pattern ```javascript
|
|
2973
|
+
* /^npc:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})$/
|
|
2974
|
+
* ```
|
|
2975
|
+
*/
|
|
2976
|
+
export type NpcIdWildcard = string;
|
|
2977
|
+
/**
|
|
2978
|
+
* A localized category label describing the nature of this NPC.
|
|
2979
|
+
*
|
|
2980
|
+
* In Ironsworn classic, this is probably the singular form of the parent collection's name.
|
|
2981
|
+
*
|
|
2982
|
+
* For Starforged, see the table on p. 258 for examples.
|
|
2983
|
+
* @example "Ironlander"
|
|
2984
|
+
* @example "Firstborn"
|
|
2985
|
+
* @example "Animal"
|
|
2986
|
+
* @example "Beast"
|
|
2987
|
+
* @example "Horror"
|
|
2988
|
+
* @example "Anomaly"
|
|
2989
|
+
* @example "Creature"
|
|
2990
|
+
* @example "Human"
|
|
2991
|
+
* @example "Machine"
|
|
2992
|
+
* @example "Monster"
|
|
2993
|
+
* @example "Vehicle"
|
|
2994
|
+
*/
|
|
2995
|
+
export type NpcNature = Label;
|
|
2996
|
+
export interface NpcVariant {
|
|
2997
|
+
/**
|
|
2998
|
+
* The unique Datasworn ID for this node.
|
|
2999
|
+
*/
|
|
3000
|
+
_id: NpcVariantId;
|
|
3001
|
+
_comment?: Documentation;
|
|
3002
|
+
name: Label;
|
|
3003
|
+
/**
|
|
3004
|
+
* The suggested challenge rank for this NPC.
|
|
3005
|
+
*/
|
|
3006
|
+
rank: ChallengeRank;
|
|
3007
|
+
nature: NpcNature;
|
|
3008
|
+
summary?: MarkdownString;
|
|
3009
|
+
description: MarkdownString;
|
|
3010
|
+
}
|
|
3011
|
+
/**
|
|
3012
|
+
* A unique ID representing a NpcVariant object.
|
|
3013
|
+
* @pattern ```javascript
|
|
3014
|
+
* /^npc\.variant:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
3015
|
+
* ```
|
|
3016
|
+
*/
|
|
3017
|
+
export type NpcVariantId = string;
|
|
3018
|
+
/**
|
|
3019
|
+
* A wildcarded NpcVariantId that can be used to match multiple NpcVariant objects.
|
|
3020
|
+
* @pattern ```javascript
|
|
3021
|
+
* /^npc\.variant:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.([a-z][a-z0-9_]*|\*)$/
|
|
3022
|
+
* ```
|
|
3023
|
+
*/
|
|
3024
|
+
export type NpcVariantIdWildcard = string;
|
|
3025
|
+
/**
|
|
3026
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.
|
|
3027
|
+
*/
|
|
3028
|
+
export type OracleCollection = OracleTablesCollection | OracleTableSharedRolls | OracleTableSharedText | OracleTableSharedText2 | OracleTableSharedText3;
|
|
3029
|
+
/**
|
|
3030
|
+
* A unique ID representing an OracleCollection object.
|
|
3031
|
+
* @pattern ```javascript
|
|
3032
|
+
* /^oracle_collection:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){1,4})$/
|
|
3033
|
+
* ```
|
|
3034
|
+
*/
|
|
3035
|
+
export type OracleCollectionId = string;
|
|
3036
|
+
/**
|
|
3037
|
+
* A wildcarded OracleCollectionId that can be used to match multiple OracleCollection objects.
|
|
3038
|
+
* @pattern ```javascript
|
|
3039
|
+
* /^oracle_collection:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){1,4})$/
|
|
3040
|
+
* ```
|
|
3041
|
+
*/
|
|
3042
|
+
export type OracleCollectionIdWildcard = string;
|
|
3043
|
+
/**
|
|
3044
|
+
* Represents a single column in an OracleCollection.
|
|
3045
|
+
*/
|
|
3046
|
+
export interface OracleColumnText {
|
|
3047
|
+
/**
|
|
3048
|
+
* The unique Datasworn ID for this node.
|
|
3049
|
+
*/
|
|
3050
|
+
_id: OracleRollableId;
|
|
3051
|
+
_comment?: Documentation;
|
|
3052
|
+
/**
|
|
3053
|
+
* The primary name/label for this node.
|
|
3054
|
+
*/
|
|
3055
|
+
name: Label;
|
|
3056
|
+
/**
|
|
3057
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3058
|
+
*/
|
|
3059
|
+
canonical_name?: Label;
|
|
3060
|
+
suggestions?: Suggestions;
|
|
3061
|
+
tags?: Tags;
|
|
3062
|
+
/**
|
|
3063
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3064
|
+
*/
|
|
3065
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3066
|
+
/**
|
|
3067
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3068
|
+
*/
|
|
3069
|
+
color?: CssColor;
|
|
3070
|
+
images?: WebpImageUrl[];
|
|
3071
|
+
/**
|
|
3072
|
+
* An SVG icon associated with this collection.
|
|
3073
|
+
*/
|
|
3074
|
+
icon?: SvgImageUrl;
|
|
3075
|
+
recommended_rolls?: {
|
|
3076
|
+
/**
|
|
3077
|
+
* @default 1
|
|
3078
|
+
*/
|
|
3079
|
+
min: number;
|
|
3080
|
+
/**
|
|
3081
|
+
* @default 1
|
|
3082
|
+
*/
|
|
3083
|
+
max: number;
|
|
3084
|
+
};
|
|
3085
|
+
/**
|
|
3086
|
+
* The roll used to select a result on this oracle.
|
|
3087
|
+
* @default "1d100"
|
|
3088
|
+
*/
|
|
3089
|
+
dice: DiceExpression;
|
|
3090
|
+
/**
|
|
3091
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3092
|
+
*/
|
|
3093
|
+
match?: OracleMatchBehavior;
|
|
3094
|
+
/**
|
|
3095
|
+
* An array of objects, each representing a single row of the table.
|
|
3096
|
+
*/
|
|
3097
|
+
rows: OracleRollableRowText[];
|
|
3098
|
+
type: "oracle_rollable";
|
|
3099
|
+
oracle_type: "column_text";
|
|
3100
|
+
}
|
|
3101
|
+
export interface OracleColumnText2 {
|
|
3102
|
+
/**
|
|
3103
|
+
* The unique Datasworn ID for this node.
|
|
3104
|
+
*/
|
|
3105
|
+
_id: OracleRollableId;
|
|
3106
|
+
_comment?: Documentation;
|
|
3107
|
+
/**
|
|
3108
|
+
* The primary name/label for this node.
|
|
3109
|
+
*/
|
|
3110
|
+
name: Label;
|
|
3111
|
+
/**
|
|
3112
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3113
|
+
*/
|
|
3114
|
+
canonical_name?: Label;
|
|
3115
|
+
suggestions?: Suggestions;
|
|
3116
|
+
tags?: Tags;
|
|
3117
|
+
/**
|
|
3118
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3119
|
+
*/
|
|
3120
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3121
|
+
/**
|
|
3122
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3123
|
+
*/
|
|
3124
|
+
color?: CssColor;
|
|
3125
|
+
images?: WebpImageUrl[];
|
|
3126
|
+
/**
|
|
3127
|
+
* An SVG icon associated with this collection.
|
|
3128
|
+
*/
|
|
3129
|
+
icon?: SvgImageUrl;
|
|
3130
|
+
recommended_rolls?: {
|
|
3131
|
+
/**
|
|
3132
|
+
* @default 1
|
|
3133
|
+
*/
|
|
3134
|
+
min: number;
|
|
3135
|
+
/**
|
|
3136
|
+
* @default 1
|
|
3137
|
+
*/
|
|
3138
|
+
max: number;
|
|
3139
|
+
};
|
|
3140
|
+
/**
|
|
3141
|
+
* The roll used to select a result on this oracle.
|
|
3142
|
+
* @default "1d100"
|
|
3143
|
+
*/
|
|
3144
|
+
dice: DiceExpression;
|
|
3145
|
+
/**
|
|
3146
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3147
|
+
*/
|
|
3148
|
+
match?: OracleMatchBehavior;
|
|
3149
|
+
/**
|
|
3150
|
+
* An array of objects, each representing a single row of the table.
|
|
3151
|
+
*/
|
|
3152
|
+
rows: Array<OracleRollableRowText2>;
|
|
3153
|
+
type: "oracle_rollable";
|
|
3154
|
+
oracle_type: "column_text2";
|
|
3155
|
+
}
|
|
3156
|
+
export interface OracleColumnText3 {
|
|
3157
|
+
/**
|
|
3158
|
+
* The unique Datasworn ID for this node.
|
|
3159
|
+
*/
|
|
3160
|
+
_id: OracleRollableId;
|
|
3161
|
+
_comment?: Documentation;
|
|
3162
|
+
/**
|
|
3163
|
+
* The primary name/label for this node.
|
|
3164
|
+
*/
|
|
3165
|
+
name: Label;
|
|
3166
|
+
/**
|
|
3167
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3168
|
+
*/
|
|
3169
|
+
canonical_name?: Label;
|
|
3170
|
+
suggestions?: Suggestions;
|
|
3171
|
+
tags?: Tags;
|
|
3172
|
+
/**
|
|
3173
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3174
|
+
*/
|
|
3175
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3176
|
+
/**
|
|
3177
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3178
|
+
*/
|
|
3179
|
+
color?: CssColor;
|
|
3180
|
+
images?: WebpImageUrl[];
|
|
3181
|
+
/**
|
|
3182
|
+
* An SVG icon associated with this collection.
|
|
3183
|
+
*/
|
|
3184
|
+
icon?: SvgImageUrl;
|
|
3185
|
+
recommended_rolls?: {
|
|
3186
|
+
/**
|
|
3187
|
+
* @default 1
|
|
3188
|
+
*/
|
|
3189
|
+
min: number;
|
|
3190
|
+
/**
|
|
3191
|
+
* @default 1
|
|
3192
|
+
*/
|
|
3193
|
+
max: number;
|
|
3194
|
+
};
|
|
3195
|
+
/**
|
|
3196
|
+
* The roll used to select a result on this oracle.
|
|
3197
|
+
* @default "1d100"
|
|
3198
|
+
*/
|
|
3199
|
+
dice: DiceExpression;
|
|
3200
|
+
/**
|
|
3201
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3202
|
+
*/
|
|
3203
|
+
match?: OracleMatchBehavior;
|
|
3204
|
+
/**
|
|
3205
|
+
* An array of objects, each representing a single row of the table.
|
|
3206
|
+
*/
|
|
3207
|
+
rows: Array<OracleRollableRowText3>;
|
|
3208
|
+
type: "oracle_rollable";
|
|
3209
|
+
oracle_type: "column_text3";
|
|
3210
|
+
}
|
|
3211
|
+
/**
|
|
3212
|
+
* Special roll instructions to use when rolling multiple times on a single oracle.
|
|
3213
|
+
*
|
|
3214
|
+
* - `reroll`: Duplicate results should be re-rolled.
|
|
3215
|
+
* - `keep`: Duplicates results should be kept.
|
|
3216
|
+
* - `make_it_worse`: Duplicate results should be kept, and they compound to make things worse.
|
|
3217
|
+
*/
|
|
3218
|
+
export type OracleDuplicateBehavior = "reroll" | "keep" | "make_it_worse";
|
|
3219
|
+
export interface OracleMatchBehavior {
|
|
3220
|
+
text: MarkdownString;
|
|
3221
|
+
}
|
|
3222
|
+
export interface OracleRoll {
|
|
3223
|
+
/**
|
|
3224
|
+
* The ID of the oracle to be rolled. A `null` value indicates that it's a roll on the same table.
|
|
3225
|
+
* @default null
|
|
3226
|
+
*/
|
|
3227
|
+
oracle: OracleRollableId | null;
|
|
3228
|
+
/**
|
|
3229
|
+
* 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".
|
|
3230
|
+
* @default false
|
|
3231
|
+
*/
|
|
3232
|
+
auto: boolean;
|
|
3233
|
+
/**
|
|
3234
|
+
* Special rules on how to handle duplicate results, when rolling multiple times.
|
|
3235
|
+
* @default "reroll"
|
|
3236
|
+
*/
|
|
3237
|
+
duplicates: OracleDuplicateBehavior;
|
|
3238
|
+
/**
|
|
3239
|
+
* The dice roll to make on the oracle table. Set it to `null` if you just want the table's default.
|
|
3240
|
+
* @default null
|
|
3241
|
+
*/
|
|
3242
|
+
dice: DiceExpression | null;
|
|
3243
|
+
/**
|
|
3244
|
+
* The number of times to roll.
|
|
3245
|
+
* @default 1
|
|
3246
|
+
* @minimum 1
|
|
3247
|
+
*/
|
|
3248
|
+
number_of_rolls: number;
|
|
3249
|
+
}
|
|
3250
|
+
/**
|
|
3251
|
+
* 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.
|
|
3252
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.
|
|
3253
|
+
*/
|
|
3254
|
+
export type OracleRollable = OracleTableText | OracleTableText2 | OracleTableText3 | OracleColumnText | OracleColumnText2 | OracleColumnText3;
|
|
3255
|
+
/**
|
|
3256
|
+
* A unique ID representing an OracleRollable object.
|
|
3257
|
+
* @pattern ```javascript
|
|
3258
|
+
* /^oracle_rollable:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})$/
|
|
3259
|
+
* ```
|
|
3260
|
+
*/
|
|
3261
|
+
export type OracleRollableId = string;
|
|
3262
|
+
/**
|
|
3263
|
+
* A wildcarded OracleRollableId that can be used to match multiple OracleRollable objects.
|
|
3264
|
+
* @pattern ```javascript
|
|
3265
|
+
* /^oracle_rollable:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})$/
|
|
3266
|
+
* ```
|
|
3267
|
+
*/
|
|
3268
|
+
export type OracleRollableIdWildcard = string;
|
|
3269
|
+
export type OracleRollableRow = OracleRollableRowText | OracleRollableRowText2 | OracleRollableRowText3;
|
|
3270
|
+
/**
|
|
3271
|
+
* A unique ID representing an OracleRollableRow object.
|
|
3272
|
+
* @pattern ```javascript
|
|
3273
|
+
* /^oracle_rollable\.row:([a-z][a-z0-9_]*(?:\/[a-z][a-z0-9_]*){2,5})\.(\d+)$/
|
|
3274
|
+
* ```
|
|
3275
|
+
*/
|
|
3276
|
+
export type OracleRollableRowId = string;
|
|
3277
|
+
/**
|
|
3278
|
+
* A wildcarded OracleRollableRowId that can be used to match multiple OracleRollableRow objects.
|
|
3279
|
+
* @pattern ```javascript
|
|
3280
|
+
* /^oracle_rollable\.row:((?:[a-z][a-z0-9_]*|\*)(?:\/(?:[a-z][a-z0-9_]*|\*|\*\*)){2,5})\.(\d+|\*)$/
|
|
3281
|
+
* ```
|
|
3282
|
+
*/
|
|
3283
|
+
export type OracleRollableRowIdWildcard = string;
|
|
3284
|
+
/**
|
|
3285
|
+
* Represents a row in an oracle table, with a single text cell.
|
|
3286
|
+
*/
|
|
3287
|
+
export interface OracleRollableRowText {
|
|
3288
|
+
/**
|
|
3289
|
+
* The primary text content of this row.
|
|
3290
|
+
*/
|
|
3291
|
+
text: MarkdownString;
|
|
3292
|
+
icon?: SvgImageUrl;
|
|
3293
|
+
/**
|
|
3294
|
+
* Further oracle rolls prompted by this table row.
|
|
3295
|
+
*/
|
|
3296
|
+
oracle_rolls?: OracleRoll[];
|
|
3297
|
+
suggestions?: Suggestions;
|
|
3298
|
+
/**
|
|
3299
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
3300
|
+
* @experimental
|
|
3301
|
+
*/
|
|
3302
|
+
embed_table?: OracleRollableId;
|
|
3303
|
+
/**
|
|
3304
|
+
* @experimental
|
|
3305
|
+
*/
|
|
3306
|
+
template?: OracleRollTemplate;
|
|
3307
|
+
/**
|
|
3308
|
+
* @experimental
|
|
3309
|
+
*/
|
|
3310
|
+
_i18n?: I18nHints;
|
|
3311
|
+
/**
|
|
3312
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
3313
|
+
* @default null
|
|
3314
|
+
*/
|
|
3315
|
+
roll: DiceRange | null;
|
|
3316
|
+
tags?: Tags;
|
|
3317
|
+
_id: AnyOracleRollableRowId;
|
|
3318
|
+
}
|
|
3319
|
+
/**
|
|
3320
|
+
* Represents a row in an oracle table that provides a secondary text field.
|
|
3321
|
+
*/
|
|
3322
|
+
export interface OracleRollableRowText2 {
|
|
3323
|
+
/**
|
|
3324
|
+
* The primary text content of this row.
|
|
3325
|
+
*/
|
|
3326
|
+
text: MarkdownString;
|
|
3327
|
+
icon?: SvgImageUrl;
|
|
3328
|
+
/**
|
|
3329
|
+
* Further oracle rolls prompted by this table row.
|
|
3330
|
+
*/
|
|
3331
|
+
oracle_rolls?: OracleRoll[];
|
|
3332
|
+
suggestions?: Suggestions;
|
|
3333
|
+
/**
|
|
3334
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
3335
|
+
* @experimental
|
|
3336
|
+
*/
|
|
3337
|
+
embed_table?: OracleRollableId;
|
|
3338
|
+
/**
|
|
3339
|
+
* @experimental
|
|
3340
|
+
*/
|
|
3341
|
+
template?: OracleRollTemplate;
|
|
3342
|
+
/**
|
|
3343
|
+
* @experimental
|
|
3344
|
+
*/
|
|
3345
|
+
_i18n?: I18nHints;
|
|
3346
|
+
/**
|
|
3347
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
3348
|
+
* @default null
|
|
3349
|
+
*/
|
|
3350
|
+
roll: DiceRange | null;
|
|
3351
|
+
tags?: Tags;
|
|
3352
|
+
_id: AnyOracleRollableRowId;
|
|
3353
|
+
/**
|
|
3354
|
+
* The secondary text for this row. Use `null` to represent a cell with a blank or empty vlue.
|
|
3355
|
+
*/
|
|
3356
|
+
text2: MarkdownString | null;
|
|
3357
|
+
}
|
|
3358
|
+
/**
|
|
3359
|
+
* Represents a row in an oracle table with 3 text cells.
|
|
3360
|
+
*/
|
|
3361
|
+
export interface OracleRollableRowText3 {
|
|
3362
|
+
/**
|
|
3363
|
+
* The primary text content of this row.
|
|
3364
|
+
*/
|
|
3365
|
+
text: MarkdownString;
|
|
3366
|
+
icon?: SvgImageUrl;
|
|
3367
|
+
/**
|
|
3368
|
+
* Further oracle rolls prompted by this table row.
|
|
3369
|
+
*/
|
|
3370
|
+
oracle_rolls?: OracleRoll[];
|
|
3371
|
+
suggestions?: Suggestions;
|
|
3372
|
+
/**
|
|
3373
|
+
* Hints that the identified table should be rendered inside this table row.
|
|
3374
|
+
* @experimental
|
|
3375
|
+
*/
|
|
3376
|
+
embed_table?: OracleRollableId;
|
|
3377
|
+
/**
|
|
3378
|
+
* @experimental
|
|
3379
|
+
*/
|
|
3380
|
+
template?: OracleRollTemplate;
|
|
3381
|
+
/**
|
|
3382
|
+
* @experimental
|
|
3383
|
+
*/
|
|
3384
|
+
_i18n?: I18nHints;
|
|
3385
|
+
/**
|
|
3386
|
+
* `null` represents an unrollable row, included only for rendering purposes.
|
|
3387
|
+
* @default null
|
|
3388
|
+
*/
|
|
3389
|
+
roll: DiceRange | null;
|
|
3390
|
+
tags?: Tags;
|
|
3391
|
+
_id: AnyOracleRollableRowId;
|
|
3392
|
+
/**
|
|
3393
|
+
* The secondary text for this row. Use `null` to represent a cell with a blank or empty value.
|
|
3394
|
+
*/
|
|
3395
|
+
text2: MarkdownString | null;
|
|
3396
|
+
/**
|
|
3397
|
+
* The tertiary text for this row. Use `null` to represent a cell with a blank or empty vlue.
|
|
3398
|
+
*/
|
|
3399
|
+
text3: MarkdownString | null;
|
|
3400
|
+
}
|
|
3401
|
+
/**
|
|
3402
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `oracle_type` property as a discriminator.
|
|
3403
|
+
*/
|
|
3404
|
+
export type OracleRollableTable = OracleTableText | OracleTableText2 | OracleTableText3;
|
|
3405
|
+
/**
|
|
3406
|
+
* Provides string templates that may be used in place of the static row text from `OracleRollableRow#text`, `OracleRollableRow#text2`, and `OracleRollableRow#text3`.
|
|
3407
|
+
*
|
|
3408
|
+
* These strings are formatted in Markdown, but use a special syntax for their placeholders: `{{text>some_oracle_rollable_id}}`. The placeholder should be replaced with the value of a rolled (or selected) `OracleRollableRow#text` from the target oracle rollable ID.
|
|
3409
|
+
* @experimental
|
|
3410
|
+
*/
|
|
3411
|
+
export interface OracleRollTemplate {
|
|
3412
|
+
/**
|
|
3413
|
+
* A string template that may be used in place of OracleRollableRow#text.
|
|
3414
|
+
* @example "{{text>oracle_rollable:starforged/faction/name/affiliation}} of the {{text>oracle_rollable:starforged/faction/name/legacy}} {{text>oracle_rollable:starforged/faction/name/identity}}"
|
|
3415
|
+
*/
|
|
3416
|
+
text?: MarkdownTemplateString;
|
|
3417
|
+
/**
|
|
3418
|
+
* A string template that may be used in place of OracleRollableRow#text2.
|
|
3419
|
+
*/
|
|
3420
|
+
text2?: MarkdownTemplateString;
|
|
3421
|
+
/**
|
|
3422
|
+
* A string template that may be used in place of OracleRollableRow#text3.
|
|
3423
|
+
*/
|
|
3424
|
+
text3?: MarkdownTemplateString;
|
|
3425
|
+
}
|
|
3426
|
+
/**
|
|
3427
|
+
* An OracleCollection that represents a category or grouping of tables, which may themselves be `OracleTablesCollection`s.
|
|
3428
|
+
*/
|
|
3429
|
+
export interface OracleTablesCollection {
|
|
3430
|
+
/**
|
|
3431
|
+
* The unique Datasworn ID for this node.
|
|
3432
|
+
*/
|
|
3433
|
+
_id: OracleCollectionId;
|
|
3434
|
+
_comment?: Documentation;
|
|
3435
|
+
/**
|
|
3436
|
+
* The primary name/label for this node.
|
|
3437
|
+
*/
|
|
3438
|
+
name: Label;
|
|
3439
|
+
/**
|
|
3440
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3441
|
+
*/
|
|
3442
|
+
canonical_name?: Label;
|
|
3443
|
+
/**
|
|
3444
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3445
|
+
*/
|
|
3446
|
+
_source: SourceInfo;
|
|
3447
|
+
suggestions?: Suggestions;
|
|
3448
|
+
tags?: Tags;
|
|
3449
|
+
/**
|
|
3450
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3451
|
+
*/
|
|
3452
|
+
replaces?: OracleCollectionIdWildcard[];
|
|
3453
|
+
/**
|
|
3454
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3455
|
+
*/
|
|
3456
|
+
color?: CssColor;
|
|
3457
|
+
images?: WebpImageUrl[];
|
|
3458
|
+
/**
|
|
3459
|
+
* An SVG icon associated with this collection.
|
|
3460
|
+
*/
|
|
3461
|
+
icon?: SvgImageUrl;
|
|
3462
|
+
/**
|
|
3463
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
3464
|
+
*/
|
|
3465
|
+
enhances?: OracleCollectionIdWildcard[];
|
|
3466
|
+
/**
|
|
3467
|
+
* 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.
|
|
3468
|
+
*/
|
|
3469
|
+
summary?: MarkdownString;
|
|
3470
|
+
/**
|
|
3471
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
3472
|
+
*/
|
|
3473
|
+
description?: MarkdownString;
|
|
3474
|
+
/**
|
|
3475
|
+
* @remarks Deserialize as a dictionary object.
|
|
3476
|
+
* @default {}
|
|
3477
|
+
*/
|
|
3478
|
+
contents: Record<DictKey, OracleRollableTable>;
|
|
3479
|
+
/**
|
|
3480
|
+
* @remarks Deserialize as a dictionary object.
|
|
3481
|
+
* @default {}
|
|
3482
|
+
*/
|
|
3483
|
+
collections: Record<DictKey, OracleCollection>;
|
|
3484
|
+
type: "oracle_collection";
|
|
3485
|
+
oracle_type: "tables";
|
|
3486
|
+
}
|
|
3487
|
+
/**
|
|
3488
|
+
* An OracleCollection representing a single table with one roll column and multiple text columns.
|
|
3489
|
+
*/
|
|
3490
|
+
export interface OracleTableSharedRolls {
|
|
3491
|
+
/**
|
|
3492
|
+
* The unique Datasworn ID for this node.
|
|
3493
|
+
*/
|
|
3494
|
+
_id: OracleCollectionId;
|
|
3495
|
+
_comment?: Documentation;
|
|
3496
|
+
/**
|
|
3497
|
+
* The primary name/label for this node.
|
|
3498
|
+
*/
|
|
3499
|
+
name: Label;
|
|
3500
|
+
/**
|
|
3501
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3502
|
+
*/
|
|
3503
|
+
canonical_name?: Label;
|
|
3504
|
+
/**
|
|
3505
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3506
|
+
*/
|
|
3507
|
+
_source: SourceInfo;
|
|
3508
|
+
suggestions?: Suggestions;
|
|
3509
|
+
tags?: Tags;
|
|
3510
|
+
/**
|
|
3511
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3512
|
+
*/
|
|
3513
|
+
replaces?: OracleCollectionIdWildcard[];
|
|
3514
|
+
/**
|
|
3515
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3516
|
+
*/
|
|
3517
|
+
color?: CssColor;
|
|
3518
|
+
images?: WebpImageUrl[];
|
|
3519
|
+
/**
|
|
3520
|
+
* An SVG icon associated with this collection.
|
|
3521
|
+
*/
|
|
3522
|
+
icon?: SvgImageUrl;
|
|
3523
|
+
/**
|
|
3524
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
3525
|
+
*/
|
|
3526
|
+
enhances?: OracleCollectionIdWildcard[];
|
|
3527
|
+
/**
|
|
3528
|
+
* 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.
|
|
3529
|
+
*/
|
|
3530
|
+
summary?: MarkdownString;
|
|
3531
|
+
/**
|
|
3532
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
3533
|
+
*/
|
|
3534
|
+
description?: MarkdownString;
|
|
3535
|
+
/**
|
|
3536
|
+
* @remarks Deserialize as a dictionary object.
|
|
3537
|
+
* @default {}
|
|
3538
|
+
*/
|
|
3539
|
+
contents: Record<DictKey, OracleColumnText>;
|
|
3540
|
+
/**
|
|
3541
|
+
* 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`.
|
|
3542
|
+
* @default
|
|
3543
|
+
* ```javascript
|
|
3544
|
+
* {
|
|
3545
|
+
* roll: "Roll"
|
|
3546
|
+
* }
|
|
3547
|
+
* ```
|
|
3548
|
+
*/
|
|
3549
|
+
column_labels: {
|
|
3550
|
+
roll: Label;
|
|
3551
|
+
};
|
|
3552
|
+
type: "oracle_collection";
|
|
3553
|
+
oracle_type: "table_shared_rolls";
|
|
3554
|
+
}
|
|
3555
|
+
/**
|
|
3556
|
+
* An OracleCollection representing a single table with multiple roll columns and one text column.
|
|
3557
|
+
*/
|
|
3558
|
+
export interface OracleTableSharedText {
|
|
3559
|
+
/**
|
|
3560
|
+
* The unique Datasworn ID for this node.
|
|
3561
|
+
*/
|
|
3562
|
+
_id: OracleCollectionId;
|
|
3563
|
+
_comment?: Documentation;
|
|
3564
|
+
/**
|
|
3565
|
+
* The primary name/label for this node.
|
|
3566
|
+
*/
|
|
3567
|
+
name: Label;
|
|
3568
|
+
/**
|
|
3569
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3570
|
+
*/
|
|
3571
|
+
canonical_name?: Label;
|
|
3572
|
+
/**
|
|
3573
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3574
|
+
*/
|
|
3575
|
+
_source: SourceInfo;
|
|
3576
|
+
suggestions?: Suggestions;
|
|
3577
|
+
tags?: Tags;
|
|
3578
|
+
/**
|
|
3579
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3580
|
+
*/
|
|
3581
|
+
replaces?: OracleCollectionIdWildcard[];
|
|
3582
|
+
/**
|
|
3583
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3584
|
+
*/
|
|
3585
|
+
color?: CssColor;
|
|
3586
|
+
images?: WebpImageUrl[];
|
|
3587
|
+
/**
|
|
3588
|
+
* An SVG icon associated with this collection.
|
|
3589
|
+
*/
|
|
3590
|
+
icon?: SvgImageUrl;
|
|
3591
|
+
/**
|
|
3592
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
3593
|
+
*/
|
|
3594
|
+
enhances?: OracleCollectionIdWildcard[];
|
|
3595
|
+
/**
|
|
3596
|
+
* 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.
|
|
3597
|
+
*/
|
|
3598
|
+
summary?: MarkdownString;
|
|
3599
|
+
/**
|
|
3600
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
3601
|
+
*/
|
|
3602
|
+
description?: MarkdownString;
|
|
3603
|
+
/**
|
|
3604
|
+
* @remarks Deserialize as a dictionary object.
|
|
3605
|
+
* @default {}
|
|
3606
|
+
*/
|
|
3607
|
+
contents: Record<DictKey, OracleColumnText>;
|
|
3608
|
+
/**
|
|
3609
|
+
* @default
|
|
3610
|
+
* ```javascript
|
|
3611
|
+
* {
|
|
3612
|
+
* text: "Result"
|
|
3613
|
+
* }
|
|
3614
|
+
* ```
|
|
3615
|
+
*/
|
|
3616
|
+
column_labels: {
|
|
3617
|
+
text: Label;
|
|
3618
|
+
};
|
|
3619
|
+
type: "oracle_collection";
|
|
3620
|
+
oracle_type: "table_shared_text";
|
|
3621
|
+
}
|
|
3622
|
+
/**
|
|
3623
|
+
* An OracleCollection representing a single table with multiple roll columns, and 2 shared text columns.
|
|
3624
|
+
*/
|
|
3625
|
+
export interface OracleTableSharedText2 {
|
|
3626
|
+
/**
|
|
3627
|
+
* The unique Datasworn ID for this node.
|
|
3628
|
+
*/
|
|
3629
|
+
_id: OracleCollectionId;
|
|
3630
|
+
_comment?: Documentation;
|
|
3631
|
+
/**
|
|
3632
|
+
* The primary name/label for this node.
|
|
3633
|
+
*/
|
|
3634
|
+
name: Label;
|
|
3635
|
+
/**
|
|
3636
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3637
|
+
*/
|
|
3638
|
+
canonical_name?: Label;
|
|
3639
|
+
/**
|
|
3640
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3641
|
+
*/
|
|
3642
|
+
_source: SourceInfo;
|
|
3643
|
+
suggestions?: Suggestions;
|
|
3644
|
+
tags?: Tags;
|
|
3645
|
+
/**
|
|
3646
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3647
|
+
*/
|
|
3648
|
+
replaces?: OracleCollectionIdWildcard[];
|
|
3649
|
+
/**
|
|
3650
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3651
|
+
*/
|
|
3652
|
+
color?: CssColor;
|
|
3653
|
+
images?: WebpImageUrl[];
|
|
3654
|
+
/**
|
|
3655
|
+
* An SVG icon associated with this collection.
|
|
3656
|
+
*/
|
|
3657
|
+
icon?: SvgImageUrl;
|
|
3658
|
+
/**
|
|
3659
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
3660
|
+
*/
|
|
3661
|
+
enhances?: OracleCollectionIdWildcard[];
|
|
3662
|
+
/**
|
|
3663
|
+
* 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.
|
|
3664
|
+
*/
|
|
3665
|
+
summary?: MarkdownString;
|
|
3666
|
+
/**
|
|
3667
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
3668
|
+
*/
|
|
3669
|
+
description?: MarkdownString;
|
|
3670
|
+
/**
|
|
3671
|
+
* @remarks Deserialize as a dictionary object.
|
|
3672
|
+
* @default {}
|
|
3673
|
+
*/
|
|
3674
|
+
contents: Record<DictKey, OracleColumnText2>;
|
|
3675
|
+
/**
|
|
3676
|
+
* @default
|
|
3677
|
+
* ```javascript
|
|
3678
|
+
* {
|
|
3679
|
+
* text: "Result",
|
|
3680
|
+
* text2: "Details"
|
|
3681
|
+
* }
|
|
3682
|
+
* ```
|
|
3683
|
+
*/
|
|
3684
|
+
column_labels: {
|
|
3685
|
+
text: Label;
|
|
3686
|
+
text2: Label;
|
|
3687
|
+
};
|
|
3688
|
+
type: "oracle_collection";
|
|
3689
|
+
oracle_type: "table_shared_text2";
|
|
3690
|
+
}
|
|
3691
|
+
/**
|
|
3692
|
+
* An OracleCollection representing a single table with multiple roll columns, and 3 shared text columns.
|
|
3693
|
+
*/
|
|
3694
|
+
export interface OracleTableSharedText3 {
|
|
3695
|
+
/**
|
|
3696
|
+
* The unique Datasworn ID for this node.
|
|
3697
|
+
*/
|
|
3698
|
+
_id: OracleCollectionId;
|
|
3699
|
+
_comment?: Documentation;
|
|
3700
|
+
/**
|
|
3701
|
+
* The primary name/label for this node.
|
|
3702
|
+
*/
|
|
3703
|
+
name: Label;
|
|
3704
|
+
/**
|
|
3705
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3706
|
+
*/
|
|
3707
|
+
canonical_name?: Label;
|
|
3708
|
+
/**
|
|
3709
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3710
|
+
*/
|
|
3711
|
+
_source: SourceInfo;
|
|
3712
|
+
suggestions?: Suggestions;
|
|
3713
|
+
tags?: Tags;
|
|
3714
|
+
/**
|
|
3715
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3716
|
+
*/
|
|
3717
|
+
replaces?: OracleCollectionIdWildcard[];
|
|
3718
|
+
/**
|
|
3719
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3720
|
+
*/
|
|
3721
|
+
color?: CssColor;
|
|
3722
|
+
images?: WebpImageUrl[];
|
|
3723
|
+
/**
|
|
3724
|
+
* An SVG icon associated with this collection.
|
|
3725
|
+
*/
|
|
3726
|
+
icon?: SvgImageUrl;
|
|
3727
|
+
/**
|
|
3728
|
+
* This node's content enhances all nodes that match these wildcards, rather than being a standalone item of its own.
|
|
3729
|
+
*/
|
|
3730
|
+
enhances?: OracleCollectionIdWildcard[];
|
|
3731
|
+
/**
|
|
3732
|
+
* 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.
|
|
3733
|
+
*/
|
|
3734
|
+
summary?: MarkdownString;
|
|
3735
|
+
/**
|
|
3736
|
+
* A longer description of this collection, which might include multiple paragraphs. If it's only a couple sentences, use the `summary` key instead.
|
|
3737
|
+
*/
|
|
3738
|
+
description?: MarkdownString;
|
|
3739
|
+
/**
|
|
3740
|
+
* @remarks Deserialize as a dictionary object.
|
|
3741
|
+
* @default {}
|
|
3742
|
+
*/
|
|
3743
|
+
contents: Record<DictKey, OracleColumnText3>;
|
|
3744
|
+
/**
|
|
3745
|
+
* @default {}
|
|
3746
|
+
*/
|
|
3747
|
+
column_labels: {
|
|
3748
|
+
text: Label;
|
|
3749
|
+
text2: Label;
|
|
3750
|
+
text3: Label;
|
|
3751
|
+
};
|
|
3752
|
+
type: "oracle_collection";
|
|
3753
|
+
oracle_type: "table_shared_text3";
|
|
3754
|
+
}
|
|
3755
|
+
/**
|
|
3756
|
+
* Represents a basic rollable oracle table with one roll column and one text result column.
|
|
3757
|
+
*/
|
|
3758
|
+
export interface OracleTableText {
|
|
3759
|
+
/**
|
|
3760
|
+
* The unique Datasworn ID for this node.
|
|
3761
|
+
*/
|
|
3762
|
+
_id: OracleRollableId;
|
|
3763
|
+
_comment?: Documentation;
|
|
3764
|
+
/**
|
|
3765
|
+
* The primary name/label for this node.
|
|
3766
|
+
*/
|
|
3767
|
+
name: Label;
|
|
3768
|
+
/**
|
|
3769
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3770
|
+
*/
|
|
3771
|
+
canonical_name?: Label;
|
|
3772
|
+
/**
|
|
3773
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3774
|
+
*/
|
|
3775
|
+
_source: SourceInfo;
|
|
3776
|
+
suggestions?: Suggestions;
|
|
3777
|
+
tags?: Tags;
|
|
3778
|
+
/**
|
|
3779
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3780
|
+
*/
|
|
3781
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3782
|
+
/**
|
|
3783
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3784
|
+
*/
|
|
3785
|
+
color?: CssColor;
|
|
3786
|
+
images?: WebpImageUrl[];
|
|
3787
|
+
/**
|
|
3788
|
+
* An SVG icon associated with this collection.
|
|
3789
|
+
*/
|
|
3790
|
+
icon?: SvgImageUrl;
|
|
3791
|
+
recommended_rolls?: {
|
|
3792
|
+
/**
|
|
3793
|
+
* @default 1
|
|
3794
|
+
*/
|
|
3795
|
+
min: number;
|
|
3796
|
+
/**
|
|
3797
|
+
* @default 1
|
|
3798
|
+
*/
|
|
3799
|
+
max: number;
|
|
3800
|
+
};
|
|
3801
|
+
/**
|
|
3802
|
+
* The roll used to select a result on this oracle.
|
|
3803
|
+
* @default "1d100"
|
|
3804
|
+
*/
|
|
3805
|
+
dice: DiceExpression;
|
|
3806
|
+
/**
|
|
3807
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3808
|
+
*/
|
|
3809
|
+
match?: OracleMatchBehavior;
|
|
3810
|
+
/**
|
|
3811
|
+
* An array of objects, each representing a single row of the table.
|
|
3812
|
+
*/
|
|
3813
|
+
rows: OracleRollableRowText[];
|
|
3814
|
+
/**
|
|
3815
|
+
* @default
|
|
3816
|
+
* ```javascript
|
|
3817
|
+
* {
|
|
3818
|
+
* roll: "Roll",
|
|
3819
|
+
* text: "Result"
|
|
3820
|
+
* }
|
|
3821
|
+
* ```
|
|
3822
|
+
*/
|
|
3823
|
+
column_labels: {
|
|
3824
|
+
roll: Label;
|
|
3825
|
+
text: Label;
|
|
3826
|
+
};
|
|
3827
|
+
type: "oracle_rollable";
|
|
3828
|
+
oracle_type: "table_text";
|
|
3829
|
+
}
|
|
3830
|
+
/**
|
|
3831
|
+
* A rollable oracle table with one roll column and two text columns.
|
|
3832
|
+
*/
|
|
3833
|
+
export interface OracleTableText2 {
|
|
3834
|
+
/**
|
|
3835
|
+
* The unique Datasworn ID for this node.
|
|
3836
|
+
*/
|
|
3837
|
+
_id: OracleRollableId;
|
|
3838
|
+
_comment?: Documentation;
|
|
3839
|
+
/**
|
|
3840
|
+
* The primary name/label for this node.
|
|
3841
|
+
*/
|
|
3842
|
+
name: Label;
|
|
3843
|
+
/**
|
|
3844
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3845
|
+
*/
|
|
3846
|
+
canonical_name?: Label;
|
|
3847
|
+
/**
|
|
3848
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3849
|
+
*/
|
|
3850
|
+
_source: SourceInfo;
|
|
3851
|
+
suggestions?: Suggestions;
|
|
3852
|
+
tags?: Tags;
|
|
3853
|
+
/**
|
|
3854
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3855
|
+
*/
|
|
3856
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3857
|
+
/**
|
|
3858
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3859
|
+
*/
|
|
3860
|
+
color?: CssColor;
|
|
3861
|
+
images?: WebpImageUrl[];
|
|
3862
|
+
/**
|
|
3863
|
+
* An SVG icon associated with this collection.
|
|
3864
|
+
*/
|
|
3865
|
+
icon?: SvgImageUrl;
|
|
3866
|
+
recommended_rolls?: {
|
|
3867
|
+
/**
|
|
3868
|
+
* @default 1
|
|
3869
|
+
*/
|
|
3870
|
+
min: number;
|
|
3871
|
+
/**
|
|
3872
|
+
* @default 1
|
|
3873
|
+
*/
|
|
3874
|
+
max: number;
|
|
3875
|
+
};
|
|
3876
|
+
/**
|
|
3877
|
+
* The roll used to select a result on this oracle.
|
|
3878
|
+
* @default "1d100"
|
|
3879
|
+
*/
|
|
3880
|
+
dice: DiceExpression;
|
|
3881
|
+
/**
|
|
3882
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3883
|
+
*/
|
|
3884
|
+
match?: OracleMatchBehavior;
|
|
3885
|
+
/**
|
|
3886
|
+
* An array of objects, each representing a single row of the table.
|
|
3887
|
+
*/
|
|
3888
|
+
rows: Array<OracleRollableRowText2>;
|
|
3889
|
+
/**
|
|
3890
|
+
* @default
|
|
3891
|
+
* ```javascript
|
|
3892
|
+
* {
|
|
3893
|
+
* roll: "Roll",
|
|
3894
|
+
* text: "Result",
|
|
3895
|
+
* text2: "Details"
|
|
3896
|
+
* }
|
|
3897
|
+
* ```
|
|
3898
|
+
*/
|
|
3899
|
+
column_labels: {
|
|
3900
|
+
roll: Label;
|
|
3901
|
+
text: Label;
|
|
3902
|
+
text2: Label;
|
|
3903
|
+
};
|
|
3904
|
+
type: "oracle_rollable";
|
|
3905
|
+
oracle_type: "table_text2";
|
|
3906
|
+
}
|
|
3907
|
+
/**
|
|
3908
|
+
* A rollable oracle table with one roll column and 3 text columns.
|
|
3909
|
+
*/
|
|
3910
|
+
export interface OracleTableText3 {
|
|
3911
|
+
/**
|
|
3912
|
+
* The unique Datasworn ID for this node.
|
|
3913
|
+
*/
|
|
3914
|
+
_id: OracleRollableId;
|
|
3915
|
+
_comment?: Documentation;
|
|
3916
|
+
/**
|
|
3917
|
+
* The primary name/label for this node.
|
|
3918
|
+
*/
|
|
3919
|
+
name: Label;
|
|
3920
|
+
/**
|
|
3921
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
3922
|
+
*/
|
|
3923
|
+
canonical_name?: Label;
|
|
3924
|
+
/**
|
|
3925
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
3926
|
+
*/
|
|
3927
|
+
_source: SourceInfo;
|
|
3928
|
+
suggestions?: Suggestions;
|
|
3929
|
+
tags?: Tags;
|
|
3930
|
+
/**
|
|
3931
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
3932
|
+
*/
|
|
3933
|
+
replaces?: OracleRollableIdWildcard[];
|
|
3934
|
+
/**
|
|
3935
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
3936
|
+
*/
|
|
3937
|
+
color?: CssColor;
|
|
3938
|
+
images?: WebpImageUrl[];
|
|
3939
|
+
/**
|
|
3940
|
+
* An SVG icon associated with this collection.
|
|
3941
|
+
*/
|
|
3942
|
+
icon?: SvgImageUrl;
|
|
3943
|
+
recommended_rolls?: {
|
|
3944
|
+
/**
|
|
3945
|
+
* @default 1
|
|
3946
|
+
*/
|
|
3947
|
+
min: number;
|
|
3948
|
+
/**
|
|
3949
|
+
* @default 1
|
|
3950
|
+
*/
|
|
3951
|
+
max: number;
|
|
3952
|
+
};
|
|
3953
|
+
/**
|
|
3954
|
+
* The roll used to select a result on this oracle.
|
|
3955
|
+
* @default "1d100"
|
|
3956
|
+
*/
|
|
3957
|
+
dice: DiceExpression;
|
|
3958
|
+
/**
|
|
3959
|
+
* Most oracle tables are insensitive to matches, but a few define special match behavior.
|
|
3960
|
+
*/
|
|
3961
|
+
match?: OracleMatchBehavior;
|
|
3962
|
+
/**
|
|
3963
|
+
* An array of objects, each representing a single row of the table.
|
|
3964
|
+
*/
|
|
3965
|
+
rows: Array<OracleRollableRowText3>;
|
|
3966
|
+
column_labels: {
|
|
3967
|
+
roll: Label;
|
|
3968
|
+
text: Label;
|
|
3969
|
+
text2: Label;
|
|
3970
|
+
text3: Label;
|
|
3971
|
+
};
|
|
3972
|
+
type: "oracle_rollable";
|
|
3973
|
+
oracle_type: "table_text3";
|
|
3974
|
+
}
|
|
3975
|
+
/**
|
|
3976
|
+
* Represents a page number in a book.
|
|
3977
|
+
* @minimum 1
|
|
3978
|
+
*/
|
|
3979
|
+
export type PageNumber = number;
|
|
3980
|
+
/**
|
|
3981
|
+
* - `common_noun`: A common noun.
|
|
3982
|
+
* - `proper_noun`: A proper noun.
|
|
3983
|
+
* - `adjunct_common_noun`: A common noun used as an adjective, to modify another noun.
|
|
3984
|
+
* - `adjunct_proper_noun`: A proper noun used as an adjective, to modify another noun.
|
|
3985
|
+
* - `verb`: A verb in present tense
|
|
3986
|
+
* - `gerund`: Gerund or present participle of a verb, e.g. "going", "seeing", "waving". Can function as a noun, an adjective, or a progressive verb.
|
|
3987
|
+
* - `adjective`: An adjective.
|
|
3988
|
+
* - `attributive_verb`: A verb used as an adjective, to modify a noun.
|
|
3989
|
+
* - `adjective_as_proper_noun`: An adjective used as a proper noun.
|
|
3990
|
+
* - `common_noun_as_proper_noun`: An common noun used as a proper noun.
|
|
3991
|
+
* @experimental
|
|
3992
|
+
*/
|
|
3993
|
+
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";
|
|
3994
|
+
/**
|
|
3995
|
+
* - `miss`: An automatic miss.
|
|
3996
|
+
* - `weak_hit`: An automatic weak hit.
|
|
3997
|
+
* - `strong_hit`: An automatic strong hit.
|
|
3998
|
+
* - `progress_roll`: Make a progress roll on a progress track associated with this move.
|
|
3999
|
+
*/
|
|
4000
|
+
export type ProgressRollMethod = "miss" | "weak_hit" | "strong_hit" | "progress_roll";
|
|
4001
|
+
export interface ProgressRollOption {
|
|
4002
|
+
using: "progress_track";
|
|
4003
|
+
}
|
|
4004
|
+
/**
|
|
4005
|
+
* Describes the features of a type of progress track.
|
|
4006
|
+
*/
|
|
4007
|
+
export interface ProgressTrackTypeInfo {
|
|
4008
|
+
/**
|
|
4009
|
+
* A category label for progress tracks of this type.
|
|
4010
|
+
* @example "Vow"
|
|
4011
|
+
* @example "Journey"
|
|
4012
|
+
* @example "Combat"
|
|
4013
|
+
* @example "Scene Challenge"
|
|
4014
|
+
* @example "Expedition"
|
|
4015
|
+
* @example "Connection"
|
|
4016
|
+
* @example "Delve"
|
|
4017
|
+
*/
|
|
4018
|
+
category: Label;
|
|
4019
|
+
/**
|
|
4020
|
+
* @remarks Deserialize as a dictionary object.
|
|
4021
|
+
* @default {}
|
|
4022
|
+
*/
|
|
4023
|
+
controls?: Record<DictKey, {}>;
|
|
4024
|
+
}
|
|
4025
|
+
/**
|
|
4026
|
+
* A rarity, as described in Ironsworn: Delve.
|
|
4027
|
+
*/
|
|
4028
|
+
export interface Rarity {
|
|
4029
|
+
/**
|
|
4030
|
+
* The unique Datasworn ID for this node.
|
|
4031
|
+
*/
|
|
4032
|
+
_id: RarityId;
|
|
4033
|
+
_comment?: Documentation;
|
|
4034
|
+
/**
|
|
4035
|
+
* The primary name/label for this node.
|
|
4036
|
+
*/
|
|
4037
|
+
name: Label;
|
|
4038
|
+
/**
|
|
4039
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
4040
|
+
*/
|
|
4041
|
+
canonical_name?: Label;
|
|
4042
|
+
/**
|
|
4043
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
4044
|
+
*/
|
|
4045
|
+
_source: SourceInfo;
|
|
4046
|
+
suggestions?: Suggestions;
|
|
4047
|
+
tags?: Tags;
|
|
4048
|
+
/**
|
|
4049
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
4050
|
+
*/
|
|
4051
|
+
replaces?: RarityIdWildcard[];
|
|
4052
|
+
/**
|
|
4053
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
4054
|
+
*/
|
|
4055
|
+
color?: CssColor;
|
|
4056
|
+
images?: WebpImageUrl[];
|
|
4057
|
+
/**
|
|
4058
|
+
* An SVG icon associated with this collection.
|
|
4059
|
+
*/
|
|
4060
|
+
icon?: SvgImageUrl;
|
|
4061
|
+
/**
|
|
4062
|
+
* The asset augmented by this rarity.
|
|
4063
|
+
*/
|
|
4064
|
+
asset: AssetId;
|
|
4065
|
+
/**
|
|
4066
|
+
* A description of this rarity.
|
|
4067
|
+
*/
|
|
4068
|
+
description: MarkdownString;
|
|
4069
|
+
/**
|
|
4070
|
+
* From Ironsworn: Delve, p. 174:
|
|
4071
|
+
*
|
|
4072
|
+
* 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.
|
|
4073
|
+
*
|
|
4074
|
+
* 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.
|
|
4075
|
+
* @default 3
|
|
4076
|
+
* @minimum 3
|
|
4077
|
+
* @maximum 5
|
|
4078
|
+
*/
|
|
4079
|
+
xp_cost: number;
|
|
4080
|
+
type: "rarity";
|
|
4081
|
+
}
|
|
4082
|
+
/**
|
|
4083
|
+
* A unique ID representing a Rarity object.
|
|
4084
|
+
* @pattern ```javascript
|
|
4085
|
+
* /^rarity:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)$/
|
|
4086
|
+
* ```
|
|
4087
|
+
*/
|
|
4088
|
+
export type RarityId = string;
|
|
4089
|
+
/**
|
|
4090
|
+
* A wildcarded RarityId that can be used to match multiple Rarity objects.
|
|
4091
|
+
* @pattern ```javascript
|
|
4092
|
+
* /^rarity:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)$/
|
|
4093
|
+
* ```
|
|
4094
|
+
*/
|
|
4095
|
+
export type RarityIdWildcard = string;
|
|
4096
|
+
/**
|
|
4097
|
+
* 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.
|
|
4098
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator.
|
|
4099
|
+
*/
|
|
4100
|
+
export type RollableValue = StatValueRef | ConditionMeterValueRef | AssetControlValueRef | AssetOptionValueRef | AttachedAssetControlValueRef | AttachedAssetOptionValueRef | CustomValue;
|
|
4101
|
+
/**
|
|
4102
|
+
* Describes rules for player characters in this ruleset, such as stats and condition meters.
|
|
4103
|
+
* @experimental
|
|
4104
|
+
*/
|
|
4105
|
+
export interface Rules {
|
|
4106
|
+
/**
|
|
4107
|
+
* Describes the standard stats used by player characters in this ruleset.
|
|
4108
|
+
* @remarks Deserialize as a dictionary object.
|
|
4109
|
+
* @default {}
|
|
4110
|
+
*/
|
|
4111
|
+
stats: Record<DictKey, StatRule>;
|
|
4112
|
+
/**
|
|
4113
|
+
* Describes the standard condition meters used by player characters in this ruleset.
|
|
4114
|
+
* @remarks Deserialize as a dictionary object.
|
|
4115
|
+
* @default {}
|
|
4116
|
+
*/
|
|
4117
|
+
condition_meters: Record<DictKey, ConditionMeterRule>;
|
|
4118
|
+
/**
|
|
4119
|
+
* Describes the standard impacts/debilities used by player characters in this ruleset.
|
|
4120
|
+
* @remarks Deserialize as a dictionary object.
|
|
4121
|
+
* @default {}
|
|
4122
|
+
*/
|
|
4123
|
+
impacts: Record<DictKey, ImpactCategory>;
|
|
4124
|
+
/**
|
|
4125
|
+
* Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).
|
|
4126
|
+
* @remarks Deserialize as a dictionary object.
|
|
4127
|
+
* @default {}
|
|
4128
|
+
*/
|
|
4129
|
+
special_tracks: Record<DictKey, SpecialTrackRule>;
|
|
4130
|
+
/**
|
|
4131
|
+
* @remarks Deserialize as a dictionary object.
|
|
4132
|
+
* @default {}
|
|
4133
|
+
* @experimental
|
|
4134
|
+
*/
|
|
4135
|
+
tags: Record<DictKey, TagRule>;
|
|
4136
|
+
}
|
|
4137
|
+
/**
|
|
4138
|
+
* A standalone Datasworn package that describes its own ruleset.
|
|
4139
|
+
*/
|
|
4140
|
+
export interface Ruleset {
|
|
4141
|
+
_id: RulesetId;
|
|
4142
|
+
type: "ruleset";
|
|
4143
|
+
/**
|
|
4144
|
+
* The version of the Datasworn format used by this data.
|
|
4145
|
+
* @pattern ```javascript
|
|
4146
|
+
* /^(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-]+)*))?$/
|
|
4147
|
+
* ```
|
|
4148
|
+
*/
|
|
4149
|
+
datasworn_version: "0.1.0";
|
|
4150
|
+
description?: MarkdownString;
|
|
4151
|
+
/**
|
|
4152
|
+
* The title of the source document.
|
|
4153
|
+
* @example "Ironsworn Rulebook"
|
|
4154
|
+
* @example "Ironsworn Assets Master Set"
|
|
4155
|
+
* @example "Ironsworn: Delve"
|
|
4156
|
+
* @example "Ironsworn: Starforged Rulebook"
|
|
4157
|
+
* @example "Ironsworn: Starforged Assets"
|
|
4158
|
+
* @example "Sundered Isles"
|
|
4159
|
+
*/
|
|
4160
|
+
title: Label;
|
|
4161
|
+
/**
|
|
4162
|
+
* Lists authors credited by the source material.
|
|
4163
|
+
*/
|
|
4164
|
+
authors: AuthorInfo[];
|
|
4165
|
+
/**
|
|
4166
|
+
* 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.
|
|
4167
|
+
* @remarks You may prefer to deserialize this as a Date object.
|
|
4168
|
+
* @pattern ```javascript
|
|
4169
|
+
* /[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))/
|
|
4170
|
+
* ```
|
|
4171
|
+
*/
|
|
4172
|
+
date: string;
|
|
4173
|
+
/**
|
|
4174
|
+
* A URL where the source document is available.
|
|
4175
|
+
* @example "https://ironswornrpg.com"
|
|
4176
|
+
*/
|
|
4177
|
+
url: WebUrl;
|
|
4178
|
+
/**
|
|
4179
|
+
* An URL pointing to the location where this content's license can be found.
|
|
4180
|
+
*
|
|
4181
|
+
* A `null` here indicates that the content provides __no__ license, and is not intended for redistribution.
|
|
4182
|
+
* @example "https://creativecommons.org/licenses/by/4.0"
|
|
4183
|
+
* @example "https://creativecommons.org/licenses/by-nc-sa/4.0"
|
|
4184
|
+
*/
|
|
4185
|
+
license: WebUrl | null;
|
|
4186
|
+
/**
|
|
4187
|
+
* A dictionary object containing oracle collections, which may contain oracle tables and/or oracle collections.
|
|
4188
|
+
* @remarks Deserialize as a dictionary object.
|
|
4189
|
+
* @default {}
|
|
4190
|
+
*/
|
|
4191
|
+
oracles: Record<DictKey, OracleTablesCollection>;
|
|
4192
|
+
/**
|
|
4193
|
+
* A dictionary object containing move categories, which contain moves.
|
|
4194
|
+
* @remarks Deserialize as a dictionary object.
|
|
4195
|
+
* @default {}
|
|
4196
|
+
*/
|
|
4197
|
+
moves: Record<DictKey, MoveCategory>;
|
|
4198
|
+
/**
|
|
4199
|
+
* A dictionary object containing asset collections, which contain assets.
|
|
4200
|
+
* @remarks Deserialize as a dictionary object.
|
|
4201
|
+
* @default {}
|
|
4202
|
+
*/
|
|
4203
|
+
assets: Record<DictKey, AssetCollection>;
|
|
4204
|
+
/**
|
|
4205
|
+
* A dictionary object containing atlas collections, which contain atlas entries.
|
|
4206
|
+
* @remarks Deserialize as a dictionary object.
|
|
4207
|
+
* @default {}
|
|
4208
|
+
*/
|
|
4209
|
+
atlas?: Record<DictKey, AtlasCollection>;
|
|
4210
|
+
/**
|
|
4211
|
+
* A dictionary object containing NPC collections, which contain NPCs.
|
|
4212
|
+
* @remarks Deserialize as a dictionary object.
|
|
4213
|
+
* @default {}
|
|
4214
|
+
*/
|
|
4215
|
+
npcs?: Record<DictKey, NpcCollection>;
|
|
4216
|
+
/**
|
|
4217
|
+
* A dictionary object of truth categories.
|
|
4218
|
+
* @remarks Deserialize as a dictionary object.
|
|
4219
|
+
* @default {}
|
|
4220
|
+
*/
|
|
4221
|
+
truths?: Record<DictKey, Truth>;
|
|
4222
|
+
/**
|
|
4223
|
+
* A dictionary object containing rarities, like those presented in Ironsworn: Delve.
|
|
4224
|
+
* @remarks Deserialize as a dictionary object.
|
|
4225
|
+
* @default {}
|
|
4226
|
+
*/
|
|
4227
|
+
rarities?: Record<DictKey, Rarity>;
|
|
4228
|
+
/**
|
|
4229
|
+
* A dictionary object of delve sites, like the premade delve sites presented in Ironsworn: Delve
|
|
4230
|
+
* @remarks Deserialize as a dictionary object.
|
|
4231
|
+
* @default {}
|
|
4232
|
+
*/
|
|
4233
|
+
delve_sites?: Record<DictKey, DelveSite>;
|
|
4234
|
+
/**
|
|
4235
|
+
* A dictionary object containing delve site themes.
|
|
4236
|
+
* @remarks Deserialize as a dictionary object.
|
|
4237
|
+
* @default {}
|
|
4238
|
+
*/
|
|
4239
|
+
site_themes?: Record<DictKey, DelveSiteTheme>;
|
|
4240
|
+
/**
|
|
4241
|
+
* A dictionary object containing delve site domains.
|
|
4242
|
+
* @remarks Deserialize as a dictionary object.
|
|
4243
|
+
* @default {}
|
|
4244
|
+
*/
|
|
4245
|
+
site_domains?: Record<DictKey, DelveSiteDomain>;
|
|
4246
|
+
rules: Rules;
|
|
4247
|
+
}
|
|
4248
|
+
/**
|
|
4249
|
+
* The ID of standalone Datasworn package that describes its own ruleset.
|
|
4250
|
+
* @pattern ```javascript
|
|
4251
|
+
* /^[a-z][a-z0-9_]*$/
|
|
4252
|
+
* ```
|
|
4253
|
+
* @example "classic"
|
|
4254
|
+
* @example "starforged"
|
|
4255
|
+
*/
|
|
4256
|
+
export type RulesetId = string;
|
|
4257
|
+
/**
|
|
4258
|
+
* Describes rules for player characters in this ruleset, such as stats and condition meters.
|
|
4259
|
+
* @experimental
|
|
4260
|
+
*/
|
|
4261
|
+
export interface RulesExpansion {
|
|
4262
|
+
/**
|
|
4263
|
+
* Describes the standard stats used by player characters in this ruleset.
|
|
4264
|
+
* @remarks Deserialize as a dictionary object.
|
|
4265
|
+
* @default {}
|
|
4266
|
+
*/
|
|
4267
|
+
stats?: Record<DictKey, StatRule>;
|
|
4268
|
+
/**
|
|
4269
|
+
* Describes the standard condition meters used by player characters in this ruleset.
|
|
4270
|
+
* @remarks Deserialize as a dictionary object.
|
|
4271
|
+
* @default {}
|
|
4272
|
+
*/
|
|
4273
|
+
condition_meters?: Record<DictKey, ConditionMeterRule>;
|
|
4274
|
+
/**
|
|
4275
|
+
* Describes the standard impacts/debilities used by player characters in this ruleset.
|
|
4276
|
+
* @remarks Deserialize as a dictionary object.
|
|
4277
|
+
* @default {}
|
|
4278
|
+
*/
|
|
4279
|
+
impacts?: Record<DictKey, ImpactCategory>;
|
|
4280
|
+
/**
|
|
4281
|
+
* Describes the special tracks used by player characters in this ruleset, like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).
|
|
4282
|
+
* @remarks Deserialize as a dictionary object.
|
|
4283
|
+
* @default {}
|
|
4284
|
+
*/
|
|
4285
|
+
special_tracks?: Record<DictKey, SpecialTrackRule>;
|
|
4286
|
+
/**
|
|
4287
|
+
* @remarks Deserialize as a dictionary object.
|
|
4288
|
+
* @default {}
|
|
4289
|
+
* @experimental
|
|
4290
|
+
*/
|
|
4291
|
+
tags?: Record<DictKey, TagRule>;
|
|
4292
|
+
}
|
|
4293
|
+
/**
|
|
4294
|
+
* Describes game rules compatible with the Ironsworn tabletop role-playing game by Shawn Tomkin.
|
|
4295
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `type` property as a discriminator.
|
|
4296
|
+
*/
|
|
4297
|
+
export type RulesPackage = Ruleset | Expansion;
|
|
4298
|
+
export type RulesPackageId = RulesetId | ExpansionId;
|
|
4299
|
+
export type RuleType = "impact" | "condition_meter" | "special_track" | "stat";
|
|
4300
|
+
/**
|
|
4301
|
+
* Select from player and/or asset enhancements. Use it to describe modal abilities. For examples, see Ironclad (classic Ironsworn) and Windbinder (Sundered Isles).
|
|
4302
|
+
* @remarks Semantics are similar to the HTML `<select>` element
|
|
4303
|
+
*/
|
|
4304
|
+
export interface SelectEnhancementField {
|
|
4305
|
+
label: Label;
|
|
4306
|
+
/**
|
|
4307
|
+
* The key of the currently selected choice from the `choices` property, or `null` if none is selected.
|
|
4308
|
+
* @default null
|
|
4309
|
+
*/
|
|
4310
|
+
value: DictKey | null;
|
|
4311
|
+
/**
|
|
4312
|
+
* @remarks Deserialize as a dictionary object.
|
|
4313
|
+
* @default {}
|
|
4314
|
+
*/
|
|
4315
|
+
choices: Record<DictKey, SelectEnhancementFieldChoice | SelectEnhancementFieldChoiceGroup>;
|
|
4316
|
+
field_type: "select_enhancement";
|
|
4317
|
+
/**
|
|
4318
|
+
* An icon associated with this input.
|
|
4319
|
+
*/
|
|
4320
|
+
icon?: SvgImageUrl;
|
|
4321
|
+
}
|
|
4322
|
+
/**
|
|
4323
|
+
* Represents an option in a list of choices.
|
|
4324
|
+
* @remarks Semantics are similar to the HTML `<option>` element.
|
|
4325
|
+
*/
|
|
4326
|
+
export interface SelectEnhancementFieldChoice {
|
|
4327
|
+
label: Label;
|
|
4328
|
+
choice_type: "choice";
|
|
4329
|
+
enhance_asset?: AssetEnhancement;
|
|
4330
|
+
enhance_moves?: MoveEnhancement[];
|
|
4331
|
+
}
|
|
4332
|
+
/**
|
|
4333
|
+
* Represents a grouping of options in a list of choices.
|
|
4334
|
+
* @remarks Semantics are similar to the HTML `<optgroup>` element.
|
|
4335
|
+
*/
|
|
4336
|
+
export interface SelectEnhancementFieldChoiceGroup {
|
|
4337
|
+
/**
|
|
4338
|
+
* A label for this option group.
|
|
4339
|
+
*/
|
|
4340
|
+
name: Label;
|
|
4341
|
+
choice_type: "choice_group";
|
|
4342
|
+
/**
|
|
4343
|
+
* @remarks Deserialize as a dictionary object.
|
|
4344
|
+
* @default {}
|
|
4345
|
+
*/
|
|
4346
|
+
choices: Record<DictKey, SelectEnhancementFieldChoice>;
|
|
4347
|
+
}
|
|
4348
|
+
/**
|
|
4349
|
+
* Represents a list of mutually exclusive choices.
|
|
4350
|
+
* @remarks Semantics are similar to the HTML `<select>` element
|
|
4351
|
+
*/
|
|
4352
|
+
export interface SelectValueField {
|
|
4353
|
+
label: Label;
|
|
4354
|
+
/**
|
|
4355
|
+
* The key of the currently selected choice from the `choices` property, or `null` if none is selected.
|
|
4356
|
+
* @default null
|
|
4357
|
+
*/
|
|
4358
|
+
value: DictKey | null;
|
|
4359
|
+
/**
|
|
4360
|
+
* @remarks Deserialize as a dictionary object.
|
|
4361
|
+
* @default {}
|
|
4362
|
+
*/
|
|
4363
|
+
choices: Record<DictKey, SelectValueFieldChoice>;
|
|
4364
|
+
field_type: "select_value";
|
|
4365
|
+
/**
|
|
4366
|
+
* An icon associated with this input.
|
|
4367
|
+
*/
|
|
4368
|
+
icon?: SvgImageUrl;
|
|
4369
|
+
}
|
|
4370
|
+
/**
|
|
4371
|
+
* @remarks Deserialize as a discriminated union/polymorphic object type, using the `using` property as a discriminator.
|
|
4372
|
+
*/
|
|
4373
|
+
export type SelectValueFieldChoice = {
|
|
4374
|
+
label: Label;
|
|
4375
|
+
choice_type: "choice";
|
|
4376
|
+
stat: StatKey;
|
|
4377
|
+
/**
|
|
4378
|
+
* A reference to the value of a standard player character stat.
|
|
4379
|
+
*/
|
|
4380
|
+
using: "stat";
|
|
4381
|
+
} | {
|
|
4382
|
+
label: Label;
|
|
4383
|
+
choice_type: "choice";
|
|
4384
|
+
condition_meter: ConditionMeterKey;
|
|
4385
|
+
/**
|
|
4386
|
+
* A reference to the value of a standard player condition meter.
|
|
4387
|
+
*/
|
|
4388
|
+
using: "condition_meter";
|
|
4389
|
+
} | {
|
|
4390
|
+
label: Label;
|
|
4391
|
+
choice_type: "choice";
|
|
4392
|
+
/**
|
|
4393
|
+
* 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.
|
|
4394
|
+
* @default null
|
|
4395
|
+
*/
|
|
4396
|
+
assets: AssetIdWildcard[] | null;
|
|
4397
|
+
/**
|
|
4398
|
+
* The dictionary key of the asset control field.
|
|
4399
|
+
* @example "health"
|
|
4400
|
+
* @example "integrity"
|
|
4401
|
+
*/
|
|
4402
|
+
control: DictKey;
|
|
4403
|
+
/**
|
|
4404
|
+
* A reference to the value of an asset control.
|
|
4405
|
+
*/
|
|
4406
|
+
using: "asset_control";
|
|
4407
|
+
} | {
|
|
4408
|
+
label: Label;
|
|
4409
|
+
choice_type: "choice";
|
|
4410
|
+
/**
|
|
4411
|
+
* 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.
|
|
4412
|
+
* @default null
|
|
4413
|
+
*/
|
|
4414
|
+
assets: AssetIdWildcard[] | null;
|
|
4415
|
+
/**
|
|
4416
|
+
* The dictionary key of the asset option field.
|
|
4417
|
+
*/
|
|
4418
|
+
option: DictKey;
|
|
4419
|
+
/**
|
|
4420
|
+
* A reference to the value of an asset option.
|
|
4421
|
+
*/
|
|
4422
|
+
using: "asset_option";
|
|
4423
|
+
} | {
|
|
4424
|
+
label: Label;
|
|
4425
|
+
choice_type: "choice";
|
|
4426
|
+
/**
|
|
4427
|
+
* The dictionary key of the asset control field.
|
|
4428
|
+
* @example "health"
|
|
4429
|
+
* @example "integrity"
|
|
4430
|
+
*/
|
|
4431
|
+
control: DictKey;
|
|
4432
|
+
/**
|
|
4433
|
+
* 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.
|
|
4434
|
+
*/
|
|
4435
|
+
using: "attached_asset_control";
|
|
4436
|
+
} | {
|
|
4437
|
+
label: Label;
|
|
4438
|
+
choice_type: "choice";
|
|
4439
|
+
/**
|
|
4440
|
+
* The dictionary key of the asset option field.
|
|
4441
|
+
*/
|
|
4442
|
+
option: DictKey;
|
|
4443
|
+
/**
|
|
4444
|
+
* A reference to the value of an attached asset option.
|
|
4445
|
+
*/
|
|
4446
|
+
using: "attached_asset_option";
|
|
4447
|
+
} | {
|
|
4448
|
+
label: Label;
|
|
4449
|
+
choice_type: "choice";
|
|
4450
|
+
value: number;
|
|
4451
|
+
/**
|
|
4452
|
+
* An arbitrary static integer value with a label.
|
|
4453
|
+
*/
|
|
4454
|
+
using: "custom";
|
|
4455
|
+
};
|
|
4456
|
+
/**
|
|
4457
|
+
* @pattern ```javascript
|
|
4458
|
+
* /^(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-]+)*))?$/
|
|
4459
|
+
* ```
|
|
4460
|
+
*/
|
|
4461
|
+
export type SemanticVersion = string;
|
|
4462
|
+
/**
|
|
4463
|
+
* Metadata describing the original source of this node
|
|
4464
|
+
*/
|
|
4465
|
+
export interface SourceInfo {
|
|
4466
|
+
/**
|
|
4467
|
+
* The title of the source document.
|
|
4468
|
+
* @example "Ironsworn Rulebook"
|
|
4469
|
+
* @example "Ironsworn Assets Master Set"
|
|
4470
|
+
* @example "Ironsworn: Delve"
|
|
4471
|
+
* @example "Ironsworn: Starforged Rulebook"
|
|
4472
|
+
* @example "Ironsworn: Starforged Assets"
|
|
4473
|
+
* @example "Sundered Isles"
|
|
4474
|
+
*/
|
|
4475
|
+
title: Label;
|
|
4476
|
+
/**
|
|
4477
|
+
* The page number where this content is described in full.
|
|
4478
|
+
*/
|
|
4479
|
+
page?: PageNumber;
|
|
4480
|
+
/**
|
|
4481
|
+
* Lists authors credited by the source material.
|
|
4482
|
+
*/
|
|
4483
|
+
authors: AuthorInfo[];
|
|
4484
|
+
/**
|
|
4485
|
+
* 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.
|
|
4486
|
+
* @remarks You may prefer to deserialize this as a Date object.
|
|
4487
|
+
* @pattern ```javascript
|
|
4488
|
+
* /[0-9]{4}-((0[0-9])|(1[0-2]))-(([0-2][0-9])|(3[0-1]))/
|
|
4489
|
+
* ```
|
|
4490
|
+
*/
|
|
4491
|
+
date: string;
|
|
4492
|
+
/**
|
|
4493
|
+
* A URL where the source document is available.
|
|
4494
|
+
* @example "https://ironswornrpg.com"
|
|
4495
|
+
*/
|
|
4496
|
+
url: WebUrl;
|
|
4497
|
+
/**
|
|
4498
|
+
* An URL pointing to the location where this content's license can be found.
|
|
4499
|
+
*
|
|
4500
|
+
* A `null` here indicates that the content provides __no__ license, and is not intended for redistribution.
|
|
4501
|
+
* @example "https://creativecommons.org/licenses/by/4.0"
|
|
4502
|
+
* @example "https://creativecommons.org/licenses/by-nc-sa/4.0"
|
|
4503
|
+
*/
|
|
4504
|
+
license: WebUrl | null;
|
|
4505
|
+
}
|
|
4506
|
+
/**
|
|
4507
|
+
* - `miss`: An automatic miss.
|
|
4508
|
+
* - `weak_hit`: An automatic weak hit.
|
|
4509
|
+
* - `strong_hit`: An automatic strong hit.
|
|
4510
|
+
* - `player_choice`: The player chooses which roll option to use.
|
|
4511
|
+
* - `highest`: Use the roll option with the best/highest value.
|
|
4512
|
+
* - `lowest`: Use the roll option with the worst/lowest value.
|
|
4513
|
+
* - `all`: Use _every_ roll option at once.
|
|
4514
|
+
*/
|
|
4515
|
+
export type SpecialTrackRollMethod = "miss" | "weak_hit" | "strong_hit" | "player_choice" | "highest" | "lowest" | "all";
|
|
4516
|
+
/**
|
|
4517
|
+
* Describes a special track like Bonds (classic Ironsworn), Failure (Delve), or Legacies (Starforged).
|
|
4518
|
+
*/
|
|
4519
|
+
export interface SpecialTrackRule {
|
|
4520
|
+
/**
|
|
4521
|
+
* A label for this special track.
|
|
4522
|
+
*/
|
|
4523
|
+
label: Label;
|
|
4524
|
+
/**
|
|
4525
|
+
* A description of this special track.
|
|
4526
|
+
*/
|
|
4527
|
+
description: MarkdownString;
|
|
4528
|
+
/**
|
|
4529
|
+
* Is this track shared by all players?
|
|
4530
|
+
* @default false
|
|
4531
|
+
*/
|
|
4532
|
+
shared: boolean;
|
|
4533
|
+
/**
|
|
4534
|
+
* Is this track an optional rule?
|
|
4535
|
+
* @default false
|
|
4536
|
+
*/
|
|
4537
|
+
optional: boolean;
|
|
4538
|
+
/**
|
|
4539
|
+
* @experimental
|
|
4540
|
+
*/
|
|
4541
|
+
tags?: Tags;
|
|
4542
|
+
}
|
|
4543
|
+
/**
|
|
4544
|
+
* Special, ruleset-specific progress tracks. Usually, one exists per player character, and they persist through the life of the player character.
|
|
4545
|
+
* 'Canonical' examples:
|
|
4546
|
+
* * `bonds_track`, described in the Ironsworn Rulebook. For the Starforged legacy track, use `bonds_legacy` instead.
|
|
4547
|
+
* * `failure_track`, described in Ironsworn: Delve
|
|
4548
|
+
* * `quests_legacy`, `bonds_legacy`, and `discoveries_legacy`, described Ironsworn: Starforged
|
|
4549
|
+
*
|
|
4550
|
+
*
|
|
4551
|
+
* @example "bonds_track"
|
|
4552
|
+
* @example "failure_track"
|
|
4553
|
+
* @example "quests_legacy"
|
|
4554
|
+
* @example "bonds_legacy"
|
|
4555
|
+
* @example "discoveries_legacy"
|
|
4556
|
+
*/
|
|
4557
|
+
export type SpecialTrackType = DictKey;
|
|
4558
|
+
/**
|
|
4559
|
+
* A basic player character stat.
|
|
4560
|
+
* @example "edge"
|
|
4561
|
+
* @example "heart"
|
|
4562
|
+
* @example "iron"
|
|
4563
|
+
* @example "shadow"
|
|
4564
|
+
* @example "wits"
|
|
4565
|
+
*/
|
|
4566
|
+
export type StatKey = DictKey;
|
|
4567
|
+
/**
|
|
4568
|
+
* Describes a standard player character stat.
|
|
4569
|
+
*/
|
|
4570
|
+
export interface StatRule {
|
|
4571
|
+
/**
|
|
4572
|
+
* A label for this stat.
|
|
4573
|
+
* @example "edge"
|
|
4574
|
+
*/
|
|
4575
|
+
label: Label;
|
|
4576
|
+
/**
|
|
4577
|
+
* A description of this stat.
|
|
4578
|
+
* @example "Quickness, agility, and prowess when fighting at a distance."
|
|
4579
|
+
*/
|
|
4580
|
+
description: MarkdownString;
|
|
4581
|
+
/**
|
|
4582
|
+
* @experimental
|
|
4583
|
+
*/
|
|
4584
|
+
tags?: Tags;
|
|
4585
|
+
}
|
|
4586
|
+
/**
|
|
4587
|
+
* A reference to the value of a standard player character stat.
|
|
4588
|
+
*/
|
|
4589
|
+
export interface StatValueRef {
|
|
4590
|
+
stat: StatKey;
|
|
4591
|
+
/**
|
|
4592
|
+
* A reference to the value of a standard player character stat.
|
|
4593
|
+
*/
|
|
4594
|
+
using: "stat";
|
|
4595
|
+
}
|
|
4596
|
+
/**
|
|
4597
|
+
* @experimental
|
|
4598
|
+
*/
|
|
4599
|
+
export type Suggestions = AnyIdWildcard[];
|
|
4600
|
+
/**
|
|
4601
|
+
* A relative (local) URL pointing to a vector image in the SVG format.
|
|
4602
|
+
* @pattern ```javascript
|
|
4603
|
+
* /\.svg$/
|
|
4604
|
+
* ```
|
|
4605
|
+
*/
|
|
4606
|
+
export type SvgImageUrl = string;
|
|
4607
|
+
export type Tag = boolean | number | DictKey | DiceExpression | AtlasEntryId | NpcId | OracleRollableId | AssetId | MoveId | AtlasCollectionId | NpcCollectionId | OracleCollectionId | AssetCollectionId | MoveCategoryId | DelveSiteId | DelveSiteDomainId | DelveSiteThemeId | RarityId | TruthId | Array<AtlasEntryIdWildcard | NpcIdWildcard | OracleRollableIdWildcard | AssetIdWildcard | MoveIdWildcard | AtlasCollectionIdWildcard | NpcCollectionIdWildcard | OracleCollectionIdWildcard | AssetCollectionIdWildcard | MoveCategoryIdWildcard | DelveSiteIdWildcard | DelveSiteDomainIdWildcard | DelveSiteThemeIdWildcard | RarityIdWildcard | TruthIdWildcard>;
|
|
4608
|
+
export type TaggableNodeType = CollectableType | NonCollectableType | CollectionType | EmbedOnlyType | RuleType;
|
|
4609
|
+
export interface TagRule {
|
|
4610
|
+
/**
|
|
4611
|
+
* Types of object that can receive this tag, or `null` if any type of object accepts it.
|
|
4612
|
+
* @default null
|
|
4613
|
+
*/
|
|
4614
|
+
node_types: TaggableNodeType[] | null;
|
|
4615
|
+
/**
|
|
4616
|
+
* The JSON schema for this tag value.
|
|
4617
|
+
*/
|
|
4618
|
+
$schema: TagSchema;
|
|
4619
|
+
}
|
|
4620
|
+
/**
|
|
4621
|
+
* A dictionary of tags, keyed by the RulesPackageId that the tags are from.
|
|
4622
|
+
* @experimental
|
|
4623
|
+
*/
|
|
4624
|
+
export type Tags = Record<DictKey, Record<DictKey, Tag>>;
|
|
4625
|
+
export type TagSchema = Record<string, unknown>;
|
|
4626
|
+
/**
|
|
4627
|
+
* Represents an input that accepts plain text.
|
|
4628
|
+
* @remarks Semantics are similar to the HTML `<input type="text">` element.
|
|
4629
|
+
*/
|
|
4630
|
+
export interface TextField {
|
|
4631
|
+
label: Label;
|
|
4632
|
+
/**
|
|
4633
|
+
* The content of this text input, or `null` if it's empty
|
|
4634
|
+
* @default null
|
|
4635
|
+
*/
|
|
4636
|
+
value: string | null;
|
|
4637
|
+
field_type: "text";
|
|
4638
|
+
/**
|
|
4639
|
+
* An icon associated with this input.
|
|
4640
|
+
*/
|
|
4641
|
+
icon?: SvgImageUrl;
|
|
4642
|
+
}
|
|
4643
|
+
/**
|
|
4644
|
+
* Describes trigger conditions for a move that makes an action roll.
|
|
4645
|
+
*/
|
|
4646
|
+
export interface TriggerActionRoll {
|
|
4647
|
+
/**
|
|
4648
|
+
* A markdown string containing the primary trigger text for this move.
|
|
4649
|
+
*
|
|
4650
|
+
* Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.
|
|
4651
|
+
*/
|
|
4652
|
+
text: MarkdownString;
|
|
4653
|
+
/**
|
|
4654
|
+
* Specific conditions that qualify for this trigger.
|
|
4655
|
+
*/
|
|
4656
|
+
conditions: TriggerActionRollCondition[];
|
|
4657
|
+
}
|
|
4658
|
+
export interface TriggerActionRollCondition {
|
|
4659
|
+
_id: AnyMoveConditionId;
|
|
4660
|
+
/**
|
|
4661
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4662
|
+
*/
|
|
4663
|
+
text?: MarkdownString;
|
|
4664
|
+
by?: TriggerBy;
|
|
4665
|
+
method: ActionRollMethod;
|
|
4666
|
+
/**
|
|
4667
|
+
* The options available when rolling with this trigger condition.
|
|
4668
|
+
*/
|
|
4669
|
+
roll_options: RollableValue[];
|
|
4670
|
+
}
|
|
4671
|
+
export interface TriggerActionRollConditionEnhancement {
|
|
4672
|
+
/**
|
|
4673
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4674
|
+
*/
|
|
4675
|
+
text?: MarkdownString;
|
|
4676
|
+
by?: TriggerBy;
|
|
4677
|
+
/**
|
|
4678
|
+
* 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`.
|
|
4679
|
+
* @default null
|
|
4680
|
+
*/
|
|
4681
|
+
method: ActionRollMethod | null;
|
|
4682
|
+
/**
|
|
4683
|
+
* @default null
|
|
4684
|
+
*/
|
|
4685
|
+
roll_options: RollableValue[] | null;
|
|
4686
|
+
}
|
|
4687
|
+
/**
|
|
4688
|
+
* Describes changes/additions made to the enhanced move's trigger conditions.
|
|
4689
|
+
*/
|
|
4690
|
+
export interface TriggerActionRollEnhancement {
|
|
4691
|
+
/**
|
|
4692
|
+
* Trigger conditions added to the enhanced move.
|
|
4693
|
+
*/
|
|
4694
|
+
conditions: TriggerActionRollConditionEnhancement[];
|
|
4695
|
+
}
|
|
4696
|
+
/**
|
|
4697
|
+
* 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.
|
|
4698
|
+
*/
|
|
4699
|
+
export interface TriggerBy {
|
|
4700
|
+
/**
|
|
4701
|
+
* Can this trigger be activated by the player who owns this?
|
|
4702
|
+
* @default true
|
|
4703
|
+
*/
|
|
4704
|
+
player: boolean;
|
|
4705
|
+
/**
|
|
4706
|
+
* Can this trigger be activated by one of the player's allies?
|
|
4707
|
+
* @default false
|
|
4708
|
+
*/
|
|
4709
|
+
ally: boolean;
|
|
4710
|
+
}
|
|
4711
|
+
/**
|
|
4712
|
+
* Describes trigger conditions for a move that makes no rolls.
|
|
4713
|
+
*/
|
|
4714
|
+
export interface TriggerNoRoll {
|
|
4715
|
+
/**
|
|
4716
|
+
* A markdown string containing the primary trigger text for this move.
|
|
4717
|
+
*
|
|
4718
|
+
* Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.
|
|
4719
|
+
*/
|
|
4720
|
+
text: MarkdownString;
|
|
4721
|
+
/**
|
|
4722
|
+
* Specific conditions that qualify for this trigger.
|
|
4723
|
+
* @default []
|
|
4724
|
+
*/
|
|
4725
|
+
conditions: TriggerNoRollCondition[];
|
|
4726
|
+
}
|
|
4727
|
+
export interface TriggerNoRollCondition {
|
|
4728
|
+
_id: AnyMoveConditionId;
|
|
4729
|
+
/**
|
|
4730
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4731
|
+
*/
|
|
4732
|
+
text?: MarkdownString;
|
|
4733
|
+
by?: TriggerBy;
|
|
4734
|
+
/**
|
|
4735
|
+
* @default null
|
|
4736
|
+
*/
|
|
4737
|
+
method: null;
|
|
4738
|
+
/**
|
|
4739
|
+
* The options available when rolling with this trigger condition.
|
|
4740
|
+
* @default null
|
|
4741
|
+
*/
|
|
4742
|
+
roll_options: null;
|
|
4743
|
+
}
|
|
4744
|
+
export interface TriggerNoRollConditionEnhancement {
|
|
4745
|
+
/**
|
|
4746
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4747
|
+
*/
|
|
4748
|
+
text?: MarkdownString;
|
|
4749
|
+
by?: TriggerBy;
|
|
4750
|
+
/**
|
|
4751
|
+
* @default null
|
|
4752
|
+
*/
|
|
4753
|
+
method: null;
|
|
4754
|
+
/**
|
|
4755
|
+
* The options available when rolling with this trigger condition.
|
|
4756
|
+
* @default null
|
|
4757
|
+
*/
|
|
4758
|
+
roll_options: null;
|
|
4759
|
+
}
|
|
4760
|
+
/**
|
|
4761
|
+
* Describes changes/additions made to the enhanced move's trigger conditions.
|
|
4762
|
+
*/
|
|
4763
|
+
export interface TriggerNoRollEnhancement {
|
|
4764
|
+
/**
|
|
4765
|
+
* Trigger conditions added to the enhanced move.
|
|
4766
|
+
*/
|
|
4767
|
+
conditions: TriggerNoRollConditionEnhancement[];
|
|
4768
|
+
}
|
|
4769
|
+
export interface TriggerProgressRoll {
|
|
4770
|
+
/**
|
|
4771
|
+
* A markdown string containing the primary trigger text for this move.
|
|
4772
|
+
*
|
|
4773
|
+
* Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.
|
|
4774
|
+
*/
|
|
4775
|
+
text: MarkdownString;
|
|
4776
|
+
/**
|
|
4777
|
+
* Specific conditions that qualify for this trigger.
|
|
4778
|
+
*/
|
|
4779
|
+
conditions: TriggerProgressRollCondition[];
|
|
4780
|
+
}
|
|
4781
|
+
export interface TriggerProgressRollCondition {
|
|
4782
|
+
_id: AnyMoveConditionId;
|
|
4783
|
+
/**
|
|
4784
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4785
|
+
*/
|
|
4786
|
+
text?: MarkdownString;
|
|
4787
|
+
by?: TriggerBy;
|
|
4788
|
+
/**
|
|
4789
|
+
* @default "progress_roll"
|
|
4790
|
+
*/
|
|
4791
|
+
method: ProgressRollMethod;
|
|
4792
|
+
/**
|
|
4793
|
+
* The options available when rolling with this trigger condition.
|
|
4794
|
+
*/
|
|
4795
|
+
roll_options: ProgressRollOption[];
|
|
4796
|
+
}
|
|
4797
|
+
export interface TriggerProgressRollConditionEnhancement {
|
|
4798
|
+
/**
|
|
4799
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4800
|
+
*/
|
|
4801
|
+
text?: MarkdownString;
|
|
4802
|
+
by?: TriggerBy;
|
|
4803
|
+
/**
|
|
4804
|
+
* 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`.
|
|
4805
|
+
* @default null
|
|
4806
|
+
*/
|
|
4807
|
+
method: ProgressRollMethod | null;
|
|
4808
|
+
/**
|
|
4809
|
+
* @default null
|
|
4810
|
+
*/
|
|
4811
|
+
roll_options: ProgressRollOption[] | null;
|
|
4812
|
+
}
|
|
4813
|
+
/**
|
|
4814
|
+
* Describes changes/additions made to the enhanced move's trigger conditions.
|
|
4815
|
+
*/
|
|
4816
|
+
export interface TriggerProgressRollEnhancement {
|
|
4817
|
+
/**
|
|
4818
|
+
* Trigger conditions added to the enhanced move.
|
|
4819
|
+
*/
|
|
4820
|
+
conditions: TriggerProgressRollConditionEnhancement[];
|
|
4821
|
+
}
|
|
4822
|
+
export interface TriggerSpecialTrack {
|
|
4823
|
+
/**
|
|
4824
|
+
* A markdown string containing the primary trigger text for this move.
|
|
4825
|
+
*
|
|
4826
|
+
* Secondary trigger text (for specific stats or uses of an asset ability) may be described in individual trigger conditions.
|
|
4827
|
+
*/
|
|
4828
|
+
text: MarkdownString;
|
|
4829
|
+
/**
|
|
4830
|
+
* Specific conditions that qualify for this trigger.
|
|
4831
|
+
*/
|
|
4832
|
+
conditions: TriggerSpecialTrackCondition[];
|
|
4833
|
+
}
|
|
4834
|
+
export interface TriggerSpecialTrackCondition {
|
|
4835
|
+
_id: AnyMoveConditionId;
|
|
4836
|
+
/**
|
|
4837
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4838
|
+
*/
|
|
4839
|
+
text?: MarkdownString;
|
|
4840
|
+
by?: TriggerBy;
|
|
4841
|
+
method: SpecialTrackRollMethod;
|
|
4842
|
+
/**
|
|
4843
|
+
* The options available when rolling with this trigger condition.
|
|
4844
|
+
*/
|
|
4845
|
+
roll_options: TriggerSpecialTrackConditionOption[];
|
|
4846
|
+
}
|
|
4847
|
+
/**
|
|
4848
|
+
* A progress move that rolls on one or more special tracks, like Bonds (classic Ironsworn), Failure (Delve), or Legacy (Starforged).
|
|
4849
|
+
*/
|
|
4850
|
+
export interface TriggerSpecialTrackConditionEnhancement {
|
|
4851
|
+
/**
|
|
4852
|
+
* A markdown string of any trigger text specific to this trigger condition.
|
|
4853
|
+
*/
|
|
4854
|
+
text?: MarkdownString;
|
|
4855
|
+
by?: TriggerBy;
|
|
4856
|
+
/**
|
|
4857
|
+
* 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`.
|
|
4858
|
+
* @default null
|
|
4859
|
+
*/
|
|
4860
|
+
method: SpecialTrackRollMethod | null;
|
|
4861
|
+
/**
|
|
4862
|
+
* @default null
|
|
4863
|
+
*/
|
|
4864
|
+
roll_options: TriggerSpecialTrackConditionOption[] | null;
|
|
4865
|
+
}
|
|
4866
|
+
export interface TriggerSpecialTrackConditionOption {
|
|
4867
|
+
using: SpecialTrackType;
|
|
4868
|
+
}
|
|
4869
|
+
/**
|
|
4870
|
+
* Describes changes/additions made to the enhanced move's trigger conditions.
|
|
4871
|
+
*/
|
|
4872
|
+
export interface TriggerSpecialTrackEnhancement {
|
|
4873
|
+
/**
|
|
4874
|
+
* Trigger conditions added to the enhanced move.
|
|
4875
|
+
*/
|
|
4876
|
+
conditions: TriggerSpecialTrackConditionEnhancement[];
|
|
4877
|
+
}
|
|
4878
|
+
/**
|
|
4879
|
+
* A setting truth category.
|
|
4880
|
+
*/
|
|
4881
|
+
export interface Truth {
|
|
4882
|
+
/**
|
|
4883
|
+
* The unique Datasworn ID for this node.
|
|
4884
|
+
*/
|
|
4885
|
+
_id: TruthId;
|
|
4886
|
+
_comment?: Documentation;
|
|
4887
|
+
/**
|
|
4888
|
+
* The primary name/label for this node.
|
|
4889
|
+
*/
|
|
4890
|
+
name: Label;
|
|
4891
|
+
/**
|
|
4892
|
+
* The name of this node as it appears on the page in the book, if it's different from `name`.
|
|
4893
|
+
*/
|
|
4894
|
+
canonical_name?: Label;
|
|
4895
|
+
/**
|
|
4896
|
+
* Attribution for the original source (such as a book or website) of this node, including the author and licensing information.
|
|
4897
|
+
*/
|
|
4898
|
+
_source: SourceInfo;
|
|
4899
|
+
suggestions?: Suggestions;
|
|
4900
|
+
tags?: Tags;
|
|
4901
|
+
/**
|
|
4902
|
+
* This node replaces all nodes that match these wildcards. References to the replaced nodes can be considered equivalent to this node.
|
|
4903
|
+
*/
|
|
4904
|
+
replaces?: TruthIdWildcard[];
|
|
4905
|
+
/**
|
|
4906
|
+
* An optional thematic color associated with this node. For an example, see "Basic Creature Form" (Starforged p. 337).
|
|
4907
|
+
*/
|
|
4908
|
+
color?: CssColor;
|
|
4909
|
+
images?: WebpImageUrl[];
|
|
4910
|
+
/**
|
|
4911
|
+
* An SVG icon associated with this collection.
|
|
4912
|
+
*/
|
|
4913
|
+
icon?: SvgImageUrl;
|
|
4914
|
+
/**
|
|
4915
|
+
* @default "1d100"
|
|
4916
|
+
*/
|
|
4917
|
+
dice: DiceExpression;
|
|
4918
|
+
options: TruthOption[];
|
|
4919
|
+
your_character?: MarkdownString;
|
|
4920
|
+
/**
|
|
4921
|
+
* Prompts for factions related to this truth, like those presented in standard isles. This is presented as a single paragraph in the original text; Datasworn uses an array (one faction prompt per string) to represent them in order to make them more suitable for programmatic use.
|
|
4922
|
+
*
|
|
4923
|
+
* This property is a placeholder and may see signficant changes in v0.2.0.
|
|
4924
|
+
* @experimental
|
|
4925
|
+
*/
|
|
4926
|
+
factions?: EntityPrompt[];
|
|
4927
|
+
type: "truth";
|
|
4928
|
+
}
|
|
4929
|
+
/**
|
|
4930
|
+
* A unique ID representing a Truth object.
|
|
4931
|
+
* @pattern ```javascript
|
|
4932
|
+
* /^truth:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)$/
|
|
4933
|
+
* ```
|
|
4934
|
+
*/
|
|
4935
|
+
export type TruthId = string;
|
|
4936
|
+
/**
|
|
4937
|
+
* A wildcarded TruthId that can be used to match multiple Truth objects.
|
|
4938
|
+
* @pattern ```javascript
|
|
4939
|
+
* /^truth:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)$/
|
|
4940
|
+
* ```
|
|
4941
|
+
*/
|
|
4942
|
+
export type TruthIdWildcard = string;
|
|
4943
|
+
export interface TruthOption {
|
|
4944
|
+
/**
|
|
4945
|
+
* The unique Datasworn ID for this node.
|
|
4946
|
+
*/
|
|
4947
|
+
_id: TruthOptionId;
|
|
4948
|
+
_comment?: Documentation;
|
|
4949
|
+
roll: DiceRange;
|
|
4950
|
+
summary?: MarkdownString;
|
|
4951
|
+
description: MarkdownString;
|
|
4952
|
+
quest_starter: MarkdownString;
|
|
4953
|
+
/**
|
|
4954
|
+
* @remarks Deserialize as a dictionary object.
|
|
4955
|
+
* @default {}
|
|
4956
|
+
*/
|
|
4957
|
+
oracles?: Record<DictKey, EmbeddedOracleRollable>;
|
|
4958
|
+
}
|
|
4959
|
+
/**
|
|
4960
|
+
* A unique ID representing a TruthOption object.
|
|
4961
|
+
* @pattern ```javascript
|
|
4962
|
+
* /^truth\.option:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)$/
|
|
4963
|
+
* ```
|
|
4964
|
+
*/
|
|
4965
|
+
export type TruthOptionId = string;
|
|
4966
|
+
/**
|
|
4967
|
+
* A wildcarded TruthOptionId that can be used to match multiple TruthOption objects.
|
|
4968
|
+
* @pattern ```javascript
|
|
4969
|
+
* /^truth\.option:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)$/
|
|
4970
|
+
* ```
|
|
4971
|
+
*/
|
|
4972
|
+
export type TruthOptionIdWildcard = string;
|
|
4973
|
+
/**
|
|
4974
|
+
* A unique ID representing a TruthOptionOracleRollable object.
|
|
4975
|
+
* @pattern ```javascript
|
|
4976
|
+
* /^truth\.option\.oracle_rollable:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)\.([a-z][a-z0-9_]*|\*)$/
|
|
4977
|
+
* ```
|
|
4978
|
+
*/
|
|
4979
|
+
export type TruthOptionOracleRollableId = string;
|
|
4980
|
+
/**
|
|
4981
|
+
* A wildcarded TruthOptionOracleRollableId that can be used to match multiple TruthOptionOracleRollable objects.
|
|
4982
|
+
* @pattern ```javascript
|
|
4983
|
+
* /^truth\.option\.oracle_rollable:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)$/
|
|
4984
|
+
* ```
|
|
4985
|
+
*/
|
|
4986
|
+
export type TruthOptionOracleRollableIdWildcard = string;
|
|
4987
|
+
/**
|
|
4988
|
+
* A unique ID representing a TruthOptionOracleRollableRow object.
|
|
4989
|
+
* @pattern ```javascript
|
|
4990
|
+
* /^truth\.option\.oracle_rollable\.row:([a-z][a-z0-9_]*\/[a-z][a-z0-9_]*)\.(\d+)\.([a-z][a-z0-9_]*|\*)\.(\d+)$/
|
|
4991
|
+
* ```
|
|
4992
|
+
*/
|
|
4993
|
+
export type TruthOptionOracleRollableRowId = string;
|
|
4994
|
+
/**
|
|
4995
|
+
* A wildcarded TruthOptionOracleRollableRowId that can be used to match multiple TruthOptionOracleRollableRow objects.
|
|
4996
|
+
* @pattern ```javascript
|
|
4997
|
+
* /^truth\.option\.oracle_rollable\.row:((?:[a-z][a-z0-9_]*|\*)\/[a-z][a-z0-9_]*|\/\*|\/\*\*)\.(\d+|\*)\.([a-z][a-z0-9_]*|\*)\.(\d+|\*)$/
|
|
4998
|
+
* ```
|
|
4999
|
+
*/
|
|
5000
|
+
export type TruthOptionOracleRollableRowIdWildcard = string;
|
|
5001
|
+
/**
|
|
5002
|
+
* A relative (local) URL pointing to a raster image in the WEBP format.
|
|
5003
|
+
* @pattern ```javascript
|
|
5004
|
+
* /\.webp$/
|
|
5005
|
+
* ```
|
|
5006
|
+
*/
|
|
5007
|
+
export type WebpImageUrl = string;
|
|
5008
|
+
/**
|
|
5009
|
+
* An absolute URL pointing to a website.
|
|
5010
|
+
*/
|
|
5011
|
+
export type WebUrl = string;
|
|
5012
|
+
//# sourceMappingURL=Datasworn.d.ts.map
|