optolith-database-schema 0.0.1

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 (169) hide show
  1. package/AUTHORS +1 -0
  2. package/CHANGELOG.md +27 -0
  3. package/CODEOWNERS +1 -0
  4. package/LICENSE +378 -0
  5. package/README.md +17 -0
  6. package/lib/main.d.ts +1 -0
  7. package/lib/main.js +1 -0
  8. package/lib/types/ArcaneBardTradition.d.ts +32 -0
  9. package/lib/types/ArcaneBardTradition.js +4 -0
  10. package/lib/types/ArcaneDancerTradition.d.ts +32 -0
  11. package/lib/types/ArcaneDancerTradition.js +4 -0
  12. package/lib/types/Aspect.d.ts +36 -0
  13. package/lib/types/Aspect.js +4 -0
  14. package/lib/types/Attribute.d.ts +42 -0
  15. package/lib/types/Attribute.js +5 -0
  16. package/lib/types/CombatTechnique_Close.d.ts +80 -0
  17. package/lib/types/CombatTechnique_Close.js +4 -0
  18. package/lib/types/CombatTechnique_Ranged.d.ts +62 -0
  19. package/lib/types/CombatTechnique_Ranged.js +4 -0
  20. package/lib/types/Condition.d.ts +51 -0
  21. package/lib/types/Condition.js +4 -0
  22. package/lib/types/Culture.d.ts +494 -0
  23. package/lib/types/Culture.js +4 -0
  24. package/lib/types/DerivedCharacteristic.d.ts +65 -0
  25. package/lib/types/DerivedCharacteristic.js +4 -0
  26. package/lib/types/Element.d.ts +30 -0
  27. package/lib/types/Element.js +4 -0
  28. package/lib/types/ExperienceLevel.d.ts +68 -0
  29. package/lib/types/ExperienceLevel.js +4 -0
  30. package/lib/types/EyeColor.d.ts +30 -0
  31. package/lib/types/EyeColor.js +4 -0
  32. package/lib/types/HairColor.d.ts +30 -0
  33. package/lib/types/HairColor.js +4 -0
  34. package/lib/types/Lessons_Curriculum.d.ts +297 -0
  35. package/lib/types/Lessons_Curriculum.js +4 -0
  36. package/lib/types/Lessons_Guideline.d.ts +36 -0
  37. package/lib/types/Lessons_Guideline.js +4 -0
  38. package/lib/types/Locale.d.ts +38 -0
  39. package/lib/types/Locale.js +4 -0
  40. package/lib/types/MetaCondition.d.ts +54 -0
  41. package/lib/types/MetaCondition.js +4 -0
  42. package/lib/types/Property.d.ts +36 -0
  43. package/lib/types/Property.js +4 -0
  44. package/lib/types/Race.d.ts +524 -0
  45. package/lib/types/Race.js +13 -0
  46. package/lib/types/Region.d.ts +30 -0
  47. package/lib/types/Region.js +4 -0
  48. package/lib/types/Service.d.ts +40 -0
  49. package/lib/types/Service.js +4 -0
  50. package/lib/types/SexPractice.d.ts +53 -0
  51. package/lib/types/SexPractice.js +4 -0
  52. package/lib/types/Skill.d.ts +169 -0
  53. package/lib/types/Skill.js +4 -0
  54. package/lib/types/SkillGroup.d.ts +40 -0
  55. package/lib/types/SkillGroup.js +4 -0
  56. package/lib/types/SkillModificationIncrement.d.ts +82 -0
  57. package/lib/types/SkillModificationIncrement.js +4 -0
  58. package/lib/types/SocialStatus.d.ts +30 -0
  59. package/lib/types/SocialStatus.js +4 -0
  60. package/lib/types/State.d.ts +40 -0
  61. package/lib/types/State.js +4 -0
  62. package/lib/types/TargetCategory.d.ts +36 -0
  63. package/lib/types/TargetCategory.js +4 -0
  64. package/lib/types/_ActivatableSkill.d.ts +919 -0
  65. package/lib/types/_ActivatableSkill.js +38 -0
  66. package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +12 -0
  67. package/lib/types/_CommonnessRatedAdvantageDisadvantage.js +1 -0
  68. package/lib/types/_ImprovementCost.d.ts +9 -0
  69. package/lib/types/_ImprovementCost.js +10 -0
  70. package/lib/types/_Prerequisite.d.ts +274 -0
  71. package/lib/types/_Prerequisite.js +4 -0
  72. package/lib/types/_Sex.d.ts +11 -0
  73. package/lib/types/_Sex.js +4 -0
  74. package/lib/types/_SkillCheck.d.ts +28 -0
  75. package/lib/types/_SkillCheck.js +1 -0
  76. package/lib/types/magicalActions/AnimistPower.d.ts +227 -0
  77. package/lib/types/magicalActions/AnimistPower.js +4 -0
  78. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +30 -0
  79. package/lib/types/magicalActions/AnimistPower_Tribe.js +4 -0
  80. package/lib/types/magicalActions/Curse.d.ts +228 -0
  81. package/lib/types/magicalActions/Curse.js +4 -0
  82. package/lib/types/magicalActions/DominationRitual.d.ts +181 -0
  83. package/lib/types/magicalActions/DominationRitual.js +4 -0
  84. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +149 -0
  85. package/lib/types/magicalActions/ElvenMagicalSong.js +4 -0
  86. package/lib/types/magicalActions/GeodeRitual.d.ts +162 -0
  87. package/lib/types/magicalActions/GeodeRitual.js +4 -0
  88. package/lib/types/magicalActions/JesterTrick.d.ts +167 -0
  89. package/lib/types/magicalActions/JesterTrick.js +4 -0
  90. package/lib/types/magicalActions/MagicalDance.d.ts +184 -0
  91. package/lib/types/magicalActions/MagicalDance.js +4 -0
  92. package/lib/types/magicalActions/MagicalMelody.d.ts +132 -0
  93. package/lib/types/magicalActions/MagicalMelody.js +4 -0
  94. package/lib/types/magicalActions/MagicalRune.d.ts +241 -0
  95. package/lib/types/magicalActions/MagicalRune.js +4 -0
  96. package/lib/types/magicalActions/ZibiljaRitual.d.ts +101 -0
  97. package/lib/types/magicalActions/ZibiljaRitual.js +4 -0
  98. package/lib/types/magicalActions/_MusicTradition.d.ts +28 -0
  99. package/lib/types/magicalActions/_MusicTradition.js +1 -0
  100. package/lib/types/magicalActions/_SkillReference.d.ts +13 -0
  101. package/lib/types/magicalActions/_SkillReference.js +5 -0
  102. package/lib/types/rule/FocusRule.d.ts +53 -0
  103. package/lib/types/rule/FocusRule.js +4 -0
  104. package/lib/types/rule/FocusRule_Subject.d.ts +31 -0
  105. package/lib/types/rule/FocusRule_Subject.js +4 -0
  106. package/lib/types/rule/OptionalRule.d.ts +65 -0
  107. package/lib/types/rule/OptionalRule.js +4 -0
  108. package/lib/types/source/Publication.d.ts +4 -0
  109. package/lib/types/source/Publication.js +4 -0
  110. package/lib/types/source/_Erratum.d.ts +25 -0
  111. package/lib/types/source/_Erratum.js +4 -0
  112. package/lib/types/source/_PublicationRef.d.ts +146 -0
  113. package/lib/types/source/_PublicationRef.js +4 -0
  114. package/lib/validation/integrity.d.ts +16 -0
  115. package/lib/validation/integrity.js +3 -0
  116. package/package.json +37 -0
  117. package/schema/ArcaneBardTradition.schema.json +49 -0
  118. package/schema/ArcaneDancerTradition.schema.json +49 -0
  119. package/schema/Aspect.schema.json +50 -0
  120. package/schema/Attribute.schema.json +57 -0
  121. package/schema/CombatTechnique_Close.schema.json +127 -0
  122. package/schema/CombatTechnique_Ranged.schema.json +83 -0
  123. package/schema/Condition.schema.json +84 -0
  124. package/schema/Culture.schema.json +858 -0
  125. package/schema/DerivedCharacteristic.schema.json +90 -0
  126. package/schema/Element.schema.json +45 -0
  127. package/schema/ExperienceLevel.schema.json +84 -0
  128. package/schema/EyeColor.schema.json +45 -0
  129. package/schema/HairColor.schema.json +45 -0
  130. package/schema/Lessons_Curriculum.schema.json +500 -0
  131. package/schema/Lessons_Guideline.schema.json +51 -0
  132. package/schema/Locale.schema.json +45 -0
  133. package/schema/MetaCondition.schema.json +85 -0
  134. package/schema/Property.schema.json +49 -0
  135. package/schema/Race.schema.json +724 -0
  136. package/schema/Region.schema.json +45 -0
  137. package/schema/Service.schema.json +58 -0
  138. package/schema/SexPractice.schema.json +72 -0
  139. package/schema/Skill.schema.json +278 -0
  140. package/schema/SkillGroup.schema.json +56 -0
  141. package/schema/SkillModificationIncrement.schema.json +98 -0
  142. package/schema/SocialStatus.schema.json +45 -0
  143. package/schema/State.schema.json +58 -0
  144. package/schema/TargetCategory.schema.json +51 -0
  145. package/schema/_ActivatableSkill.schema.json +1534 -0
  146. package/schema/_CommonnessRatedAdvantageDisadvantage.schema.json +22 -0
  147. package/schema/_ImprovementCost.schema.json +15 -0
  148. package/schema/_Prerequisite.schema.json +519 -0
  149. package/schema/_Sex.schema.json +36 -0
  150. package/schema/_SkillCheck.schema.json +94 -0
  151. package/schema/magicalActions/AnimistPower.schema.json +411 -0
  152. package/schema/magicalActions/AnimistPower_Tribe.schema.json +45 -0
  153. package/schema/magicalActions/Curse.schema.json +378 -0
  154. package/schema/magicalActions/DominationRitual.schema.json +288 -0
  155. package/schema/magicalActions/ElvenMagicalSong.schema.json +194 -0
  156. package/schema/magicalActions/GeodeRitual.schema.json +303 -0
  157. package/schema/magicalActions/JesterTrick.schema.json +292 -0
  158. package/schema/magicalActions/MagicalDance.schema.json +328 -0
  159. package/schema/magicalActions/MagicalMelody.schema.json +254 -0
  160. package/schema/magicalActions/MagicalRune.schema.json +426 -0
  161. package/schema/magicalActions/ZibiljaRitual.schema.json +159 -0
  162. package/schema/magicalActions/_MusicTradition.schema.json +44 -0
  163. package/schema/magicalActions/_SkillReference.schema.json +26 -0
  164. package/schema/rule/FocusRule.schema.json +71 -0
  165. package/schema/rule/FocusRule_Subject.schema.json +46 -0
  166. package/schema/rule/OptionalRule.schema.json +96 -0
  167. package/schema/source/Publication.schema.json +165 -0
  168. package/schema/source/_Erratum.schema.json +37 -0
  169. package/schema/source/_PublicationRef.schema.json +242 -0
