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,3735 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "version": "1.21.18",
4
+ "title": "Bestiary Schema",
5
+ "$id": "bestiary.json",
6
+ "type": "object",
7
+ "$defs": {
8
+ "align": {
9
+ "oneOf": [
10
+ {
11
+ "$ref": "../util.json#/$defs/alignment"
12
+ },
13
+ {
14
+ "type": "object",
15
+ "properties": {
16
+ "alignment": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "../util.json#/$defs/alignment"
20
+ }
21
+ },
22
+ "chance": {
23
+ "type": "integer"
24
+ },
25
+ "note": {
26
+ "type": "string"
27
+ }
28
+ },
29
+ "additionalProperties": false,
30
+ "required": [
31
+ "alignment"
32
+ ]
33
+ },
34
+ {
35
+ "type": "object",
36
+ "properties": {
37
+ "special": {
38
+ "type": "string"
39
+ }
40
+ },
41
+ "additionalProperties": false,
42
+ "required": [
43
+ "special"
44
+ ]
45
+ }
46
+ ]
47
+ },
48
+ "acItem": {
49
+ "oneOf": [
50
+ {
51
+ "type": "object",
52
+ "properties": {
53
+ "ac": {
54
+ "type": "integer"
55
+ },
56
+ "from": {
57
+ "type": "array",
58
+ "items": {
59
+ "type": "string"
60
+ }
61
+ },
62
+ "condition": {
63
+ "type": "string"
64
+ },
65
+ "braces": {
66
+ "type": "boolean"
67
+ }
68
+ },
69
+ "required": [
70
+ "ac"
71
+ ],
72
+ "additionalProperties": false
73
+ },
74
+ {
75
+ "type": "object",
76
+ "properties": {
77
+ "special": {
78
+ "type": "string"
79
+ }
80
+ },
81
+ "required": [
82
+ "special"
83
+ ],
84
+ "additionalProperties": false
85
+ },
86
+ {
87
+ "type": "integer"
88
+ }
89
+ ]
90
+ },
91
+ "abilityScore": {
92
+ "oneOf": [
93
+ {
94
+ "type": [
95
+ "integer",
96
+ "null"
97
+ ]
98
+ },
99
+ {
100
+ "type": "object",
101
+ "properties": {
102
+ "special": {
103
+ "type": "string"
104
+ }
105
+ },
106
+ "required": [
107
+ "special"
108
+ ],
109
+ "additionalProperties": false
110
+ }
111
+ ]
112
+ },
113
+ "creatureData": {
114
+ "type": "object",
115
+ "properties": {
116
+ "name": {
117
+ "type": "string"
118
+ },
119
+ "shortName": {
120
+ "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".",
121
+ "type": [
122
+ "string",
123
+ "boolean"
124
+ ]
125
+ },
126
+ "alias": {
127
+ "$ref": "../util.json#/$defs/alias"
128
+ },
129
+ "group": {
130
+ "description": "A group name, indexed by search. E.g. searching \"Lycanthrope\" would otherwise fail to find anything.\nOnly works on the bestiary page, not in the full site search.",
131
+ "type": [
132
+ "null",
133
+ "array"
134
+ ],
135
+ "items": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ "level": {
140
+ "description": "Used in sidekicks, which can have levels (and generally do not have alignment)",
141
+ "type": "integer"
142
+ },
143
+ "size": {
144
+ "type": "array",
145
+ "items": {
146
+ "$ref": "../util.json#/$defs/size"
147
+ },
148
+ "uniqueItems": true
149
+ },
150
+ "sizeNote": {
151
+ "type": "string"
152
+ },
153
+ "type": {
154
+ "oneOf": [
155
+ {
156
+ "type": "object",
157
+ "properties": {
158
+ "type": {
159
+ "oneOf": [
160
+ {
161
+ "$ref": "../util.json#/$defs/creatureType"
162
+ },
163
+ {
164
+ "type": "object",
165
+ "properties": {
166
+ "choose": {
167
+ "type": "array",
168
+ "items": {
169
+ "$ref": "../util.json#/$defs/creatureType"
170
+ }
171
+ }
172
+ },
173
+ "additionalProperties": false,
174
+ "required": [
175
+ "choose"
176
+ ]
177
+ }
178
+ ]
179
+ },
180
+ "swarmSize": {
181
+ "$ref": "../util.json#/$defs/size",
182
+ "description": "Size of the individual creatures that make up the swarm."
183
+ },
184
+ "tags": {
185
+ "type": "array",
186
+ "uniqueItems": true,
187
+ "items": {
188
+ "oneOf": [
189
+ {
190
+ "type": "string"
191
+ },
192
+ {
193
+ "type": "object",
194
+ "properties": {
195
+ "tag": {
196
+ "type": "string"
197
+ },
198
+ "prefix": {
199
+ "type": "string"
200
+ }
201
+ },
202
+ "required": [
203
+ "tag",
204
+ "prefix"
205
+ ],
206
+ "additionalProperties": false
207
+ }
208
+ ]
209
+ }
210
+ },
211
+ "sidekickType": {
212
+ "type": "string",
213
+ "enum": [
214
+ "expert",
215
+ "spellcaster",
216
+ "warrior"
217
+ ]
218
+ },
219
+ "sidekickTags": {
220
+ "type": "array",
221
+ "uniqueItems": true,
222
+ "items": {
223
+ "oneOf": [
224
+ {
225
+ "type": "string"
226
+ },
227
+ {
228
+ "type": "object",
229
+ "properties": {
230
+ "tag": {
231
+ "type": "string"
232
+ },
233
+ "prefix": {
234
+ "type": "string"
235
+ }
236
+ },
237
+ "required": [
238
+ "tag",
239
+ "prefix"
240
+ ],
241
+ "additionalProperties": false
242
+ }
243
+ ]
244
+ }
245
+ },
246
+ "sidekickHidden": {
247
+ "const": true
248
+ },
249
+ "note": {
250
+ "type": "string"
251
+ }
252
+ },
253
+ "required": [
254
+ "type"
255
+ ],
256
+ "additionalProperties": false
257
+ },
258
+ {
259
+ "$ref": "../util.json#/$defs/creatureType"
260
+ }
261
+ ]
262
+ },
263
+ "source": {
264
+ "$ref": "../util.json#/$defs/source"
265
+ },
266
+ "sourceSub": {
267
+ "type": "string",
268
+ "description": "Sub-source text that is shown when hovered."
269
+ },
270
+ "otherSources": {
271
+ "$ref": "../util.json#/$defs/otherSources"
272
+ },
273
+ "reprintedAs": {
274
+ "$ref": "../util.json#/$defs/reprintedAs"
275
+ },
276
+ "alignment": {
277
+ "type": "array",
278
+ "items": {
279
+ "$ref": "#/$defs/align"
280
+ }
281
+ },
282
+ "alignmentPrefix": {
283
+ "type": "string"
284
+ },
285
+ "ac": {
286
+ "type": "array",
287
+ "items": {
288
+ "$ref": "#/$defs/acItem"
289
+ }
290
+ },
291
+ "hp": {
292
+ "oneOf": [
293
+ {
294
+ "type": "object",
295
+ "properties": {
296
+ "average": {
297
+ "type": "integer"
298
+ },
299
+ "formula": {
300
+ "type": "string"
301
+ }
302
+ },
303
+ "required": [
304
+ "average",
305
+ "formula"
306
+ ],
307
+ "additionalProperties": false
308
+ },
309
+ {
310
+ "type": "object",
311
+ "properties": {
312
+ "special": {
313
+ "type": "string"
314
+ }
315
+ },
316
+ "additionalProperties": false
317
+ }
318
+ ]
319
+ },
320
+ "speed": {
321
+ "$ref": "../util.json#/$defs/speed"
322
+ },
323
+ "str": {
324
+ "$ref": "#/$defs/abilityScore"
325
+ },
326
+ "dex": {
327
+ "$ref": "#/$defs/abilityScore"
328
+ },
329
+ "con": {
330
+ "$ref": "#/$defs/abilityScore"
331
+ },
332
+ "int": {
333
+ "$ref": "#/$defs/abilityScore"
334
+ },
335
+ "wis": {
336
+ "$ref": "#/$defs/abilityScore"
337
+ },
338
+ "cha": {
339
+ "$ref": "#/$defs/abilityScore"
340
+ },
341
+ "save": {
342
+ "type": "object",
343
+ "properties": {
344
+ "str": {
345
+ "type": "string"
346
+ },
347
+ "dex": {
348
+ "type": "string"
349
+ },
350
+ "con": {
351
+ "type": "string"
352
+ },
353
+ "int": {
354
+ "type": "string"
355
+ },
356
+ "wis": {
357
+ "type": "string"
358
+ },
359
+ "cha": {
360
+ "type": "string"
361
+ }
362
+ },
363
+ "additionalProperties": false
364
+ },
365
+ "skill": {
366
+ "type": "object",
367
+ "properties": {
368
+ "acrobatics": {
369
+ "type": "string"
370
+ },
371
+ "animal handling": {
372
+ "type": "string"
373
+ },
374
+ "arcana": {
375
+ "type": "string"
376
+ },
377
+ "athletics": {
378
+ "type": "string"
379
+ },
380
+ "deception": {
381
+ "type": "string"
382
+ },
383
+ "history": {
384
+ "type": "string"
385
+ },
386
+ "insight": {
387
+ "type": "string"
388
+ },
389
+ "intimidation": {
390
+ "type": "string"
391
+ },
392
+ "investigation": {
393
+ "type": "string"
394
+ },
395
+ "medicine": {
396
+ "type": "string"
397
+ },
398
+ "nature": {
399
+ "type": "string"
400
+ },
401
+ "perception": {
402
+ "type": "string"
403
+ },
404
+ "performance": {
405
+ "type": "string"
406
+ },
407
+ "persuasion": {
408
+ "type": "string"
409
+ },
410
+ "religion": {
411
+ "type": "string"
412
+ },
413
+ "sleight of hand": {
414
+ "type": "string"
415
+ },
416
+ "stealth": {
417
+ "type": "string"
418
+ },
419
+ "survival": {
420
+ "type": "string"
421
+ },
422
+ "other": {
423
+ "type": "array",
424
+ "items": {
425
+ "type": "object",
426
+ "properties": {
427
+ "oneOf": {
428
+ "type": "object",
429
+ "properties": {
430
+ "acrobatics": {
431
+ "type": "string"
432
+ },
433
+ "animal handling": {
434
+ "type": "string"
435
+ },
436
+ "arcana": {
437
+ "type": "string"
438
+ },
439
+ "athletics": {
440
+ "type": "string"
441
+ },
442
+ "deception": {
443
+ "type": "string"
444
+ },
445
+ "history": {
446
+ "type": "string"
447
+ },
448
+ "insight": {
449
+ "type": "string"
450
+ },
451
+ "intimidation": {
452
+ "type": "string"
453
+ },
454
+ "investigation": {
455
+ "type": "string"
456
+ },
457
+ "medicine": {
458
+ "type": "string"
459
+ },
460
+ "nature": {
461
+ "type": "string"
462
+ },
463
+ "perception": {
464
+ "type": "string"
465
+ },
466
+ "performance": {
467
+ "type": "string"
468
+ },
469
+ "persuasion": {
470
+ "type": "string"
471
+ },
472
+ "religion": {
473
+ "type": "string"
474
+ },
475
+ "sleight of hand": {
476
+ "type": "string"
477
+ },
478
+ "stealth": {
479
+ "type": "string"
480
+ },
481
+ "survival": {
482
+ "type": "string"
483
+ }
484
+ }
485
+ }
486
+ }
487
+ }
488
+ }
489
+ },
490
+ "additionalProperties": false
491
+ },
492
+ "senses": {
493
+ "oneOf": [
494
+ {
495
+ "type": "array",
496
+ "items": {
497
+ "type": "string"
498
+ }
499
+ },
500
+ {
501
+ "type": "null"
502
+ }
503
+ ]
504
+ },
505
+ "passive": {
506
+ "type": [
507
+ "integer",
508
+ "string",
509
+ "null"
510
+ ]
511
+ },
512
+ "languages": {
513
+ "oneOf": [
514
+ {
515
+ "type": "array",
516
+ "minItems": 1,
517
+ "items": {
518
+ "type": "string"
519
+ }
520
+ },
521
+ {
522
+ "type": "null"
523
+ }
524
+ ]
525
+ },
526
+ "pbNote": {
527
+ "type": "string"
528
+ },
529
+ "cr": {
530
+ "oneOf": [
531
+ {
532
+ "type": "string"
533
+ },
534
+ {
535
+ "type": "object",
536
+ "properties": {
537
+ "cr": {
538
+ "type": "string"
539
+ },
540
+ "lair": {
541
+ "type": "string"
542
+ },
543
+ "coven": {
544
+ "type": "string"
545
+ },
546
+ "xp": {
547
+ "type": "integer"
548
+ }
549
+ },
550
+ "additionalProperties": false,
551
+ "required": [
552
+ "cr"
553
+ ]
554
+ }
555
+ ]
556
+ },
557
+ "vulnerable": {
558
+ "$ref": "../util.json#/$defs/damageVulnerabilityArray"
559
+ },
560
+ "resist": {
561
+ "$ref": "../util.json#/$defs/damageResistArray"
562
+ },
563
+ "immune": {
564
+ "$ref": "../util.json#/$defs/damageImmunityArray"
565
+ },
566
+ "conditionImmune": {
567
+ "$ref": "../util.json#/$defs/conditionImmunityArray"
568
+ },
569
+ "spellcasting": {
570
+ "oneOf": [
571
+ {
572
+ "type": "array",
573
+ "items": {
574
+ "$ref": "../entry.json#/$defs/entrySpellcasting"
575
+ }
576
+ },
577
+ {
578
+ "type": "null"
579
+ }
580
+ ]
581
+ },
582
+ "trait": {
583
+ "oneOf": [
584
+ {
585
+ "type": "array",
586
+ "minItems": 1,
587
+ "items": {
588
+ "type": "object",
589
+ "properties": {
590
+ "name": {
591
+ "type": "string"
592
+ },
593
+ "entries": {
594
+ "type": "array",
595
+ "items": {
596
+ "$ref": "../entry.json"
597
+ }
598
+ },
599
+ "type": {
600
+ "type": "string",
601
+ "enum": [
602
+ "entries",
603
+ "inset"
604
+ ]
605
+ },
606
+ "sort": {
607
+ "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.",
608
+ "type": "integer"
609
+ }
610
+ },
611
+ "required": [
612
+ "name",
613
+ "entries"
614
+ ],
615
+ "additionalProperties": false
616
+ }
617
+ },
618
+ {
619
+ "type": "null"
620
+ }
621
+ ]
622
+ },
623
+ "actionNote": {
624
+ "type": "string"
625
+ },
626
+ "actionHeader": {
627
+ "type": "array",
628
+ "minItems": 1,
629
+ "items": {
630
+ "$ref": "../entry.json"
631
+ }
632
+ },
633
+ "action": {
634
+ "oneOf": [
635
+ {
636
+ "type": "array",
637
+ "minItems": 1,
638
+ "items": {
639
+ "type": "object",
640
+ "properties": {
641
+ "name": {
642
+ "type": "string"
643
+ },
644
+ "entries": {
645
+ "type": "array",
646
+ "items": {
647
+ "$ref": "../entry.json"
648
+ }
649
+ }
650
+ },
651
+ "required": [
652
+ "name",
653
+ "entries"
654
+ ],
655
+ "additionalProperties": false
656
+ }
657
+ },
658
+ {
659
+ "type": "null"
660
+ }
661
+ ]
662
+ },
663
+ "bonusNote": {
664
+ "type": "string"
665
+ },
666
+ "bonusHeader": {
667
+ "type": "array",
668
+ "minItems": 1,
669
+ "items": {
670
+ "$ref": "../entry.json"
671
+ }
672
+ },
673
+ "bonus": {
674
+ "oneOf": [
675
+ {
676
+ "type": "array",
677
+ "minItems": 1,
678
+ "items": {
679
+ "type": "object",
680
+ "properties": {
681
+ "name": {
682
+ "type": "string"
683
+ },
684
+ "entries": {
685
+ "type": "array",
686
+ "items": {
687
+ "$ref": "../entry.json"
688
+ }
689
+ }
690
+ },
691
+ "required": [
692
+ "name",
693
+ "entries"
694
+ ],
695
+ "additionalProperties": false
696
+ }
697
+ },
698
+ {
699
+ "type": "null"
700
+ }
701
+ ]
702
+ },
703
+ "reactionNote": {
704
+ "type": "string"
705
+ },
706
+ "reactionHeader": {
707
+ "type": "array",
708
+ "minItems": 1,
709
+ "items": {
710
+ "$ref": "../entry.json"
711
+ }
712
+ },
713
+ "reaction": {
714
+ "oneOf": [
715
+ {
716
+ "type": "array",
717
+ "minItems": 1,
718
+ "items": {
719
+ "type": "object",
720
+ "properties": {
721
+ "name": {
722
+ "type": "string"
723
+ },
724
+ "entries": {
725
+ "type": "array",
726
+ "items": {
727
+ "$ref": "../entry.json"
728
+ }
729
+ }
730
+ },
731
+ "required": [
732
+ "name",
733
+ "entries"
734
+ ],
735
+ "additionalProperties": false
736
+ }
737
+ },
738
+ {
739
+ "type": "null"
740
+ }
741
+ ]
742
+ },
743
+ "legendaryGroup": {
744
+ "type": "object",
745
+ "properties": {
746
+ "name": {
747
+ "type": "string"
748
+ },
749
+ "source": {
750
+ "$ref": "../util.json#/$defs/source"
751
+ }
752
+ },
753
+ "additionalProperties": false,
754
+ "required": [
755
+ "name",
756
+ "source"
757
+ ]
758
+ },
759
+ "legendaryActions": {
760
+ "type": "number"
761
+ },
762
+ "legendaryHeader": {
763
+ "type": "array",
764
+ "minItems": 1,
765
+ "items": {
766
+ "$ref": "../entry.json"
767
+ }
768
+ },
769
+ "legendary": {
770
+ "oneOf": [
771
+ {
772
+ "type": "array",
773
+ "minItems": 1,
774
+ "items": {
775
+ "type": "object",
776
+ "properties": {
777
+ "name": {
778
+ "type": "string"
779
+ },
780
+ "entries": {
781
+ "type": "array",
782
+ "items": {
783
+ "$ref": "../entry.json"
784
+ }
785
+ }
786
+ },
787
+ "required": [
788
+ "entries"
789
+ ],
790
+ "additionalProperties": false
791
+ }
792
+ },
793
+ {
794
+ "type": "null"
795
+ }
796
+ ]
797
+ },
798
+ "mythicHeader": {
799
+ "type": "array",
800
+ "minItems": 1,
801
+ "items": {
802
+ "$ref": "../entry.json"
803
+ }
804
+ },
805
+ "mythic": {
806
+ "oneOf": [
807
+ {
808
+ "type": "array",
809
+ "minItems": 1,
810
+ "items": {
811
+ "type": "object",
812
+ "properties": {
813
+ "name": {
814
+ "type": "string"
815
+ },
816
+ "entries": {
817
+ "type": "array",
818
+ "items": {
819
+ "$ref": "../entry.json"
820
+ }
821
+ }
822
+ },
823
+ "required": [
824
+ "entries"
825
+ ],
826
+ "additionalProperties": false
827
+ }
828
+ },
829
+ {
830
+ "type": "null"
831
+ }
832
+ ]
833
+ },
834
+ "variant": {
835
+ "oneOf": [
836
+ {
837
+ "type": "array",
838
+ "items": {
839
+ "$ref": "#/$defs/entryVariantBestiary"
840
+ }
841
+ },
842
+ {
843
+ "type": "null"
844
+ }
845
+ ]
846
+ },
847
+ "page": {
848
+ "$ref": "../util.json#/$defs/page"
849
+ },
850
+ "familiar": {
851
+ "type": "boolean"
852
+ },
853
+ "additionalSources": {
854
+ "$ref": "../util.json#/$defs/additionalSources"
855
+ },
856
+ "hasToken": {
857
+ "type": "boolean"
858
+ },
859
+ "tokenUrl": {
860
+ "type": "string"
861
+ },
862
+ "altArt": {
863
+ "type": "array",
864
+ "items": {
865
+ "anyOf": [
866
+ {
867
+ "type": "object",
868
+ "properties": {
869
+ "name": {
870
+ "type": "string"
871
+ },
872
+ "source": {
873
+ "$ref": "../util.json#/$defs/source"
874
+ },
875
+ "page": {
876
+ "$ref": "../util.json#/$defs/page"
877
+ }
878
+ },
879
+ "required": [
880
+ "name",
881
+ "source"
882
+ ]
883
+ }
884
+ ]
885
+ }
886
+ },
887
+ "isNamedCreature": {
888
+ "type": "boolean"
889
+ },
890
+ "isNpc": {
891
+ "description": "Used to flag adventure NPCs",
892
+ "type": "boolean"
893
+ },
894
+ "environment": {
895
+ "type": "array",
896
+ "minItems": 1,
897
+ "items": {
898
+ "type": "string",
899
+ "enum": [
900
+ "underwater",
901
+ "coastal",
902
+ "mountain",
903
+ "grassland",
904
+ "hill",
905
+ "arctic",
906
+ "urban",
907
+ "forest",
908
+ "swamp",
909
+ "underdark",
910
+ "desert"
911
+ ]
912
+ }
913
+ },
914
+ "soundClip": {
915
+ "$ref": "../entry.json#/$defs/mediaHref"
916
+ },
917
+ "dragonCastingColor": {
918
+ "type": "string",
919
+ "enum": [
920
+ "black",
921
+ "blue",
922
+ "green",
923
+ "red",
924
+ "white",
925
+ "brass",
926
+ "bronze",
927
+ "copper",
928
+ "gold",
929
+ "silver",
930
+ "deep"
931
+ ]
932
+ },
933
+ "dragonAge": {
934
+ "type": "string",
935
+ "enum": [
936
+ "young",
937
+ "adult",
938
+ "wyrmling",
939
+ "greatwyrm",
940
+ "ancient",
941
+ "aspect"
942
+ ]
943
+ },
944
+ "traitTags": {
945
+ "type": "array",
946
+ "items": {
947
+ "type": "string",
948
+ "enum": [
949
+ "Aggressive",
950
+ "Ambusher",
951
+ "Amorphous",
952
+ "Amphibious",
953
+ "Antimagic Susceptibility",
954
+ "Brute",
955
+ "Charge",
956
+ "Damage Absorption",
957
+ "Death Burst",
958
+ "Devil's Sight",
959
+ "False Appearance",
960
+ "Fey Ancestry",
961
+ "Flyby",
962
+ "Hold Breath",
963
+ "Illumination",
964
+ "Immutable Form",
965
+ "Incorporeal Movement",
966
+ "Keen Senses",
967
+ "Legendary Resistances",
968
+ "Light Sensitivity",
969
+ "Magic Resistance",
970
+ "Magic Weapons",
971
+ "Pack Tactics",
972
+ "Pounce",
973
+ "Rampage",
974
+ "Reckless",
975
+ "Regeneration",
976
+ "Rejuvenation",
977
+ "Shapechanger",
978
+ "Siege Monster",
979
+ "Sneak Attack",
980
+ "Spell Immunity",
981
+ "Spider Climb",
982
+ "Sunlight Sensitivity",
983
+ "Tree Stride",
984
+ "Tunneler",
985
+ "Turn Immunity",
986
+ "Turn Resistance",
987
+ "Undead Fortitude",
988
+ "Unusual Nature",
989
+ "Water Breathing",
990
+ "Web Sense",
991
+ "Web Walker"
992
+ ]
993
+ }
994
+ },
995
+ "actionTags": {
996
+ "type": "array",
997
+ "items": {
998
+ "type": "string",
999
+ "enum": [
1000
+ "Breath Weapon",
1001
+ "Frightful Presence",
1002
+ "Multiattack",
1003
+ "Parry",
1004
+ "Shapechanger",
1005
+ "Swallow",
1006
+ "Teleport",
1007
+ "Tentacles"
1008
+ ]
1009
+ }
1010
+ },
1011
+ "languageTags": {
1012
+ "type": "array",
1013
+ "items": {
1014
+ "type": "string",
1015
+ "description": "X: Any (Choose)\n XX: All\n CS: Can't Speak Known Languages\n LF: Languages Known in Life\n TP: Telepathy\n OTH: Other\n -\n AB: Abyssal\n AQ: Aquan\n AU: Auran\n C: Common\n CE: Celestial\n D: Dwarvish\n DR: Draconic\n DS: Deep Speech\n DU: Druidic\n E: Elvish\n G: Gnomish\n GI: Giant\n GO: Goblin\n GTH: Gith\n H: Halfling\n I: Infernal\n IG: Ignan\n O: Orc\n P: Primordial\n S: Sylvan\n T: Terran\n TC: Thieves' cant\n U: Undercommon\n ",
1016
+ "enum": [
1017
+ "AB",
1018
+ "AQ",
1019
+ "AU",
1020
+ "C",
1021
+ "CE",
1022
+ "CS",
1023
+ "D",
1024
+ "DR",
1025
+ "DS",
1026
+ "DU",
1027
+ "E",
1028
+ "G",
1029
+ "GI",
1030
+ "GO",
1031
+ "GTH",
1032
+ "H",
1033
+ "I",
1034
+ "IG",
1035
+ "LF",
1036
+ "O",
1037
+ "OTH",
1038
+ "P",
1039
+ "S",
1040
+ "T",
1041
+ "TC",
1042
+ "TP",
1043
+ "U",
1044
+ "X",
1045
+ "XX"
1046
+ ]
1047
+ }
1048
+ },
1049
+ "senseTags": {
1050
+ "type": "array",
1051
+ "items": {
1052
+ "type": "string",
1053
+ "description": "B: Blindsight\n D: Darkvision\n SD: Superior Darkvision\n T: Tremorsense\n U: Truesight",
1054
+ "enum": [
1055
+ "B",
1056
+ "D",
1057
+ "SD",
1058
+ "T",
1059
+ "U"
1060
+ ]
1061
+ }
1062
+ },
1063
+ "spellcastingTags": {
1064
+ "type": "array",
1065
+ "items": {
1066
+ "type": "string",
1067
+ "description": "P: Psionics\n I: Innate\n F: Form Only\n S: Shared\n O: Other\n CA: Class, Artificer\n CB: Class, Bard\n CC: Class, Cleric\n CD: Class, Druid\n CP: Class, Paladin\n CR: Class, Ranger\n CS: Class, Sorcerer\n CL: Class, Warlock\n CW: Class, Wizard",
1068
+ "enum": [
1069
+ "P",
1070
+ "I",
1071
+ "F",
1072
+ "S",
1073
+ "O",
1074
+ "CA",
1075
+ "CB",
1076
+ "CC",
1077
+ "CD",
1078
+ "CP",
1079
+ "CR",
1080
+ "CS",
1081
+ "CL",
1082
+ "CW"
1083
+ ]
1084
+ }
1085
+ },
1086
+ "damageTags": {
1087
+ "type": "array",
1088
+ "items": {
1089
+ "$ref": "../util.json#/$defs/dataDamageTags"
1090
+ }
1091
+ },
1092
+ "damageTagsSpell": {
1093
+ "type": "array",
1094
+ "items": {
1095
+ "$ref": "../util.json#/$defs/dataDamageTags"
1096
+ }
1097
+ },
1098
+ "damageTagsLegendary": {
1099
+ "type": "array",
1100
+ "items": {
1101
+ "$ref": "../util.json#/$defs/dataDamageTags"
1102
+ }
1103
+ },
1104
+ "miscTags": {
1105
+ "type": "array",
1106
+ "items": {
1107
+ "description": "AOE: Has Areas of Effect\n HPR: Has HP Reduction\n MW: Has Weapon Attacks, Melee\n RW: Has Weapon Attacks, Ranged\n RCH: Has Reach Attacks\n RNG: Has Ranged Weapons\n THW: Has Thrown Weapons",
1108
+ "enum": [
1109
+ "AOE",
1110
+ "HPR",
1111
+ "MW",
1112
+ "RW",
1113
+ "RCH",
1114
+ "RNG",
1115
+ "THW"
1116
+ ]
1117
+ }
1118
+ },
1119
+ "attachedItems": {
1120
+ "type": "array",
1121
+ "minItems": 1,
1122
+ "uniqueItems": true,
1123
+ "items": {
1124
+ "description": "A UID, e.g. \"longsword|phb\"",
1125
+ "type": "string"
1126
+ }
1127
+ },
1128
+ "conditionInflict": {
1129
+ "$ref": "../util.json#/$defs/tagsConditions"
1130
+ },
1131
+ "conditionInflictLegendary": {
1132
+ "$ref": "../util.json#/$defs/tagsConditions"
1133
+ },
1134
+ "conditionInflictSpell": {
1135
+ "$ref": "../util.json#/$defs/tagsConditions"
1136
+ },
1137
+ "savingThrowForced": {
1138
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
1139
+ },
1140
+ "savingThrowForcedLegendary": {
1141
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
1142
+ },
1143
+ "savingThrowForcedSpell": {
1144
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
1145
+ },
1146
+ "footer": {
1147
+ "description": "Intended for homebrew use only.",
1148
+ "type": "array",
1149
+ "items": {
1150
+ "$ref": "../entry.json"
1151
+ }
1152
+ },
1153
+ "srd": {
1154
+ "$ref": "../util.json#/$defs/srd"
1155
+ },
1156
+ "basicRules": {
1157
+ "$ref": "../util.json#/$defs/basicRules"
1158
+ },
1159
+ "legacy": {
1160
+ "$ref": "../util.json#/$defs/legacy"
1161
+ },
1162
+ "summonedBySpell": {
1163
+ "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.",
1164
+ "type": "string"
1165
+ },
1166
+ "summonedBySpellLevel": {
1167
+ "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.",
1168
+ "type": "integer"
1169
+ },
1170
+ "summonedByClass": {
1171
+ "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.",
1172
+ "type": "string"
1173
+ },
1174
+ "_isCopy": {
1175
+ "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.",
1176
+ "type": "boolean"
1177
+ },
1178
+ "_versions": {
1179
+ "type": "array",
1180
+ "items": {
1181
+ "$ref": "#/$defs/creatureVersion"
1182
+ }
1183
+ },
1184
+ "hasFluff": {
1185
+ "type": "boolean"
1186
+ },
1187
+ "hasFluffImages": {
1188
+ "type": "boolean"
1189
+ }
1190
+ },
1191
+ "additionalProperties": false
1192
+ },
1193
+ "creature": {
1194
+ "anyOf": [
1195
+ {
1196
+ "type": "object",
1197
+ "properties": {
1198
+ "name": {
1199
+ "type": "string"
1200
+ },
1201
+ "shortName": {
1202
+ "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".",
1203
+ "type": [
1204
+ "string",
1205
+ "boolean"
1206
+ ]
1207
+ },
1208
+ "alias": {
1209
+ "$ref": "../util.json#/$defs/alias"
1210
+ },
1211
+ "group": {
1212
+ "description": "A group name, indexed by search. E.g. searching \"Lycanthrope\" would otherwise fail to find anything.\nOnly works on the bestiary page, not in the full site search.",
1213
+ "type": [
1214
+ "null",
1215
+ "array"
1216
+ ],
1217
+ "items": {
1218
+ "type": "string"
1219
+ }
1220
+ },
1221
+ "level": {
1222
+ "description": "Used in sidekicks, which can have levels (and generally do not have alignment)",
1223
+ "type": "integer"
1224
+ },
1225
+ "size": {
1226
+ "type": "array",
1227
+ "items": {
1228
+ "$ref": "../util.json#/$defs/size"
1229
+ },
1230
+ "uniqueItems": true
1231
+ },
1232
+ "sizeNote": {
1233
+ "type": "string"
1234
+ },
1235
+ "type": {
1236
+ "oneOf": [
1237
+ {
1238
+ "type": "object",
1239
+ "properties": {
1240
+ "type": {
1241
+ "oneOf": [
1242
+ {
1243
+ "$ref": "../util.json#/$defs/creatureType"
1244
+ },
1245
+ {
1246
+ "type": "object",
1247
+ "properties": {
1248
+ "choose": {
1249
+ "type": "array",
1250
+ "items": {
1251
+ "$ref": "../util.json#/$defs/creatureType"
1252
+ }
1253
+ }
1254
+ },
1255
+ "additionalProperties": false,
1256
+ "required": [
1257
+ "choose"
1258
+ ]
1259
+ }
1260
+ ]
1261
+ },
1262
+ "swarmSize": {
1263
+ "$ref": "../util.json#/$defs/size",
1264
+ "description": "Size of the individual creatures that make up the swarm."
1265
+ },
1266
+ "tags": {
1267
+ "type": "array",
1268
+ "uniqueItems": true,
1269
+ "items": {
1270
+ "oneOf": [
1271
+ {
1272
+ "type": "string"
1273
+ },
1274
+ {
1275
+ "type": "object",
1276
+ "properties": {
1277
+ "tag": {
1278
+ "type": "string"
1279
+ },
1280
+ "prefix": {
1281
+ "type": "string"
1282
+ }
1283
+ },
1284
+ "required": [
1285
+ "tag",
1286
+ "prefix"
1287
+ ],
1288
+ "additionalProperties": false
1289
+ }
1290
+ ]
1291
+ }
1292
+ },
1293
+ "sidekickType": {
1294
+ "type": "string",
1295
+ "enum": [
1296
+ "expert",
1297
+ "spellcaster",
1298
+ "warrior"
1299
+ ]
1300
+ },
1301
+ "sidekickTags": {
1302
+ "type": "array",
1303
+ "uniqueItems": true,
1304
+ "items": {
1305
+ "oneOf": [
1306
+ {
1307
+ "type": "string"
1308
+ },
1309
+ {
1310
+ "type": "object",
1311
+ "properties": {
1312
+ "tag": {
1313
+ "type": "string"
1314
+ },
1315
+ "prefix": {
1316
+ "type": "string"
1317
+ }
1318
+ },
1319
+ "required": [
1320
+ "tag",
1321
+ "prefix"
1322
+ ],
1323
+ "additionalProperties": false
1324
+ }
1325
+ ]
1326
+ }
1327
+ },
1328
+ "sidekickHidden": {
1329
+ "const": true
1330
+ },
1331
+ "note": {
1332
+ "type": "string"
1333
+ }
1334
+ },
1335
+ "required": [
1336
+ "type"
1337
+ ],
1338
+ "additionalProperties": false
1339
+ },
1340
+ {
1341
+ "$ref": "../util.json#/$defs/creatureType"
1342
+ }
1343
+ ]
1344
+ },
1345
+ "source": {
1346
+ "$ref": "../util.json#/$defs/source"
1347
+ },
1348
+ "sourceSub": {
1349
+ "type": "string",
1350
+ "description": "Sub-source text that is shown when hovered."
1351
+ },
1352
+ "otherSources": {
1353
+ "$ref": "../util.json#/$defs/otherSources"
1354
+ },
1355
+ "reprintedAs": {
1356
+ "$ref": "../util.json#/$defs/reprintedAs"
1357
+ },
1358
+ "alignment": {
1359
+ "type": "array",
1360
+ "items": {
1361
+ "$ref": "#/$defs/align"
1362
+ }
1363
+ },
1364
+ "alignmentPrefix": {
1365
+ "type": "string"
1366
+ },
1367
+ "ac": {
1368
+ "type": "array",
1369
+ "items": {
1370
+ "$ref": "#/$defs/acItem"
1371
+ }
1372
+ },
1373
+ "hp": {
1374
+ "oneOf": [
1375
+ {
1376
+ "type": "object",
1377
+ "properties": {
1378
+ "average": {
1379
+ "type": "integer"
1380
+ },
1381
+ "formula": {
1382
+ "type": "string"
1383
+ }
1384
+ },
1385
+ "required": [
1386
+ "average",
1387
+ "formula"
1388
+ ],
1389
+ "additionalProperties": false
1390
+ },
1391
+ {
1392
+ "type": "object",
1393
+ "properties": {
1394
+ "special": {
1395
+ "type": "string"
1396
+ }
1397
+ },
1398
+ "additionalProperties": false
1399
+ }
1400
+ ]
1401
+ },
1402
+ "speed": {
1403
+ "$ref": "../util.json#/$defs/speed"
1404
+ },
1405
+ "str": {
1406
+ "$ref": "#/$defs/abilityScore"
1407
+ },
1408
+ "dex": {
1409
+ "$ref": "#/$defs/abilityScore"
1410
+ },
1411
+ "con": {
1412
+ "$ref": "#/$defs/abilityScore"
1413
+ },
1414
+ "int": {
1415
+ "$ref": "#/$defs/abilityScore"
1416
+ },
1417
+ "wis": {
1418
+ "$ref": "#/$defs/abilityScore"
1419
+ },
1420
+ "cha": {
1421
+ "$ref": "#/$defs/abilityScore"
1422
+ },
1423
+ "save": {
1424
+ "type": "object",
1425
+ "properties": {
1426
+ "str": {
1427
+ "type": "string"
1428
+ },
1429
+ "dex": {
1430
+ "type": "string"
1431
+ },
1432
+ "con": {
1433
+ "type": "string"
1434
+ },
1435
+ "int": {
1436
+ "type": "string"
1437
+ },
1438
+ "wis": {
1439
+ "type": "string"
1440
+ },
1441
+ "cha": {
1442
+ "type": "string"
1443
+ }
1444
+ },
1445
+ "additionalProperties": false
1446
+ },
1447
+ "skill": {
1448
+ "type": "object",
1449
+ "properties": {
1450
+ "acrobatics": {
1451
+ "type": "string"
1452
+ },
1453
+ "animal handling": {
1454
+ "type": "string"
1455
+ },
1456
+ "arcana": {
1457
+ "type": "string"
1458
+ },
1459
+ "athletics": {
1460
+ "type": "string"
1461
+ },
1462
+ "deception": {
1463
+ "type": "string"
1464
+ },
1465
+ "history": {
1466
+ "type": "string"
1467
+ },
1468
+ "insight": {
1469
+ "type": "string"
1470
+ },
1471
+ "intimidation": {
1472
+ "type": "string"
1473
+ },
1474
+ "investigation": {
1475
+ "type": "string"
1476
+ },
1477
+ "medicine": {
1478
+ "type": "string"
1479
+ },
1480
+ "nature": {
1481
+ "type": "string"
1482
+ },
1483
+ "perception": {
1484
+ "type": "string"
1485
+ },
1486
+ "performance": {
1487
+ "type": "string"
1488
+ },
1489
+ "persuasion": {
1490
+ "type": "string"
1491
+ },
1492
+ "religion": {
1493
+ "type": "string"
1494
+ },
1495
+ "sleight of hand": {
1496
+ "type": "string"
1497
+ },
1498
+ "stealth": {
1499
+ "type": "string"
1500
+ },
1501
+ "survival": {
1502
+ "type": "string"
1503
+ },
1504
+ "other": {
1505
+ "type": "array",
1506
+ "items": {
1507
+ "type": "object",
1508
+ "properties": {
1509
+ "oneOf": {
1510
+ "type": "object",
1511
+ "properties": {
1512
+ "acrobatics": {
1513
+ "type": "string"
1514
+ },
1515
+ "animal handling": {
1516
+ "type": "string"
1517
+ },
1518
+ "arcana": {
1519
+ "type": "string"
1520
+ },
1521
+ "athletics": {
1522
+ "type": "string"
1523
+ },
1524
+ "deception": {
1525
+ "type": "string"
1526
+ },
1527
+ "history": {
1528
+ "type": "string"
1529
+ },
1530
+ "insight": {
1531
+ "type": "string"
1532
+ },
1533
+ "intimidation": {
1534
+ "type": "string"
1535
+ },
1536
+ "investigation": {
1537
+ "type": "string"
1538
+ },
1539
+ "medicine": {
1540
+ "type": "string"
1541
+ },
1542
+ "nature": {
1543
+ "type": "string"
1544
+ },
1545
+ "perception": {
1546
+ "type": "string"
1547
+ },
1548
+ "performance": {
1549
+ "type": "string"
1550
+ },
1551
+ "persuasion": {
1552
+ "type": "string"
1553
+ },
1554
+ "religion": {
1555
+ "type": "string"
1556
+ },
1557
+ "sleight of hand": {
1558
+ "type": "string"
1559
+ },
1560
+ "stealth": {
1561
+ "type": "string"
1562
+ },
1563
+ "survival": {
1564
+ "type": "string"
1565
+ }
1566
+ }
1567
+ }
1568
+ }
1569
+ }
1570
+ }
1571
+ },
1572
+ "additionalProperties": false
1573
+ },
1574
+ "senses": {
1575
+ "oneOf": [
1576
+ {
1577
+ "type": "array",
1578
+ "items": {
1579
+ "type": "string"
1580
+ }
1581
+ },
1582
+ {
1583
+ "type": "null"
1584
+ }
1585
+ ]
1586
+ },
1587
+ "passive": {
1588
+ "type": [
1589
+ "integer",
1590
+ "string",
1591
+ "null"
1592
+ ]
1593
+ },
1594
+ "languages": {
1595
+ "oneOf": [
1596
+ {
1597
+ "type": "array",
1598
+ "minItems": 1,
1599
+ "items": {
1600
+ "type": "string"
1601
+ }
1602
+ },
1603
+ {
1604
+ "type": "null"
1605
+ }
1606
+ ]
1607
+ },
1608
+ "pbNote": {
1609
+ "type": "string"
1610
+ },
1611
+ "cr": {
1612
+ "oneOf": [
1613
+ {
1614
+ "type": "string"
1615
+ },
1616
+ {
1617
+ "type": "object",
1618
+ "properties": {
1619
+ "cr": {
1620
+ "type": "string"
1621
+ },
1622
+ "lair": {
1623
+ "type": "string"
1624
+ },
1625
+ "coven": {
1626
+ "type": "string"
1627
+ },
1628
+ "xp": {
1629
+ "type": "integer"
1630
+ }
1631
+ },
1632
+ "additionalProperties": false,
1633
+ "required": [
1634
+ "cr"
1635
+ ]
1636
+ }
1637
+ ]
1638
+ },
1639
+ "vulnerable": {
1640
+ "$ref": "../util.json#/$defs/damageVulnerabilityArray"
1641
+ },
1642
+ "resist": {
1643
+ "$ref": "../util.json#/$defs/damageResistArray"
1644
+ },
1645
+ "immune": {
1646
+ "$ref": "../util.json#/$defs/damageImmunityArray"
1647
+ },
1648
+ "conditionImmune": {
1649
+ "$ref": "../util.json#/$defs/conditionImmunityArray"
1650
+ },
1651
+ "spellcasting": {
1652
+ "oneOf": [
1653
+ {
1654
+ "type": "array",
1655
+ "items": {
1656
+ "$ref": "../entry.json#/$defs/entrySpellcasting"
1657
+ }
1658
+ },
1659
+ {
1660
+ "type": "null"
1661
+ }
1662
+ ]
1663
+ },
1664
+ "trait": {
1665
+ "oneOf": [
1666
+ {
1667
+ "type": "array",
1668
+ "minItems": 1,
1669
+ "items": {
1670
+ "type": "object",
1671
+ "properties": {
1672
+ "name": {
1673
+ "type": "string"
1674
+ },
1675
+ "entries": {
1676
+ "type": "array",
1677
+ "items": {
1678
+ "$ref": "../entry.json"
1679
+ }
1680
+ },
1681
+ "type": {
1682
+ "type": "string",
1683
+ "enum": [
1684
+ "entries",
1685
+ "inset"
1686
+ ]
1687
+ },
1688
+ "sort": {
1689
+ "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.",
1690
+ "type": "integer"
1691
+ }
1692
+ },
1693
+ "required": [
1694
+ "name",
1695
+ "entries"
1696
+ ],
1697
+ "additionalProperties": false
1698
+ }
1699
+ },
1700
+ {
1701
+ "type": "null"
1702
+ }
1703
+ ]
1704
+ },
1705
+ "actionNote": {
1706
+ "type": "string"
1707
+ },
1708
+ "actionHeader": {
1709
+ "type": "array",
1710
+ "minItems": 1,
1711
+ "items": {
1712
+ "$ref": "../entry.json"
1713
+ }
1714
+ },
1715
+ "action": {
1716
+ "oneOf": [
1717
+ {
1718
+ "type": "array",
1719
+ "minItems": 1,
1720
+ "items": {
1721
+ "type": "object",
1722
+ "properties": {
1723
+ "name": {
1724
+ "type": "string"
1725
+ },
1726
+ "entries": {
1727
+ "type": "array",
1728
+ "items": {
1729
+ "$ref": "../entry.json"
1730
+ }
1731
+ }
1732
+ },
1733
+ "required": [
1734
+ "name",
1735
+ "entries"
1736
+ ],
1737
+ "additionalProperties": false
1738
+ }
1739
+ },
1740
+ {
1741
+ "type": "null"
1742
+ }
1743
+ ]
1744
+ },
1745
+ "bonusNote": {
1746
+ "type": "string"
1747
+ },
1748
+ "bonusHeader": {
1749
+ "type": "array",
1750
+ "minItems": 1,
1751
+ "items": {
1752
+ "$ref": "../entry.json"
1753
+ }
1754
+ },
1755
+ "bonus": {
1756
+ "oneOf": [
1757
+ {
1758
+ "type": "array",
1759
+ "minItems": 1,
1760
+ "items": {
1761
+ "type": "object",
1762
+ "properties": {
1763
+ "name": {
1764
+ "type": "string"
1765
+ },
1766
+ "entries": {
1767
+ "type": "array",
1768
+ "items": {
1769
+ "$ref": "../entry.json"
1770
+ }
1771
+ }
1772
+ },
1773
+ "required": [
1774
+ "name",
1775
+ "entries"
1776
+ ],
1777
+ "additionalProperties": false
1778
+ }
1779
+ },
1780
+ {
1781
+ "type": "null"
1782
+ }
1783
+ ]
1784
+ },
1785
+ "reactionNote": {
1786
+ "type": "string"
1787
+ },
1788
+ "reactionHeader": {
1789
+ "type": "array",
1790
+ "minItems": 1,
1791
+ "items": {
1792
+ "$ref": "../entry.json"
1793
+ }
1794
+ },
1795
+ "reaction": {
1796
+ "oneOf": [
1797
+ {
1798
+ "type": "array",
1799
+ "minItems": 1,
1800
+ "items": {
1801
+ "type": "object",
1802
+ "properties": {
1803
+ "name": {
1804
+ "type": "string"
1805
+ },
1806
+ "entries": {
1807
+ "type": "array",
1808
+ "items": {
1809
+ "$ref": "../entry.json"
1810
+ }
1811
+ }
1812
+ },
1813
+ "required": [
1814
+ "name",
1815
+ "entries"
1816
+ ],
1817
+ "additionalProperties": false
1818
+ }
1819
+ },
1820
+ {
1821
+ "type": "null"
1822
+ }
1823
+ ]
1824
+ },
1825
+ "legendaryGroup": {
1826
+ "type": "object",
1827
+ "properties": {
1828
+ "name": {
1829
+ "type": "string"
1830
+ },
1831
+ "source": {
1832
+ "$ref": "../util.json#/$defs/source"
1833
+ }
1834
+ },
1835
+ "additionalProperties": false,
1836
+ "required": [
1837
+ "name",
1838
+ "source"
1839
+ ]
1840
+ },
1841
+ "legendaryActions": {
1842
+ "type": "number"
1843
+ },
1844
+ "legendaryHeader": {
1845
+ "type": "array",
1846
+ "minItems": 1,
1847
+ "items": {
1848
+ "$ref": "../entry.json"
1849
+ }
1850
+ },
1851
+ "legendary": {
1852
+ "oneOf": [
1853
+ {
1854
+ "type": "array",
1855
+ "minItems": 1,
1856
+ "items": {
1857
+ "type": "object",
1858
+ "properties": {
1859
+ "name": {
1860
+ "type": "string"
1861
+ },
1862
+ "entries": {
1863
+ "type": "array",
1864
+ "items": {
1865
+ "$ref": "../entry.json"
1866
+ }
1867
+ }
1868
+ },
1869
+ "required": [
1870
+ "entries"
1871
+ ],
1872
+ "additionalProperties": false
1873
+ }
1874
+ },
1875
+ {
1876
+ "type": "null"
1877
+ }
1878
+ ]
1879
+ },
1880
+ "mythicHeader": {
1881
+ "type": "array",
1882
+ "minItems": 1,
1883
+ "items": {
1884
+ "$ref": "../entry.json"
1885
+ }
1886
+ },
1887
+ "mythic": {
1888
+ "oneOf": [
1889
+ {
1890
+ "type": "array",
1891
+ "minItems": 1,
1892
+ "items": {
1893
+ "type": "object",
1894
+ "properties": {
1895
+ "name": {
1896
+ "type": "string"
1897
+ },
1898
+ "entries": {
1899
+ "type": "array",
1900
+ "items": {
1901
+ "$ref": "../entry.json"
1902
+ }
1903
+ }
1904
+ },
1905
+ "required": [
1906
+ "entries"
1907
+ ],
1908
+ "additionalProperties": false
1909
+ }
1910
+ },
1911
+ {
1912
+ "type": "null"
1913
+ }
1914
+ ]
1915
+ },
1916
+ "variant": {
1917
+ "oneOf": [
1918
+ {
1919
+ "type": "array",
1920
+ "items": {
1921
+ "$ref": "#/$defs/entryVariantBestiary"
1922
+ }
1923
+ },
1924
+ {
1925
+ "type": "null"
1926
+ }
1927
+ ]
1928
+ },
1929
+ "page": {
1930
+ "$ref": "../util.json#/$defs/page"
1931
+ },
1932
+ "familiar": {
1933
+ "type": "boolean"
1934
+ },
1935
+ "additionalSources": {
1936
+ "$ref": "../util.json#/$defs/additionalSources"
1937
+ },
1938
+ "hasToken": {
1939
+ "type": "boolean"
1940
+ },
1941
+ "tokenUrl": {
1942
+ "type": "string"
1943
+ },
1944
+ "altArt": {
1945
+ "type": "array",
1946
+ "items": {
1947
+ "anyOf": [
1948
+ {
1949
+ "type": "object",
1950
+ "properties": {
1951
+ "name": {
1952
+ "type": "string"
1953
+ },
1954
+ "source": {
1955
+ "$ref": "../util.json#/$defs/source"
1956
+ },
1957
+ "page": {
1958
+ "$ref": "../util.json#/$defs/page"
1959
+ }
1960
+ },
1961
+ "required": [
1962
+ "name",
1963
+ "source"
1964
+ ]
1965
+ }
1966
+ ]
1967
+ }
1968
+ },
1969
+ "isNamedCreature": {
1970
+ "type": "boolean"
1971
+ },
1972
+ "isNpc": {
1973
+ "description": "Used to flag adventure NPCs",
1974
+ "type": "boolean"
1975
+ },
1976
+ "environment": {
1977
+ "type": "array",
1978
+ "minItems": 1,
1979
+ "items": {
1980
+ "type": "string",
1981
+ "enum": [
1982
+ "underwater",
1983
+ "coastal",
1984
+ "mountain",
1985
+ "grassland",
1986
+ "hill",
1987
+ "arctic",
1988
+ "urban",
1989
+ "forest",
1990
+ "swamp",
1991
+ "underdark",
1992
+ "desert"
1993
+ ]
1994
+ }
1995
+ },
1996
+ "soundClip": {
1997
+ "$ref": "../entry.json#/$defs/mediaHref"
1998
+ },
1999
+ "dragonCastingColor": {
2000
+ "type": "string",
2001
+ "enum": [
2002
+ "black",
2003
+ "blue",
2004
+ "green",
2005
+ "red",
2006
+ "white",
2007
+ "brass",
2008
+ "bronze",
2009
+ "copper",
2010
+ "gold",
2011
+ "silver",
2012
+ "deep"
2013
+ ]
2014
+ },
2015
+ "dragonAge": {
2016
+ "type": "string",
2017
+ "enum": [
2018
+ "young",
2019
+ "adult",
2020
+ "wyrmling",
2021
+ "greatwyrm",
2022
+ "ancient",
2023
+ "aspect"
2024
+ ]
2025
+ },
2026
+ "traitTags": {
2027
+ "type": "array",
2028
+ "items": {
2029
+ "type": "string",
2030
+ "enum": [
2031
+ "Aggressive",
2032
+ "Ambusher",
2033
+ "Amorphous",
2034
+ "Amphibious",
2035
+ "Antimagic Susceptibility",
2036
+ "Brute",
2037
+ "Charge",
2038
+ "Damage Absorption",
2039
+ "Death Burst",
2040
+ "Devil's Sight",
2041
+ "False Appearance",
2042
+ "Fey Ancestry",
2043
+ "Flyby",
2044
+ "Hold Breath",
2045
+ "Illumination",
2046
+ "Immutable Form",
2047
+ "Incorporeal Movement",
2048
+ "Keen Senses",
2049
+ "Legendary Resistances",
2050
+ "Light Sensitivity",
2051
+ "Magic Resistance",
2052
+ "Magic Weapons",
2053
+ "Pack Tactics",
2054
+ "Pounce",
2055
+ "Rampage",
2056
+ "Reckless",
2057
+ "Regeneration",
2058
+ "Rejuvenation",
2059
+ "Shapechanger",
2060
+ "Siege Monster",
2061
+ "Sneak Attack",
2062
+ "Spell Immunity",
2063
+ "Spider Climb",
2064
+ "Sunlight Sensitivity",
2065
+ "Tree Stride",
2066
+ "Tunneler",
2067
+ "Turn Immunity",
2068
+ "Turn Resistance",
2069
+ "Undead Fortitude",
2070
+ "Unusual Nature",
2071
+ "Water Breathing",
2072
+ "Web Sense",
2073
+ "Web Walker"
2074
+ ]
2075
+ }
2076
+ },
2077
+ "actionTags": {
2078
+ "type": "array",
2079
+ "items": {
2080
+ "type": "string",
2081
+ "enum": [
2082
+ "Breath Weapon",
2083
+ "Frightful Presence",
2084
+ "Multiattack",
2085
+ "Parry",
2086
+ "Shapechanger",
2087
+ "Swallow",
2088
+ "Teleport",
2089
+ "Tentacles"
2090
+ ]
2091
+ }
2092
+ },
2093
+ "languageTags": {
2094
+ "type": "array",
2095
+ "items": {
2096
+ "type": "string",
2097
+ "description": "X: Any (Choose)\n XX: All\n CS: Can't Speak Known Languages\n LF: Languages Known in Life\n TP: Telepathy\n OTH: Other\n -\n AB: Abyssal\n AQ: Aquan\n AU: Auran\n C: Common\n CE: Celestial\n D: Dwarvish\n DR: Draconic\n DS: Deep Speech\n DU: Druidic\n E: Elvish\n G: Gnomish\n GI: Giant\n GO: Goblin\n GTH: Gith\n H: Halfling\n I: Infernal\n IG: Ignan\n O: Orc\n P: Primordial\n S: Sylvan\n T: Terran\n TC: Thieves' cant\n U: Undercommon\n ",
2098
+ "enum": [
2099
+ "AB",
2100
+ "AQ",
2101
+ "AU",
2102
+ "C",
2103
+ "CE",
2104
+ "CS",
2105
+ "D",
2106
+ "DR",
2107
+ "DS",
2108
+ "DU",
2109
+ "E",
2110
+ "G",
2111
+ "GI",
2112
+ "GO",
2113
+ "GTH",
2114
+ "H",
2115
+ "I",
2116
+ "IG",
2117
+ "LF",
2118
+ "O",
2119
+ "OTH",
2120
+ "P",
2121
+ "S",
2122
+ "T",
2123
+ "TC",
2124
+ "TP",
2125
+ "U",
2126
+ "X",
2127
+ "XX"
2128
+ ]
2129
+ }
2130
+ },
2131
+ "senseTags": {
2132
+ "type": "array",
2133
+ "items": {
2134
+ "type": "string",
2135
+ "description": "B: Blindsight\n D: Darkvision\n SD: Superior Darkvision\n T: Tremorsense\n U: Truesight",
2136
+ "enum": [
2137
+ "B",
2138
+ "D",
2139
+ "SD",
2140
+ "T",
2141
+ "U"
2142
+ ]
2143
+ }
2144
+ },
2145
+ "spellcastingTags": {
2146
+ "type": "array",
2147
+ "items": {
2148
+ "type": "string",
2149
+ "description": "P: Psionics\n I: Innate\n F: Form Only\n S: Shared\n O: Other\n CA: Class, Artificer\n CB: Class, Bard\n CC: Class, Cleric\n CD: Class, Druid\n CP: Class, Paladin\n CR: Class, Ranger\n CS: Class, Sorcerer\n CL: Class, Warlock\n CW: Class, Wizard",
2150
+ "enum": [
2151
+ "P",
2152
+ "I",
2153
+ "F",
2154
+ "S",
2155
+ "O",
2156
+ "CA",
2157
+ "CB",
2158
+ "CC",
2159
+ "CD",
2160
+ "CP",
2161
+ "CR",
2162
+ "CS",
2163
+ "CL",
2164
+ "CW"
2165
+ ]
2166
+ }
2167
+ },
2168
+ "damageTags": {
2169
+ "type": "array",
2170
+ "items": {
2171
+ "$ref": "../util.json#/$defs/dataDamageTags"
2172
+ }
2173
+ },
2174
+ "damageTagsSpell": {
2175
+ "type": "array",
2176
+ "items": {
2177
+ "$ref": "../util.json#/$defs/dataDamageTags"
2178
+ }
2179
+ },
2180
+ "damageTagsLegendary": {
2181
+ "type": "array",
2182
+ "items": {
2183
+ "$ref": "../util.json#/$defs/dataDamageTags"
2184
+ }
2185
+ },
2186
+ "miscTags": {
2187
+ "type": "array",
2188
+ "items": {
2189
+ "description": "AOE: Has Areas of Effect\n HPR: Has HP Reduction\n MW: Has Weapon Attacks, Melee\n RW: Has Weapon Attacks, Ranged\n RCH: Has Reach Attacks\n RNG: Has Ranged Weapons\n THW: Has Thrown Weapons",
2190
+ "enum": [
2191
+ "AOE",
2192
+ "HPR",
2193
+ "MW",
2194
+ "RW",
2195
+ "RCH",
2196
+ "RNG",
2197
+ "THW"
2198
+ ]
2199
+ }
2200
+ },
2201
+ "attachedItems": {
2202
+ "type": "array",
2203
+ "minItems": 1,
2204
+ "uniqueItems": true,
2205
+ "items": {
2206
+ "description": "A UID, e.g. \"longsword|phb\"",
2207
+ "type": "string"
2208
+ }
2209
+ },
2210
+ "conditionInflict": {
2211
+ "$ref": "../util.json#/$defs/tagsConditions"
2212
+ },
2213
+ "conditionInflictLegendary": {
2214
+ "$ref": "../util.json#/$defs/tagsConditions"
2215
+ },
2216
+ "conditionInflictSpell": {
2217
+ "$ref": "../util.json#/$defs/tagsConditions"
2218
+ },
2219
+ "savingThrowForced": {
2220
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
2221
+ },
2222
+ "savingThrowForcedLegendary": {
2223
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
2224
+ },
2225
+ "savingThrowForcedSpell": {
2226
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
2227
+ },
2228
+ "footer": {
2229
+ "description": "Intended for homebrew use only.",
2230
+ "type": "array",
2231
+ "items": {
2232
+ "$ref": "../entry.json"
2233
+ }
2234
+ },
2235
+ "srd": {
2236
+ "$ref": "../util.json#/$defs/srd"
2237
+ },
2238
+ "basicRules": {
2239
+ "$ref": "../util.json#/$defs/basicRules"
2240
+ },
2241
+ "legacy": {
2242
+ "$ref": "../util.json#/$defs/legacy"
2243
+ },
2244
+ "summonedBySpell": {
2245
+ "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.",
2246
+ "type": "string"
2247
+ },
2248
+ "summonedBySpellLevel": {
2249
+ "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.",
2250
+ "type": "integer"
2251
+ },
2252
+ "summonedByClass": {
2253
+ "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.",
2254
+ "type": "string"
2255
+ },
2256
+ "_isCopy": {
2257
+ "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.",
2258
+ "type": "boolean"
2259
+ },
2260
+ "_versions": {
2261
+ "type": "array",
2262
+ "items": {
2263
+ "$ref": "#/$defs/creatureVersion"
2264
+ }
2265
+ },
2266
+ "hasFluff": {
2267
+ "type": "boolean"
2268
+ },
2269
+ "hasFluffImages": {
2270
+ "type": "boolean"
2271
+ }
2272
+ },
2273
+ "additionalProperties": false,
2274
+ "required": [
2275
+ "name",
2276
+ "size",
2277
+ "type",
2278
+ "source",
2279
+ "ac",
2280
+ "hp",
2281
+ "speed",
2282
+ "str",
2283
+ "dex",
2284
+ "con",
2285
+ "int",
2286
+ "wis",
2287
+ "cha"
2288
+ ]
2289
+ },
2290
+ {
2291
+ "type": "object",
2292
+ "$comment": "This is a custom pre-processor tag, which merges together the array of objects into one. This allows proper inheritance, which JSON schema don't really do.",
2293
+ "properties": {
2294
+ "name": {
2295
+ "type": "string"
2296
+ },
2297
+ "shortName": {
2298
+ "description": "Used anywhere a shortened form of the creatures name is required (e.g. in legendary action headers).\nIf not supplied, a shortened name will be automatically generated from the creature's full name.\nAlternatively use \"true\" if the \"shortName\" should be an exact copy of the creature's \"name\".",
2299
+ "type": [
2300
+ "string",
2301
+ "boolean"
2302
+ ]
2303
+ },
2304
+ "alias": {
2305
+ "$ref": "../util.json#/$defs/alias"
2306
+ },
2307
+ "group": {
2308
+ "description": "A group name, indexed by search. E.g. searching \"Lycanthrope\" would otherwise fail to find anything.\nOnly works on the bestiary page, not in the full site search.",
2309
+ "type": [
2310
+ "null",
2311
+ "array"
2312
+ ],
2313
+ "items": {
2314
+ "type": "string"
2315
+ }
2316
+ },
2317
+ "level": {
2318
+ "description": "Used in sidekicks, which can have levels (and generally do not have alignment)",
2319
+ "type": "integer"
2320
+ },
2321
+ "size": {
2322
+ "type": "array",
2323
+ "items": {
2324
+ "$ref": "../util.json#/$defs/size"
2325
+ },
2326
+ "uniqueItems": true
2327
+ },
2328
+ "sizeNote": {
2329
+ "type": "string"
2330
+ },
2331
+ "type": {
2332
+ "oneOf": [
2333
+ {
2334
+ "type": "object",
2335
+ "properties": {
2336
+ "type": {
2337
+ "oneOf": [
2338
+ {
2339
+ "$ref": "../util.json#/$defs/creatureType"
2340
+ },
2341
+ {
2342
+ "type": "object",
2343
+ "properties": {
2344
+ "choose": {
2345
+ "type": "array",
2346
+ "items": {
2347
+ "$ref": "../util.json#/$defs/creatureType"
2348
+ }
2349
+ }
2350
+ },
2351
+ "additionalProperties": false,
2352
+ "required": [
2353
+ "choose"
2354
+ ]
2355
+ }
2356
+ ]
2357
+ },
2358
+ "swarmSize": {
2359
+ "$ref": "../util.json#/$defs/size",
2360
+ "description": "Size of the individual creatures that make up the swarm."
2361
+ },
2362
+ "tags": {
2363
+ "type": "array",
2364
+ "uniqueItems": true,
2365
+ "items": {
2366
+ "oneOf": [
2367
+ {
2368
+ "type": "string"
2369
+ },
2370
+ {
2371
+ "type": "object",
2372
+ "properties": {
2373
+ "tag": {
2374
+ "type": "string"
2375
+ },
2376
+ "prefix": {
2377
+ "type": "string"
2378
+ }
2379
+ },
2380
+ "required": [
2381
+ "tag",
2382
+ "prefix"
2383
+ ],
2384
+ "additionalProperties": false
2385
+ }
2386
+ ]
2387
+ }
2388
+ },
2389
+ "sidekickType": {
2390
+ "type": "string",
2391
+ "enum": [
2392
+ "expert",
2393
+ "spellcaster",
2394
+ "warrior"
2395
+ ]
2396
+ },
2397
+ "sidekickTags": {
2398
+ "type": "array",
2399
+ "uniqueItems": true,
2400
+ "items": {
2401
+ "oneOf": [
2402
+ {
2403
+ "type": "string"
2404
+ },
2405
+ {
2406
+ "type": "object",
2407
+ "properties": {
2408
+ "tag": {
2409
+ "type": "string"
2410
+ },
2411
+ "prefix": {
2412
+ "type": "string"
2413
+ }
2414
+ },
2415
+ "required": [
2416
+ "tag",
2417
+ "prefix"
2418
+ ],
2419
+ "additionalProperties": false
2420
+ }
2421
+ ]
2422
+ }
2423
+ },
2424
+ "sidekickHidden": {
2425
+ "const": true
2426
+ },
2427
+ "note": {
2428
+ "type": "string"
2429
+ }
2430
+ },
2431
+ "required": [
2432
+ "type"
2433
+ ],
2434
+ "additionalProperties": false
2435
+ },
2436
+ {
2437
+ "$ref": "../util.json#/$defs/creatureType"
2438
+ }
2439
+ ]
2440
+ },
2441
+ "source": {
2442
+ "$ref": "../util.json#/$defs/source"
2443
+ },
2444
+ "sourceSub": {
2445
+ "type": "string",
2446
+ "description": "Sub-source text that is shown when hovered."
2447
+ },
2448
+ "otherSources": {
2449
+ "$ref": "../util.json#/$defs/otherSources"
2450
+ },
2451
+ "reprintedAs": {
2452
+ "$ref": "../util.json#/$defs/reprintedAs"
2453
+ },
2454
+ "alignment": {
2455
+ "type": "array",
2456
+ "items": {
2457
+ "$ref": "#/$defs/align"
2458
+ }
2459
+ },
2460
+ "alignmentPrefix": {
2461
+ "type": "string"
2462
+ },
2463
+ "ac": {
2464
+ "type": "array",
2465
+ "items": {
2466
+ "$ref": "#/$defs/acItem"
2467
+ }
2468
+ },
2469
+ "hp": {
2470
+ "oneOf": [
2471
+ {
2472
+ "type": "object",
2473
+ "properties": {
2474
+ "average": {
2475
+ "type": "integer"
2476
+ },
2477
+ "formula": {
2478
+ "type": "string"
2479
+ }
2480
+ },
2481
+ "required": [
2482
+ "average",
2483
+ "formula"
2484
+ ],
2485
+ "additionalProperties": false
2486
+ },
2487
+ {
2488
+ "type": "object",
2489
+ "properties": {
2490
+ "special": {
2491
+ "type": "string"
2492
+ }
2493
+ },
2494
+ "additionalProperties": false
2495
+ }
2496
+ ]
2497
+ },
2498
+ "speed": {
2499
+ "$ref": "../util.json#/$defs/speed"
2500
+ },
2501
+ "str": {
2502
+ "$ref": "#/$defs/abilityScore"
2503
+ },
2504
+ "dex": {
2505
+ "$ref": "#/$defs/abilityScore"
2506
+ },
2507
+ "con": {
2508
+ "$ref": "#/$defs/abilityScore"
2509
+ },
2510
+ "int": {
2511
+ "$ref": "#/$defs/abilityScore"
2512
+ },
2513
+ "wis": {
2514
+ "$ref": "#/$defs/abilityScore"
2515
+ },
2516
+ "cha": {
2517
+ "$ref": "#/$defs/abilityScore"
2518
+ },
2519
+ "save": {
2520
+ "type": "object",
2521
+ "properties": {
2522
+ "str": {
2523
+ "type": "string"
2524
+ },
2525
+ "dex": {
2526
+ "type": "string"
2527
+ },
2528
+ "con": {
2529
+ "type": "string"
2530
+ },
2531
+ "int": {
2532
+ "type": "string"
2533
+ },
2534
+ "wis": {
2535
+ "type": "string"
2536
+ },
2537
+ "cha": {
2538
+ "type": "string"
2539
+ }
2540
+ },
2541
+ "additionalProperties": false
2542
+ },
2543
+ "skill": {
2544
+ "type": "object",
2545
+ "properties": {
2546
+ "acrobatics": {
2547
+ "type": "string"
2548
+ },
2549
+ "animal handling": {
2550
+ "type": "string"
2551
+ },
2552
+ "arcana": {
2553
+ "type": "string"
2554
+ },
2555
+ "athletics": {
2556
+ "type": "string"
2557
+ },
2558
+ "deception": {
2559
+ "type": "string"
2560
+ },
2561
+ "history": {
2562
+ "type": "string"
2563
+ },
2564
+ "insight": {
2565
+ "type": "string"
2566
+ },
2567
+ "intimidation": {
2568
+ "type": "string"
2569
+ },
2570
+ "investigation": {
2571
+ "type": "string"
2572
+ },
2573
+ "medicine": {
2574
+ "type": "string"
2575
+ },
2576
+ "nature": {
2577
+ "type": "string"
2578
+ },
2579
+ "perception": {
2580
+ "type": "string"
2581
+ },
2582
+ "performance": {
2583
+ "type": "string"
2584
+ },
2585
+ "persuasion": {
2586
+ "type": "string"
2587
+ },
2588
+ "religion": {
2589
+ "type": "string"
2590
+ },
2591
+ "sleight of hand": {
2592
+ "type": "string"
2593
+ },
2594
+ "stealth": {
2595
+ "type": "string"
2596
+ },
2597
+ "survival": {
2598
+ "type": "string"
2599
+ },
2600
+ "other": {
2601
+ "type": "array",
2602
+ "items": {
2603
+ "type": "object",
2604
+ "properties": {
2605
+ "oneOf": {
2606
+ "type": "object",
2607
+ "properties": {
2608
+ "acrobatics": {
2609
+ "type": "string"
2610
+ },
2611
+ "animal handling": {
2612
+ "type": "string"
2613
+ },
2614
+ "arcana": {
2615
+ "type": "string"
2616
+ },
2617
+ "athletics": {
2618
+ "type": "string"
2619
+ },
2620
+ "deception": {
2621
+ "type": "string"
2622
+ },
2623
+ "history": {
2624
+ "type": "string"
2625
+ },
2626
+ "insight": {
2627
+ "type": "string"
2628
+ },
2629
+ "intimidation": {
2630
+ "type": "string"
2631
+ },
2632
+ "investigation": {
2633
+ "type": "string"
2634
+ },
2635
+ "medicine": {
2636
+ "type": "string"
2637
+ },
2638
+ "nature": {
2639
+ "type": "string"
2640
+ },
2641
+ "perception": {
2642
+ "type": "string"
2643
+ },
2644
+ "performance": {
2645
+ "type": "string"
2646
+ },
2647
+ "persuasion": {
2648
+ "type": "string"
2649
+ },
2650
+ "religion": {
2651
+ "type": "string"
2652
+ },
2653
+ "sleight of hand": {
2654
+ "type": "string"
2655
+ },
2656
+ "stealth": {
2657
+ "type": "string"
2658
+ },
2659
+ "survival": {
2660
+ "type": "string"
2661
+ }
2662
+ }
2663
+ }
2664
+ }
2665
+ }
2666
+ }
2667
+ },
2668
+ "additionalProperties": false
2669
+ },
2670
+ "senses": {
2671
+ "oneOf": [
2672
+ {
2673
+ "type": "array",
2674
+ "items": {
2675
+ "type": "string"
2676
+ }
2677
+ },
2678
+ {
2679
+ "type": "null"
2680
+ }
2681
+ ]
2682
+ },
2683
+ "passive": {
2684
+ "type": [
2685
+ "integer",
2686
+ "string",
2687
+ "null"
2688
+ ]
2689
+ },
2690
+ "languages": {
2691
+ "oneOf": [
2692
+ {
2693
+ "type": "array",
2694
+ "minItems": 1,
2695
+ "items": {
2696
+ "type": "string"
2697
+ }
2698
+ },
2699
+ {
2700
+ "type": "null"
2701
+ }
2702
+ ]
2703
+ },
2704
+ "pbNote": {
2705
+ "type": "string"
2706
+ },
2707
+ "cr": {
2708
+ "oneOf": [
2709
+ {
2710
+ "type": "string"
2711
+ },
2712
+ {
2713
+ "type": "object",
2714
+ "properties": {
2715
+ "cr": {
2716
+ "type": "string"
2717
+ },
2718
+ "lair": {
2719
+ "type": "string"
2720
+ },
2721
+ "coven": {
2722
+ "type": "string"
2723
+ },
2724
+ "xp": {
2725
+ "type": "integer"
2726
+ }
2727
+ },
2728
+ "additionalProperties": false,
2729
+ "required": [
2730
+ "cr"
2731
+ ]
2732
+ }
2733
+ ]
2734
+ },
2735
+ "vulnerable": {
2736
+ "$ref": "../util.json#/$defs/damageVulnerabilityArray"
2737
+ },
2738
+ "resist": {
2739
+ "$ref": "../util.json#/$defs/damageResistArray"
2740
+ },
2741
+ "immune": {
2742
+ "$ref": "../util.json#/$defs/damageImmunityArray"
2743
+ },
2744
+ "conditionImmune": {
2745
+ "$ref": "../util.json#/$defs/conditionImmunityArray"
2746
+ },
2747
+ "spellcasting": {
2748
+ "oneOf": [
2749
+ {
2750
+ "type": "array",
2751
+ "items": {
2752
+ "$ref": "../entry.json#/$defs/entrySpellcasting"
2753
+ }
2754
+ },
2755
+ {
2756
+ "type": "null"
2757
+ }
2758
+ ]
2759
+ },
2760
+ "trait": {
2761
+ "oneOf": [
2762
+ {
2763
+ "type": "array",
2764
+ "minItems": 1,
2765
+ "items": {
2766
+ "type": "object",
2767
+ "properties": {
2768
+ "name": {
2769
+ "type": "string"
2770
+ },
2771
+ "entries": {
2772
+ "type": "array",
2773
+ "items": {
2774
+ "$ref": "../entry.json"
2775
+ }
2776
+ },
2777
+ "type": {
2778
+ "type": "string",
2779
+ "enum": [
2780
+ "entries",
2781
+ "inset"
2782
+ ]
2783
+ },
2784
+ "sort": {
2785
+ "description": "Forces a sort order. Traits with sort orders will always be arranged before those without.",
2786
+ "type": "integer"
2787
+ }
2788
+ },
2789
+ "required": [
2790
+ "name",
2791
+ "entries"
2792
+ ],
2793
+ "additionalProperties": false
2794
+ }
2795
+ },
2796
+ {
2797
+ "type": "null"
2798
+ }
2799
+ ]
2800
+ },
2801
+ "actionNote": {
2802
+ "type": "string"
2803
+ },
2804
+ "actionHeader": {
2805
+ "type": "array",
2806
+ "minItems": 1,
2807
+ "items": {
2808
+ "$ref": "../entry.json"
2809
+ }
2810
+ },
2811
+ "action": {
2812
+ "oneOf": [
2813
+ {
2814
+ "type": "array",
2815
+ "minItems": 1,
2816
+ "items": {
2817
+ "type": "object",
2818
+ "properties": {
2819
+ "name": {
2820
+ "type": "string"
2821
+ },
2822
+ "entries": {
2823
+ "type": "array",
2824
+ "items": {
2825
+ "$ref": "../entry.json"
2826
+ }
2827
+ }
2828
+ },
2829
+ "required": [
2830
+ "name",
2831
+ "entries"
2832
+ ],
2833
+ "additionalProperties": false
2834
+ }
2835
+ },
2836
+ {
2837
+ "type": "null"
2838
+ }
2839
+ ]
2840
+ },
2841
+ "bonusNote": {
2842
+ "type": "string"
2843
+ },
2844
+ "bonusHeader": {
2845
+ "type": "array",
2846
+ "minItems": 1,
2847
+ "items": {
2848
+ "$ref": "../entry.json"
2849
+ }
2850
+ },
2851
+ "bonus": {
2852
+ "oneOf": [
2853
+ {
2854
+ "type": "array",
2855
+ "minItems": 1,
2856
+ "items": {
2857
+ "type": "object",
2858
+ "properties": {
2859
+ "name": {
2860
+ "type": "string"
2861
+ },
2862
+ "entries": {
2863
+ "type": "array",
2864
+ "items": {
2865
+ "$ref": "../entry.json"
2866
+ }
2867
+ }
2868
+ },
2869
+ "required": [
2870
+ "name",
2871
+ "entries"
2872
+ ],
2873
+ "additionalProperties": false
2874
+ }
2875
+ },
2876
+ {
2877
+ "type": "null"
2878
+ }
2879
+ ]
2880
+ },
2881
+ "reactionNote": {
2882
+ "type": "string"
2883
+ },
2884
+ "reactionHeader": {
2885
+ "type": "array",
2886
+ "minItems": 1,
2887
+ "items": {
2888
+ "$ref": "../entry.json"
2889
+ }
2890
+ },
2891
+ "reaction": {
2892
+ "oneOf": [
2893
+ {
2894
+ "type": "array",
2895
+ "minItems": 1,
2896
+ "items": {
2897
+ "type": "object",
2898
+ "properties": {
2899
+ "name": {
2900
+ "type": "string"
2901
+ },
2902
+ "entries": {
2903
+ "type": "array",
2904
+ "items": {
2905
+ "$ref": "../entry.json"
2906
+ }
2907
+ }
2908
+ },
2909
+ "required": [
2910
+ "name",
2911
+ "entries"
2912
+ ],
2913
+ "additionalProperties": false
2914
+ }
2915
+ },
2916
+ {
2917
+ "type": "null"
2918
+ }
2919
+ ]
2920
+ },
2921
+ "legendaryGroup": {
2922
+ "type": "object",
2923
+ "properties": {
2924
+ "name": {
2925
+ "type": "string"
2926
+ },
2927
+ "source": {
2928
+ "$ref": "../util.json#/$defs/source"
2929
+ }
2930
+ },
2931
+ "additionalProperties": false,
2932
+ "required": [
2933
+ "name",
2934
+ "source"
2935
+ ]
2936
+ },
2937
+ "legendaryActions": {
2938
+ "type": "number"
2939
+ },
2940
+ "legendaryHeader": {
2941
+ "type": "array",
2942
+ "minItems": 1,
2943
+ "items": {
2944
+ "$ref": "../entry.json"
2945
+ }
2946
+ },
2947
+ "legendary": {
2948
+ "oneOf": [
2949
+ {
2950
+ "type": "array",
2951
+ "minItems": 1,
2952
+ "items": {
2953
+ "type": "object",
2954
+ "properties": {
2955
+ "name": {
2956
+ "type": "string"
2957
+ },
2958
+ "entries": {
2959
+ "type": "array",
2960
+ "items": {
2961
+ "$ref": "../entry.json"
2962
+ }
2963
+ }
2964
+ },
2965
+ "required": [
2966
+ "entries"
2967
+ ],
2968
+ "additionalProperties": false
2969
+ }
2970
+ },
2971
+ {
2972
+ "type": "null"
2973
+ }
2974
+ ]
2975
+ },
2976
+ "mythicHeader": {
2977
+ "type": "array",
2978
+ "minItems": 1,
2979
+ "items": {
2980
+ "$ref": "../entry.json"
2981
+ }
2982
+ },
2983
+ "mythic": {
2984
+ "oneOf": [
2985
+ {
2986
+ "type": "array",
2987
+ "minItems": 1,
2988
+ "items": {
2989
+ "type": "object",
2990
+ "properties": {
2991
+ "name": {
2992
+ "type": "string"
2993
+ },
2994
+ "entries": {
2995
+ "type": "array",
2996
+ "items": {
2997
+ "$ref": "../entry.json"
2998
+ }
2999
+ }
3000
+ },
3001
+ "required": [
3002
+ "entries"
3003
+ ],
3004
+ "additionalProperties": false
3005
+ }
3006
+ },
3007
+ {
3008
+ "type": "null"
3009
+ }
3010
+ ]
3011
+ },
3012
+ "variant": {
3013
+ "oneOf": [
3014
+ {
3015
+ "type": "array",
3016
+ "items": {
3017
+ "$ref": "#/$defs/entryVariantBestiary"
3018
+ }
3019
+ },
3020
+ {
3021
+ "type": "null"
3022
+ }
3023
+ ]
3024
+ },
3025
+ "page": {
3026
+ "$ref": "../util.json#/$defs/page"
3027
+ },
3028
+ "familiar": {
3029
+ "type": "boolean"
3030
+ },
3031
+ "additionalSources": {
3032
+ "$ref": "../util.json#/$defs/additionalSources"
3033
+ },
3034
+ "hasToken": {
3035
+ "type": "boolean"
3036
+ },
3037
+ "tokenUrl": {
3038
+ "type": "string"
3039
+ },
3040
+ "altArt": {
3041
+ "type": "array",
3042
+ "items": {
3043
+ "anyOf": [
3044
+ {
3045
+ "type": "object",
3046
+ "properties": {
3047
+ "name": {
3048
+ "type": "string"
3049
+ },
3050
+ "source": {
3051
+ "$ref": "../util.json#/$defs/source"
3052
+ },
3053
+ "page": {
3054
+ "$ref": "../util.json#/$defs/page"
3055
+ }
3056
+ },
3057
+ "required": [
3058
+ "name",
3059
+ "source"
3060
+ ]
3061
+ }
3062
+ ]
3063
+ }
3064
+ },
3065
+ "isNamedCreature": {
3066
+ "type": "boolean"
3067
+ },
3068
+ "isNpc": {
3069
+ "description": "Used to flag adventure NPCs",
3070
+ "type": "boolean"
3071
+ },
3072
+ "environment": {
3073
+ "type": "array",
3074
+ "minItems": 1,
3075
+ "items": {
3076
+ "type": "string",
3077
+ "enum": [
3078
+ "underwater",
3079
+ "coastal",
3080
+ "mountain",
3081
+ "grassland",
3082
+ "hill",
3083
+ "arctic",
3084
+ "urban",
3085
+ "forest",
3086
+ "swamp",
3087
+ "underdark",
3088
+ "desert"
3089
+ ]
3090
+ }
3091
+ },
3092
+ "soundClip": {
3093
+ "$ref": "../entry.json#/$defs/mediaHref"
3094
+ },
3095
+ "dragonCastingColor": {
3096
+ "type": "string",
3097
+ "enum": [
3098
+ "black",
3099
+ "blue",
3100
+ "green",
3101
+ "red",
3102
+ "white",
3103
+ "brass",
3104
+ "bronze",
3105
+ "copper",
3106
+ "gold",
3107
+ "silver",
3108
+ "deep"
3109
+ ]
3110
+ },
3111
+ "dragonAge": {
3112
+ "type": "string",
3113
+ "enum": [
3114
+ "young",
3115
+ "adult",
3116
+ "wyrmling",
3117
+ "greatwyrm",
3118
+ "ancient",
3119
+ "aspect"
3120
+ ]
3121
+ },
3122
+ "traitTags": {
3123
+ "type": "array",
3124
+ "items": {
3125
+ "type": "string",
3126
+ "enum": [
3127
+ "Aggressive",
3128
+ "Ambusher",
3129
+ "Amorphous",
3130
+ "Amphibious",
3131
+ "Antimagic Susceptibility",
3132
+ "Brute",
3133
+ "Charge",
3134
+ "Damage Absorption",
3135
+ "Death Burst",
3136
+ "Devil's Sight",
3137
+ "False Appearance",
3138
+ "Fey Ancestry",
3139
+ "Flyby",
3140
+ "Hold Breath",
3141
+ "Illumination",
3142
+ "Immutable Form",
3143
+ "Incorporeal Movement",
3144
+ "Keen Senses",
3145
+ "Legendary Resistances",
3146
+ "Light Sensitivity",
3147
+ "Magic Resistance",
3148
+ "Magic Weapons",
3149
+ "Pack Tactics",
3150
+ "Pounce",
3151
+ "Rampage",
3152
+ "Reckless",
3153
+ "Regeneration",
3154
+ "Rejuvenation",
3155
+ "Shapechanger",
3156
+ "Siege Monster",
3157
+ "Sneak Attack",
3158
+ "Spell Immunity",
3159
+ "Spider Climb",
3160
+ "Sunlight Sensitivity",
3161
+ "Tree Stride",
3162
+ "Tunneler",
3163
+ "Turn Immunity",
3164
+ "Turn Resistance",
3165
+ "Undead Fortitude",
3166
+ "Unusual Nature",
3167
+ "Water Breathing",
3168
+ "Web Sense",
3169
+ "Web Walker"
3170
+ ]
3171
+ }
3172
+ },
3173
+ "actionTags": {
3174
+ "type": "array",
3175
+ "items": {
3176
+ "type": "string",
3177
+ "enum": [
3178
+ "Breath Weapon",
3179
+ "Frightful Presence",
3180
+ "Multiattack",
3181
+ "Parry",
3182
+ "Shapechanger",
3183
+ "Swallow",
3184
+ "Teleport",
3185
+ "Tentacles"
3186
+ ]
3187
+ }
3188
+ },
3189
+ "languageTags": {
3190
+ "type": "array",
3191
+ "items": {
3192
+ "type": "string",
3193
+ "description": "X: Any (Choose)\n XX: All\n CS: Can't Speak Known Languages\n LF: Languages Known in Life\n TP: Telepathy\n OTH: Other\n -\n AB: Abyssal\n AQ: Aquan\n AU: Auran\n C: Common\n CE: Celestial\n D: Dwarvish\n DR: Draconic\n DS: Deep Speech\n DU: Druidic\n E: Elvish\n G: Gnomish\n GI: Giant\n GO: Goblin\n GTH: Gith\n H: Halfling\n I: Infernal\n IG: Ignan\n O: Orc\n P: Primordial\n S: Sylvan\n T: Terran\n TC: Thieves' cant\n U: Undercommon\n ",
3194
+ "enum": [
3195
+ "AB",
3196
+ "AQ",
3197
+ "AU",
3198
+ "C",
3199
+ "CE",
3200
+ "CS",
3201
+ "D",
3202
+ "DR",
3203
+ "DS",
3204
+ "DU",
3205
+ "E",
3206
+ "G",
3207
+ "GI",
3208
+ "GO",
3209
+ "GTH",
3210
+ "H",
3211
+ "I",
3212
+ "IG",
3213
+ "LF",
3214
+ "O",
3215
+ "OTH",
3216
+ "P",
3217
+ "S",
3218
+ "T",
3219
+ "TC",
3220
+ "TP",
3221
+ "U",
3222
+ "X",
3223
+ "XX"
3224
+ ]
3225
+ }
3226
+ },
3227
+ "senseTags": {
3228
+ "type": "array",
3229
+ "items": {
3230
+ "type": "string",
3231
+ "description": "B: Blindsight\n D: Darkvision\n SD: Superior Darkvision\n T: Tremorsense\n U: Truesight",
3232
+ "enum": [
3233
+ "B",
3234
+ "D",
3235
+ "SD",
3236
+ "T",
3237
+ "U"
3238
+ ]
3239
+ }
3240
+ },
3241
+ "spellcastingTags": {
3242
+ "type": "array",
3243
+ "items": {
3244
+ "type": "string",
3245
+ "description": "P: Psionics\n I: Innate\n F: Form Only\n S: Shared\n O: Other\n CA: Class, Artificer\n CB: Class, Bard\n CC: Class, Cleric\n CD: Class, Druid\n CP: Class, Paladin\n CR: Class, Ranger\n CS: Class, Sorcerer\n CL: Class, Warlock\n CW: Class, Wizard",
3246
+ "enum": [
3247
+ "P",
3248
+ "I",
3249
+ "F",
3250
+ "S",
3251
+ "O",
3252
+ "CA",
3253
+ "CB",
3254
+ "CC",
3255
+ "CD",
3256
+ "CP",
3257
+ "CR",
3258
+ "CS",
3259
+ "CL",
3260
+ "CW"
3261
+ ]
3262
+ }
3263
+ },
3264
+ "damageTags": {
3265
+ "type": "array",
3266
+ "items": {
3267
+ "$ref": "../util.json#/$defs/dataDamageTags"
3268
+ }
3269
+ },
3270
+ "damageTagsSpell": {
3271
+ "type": "array",
3272
+ "items": {
3273
+ "$ref": "../util.json#/$defs/dataDamageTags"
3274
+ }
3275
+ },
3276
+ "damageTagsLegendary": {
3277
+ "type": "array",
3278
+ "items": {
3279
+ "$ref": "../util.json#/$defs/dataDamageTags"
3280
+ }
3281
+ },
3282
+ "miscTags": {
3283
+ "type": "array",
3284
+ "items": {
3285
+ "description": "AOE: Has Areas of Effect\n HPR: Has HP Reduction\n MW: Has Weapon Attacks, Melee\n RW: Has Weapon Attacks, Ranged\n RCH: Has Reach Attacks\n RNG: Has Ranged Weapons\n THW: Has Thrown Weapons",
3286
+ "enum": [
3287
+ "AOE",
3288
+ "HPR",
3289
+ "MW",
3290
+ "RW",
3291
+ "RCH",
3292
+ "RNG",
3293
+ "THW"
3294
+ ]
3295
+ }
3296
+ },
3297
+ "attachedItems": {
3298
+ "type": "array",
3299
+ "minItems": 1,
3300
+ "uniqueItems": true,
3301
+ "items": {
3302
+ "description": "A UID, e.g. \"longsword|phb\"",
3303
+ "type": "string"
3304
+ }
3305
+ },
3306
+ "conditionInflict": {
3307
+ "$ref": "../util.json#/$defs/tagsConditions"
3308
+ },
3309
+ "conditionInflictLegendary": {
3310
+ "$ref": "../util.json#/$defs/tagsConditions"
3311
+ },
3312
+ "conditionInflictSpell": {
3313
+ "$ref": "../util.json#/$defs/tagsConditions"
3314
+ },
3315
+ "savingThrowForced": {
3316
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
3317
+ },
3318
+ "savingThrowForcedLegendary": {
3319
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
3320
+ },
3321
+ "savingThrowForcedSpell": {
3322
+ "$ref": "../util.json#/$defs/tagsSavingThrow"
3323
+ },
3324
+ "footer": {
3325
+ "description": "Intended for homebrew use only.",
3326
+ "type": "array",
3327
+ "items": {
3328
+ "$ref": "../entry.json"
3329
+ }
3330
+ },
3331
+ "srd": {
3332
+ "$ref": "../util.json#/$defs/srd"
3333
+ },
3334
+ "basicRules": {
3335
+ "$ref": "../util.json#/$defs/basicRules"
3336
+ },
3337
+ "legacy": {
3338
+ "$ref": "../util.json#/$defs/legacy"
3339
+ },
3340
+ "summonedBySpell": {
3341
+ "description": "The spell used to summon this creature; specifically for TCE-esque summon spells.",
3342
+ "type": "string"
3343
+ },
3344
+ "summonedBySpellLevel": {
3345
+ "description": "The level of the spell used to summon this creature; specifically for TCE-esque summon spells.",
3346
+ "type": "integer"
3347
+ },
3348
+ "summonedByClass": {
3349
+ "description": "The class which can summon this creature; e.g. for those granted by some TCE class features.",
3350
+ "type": "string"
3351
+ },
3352
+ "_isCopy": {
3353
+ "description": "An internal flag indicating this creature is a copy of another, and is a temporary/placeholder entry which will be factored out using the \"_copy\" format at a later date.",
3354
+ "type": "boolean"
3355
+ },
3356
+ "_versions": {
3357
+ "type": "array",
3358
+ "items": {
3359
+ "$ref": "#/$defs/creatureVersion"
3360
+ }
3361
+ },
3362
+ "hasFluff": {
3363
+ "type": "boolean"
3364
+ },
3365
+ "hasFluffImages": {
3366
+ "type": "boolean"
3367
+ },
3368
+ "_copy": {
3369
+ "type": "object",
3370
+ "properties": {
3371
+ "name": {
3372
+ "type": "string"
3373
+ },
3374
+ "source": {
3375
+ "$ref": "../util.json#/$defs/source"
3376
+ },
3377
+ "pantheon": {
3378
+ "description": "Used in deity data",
3379
+ "type": "string"
3380
+ },
3381
+ "shortName": {
3382
+ "description": "Used in subclass data",
3383
+ "type": "string"
3384
+ },
3385
+ "className": {
3386
+ "description": "Used in subclass data",
3387
+ "type": "string"
3388
+ },
3389
+ "classSource": {
3390
+ "description": "Used in subclass data",
3391
+ "$ref": "../util.json#/$defs/source"
3392
+ },
3393
+ "_mod": {
3394
+ "$ref": "../util.json#/$defs/_modObject"
3395
+ },
3396
+ "_trait": {
3397
+ "type": "object",
3398
+ "properties": {
3399
+ "name": {
3400
+ "type": "string"
3401
+ },
3402
+ "source": {
3403
+ "$ref": "../util.json#/$defs/source"
3404
+ }
3405
+ },
3406
+ "required": [
3407
+ "name",
3408
+ "source"
3409
+ ]
3410
+ },
3411
+ "_preserve": {
3412
+ "type": "object",
3413
+ "patternProperties": {
3414
+ ".*": {
3415
+ "const": true
3416
+ }
3417
+ }
3418
+ }
3419
+ },
3420
+ "required": [
3421
+ "name",
3422
+ "source"
3423
+ ],
3424
+ "additionalProperties": false
3425
+ }
3426
+ },
3427
+ "additionalProperties": false,
3428
+ "required": [
3429
+ "_copy"
3430
+ ]
3431
+ }
3432
+ ]
3433
+ },
3434
+ "variantVersion": {
3435
+ "type": "object",
3436
+ "properties": {
3437
+ "_version": {
3438
+ "oneOf": [
3439
+ {
3440
+ "type": "object",
3441
+ "properties": {
3442
+ "name": {
3443
+ "type": "string"
3444
+ },
3445
+ "source": {
3446
+ "$ref": "../util.json#/$defs/source"
3447
+ },
3448
+ "addAs": {
3449
+ "type": "string"
3450
+ }
3451
+ },
3452
+ "required": [
3453
+ "addAs"
3454
+ ],
3455
+ "additionalProperties": false
3456
+ },
3457
+ {
3458
+ "type": "object",
3459
+ "properties": {
3460
+ "name": {
3461
+ "type": "string"
3462
+ },
3463
+ "source": {
3464
+ "$ref": "../util.json#/$defs/source"
3465
+ },
3466
+ "addHeadersAs": {
3467
+ "type": "string"
3468
+ }
3469
+ },
3470
+ "required": [
3471
+ "addHeadersAs"
3472
+ ],
3473
+ "additionalProperties": false
3474
+ }
3475
+ ]
3476
+ }
3477
+ }
3478
+ },
3479
+ "variantToken": {
3480
+ "type": "object",
3481
+ "properties": {
3482
+ "token": {
3483
+ "type": "object",
3484
+ "properties": {
3485
+ "name": {
3486
+ "type": "string"
3487
+ },
3488
+ "source": {
3489
+ "$ref": "../util.json#/$defs/source"
3490
+ },
3491
+ "page": {
3492
+ "$ref": "../util.json#/$defs/page"
3493
+ }
3494
+ },
3495
+ "required": [
3496
+ "name",
3497
+ "source"
3498
+ ]
3499
+ }
3500
+ }
3501
+ },
3502
+ "entryVariantBestiary": {
3503
+ "anyOf": [
3504
+ {
3505
+ "type": "object",
3506
+ "properties": {
3507
+ "name": {
3508
+ "type": "string"
3509
+ },
3510
+ "type": {
3511
+ "type": "string",
3512
+ "const": "variant"
3513
+ },
3514
+ "source": {
3515
+ "$ref": "../util.json#/$defs/source"
3516
+ },
3517
+ "page": {
3518
+ "$ref": "../util.json#/$defs/page"
3519
+ },
3520
+ "srd": {
3521
+ "$ref": "../util.json#/$defs/srd"
3522
+ },
3523
+ "basicRules": {
3524
+ "$ref": "../util.json#/$defs/basicRules"
3525
+ },
3526
+ "data": {
3527
+ "description": "A generic object for storing special data for external use-cases. Keys prefixed with \"rd-\" should be added as \"data-\" HTML attributes when rendering to HTML.",
3528
+ "type": "object"
3529
+ },
3530
+ "id": {
3531
+ "type": "string"
3532
+ },
3533
+ "entries": {
3534
+ "type": "array",
3535
+ "items": {
3536
+ "$ref": "../entry.json"
3537
+ }
3538
+ },
3539
+ "token": {
3540
+ "type": "object",
3541
+ "properties": {
3542
+ "name": {
3543
+ "type": "string"
3544
+ },
3545
+ "source": {
3546
+ "$ref": "../util.json#/$defs/source"
3547
+ },
3548
+ "page": {
3549
+ "$ref": "../util.json#/$defs/page"
3550
+ }
3551
+ },
3552
+ "required": [
3553
+ "name",
3554
+ "source"
3555
+ ]
3556
+ },
3557
+ "_version": {
3558
+ "oneOf": [
3559
+ {
3560
+ "type": "object",
3561
+ "properties": {
3562
+ "name": {
3563
+ "type": "string"
3564
+ },
3565
+ "source": {
3566
+ "$ref": "../util.json#/$defs/source"
3567
+ },
3568
+ "addAs": {
3569
+ "type": "string"
3570
+ }
3571
+ },
3572
+ "required": [
3573
+ "addAs"
3574
+ ],
3575
+ "additionalProperties": false
3576
+ },
3577
+ {
3578
+ "type": "object",
3579
+ "properties": {
3580
+ "name": {
3581
+ "type": "string"
3582
+ },
3583
+ "source": {
3584
+ "$ref": "../util.json#/$defs/source"
3585
+ },
3586
+ "addHeadersAs": {
3587
+ "type": "string"
3588
+ }
3589
+ },
3590
+ "required": [
3591
+ "addHeadersAs"
3592
+ ],
3593
+ "additionalProperties": false
3594
+ }
3595
+ ]
3596
+ }
3597
+ },
3598
+ "required": [
3599
+ "type",
3600
+ "name",
3601
+ "entries"
3602
+ ],
3603
+ "additionalProperties": false
3604
+ },
3605
+ {
3606
+ "type": "object",
3607
+ "properties": {
3608
+ "name": {
3609
+ "type": "string"
3610
+ },
3611
+ "type": {
3612
+ "type": "string",
3613
+ "const": "inset"
3614
+ },
3615
+ "source": {
3616
+ "$ref": "../util.json#/$defs/source"
3617
+ },
3618
+ "page": {
3619
+ "$ref": "../util.json#/$defs/page"
3620
+ },
3621
+ "srd": {
3622
+ "$ref": "../util.json#/$defs/srd"
3623
+ },
3624
+ "basicRules": {
3625
+ "$ref": "../util.json#/$defs/basicRules"
3626
+ },
3627
+ "data": {
3628
+ "description": "A generic object for storing special data for external use-cases. Keys prefixed with \"rd-\" should be added as \"data-\" HTML attributes when rendering to HTML.",
3629
+ "type": "object"
3630
+ },
3631
+ "id": {
3632
+ "type": "string"
3633
+ },
3634
+ "entries": {
3635
+ "type": "array",
3636
+ "items": {
3637
+ "$ref": "../entry.json"
3638
+ }
3639
+ },
3640
+ "style": {
3641
+ "type": "string"
3642
+ },
3643
+ "token": {
3644
+ "type": "object",
3645
+ "properties": {
3646
+ "name": {
3647
+ "type": "string"
3648
+ },
3649
+ "source": {
3650
+ "$ref": "../util.json#/$defs/source"
3651
+ },
3652
+ "page": {
3653
+ "$ref": "../util.json#/$defs/page"
3654
+ }
3655
+ },
3656
+ "required": [
3657
+ "name",
3658
+ "source"
3659
+ ]
3660
+ },
3661
+ "_version": {
3662
+ "oneOf": [
3663
+ {
3664
+ "type": "object",
3665
+ "properties": {
3666
+ "name": {
3667
+ "type": "string"
3668
+ },
3669
+ "source": {
3670
+ "$ref": "../util.json#/$defs/source"
3671
+ },
3672
+ "addAs": {
3673
+ "type": "string"
3674
+ }
3675
+ },
3676
+ "required": [
3677
+ "addAs"
3678
+ ],
3679
+ "additionalProperties": false
3680
+ },
3681
+ {
3682
+ "type": "object",
3683
+ "properties": {
3684
+ "name": {
3685
+ "type": "string"
3686
+ },
3687
+ "source": {
3688
+ "$ref": "../util.json#/$defs/source"
3689
+ },
3690
+ "addHeadersAs": {
3691
+ "type": "string"
3692
+ }
3693
+ },
3694
+ "required": [
3695
+ "addHeadersAs"
3696
+ ],
3697
+ "additionalProperties": false
3698
+ }
3699
+ ]
3700
+ }
3701
+ },
3702
+ "required": [
3703
+ "type",
3704
+ "entries"
3705
+ ],
3706
+ "additionalProperties": false
3707
+ }
3708
+ ]
3709
+ },
3710
+ "creatureVersion": {
3711
+ "anyOf": [
3712
+ {
3713
+ "$ref": "../util.json#/$defs/version"
3714
+ },
3715
+ {
3716
+ "$ref": "#/$defs/creatureData"
3717
+ }
3718
+ ]
3719
+ }
3720
+ },
3721
+ "properties": {
3722
+ "monster": {
3723
+ "type": "array",
3724
+ "items": {
3725
+ "$ref": "#/$defs/creature"
3726
+ },
3727
+ "$comment": "This is necessary as some site bestiary files assert only otherSources and do not contain any true data.",
3728
+ "uniqueItems": true
3729
+ },
3730
+ "_meta": {
3731
+ "$ref": "../util.json#/$defs/metaBlock"
3732
+ }
3733
+ },
3734
+ "additionalProperties": false
3735
+ }