5etools-utils 0.8.37 → 0.9.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 (187) hide show
  1. package/README.md +1 -0
  2. package/bin/test-json-ua.js +5 -0
  3. package/lib/BrewTester.js +3 -3
  4. package/lib/TestJson.js +22 -7
  5. package/package.json +2 -1
  6. package/schema/brew/backgrounds.json +13 -13
  7. package/schema/brew/class/class.json +1 -1
  8. package/schema/brew/items-shared.json +1 -1
  9. package/schema/brew/races.json +1 -1
  10. package/schema/brew/spells/spells.json +61 -61
  11. package/schema/brew/util.json +47 -1
  12. package/schema/brew-fast/backgrounds.json +13 -13
  13. package/schema/brew-fast/class/class.json +1 -1
  14. package/schema/brew-fast/items-shared.json +1 -1
  15. package/schema/brew-fast/races.json +1 -1
  16. package/schema/brew-fast/spells/spells.json +61 -61
  17. package/schema/brew-fast/util.json +47 -1
  18. package/schema/site/backgrounds.json +1 -1
  19. package/schema/site/class/class.json +1 -1
  20. package/schema/site/items-shared.json +1 -1
  21. package/schema/site/races.json +1 -1
  22. package/schema/site/spells/spells.json +1 -1
  23. package/schema/site/util.json +48 -2
  24. package/schema/site-fast/backgrounds.json +1 -1
  25. package/schema/site-fast/class/class.json +1 -1
  26. package/schema/site-fast/items-shared.json +1 -1
  27. package/schema/site-fast/races.json +1 -1
  28. package/schema/site-fast/spells/spells.json +1 -1
  29. package/schema/site-fast/util.json +48 -2
  30. package/schema/ua/actions.json +97 -0
  31. package/schema/ua/adventure/adventure.json +12 -0
  32. package/schema/ua/adventures.json +214 -0
  33. package/schema/ua/backgrounds.json +326 -0
  34. package/schema/ua/bestiary/bestiary.json +3735 -0
  35. package/schema/ua/bestiary/fluff-bestiary.json +15 -0
  36. package/schema/ua/bestiary/fluff-index.json +11 -0
  37. package/schema/ua/bestiary/foundry.json +15 -0
  38. package/schema/ua/bestiary/index.json +11 -0
  39. package/schema/ua/bestiary/legendarygroups.json +202 -0
  40. package/schema/ua/bestiary/template.json +275 -0
  41. package/schema/ua/book/book.json +12 -0
  42. package/schema/ua/books.json +141 -0
  43. package/schema/ua/changelog.json +35 -0
  44. package/schema/ua/charcreationoptions.json +80 -0
  45. package/schema/ua/class/class.json +1881 -0
  46. package/schema/ua/class/foundry.json +397 -0
  47. package/schema/ua/class/index.json +11 -0
  48. package/schema/ua/conditionsdiseases.json +82 -0
  49. package/schema/ua/cultsboons.json +175 -0
  50. package/schema/ua/decks.json +504 -0
  51. package/schema/ua/deities.json +473 -0
  52. package/schema/ua/encounters.json +105 -0
  53. package/schema/ua/entry.json +3748 -0
  54. package/schema/ua/feats.json +117 -0
  55. package/schema/ua/fluff-backgrounds.json +15 -0
  56. package/schema/ua/fluff-charcreationoptions.json +43 -0
  57. package/schema/ua/fluff-conditionsdiseases.json +43 -0
  58. package/schema/ua/fluff-feats.json +15 -0
  59. package/schema/ua/fluff-items.json +15 -0
  60. package/schema/ua/fluff-languages.json +42 -0
  61. package/schema/ua/fluff-objects.json +15 -0
  62. package/schema/ua/fluff-races.json +214 -0
  63. package/schema/ua/fluff-recipes.json +42 -0
  64. package/schema/ua/fluff-vehicles.json +63 -0
  65. package/schema/ua/foundry-actions.json +15 -0
  66. package/schema/ua/foundry-backgrounds.json +53 -0
  67. package/schema/ua/foundry-feats.json +15 -0
  68. package/schema/ua/foundry-items.json +63 -0
  69. package/schema/ua/foundry-optionalfeatures.json +15 -0
  70. package/schema/ua/foundry-psionics.json +56 -0
  71. package/schema/ua/foundry-races.json +58 -0
  72. package/schema/ua/foundry-rewards.json +15 -0
  73. package/schema/ua/foundry-vehicles.json +15 -0
  74. package/schema/ua/generated/bookref-quick.json +72 -0
  75. package/schema/ua/generated/gendata-spell-source-lookup.json +230 -0
  76. package/schema/ua/homebrew.json +633 -0
  77. package/schema/ua/items-base.json +959 -0
  78. package/schema/ua/items-shared.json +267 -0
  79. package/schema/ua/items.json +1770 -0
  80. package/schema/ua/languages.json +123 -0
  81. package/schema/ua/life.json +17 -0
  82. package/schema/ua/loot.json +510 -0
  83. package/schema/ua/magicvariants.json +361 -0
  84. package/schema/ua/makebrew-creature.json +66 -0
  85. package/schema/ua/makecards.json +43 -0
  86. package/schema/ua/monsterfeatures.json +53 -0
  87. package/schema/ua/msbcr.json +60 -0
  88. package/schema/ua/names.json +94 -0
  89. package/schema/ua/objects.json +165 -0
  90. package/schema/ua/optionalfeatures.json +130 -0
  91. package/schema/ua/psionics.json +173 -0
  92. package/schema/ua/races.json +1668 -0
  93. package/schema/ua/recipes.json +185 -0
  94. package/schema/ua/renderdemo.json +16 -0
  95. package/schema/ua/rewards.json +93 -0
  96. package/schema/ua/senses.json +54 -0
  97. package/schema/ua/skills.json +54 -0
  98. package/schema/ua/spells/fluff-index.json +11 -0
  99. package/schema/ua/spells/fluff-spells.json +15 -0
  100. package/schema/ua/spells/foundry.json +15 -0
  101. package/schema/ua/spells/index.json +11 -0
  102. package/schema/ua/spells/roll20.json +112 -0
  103. package/schema/ua/spells/spells.json +1250 -0
  104. package/schema/ua/tables.json +220 -0
  105. package/schema/ua/trapshazards.json +236 -0
  106. package/schema/ua/util.json +4466 -0
  107. package/schema/ua/variantrules.json +74 -0
  108. package/schema/ua/vehicles.json +820 -0
  109. package/schema/ua-fast/actions.json +97 -0
  110. package/schema/ua-fast/adventure/adventure.json +12 -0
  111. package/schema/ua-fast/adventures.json +214 -0
  112. package/schema/ua-fast/backgrounds.json +326 -0
  113. package/schema/ua-fast/bestiary/bestiary.json +3735 -0
  114. package/schema/ua-fast/bestiary/fluff-bestiary.json +15 -0
  115. package/schema/ua-fast/bestiary/fluff-index.json +11 -0
  116. package/schema/ua-fast/bestiary/foundry.json +15 -0
  117. package/schema/ua-fast/bestiary/index.json +11 -0
  118. package/schema/ua-fast/bestiary/legendarygroups.json +202 -0
  119. package/schema/ua-fast/bestiary/template.json +275 -0
  120. package/schema/ua-fast/book/book.json +12 -0
  121. package/schema/ua-fast/books.json +141 -0
  122. package/schema/ua-fast/changelog.json +35 -0
  123. package/schema/ua-fast/charcreationoptions.json +80 -0
  124. package/schema/ua-fast/class/class.json +1881 -0
  125. package/schema/ua-fast/class/foundry.json +397 -0
  126. package/schema/ua-fast/class/index.json +11 -0
  127. package/schema/ua-fast/conditionsdiseases.json +82 -0
  128. package/schema/ua-fast/cultsboons.json +175 -0
  129. package/schema/ua-fast/decks.json +504 -0
  130. package/schema/ua-fast/deities.json +473 -0
  131. package/schema/ua-fast/encounters.json +105 -0
  132. package/schema/ua-fast/entry.json +3748 -0
  133. package/schema/ua-fast/feats.json +117 -0
  134. package/schema/ua-fast/fluff-backgrounds.json +15 -0
  135. package/schema/ua-fast/fluff-charcreationoptions.json +43 -0
  136. package/schema/ua-fast/fluff-conditionsdiseases.json +43 -0
  137. package/schema/ua-fast/fluff-feats.json +15 -0
  138. package/schema/ua-fast/fluff-items.json +15 -0
  139. package/schema/ua-fast/fluff-languages.json +42 -0
  140. package/schema/ua-fast/fluff-objects.json +15 -0
  141. package/schema/ua-fast/fluff-races.json +214 -0
  142. package/schema/ua-fast/fluff-recipes.json +42 -0
  143. package/schema/ua-fast/fluff-vehicles.json +63 -0
  144. package/schema/ua-fast/foundry-actions.json +15 -0
  145. package/schema/ua-fast/foundry-backgrounds.json +53 -0
  146. package/schema/ua-fast/foundry-feats.json +15 -0
  147. package/schema/ua-fast/foundry-items.json +63 -0
  148. package/schema/ua-fast/foundry-optionalfeatures.json +15 -0
  149. package/schema/ua-fast/foundry-psionics.json +56 -0
  150. package/schema/ua-fast/foundry-races.json +58 -0
  151. package/schema/ua-fast/foundry-rewards.json +15 -0
  152. package/schema/ua-fast/foundry-vehicles.json +15 -0
  153. package/schema/ua-fast/generated/bookref-quick.json +72 -0
  154. package/schema/ua-fast/generated/gendata-spell-source-lookup.json +230 -0
  155. package/schema/ua-fast/homebrew.json +631 -0
  156. package/schema/ua-fast/items-base.json +959 -0
  157. package/schema/ua-fast/items-shared.json +267 -0
  158. package/schema/ua-fast/items.json +1770 -0
  159. package/schema/ua-fast/languages.json +123 -0
  160. package/schema/ua-fast/life.json +17 -0
  161. package/schema/ua-fast/loot.json +510 -0
  162. package/schema/ua-fast/magicvariants.json +361 -0
  163. package/schema/ua-fast/makebrew-creature.json +66 -0
  164. package/schema/ua-fast/makecards.json +43 -0
  165. package/schema/ua-fast/monsterfeatures.json +53 -0
  166. package/schema/ua-fast/msbcr.json +60 -0
  167. package/schema/ua-fast/names.json +94 -0
  168. package/schema/ua-fast/objects.json +165 -0
  169. package/schema/ua-fast/optionalfeatures.json +130 -0
  170. package/schema/ua-fast/psionics.json +173 -0
  171. package/schema/ua-fast/races.json +1668 -0
  172. package/schema/ua-fast/recipes.json +185 -0
  173. package/schema/ua-fast/renderdemo.json +16 -0
  174. package/schema/ua-fast/rewards.json +93 -0
  175. package/schema/ua-fast/senses.json +54 -0
  176. package/schema/ua-fast/skills.json +54 -0
  177. package/schema/ua-fast/spells/fluff-index.json +11 -0
  178. package/schema/ua-fast/spells/fluff-spells.json +15 -0
  179. package/schema/ua-fast/spells/foundry.json +15 -0
  180. package/schema/ua-fast/spells/index.json +11 -0
  181. package/schema/ua-fast/spells/roll20.json +112 -0
  182. package/schema/ua-fast/spells/spells.json +1250 -0
  183. package/schema/ua-fast/tables.json +220 -0
  184. package/schema/ua-fast/trapshazards.json +236 -0
  185. package/schema/ua-fast/util.json +4466 -0
  186. package/schema/ua-fast/variantrules.json +74 -0
  187. package/schema/ua-fast/vehicles.json +820 -0
