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