optolith-database-schema 0.1.2 → 0.1.5

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.
Files changed (204) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/lib/types/Advantage.d.ts +4 -0
  3. package/lib/types/ArcaneBardTradition.d.ts +2 -2
  4. package/lib/types/ArcaneDancerTradition.d.ts +2 -2
  5. package/lib/types/Ceremony.d.ts +2 -2
  6. package/lib/types/DerivedCharacteristic.d.ts +2 -2
  7. package/lib/types/Disadvantage.d.ts +4 -0
  8. package/lib/types/FamiliarsTrick.d.ts +2 -1
  9. package/lib/types/LiturgicalChant.d.ts +2 -2
  10. package/lib/types/Ritual.d.ts +2 -2
  11. package/lib/types/Spell.d.ts +2 -2
  12. package/lib/types/_Activatable.d.ts +1434 -79
  13. package/lib/types/_Activatable.js +44 -0
  14. package/lib/types/_ActivatableSkill.d.ts +4 -0
  15. package/lib/types/_Enhancements.d.ts +2 -2
  16. package/lib/types/_Identifier.d.ts +127 -85
  17. package/lib/types/_Identifier.js +110 -76
  18. package/lib/types/_Influence.d.ts +2 -0
  19. package/lib/types/_Prerequisite.d.ts +93 -397
  20. package/lib/types/_Prerequisite.js +1 -136
  21. package/lib/types/magicalActions/AnimistPower.d.ts +5 -0
  22. package/lib/types/magicalActions/Curse.d.ts +1 -1
  23. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +1 -1
  24. package/lib/types/magicalActions/GeodeRitual.d.ts +2 -2
  25. package/lib/types/prerequisites/ConditionalPrerequisites.d.ts +10 -0
  26. package/lib/types/prerequisites/ConditionalPrerequisites.js +1 -0
  27. package/lib/types/prerequisites/DisplayOption.d.ts +19 -0
  28. package/lib/types/prerequisites/DisplayOption.js +1 -0
  29. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +32 -0
  30. package/lib/types/prerequisites/PrerequisiteGroups.js +1 -0
  31. package/lib/types/prerequisites/single/ActivatablePrerequisite.d.ts +95 -0
  32. package/lib/types/prerequisites/single/ActivatablePrerequisite.js +1 -0
  33. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.d.ts +28 -0
  34. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.js +1 -0
  35. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.d.ts +3 -0
  36. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.js +1 -0
  37. package/lib/types/prerequisites/single/CulturePrerequisite.d.ts +11 -0
  38. package/lib/types/prerequisites/single/CulturePrerequisite.js +1 -0
  39. package/lib/types/prerequisites/single/EnhancementPrerequisite.d.ts +36 -0
  40. package/lib/types/prerequisites/single/EnhancementPrerequisite.js +1 -0
  41. package/lib/types/prerequisites/single/InfluencePrerequisite.d.ts +18 -0
  42. package/lib/types/prerequisites/single/InfluencePrerequisite.js +1 -0
  43. package/lib/types/prerequisites/single/PactPrerequisite.d.ts +32 -0
  44. package/lib/types/prerequisites/single/PactPrerequisite.js +1 -0
  45. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.d.ts +22 -0
  46. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.js +1 -0
  47. package/lib/types/prerequisites/single/PublicationPrerequisite.d.ts +13 -0
  48. package/lib/types/prerequisites/single/PublicationPrerequisite.js +1 -0
  49. package/lib/types/prerequisites/single/RacePrerequisite.d.ts +14 -0
  50. package/lib/types/prerequisites/single/RacePrerequisite.js +1 -0
  51. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +99 -0
  52. package/lib/types/prerequisites/single/RatedPrerequisite.js +1 -0
  53. package/lib/types/prerequisites/single/RulePrerequisite.d.ts +10 -0
  54. package/lib/types/prerequisites/single/RulePrerequisite.js +1 -0
  55. package/lib/types/prerequisites/single/SexPrerequisite.d.ts +11 -0
  56. package/lib/types/prerequisites/single/SexPrerequisite.js +1 -0
  57. package/lib/types/prerequisites/single/SocialStatusPrerequisite.d.ts +16 -0
  58. package/lib/types/prerequisites/single/SocialStatusPrerequisite.js +1 -0
  59. package/lib/types/prerequisites/single/StatePrerequisite.d.ts +11 -0
  60. package/lib/types/prerequisites/single/StatePrerequisite.js +1 -0
  61. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +31 -0
  62. package/lib/types/prerequisites/single/TextPrerequisite.js +1 -0
  63. package/lib/types/prerequisites/single/TraditionPrerequisite.d.ts +33 -0
  64. package/lib/types/prerequisites/single/TraditionPrerequisite.js +1 -0
  65. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +9 -0
  66. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +4 -0
  67. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +4 -0
  68. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +4 -0
  69. package/lib/types/specialAbility/AncestorGlyph.d.ts +4 -0
  70. package/lib/types/specialAbility/BlessedTradition.d.ts +5 -2
  71. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +4 -0
  72. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +4 -0
  73. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +9 -0
  74. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +4 -0
  75. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +4 -0
  76. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +4 -0
  77. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +4 -0
  78. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +4 -0
  79. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +4 -0
  80. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +4 -0
  81. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +4 -0
  82. package/lib/types/specialAbility/LycantropicGift.d.ts +4 -0
  83. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +4 -0
  84. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +4 -0
  85. package/lib/types/specialAbility/MagicalTradition.d.ts +3 -0
  86. package/lib/types/specialAbility/PactGift.d.ts +6 -2
  87. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +4 -0
  88. package/lib/types/specialAbility/Sermon.d.ts +4 -0
  89. package/lib/types/specialAbility/SexSpecialAbility.d.ts +4 -0
  90. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +4 -0
  91. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +4 -0
  92. package/lib/types/specialAbility/VampiricGift.d.ts +4 -0
  93. package/lib/types/specialAbility/Vision.d.ts +4 -0
  94. package/lib/types/specialAbility/sub/Language.d.ts +2 -2
  95. package/lib/types/specialAbility/sub/TradeSecret.d.ts +2 -0
  96. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +18 -0
  97. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +18 -0
  98. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +18 -0
  99. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +19 -1
  100. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +18 -0
  101. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +18 -0
  102. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +18 -0
  103. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +18 -0
  104. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +18 -0
  105. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +18 -0
  106. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +18 -0
  107. package/lib/types/traditionArtifacts/SickleRitual.d.ts +18 -0
  108. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +18 -0
  109. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +18 -0
  110. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +18 -0
  111. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +18 -0
  112. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +18 -0
  113. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +18 -0
  114. package/package.json +2 -2
  115. package/schema/Advantage.schema.json +9 -0
  116. package/schema/ArcaneBardTradition.schema.json +1 -1
  117. package/schema/ArcaneDancerTradition.schema.json +1 -1
  118. package/schema/Ceremony.schema.json +1 -1
  119. package/schema/DerivedCharacteristic.schema.json +1 -1
  120. package/schema/Disadvantage.schema.json +9 -0
  121. package/schema/FamiliarsTrick.schema.json +1 -0
  122. package/schema/LiturgicalChant.schema.json +1 -1
  123. package/schema/Ritual.schema.json +1 -1
  124. package/schema/Spell.schema.json +1 -1
  125. package/schema/_Activatable.schema.json +2447 -239
  126. package/schema/_ActivatableSkill.schema.json +1 -0
  127. package/schema/_Enhancements.schema.json +1 -1
  128. package/schema/_Identifier.schema.json +329 -146
  129. package/schema/_Influence.schema.json +4 -0
  130. package/schema/_Prerequisite.schema.json +887 -675
  131. package/schema/magicalActions/AnimistPower.schema.json +4 -0
  132. package/schema/magicalActions/Curse.schema.json +1 -1
  133. package/schema/magicalActions/ElvenMagicalSong.schema.json +1 -1
  134. package/schema/magicalActions/GeodeRitual.schema.json +1 -1
  135. package/schema/prerequisites/ConditionalPrerequisites.schema.json +15 -0
  136. package/schema/prerequisites/DisplayOption.schema.json +48 -0
  137. package/schema/prerequisites/PrerequisiteGroups.schema.json +246 -0
  138. package/schema/prerequisites/single/ActivatablePrerequisite.schema.json +142 -0
  139. package/schema/prerequisites/single/AnimistPowerPrerequisite.schema.json +40 -0
  140. package/schema/prerequisites/single/CommonSuggestedByRCPPrerequisite.schema.json +18 -0
  141. package/schema/prerequisites/single/CulturePrerequisite.schema.json +27 -0
  142. package/schema/prerequisites/single/EnhancementPrerequisite.schema.json +54 -0
  143. package/schema/prerequisites/single/InfluencePrerequisite.schema.json +33 -0
  144. package/schema/prerequisites/single/PactPrerequisite.schema.json +46 -0
  145. package/schema/prerequisites/single/PrimaryAttributePrerequisite.schema.json +58 -0
  146. package/schema/prerequisites/single/PublicationPrerequisite.schema.json +27 -0
  147. package/schema/prerequisites/single/RacePrerequisite.schema.json +31 -0
  148. package/schema/prerequisites/single/RatedPrerequisite.schema.json +184 -0
  149. package/schema/prerequisites/single/RulePrerequisite.schema.json +26 -0
  150. package/schema/prerequisites/single/SexPrerequisite.schema.json +27 -0
  151. package/schema/prerequisites/single/SocialStatusPrerequisite.schema.json +30 -0
  152. package/schema/prerequisites/single/StatePrerequisite.schema.json +27 -0
  153. package/schema/prerequisites/single/TextPrerequisite.schema.json +63 -0
  154. package/schema/prerequisites/single/TraditionPrerequisite.schema.json +96 -0
  155. package/schema/source/Publication.schema.json +1 -1
  156. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +15 -0
  157. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +9 -0
  158. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +9 -0
  159. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +9 -0
  160. package/schema/specialAbility/AncestorGlyph.schema.json +9 -0
  161. package/schema/specialAbility/BlessedTradition.schema.json +7 -1
  162. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +9 -0
  163. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +9 -0
  164. package/schema/specialAbility/CombatSpecialAbility.schema.json +15 -0
  165. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +9 -0
  166. package/schema/specialAbility/CommandSpecialAbility.schema.json +9 -0
  167. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +9 -0
  168. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +9 -0
  169. package/schema/specialAbility/FatePointSpecialAbility.schema.json +9 -0
  170. package/schema/specialAbility/GeneralSpecialAbility.schema.json +9 -0
  171. package/schema/specialAbility/KarmaSpecialAbility.schema.json +9 -0
  172. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +9 -0
  173. package/schema/specialAbility/LycantropicGift.schema.json +9 -0
  174. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +9 -0
  175. package/schema/specialAbility/MagicalSpecialAbility.schema.json +9 -0
  176. package/schema/specialAbility/MagicalTradition.schema.json +6 -0
  177. package/schema/specialAbility/PactGift.schema.json +10 -1
  178. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +9 -0
  179. package/schema/specialAbility/Sermon.schema.json +9 -0
  180. package/schema/specialAbility/SexSpecialAbility.schema.json +9 -0
  181. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +9 -0
  182. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +9 -0
  183. package/schema/specialAbility/VampiricGift.schema.json +9 -0
  184. package/schema/specialAbility/Vision.schema.json +9 -0
  185. package/schema/specialAbility/sub/Language.schema.json +1 -1
  186. package/schema/specialAbility/sub/TradeSecret.schema.json +3 -0
  187. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +27 -1
  188. package/schema/traditionArtifacts/AttireEnchantment.schema.json +27 -1
  189. package/schema/traditionArtifacts/BowlEnchantment.schema.json +27 -1
  190. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +30 -4
  191. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +27 -1
  192. package/schema/traditionArtifacts/DaggerRitual.schema.json +27 -1
  193. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +27 -1
  194. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +27 -1
  195. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +27 -1
  196. package/schema/traditionArtifacts/OrbEnchantment.schema.json +27 -1
  197. package/schema/traditionArtifacts/RingEnchantment.schema.json +27 -1
  198. package/schema/traditionArtifacts/SickleRitual.schema.json +27 -1
  199. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +27 -1
  200. package/schema/traditionArtifacts/StaffEnchantment.schema.json +27 -1
  201. package/schema/traditionArtifacts/ToyEnchantment.schema.json +27 -1
  202. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +27 -1
  203. package/schema/traditionArtifacts/WandEnchantment.schema.json +27 -1
  204. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +27 -1