@@ -0,0 +1,820 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "vehicles.json",
4
+ "version": "1.7.2",
5
+ "type": "object",
6
+ "$defs": {
7
+ "vehicleTerrain": {
8
+ "description": "Note that a vehicle's \"primary\" terrain should be listed first.",
9
+ "type": "array",
10
+ "items": {
11
+ "type": "string",
12
+ "enum": [
13
+ "land",
14
+ "sea",
15
+ "air",
16
+ "space"
17
+ ]
18
+ }
19
+ },
20
+ "_vehicleCost": {
21
+ "description": "In copper pieces.",
22
+ "type": "number"
23
+ },
24
+ "spelljammerPaceObj": {
25
+ "type": "object",
26
+ "properties": {
27
+ "walk": {
28
+ "$ref": "#/$defs/_spelljammerPace"
29
+ },
30
+ "burrow": {
31
+ "$ref": "#/$defs/_spelljammerPace"
32
+ },
33
+ "climb": {
34
+ "$ref": "#/$defs/_spelljammerPace"
35
+ },
36
+ "fly": {
37
+ "$ref": "#/$defs/_spelljammerPace"
38
+ },
39
+ "swim": {
40
+ "$ref": "#/$defs/_spelljammerPace"
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ },
45
+ "_spelljammerPace": {
46
+ "type": [
47
+ "string",
48
+ "number"
49
+ ]
50
+ },
51
+ "vehicle": {
52
+ "oneOf": [
53
+ {
54
+ "$ref": "#/$defs/vehicleShip"
55
+ },
56
+ {
57
+ "$ref": "#/$defs/vehicleSpelljammer"
58
+ },
59
+ {
60
+ "$ref": "#/$defs/vehicleInfernalWarMachine"
61
+ },
62
+ {
63
+ "$ref": "#/$defs/vehicleCreature"
64
+ },
65
+ {
66
+ "$ref": "#/$defs/vehicleObject"
67
+ }
68
+ ]
69
+ },
70
+ "vehicleUpgrade": {
71
+ "type": "object",
72
+ "properties": {
73
+ "name": {
74
+ "type": "string"
75
+ },
76
+ "entries": {
77
+ "type": "array",
78
+ "items": {
79
+ "$ref": "entry.json"
80
+ }
81
+ },
82
+ "source": {
83
+ "$ref": "util.json#/$defs/source"
84
+ },
85
+ "page": {
86
+ "$ref": "util.json#/$defs/page"
87
+ },
88
+ "otherSources": {
89
+ "$ref": "util.json#/$defs/otherSources"
90
+ },
91
+ "legacy": {
92
+ "$ref": "util.json#/$defs/legacy"
93
+ },
94
+ "upgradeType": {
95
+ "type": "array",
96
+ "items": {
97
+ "$ref": "util.json#/$defs/dataOptionalfeatureType",
98
+ "type": "string",
99
+ "pattern": "^(SHP|IWM):.*"
100
+ }
101
+ },
102
+ "hasFluff": {
103
+ "type": "boolean"
104
+ },
105
+ "hasFluffImages": {
106
+ "type": "boolean"
107
+ }
108
+ },
109
+ "required": [
110
+ "name",
111
+ "entries",
112
+ "source",
113
+ "upgradeType"
114
+ ],
115
+ "additionalProperties": false
116
+ },
117
+ "vehicleShip": {
118
+ "type": "object",
119
+ "properties": {
120
+ "name": {
121
+ "type": "string"
122
+ },
123
+ "source": {
124
+ "$ref": "util.json#/$defs/source"
125
+ },
126
+ "page": {
127
+ "$ref": "util.json#/$defs/page"
128
+ },
129
+ "otherSources": {
130
+ "$ref": "util.json#/$defs/otherSources"
131
+ },
132
+ "legacy": {
133
+ "$ref": "util.json#/$defs/legacy"
134
+ },
135
+ "vehicleType": {
136
+ "const": "SHIP"
137
+ },
138
+ "terrain": {
139
+ "$ref": "#/$defs/vehicleTerrain"
140
+ },
141
+ "size": {
142
+ "$ref": "util.json#/$defs/size"
143
+ },
144
+ "dimensions": {
145
+ "type": "array",
146
+ "items": {
147
+ "type": "string"
148
+ }
149
+ },
150
+ "capCrew": {
151
+ "type": "integer"
152
+ },
153
+ "capPassenger": {
154
+ "type": "integer"
155
+ },
156
+ "capCargo": {
157
+ "type": [
158
+ "number",
159
+ "string"
160
+ ]
161
+ },
162
+ "pace": {
163
+ "type": [
164
+ "number"
165
+ ]
166
+ },
167
+ "str": {
168
+ "type": "integer"
169
+ },
170
+ "dex": {
171
+ "type": "integer"
172
+ },
173
+ "con": {
174
+ "type": "integer"
175
+ },
176
+ "int": {
177
+ "type": "integer"
178
+ },
179
+ "wis": {
180
+ "type": "integer"
181
+ },
182
+ "cha": {
183
+ "type": "integer"
184
+ },
185
+ "conditionImmune": {
186
+ "type": "array",
187
+ "items": {
188
+ "$ref": "entry.json#/$defs/dataCondImmune"
189
+ }
190
+ },
191
+ "immune": {
192
+ "type": "array",
193
+ "items": {
194
+ "$ref": "entry.json#/$defs/dataDamImmune"
195
+ }
196
+ },
197
+ "actionThresholds": {
198
+ "type": "object",
199
+ "description": "A map of \"number of vehicle actions\": \"number of remaining crew members\"",
200
+ "patternProperties": {
201
+ "\\d+": {
202
+ "type": "integer"
203
+ }
204
+ }
205
+ },
206
+ "action": {
207
+ "type": "array",
208
+ "items": {
209
+ "$ref": "entry.json"
210
+ }
211
+ },
212
+ "hull": {
213
+ "type": "object",
214
+ "properties": {
215
+ "ac": {
216
+ "type": "integer"
217
+ },
218
+ "hp": {
219
+ "type": "integer"
220
+ },
221
+ "hpNote": {
222
+ "type": "string"
223
+ },
224
+ "dt": {
225
+ "type": "integer",
226
+ "description": "Damage Threshold"
227
+ }
228
+ },
229
+ "required": [
230
+ "ac",
231
+ "hp"
232
+ ],
233
+ "additionalProperties": false
234
+ },
235
+ "control": {
236
+ "type": "array",
237
+ "items": {
238
+ "type": "object",
239
+ "properties": {
240
+ "name": {
241
+ "type": "string"
242
+ },
243
+ "ac": {
244
+ "type": "integer"
245
+ },
246
+ "hp": {
247
+ "type": "integer"
248
+ },
249
+ "dt": {
250
+ "type": "integer",
251
+ "description": "Damage Threshold"
252
+ },
253
+ "entries": {
254
+ "type": "array",
255
+ "items": {
256
+ "$ref": "entry.json"
257
+ }
258
+ }
259
+ },
260
+ "required": [
261
+ "ac",
262
+ "hp",
263
+ "entries"
264
+ ],
265
+ "additionalProperties": false
266
+ }
267
+ },
268
+ "movement": {
269
+ "type": "array",
270
+ "items": {
271
+ "type": "object",
272
+ "properties": {
273
+ "name": {
274
+ "type": "string"
275
+ },
276
+ "isControl": {
277
+ "type": "boolean"
278
+ },
279
+ "ac": {
280
+ "type": "integer"
281
+ },
282
+ "hp": {
283
+ "type": "integer"
284
+ },
285
+ "hpNote": {
286
+ "type": "string"
287
+ },
288
+ "dt": {
289
+ "type": "integer",
290
+ "description": "Damage Threshold"
291
+ },
292
+ "locomotion": {
293
+ "description": "Legacy format, from the original UA release.",
294
+ "type": "array",
295
+ "items": {
296
+ "type": "object",
297
+ "properties": {
298
+ "mode": {
299
+ "type": "string"
300
+ },
301
+ "entries": {
302
+ "type": "array",
303
+ "items": {
304
+ "$ref": "entry.json"
305
+ }
306
+ }
307
+ },
308
+ "required": [
309
+ "mode",
310
+ "entries"
311
+ ],
312
+ "additionalProperties": false
313
+ }
314
+ },
315
+ "speed": {
316
+ "type": "array",
317
+ "items": {
318
+ "type": "object",
319
+ "properties": {
320
+ "mode": {
321
+ "type": "string"
322
+ },
323
+ "entries": {
324
+ "type": "array",
325
+ "items": {
326
+ "$ref": "entry.json"
327
+ }
328
+ }
329
+ },
330
+ "required": [
331
+ "mode",
332
+ "entries"
333
+ ],
334
+ "additionalProperties": false
335
+ }
336
+ }
337
+ },
338
+ "required": [
339
+ "ac",
340
+ "hp"
341
+ ],
342
+ "additionalProperties": false
343
+ }
344
+ },
345
+ "weapon": {
346
+ "type": "array",
347
+ "items": {
348
+ "type": "object",
349
+ "properties": {
350
+ "name": {
351
+ "type": "string"
352
+ },
353
+ "ac": {
354
+ "type": "integer"
355
+ },
356
+ "hp": {
357
+ "type": "integer"
358
+ },
359
+ "count": {
360
+ "type": "integer"
361
+ },
362
+ "dt": {
363
+ "type": "integer",
364
+ "description": "Damage Threshold"
365
+ },
366
+ "entries": {
367
+ "type": "array",
368
+ "items": {
369
+ "$ref": "entry.json"
370
+ }
371
+ }
372
+ },
373
+ "required": [
374
+ "name",
375
+ "entries"
376
+ ],
377
+ "additionalProperties": false
378
+ }
379
+ },
380
+ "other": {
381
+ "type": "array",
382
+ "items": {
383
+ "type": "object",
384
+ "properties": {
385
+ "name": {
386
+ "type": "string"
387
+ },
388
+ "entries": {
389
+ "type": "array",
390
+ "items": {
391
+ "$ref": "entry.json"
392
+ }
393
+ }
394
+ },
395
+ "required": [
396
+ "name",
397
+ "entries"
398
+ ],
399
+ "additionalProperties": false
400
+ }
401
+ },
402
+ "trait": {
403
+ "oneOf": [
404
+ {
405
+ "type": "array",
406
+ "items": {
407
+ "type": "object",
408
+ "properties": {
409
+ "name": {
410
+ "type": "string"
411
+ },
412
+ "entries": {
413
+ "type": "array",
414
+ "items": {
415
+ "$ref": "entry.json"
416
+ }
417
+ },
418
+ "type": {
419
+ "type": "string",
420
+ "enum": [
421
+ "entries",
422
+ "inset"
423
+ ]
424
+ },
425
+ "sort": {
426
+ "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.",
427
+ "type": "integer"
428
+ }
429
+ },
430
+ "required": [
431
+ "name",
432
+ "entries"
433
+ ],
434
+ "additionalProperties": false
435
+ }
436
+ },
437
+ {
438
+ "type": "null"
439
+ }
440
+ ]
441
+ },
442
+ "hasToken": {
443
+ "type": "boolean"
444
+ },
445
+ "hasFluff": {
446
+ "type": "boolean"
447
+ },
448
+ "hasFluffImages": {
449
+ "type": "boolean"
450
+ }
451
+ },
452
+ "required": [
453
+ "name",
454
+ "source"
455
+ ],
456
+ "additionalProperties": false
457
+ },
458
+ "vehicleSpelljammer": {
459
+ "type": "object",
460
+ "properties": {
461
+ "name": {
462
+ "type": "string"
463
+ },
464
+ "source": {
465
+ "$ref": "util.json#/$defs/source"
466
+ },
467
+ "page": {
468
+ "$ref": "util.json#/$defs/page"
469
+ },
470
+ "otherSources": {
471
+ "$ref": "util.json#/$defs/otherSources"
472
+ },
473
+ "legacy": {
474
+ "$ref": "util.json#/$defs/legacy"
475
+ },
476
+ "vehicleType": {
477
+ "const": "SPELLJAMMER"
478
+ },
479
+ "terrain": {
480
+ "$ref": "#/$defs/vehicleTerrain"
481
+ },
482
+ "dimensions": {
483
+ "type": "array",
484
+ "items": {
485
+ "type": "string"
486
+ }
487
+ },
488
+ "capCrew": {
489
+ "type": "integer"
490
+ },
491
+ "capCrewNote": {
492
+ "type": "string"
493
+ },
494
+ "capCargo": {
495
+ "type": [
496
+ "number",
497
+ "string"
498
+ ]
499
+ },
500
+ "pace": {
501
+ "$ref": "#/$defs/spelljammerPaceObj"
502
+ },
503
+ "speed": {
504
+ "$ref": "util.json#/$defs/speed"
505
+ },
506
+ "hull": {
507
+ "type": "object",
508
+ "properties": {
509
+ "ac": {
510
+ "type": "integer"
511
+ },
512
+ "acFrom": {
513
+ "type": "array",
514
+ "items": {
515
+ "type": "string"
516
+ }
517
+ },
518
+ "hp": {
519
+ "type": "integer"
520
+ },
521
+ "dt": {
522
+ "type": "integer",
523
+ "description": "Damage Threshold"
524
+ }
525
+ },
526
+ "required": [
527
+ "ac",
528
+ "hp"
529
+ ],
530
+ "additionalProperties": false
531
+ },
532
+ "cost": {
533
+ "$ref": "#/$defs/_vehicleCost"
534
+ },
535
+ "weapon": {
536
+ "type": "array",
537
+ "items": {
538
+ "type": "object",
539
+ "properties": {
540
+ "name": {
541
+ "type": "string"
542
+ },
543
+ "ac": {
544
+ "type": "integer"
545
+ },
546
+ "hp": {
547
+ "type": "integer"
548
+ },
549
+ "count": {
550
+ "type": "integer"
551
+ },
552
+ "crew": {
553
+ "type": "integer"
554
+ },
555
+ "costs": {
556
+ "type": "array",
557
+ "items": {
558
+ "type": "object",
559
+ "properties": {
560
+ "cost": {
561
+ "$ref": "#/$defs/_vehicleCost"
562
+ },
563
+ "note": {
564
+ "type": "string"
565
+ }
566
+ },
567
+ "additionalProperties": false
568
+ }
569
+ },
570
+ "entries": {
571
+ "type": "array",
572
+ "items": {
573
+ "$ref": "entry.json"
574
+ }
575
+ },
576
+ "action": {
577
+ "type": "array",
578
+ "items": {
579
+ "type": "object",
580
+ "properties": {
581
+ "name": {
582
+ "type": "string"
583
+ },
584
+ "entries": {
585
+ "type": "array",
586
+ "items": {
587
+ "$ref": "entry.json"
588
+ }
589
+ }
590
+ },
591
+ "additionalProperties": false
592
+ }
593
+ }
594
+ },
595
+ "required": [
596
+ "name",
597
+ "entries"
598
+ ],
599
+ "additionalProperties": false
600
+ }
601
+ },
602
+ "hasToken": {
603
+ "type": "boolean"
604
+ },
605
+ "hasFluff": {
606
+ "type": "boolean"
607
+ },
608
+ "hasFluffImages": {
609
+ "type": "boolean"
610
+ }
611
+ },
612
+ "required": [
613
+ "name",
614
+ "source"
615
+ ],
616
+ "additionalProperties": false
617
+ },
618
+ "vehicleInfernalWarMachine": {
619
+ "type": "object",
620
+ "properties": {
621
+ "name": {
622
+ "type": "string"
623
+ },
624
+ "source": {
625
+ "$ref": "util.json#/$defs/source"
626
+ },
627
+ "page": {
628
+ "$ref": "util.json#/$defs/page"
629
+ },
630
+ "otherSources": {
631
+ "$ref": "util.json#/$defs/otherSources"
632
+ },
633
+ "legacy": {
634
+ "$ref": "util.json#/$defs/legacy"
635
+ },
636
+ "vehicleType": {
637
+ "const": "INFWAR"
638
+ },
639
+ "terrain": {
640
+ "$ref": "#/$defs/vehicleTerrain"
641
+ },
642
+ "size": {
643
+ "$ref": "util.json#/$defs/size"
644
+ },
645
+ "weight": {
646
+ "type": "integer"
647
+ },
648
+ "capCreature": {
649
+ "type": "number"
650
+ },
651
+ "capCargo": {
652
+ "type": "number"
653
+ },
654
+ "speed": {
655
+ "type": "integer"
656
+ },
657
+ "str": {
658
+ "type": "integer"
659
+ },
660
+ "dex": {
661
+ "type": "integer"
662
+ },
663
+ "con": {
664
+ "type": "integer"
665
+ },
666
+ "int": {
667
+ "type": "integer"
668
+ },
669
+ "wis": {
670
+ "type": "integer"
671
+ },
672
+ "cha": {
673
+ "type": "integer"
674
+ },
675
+ "hp": {
676
+ "type": "object",
677
+ "properties": {
678
+ "hp": {
679
+ "type": "integer",
680
+ "description": "Hit Points"
681
+ },
682
+ "dt": {
683
+ "type": "integer",
684
+ "description": "Damage Threshold"
685
+ },
686
+ "mt": {
687
+ "type": "integer",
688
+ "description": "Mishap Threshold"
689
+ }
690
+ },
691
+ "additionalProperties": false,
692
+ "required": [
693
+ "hp",
694
+ "dt",
695
+ "mt"
696
+ ]
697
+ },
698
+ "conditionImmune": {
699
+ "type": "array",
700
+ "items": {
701
+ "$ref": "entry.json#/$defs/dataCondImmune"
702
+ }
703
+ },
704
+ "immune": {
705
+ "type": "array",
706
+ "items": {
707
+ "$ref": "entry.json#/$defs/dataDamImmune"
708
+ }
709
+ },
710
+ "trait": {
711
+ "type": "array",
712
+ "items": {
713
+ "type": "object",
714
+ "properties": {
715
+ "name": {
716
+ "type": "string"
717
+ },
718
+ "entries": {
719
+ "type": "array",
720
+ "items": {
721
+ "$ref": "entry.json"
722
+ }
723
+ }
724
+ }
725
+ }
726
+ },
727
+ "actionStation": {
728
+ "type": "array",
729
+ "description": "The Action Stations section of a vehicle block, for example the \"Helm\" or a weapon.",
730
+ "items": {
731
+ "type": "object",
732
+ "properties": {
733
+ "name": {
734
+ "type": "string"
735
+ },
736
+ "entries": {
737
+ "type": "array",
738
+ "items": {
739
+ "$ref": "entry.json"
740
+ }
741
+ }
742
+ }
743
+ }
744
+ },
745
+ "reaction": {
746
+ "type": "array",
747
+ "items": {
748
+ "type": "object",
749
+ "properties": {
750
+ "name": {
751
+ "type": "string"
752
+ },
753
+ "entries": {
754
+ "type": "array",
755
+ "items": {
756
+ "$ref": "entry.json"
757
+ }
758
+ }
759
+ }
760
+ }
761
+ },
762
+ "hasToken": {
763
+ "type": "boolean"
764
+ },
765
+ "hasFluff": {
766
+ "type": "boolean"
767
+ },
768
+ "hasFluffImages": {
769
+ "type": "boolean"
770
+ }
771
+ },
772
+ "required": [
773
+ "name",
774
+ "source"
775
+ ],
776
+ "additionalProperties": false
777
+ },
778
+ "vehicleCreature": {
779
+ "type": "object",
780
+ "properties": {
781
+ "vehicleType": {
782
+ "const": "CREATURE"
783
+ },
784
+ "terrain": {
785
+ "$ref": "#/$defs/vehicleTerrain"
786
+ }
787
+ }
788
+ },
789
+ "vehicleObject": {
790
+ "type": "object",
791
+ "properties": {
792
+ "vehicleType": {
793
+ "const": "OBJECT"
794
+ },
795
+ "terrain": {
796
+ "$ref": "#/$defs/vehicleTerrain"
797
+ }
798
+ }
799
+ }
800
+ },
801
+ "properties": {
802
+ "vehicle": {
803
+ "type": "array",
804
+ "minItems": 1,
805
+ "uniqueItems": true,
806
+ "items": {
807
+ "$ref": "#/$defs/vehicle"
808
+ }
809
+ },
810
+ "vehicleUpgrade": {
811
+ "type": "array",
812
+ "minItems": 1,
813
+ "uniqueItems": true,
814
+ "items": {
815
+ "$ref": "#/$defs/vehicleUpgrade"
816
+ }
817
+ }
818
+ },
819
+ "additionalProperties": false
820
+ }