@@ -0,0 +1,1534 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "_ActivatableSkill.schema.json",
4
+ "definitions": {
5
+ "Effect": {
6
+ "T": {
7
+ "description": "The effect description may be either a plain text or a text that is divided\nby a list of effects for each quality level. It may also be a list for each\ntwo quality levels.",
8
+ "oneOf": [
9
+ {
10
+ "type": "object",
11
+ "properties": {
12
+ "tag": {
13
+ "const": "Plain"
14
+ },
15
+ "text": {
16
+ "description": "The effect description.",
17
+ "type": "string",
18
+ "minLength": 1
19
+ }
20
+ },
21
+ "required": [
22
+ "tag",
23
+ "text"
24
+ ],
25
+ "additionalProperties": false
26
+ },
27
+ {
28
+ "type": "object",
29
+ "properties": {
30
+ "tag": {
31
+ "const": "ForEachQualityLevel"
32
+ },
33
+ "text_before": {
34
+ "description": "The effect description before the list of effects for each quality\nlevel.",
35
+ "type": "string",
36
+ "minLength": 1
37
+ },
38
+ "quality_levels": {
39
+ "description": "The list of effects for each quality level.",
40
+ "type": "array",
41
+ "items": [
42
+ {
43
+ "$ref": "#/definitions/Effect/QualityLevel1"
44
+ },
45
+ {
46
+ "$ref": "#/definitions/Effect/QualityLevel2"
47
+ },
48
+ {
49
+ "$ref": "#/definitions/Effect/QualityLevel3"
50
+ },
51
+ {
52
+ "$ref": "#/definitions/Effect/QualityLevel4"
53
+ },
54
+ {
55
+ "$ref": "#/definitions/Effect/QualityLevel5"
56
+ },
57
+ {
58
+ "$ref": "#/definitions/Effect/QualityLevel6"
59
+ }
60
+ ],
61
+ "minItems": 6,
62
+ "maxItems": 6,
63
+ "additionalItems": false
64
+ },
65
+ "text_after": {
66
+ "description": "The effect description after the list of effects for each quality\nlevel.",
67
+ "type": "string",
68
+ "minLength": 1
69
+ }
70
+ },
71
+ "required": [
72
+ "tag",
73
+ "text_before",
74
+ "quality_levels"
75
+ ],
76
+ "additionalProperties": false
77
+ },
78
+ {
79
+ "type": "object",
80
+ "properties": {
81
+ "tag": {
82
+ "const": "ForEachTwoQualityLevels"
83
+ },
84
+ "text_before": {
85
+ "description": "The effect description before the list of effects for each quality\nlevel.",
86
+ "type": "string",
87
+ "minLength": 1
88
+ },
89
+ "quality_levels": {
90
+ "description": "The list of effects for each two quality levels.",
91
+ "type": "array",
92
+ "items": [
93
+ {
94
+ "$ref": "#/definitions/Effect/QualityLevel1To2"
95
+ },
96
+ {
97
+ "$ref": "#/definitions/Effect/QualityLevel3To4"
98
+ },
99
+ {
100
+ "$ref": "#/definitions/Effect/QualityLevel5To6"
101
+ }
102
+ ],
103
+ "minItems": 3,
104
+ "maxItems": 3,
105
+ "additionalItems": false
106
+ },
107
+ "text_after": {
108
+ "description": "The effect description after the list of effects for each quality\nlevel.",
109
+ "type": "string",
110
+ "minLength": 1
111
+ }
112
+ },
113
+ "required": [
114
+ "tag",
115
+ "text_before",
116
+ "quality_levels"
117
+ ],
118
+ "additionalProperties": false
119
+ }
120
+ ]
121
+ },
122
+ "QualityLevel1": {
123
+ "description": "Effect at QL 1.",
124
+ "type": "string",
125
+ "minLength": 1
126
+ },
127
+ "QualityLevel2": {
128
+ "description": "Effect at QL 2.",
129
+ "type": "string",
130
+ "minLength": 1
131
+ },
132
+ "QualityLevel3": {
133
+ "description": "Effect at QL 3.",
134
+ "type": "string",
135
+ "minLength": 1
136
+ },
137
+ "QualityLevel4": {
138
+ "description": "Effect at QL 4.",
139
+ "type": "string",
140
+ "minLength": 1
141
+ },
142
+ "QualityLevel5": {
143
+ "description": "Effect at QL 5.",
144
+ "type": "string",
145
+ "minLength": 1
146
+ },
147
+ "QualityLevel6": {
148
+ "description": "Effect at QL 6.",
149
+ "type": "string",
150
+ "minLength": 1
151
+ },
152
+ "QualityLevel1To2": {
153
+ "description": "Effect at QL 1–2.",
154
+ "type": "string",
155
+ "minLength": 1
156
+ },
157
+ "QualityLevel3To4": {
158
+ "description": "Effect at QL 3–4.",
159
+ "type": "string",
160
+ "minLength": 1
161
+ },
162
+ "QualityLevel5To6": {
163
+ "description": "Effect at QL 5–6.",
164
+ "type": "string",
165
+ "minLength": 1
166
+ }
167
+ },
168
+ "PerformanceParameters": {
169
+ "oneOf": [
170
+ {
171
+ "type": "object",
172
+ "properties": {
173
+ "tag": {
174
+ "const": "OneTime"
175
+ },
176
+ "casting_time": {
177
+ "$ref": "#/definitions/CastingTime/T"
178
+ },
179
+ "cost": {
180
+ "$ref": "#/definitions/Cost/OneTime/T"
181
+ },
182
+ "range": {
183
+ "$ref": "#/definitions/Range/T"
184
+ },
185
+ "duration": {
186
+ "$ref": "#/definitions/Duration/OneTime/T"
187
+ }
188
+ },
189
+ "required": [
190
+ "tag",
191
+ "casting_time",
192
+ "cost",
193
+ "range",
194
+ "duration"
195
+ ],
196
+ "additionalProperties": false
197
+ },
198
+ {
199
+ "type": "object",
200
+ "properties": {
201
+ "tag": {
202
+ "const": "Sustained"
203
+ },
204
+ "casting_time": {
205
+ "$ref": "#/definitions/CastingTime/T"
206
+ },
207
+ "cost": {
208
+ "$ref": "#/definitions/Cost/Sustained/T"
209
+ },
210
+ "range": {
211
+ "$ref": "#/definitions/Range/T"
212
+ },
213
+ "duration": {
214
+ "$ref": "#/definitions/Duration/Sustained/T"
215
+ }
216
+ },
217
+ "required": [
218
+ "tag",
219
+ "casting_time",
220
+ "cost",
221
+ "range"
222
+ ],
223
+ "additionalProperties": false
224
+ }
225
+ ]
226
+ },
227
+ "CastingTime": {
228
+ "T": {
229
+ "type": "object",
230
+ "properties": {
231
+ "default": {
232
+ "description": "The default casting time definition.",
233
+ "type": "object",
234
+ "properties": {
235
+ "initial_modification_level": {
236
+ "description": "The initial skill modification identifier/level.",
237
+ "type": "integer",
238
+ "maximum": 6,
239
+ "minimum": 1
240
+ },
241
+ "is_modifiable": {
242
+ "description": "Is the casting time modifiable?",
243
+ "type": "boolean"
244
+ }
245
+ },
246
+ "required": [
247
+ "initial_modification_level",
248
+ "is_modifiable"
249
+ ],
250
+ "additionalProperties": false
251
+ },
252
+ "during_lovemaking": {
253
+ "description": "The casting time during lovemaking. In Aventurian Intimacy, you may only\nuse an activatable skill during lovemaking if it has a casting time used\nduring lovemaking.",
254
+ "type": "object",
255
+ "properties": {
256
+ "value": {
257
+ "description": "The (unitless) duration value.",
258
+ "type": "integer",
259
+ "minimum": 1
260
+ },
261
+ "unit": {
262
+ "description": "The unit of the `value`.",
263
+ "$ref": "#/definitions/CastingTime/CastingTimeDuringLovemakingUnit"
264
+ }
265
+ },
266
+ "required": [
267
+ "value",
268
+ "unit"
269
+ ],
270
+ "additionalProperties": false
271
+ }
272
+ },
273
+ "required": [
274
+ "default"
275
+ ],
276
+ "additionalProperties": false
277
+ },
278
+ "CastingTimeDuringLovemakingUnit": {
279
+ "enum": [
280
+ "SeductionActions",
281
+ "Rounds"
282
+ ]
283
+ },
284
+ "SlowSkillCastingTimeUnit": {
285
+ "enum": [
286
+ "Minutes",
287
+ "Hours"
288
+ ]
289
+ }
290
+ },
291
+ "Cost": {
292
+ "OneTime": {
293
+ "T": {
294
+ "oneOf": [
295
+ {
296
+ "type": "object",
297
+ "properties": {
298
+ "tag": {
299
+ "const": "Single"
300
+ },
301
+ "value": {
302
+ "$ref": "#/definitions/Cost/OneTime/Single"
303
+ }
304
+ },
305
+ "required": [
306
+ "tag",
307
+ "value"
308
+ ],
309
+ "additionalProperties": false
310
+ },
311
+ {
312
+ "type": "object",
313
+ "properties": {
314
+ "tag": {
315
+ "const": "Conjunction"
316
+ },
317
+ "list": {
318
+ "type": "array",
319
+ "items": {
320
+ "$ref": "#/definitions/Cost/OneTime/Single"
321
+ },
322
+ "minItems": 2
323
+ }
324
+ },
325
+ "required": [
326
+ "tag",
327
+ "list"
328
+ ],
329
+ "additionalProperties": false
330
+ },
331
+ {
332
+ "type": "object",
333
+ "properties": {
334
+ "tag": {
335
+ "const": "Disjunction"
336
+ },
337
+ "list": {
338
+ "type": "array",
339
+ "items": {
340
+ "$ref": "#/definitions/Cost/OneTime/Single"
341
+ },
342
+ "minItems": 2
343
+ }
344
+ },
345
+ "required": [
346
+ "tag",
347
+ "list"
348
+ ],
349
+ "additionalProperties": false
350
+ },
351
+ {
352
+ "type": "object",
353
+ "properties": {
354
+ "tag": {
355
+ "const": "Map"
356
+ },
357
+ "map": {
358
+ "$ref": "#/definitions/Cost/OneTime/Map"
359
+ }
360
+ },
361
+ "required": [
362
+ "tag",
363
+ "map"
364
+ ],
365
+ "additionalProperties": false
366
+ }
367
+ ]
368
+ },
369
+ "Single": {
370
+ "oneOf": [
371
+ {
372
+ "type": "object",
373
+ "properties": {
374
+ "tag": {
375
+ "const": "Modifiable"
376
+ },
377
+ "initial_modification_level": {
378
+ "description": "The initial skill modification identifier/level.",
379
+ "type": "integer",
380
+ "maximum": 6,
381
+ "minimum": 1
382
+ },
383
+ "permanent_value": {
384
+ "description": "The part of the cost value that has to be spent permanently.",
385
+ "type": "integer",
386
+ "minimum": 1
387
+ }
388
+ },
389
+ "required": [
390
+ "tag",
391
+ "initial_modification_level"
392
+ ],
393
+ "additionalProperties": false
394
+ },
395
+ {
396
+ "type": "object",
397
+ "properties": {
398
+ "tag": {
399
+ "const": "NonModifiable"
400
+ },
401
+ "is_minimum": {
402
+ "description": "If `true`, the non-modifiable value is a minimum value.",
403
+ "type": "boolean"
404
+ },
405
+ "value": {
406
+ "description": "The AE cost value.",
407
+ "type": "integer",
408
+ "minimum": 1
409
+ },
410
+ "permanent_value": {
411
+ "description": "The part of the cost value that has to be spent permanently.",
412
+ "type": "integer",
413
+ "minimum": 1
414
+ },
415
+ "per": {
416
+ "type": "object",
417
+ "properties": {
418
+ "minimum_total": {
419
+ "description": "If defined, the minimum total AE that have to be spent casting the\nskill.",
420
+ "type": "number"
421
+ },
422
+ "translations": {
423
+ "description": "All translations for the entry, identified by IETF language tag\n(BCP47).",
424
+ "type": "object",
425
+ "patternProperties": {
426
+ "^[a-z]{2}-[A-Z]{2}$": {
427
+ "type": "object",
428
+ "properties": {
429
+ "default": {
430
+ "description": "The full countable entity name.",
431
+ "type": "string",
432
+ "minLength": 1
433
+ },
434
+ "compressed": {
435
+ "description": "The compressed countable entity name.",
436
+ "type": "string",
437
+ "minLength": 1
438
+ }
439
+ },
440
+ "required": [
441
+ "default",
442
+ "compressed"
443
+ ],
444
+ "additionalProperties": false
445
+ }
446
+ },
447
+ "minProperties": 1,
448
+ "additionalProperties": false
449
+ }
450
+ },
451
+ "required": [
452
+ "translations"
453
+ ],
454
+ "additionalProperties": false
455
+ },
456
+ "translations": {
457
+ "description": "All translations for the entry, identified by IETF language tag\n(BCP47).",
458
+ "type": "object",
459
+ "patternProperties": {
460
+ "^[a-z]{2}-[A-Z]{2}$": {
461
+ "type": "object",
462
+ "properties": {
463
+ "note": {
464
+ "description": "A note, appended to the generated string in parenthesis.",
465
+ "type": "object",
466
+ "properties": {
467
+ "default": {
468
+ "description": "The full note.",
469
+ "type": "string",
470
+ "minLength": 1
471
+ },
472
+ "compressed": {
473
+ "description": "A compressed note, if applicable. If not specified it should not\nbe displayed in small location.",
474
+ "type": "string",
475
+ "minLength": 1
476
+ }
477
+ },
478
+ "required": [
479
+ "default"
480
+ ],
481
+ "additionalProperties": false
482
+ }
483
+ },
484
+ "required": [],
485
+ "minProperties": 1,
486
+ "additionalProperties": false
487
+ }
488
+ },
489
+ "minProperties": 1,
490
+ "additionalProperties": false
491
+ }
492
+ },
493
+ "required": [
494
+ "tag",
495
+ "value"
496
+ ],
497
+ "additionalProperties": false
498
+ },
499
+ {
500
+ "type": "object",
501
+ "properties": {
502
+ "tag": {
503
+ "const": "Indefinite"
504
+ },
505
+ "translations": {
506
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
507
+ "type": "object",
508
+ "patternProperties": {
509
+ "^[a-z]{2}-[A-Z]{2}$": {
510
+ "type": "object",
511
+ "properties": {
512
+ "description": {
513
+ "description": "A description of where the cost come from.",
514
+ "type": "object",
515
+ "properties": {
516
+ "default": {
517
+ "description": "The full description of where the cost come from.",
518
+ "type": "string",
519
+ "minLength": 1
520
+ },
521
+ "compressed": {
522
+ "description": "A compressed description of where the cost come from for use in\nsmall areas (e.g. on character sheet).",
523
+ "type": "string",
524
+ "minLength": 1
525
+ }
526
+ },
527
+ "required": [
528
+ "default",
529
+ "compressed"
530
+ ],
531
+ "additionalProperties": false
532
+ }
533
+ },
534
+ "required": [
535
+ "description"
536
+ ],
537
+ "additionalProperties": false
538
+ }
539
+ },
540
+ "minProperties": 1,
541
+ "additionalProperties": false
542
+ }
543
+ },
544
+ "required": [
545
+ "tag",
546
+ "translations"
547
+ ],
548
+ "additionalProperties": false
549
+ }
550
+ ]
551
+ },
552
+ "Map": {
553
+ "description": "A content that is `2/4/8/16 AE for an item the size of a\ncup/chest/door/castle gate` may be respresented as the following map:\n\n```yaml\noptions:\n - value: 2\n label: \"cup\"\n - value: 4\n label: \"chest\"\n - value: 8\n label: \"door\"\n - value: 16\n label: \"castle gate\"\nfor_append: \"an item the size of a\"\n```\n\nThis will generate the exact same string as seen above – given it is set\nfor a spellwork and thus `AE` is used.",
554
+ "type": "object",
555
+ "properties": {
556
+ "options": {
557
+ "description": "The possible costs and associated labels.",
558
+ "type": "array",
559
+ "items": {
560
+ "$ref": "#/definitions/Cost/OneTime/MapOption"
561
+ },
562
+ "minItems": 2
563
+ },
564
+ "list_prepend": {
565
+ "description": "Place a string between the `for` and the grouped map option labels.",
566
+ "type": "string"
567
+ },
568
+ "list_append": {
569
+ "description": "Place a string after the grouped map option labels.",
570
+ "type": "string"
571
+ },
572
+ "replacement": {
573
+ "description": "If the string from the book cannot be generated using the default\ngeneration technique, use this string. All options still need to be\ninserted propertly, since it may be used by in-game tools to provide a\nselection to players.",
574
+ "type": "string"
575
+ }
576
+ },
577
+ "required": [
578
+ "options"
579
+ ],
580
+ "additionalProperties": false
581
+ },
582
+ "MapOption": {
583
+ "type": "object",
584
+ "properties": {
585
+ "value": {
586
+ "description": "The full cost value for this option.",
587
+ "type": "integer",
588
+ "minimum": 1
589
+ },
590
+ "permanent_value": {
591
+ "description": "The part of the `value` that has to be paid permanently.",
592
+ "type": "integer",
593
+ "minimum": 0
594
+ },
595
+ "label": {
596
+ "description": "The description of the option for cost string generation.",
597
+ "type": "string",
598
+ "minLength": 1
599
+ },
600
+ "label_standalone": {
601
+ "description": "The description of the option if used standalone. Only used if\ndifferent from `label`.",
602
+ "type": "string",
603
+ "minLength": 1
604
+ }
605
+ },
606
+ "required": [
607
+ "value",
608
+ "label"
609
+ ],
610
+ "additionalProperties": false
611
+ }
612
+ },
613
+ "Sustained": {
614
+ "T": {
615
+ "oneOf": [
616
+ {
617
+ "type": "object",
618
+ "properties": {
619
+ "tag": {
620
+ "const": "Modifiable"
621
+ },
622
+ "initial_modification_level": {
623
+ "description": "The initial skill modification identifier/level.",
624
+ "type": "integer",
625
+ "maximum": 6,
626
+ "minimum": 1
627
+ },
628
+ "interval": {
629
+ "description": "The sustain interval.",
630
+ "$ref": "#/definitions/Duration/UnitValue"
631
+ }
632
+ },
633
+ "required": [
634
+ "tag",
635
+ "initial_modification_level",
636
+ "interval"
637
+ ],
638
+ "additionalProperties": false
639
+ },
640
+ {
641
+ "type": "object",
642
+ "properties": {
643
+ "tag": {
644
+ "const": "NonModifiable"
645
+ },
646
+ "is_minimum": {
647
+ "description": "If `true`, the non-modifiable value is a minimum value.",
648
+ "type": "boolean"
649
+ },
650
+ "value": {
651
+ "description": "The AE cost value.",
652
+ "type": "integer",
653
+ "minimum": 1
654
+ },
655
+ "interval": {
656
+ "description": "The sustain interval.",
657
+ "$ref": "#/definitions/Duration/UnitValue"
658
+ }
659
+ },
660
+ "required": [
661
+ "tag",
662
+ "value",
663
+ "interval"
664
+ ],
665
+ "additionalProperties": false
666
+ }
667
+ ]
668
+ }
669
+ }
670
+ },
671
+ "Range": {
672
+ "T": {
673
+ "type": "object",
674
+ "properties": {
675
+ "value": {
676
+ "$ref": "#/definitions/Range/RangeValue"
677
+ },
678
+ "translations": {
679
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
680
+ "type": "object",
681
+ "patternProperties": {
682
+ "^[a-z]{2}-[A-Z]{2}$": {
683
+ "type": "object",
684
+ "properties": {
685
+ "note": {
686
+ "description": "A note, appended to the generated string in parenthesis.",
687
+ "type": "object",
688
+ "properties": {
689
+ "default": {
690
+ "description": "The full note.",
691
+ "type": "string",
692
+ "minLength": 1
693
+ },
694
+ "compressed": {
695
+ "description": "A compressed note, if applicable. If not specified it should not\nbe displayed in small location.",
696
+ "type": "string",
697
+ "minLength": 1
698
+ }
699
+ },
700
+ "required": [
701
+ "default"
702
+ ],
703
+ "additionalProperties": false
704
+ }
705
+ },
706
+ "required": [
707
+ "note"
708
+ ],
709
+ "additionalProperties": false
710
+ }
711
+ },
712
+ "minProperties": 1,
713
+ "additionalProperties": false
714
+ }
715
+ },
716
+ "required": [
717
+ "value"
718
+ ],
719
+ "additionalProperties": false
720
+ },
721
+ "RangeValue": {
722
+ "oneOf": [
723
+ {
724
+ "type": "object",
725
+ "properties": {
726
+ "tag": {
727
+ "const": "Modifiable"
728
+ },
729
+ "initial_modification_level": {
730
+ "description": "The initial skill modification identifier/level.",
731
+ "type": "integer",
732
+ "maximum": 6,
733
+ "minimum": 1
734
+ }
735
+ },
736
+ "required": [
737
+ "tag",
738
+ "initial_modification_level"
739
+ ],
740
+ "additionalProperties": false
741
+ },
742
+ {
743
+ "type": "object",
744
+ "properties": {
745
+ "tag": {
746
+ "const": "Sight"
747
+ }
748
+ },
749
+ "required": [
750
+ "tag"
751
+ ],
752
+ "additionalProperties": false
753
+ },
754
+ {
755
+ "type": "object",
756
+ "properties": {
757
+ "tag": {
758
+ "const": "Self"
759
+ }
760
+ },
761
+ "required": [
762
+ "tag"
763
+ ],
764
+ "additionalProperties": false
765
+ },
766
+ {
767
+ "type": "object",
768
+ "properties": {
769
+ "tag": {
770
+ "description": "German: *dereumfassend*",
771
+ "const": "Global"
772
+ }
773
+ },
774
+ "required": [
775
+ "tag"
776
+ ],
777
+ "additionalProperties": false
778
+ },
779
+ {
780
+ "type": "object",
781
+ "properties": {
782
+ "tag": {
783
+ "const": "Fixed"
784
+ },
785
+ "value": {
786
+ "description": "The (unitless) range value.",
787
+ "type": "integer",
788
+ "minimum": 1
789
+ },
790
+ "unit": {
791
+ "description": "The unit of the `value`.",
792
+ "$ref": "#/definitions/Range/Unit"
793
+ }
794
+ },
795
+ "required": [
796
+ "tag",
797
+ "value",
798
+ "unit"
799
+ ],
800
+ "additionalProperties": false
801
+ },
802
+ {
803
+ "type": "object",
804
+ "properties": {
805
+ "tag": {
806
+ "const": "CheckResultBased"
807
+ },
808
+ "base": {
809
+ "description": "The base value that is derived from the check result.",
810
+ "$ref": "#/definitions/Duration/CheckResultValue"
811
+ },
812
+ "modifier": {
813
+ "description": "If defined, it modifies the base value.",
814
+ "type": "object",
815
+ "properties": {
816
+ "arithmetic": {
817
+ "description": "The arithmetic how to apply the `value` to the `base`.",
818
+ "$ref": "#/definitions/Duration/CheckResultArithmetic"
819
+ },
820
+ "value": {
821
+ "description": "The value that is applied to the `base` using the defined `arithmetic`.",
822
+ "type": "integer",
823
+ "minimum": 2
824
+ }
825
+ },
826
+ "required": [
827
+ "arithmetic",
828
+ "value"
829
+ ],
830
+ "additionalProperties": false
831
+ },
832
+ "unit": {
833
+ "description": "The range unit.",
834
+ "$ref": "#/definitions/Range/Unit"
835
+ }
836
+ },
837
+ "required": [
838
+ "tag",
839
+ "base",
840
+ "unit"
841
+ ],
842
+ "additionalProperties": false
843
+ }
844
+ ]
845
+ },
846
+ "Unit": {
847
+ "enum": [
848
+ "Steps",
849
+ "Miles"
850
+ ]
851
+ }
852
+ },
853
+ "Duration": {
854
+ "OneTime": {
855
+ "T": {
856
+ "oneOf": [
857
+ {
858
+ "type": "object",
859
+ "properties": {
860
+ "tag": {
861
+ "const": "Immediate"
862
+ },
863
+ "maximum": {
864
+ "description": "Specified if the duration has a maximum time span.",
865
+ "$ref": "#/definitions/Duration/UnitValue"
866
+ },
867
+ "translations": {
868
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
869
+ "type": "object",
870
+ "patternProperties": {
871
+ "^[a-z]{2}-[A-Z]{2}$": {
872
+ "type": "object",
873
+ "properties": {
874
+ "replacement": {
875
+ "description": "A replacement string.",
876
+ "type": "object",
877
+ "properties": {
878
+ "default": {
879
+ "description": "The full replacement string. It must contain `$1`, which is\ngoing to be replaced with the generated duration string, so\nadditional information can be provided without duplicating\nconcrete numeric values.",
880
+ "type": "string",
881
+ "minLength": 1,
882
+ "pattern": "\\$1"
883
+ },
884
+ "compressed": {
885
+ "description": "A compressed replacement string for use in small areas (e.g. on\ncharacter sheet). It must contain `$1`, which is going to be\nreplaced with the generated duration string, so additional\ninformation can be provided without duplicating concrete\nnumeric values.",
886
+ "type": "string",
887
+ "minLength": 1,
888
+ "pattern": "\\$1"
889
+ }
890
+ },
891
+ "required": [
892
+ "default",
893
+ "compressed"
894
+ ],
895
+ "additionalProperties": false
896
+ }
897
+ },
898
+ "required": [
899
+ "replacement"
900
+ ],
901
+ "additionalProperties": false
902
+ }
903
+ },
904
+ "minProperties": 1,
905
+ "additionalProperties": false
906
+ }
907
+ },
908
+ "required": [
909
+ "tag"
910
+ ],
911
+ "additionalProperties": false
912
+ },
913
+ {
914
+ "type": "object",
915
+ "properties": {
916
+ "tag": {
917
+ "const": "Permanent"
918
+ },
919
+ "translations": {
920
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
921
+ "type": "object",
922
+ "patternProperties": {
923
+ "^[a-z]{2}-[A-Z]{2}$": {
924
+ "type": "object",
925
+ "properties": {
926
+ "replacement": {
927
+ "description": "A replacement string.",
928
+ "type": "object",
929
+ "properties": {
930
+ "default": {
931
+ "description": "The full replacement string. It must contain `$1`, which is\ngoing to be replaced with the generated duration string, so\nadditional information can be provided without duplicating\nconcrete numeric values.",
932
+ "type": "string",
933
+ "minLength": 1,
934
+ "pattern": "\\$1"
935
+ },
936
+ "compressed": {
937
+ "description": "A compressed replacement string for use in small areas (e.g. on\ncharacter sheet). It must contain `$1`, which is going to be\nreplaced with the generated duration string, so additional\ninformation can be provided without duplicating concrete\nnumeric values.",
938
+ "type": "string",
939
+ "minLength": 1,
940
+ "pattern": "\\$1"
941
+ }
942
+ },
943
+ "required": [
944
+ "default",
945
+ "compressed"
946
+ ],
947
+ "additionalProperties": false
948
+ }
949
+ },
950
+ "required": [
951
+ "replacement"
952
+ ],
953
+ "additionalProperties": false
954
+ }
955
+ },
956
+ "minProperties": 1,
957
+ "additionalProperties": false
958
+ }
959
+ },
960
+ "required": [
961
+ "tag"
962
+ ],
963
+ "additionalProperties": false
964
+ },
965
+ {
966
+ "type": "object",
967
+ "properties": {
968
+ "tag": {
969
+ "const": "Fixed"
970
+ },
971
+ "is_maximum": {
972
+ "description": "If the duration is the maximum duration, so it may end earlier.",
973
+ "type": "boolean"
974
+ },
975
+ "value": {
976
+ "description": "The (unitless) duration.",
977
+ "type": "integer",
978
+ "minimum": 2
979
+ },
980
+ "unit": {
981
+ "description": "The duration unit.",
982
+ "$ref": "#/definitions/Duration/Unit"
983
+ },
984
+ "translations": {
985
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
986
+ "type": "object",
987
+ "patternProperties": {
988
+ "^[a-z]{2}-[A-Z]{2}$": {
989
+ "type": "object",
990
+ "properties": {
991
+ "replacement": {
992
+ "description": "A replacement string.",
993
+ "type": "object",
994
+ "properties": {
995
+ "default": {
996
+ "description": "The full replacement string. It must contain `$1`, which is\ngoing to be replaced with the generated duration string, so\nadditional information can be provided without duplicating\nconcrete numeric values.",
997
+ "type": "string",
998
+ "minLength": 1,
999
+ "pattern": "\\$1"
1000
+ },
1001
+ "compressed": {
1002
+ "description": "A compressed replacement string for use in small areas (e.g. on\ncharacter sheet). It must contain `$1`, which is going to be\nreplaced with the generated duration string, so additional\ninformation can be provided without duplicating concrete\nnumeric values.",
1003
+ "type": "string",
1004
+ "minLength": 1,
1005
+ "pattern": "\\$1"
1006
+ }
1007
+ },
1008
+ "required": [
1009
+ "default",
1010
+ "compressed"
1011
+ ],
1012
+ "additionalProperties": false
1013
+ }
1014
+ },
1015
+ "required": [
1016
+ "replacement"
1017
+ ],
1018
+ "additionalProperties": false
1019
+ }
1020
+ },
1021
+ "minProperties": 1,
1022
+ "additionalProperties": false
1023
+ }
1024
+ },
1025
+ "required": [
1026
+ "tag",
1027
+ "value",
1028
+ "unit"
1029
+ ],
1030
+ "additionalProperties": false
1031
+ },
1032
+ {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "tag": {
1036
+ "const": "CheckResultBased"
1037
+ },
1038
+ "is_maximum": {
1039
+ "description": "If the duration is the maximum duration, so it may end earlier.",
1040
+ "type": "boolean"
1041
+ },
1042
+ "base": {
1043
+ "description": "The base value that is derived from the check result.",
1044
+ "$ref": "#/definitions/Duration/CheckResultValue"
1045
+ },
1046
+ "modifier": {
1047
+ "description": "If defined, it modifies the base value.",
1048
+ "type": "object",
1049
+ "properties": {
1050
+ "arithmetic": {
1051
+ "description": "The arithmetic how to apply the `value` to the `base`.",
1052
+ "$ref": "#/definitions/Duration/CheckResultArithmetic"
1053
+ },
1054
+ "value": {
1055
+ "description": "The value that is applied to the `base` using the defined\n`arithmetic`.",
1056
+ "type": "integer",
1057
+ "minimum": 2
1058
+ }
1059
+ },
1060
+ "required": [
1061
+ "arithmetic",
1062
+ "value"
1063
+ ],
1064
+ "additionalProperties": false
1065
+ },
1066
+ "unit": {
1067
+ "description": "The duration unit.",
1068
+ "$ref": "#/definitions/Duration/Unit"
1069
+ },
1070
+ "translations": {
1071
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
1072
+ "type": "object",
1073
+ "patternProperties": {
1074
+ "^[a-z]{2}-[A-Z]{2}$": {
1075
+ "type": "object",
1076
+ "properties": {
1077
+ "replacement": {
1078
+ "description": "A replacement string.",
1079
+ "type": "object",
1080
+ "properties": {
1081
+ "default": {
1082
+ "description": "The full replacement string. It must contain `$1`, which is\ngoing to be replaced with the generated duration string, so\nadditional information can be provided without duplicating\nconcrete numeric values.",
1083
+ "type": "string",
1084
+ "minLength": 1,
1085
+ "pattern": "\\$1"
1086
+ },
1087
+ "compressed": {
1088
+ "description": "A compressed replacement string for use in small areas (e.g. on\ncharacter sheet). It must contain `$1`, which is going to be\nreplaced with the generated duration string, so additional\ninformation can be provided without duplicating concrete\nnumeric values.",
1089
+ "type": "string",
1090
+ "minLength": 1,
1091
+ "pattern": "\\$1"
1092
+ }
1093
+ },
1094
+ "required": [
1095
+ "default",
1096
+ "compressed"
1097
+ ],
1098
+ "additionalProperties": false
1099
+ }
1100
+ },
1101
+ "required": [
1102
+ "replacement"
1103
+ ],
1104
+ "additionalProperties": false
1105
+ }
1106
+ },
1107
+ "minProperties": 1,
1108
+ "additionalProperties": false
1109
+ }
1110
+ },
1111
+ "required": [
1112
+ "tag",
1113
+ "base",
1114
+ "unit"
1115
+ ],
1116
+ "additionalProperties": false
1117
+ },
1118
+ {
1119
+ "type": "object",
1120
+ "properties": {
1121
+ "tag": {
1122
+ "const": "Indefinite"
1123
+ },
1124
+ "translations": {
1125
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
1126
+ "type": "object",
1127
+ "patternProperties": {
1128
+ "^[a-z]{2}-[A-Z]{2}$": {
1129
+ "type": "object",
1130
+ "properties": {
1131
+ "description": {
1132
+ "description": "A description of the duration.",
1133
+ "type": "object",
1134
+ "properties": {
1135
+ "default": {
1136
+ "description": "The full description of the duration.",
1137
+ "type": "string",
1138
+ "minLength": 1
1139
+ },
1140
+ "compressed": {
1141
+ "description": "A compressed description of the duration for use in small areas\n(e.g. on character sheet).",
1142
+ "type": "string",
1143
+ "minLength": 1
1144
+ }
1145
+ },
1146
+ "required": [
1147
+ "default",
1148
+ "compressed"
1149
+ ],
1150
+ "additionalProperties": false
1151
+ }
1152
+ },
1153
+ "required": [
1154
+ "description"
1155
+ ],
1156
+ "additionalProperties": false
1157
+ }
1158
+ },
1159
+ "minProperties": 1,
1160
+ "additionalProperties": false
1161
+ }
1162
+ },
1163
+ "required": [
1164
+ "tag",
1165
+ "translations"
1166
+ ],
1167
+ "additionalProperties": false
1168
+ }
1169
+ ]
1170
+ }
1171
+ },
1172
+ "CheckResultBased": {
1173
+ "description": "Defines the duration being based on a check result.",
1174
+ "type": "object",
1175
+ "properties": {
1176
+ "base": {
1177
+ "description": "The base value that is derived from the check result.",
1178
+ "$ref": "#/definitions/Duration/CheckResultValue"
1179
+ },
1180
+ "modifier": {
1181
+ "description": "If defined, it modifies the base value.",
1182
+ "type": "object",
1183
+ "properties": {
1184
+ "arithmetic": {
1185
+ "description": "The arithmetic how to apply the `value` to the `base`.",
1186
+ "$ref": "#/definitions/Duration/CheckResultArithmetic"
1187
+ },
1188
+ "value": {
1189
+ "description": "The value that is applied to the `base` using the defined `arithmetic`.",
1190
+ "type": "integer",
1191
+ "minimum": 2
1192
+ }
1193
+ },
1194
+ "required": [
1195
+ "arithmetic",
1196
+ "value"
1197
+ ],
1198
+ "additionalProperties": false
1199
+ },
1200
+ "unit": {
1201
+ "description": "The duration unit.",
1202
+ "$ref": "#/definitions/Duration/Unit"
1203
+ }
1204
+ },
1205
+ "required": [
1206
+ "base",
1207
+ "unit"
1208
+ ],
1209
+ "additionalProperties": false
1210
+ },
1211
+ "CheckResultBasedTagged": {
1212
+ "description": "Defines the duration being based on a check result.",
1213
+ "type": "object",
1214
+ "properties": {
1215
+ "tag": {
1216
+ "const": "CheckResultBased"
1217
+ },
1218
+ "base": {
1219
+ "description": "The base value that is derived from the check result.",
1220
+ "$ref": "#/definitions/Duration/CheckResultValue"
1221
+ },
1222
+ "modifier": {
1223
+ "description": "If defined, it modifies the base value.",
1224
+ "type": "object",
1225
+ "properties": {
1226
+ "arithmetic": {
1227
+ "description": "The arithmetic how to apply the `value` to the `base`.",
1228
+ "$ref": "#/definitions/Duration/CheckResultArithmetic"
1229
+ },
1230
+ "value": {
1231
+ "description": "The value that is applied to the `base` using the defined `arithmetic`.",
1232
+ "type": "integer",
1233
+ "minimum": 2
1234
+ }
1235
+ },
1236
+ "required": [
1237
+ "arithmetic",
1238
+ "value"
1239
+ ],
1240
+ "additionalProperties": false
1241
+ },
1242
+ "unit": {
1243
+ "description": "The duration unit.",
1244
+ "$ref": "#/definitions/Duration/Unit"
1245
+ }
1246
+ },
1247
+ "required": [
1248
+ "tag",
1249
+ "base",
1250
+ "unit"
1251
+ ],
1252
+ "additionalProperties": false
1253
+ },
1254
+ "CheckResultBasedTaggedAnimistPower": {
1255
+ "type": "object",
1256
+ "properties": {
1257
+ "tag": {
1258
+ "const": "CheckResultBased"
1259
+ },
1260
+ "is_maximum": {
1261
+ "description": "If the duration is the maximum duration, so it may end earlier.",
1262
+ "type": "boolean"
1263
+ },
1264
+ "base": {
1265
+ "description": "The base value that is derived from the check result.",
1266
+ "$ref": "#/definitions/Duration/CheckResultValue"
1267
+ },
1268
+ "modifier": {
1269
+ "description": "If defined, it modifies the base value.",
1270
+ "type": "object",
1271
+ "properties": {
1272
+ "arithmetic": {
1273
+ "description": "The arithmetic how to apply the `value` to the `base`.",
1274
+ "$ref": "#/definitions/Duration/CheckResultArithmetic"
1275
+ },
1276
+ "value": {
1277
+ "description": "The value that is applied to the `base` using the defined\n`arithmetic`.",
1278
+ "type": "integer",
1279
+ "minimum": 2
1280
+ }
1281
+ },
1282
+ "required": [
1283
+ "arithmetic",
1284
+ "value"
1285
+ ],
1286
+ "additionalProperties": false
1287
+ },
1288
+ "unit": {
1289
+ "description": "The duration unit.",
1290
+ "$ref": "#/definitions/Duration/Unit"
1291
+ }
1292
+ },
1293
+ "required": [
1294
+ "tag",
1295
+ "base",
1296
+ "unit"
1297
+ ],
1298
+ "additionalProperties": false
1299
+ },
1300
+ "CheckResultValue": {
1301
+ "description": "Defines the derived (unitless) value.",
1302
+ "oneOf": [
1303
+ {
1304
+ "type": "object",
1305
+ "properties": {
1306
+ "tag": {
1307
+ "const": "QualityLevels"
1308
+ }
1309
+ },
1310
+ "required": [
1311
+ "tag"
1312
+ ],
1313
+ "additionalProperties": false
1314
+ },
1315
+ {
1316
+ "type": "object",
1317
+ "properties": {
1318
+ "tag": {
1319
+ "const": "SkillPoints"
1320
+ }
1321
+ },
1322
+ "required": [
1323
+ "tag"
1324
+ ],
1325
+ "additionalProperties": false
1326
+ }
1327
+ ]
1328
+ },
1329
+ "CheckResultArithmetic": {
1330
+ "description": "Defines how the the `value` is set off against the check result.",
1331
+ "oneOf": [
1332
+ {
1333
+ "type": "object",
1334
+ "properties": {
1335
+ "tag": {
1336
+ "const": "Multiply"
1337
+ }
1338
+ },
1339
+ "required": [
1340
+ "tag"
1341
+ ],
1342
+ "additionalProperties": false
1343
+ },
1344
+ {
1345
+ "type": "object",
1346
+ "properties": {
1347
+ "tag": {
1348
+ "const": "Divide"
1349
+ }
1350
+ },
1351
+ "required": [
1352
+ "tag"
1353
+ ],
1354
+ "additionalProperties": false
1355
+ }
1356
+ ]
1357
+ },
1358
+ "Sustained": {
1359
+ "T": {
1360
+ "type": "object",
1361
+ "properties": {
1362
+ "maximum": {
1363
+ "description": "The sustained skill can be active a maximum amount of time.",
1364
+ "$ref": "#/definitions/Duration/UnitValue"
1365
+ }
1366
+ },
1367
+ "required": [
1368
+ "maximum"
1369
+ ],
1370
+ "additionalProperties": false
1371
+ }
1372
+ },
1373
+ "Unit": {
1374
+ "enum": [
1375
+ "Seconds",
1376
+ "Minutes",
1377
+ "Hours",
1378
+ "Days",
1379
+ "Weeks",
1380
+ "Months",
1381
+ "Years",
1382
+ "CombatRounds"
1383
+ ]
1384
+ },
1385
+ "UnitValue": {
1386
+ "type": "object",
1387
+ "properties": {
1388
+ "value": {
1389
+ "description": "The (unitless) duration value.",
1390
+ "type": "integer",
1391
+ "minimum": 1
1392
+ },
1393
+ "unit": {
1394
+ "description": "The unit of the `value`.",
1395
+ "$ref": "#/definitions/Duration/Unit"
1396
+ }
1397
+ },
1398
+ "required": [
1399
+ "value",
1400
+ "unit"
1401
+ ],
1402
+ "additionalProperties": false
1403
+ }
1404
+ },
1405
+ "TargetCategory": {
1406
+ "T": {
1407
+ "oneOf": [
1408
+ {
1409
+ "type": "object",
1410
+ "properties": {
1411
+ "tag": {
1412
+ "const": "All"
1413
+ }
1414
+ },
1415
+ "required": [
1416
+ "tag"
1417
+ ],
1418
+ "additionalProperties": false
1419
+ },
1420
+ {
1421
+ "type": "object",
1422
+ "properties": {
1423
+ "tag": {
1424
+ "const": "Specific"
1425
+ },
1426
+ "list": {
1427
+ "type": "array",
1428
+ "items": {
1429
+ "type": "object",
1430
+ "properties": {
1431
+ "id": {
1432
+ "$ref": "#/definitions/TargetCategory/Identifier"
1433
+ },
1434
+ "translations": {
1435
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
1436
+ "type": "object",
1437
+ "patternProperties": {
1438
+ "^[a-z]{2}-[A-Z]{2}$": {
1439
+ "type": "object",
1440
+ "properties": {
1441
+ "note": {
1442
+ "description": "A note, appended to the generated string in parenthesis.",
1443
+ "type": "string",
1444
+ "minLength": 1
1445
+ }
1446
+ },
1447
+ "required": [
1448
+ "note"
1449
+ ],
1450
+ "additionalProperties": false
1451
+ }
1452
+ },
1453
+ "minProperties": 1,
1454
+ "additionalProperties": false
1455
+ }
1456
+ },
1457
+ "required": [
1458
+ "id"
1459
+ ],
1460
+ "additionalProperties": false
1461
+ },
1462
+ "minItems": 1
1463
+ }
1464
+ },
1465
+ "required": [
1466
+ "tag",
1467
+ "list"
1468
+ ],
1469
+ "additionalProperties": false
1470
+ }
1471
+ ]
1472
+ },
1473
+ "Identifier": {
1474
+ "oneOf": [
1475
+ {
1476
+ "type": "object",
1477
+ "properties": {
1478
+ "tag": {
1479
+ "const": "Self"
1480
+ }
1481
+ },
1482
+ "required": [
1483
+ "tag"
1484
+ ],
1485
+ "additionalProperties": false
1486
+ },
1487
+ {
1488
+ "type": "object",
1489
+ "properties": {
1490
+ "tag": {
1491
+ "const": "Zone"
1492
+ }
1493
+ },
1494
+ "required": [
1495
+ "tag"
1496
+ ],
1497
+ "additionalProperties": false
1498
+ },
1499
+ {
1500
+ "type": "object",
1501
+ "properties": {
1502
+ "tag": {
1503
+ "const": "LiturgicalChantsAndCeremonies"
1504
+ }
1505
+ },
1506
+ "required": [
1507
+ "tag"
1508
+ ],
1509
+ "additionalProperties": false
1510
+ },
1511
+ {
1512
+ "type": "object",
1513
+ "properties": {
1514
+ "tag": {
1515
+ "const": "Predefined"
1516
+ },
1517
+ "id": {
1518
+ "description": "The target category reference identifier.",
1519
+ "type": "integer",
1520
+ "maximum": 24,
1521
+ "minimum": 1
1522
+ }
1523
+ },
1524
+ "required": [
1525
+ "tag",
1526
+ "id"
1527
+ ],
1528
+ "additionalProperties": false
1529
+ }
1530
+ ]
1531
+ }
1532
+ }
1533
+ }
1534
+ }