@@ -2,8 +2,12 @@
2
2
  * General type specifications used by multiple activatable entries.
3
3
  * @title Activatable
4
4
  */
5
- import { Identifier } from "./_Identifier";
6
- import { Prerequisite } from "./_Prerequisite";
5
+ import { DisplayOption } from "./prerequisites/DisplayOption";
6
+ import { Errata } from "./source/_Erratum";
7
+ import { PublicationRefs } from "./source/_PublicationRef";
8
+ import { Duration } from "./_ActivatableSkill";
9
+ import { ActivatableIdentifier, AdvancedSpecialAbilityRestrictedOptionIdentifier, CombatRelatedSpecialAbilityIdentifier, CombatTechniqueIdentifier, MagicalTraditionIdentifier, PatronIdentifier, VolumePointsOptionReferenceIdentifier } from "./_Identifier";
10
+ import { GeneralPrerequisites } from "./_Prerequisite";
7
11
  /**
8
12
  * The activatable entry's identifier. An unique, increasing integer.
9
13
  * @integer
@@ -28,13 +32,694 @@ export declare type NameInLibrary = string;
28
32
  */
29
33
  export declare type Levels = number;
30
34
  /**
35
+ * The number stating how often you can buy the entry. The **default** depends on
36
+ * the entry type:
31
37
  *
38
+ * - **Advantage:** `1` in all cases (as specified in the **Core Rules**)
39
+ * - **Disadvantage:** `1` in all cases (as specified in the **Core Rules**)
40
+ * - **Special Abilities:** `1` if no options can be selected, otherwise the
41
+ * number of possible options
42
+ *
43
+ * The maximum is only set if it differs from the defaults specified above.
44
+ * @integer
45
+ * @minimum 1
32
46
  */
33
- export declare type Maximum = "";
47
+ export declare type Maximum = number;
34
48
  /**
49
+ * Definitions for possible options for the activatable entry. They can either
50
+ * be derived from entry categories or be defined explicitly. Both can happen as
51
+ * well, but if there is an explicitly defined select option and a derived
52
+ * select option has the same identifier (which may only happen if skill or
53
+ * combat technique identifiers are used for explicit select options), the
54
+ * explicit definition overwrites the derived option.
35
55
  *
56
+ * Note that this is only a full definition of options for simple logic that can
57
+ * be made explicit using the more detailed configuration for both derived
58
+ * categories and explicit options. There are quite a few entries whose option
59
+ * logic cannot be fully represented here, so that it needs to be implemented
60
+ * manually.
61
+ * @minProperties 1
36
62
  */
