5etools-utils 0.8.36 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +1 -0
  2. package/bin/test-json-ua.js +5 -0
  3. package/lib/BrewTester.js +2 -2
  4. package/lib/TestJson.js +19 -6
  5. package/package.json +2 -1
  6. package/schema/brew/items.json +10 -7
  7. package/schema/brew-fast/items.json +10 -7
  8. package/schema/site/items.json +10 -7
  9. package/schema/site/util.json +1 -1
  10. package/schema/site-fast/items.json +10 -7
  11. package/schema/site-fast/util.json +1 -1
  12. package/schema/ua/actions.json +97 -0
  13. package/schema/ua/adventure/adventure.json +12 -0
  14. package/schema/ua/adventures.json +214 -0
  15. package/schema/ua/backgrounds.json +314 -0
  16. package/schema/ua/bestiary/bestiary.json +3735 -0
  17. package/schema/ua/bestiary/fluff-bestiary.json +15 -0
  18. package/schema/ua/bestiary/fluff-index.json +11 -0
  19. package/schema/ua/bestiary/foundry.json +15 -0
  20. package/schema/ua/bestiary/index.json +11 -0
  21. package/schema/ua/bestiary/legendarygroups.json +202 -0
  22. package/schema/ua/bestiary/template.json +275 -0
  23. package/schema/ua/book/book.json +12 -0
  24. package/schema/ua/books.json +141 -0
  25. package/schema/ua/changelog.json +35 -0
  26. package/schema/ua/charcreationoptions.json +80 -0
  27. package/schema/ua/class/class.json +1782 -0
  28. package/schema/ua/class/foundry.json +397 -0
  29. package/schema/ua/class/index.json +11 -0
  30. package/schema/ua/conditionsdiseases.json +82 -0
  31. package/schema/ua/cultsboons.json +175 -0
  32. package/schema/ua/decks.json +504 -0
  33. package/schema/ua/deities.json +473 -0
  34. package/schema/ua/encounters.json +105 -0
  35. package/schema/ua/entry.json +3748 -0
  36. package/schema/ua/feats.json +117 -0
  37. package/schema/ua/fluff-backgrounds.json +15 -0
  38. package/schema/ua/fluff-charcreationoptions.json +43 -0
  39. package/schema/ua/fluff-conditionsdiseases.json +43 -0
  40. package/schema/ua/fluff-feats.json +15 -0
  41. package/schema/ua/fluff-items.json +15 -0
  42. package/schema/ua/fluff-languages.json +42 -0
  43. package/schema/ua/fluff-objects.json +15 -0
  44. package/schema/ua/fluff-races.json +214 -0
  45. package/schema/ua/fluff-recipes.json +42 -0
  46. package/schema/ua/fluff-vehicles.json +63 -0
  47. package/schema/ua/foundry-actions.json +15 -0
  48. package/schema/ua/foundry-backgrounds.json +53 -0
  49. package/schema/ua/foundry-feats.json +15 -0
  50. package/schema/ua/foundry-items.json +63 -0
  51. package/schema/ua/foundry-optionalfeatures.json +15 -0
  52. package/schema/ua/foundry-psionics.json +56 -0
  53. package/schema/ua/foundry-races.json +58 -0
  54. package/schema/ua/foundry-rewards.json +15 -0
  55. package/schema/ua/foundry-vehicles.json +15 -0
  56. package/schema/ua/generated/bookref-quick.json +72 -0
  57. package/schema/ua/generated/gendata-spell-source-lookup.json +230 -0
  58. package/schema/ua/homebrew.json +633 -0
  59. package/schema/ua/items-base.json +959 -0
  60. package/schema/ua/items-shared.json +267 -0
  61. package/schema/ua/items.json +1770 -0
  62. package/schema/ua/languages.json +123 -0
  63. package/schema/ua/life.json +17 -0
  64. package/schema/ua/loot.json +510 -0
  65. package/schema/ua/magicvariants.json +361 -0
  66. package/schema/ua/makebrew-creature.json +66 -0
  67. package/schema/ua/makecards.json +43 -0
  68. package/schema/ua/monsterfeatures.json +53 -0
  69. package/schema/ua/msbcr.json +60 -0
  70. package/schema/ua/names.json +94 -0
  71. package/schema/ua/objects.json +165 -0
  72. package/schema/ua/optionalfeatures.json +130 -0
  73. package/schema/ua/psionics.json +173 -0
  74. package/schema/ua/races.json +1650 -0
  75. package/schema/ua/recipes.json +185 -0
  76. package/schema/ua/renderdemo.json +16 -0
  77. package/schema/ua/rewards.json +93 -0
  78. package/schema/ua/senses.json +54 -0
  79. package/schema/ua/skills.json +54 -0
  80. package/schema/ua/spells/fluff-index.json +11 -0
  81. package/schema/ua/spells/fluff-spells.json +15 -0
  82. package/schema/ua/spells/foundry.json +15 -0
  83. package/schema/ua/spells/index.json +11 -0
  84. package/schema/ua/spells/roll20.json +112 -0
  85. package/schema/ua/spells/spells.json +1190 -0
  86. package/schema/ua/tables.json +220 -0
  87. package/schema/ua/trapshazards.json +236 -0
  88. package/schema/ua/util.json +4420 -0
  89. package/schema/ua/variantrules.json +74 -0
  90. package/schema/ua/vehicles.json +820 -0
  91. package/schema/ua-fast/actions.json +97 -0
  92. package/schema/ua-fast/adventure/adventure.json +12 -0
  93. package/schema/ua-fast/adventures.json +214 -0
  94. package/schema/ua-fast/backgrounds.json +314 -0
  95. package/schema/ua-fast/bestiary/bestiary.json +3735 -0
  96. package/schema/ua-fast/bestiary/fluff-bestiary.json +15 -0
  97. package/schema/ua-fast/bestiary/fluff-index.json +11 -0
  98. package/schema/ua-fast/bestiary/foundry.json +15 -0
  99. package/schema/ua-fast/bestiary/index.json +11 -0
  100. package/schema/ua-fast/bestiary/legendarygroups.json +202 -0
  101. package/schema/ua-fast/bestiary/template.json +275 -0
  102. package/schema/ua-fast/book/book.json +12 -0
  103. package/schema/ua-fast/books.json +141 -0
  104. package/schema/ua-fast/changelog.json +35 -0
  105. package/schema/ua-fast/charcreationoptions.json +80 -0
  106. package/schema/ua-fast/class/class.json +1782 -0
  107. package/schema/ua-fast/class/foundry.json +397 -0
  108. package/schema/ua-fast/class/index.json +11 -0
  109. package/schema/ua-fast/conditionsdiseases.json +82 -0
  110. package/schema/ua-fast/cultsboons.json +175 -0
  111. package/schema/ua-fast/decks.json +504 -0
  112. package/schema/ua-fast/deities.json +473 -0
  113. package/schema/ua-fast/encounters.json +105 -0
  114. package/schema/ua-fast/entry.json +3748 -0
  115. package/schema/ua-fast/feats.json +117 -0
  116. package/schema/ua-fast/fluff-backgrounds.json +15 -0
  117. package/schema/ua-fast/fluff-charcreationoptions.json +43 -0
  118. package/schema/ua-fast/fluff-conditionsdiseases.json +43 -0
  119. package/schema/ua-fast/fluff-feats.json +15 -0
  120. package/schema/ua-fast/fluff-items.json +15 -0
  121. package/schema/ua-fast/fluff-languages.json +42 -0
  122. package/schema/ua-fast/fluff-objects.json +15 -0
  123. package/schema/ua-fast/fluff-races.json +214 -0
  124. package/schema/ua-fast/fluff-recipes.json +42 -0
  125. package/schema/ua-fast/fluff-vehicles.json +63 -0
  126. package/schema/ua-fast/foundry-actions.json +15 -0
  127. package/schema/ua-fast/foundry-backgrounds.json +53 -0
  128. package/schema/ua-fast/foundry-feats.json +15 -0
  129. package/schema/ua-fast/foundry-items.json +63 -0
  130. package/schema/ua-fast/foundry-optionalfeatures.json +15 -0
  131. package/schema/ua-fast/foundry-psionics.json +56 -0
  132. package/schema/ua-fast/foundry-races.json +58 -0
  133. package/schema/ua-fast/foundry-rewards.json +15 -0
  134. package/schema/ua-fast/foundry-vehicles.json +15 -0
  135. package/schema/ua-fast/generated/bookref-quick.json +72 -0
  136. package/schema/ua-fast/generated/gendata-spell-source-lookup.json +230 -0
  137. package/schema/ua-fast/homebrew.json +631 -0
  138. package/schema/ua-fast/items-base.json +959 -0
  139. package/schema/ua-fast/items-shared.json +267 -0
  140. package/schema/ua-fast/items.json +1770 -0
  141. package/schema/ua-fast/languages.json +123 -0
  142. package/schema/ua-fast/life.json +17 -0
  143. package/schema/ua-fast/loot.json +510 -0
  144. package/schema/ua-fast/magicvariants.json +361 -0
  145. package/schema/ua-fast/makebrew-creature.json +66 -0
  146. package/schema/ua-fast/makecards.json +43 -0
  147. package/schema/ua-fast/monsterfeatures.json +53 -0
  148. package/schema/ua-fast/msbcr.json +60 -0
  149. package/schema/ua-fast/names.json +94 -0
  150. package/schema/ua-fast/objects.json +165 -0
  151. package/schema/ua-fast/optionalfeatures.json +130 -0
  152. package/schema/ua-fast/psionics.json +173 -0
  153. package/schema/ua-fast/races.json +1650 -0
  154. package/schema/ua-fast/recipes.json +185 -0
  155. package/schema/ua-fast/renderdemo.json +16 -0
  156. package/schema/ua-fast/rewards.json +93 -0
  157. package/schema/ua-fast/senses.json +54 -0
  158. package/schema/ua-fast/skills.json +54 -0
  159. package/schema/ua-fast/spells/fluff-index.json +11 -0
  160. package/schema/ua-fast/spells/fluff-spells.json +15 -0
  161. package/schema/ua-fast/spells/foundry.json +15 -0
  162. package/schema/ua-fast/spells/index.json +11 -0
  163. package/schema/ua-fast/spells/roll20.json +112 -0
  164. package/schema/ua-fast/spells/spells.json +1190 -0
  165. package/schema/ua-fast/tables.json +220 -0
  166. package/schema/ua-fast/trapshazards.json +236 -0
  167. package/schema/ua-fast/util.json +4420 -0
  168. package/schema/ua-fast/variantrules.json +74 -0
  169. package/schema/ua-fast/vehicles.json +820 -0
