5etools-utils 0.2.2 → 0.3.0

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