37
- export declare type Options = "";
63
+ export declare type SelectOptions = {
64
+ /**
65
+ * A list of categories with optional further configuration. All available
66
+ * entries from the specified categories will be included as separate select
67
+ * options. You can also specify a set of groups that should only be
68
+ * included. Groups not mentioned will be excluded then.
69
+ * @minItems 1
70
+ */
71
+ derived?: CategoryOption[];
72
+ /**
73
+ * A list of explicit select options. If the identifier has a specific type,
74
+ * its entry is the base of this select option, where values defined here
75
+ * override values from the base. Define the `src` property if the options
76
+ * are not derived from the rules text of the advantage/disadvantage/special
77
+ * ability but instead are listed in a separate block and/or on a separate
78
+ * page.
79
+ * @minItems 1
80
+ */
81
+ explicit?: ExplicitOption[];
82
+ };
83
+ declare type CategoryOption = {
84
+ tag: "Blessings";
85
+ } | {
86
+ tag: "Cantrips";
87
+ } | {
88
+ tag: "TradeSecrets";
89
+ } | {
90
+ tag: "Scripts";
91
+ } | {
92
+ tag: "AnimalShapes";
93
+ } | {
94
+ tag: "ArcaneBardTraditions";
95
+ } | {
96
+ tag: "ArcaneDancerTraditions";
97
+ } | {
98
+ tag: "SexPractices";
99
+ } | {
100
+ tag: "Races";
101
+ } | {
102
+ tag: "Cultures";
103
+ } | {
104
+ tag: "BlessedTraditions";
105
+ /**
106
+ * Should the principles (code) of the tradition be required to select the
107
+ * respective tradition?
108
+ */
109
+ require_principles?: true;
110
+ } | {
111
+ tag: "Elements";
112
+ /**
113
+ * Only include entries with the listed identifiers.
114
+ * @minItems 1
115
+ * @uniqueItems
116
+ */
117
+ specific?: {
118
+ /**
119
+ * The element's identifier.
120
+ * @integer
121
+ * @minimum 1
122
+ * @maximum 6
123
+ */
124
+ id: number;
125
+ }[];
126
+ } | {
127
+ tag: "Properties";
128
+ /**
129
+ * Does each property require it's corresponding property knowledge?
130
+ */
131
+ require_knowledge?: true;
132
+ /**
133
+ * Require a minimum number of spellworks of the respective property to be
134
+ * on a minimum skill rating.
135
+ */
136
+ require_minimum_spellworks_on?: {
137
+ /**
138
+ * The minimum number of spellworks that need to be on the defined minimum
139
+ * skill rating.
140
+ * @integer
141
+ * @minimum 1
142
+ */
143
+ number: number;
144
+ /**
145
+ * The minimum skill rating the defined minimum number of spellworks need
146
+ * to be on.
147
+ * @integer
148
+ * @minimum 1
149
+ */
150
+ value: number;
151
+ };
152
+ } | {
153
+ tag: "Aspects";
154
+ /**
155
+ * Does each aspect require it's corresponding aspect knowledge?
156
+ */
157
+ require_knowledge?: true;
158
+ /**
159
+ * The generated name should be the *Master of (Aspect)* suffix for this
160
+ * aspect instead of the aspect's name. If an aspect does not provide a
161
+ * suffix (such as the General aspect), it is automatically excluded from
162
+ * the list.
163
+ */
164
+ use_master_of_suffix_as_name?: true;
165
+ /**
166
+ * Require a minimum number of liturgies of the respective aspect to be on a
167
+ * minimum skill rating.
168
+ */
169
+ require_minimum_liturgies_on?: {
170
+ /**
171
+ * The minimum number of liturgies that need to be on the defined minimum
172
+ * skill rating.
173
+ * @integer
174
+ * @minimum 1
175
+ */
176
+ number: number;
177
+ /**
178
+ * The minimum skill rating the defined minimum number of liturgies need
179
+ * to be on.
180
+ * @integer
181
+ * @minimum 1
182
+ */
183
+ value: number;
184
+ };
185
+ } | {
186
+ tag: "Diseases";
187
+ /**
188
+ * Only convert half the disease level into the AP value.
189
+ */
190
+ use_half_level_as_ap_value?: true;
191
+ } | {
192
+ tag: "Poisons";
193
+ /**
194
+ * Only convert half the poison level into the AP value.
195
+ */
196
+ use_half_level_as_ap_value?: true;
197
+ } | {
198
+ tag: "Languages";
199
+ /**
200
+ * Generate prerequisites for each entry of the category.
201
+ * @minItems 1
202
+ */
203
+ prerequisites?: OptionOptionPrerequisite[];
204
+ } | {
205
+ tag: "Skills";
206
+ /**
207
+ * Only include entries of the specified groups.
208
+ * @minItems 1
209
+ */
210
+ groups?: {
211
+ /**
212
+ * The skill group's identifier.
213
+ * @integer
214
+ * @minimum 1
215
+ * @maximum 5
216
+ */
217
+ id: number;
218
+ }[];
219
+ /**
220
+ * Only include (`Intersection`) or exclude (`Difference`) specific skills.
221
+ */
222
+ specific?: {
223
+ operation: {
224
+ tag: "Intersection";
225
+ } | {
226
+ tag: "Difference";
227
+ };
228
+ /**
229
+ * The list of specific skills.
230
+ * @minItems 1
231
+ * @uniqueItems
232
+ */
233
+ list: {
234
+ /**
235
+ * The skill's identifier.
236
+ * @integer
237
+ * @minimum 1
238
+ * @maximum 59
239
+ */
240
+ id: number;
241
+ }[];
242
+ };
243
+ /**
244
+ * Registers new applications, which get enabled once this entry is
245
+ * activated with its respective select option. It specifies an entry-unique
246
+ * identifier, the skill it belongs to is derived from the select option
247
+ * automatically. A translation can be left out if its name equals the name
248
+ * of the origin entry.
249
+ */
250
+ skill_applications?: SkillApplications;
251
+ /**
252
+ * Registers uses, which get enabled once this entry is activated with its
253
+ * respective select option. It specifies an entry-unique identifier, the
254
+ * skill it belongs to is derived from the select option automatically. A
255
+ * translation can be left out if its name equals the name of the origin
256
+ * entry.
257
+ */
258
+ skill_uses?: SkillUses;
259
+ /**
260
+ * Generate prerequisites for each entry of the category.
261
+ * @minItems 1
262
+ */
263
+ prerequisites?: ({
264
+ tag: "Self";
265
+ /**
266
+ * The entry requires itself on a certain Skill Rating.
267
+ * @integer
268
+ * @minimum 1
269
+ */
270
+ value: number;
271
+ } | OptionOptionPrerequisite)[];
272
+ /**
273
+ * Generate AP values for each entry.
274
+ */
275
+ ap_value?: {
276
+ tag: "DerivedFromImprovementCost";
277
+ /**
278
+ * This number is multiplied with the improvement cost of the entry
279
+ * (A = 1 to D = 4).
280
+ * @integer
281
+ * @minimum 2
282
+ */
283
+ multiplier?: number;
284
+ } | {
285
+ tag: "Fixed";
286
+ /**
287
+ * A mapping of skill identifiers to their specific AP values.
288
+ */
289
+ map: {
290
+ /**
291
+ * The skill's identifier.
292
+ * @integer
293
+ * @minimum 1
294
+ */
295
+ skill_id: number;
296
+ /**
297
+ * The AP value for the specified entry.
298
+ * @integer
299
+ * @minimum 1
300
+ */
301
+ ap_value: number;
302
+ }[];
303
+ /**
304
+ * The default value of an entry. Used as a fallback if no value is
305
+ * found in `list`.
306
+ * @integer
307
+ * @minimum 1
308
+ */
309
+ default: number;
310
+ };
311
+ } | {
312
+ tag: "Skills";
313
+ /**
314
+ * Only include entries of the specified groups.
315
+ * @minItems 1
316
+ */
317
+ groups?: {
318
+ /**
319
+ * The skill group's identifier.
320
+ * @integer
321
+ * @minimum 1
322
+ * @maximum 5
323
+ */
324
+ id: number;
325
+ }[];
326
+ /**
327
+ * Only include (`Intersection`) or exclude (`Difference`) specific skills.
328
+ */
329
+ specific?: {
330
+ operation: {
331
+ tag: "Intersection";
332
+ } | {
333
+ tag: "Difference";
334
+ };
335
+ /**
336
+ * The list of specific skills.
337
+ * @minItems 1
338
+ * @uniqueItems
339
+ */
340
+ list: {
341
+ /**
342
+ * The skill's identifier.
343
+ * @integer
344
+ * @minimum 1
345
+ * @maximum 59
346
+ */
347
+ id: number;
348
+ }[];
349
+ };
350
+ /**
351
+ * Registers new applications, which get enabled once this entry is
352
+ * activated with its respective select option. It specifies an entry-unique
353
+ * identifier, the skill it belongs to is derived from the select option
354
+ * automatically. A translation can be left out if its name equals the name
355
+ * of the origin entry.
356
+ * @minItems 1
357
+ */
358
+ skill_applications?: {
359
+ /**
360
+ * The application's identifier. An entry-unique, increasing integer.
361
+ * @integer
362
+ * @minimum 1
363
+ */
364
+ id: number;
365
+ /**
366
+ * All translations for the entry, identified by IETF language tag (BCP47).
367
+ * @minProperties 1
368
+ */
369
+ translations?: {
370
+ /**
371
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
372
+ */
373
+ [localeId: string]: {
374
+ /**
375
+ * The name of the application if different from the activatable entry's
376
+ * name.
377
+ * @minLength 1
378
+ */
379
+ name: string;
380
+ };
381
+ };
382
+ }[];
383
+ /**
384
+ * Registers uses, which get enabled once this entry is activated with its
385
+ * respective select option. It specifies an entry-unique identifier, the
386
+ * skill it belongs to is derived from the select option automatically. A
387
+ * translation can be left out if its name equals the name of the origin
388
+ * entry.
389
+ * @minItems 1
390
+ */
391
+ skill_uses?: {
392
+ /**
393
+ * The use's identifier. An entry-unique, increasing integer.
394
+ * @integer
395
+ * @minimum 1
396
+ */
397
+ id: number;
398
+ /**
399
+ * All translations for the entry, identified by IETF language tag (BCP47).
400
+ * @minProperties 1
401
+ */
402
+ translations?: {
403
+ /**
404
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
405
+ */
406
+ [localeId: string]: {
407
+ /**
408
+ * The name of the use if different from the activatable entry's name.
409
+ * @minLength 1
410
+ */
411
+ name: string;
412
+ };
413
+ };
414
+ }[];
415
+ /**
416
+ * Generate prerequisites for each entry of the category.
417
+ * @minItems 1
418
+ */
419
+ prerequisites?: (OptionSkillSelfPrerequisite | OptionOptionPrerequisite)[];
420
+ /**
421
+ * Generate AP values for each entry.
422
+ */
423
+ ap_value?: OptionSkillDeriveAdventurePointsValue;
424
+ } | {
425
+ tag: NonSkillSkillCategory;
426
+ /**
427
+ * Only include (`Intersection`) or exclude (`Difference`) specific entries.
428
+ */
429
+ specific?: {
430
+ operation: {
431
+ tag: "Intersection";
432
+ } | {
433
+ tag: "Difference";
434
+ };
435
+ /**
436
+ * The list of specific entries.
437
+ * @minItems 1
438
+ * @uniqueItems
439
+ */
440
+ list: {
441
+ /**
442
+ * The entry's identifier.
443
+ * @integer
444
+ * @minimum 1
445
+ * @maximum 59
446
+ */
447
+ id: number;
448
+ }[];
449
+ };
450
+ /**
451
+ * Generate prerequisites for each entry of the category.
452
+ * @minItems 1
453
+ */
454
+ prerequisites?: (OptionSkillSelfPrerequisite | OptionOptionPrerequisite)[];
455
+ /**
456
+ * Generate AP values for each entry.
457
+ */
458
+ ap_value?: OptionSkillDeriveAdventurePointsValue;
459
+ };
460
+ declare enum NonSkillSkillCategory {
461
+ CloseCombatTechniques = "CloseCombatTechniques",
462
+ RangedCombatTechniques = "RangedCombatTechniques",
463
+ LiturgicalChants = "LiturgicalChants",
464
+ Ceremonies = "Ceremonies",
465
+ Spells = "Spells",
466
+ Rituals = "Rituals"
467
+ }
468
+ declare type OptionSkillSelfPrerequisite = {
469
+ tag: "Self";
470
+ /**
471
+ * The entry requires itself on a certain Skill Rating.
472
+ * @integer
473
+ * @minimum 1
474
+ */
475
+ value: number;
476
+ };
477
+ /**
478
+ * The entry requires or prohibits itself as a select option of another entry.
479
+ */
480
+ declare type OptionOptionPrerequisite = {
481
+ tag: "SelectOption";
482
+ /**
483
+ * The target entry's identifier.
484
+ */
485
+ id: ActivatableIdentifier;
486
+ /**
487
+ * Is the select option required (`true`) or prohibited (`false`)?
488
+ */
489
+ active: boolean;
490
+ /**
491
+ * The required level, if any.
492
+ * @integer
493
+ * @minimum 2
494
+ */
495
+ level?: number;
496
+ };
497
+ /**
498
+ * Generate AP values for each entry.
499
+ */
500
+ declare type OptionSkillDeriveAdventurePointsValue = {
501
+ tag: "DerivedFromImprovementCost";
502
+ /**
503
+ * This number is multiplied with the improvement cost of the entry
504
+ * (A = 1 to D = 4).
505
+ * @integer
506
+ * @minimum 2
507
+ */
508
+ multiplier?: number;
509
+ } | {
510
+ tag: "Fixed";
511
+ /**
512
+ * A mapping of skill identifiers to their specific AP values.
513
+ */
514
+ map: {
515
+ /**
516
+ * The skill's identifier.
517
+ * @integer
518
+ * @minimum 1
519
+ */
520
+ skill_id: number;
521
+ /**
522
+ * The AP value for the specified entry.
523
+ * @integer
524
+ * @minimum 1
525
+ */
526
+ ap_value: number;
527
+ }[];
528
+ /**
529
+ * The default value of an entry. Used as a fallback if no value is
530
+ * found in `list`.
531
+ * @integer
532
+ * @minimum 1
533
+ */
534
+ default: number;
535
+ };
536
+ declare type ExplicitOption = {
537
+ tag: "General";
538
+ /**
539
+ * The option's identifier. An unique, increasing integer.
540
+ * @integer
541
+ * @minimum 1
542
+ */
543
+ id: number;
544
+ /**
545
+ * Sometimes, professions use specific text selections that are not
546
+ * contained in described lists. This ensures you can use them for
547
+ * professions only. They are not going to be displayed as options to the
548
+ * user.
549
+ */
550
+ profession_only?: true;
551
+ /**
552
+ * Registers new applications, which get enabled once this entry is
553
+ * activated with its respective select option. It specifies an entry-unique
554
+ * identifier and the skill it belongs to. A translation can be left out if
555
+ * its name equals the name of the origin select option.
556
+ */
557
+ skill_applications?: SkillApplications;
558
+ /**
559
+ * Registers uses, which get enabled once this entry is activated with its
560
+ * respective select option. It specifies an entry-unique identifier and the
561
+ * skill it belongs to. A translation can be left out if its name equals the
562
+ * name of the origin select option.
563
+ */
564
+ skill_uses?: SkillUses;
565
+ prerequisites?: GeneralPrerequisites;
566
+ /**
567
+ * Specific AP cost for the select option.
568
+ * @integer
569
+ * @minimum 1
570
+ */
571
+ ap_value?: number;
572
+ src?: PublicationRefs;
573
+ /**
574
+ * All translations for the entry, identified by IETF language tag (BCP47).
575
+ * @minProperties 1
576
+ */
577
+ translations: {
578
+ /**
579
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
580
+ */
581
+ [localeId: string]: {
582
+ /**
583
+ * The name of the select option.
584
+ * @minLength 1
585
+ */
586
+ name: string;
587
+ /**
588
+ * The name of the select option when displayed in a generated
589
+ * profession text.
590
+ * @minLength 1
591
+ */
592
+ name_in_profession?: string;
593
+ /**
594
+ * The description of the select option. Useful for Bad Habits, Trade
595
+ * Secrets and other entries where a description is available.
596
+ * @markdown
597
+ * @minLength 1
598
+ */
599
+ description?: string;
600
+ errata?: Errata;
601
+ };
602
+ };
603
+ } | {
604
+ tag: "Skill";
605
+ /**
606
+ * The skill's identifier. An unique, increasing integer.
607
+ * @integer
608
+ * @minimum 1
609
+ */
610
+ id: number;
611
+ /**
612
+ * Registers new applications, which get enabled once this entry is
613
+ * activated with its respective select option. It specifies an entry-unique
614
+ * identifier and the skill it belongs to. A translation can be left out if
615
+ * its name equals the name of the origin select option.
616
+ * @minItems 1
617
+ */
618
+ skill_applications?: {
619
+ /**
620
+ * The application's identifier. An entry-unique, increasing integer.
621
+ * @integer
622
+ * @minimum 1
623
+ */
624
+ id: number;
625
+ /**
626
+ * All translations for the entry, identified by IETF language tag (BCP47).
627
+ * @minProperties 1
628
+ */
629
+ translations?: {
630
+ /**
631
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
632
+ */
633
+ [localeId: string]: {
634
+ /**
635
+ * The name of the application if different from the activatable entry's
636
+ * name.
637
+ * @minLength 1
638
+ */
639
+ name: string;
640
+ };
641
+ };
642
+ }[];
643
+ /**
644
+ * Registers uses, which get enabled once this entry is activated with its
645
+ * respective select option. It specifies an entry-unique identifier and the
646
+ * skill it belongs to. A translation can be left out if its name equals the
647
+ * name of the origin select option.
648
+ * @minItems 1
649
+ */
650
+ skill_uses?: {
651
+ /**
652
+ * The use's identifier. An entry-unique, increasing integer.
653
+ * @integer
654
+ * @minimum 1
655
+ */
656
+ id: number;
657
+ /**
658
+ * All translations for the entry, identified by IETF language tag (BCP47).
659
+ * @minProperties 1
660
+ */
661
+ translations?: {
662
+ /**
663
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
664
+ */
665
+ [localeId: string]: {
666
+ /**
667
+ * The name of the use if different from the activatable entry's name.
668
+ * @minLength 1
669
+ */
670
+ name: string;
671
+ };
672
+ };
673
+ }[];
674
+ prerequisites?: GeneralPrerequisites;
675
+ /**
676
+ * Specific AP cost for the select option.
677
+ * @integer
678
+ * @minimum 1
679
+ */
680
+ ap_value?: number;
681
+ src?: PublicationRefs;
682
+ /**
683
+ * All translations for the entry, identified by IETF language tag (BCP47).
684
+ * @minProperties 1
685
+ */
686
+ translations?: {
687
+ /**
688
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
689
+ * @minProperties 1
690
+ */
691
+ [localeId: string]: {
692
+ errata?: Errata;
693
+ };
694
+ };
695
+ } | {
696
+ tag: "CombatTechnique";
697
+ /**
698
+ * The combat technique's identifier.
699
+ */
700
+ id: CombatTechniqueIdentifier;
701
+ prerequisites?: GeneralPrerequisites;
702
+ /**
703
+ * Specific AP cost for the select option.
704
+ * @integer
705
+ * @minimum 1
706
+ */
707
+ ap_value?: number;
708
+ src?: PublicationRefs;
709
+ /**
710
+ * All translations for the entry, identified by IETF language tag (BCP47).
711
+ * @minProperties 1
712
+ */
713
+ translations?: {
714
+ /**
715
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
716
+ * @minProperties 1
717
+ */
718
+ [localeId: string]: {
719
+ errata?: Errata;
720
+ };
721
+ };
722
+ };
38
723
  /**
39
724
  * The rule text.
40
725
  * @markdown
@@ -64,104 +749,670 @@ export declare type CombatSpecialAbilityType = {
64
749
  * activatable entry.
65
750
  * @minItems 1
66
751
  */