@@ -0,0 +1,1650 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "races.json",
4
+ "version": "1.12.3",
5
+ "type": "object",
6
+ "$defs": {
7
+ "sharedData": {
8
+ "type": "object",
9
+ "properties": {
10
+ "name": {
11
+ "type": "string"
12
+ },
13
+ "alias": {
14
+ "$ref": "util.json#/$defs/alias"
15
+ },
16
+ "source": {
17
+ "$ref": "util.json#/$defs/source"
18
+ },
19
+ "page": {
20
+ "$ref": "util.json#/$defs/page"
21
+ },
22
+ "otherSources": {
23
+ "$ref": "util.json#/$defs/otherSources"
24
+ },
25
+ "additionalSources": {
26
+ "$ref": "util.json#/$defs/additionalSources"
27
+ },
28
+ "reprintedAs": {
29
+ "$ref": "util.json#/$defs/reprintedAs"
30
+ },
31
+ "ability": {
32
+ "$ref": "util.json#/$defs/abilityScores"
33
+ },
34
+ "size": {
35
+ "type": "array",
36
+ "items": {
37
+ "$ref": "util.json#/$defs/size"
38
+ }
39
+ },
40
+ "speed": {
41
+ "$ref": "util.json#/$defs/speed"
42
+ },
43
+ "entries": {
44
+ "type": "array",
45
+ "items": {
46
+ "$ref": "entry.json"
47
+ }
48
+ },
49
+ "darkvision": {
50
+ "type": "integer"
51
+ },
52
+ "blindsight": {
53
+ "type": "integer"
54
+ },
55
+ "feats": {
56
+ "$ref": "util.json#/$defs/additionalFeatsArray"
57
+ },
58
+ "traitTags": {
59
+ "oneOf": [
60
+ {
61
+ "type": "array",
62
+ "items": {
63
+ "$ref": "#/$defs/traitTag"
64
+ }
65
+ },
66
+ {
67
+ "type": "null"
68
+ }
69
+ ]
70
+ },
71
+ "soundClip": {
72
+ "$ref": "entry.json#/$defs/mediaHref"
73
+ },
74
+ "languageProficiencies": {
75
+ "$ref": "util.json#/$defs/languageProficiencies"
76
+ },
77
+ "skillProficiencies": {
78
+ "oneOf": [
79
+ {
80
+ "$ref": "util.json#/$defs/skillProficiencies"
81
+ },
82
+ {
83
+ "type": "null"
84
+ }
85
+ ]
86
+ },
87
+ "toolProficiencies": {
88
+ "$ref": "util.json#/$defs/toolProficiencies"
89
+ },
90
+ "skillToolLanguageProficiencies": {
91
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
92
+ },
93
+ "expertise": {
94
+ "$ref": "util.json#/$defs/expertise"
95
+ },
96
+ "weaponProficiencies": {
97
+ "$ref": "util.json#/$defs/weaponProficiencies"
98
+ },
99
+ "armorProficiencies": {
100
+ "$ref": "util.json#/$defs/armorProficiencies"
101
+ },
102
+ "srd": {
103
+ "$ref": "util.json#/$defs/srd"
104
+ },
105
+ "basicRules": {
106
+ "$ref": "util.json#/$defs/basicRules"
107
+ },
108
+ "legacy": {
109
+ "$ref": "util.json#/$defs/legacy"
110
+ },
111
+ "lineage": {
112
+ "oneOf": [
113
+ {
114
+ "$ref": "#/$defs/lineage"
115
+ },
116
+ {
117
+ "type": "null"
118
+ }
119
+ ]
120
+ },
121
+ "heightAndWeight": {
122
+ "oneOf": [
123
+ {
124
+ "$ref": "#/$defs/heightAndWeight"
125
+ },
126
+ {
127
+ "type": "null"
128
+ }
129
+ ]
130
+ },
131
+ "additionalSpells": {
132
+ "oneOf": [
133
+ {
134
+ "type": "null"
135
+ },
136
+ {
137
+ "$ref": "util.json#/$defs/additionalSpellsArray"
138
+ }
139
+ ]
140
+ },
141
+ "resist": {
142
+ "oneOf": [
143
+ {
144
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
145
+ },
146
+ {
147
+ "type": "null"
148
+ }
149
+ ]
150
+ },
151
+ "immune": {
152
+ "oneOf": [
153
+ {
154
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
155
+ },
156
+ {
157
+ "type": "null"
158
+ }
159
+ ]
160
+ },
161
+ "vulnerable": {
162
+ "oneOf": [
163
+ {
164
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
165
+ },
166
+ {
167
+ "type": "null"
168
+ }
169
+ ]
170
+ },
171
+ "conditionImmune": {
172
+ "oneOf": [
173
+ {
174
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
175
+ },
176
+ {
177
+ "type": "null"
178
+ }
179
+ ]
180
+ },
181
+ "creatureTypes": {
182
+ "type": "array",
183
+ "items": {
184
+ "oneOf": [
185
+ {
186
+ "type": "object",
187
+ "properties": {
188
+ "choose": {
189
+ "type": "array",
190
+ "items": {
191
+ "$ref": "util.json#/$defs/creatureType"
192
+ }
193
+ }
194
+ },
195
+ "required": [
196
+ "choose"
197
+ ],
198
+ "additionalProperties": false
199
+ },
200
+ {
201
+ "$ref": "util.json#/$defs/creatureType"
202
+ }
203
+ ]
204
+ }
205
+ },
206
+ "creatureTypeTags": {
207
+ "type": "array",
208
+ "uniqueItems": true,
209
+ "minItems": 1,
210
+ "items": {
211
+ "type": "string"
212
+ }
213
+ },
214
+ "age": {
215
+ "$ref": "#/$defs/age"
216
+ },
217
+ "hasFluff": {
218
+ "type": "boolean"
219
+ },
220
+ "hasFluffImages": {
221
+ "type": "boolean"
222
+ },
223
+ "_versions": {
224
+ "$ref": "util.json#/$defs/versionsArray"
225
+ }
226
+ },
227
+ "additionalProperties": false
228
+ },
229
+ "subraceData": {
230
+ "type": "object",
231
+ "properties": {
232
+ "name": {
233
+ "type": "string"
234
+ },
235
+ "alias": {
236
+ "$ref": "util.json#/$defs/alias"
237
+ },
238
+ "source": {
239
+ "$ref": "util.json#/$defs/source"
240
+ },
241
+ "page": {
242
+ "$ref": "util.json#/$defs/page"
243
+ },
244
+ "otherSources": {
245
+ "$ref": "util.json#/$defs/otherSources"
246
+ },
247
+ "additionalSources": {
248
+ "$ref": "util.json#/$defs/additionalSources"
249
+ },
250
+ "reprintedAs": {
251
+ "$ref": "util.json#/$defs/reprintedAs"
252
+ },
253
+ "ability": {
254
+ "$ref": "util.json#/$defs/abilityScores"
255
+ },
256
+ "size": {
257
+ "type": "array",
258
+ "items": {
259
+ "$ref": "util.json#/$defs/size"
260
+ }
261
+ },
262
+ "speed": {
263
+ "$ref": "util.json#/$defs/speed"
264
+ },
265
+ "entries": {
266
+ "type": "array",
267
+ "items": {
268
+ "$ref": "entry.json"
269
+ }
270
+ },
271
+ "darkvision": {
272
+ "type": "integer"
273
+ },
274
+ "blindsight": {
275
+ "type": "integer"
276
+ },
277
+ "feats": {
278
+ "$ref": "util.json#/$defs/additionalFeatsArray"
279
+ },
280
+ "traitTags": {
281
+ "oneOf": [
282
+ {
283
+ "type": "array",
284
+ "items": {
285
+ "$ref": "#/$defs/traitTag"
286
+ }
287
+ },
288
+ {
289
+ "type": "null"
290
+ }
291
+ ]
292
+ },
293
+ "soundClip": {
294
+ "$ref": "entry.json#/$defs/mediaHref"
295
+ },
296
+ "languageProficiencies": {
297
+ "$ref": "util.json#/$defs/languageProficiencies"
298
+ },
299
+ "skillProficiencies": {
300
+ "oneOf": [
301
+ {
302
+ "$ref": "util.json#/$defs/skillProficiencies"
303
+ },
304
+ {
305
+ "type": "null"
306
+ }
307
+ ]
308
+ },
309
+ "toolProficiencies": {
310
+ "$ref": "util.json#/$defs/toolProficiencies"
311
+ },
312
+ "skillToolLanguageProficiencies": {
313
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
314
+ },
315
+ "expertise": {
316
+ "$ref": "util.json#/$defs/expertise"
317
+ },
318
+ "weaponProficiencies": {
319
+ "$ref": "util.json#/$defs/weaponProficiencies"
320
+ },
321
+ "armorProficiencies": {
322
+ "$ref": "util.json#/$defs/armorProficiencies"
323
+ },
324
+ "srd": {
325
+ "$ref": "util.json#/$defs/srd"
326
+ },
327
+ "basicRules": {
328
+ "$ref": "util.json#/$defs/basicRules"
329
+ },
330
+ "legacy": {
331
+ "$ref": "util.json#/$defs/legacy"
332
+ },
333
+ "lineage": {
334
+ "oneOf": [
335
+ {
336
+ "$ref": "#/$defs/lineage"
337
+ },
338
+ {
339
+ "type": "null"
340
+ }
341
+ ]
342
+ },
343
+ "heightAndWeight": {
344
+ "oneOf": [
345
+ {
346
+ "$ref": "#/$defs/heightAndWeight"
347
+ },
348
+ {
349
+ "type": "null"
350
+ }
351
+ ]
352
+ },
353
+ "additionalSpells": {
354
+ "oneOf": [
355
+ {
356
+ "type": "null"
357
+ },
358
+ {
359
+ "$ref": "util.json#/$defs/additionalSpellsArray"
360
+ }
361
+ ]
362
+ },
363
+ "resist": {
364
+ "oneOf": [
365
+ {
366
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
367
+ },
368
+ {
369
+ "type": "null"
370
+ }
371
+ ]
372
+ },
373
+ "immune": {
374
+ "oneOf": [
375
+ {
376
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
377
+ },
378
+ {
379
+ "type": "null"
380
+ }
381
+ ]
382
+ },
383
+ "vulnerable": {
384
+ "oneOf": [
385
+ {
386
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
387
+ },
388
+ {
389
+ "type": "null"
390
+ }
391
+ ]
392
+ },
393
+ "conditionImmune": {
394
+ "oneOf": [
395
+ {
396
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
397
+ },
398
+ {
399
+ "type": "null"
400
+ }
401
+ ]
402
+ },
403
+ "creatureTypes": {
404
+ "type": "array",
405
+ "items": {
406
+ "oneOf": [
407
+ {
408
+ "type": "object",
409
+ "properties": {
410
+ "choose": {
411
+ "type": "array",
412
+ "items": {
413
+ "$ref": "util.json#/$defs/creatureType"
414
+ }
415
+ }
416
+ },
417
+ "required": [
418
+ "choose"
419
+ ],
420
+ "additionalProperties": false
421
+ },
422
+ {
423
+ "$ref": "util.json#/$defs/creatureType"
424
+ }
425
+ ]
426
+ }
427
+ },
428
+ "creatureTypeTags": {
429
+ "type": "array",
430
+ "uniqueItems": true,
431
+ "minItems": 1,
432
+ "items": {
433
+ "type": "string"
434
+ }
435
+ },
436
+ "age": {
437
+ "$ref": "#/$defs/age"
438
+ },
439
+ "hasFluff": {
440
+ "type": "boolean"
441
+ },
442
+ "hasFluffImages": {
443
+ "type": "boolean"
444
+ },
445
+ "_versions": {
446
+ "$ref": "util.json#/$defs/versionsArray"
447
+ },
448
+ "raceName": {
449
+ "type": "string"
450
+ },
451
+ "raceSource": {
452
+ "$ref": "util.json#/$defs/source"
453
+ },
454
+ "overwrite": {
455
+ "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace",
456
+ "type": "object"
457
+ }
458
+ },
459
+ "additionalProperties": false
460
+ },
461
+ "raceData": {
462
+ "$ref": "#/$defs/sharedData"
463
+ },
464
+ "traitTag": {
465
+ "oneOf": [
466
+ {
467
+ "$ref": "util.json#/$defs/proficiencyTag"
468
+ },
469
+ {
470
+ "type": "string",
471
+ "enum": [
472
+ "Amphibious",
473
+ "Dragonmark",
474
+ "Improved Resting",
475
+ "Magic Resistance",
476
+ "Monstrous Race",
477
+ "Natural Armor",
478
+ "Natural Weapon",
479
+ "NPC Race",
480
+ "Powerful Build",
481
+ "Skill Bonus Dice",
482
+ "Sunlight Sensitivity",
483
+ "Tool Bonus Dice",
484
+ "Uncommon Race"
485
+ ]
486
+ }
487
+ ]
488
+ },
489
+ "heightAndWeight": {
490
+ "type": "object",
491
+ "properties": {
492
+ "baseHeight": {
493
+ "type": "integer"
494
+ },
495
+ "heightMod": {
496
+ "type": "string"
497
+ },
498
+ "baseWeight": {
499
+ "type": "integer"
500
+ },
501
+ "weightMod": {
502
+ "type": "string"
503
+ }
504
+ },
505
+ "required": [
506
+ "baseHeight",
507
+ "heightMod",
508
+ "baseWeight"
509
+ ],
510
+ "additionalProperties": false
511
+ },
512
+ "lineage": {
513
+ "oneOf": [
514
+ {
515
+ "description": "For lineages that should be filterable using the \"Lineage\" filter, but should not have any modifications applied.",
516
+ "type": "boolean",
517
+ "const": true
518
+ },
519
+ {
520
+ "description": "For lineages which modify the race with e.g. specific ability score modes.",
521
+ "type": "string",
522
+ "enum": [
523
+ "UA1",
524
+ "VRGR"
525
+ ]
526
+ }
527
+ ]
528
+ },
529
+ "age": {
530
+ "type": "object",
531
+ "properties": {
532
+ "mature": {
533
+ "type": "integer"
534
+ },
535
+ "max": {
536
+ "type": "integer"
537
+ }
538
+ }
539
+ },
540
+ "race": {
541
+ "anyOf": [
542
+ {
543
+ "type": "object",
544
+ "properties": {
545
+ "name": {
546
+ "type": "string"
547
+ },
548
+ "alias": {
549
+ "$ref": "util.json#/$defs/alias"
550
+ },
551
+ "source": {
552
+ "$ref": "util.json#/$defs/source"
553
+ },
554
+ "page": {
555
+ "$ref": "util.json#/$defs/page"
556
+ },
557
+ "otherSources": {
558
+ "$ref": "util.json#/$defs/otherSources"
559
+ },
560
+ "additionalSources": {
561
+ "$ref": "util.json#/$defs/additionalSources"
562
+ },
563
+ "reprintedAs": {
564
+ "$ref": "util.json#/$defs/reprintedAs"
565
+ },
566
+ "ability": {
567
+ "$ref": "util.json#/$defs/abilityScores"
568
+ },
569
+ "size": {
570
+ "type": "array",
571
+ "items": {
572
+ "$ref": "util.json#/$defs/size"
573
+ }
574
+ },
575
+ "speed": {
576
+ "$ref": "util.json#/$defs/speed"
577
+ },
578
+ "entries": {
579
+ "type": "array",
580
+ "items": {
581
+ "$ref": "entry.json"
582
+ }
583
+ },
584
+ "darkvision": {
585
+ "type": "integer"
586
+ },
587
+ "blindsight": {
588
+ "type": "integer"
589
+ },
590
+ "feats": {
591
+ "$ref": "util.json#/$defs/additionalFeatsArray"
592
+ },
593
+ "traitTags": {
594
+ "oneOf": [
595
+ {
596
+ "type": "array",
597
+ "items": {
598
+ "$ref": "#/$defs/traitTag"
599
+ }
600
+ },
601
+ {
602
+ "type": "null"
603
+ }
604
+ ]
605
+ },
606
+ "soundClip": {
607
+ "$ref": "entry.json#/$defs/mediaHref"
608
+ },
609
+ "languageProficiencies": {
610
+ "$ref": "util.json#/$defs/languageProficiencies"
611
+ },
612
+ "skillProficiencies": {
613
+ "oneOf": [
614
+ {
615
+ "$ref": "util.json#/$defs/skillProficiencies"
616
+ },
617
+ {
618
+ "type": "null"
619
+ }
620
+ ]
621
+ },
622
+ "toolProficiencies": {
623
+ "$ref": "util.json#/$defs/toolProficiencies"
624
+ },
625
+ "skillToolLanguageProficiencies": {
626
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
627
+ },
628
+ "expertise": {
629
+ "$ref": "util.json#/$defs/expertise"
630
+ },
631
+ "weaponProficiencies": {
632
+ "$ref": "util.json#/$defs/weaponProficiencies"
633
+ },
634
+ "armorProficiencies": {
635
+ "$ref": "util.json#/$defs/armorProficiencies"
636
+ },
637
+ "srd": {
638
+ "$ref": "util.json#/$defs/srd"
639
+ },
640
+ "basicRules": {
641
+ "$ref": "util.json#/$defs/basicRules"
642
+ },
643
+ "legacy": {
644
+ "$ref": "util.json#/$defs/legacy"
645
+ },
646
+ "lineage": {
647
+ "oneOf": [
648
+ {
649
+ "$ref": "#/$defs/lineage"
650
+ },
651
+ {
652
+ "type": "null"
653
+ }
654
+ ]
655
+ },
656
+ "heightAndWeight": {
657
+ "oneOf": [
658
+ {
659
+ "$ref": "#/$defs/heightAndWeight"
660
+ },
661
+ {
662
+ "type": "null"
663
+ }
664
+ ]
665
+ },
666
+ "additionalSpells": {
667
+ "oneOf": [
668
+ {
669
+ "type": "null"
670
+ },
671
+ {
672
+ "$ref": "util.json#/$defs/additionalSpellsArray"
673
+ }
674
+ ]
675
+ },
676
+ "resist": {
677
+ "oneOf": [
678
+ {
679
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
680
+ },
681
+ {
682
+ "type": "null"
683
+ }
684
+ ]
685
+ },
686
+ "immune": {
687
+ "oneOf": [
688
+ {
689
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
690
+ },
691
+ {
692
+ "type": "null"
693
+ }
694
+ ]
695
+ },
696
+ "vulnerable": {
697
+ "oneOf": [
698
+ {
699
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
700
+ },
701
+ {
702
+ "type": "null"
703
+ }
704
+ ]
705
+ },
706
+ "conditionImmune": {
707
+ "oneOf": [
708
+ {
709
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
710
+ },
711
+ {
712
+ "type": "null"
713
+ }
714
+ ]
715
+ },
716
+ "creatureTypes": {
717
+ "type": "array",
718
+ "items": {
719
+ "oneOf": [
720
+ {
721
+ "type": "object",
722
+ "properties": {
723
+ "choose": {
724
+ "type": "array",
725
+ "items": {
726
+ "$ref": "util.json#/$defs/creatureType"
727
+ }
728
+ }
729
+ },
730
+ "required": [
731
+ "choose"
732
+ ],
733
+ "additionalProperties": false
734
+ },
735
+ {
736
+ "$ref": "util.json#/$defs/creatureType"
737
+ }
738
+ ]
739
+ }
740
+ },
741
+ "creatureTypeTags": {
742
+ "type": "array",
743
+ "uniqueItems": true,
744
+ "minItems": 1,
745
+ "items": {
746
+ "type": "string"
747
+ }
748
+ },
749
+ "age": {
750
+ "$ref": "#/$defs/age"
751
+ },
752
+ "hasFluff": {
753
+ "type": "boolean"
754
+ },
755
+ "hasFluffImages": {
756
+ "type": "boolean"
757
+ },
758
+ "_versions": {
759
+ "$ref": "util.json#/$defs/versionsArray"
760
+ }
761
+ },
762
+ "additionalProperties": false,
763
+ "required": [
764
+ "name",
765
+ "source"
766
+ ]
767
+ },
768
+ {
769
+ "type": "object",
770
+ "properties": {
771
+ "name": {
772
+ "type": "string"
773
+ },
774
+ "alias": {
775
+ "$ref": "util.json#/$defs/alias"
776
+ },
777
+ "source": {
778
+ "$ref": "util.json#/$defs/source"
779
+ },
780
+ "page": {
781
+ "$ref": "util.json#/$defs/page"
782
+ },
783
+ "otherSources": {
784
+ "$ref": "util.json#/$defs/otherSources"
785
+ },
786
+ "additionalSources": {
787
+ "$ref": "util.json#/$defs/additionalSources"
788
+ },
789
+ "reprintedAs": {
790
+ "$ref": "util.json#/$defs/reprintedAs"
791
+ },
792
+ "ability": {
793
+ "$ref": "util.json#/$defs/abilityScores"
794
+ },
795
+ "size": {
796
+ "type": "array",
797
+ "items": {
798
+ "$ref": "util.json#/$defs/size"
799
+ }
800
+ },
801
+ "speed": {
802
+ "$ref": "util.json#/$defs/speed"
803
+ },
804
+ "entries": {
805
+ "type": "array",
806
+ "items": {
807
+ "$ref": "entry.json"
808
+ }
809
+ },
810
+ "darkvision": {
811
+ "type": "integer"
812
+ },
813
+ "blindsight": {
814
+ "type": "integer"
815
+ },
816
+ "feats": {
817
+ "$ref": "util.json#/$defs/additionalFeatsArray"
818
+ },
819
+ "traitTags": {
820
+ "oneOf": [
821
+ {
822
+ "type": "array",
823
+ "items": {
824
+ "$ref": "#/$defs/traitTag"
825
+ }
826
+ },
827
+ {
828
+ "type": "null"
829
+ }
830
+ ]
831
+ },
832
+ "soundClip": {
833
+ "$ref": "entry.json#/$defs/mediaHref"
834
+ },
835
+ "languageProficiencies": {
836
+ "$ref": "util.json#/$defs/languageProficiencies"
837
+ },
838
+ "skillProficiencies": {
839
+ "oneOf": [
840
+ {
841
+ "$ref": "util.json#/$defs/skillProficiencies"
842
+ },
843
+ {
844
+ "type": "null"
845
+ }
846
+ ]
847
+ },
848
+ "toolProficiencies": {
849
+ "$ref": "util.json#/$defs/toolProficiencies"
850
+ },
851
+ "skillToolLanguageProficiencies": {
852
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
853
+ },
854
+ "expertise": {
855
+ "$ref": "util.json#/$defs/expertise"
856
+ },
857
+ "weaponProficiencies": {
858
+ "$ref": "util.json#/$defs/weaponProficiencies"
859
+ },
860
+ "armorProficiencies": {
861
+ "$ref": "util.json#/$defs/armorProficiencies"
862
+ },
863
+ "srd": {
864
+ "$ref": "util.json#/$defs/srd"
865
+ },
866
+ "basicRules": {
867
+ "$ref": "util.json#/$defs/basicRules"
868
+ },
869
+ "legacy": {
870
+ "$ref": "util.json#/$defs/legacy"
871
+ },
872
+ "lineage": {
873
+ "oneOf": [
874
+ {
875
+ "$ref": "#/$defs/lineage"
876
+ },
877
+ {
878
+ "type": "null"
879
+ }
880
+ ]
881
+ },
882
+ "heightAndWeight": {
883
+ "oneOf": [
884
+ {
885
+ "$ref": "#/$defs/heightAndWeight"
886
+ },
887
+ {
888
+ "type": "null"
889
+ }
890
+ ]
891
+ },
892
+ "additionalSpells": {
893
+ "oneOf": [
894
+ {
895
+ "type": "null"
896
+ },
897
+ {
898
+ "$ref": "util.json#/$defs/additionalSpellsArray"
899
+ }
900
+ ]
901
+ },
902
+ "resist": {
903
+ "oneOf": [
904
+ {
905
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
906
+ },
907
+ {
908
+ "type": "null"
909
+ }
910
+ ]
911
+ },
912
+ "immune": {
913
+ "oneOf": [
914
+ {
915
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
916
+ },
917
+ {
918
+ "type": "null"
919
+ }
920
+ ]
921
+ },
922
+ "vulnerable": {
923
+ "oneOf": [
924
+ {
925
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
926
+ },
927
+ {
928
+ "type": "null"
929
+ }
930
+ ]
931
+ },
932
+ "conditionImmune": {
933
+ "oneOf": [
934
+ {
935
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
936
+ },
937
+ {
938
+ "type": "null"
939
+ }
940
+ ]
941
+ },
942
+ "creatureTypes": {
943
+ "type": "array",
944
+ "items": {
945
+ "oneOf": [
946
+ {
947
+ "type": "object",
948
+ "properties": {
949
+ "choose": {
950
+ "type": "array",
951
+ "items": {
952
+ "$ref": "util.json#/$defs/creatureType"
953
+ }
954
+ }
955
+ },
956
+ "required": [
957
+ "choose"
958
+ ],
959
+ "additionalProperties": false
960
+ },
961
+ {
962
+ "$ref": "util.json#/$defs/creatureType"
963
+ }
964
+ ]
965
+ }
966
+ },
967
+ "creatureTypeTags": {
968
+ "type": "array",
969
+ "uniqueItems": true,
970
+ "minItems": 1,
971
+ "items": {
972
+ "type": "string"
973
+ }
974
+ },
975
+ "age": {
976
+ "$ref": "#/$defs/age"
977
+ },
978
+ "hasFluff": {
979
+ "type": "boolean"
980
+ },
981
+ "hasFluffImages": {
982
+ "type": "boolean"
983
+ },
984
+ "_versions": {
985
+ "$ref": "util.json#/$defs/versionsArray"
986
+ },
987
+ "_copy": {
988
+ "type": "object",
989
+ "properties": {
990
+ "name": {
991
+ "type": "string"
992
+ },
993
+ "source": {
994
+ "$ref": "util.json#/$defs/source"
995
+ },
996
+ "pantheon": {
997
+ "description": "Used in deity data",
998
+ "type": "string"
999
+ },
1000
+ "shortName": {
1001
+ "description": "Used in subclass data",
1002
+ "type": "string"
1003
+ },
1004
+ "className": {
1005
+ "description": "Used in subclass data",
1006
+ "type": "string"
1007
+ },
1008
+ "classSource": {
1009
+ "description": "Used in subclass data",
1010
+ "$ref": "util.json#/$defs/source"
1011
+ },
1012
+ "_mod": {
1013
+ "$ref": "util.json#/$defs/_modObject"
1014
+ },
1015
+ "_trait": {
1016
+ "type": "object",
1017
+ "properties": {
1018
+ "name": {
1019
+ "type": "string"
1020
+ },
1021
+ "source": {
1022
+ "$ref": "util.json#/$defs/source"
1023
+ }
1024
+ },
1025
+ "required": [
1026
+ "name",
1027
+ "source"
1028
+ ]
1029
+ },
1030
+ "_preserve": {
1031
+ "type": "object",
1032
+ "patternProperties": {
1033
+ ".*": {
1034
+ "const": true
1035
+ }
1036
+ }
1037
+ }
1038
+ },
1039
+ "required": [
1040
+ "name",
1041
+ "source"
1042
+ ],
1043
+ "additionalProperties": false
1044
+ }
1045
+ },
1046
+ "additionalProperties": false,
1047
+ "required": [
1048
+ "_copy"
1049
+ ]
1050
+ }
1051
+ ]
1052
+ },
1053
+ "subrace": {
1054
+ "anyOf": [
1055
+ {
1056
+ "type": "object",
1057
+ "properties": {
1058
+ "name": {
1059
+ "type": "string"
1060
+ },
1061
+ "alias": {
1062
+ "$ref": "util.json#/$defs/alias"
1063
+ },
1064
+ "source": {
1065
+ "$ref": "util.json#/$defs/source"
1066
+ },
1067
+ "page": {
1068
+ "$ref": "util.json#/$defs/page"
1069
+ },
1070
+ "otherSources": {
1071
+ "$ref": "util.json#/$defs/otherSources"
1072
+ },
1073
+ "additionalSources": {
1074
+ "$ref": "util.json#/$defs/additionalSources"
1075
+ },
1076
+ "reprintedAs": {
1077
+ "$ref": "util.json#/$defs/reprintedAs"
1078
+ },
1079
+ "ability": {
1080
+ "$ref": "util.json#/$defs/abilityScores"
1081
+ },
1082
+ "size": {
1083
+ "type": "array",
1084
+ "items": {
1085
+ "$ref": "util.json#/$defs/size"
1086
+ }
1087
+ },
1088
+ "speed": {
1089
+ "$ref": "util.json#/$defs/speed"
1090
+ },
1091
+ "entries": {
1092
+ "type": "array",
1093
+ "items": {
1094
+ "$ref": "entry.json"
1095
+ }
1096
+ },
1097
+ "darkvision": {
1098
+ "type": "integer"
1099
+ },
1100
+ "blindsight": {
1101
+ "type": "integer"
1102
+ },
1103
+ "feats": {
1104
+ "$ref": "util.json#/$defs/additionalFeatsArray"
1105
+ },
1106
+ "traitTags": {
1107
+ "oneOf": [
1108
+ {
1109
+ "type": "array",
1110
+ "items": {
1111
+ "$ref": "#/$defs/traitTag"
1112
+ }
1113
+ },
1114
+ {
1115
+ "type": "null"
1116
+ }
1117
+ ]
1118
+ },
1119
+ "soundClip": {
1120
+ "$ref": "entry.json#/$defs/mediaHref"
1121
+ },
1122
+ "languageProficiencies": {
1123
+ "$ref": "util.json#/$defs/languageProficiencies"
1124
+ },
1125
+ "skillProficiencies": {
1126
+ "oneOf": [
1127
+ {
1128
+ "$ref": "util.json#/$defs/skillProficiencies"
1129
+ },
1130
+ {
1131
+ "type": "null"
1132
+ }
1133
+ ]
1134
+ },
1135
+ "toolProficiencies": {
1136
+ "$ref": "util.json#/$defs/toolProficiencies"
1137
+ },
1138
+ "skillToolLanguageProficiencies": {
1139
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
1140
+ },
1141
+ "expertise": {
1142
+ "$ref": "util.json#/$defs/expertise"
1143
+ },
1144
+ "weaponProficiencies": {
1145
+ "$ref": "util.json#/$defs/weaponProficiencies"
1146
+ },
1147
+ "armorProficiencies": {
1148
+ "$ref": "util.json#/$defs/armorProficiencies"
1149
+ },
1150
+ "srd": {
1151
+ "$ref": "util.json#/$defs/srd"
1152
+ },
1153
+ "basicRules": {
1154
+ "$ref": "util.json#/$defs/basicRules"
1155
+ },
1156
+ "legacy": {
1157
+ "$ref": "util.json#/$defs/legacy"
1158
+ },
1159
+ "lineage": {
1160
+ "oneOf": [
1161
+ {
1162
+ "$ref": "#/$defs/lineage"
1163
+ },
1164
+ {
1165
+ "type": "null"
1166
+ }
1167
+ ]
1168
+ },
1169
+ "heightAndWeight": {
1170
+ "oneOf": [
1171
+ {
1172
+ "$ref": "#/$defs/heightAndWeight"
1173
+ },
1174
+ {
1175
+ "type": "null"
1176
+ }
1177
+ ]
1178
+ },
1179
+ "additionalSpells": {
1180
+ "oneOf": [
1181
+ {
1182
+ "type": "null"
1183
+ },
1184
+ {
1185
+ "$ref": "util.json#/$defs/additionalSpellsArray"
1186
+ }
1187
+ ]
1188
+ },
1189
+ "resist": {
1190
+ "oneOf": [
1191
+ {
1192
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
1193
+ },
1194
+ {
1195
+ "type": "null"
1196
+ }
1197
+ ]
1198
+ },
1199
+ "immune": {
1200
+ "oneOf": [
1201
+ {
1202
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
1203
+ },
1204
+ {
1205
+ "type": "null"
1206
+ }
1207
+ ]
1208
+ },
1209
+ "vulnerable": {
1210
+ "oneOf": [
1211
+ {
1212
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
1213
+ },
1214
+ {
1215
+ "type": "null"
1216
+ }
1217
+ ]
1218
+ },
1219
+ "conditionImmune": {
1220
+ "oneOf": [
1221
+ {
1222
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
1223
+ },
1224
+ {
1225
+ "type": "null"
1226
+ }
1227
+ ]
1228
+ },
1229
+ "creatureTypes": {
1230
+ "type": "array",
1231
+ "items": {
1232
+ "oneOf": [
1233
+ {
1234
+ "type": "object",
1235
+ "properties": {
1236
+ "choose": {
1237
+ "type": "array",
1238
+ "items": {
1239
+ "$ref": "util.json#/$defs/creatureType"
1240
+ }
1241
+ }
1242
+ },
1243
+ "required": [
1244
+ "choose"
1245
+ ],
1246
+ "additionalProperties": false
1247
+ },
1248
+ {
1249
+ "$ref": "util.json#/$defs/creatureType"
1250
+ }
1251
+ ]
1252
+ }
1253
+ },
1254
+ "creatureTypeTags": {
1255
+ "type": "array",
1256
+ "uniqueItems": true,
1257
+ "minItems": 1,
1258
+ "items": {
1259
+ "type": "string"
1260
+ }
1261
+ },
1262
+ "age": {
1263
+ "$ref": "#/$defs/age"
1264
+ },
1265
+ "hasFluff": {
1266
+ "type": "boolean"
1267
+ },
1268
+ "hasFluffImages": {
1269
+ "type": "boolean"
1270
+ },
1271
+ "_versions": {
1272
+ "$ref": "util.json#/$defs/versionsArray"
1273
+ },
1274
+ "raceName": {
1275
+ "type": "string"
1276
+ },
1277
+ "raceSource": {
1278
+ "$ref": "util.json#/$defs/source"
1279
+ },
1280
+ "overwrite": {
1281
+ "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace",
1282
+ "type": "object"
1283
+ }
1284
+ },
1285
+ "additionalProperties": false,
1286
+ "required": [
1287
+ "source",
1288
+ "raceName",
1289
+ "raceSource"
1290
+ ]
1291
+ },
1292
+ {
1293
+ "type": "object",
1294
+ "properties": {
1295
+ "name": {
1296
+ "type": "string"
1297
+ },
1298
+ "alias": {
1299
+ "$ref": "util.json#/$defs/alias"
1300
+ },
1301
+ "source": {
1302
+ "$ref": "util.json#/$defs/source"
1303
+ },
1304
+ "page": {
1305
+ "$ref": "util.json#/$defs/page"
1306
+ },
1307
+ "otherSources": {
1308
+ "$ref": "util.json#/$defs/otherSources"
1309
+ },
1310
+ "additionalSources": {
1311
+ "$ref": "util.json#/$defs/additionalSources"
1312
+ },
1313
+ "reprintedAs": {
1314
+ "$ref": "util.json#/$defs/reprintedAs"
1315
+ },
1316
+ "ability": {
1317
+ "$ref": "util.json#/$defs/abilityScores"
1318
+ },
1319
+ "size": {
1320
+ "type": "array",
1321
+ "items": {
1322
+ "$ref": "util.json#/$defs/size"
1323
+ }
1324
+ },
1325
+ "speed": {
1326
+ "$ref": "util.json#/$defs/speed"
1327
+ },
1328
+ "entries": {
1329
+ "type": "array",
1330
+ "items": {
1331
+ "$ref": "entry.json"
1332
+ }
1333
+ },
1334
+ "darkvision": {
1335
+ "type": "integer"
1336
+ },
1337
+ "blindsight": {
1338
+ "type": "integer"
1339
+ },
1340
+ "feats": {
1341
+ "$ref": "util.json#/$defs/additionalFeatsArray"
1342
+ },
1343
+ "traitTags": {
1344
+ "oneOf": [
1345
+ {
1346
+ "type": "array",
1347
+ "items": {
1348
+ "$ref": "#/$defs/traitTag"
1349
+ }
1350
+ },
1351
+ {
1352
+ "type": "null"
1353
+ }
1354
+ ]
1355
+ },
1356
+ "soundClip": {
1357
+ "$ref": "entry.json#/$defs/mediaHref"
1358
+ },
1359
+ "languageProficiencies": {
1360
+ "$ref": "util.json#/$defs/languageProficiencies"
1361
+ },
1362
+ "skillProficiencies": {
1363
+ "oneOf": [
1364
+ {
1365
+ "$ref": "util.json#/$defs/skillProficiencies"
1366
+ },
1367
+ {
1368
+ "type": "null"
1369
+ }
1370
+ ]
1371
+ },
1372
+ "toolProficiencies": {
1373
+ "$ref": "util.json#/$defs/toolProficiencies"
1374
+ },
1375
+ "skillToolLanguageProficiencies": {
1376
+ "$ref": "util.json#/$defs/skillToolLanguageProficiencies"
1377
+ },
1378
+ "expertise": {
1379
+ "$ref": "util.json#/$defs/expertise"
1380
+ },
1381
+ "weaponProficiencies": {
1382
+ "$ref": "util.json#/$defs/weaponProficiencies"
1383
+ },
1384
+ "armorProficiencies": {
1385
+ "$ref": "util.json#/$defs/armorProficiencies"
1386
+ },
1387
+ "srd": {
1388
+ "$ref": "util.json#/$defs/srd"
1389
+ },
1390
+ "basicRules": {
1391
+ "$ref": "util.json#/$defs/basicRules"
1392
+ },
1393
+ "legacy": {
1394
+ "$ref": "util.json#/$defs/legacy"
1395
+ },
1396
+ "lineage": {
1397
+ "oneOf": [
1398
+ {
1399
+ "$ref": "#/$defs/lineage"
1400
+ },
1401
+ {
1402
+ "type": "null"
1403
+ }
1404
+ ]
1405
+ },
1406
+ "heightAndWeight": {
1407
+ "oneOf": [
1408
+ {
1409
+ "$ref": "#/$defs/heightAndWeight"
1410
+ },
1411
+ {
1412
+ "type": "null"
1413
+ }
1414
+ ]
1415
+ },
1416
+ "additionalSpells": {
1417
+ "oneOf": [
1418
+ {
1419
+ "type": "null"
1420
+ },
1421
+ {
1422
+ "$ref": "util.json#/$defs/additionalSpellsArray"
1423
+ }
1424
+ ]
1425
+ },
1426
+ "resist": {
1427
+ "oneOf": [
1428
+ {
1429
+ "$ref": "util.json#/$defs/damageResistArrayPlayer"
1430
+ },
1431
+ {
1432
+ "type": "null"
1433
+ }
1434
+ ]
1435
+ },
1436
+ "immune": {
1437
+ "oneOf": [
1438
+ {
1439
+ "$ref": "util.json#/$defs/damageImmunityArrayPlayer"
1440
+ },
1441
+ {
1442
+ "type": "null"
1443
+ }
1444
+ ]
1445
+ },
1446
+ "vulnerable": {
1447
+ "oneOf": [
1448
+ {
1449
+ "$ref": "util.json#/$defs/damageVulnerabilityArrayPlayer"
1450
+ },
1451
+ {
1452
+ "type": "null"
1453
+ }
1454
+ ]
1455
+ },
1456
+ "conditionImmune": {
1457
+ "oneOf": [
1458
+ {
1459
+ "$ref": "util.json#/$defs/conditionImmunityArrayPlayer"
1460
+ },
1461
+ {
1462
+ "type": "null"
1463
+ }
1464
+ ]
1465
+ },
1466
+ "creatureTypes": {
1467
+ "type": "array",
1468
+ "items": {
1469
+ "oneOf": [
1470
+ {
1471
+ "type": "object",
1472
+ "properties": {
1473
+ "choose": {
1474
+ "type": "array",
1475
+ "items": {
1476
+ "$ref": "util.json#/$defs/creatureType"
1477
+ }
1478
+ }
1479
+ },
1480
+ "required": [
1481
+ "choose"
1482
+ ],
1483
+ "additionalProperties": false
1484
+ },
1485
+ {
1486
+ "$ref": "util.json#/$defs/creatureType"
1487
+ }
1488
+ ]
1489
+ }
1490
+ },
1491
+ "creatureTypeTags": {
1492
+ "type": "array",
1493
+ "uniqueItems": true,
1494
+ "minItems": 1,
1495
+ "items": {
1496
+ "type": "string"
1497
+ }
1498
+ },
1499
+ "age": {
1500
+ "$ref": "#/$defs/age"
1501
+ },
1502
+ "hasFluff": {
1503
+ "type": "boolean"
1504
+ },
1505
+ "hasFluffImages": {
1506
+ "type": "boolean"
1507
+ },
1508
+ "_versions": {
1509
+ "$ref": "util.json#/$defs/versionsArray"
1510
+ },
1511
+ "raceName": {
1512
+ "type": "string"
1513
+ },
1514
+ "raceSource": {
1515
+ "$ref": "util.json#/$defs/source"
1516
+ },
1517
+ "overwrite": {
1518
+ "description": "Map of 'property' -> true where 'property' is a property on the base race which should be overwritten by that of the subrace",
1519
+ "type": "object"
1520
+ },
1521
+ "_copy": {
1522
+ "type": "object",
1523
+ "properties": {
1524
+ "name": {
1525
+ "type": "string"
1526
+ },
1527
+ "source": {
1528
+ "$ref": "util.json#/$defs/source"
1529
+ },
1530
+ "pantheon": {
1531
+ "description": "Used in deity data",
1532
+ "type": "string"
1533
+ },
1534
+ "shortName": {
1535
+ "description": "Used in subclass data",
1536
+ "type": "string"
1537
+ },
1538
+ "className": {
1539
+ "description": "Used in subclass data",
1540
+ "type": "string"
1541
+ },
1542
+ "classSource": {
1543
+ "description": "Used in subclass data",
1544
+ "$ref": "util.json#/$defs/source"
1545
+ },
1546
+ "_mod": {
1547
+ "$ref": "util.json#/$defs/_modObject"
1548
+ },
1549
+ "_trait": {
1550
+ "type": "object",
1551
+ "properties": {
1552
+ "name": {
1553
+ "type": "string"
1554
+ },
1555
+ "source": {
1556
+ "$ref": "util.json#/$defs/source"
1557
+ }
1558
+ },
1559
+ "required": [
1560
+ "name",
1561
+ "source"
1562
+ ]
1563
+ },
1564
+ "_preserve": {
1565
+ "type": "object",
1566
+ "patternProperties": {
1567
+ ".*": {
1568
+ "const": true
1569
+ }
1570
+ }
1571
+ }
1572
+ },
1573
+ "required": [
1574
+ "name",
1575
+ "source"
1576
+ ],
1577
+ "additionalProperties": false
1578
+ }
1579
+ },
1580
+ "additionalProperties": false,
1581
+ "required": [
1582
+ "_copy"
1583
+ ]
1584
+ }
1585
+ ]
1586
+ },
1587
+ "fluff": {
1588
+ "description": "This is intended to be used for Homebrew only - site data should include a fluff file per source.",
1589
+ "anyOf": [
1590
+ {
1591
+ "$ref": "util.json#/$defs/fluffObject"
1592
+ },
1593
+ {
1594
+ "description": "References \"raceFluff\" array items",
1595
+ "type": "object",
1596
+ "properties": {
1597
+ "_raceFluff": {
1598
+ "type": "object",
1599
+ "properties": {
1600
+ "name": {
1601
+ "type": "string"
1602
+ },
1603
+ "source": {
1604
+ "$ref": "util.json#/$defs/source"
1605
+ }
1606
+ }
1607
+ },
1608
+ "_appendRaceFluff": {
1609
+ "type": "object",
1610
+ "properties": {
1611
+ "name": {
1612
+ "type": "string"
1613
+ },
1614
+ "source": {
1615
+ "$ref": "util.json#/$defs/source"
1616
+ }
1617
+ }
1618
+ }
1619
+ }
1620
+ }
1621
+ ]
1622
+ }
1623
+ },
1624
+ "properties": {
1625
+ "race": {
1626
+ "type": "array",
1627
+ "uniqueItems": true,
1628
+ "minItems": 1,
1629
+ "items": {
1630
+ "$ref": "#/$defs/race"
1631
+ }
1632
+ },
1633
+ "subrace": {
1634
+ "type": "array",
1635
+ "uniqueItems": true,
1636
+ "minItems": 1,
1637
+ "items": {
1638
+ "$ref": "#/$defs/subrace"
1639
+ }
1640
+ },
1641
+ "_meta": {
1642
+ "$ref": "util.json#/$defs/metaBlock"
1643
+ }
1644
+ },
1645
+ "required": [
1646
+ "race",
1647
+ "subrace"
1648
+ ],
1649
+ "additionalProperties": false
1650
+ }