67
- export declare type SkillApplications = {
752
+ export declare type SkillApplications = {
753
+ /**
754
+ * The application's identifier. An entry-unique, increasing integer.
755
+ * @integer
756
+ * @minimum 1
757
+ */
758
+ id: number;
759
+ /**
760
+ * The skill(s) this application belongs to.
761
+ */
762
+ skill: {
763
+ tag: "Single";
764
+ /**
765
+ * The referenced skill's identifier.
766
+ * @integer
767
+ * @minimum 1
768
+ */
769
+ id: number;
770
+ } | {
771
+ tag: "Multiple";
772
+ /**
773
+ * The skills this application belongs to.
774
+ * @minItems 2
775
+ */
776
+ list: {
777
+ /**
778
+ * The referenced skill's identifier.
779
+ * @integer
780
+ * @minimum 1
781
+ */
782
+ id: number;
783
+ }[];
784
+ /**
785
+ * If an application applies to multiple skills, it may need to ensure the
786
+ * respective skill is on a certain skill rating if the activatable entry
787
+ * cannot ensure this prerequisite.
788
+ * @integer
789
+ * @minimum 1
790
+ */
791
+ required_skill_rating?: number;
792
+ };
793
+ /**
794
+ * All translations for the entry, identified by IETF language tag (BCP47).
795
+ * @minProperties 1
796
+ */
797
+ translations?: {
798
+ /**
799
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
800
+ */
801
+ [localeId: string]: {
802
+ /**
803
+ * The name of the application if different from the activatable entry's
804
+ * name.
805
+ * @minLength 1
806
+ */
807
+ name: string;
808
+ };
809
+ };
810
+ }[];
811
+ /**
812
+ * Registers uses, which get enabled once this entry is activated. It specifies
813
+ * an entry-unique identifier and the skill it belongs to. A translation can be
814
+ * left out if its name equals the name of the origin activatable entry.
815
+ * @minItems 1
816
+ */
817
+ export declare type SkillUses = {
818
+ /**
819
+ * The use's identifier. An entry-unique, increasing integer.
820
+ * @integer
821
+ * @minimum 1
822
+ */
823
+ id: number;
824
+ /**
825
+ * The skill(s) this use belongs to.
826
+ */
827
+ skill: {
828
+ tag: "Single";
829
+ /**
830
+ * The referenced skill's identifier.
831
+ * @integer
832
+ * @minimum 1
833
+ */
834
+ id: number;
835
+ } | {
836
+ tag: "Multiple";
837
+ /**
838
+ * The skills this use belongs to.
839
+ * @minItems 2
840
+ */
841
+ list: {
842
+ /**
843
+ * The referenced skill's identifier.
844
+ * @integer
845
+ * @minimum 1
846
+ */
847
+ id: number;
848
+ }[];
849
+ };
850
+ /**
851
+ * All translations for the entry, identified by IETF language tag (BCP47).
852
+ * @minProperties 1
853
+ */
854
+ translations?: {
855
+ /**
856
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
857
+ */
858
+ [localeId: string]: {
859
+ /**
860
+ * The name of the use if different from the activatable entry's name.
861
+ * @minLength 1
862
+ */
863
+ name: string;
864
+ };
865
+ };
866
+ }[];
867
+ /**
868
+ * The penalty the special ability gives when used.
869
+ */
870
+ export declare type Penalty = {
871
+ tag: "Single";
872
+ /**
873
+ * The penalty value.
874
+ * @integer
875
+ */
876
+ value: number;
877
+ /**
878
+ * Set to `true` if the penalty applies to the parry instead of the attack.
879
+ */
880
+ applies_to_parry?: true;
881
+ } | {
882
+ tag: "ByHandedness";
883
+ /**
884
+ * The penalty value for one-handed weapons.
885
+ * @integer
886
+ */
887
+ one_handed: number;
888
+ /**
889
+ * The penalty value for two-handed weapons.
890
+ * @integer
891
+ */
892
+ two_handed: number;
893
+ /**
894
+ * Set to `true` if the penalty applies to the parry instead of the attack.
895
+ */
896
+ applies_to_parry?: true;
897
+ } | {
898
+ tag: "ByActivation";
899
+ /**
900
+ * The penalty value if the entry has been bought by the character.
901
+ * @integer
902
+ */
903
+ active: number;
904
+ /**
905
+ * The penalty value if the entry has not been bought by the character.
906
+ * @integer
907
+ */
908
+ inactive: number;
909
+ /**
910
+ * Set to `true` if the penalty applies to the parry instead of the attack.
911
+ */
912
+ applies_to_parry?: true;
913
+ } | {
914
+ tag: "Selection";
915
+ options: {
916
+ tag: "Specific";
917
+ /**
918
+ * The list of specific penalty options.
919
+ * @minItems 2
920
+ * @uniqueItems
921
+ */
922
+ list: {
923
+ /**
924
+ * The penalty value.
925
+ * @integer
926
+ */
927
+ value: number;
928
+ }[];
929
+ } | {
930
+ tag: "Range";
931
+ /**
932
+ * The minimum penalty value.
933
+ * @integer
934
+ */
935
+ minimum: number;
936
+ /**
937
+ * The maximum penalty value.
938
+ * @integer
939
+ */
940
+ maximum: number;
941
+ };
942
+ } | {
943
+ tag: "ByLevel";
944
+ /**
945
+ * A continuous range of penalties for each level. The first element is the
946
+ * penalty for the first level, the second element is the penalty for the
947
+ * second level, and so on.
948
+ * @minItems 2
949
+ */
950
+ levels: {
951
+ /**
952
+ * The penalty value for this level.
953
+ * @integer
954
+ */
955
+ value: number;
956
+ }[];
957
+ /**
958
+ * The identifier of the combat-related special ability of which the level
959
+ * defines the penalty instead.
960
+ */
961
+ external_id?: CombatRelatedSpecialAbilityIdentifier;
962
+ } | {
963
+ tag: "ByAttack";
964
+ /**
965
+ * A list of penalties for subsequent attacks. The first element is the
966
+ * penalty for the first attack, the second element is the penalty for the
967
+ * second attack, and so on. The order of the first element may be changed
968
+ * using `initial_order`, so that e.g. if set to `2`, the first element is
969
+ * the penalty for the second attack, the second element is the penalty for
970
+ * the third attack, and so on.
971
+ * @minItems 1
972
+ */
973
+ list: {
974
+ /**
975
+ * The penalty value for this order.
976
+ * @integer
977
+ */
978
+ value: number;
979
+ }[];
980
+ /**
981
+ * The order of the first element in the `list` of penalties.
982
+ */
983
+ initial_order?: number;
984
+ /**
985
+ * Set if a predefined different word should be used instead of the word
986
+ * `attack` for display purposes.
987
+ */
988
+ attack_replacement?: {
989
+ tag: "Throw";
990
+ };
991
+ } | {
992
+ tag: "DependsOnHitZone";
993
+ };
994
+ export declare type EnchantmentCost = {
995
+ tag: "ArcaneEnergyCost";
996
+ ae_cost: ArcaneEnergyCost;
997
+ } | {
998
+ tag: "BindingCost";
999
+ binding_cost: BindingCost;
1000
+ };
1001
+ /**
1002
+ * The AE Cost.
1003
+ */
1004
+ export declare type ArcaneEnergyCost = {
1005
+ tag: "Fixed";
68
1006
  /**
69
- * The application's identifier. An entry-unique, increasing integer.
1007
+ * The AE cost value.
70
1008
  * @integer
71
1009
  * @minimum 1
72
1010
  */
73
- id: number;
1011
+ value: number;
74
1012
  /**
75
- * The skill(s) this application belongs to.
1013
+ * Set to `true` if the AE costs are permanent.
1014
+ * @integer
1015
+ * @minimum 1
76
1016
  */
77
- skill: {
78
- tag: "Single";
1017
+ is_permanent?: true;
1018
+ /**
1019
+ * Specified if the AE cost `value` has to be paid for each time interval.
1020
+ */
1021
+ interval?: Duration.UnitValue;
1022
+ /**
1023
+ * The AE cost are per level of the enchantment. It may either be displayed
1024
+ * in a compressed way (e.g. `1 AE per level`) or in a verbose way (e.g. `1
1025
+ * AE for level I; 2 AE for level II`).
1026
+ */
1027
+ per_level?: {
1028
+ tag: "Compressed";
1029
+ } | {
1030
+ tag: "Verbose";
1031
+ };
1032
+ /**
1033
+ * All translations for the entry, identified by IETF language tag
1034
+ * (BCP47).
1035
+ * @minProperties 1
1036
+ */
1037
+ translations?: {
79
1038
  /**
80
- * The referenced skill's identifier.
1039
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1040
+ * @minProperties 1
1041
+ */
1042
+ [localeId: string]: {
1043
+ /**
1044
+ * A note, appended to the generated string in parenthesis.
1045
+ */
1046
+ note?: {
1047
+ /**
1048
+ * The full note.
1049
+ * @minLength 1
1050
+ */
1051
+ default: string;
1052
+ /**
1053
+ * A compressed note, if applicable. If not specified it should not
1054
+ * be displayed in small location.
1055
+ * @minLength 1
1056
+ */
1057
+ compressed?: string;
1058
+ };
1059
+ };
1060
+ };
1061
+ } | {
1062
+ tag: "PerCountable";
1063
+ /**
1064
+ * The AE cost value that has to be per a specific countable entity.
1065
+ * @integer
1066
+ * @minimum 1
1067
+ */
1068
+ value: number;
1069
+ /**
1070
+ * If defined, in addition to the cost per entity you have to pay a flat
1071
+ * amount, regardless of the entity count.
1072
+ * @integer
1073
+ * @minimum 1
1074
+ */
1075
+ base_value?: number;
1076
+ /**
1077
+ * All translations for the entry, identified by IETF language tag
1078
+ * (BCP47).
1079
+ * @minProperties 1
1080
+ */
1081
+ translations?: {
1082
+ /**
1083
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1084
+ * @minProperties 1
1085
+ */
1086
+ [localeId: string]: {
1087
+ /**
1088
+ * The cost have to be per a specific countable entity, e.g. `8 AE per
1089
+ * person`.
1090
+ */
1091
+ per: {
1092
+ /**
1093
+ * The full countable entity name.
1094
+ * @minLength 1
1095
+ */
1096
+ default: string;
1097
+ /**
1098
+ * The compressed countable entity name.
1099
+ * @minLength 1
1100
+ */
1101
+ compressed: string;
1102
+ };
1103
+ /**
1104
+ * A note, appended to the generated string in parenthesis.
1105
+ */
1106
+ note?: {
1107
+ /**
1108
+ * The full note.
1109
+ * @minLength 1
1110
+ */
1111
+ default: string;
1112
+ /**
1113
+ * A compressed note, if applicable. If not specified it should not
1114
+ * be displayed in small location.
1115
+ * @minLength 1
1116
+ */
1117
+ compressed?: string;
1118
+ };
1119
+ };
1120
+ };
1121
+ } | {
1122
+ tag: "ActivationAndHalfInterval";
1123
+ /**
1124
+ * The AE cost value that has to be payed for activation. Half of this value
1125
+ * has to be payed each interval.
1126
+ * @integer
1127
+ * @minimum 2
1128
+ * @multipleOf 2
1129
+ */
1130
+ value: number;
1131
+ /**
1132
+ * The time interval for which the AE cost `value` has to be paid.
1133
+ */
1134
+ interval: Duration.UnitValue;
1135
+ } | {
1136
+ tag: "Indefinite";
1137
+ /**
1138
+ * The indefinite AE cost may be modified by a certain value.
1139
+ */
1140
+ modifier: {
1141
+ /**
1142
+ * The arithmetic how to apply the `value` to the indefinite base value.
1143
+ */
1144
+ arithmetic: {
1145
+ tag: "Add";
1146
+ } | {
1147
+ tag: "Multiply";
1148
+ };
1149
+ /**
1150
+ * The value that is applied to the indefinite base value using the
1151
+ * defined `arithmetic`.
81
1152
  * @integer
82
1153
  * @minimum 1
83
1154
  */
84
- id: number;
85
- } | {
86
- tag: "Multiple";
1155
+ value: number;
1156
+ };
1157
+ /**
1158
+ * All translations for the entry, identified by IETF language tag (BCP47).
1159
+ * @minProperties 1
1160
+ */
1161
+ translations: {
87
1162
  /**
88
- * The skills this application belongs to.
89
- * @minItems 2
1163
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
90
1164
  */
91
- list: {
1165
+ [localeId: string]: {
92
1166
  /**
93
- * The referenced skill's identifier.
94
- * @integer
95
- * @minimum 1
1167
+ * A description of where the cost come from.
96
1168
  */
97
- id: number;
98
- }[];
1169
+ description: {
1170
+ /**
1171
+ * The full description of where the cost come from.
1172
+ * @minLength 1
1173
+ */
1174
+ default: string;
1175
+ /**
1176
+ * A compressed description of where the cost come from for use in
1177
+ * small areas (e.g. on character sheet).
1178
+ * @minLength 1
1179
+ */
1180
+ compressed: string;
1181
+ };
1182
+ };
1183
+ };
1184
+ } | {
1185
+ tag: "Disjunction";
1186
+ /**
1187
+ * Specified if the selected AE cost option has to be paid for each time
1188
+ * interval.
1189
+ */
1190
+ interval?: {
99
1191
  /**
100
- * If an application applies to multiple skills, it may need to ensure the
101
- * respective skill is on a certain skill rating if the activatable entry
102
- * cannot ensure this prerequisite.
1192
+ * The interval itself.
1193
+ */
1194
+ value: Duration.UnitValue;
1195
+ /**
1196
+ * The AE cost value for activation.
103
1197
  * @integer
104
1198
  * @minimum 1
105
1199
  */
106
- required_skill_rating?: number;
1200
+ activation_value: number;
1201
+ /**
1202
+ * Set to `true` if the action where the enchantment is casted does
1203
+ * **not** as a part of the first interval that has to be payed, so that
1204
+ * the first interval payment needs to be done after the activation.
1205
+ *
1206
+ * This works different than other sustained spells, since for them the
1207
+ * end of the cast usually already counts as part of the first interval.
1208
+ */
1209
+ after_activation: boolean;
107
1210
  };
108
1211
  /**
109
- * All translations for the entry, identified by IETF language tag (BCP47).
1212
+ * The possible AE cost values.
1213
+ */
1214
+ options: {
1215
+ /**
1216
+ * A possible AE cost value.
1217
+ * @integer
1218
+ * @minimum 1
1219
+ */
1220
+ value: number;
1221
+ /**
1222
+ * All translations for the entry, identified by IETF language tag
1223
+ * (BCP47).
1224
+ * @minProperties 1
1225
+ */
1226
+ translations?: {
1227
+ /**
1228
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1229
+ * @minProperties 1
1230
+ */
1231
+ [localeId: string]: {
1232
+ /**
1233
+ * A note, appended to the generated option string in parenthesis.
1234
+ */
1235
+ note?: {
1236
+ /**
1237
+ * The full note.
1238
+ * @minLength 1
1239
+ */
1240
+ default: string;
1241
+ /**
1242
+ * A compressed note, if applicable. If not specified it should not
1243
+ * be displayed in small location.
1244
+ * @minLength 1
1245
+ */
1246
+ compressed?: string;
1247
+ };
1248
+ };
1249
+ };
1250
+ }[];
1251
+ } | {
1252
+ tag: "None";
1253
+ /**
1254
+ * All translations for the entry, identified by IETF language tag
1255
+ * (BCP47).
110
1256
  * @minProperties 1
111
1257
  */
112
1258
  translations?: {
113
1259
  /**
114
1260
  * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1261
+ * @minProperties 1
115
1262
  */
116
1263
  [localeId: string]: {
117
1264
  /**
118
- * The name of the application if different from the activatable entry's
119
- * name.
120
- * @minLength 1
1265
+ * A note, appended to the generated string in parenthesis.
121
1266
  */
122
- name: string;
1267
+ note?: {
1268
+ /**
1269
+ * The full note.
1270
+ * @minLength 1
1271
+ */
1272
+ default: string;
1273
+ /**
1274
+ * A compressed note, if applicable. If not specified it should not
1275
+ * be displayed in small location.
1276
+ * @minLength 1
1277
+ */
1278
+ compressed?: string;
1279
+ };
123
1280
  };
124
1281
  };
125
- }[];
1282
+ } | {
1283
+ tag: "Variable";
1284
+ };
126
1285
  /**
127
- * Registers uses, which get enabled once this entry is activated. It specifies
128
- * an entry-unique identifier and the skill it belongs to. A translation can be
129
- * left out if its name equals the name of the origin activatable entry.
130
- * @minItems 1
1286
+ * The volume points the enchantment needs.
131
1287
  */
132
- export declare type SkillUses = {
1288
+ export declare type Volume = {
1289
+ tag: "Fixed";
133
1290
  /**
134
- * The use's identifier. An entry-unique, increasing integer.
1291
+ * The volume points.
1292
+ * @integer
1293
+ * @minimum 0
1294
+ */
1295
+ points: number;
1296
+ } | {
1297
+ tag: "PerLevel";
1298
+ /**
1299
+ * The volume points per level.
135
1300
  * @integer
136
1301
  * @minimum 1
137
1302
  */
138
- id: number;
1303
+ points: number;
1304
+ } | {
1305
+ tag: "ByLevel";
139
1306
  /**
140
- * The skill(s) this use belongs to.
1307
+ * The volume points for each level. The first element is the volume points
1308
+ * for the first level, the second element is the volume points for the
1309
+ * second level, and so on.
1310
+ * @minItems 2
141
1311
  */
142
- skill: {
143
- tag: "Single";
1312
+ list: {
144
1313
  /**
145
- * The referenced skill's identifier.
1314
+ * The volume points for this level.
146
1315
  * @integer
147
- * @minimum 1
1316
+ * @minimum 0
148
1317
  */
149
- id: number;
150
- } | {
151
- tag: "Multiple";
1318
+ points: number;
1319
+ }[];
1320
+ } | {
1321
+ tag: "Map";
1322
+ map: VolumeMap;
1323
+ };
1324
+ /**
1325
+ * A content that is `3/4/5 Points for Chimera, Daimonid, Golems, Undead /
1326
+ * Fairies, Ghosts / Demons, Elementals` may be respresented as the following
1327
+ * map:
1328
+ *
1329
+ * ```yaml
1330
+ * options:
1331
+ * - points: 3
1332
+ * associated_options:
1333
+ * - id:
1334
+ * tag: General
1335
+ * value: # ...
1336
+ * # ...
1337
+ * translations:
1338
+ * en-US:
1339
+ * label: "Chimera, Daimonid, Golems, Undead"
1340
+ * label_standalone: "Chimera/Daimonid/Golems/Undead"
1341
+ * - points: 4
1342
+ * associated_options:
1343
+ * - id:
1344
+ * tag: General
1345
+ * value: # ...
1346
+ * # ...
1347
+ * translations:
1348
+ * en-US:
1349
+ * label: "Fairies, Ghosts"
1350
+ * label_standalone: "Fairies/Ghosts"
1351
+ * - points: 5
1352
+ * associated_options:
1353
+ * - id:
1354
+ * tag: General
1355
+ * value: # ...
1356
+ * # ...
1357
+ * translations:
1358
+ * en-US:
1359
+ * label: "Demons, Elementals"
1360
+ * label_standalone: "Demons/Elementals"
1361
+ * ```
1362
+ *
1363
+ * This will generate the exact same string as seen above. The associated
1364
+ * options are not present in the example, but they link to the options the
1365
+ * volume specification is meant for.
1366
+ */
1367
+ export declare type VolumeMap = {
1368
+ /**
1369
+ * The possible costs and associated labels.
1370
+ * @minItems 2
1371
+ */
1372
+ options: VolumeMapOption[];
1373
+ /**
1374
+ * All translations for the entry, identified by IETF language tag (BCP47).
1375
+ * @minProperties 1
1376
+ */
1377
+ translations?: {
152
1378
  /**
153
- * The skills this use belongs to.
154
- * @minItems 2
1379
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
155
1380
  */
156
- list: {
1381
+ [localeId: string]: {
157
1382
  /**
158
- * The referenced skill's identifier.
159
- * @integer
160
- * @minimum 1
1383
+ * Place a string between the `for` and the grouped map option labels.
161
1384
  */
162
- id: number;
163
- }[];
1385
+ list_prepend?: string;
1386
+ /**
1387
+ * Place a string after the grouped map option labels.
1388
+ */
1389
+ list_append?: string;
1390
+ /**
1391
+ * If the string from the book cannot be generated using the default
1392
+ * generation technique, use this string. All options still need to be
1393
+ * inserted propertly, since it may be used by in-game tools to provide a
1394
+ * selection to players.
1395
+ */
1396
+ replacement?: string;
1397
+ };
164
1398
  };
1399
+ };
1400
+ export declare type VolumeMapOption = {
1401
+ /**
1402
+ * The full permanent AE cost value for this option.
1403
+ * @integer
1404
+ * @minimum 1
1405
+ */
1406
+ points: number;
1407
+ /**
1408
+ * Links to the options this volume specification is meant for.
1409
+ */
1410
+ associated_options: {
1411
+ /**
1412
+ * The option's identifier.
1413
+ */
1414
+ id: VolumePointsOptionReferenceIdentifier;
1415
+ }[];
165
1416
  /**
166
1417
  * All translations for the entry, identified by IETF language tag (BCP47).
167
1418
  * @minProperties 1
@@ -172,29 +1423,132 @@ export declare type SkillUses = {
172
1423
  */
173
1424
  [localeId: string]: {
174
1425
  /**
175
- * The name of the use if different from the activatable entry's name.
1426
+ * The description of the option for cost string generation.
176
1427
  * @minLength 1
177
1428
  */
178
- name: string;
1429
+ label: string;
1430
+ /**
1431
+ * The description of the option if used standalone. Only used if
1432
+ * different from `label`.
1433
+ * @minLength 1
1434
+ */
1435
+ label_standalone?: string;
179
1436
  };
180
1437
  };
181
- }[];
182
- /**
183
- * The penalty the special ability gives when used.
184
- */
185
- export declare type Penalty = "";
186
- /**
187
- * The AE Cost.
188
- */
189
- export declare type ArcaneEnergyCost = "";
1438
+ };
190
1439
  /**
191
- * The volume points the enchantment needs.
1440
+ * The binding cost for an enchantment.
192
1441
  */
193
- export declare type Volume = "";
1442
+ export declare type BindingCost = {
1443
+ tag: "Fixed";
1444
+ /**
1445
+ * The permanent AE cost.
1446
+ * @integer
1447
+ * @minimum 1
1448
+ */
1449
+ permanent_value: number;
1450
+ } | {
1451
+ tag: "PerLevel";
1452
+ /**
1453
+ * The permanent AE cost per level.
1454
+ * @integer
1455
+ * @minimum 1
1456
+ */
1457
+ permanent_value: number;
1458
+ } | {
1459
+ tag: "Map";
1460
+ map: BindingCostMap;
1461
+ };
194
1462
  /**
195
- * The binding cost for an enchantment.
1463
+ * A content that is `2/4/8 permanent AE for spell-swords with the combat
1464
+ * technique Daggers, Swords, or Two-Handed Swords` may be respresented as the
1465
+ * following map:
1466
+ *
1467
+ * ```yaml
1468
+ * options:
1469
+ * - permanent_value: 2
1470
+ * translations:
1471
+ * en-US:
1472
+ * label: "Daggers"
1473
+ * label_standalone: "Dagger"
1474
+ * - permanent_value: 4
1475
+ * translations:
1476
+ * en-US:
1477
+ * label: "Swords"
1478
+ * label_standalone: "Sword"
1479
+ * - permanent_value: 8
1480
+ * translations:
1481
+ * en-US:
1482
+ * label: "Two-Handed Swords"
1483
+ * label_standalone: "Two-Handed Sword"
1484
+ * list_prepend: "spell-swords with the combat technique"
1485
+ * ```
1486
+ *
1487
+ * This will generate the exact same string as seen above.
196
1488
  */
197
- export declare type BindingCost = "";
1489
+ export declare type BindingCostMap = {
1490
+ /**
1491
+ * The possible costs and associated labels.
1492
+ * @minItems 2
1493
+ */
1494
+ options: VolumeMapOption[];
1495
+ /**
1496
+ * All translations for the entry, identified by IETF language tag (BCP47).
1497
+ * @minProperties 1
1498
+ */
1499
+ translations?: {
1500
+ /**
1501
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1502
+ */
1503
+ [localeId: string]: {
1504
+ /**
1505
+ * Place a string between the `for` and the grouped map option labels.
1506
+ */
1507
+ list_prepend?: string;
1508
+ /**
1509
+ * Place a string after the grouped map option labels.
1510
+ */
1511
+ list_append?: string;
1512
+ /**
1513
+ * If the string from the book cannot be generated using the default
1514
+ * generation technique, use this string. All options still need to be
1515
+ * inserted propertly, since it may be used by in-game tools to provide a
1516
+ * selection to players.
1517
+ */
1518
+ replacement?: string;
1519
+ };
1520
+ };
1521
+ };
1522
+ export declare type BindingCostMapOption = {
1523
+ /**
1524
+ * The full permanent AE cost value for this option.
1525
+ * @integer
1526
+ * @minimum 1
1527
+ */
1528
+ permanent_value: number;
1529
+ /**
1530
+ * All translations for the entry, identified by IETF language tag (BCP47).
1531
+ * @minProperties 1
1532
+ */
1533
+ translations?: {
1534
+ /**
1535
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
1536
+ */
1537
+ [localeId: string]: {
1538
+ /**
1539
+ * The description of the option for cost string generation.
1540
+ * @minLength 1
1541
+ */
1542
+ label: string;
1543
+ /**
1544
+ * The description of the option if used standalone. Only used if
1545
+ * different from `label`.
1546
+ * @minLength 1
1547
+ */
1548
+ label_standalone?: string;
1549
+ };
1550
+ };
1551
+ };
198
1552
  /**
199
1553
  * The magic property's identifier. `DependingOnProperty` can only be used if
200
1554
  * the special ability has an option to select a property.
@@ -240,7 +1594,7 @@ export declare type AdvancedSpecialAbility = {
240
1594
  * advanced special ability; others are disallowed.
241
1595
  * @minItems 1
242
1596
  */
243
- option: Identifier.Group.AdvancedSpecialAbilityRestrictedOption[];
1597
+ option: AdvancedSpecialAbilityRestrictedOptionIdentifier[];
244
1598
  } | {
245
1599
  tag: "OneOf";
246
1600
  /**
@@ -264,8 +1618,8 @@ export declare type AdvancedSpecialAbility = {
264
1618
  * advanced special ability; others are disallowed.
265
1619
  * @minItems 1
266
1620
  */
267
- option: Identifier.Group.AdvancedSpecialAbilityRestrictedOption[];
268
- display_option?: Prerequisite.Single.DisplayOption.T;
1621
+ option: AdvancedSpecialAbilityRestrictedOptionIdentifier[];
1622
+ display_option?: DisplayOption;
269
1623
  } | {
270
1624
  tag: "DeriveFromExternalOption";
271
1625
  /**
@@ -292,7 +1646,7 @@ export declare type AdvancedSpecialAbility = {
292
1646
  id: number;
293
1647
  };
294
1648
  }[];
295
- display_option?: Prerequisite.Single.DisplayOption.T;
1649
+ display_option?: DisplayOption;
296
1650
  /**
297
1651
  * Do have to choose on when buying the special ability? Otherwise the
298
1652
  * decision can be made later.
@@ -303,10 +1657,10 @@ export declare type AdvancedSpecialAbility = {
303
1657
  * advanced special ability; others are disallowed.
304
1658
  * @minItems 1
305
1659
  */
306
- option: Identifier.Group.AdvancedSpecialAbilityRestrictedOption[];
1660
+ option: AdvancedSpecialAbilityRestrictedOptionIdentifier[];
307
1661
  };
308
- export declare type AdvancedSpecialAbilityDerivedExternalEntryId = Identifier.Tagged<"MagicalTradition">;
309
- export declare type AdvancedSpecialAbilityDerivedExternalEntryOptionId = Identifier.Tagged<"Patron">;
1662
+ export declare type AdvancedSpecialAbilityDerivedExternalEntryId = MagicalTraditionIdentifier;
1663
+ export declare type AdvancedSpecialAbilityDerivedExternalEntryOptionId = PatronIdentifier;
310
1664
  /**
311
1665
  * The Advanced Special Abilities for the respective Style Special Ability.
312
1666
  * Sometimes, only a specific select option or a set of select options of an
@@ -347,7 +1701,7 @@ export declare type ApplicableCombatTechniques = {
347
1701
  * @minItems 1
348
1702
  */
349
1703
  list: {
350
- id: Identifier.Group.CombatTechnique;
1704
+ id: CombatTechniqueIdentifier;
351
1705
  /**
352
1706
  * @minItems 1
353
1707
  */
@@ -376,7 +1730,7 @@ export declare type ApplicableAllCombatTechniquesRestriction = {
376
1730
  * @minItems 1
377
1731
  * @uniqueItems
378
1732
  */
379
- list: Identifier.Group.CombatTechnique[];
1733
+ list: CombatTechniqueIdentifier[];
380
1734
  };
381
1735
  export declare type ApplicableCloseCombatTechniquesRestriction = {
382
1736
  tag: "Improvised";
@@ -526,3 +1880,4 @@ export declare type AdventurePointsValue = {
526
1880
  * @minimum 0
527
1881
  */
528
1882
  export declare type AdventurePointsSingleValue = number;
1883
+ export {};