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,3867 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "util.json",
4
+ "title": "Util",
5
+ "description": "Utility definitions to be used in other schemas.",
6
+ "version": "1.13.4",
7
+ "$defs": {
8
+ "metaBlock": {
9
+ "type": "object",
10
+ "properties": {
11
+ "dependencies": {
12
+ "type": "object",
13
+ "properties": {
14
+ "monster": {
15
+ "type": "array",
16
+ "items": {
17
+ "type": "string"
18
+ },
19
+ "uniqueItems": true
20
+ }
21
+ }
22
+ },
23
+ "otherSources": {
24
+ "type": "object",
25
+ "properties": {
26
+ "monster": {
27
+ "description": "Keys are other sources to be loaded; values are `otherSources` sources from that source to search for.",
28
+ "type": "object"
29
+ }
30
+ }
31
+ }
32
+ }
33
+ },
34
+ "url": {
35
+ "type": "string",
36
+ "description": "\"uri-reference\" is unsuitable for brew, as it requires URL-encoding \"'\" (see: https://www.ietf.org/rfc/rfc3986.txt)",
37
+ "minLength": 3
38
+ },
39
+ "page": {
40
+ "type": [
41
+ "integer",
42
+ "string"
43
+ ]
44
+ },
45
+ "otherSources": {
46
+ "type": "array",
47
+ "items": {
48
+ "type": "object",
49
+ "properties": {
50
+ "source": {
51
+ "type": "string"
52
+ },
53
+ "page": {
54
+ "$ref": "#/$defs/page"
55
+ }
56
+ },
57
+ "required": [
58
+ "source"
59
+ ],
60
+ "additionalProperties": false
61
+ },
62
+ "uniqueItems": true,
63
+ "minItems": 1
64
+ },
65
+ "additionalSources": {
66
+ "type": "array",
67
+ "items": {
68
+ "type": "object",
69
+ "properties": {
70
+ "source": {
71
+ "type": "string"
72
+ },
73
+ "page": {
74
+ "$ref": "#/$defs/page"
75
+ }
76
+ },
77
+ "required": [
78
+ "source"
79
+ ],
80
+ "additionalProperties": false
81
+ },
82
+ "uniqueItems": true,
83
+ "minItems": 1
84
+ },
85
+ "alias": {
86
+ "type": "array",
87
+ "items": {
88
+ "type": "string"
89
+ }
90
+ },
91
+ "reprintedAs": {
92
+ "type": "array",
93
+ "items": {
94
+ "oneOf": [
95
+ {
96
+ "description": "A UID, e.g. \"longsword|phb\"",
97
+ "type": "string"
98
+ },
99
+ {
100
+ "type": "object",
101
+ "properties": {
102
+ "uid": {
103
+ "description": "A UID, e.g. \"longsword|phb\"",
104
+ "type": "string"
105
+ },
106
+ "tag": {
107
+ "description": "A tag used in the renderer, e.g. \"creature\"",
108
+ "type": "string"
109
+ }
110
+ },
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "tag",
114
+ "uid"
115
+ ]
116
+ }
117
+ ]
118
+ },
119
+ "uniqueItems": true,
120
+ "minItems": 1
121
+ },
122
+ "tagNameStats": {
123
+ "type": "string",
124
+ "enum": [
125
+ "spell",
126
+ "item",
127
+ "creature",
128
+ "condition",
129
+ "disease",
130
+ "status",
131
+ "background",
132
+ "race",
133
+ "optfeature",
134
+ "reward",
135
+ "feat",
136
+ "psionic",
137
+ "object",
138
+ "cult",
139
+ "boon",
140
+ "trap",
141
+ "hazard",
142
+ "deity",
143
+ "variantrule",
144
+ "charoption",
145
+ "vehicle",
146
+ "vehupgrade",
147
+ "class",
148
+ "action",
149
+ "language",
150
+ "classFeature",
151
+ "subclassFeature",
152
+ "table",
153
+ "recipe",
154
+ "skill",
155
+ "sense"
156
+ ]
157
+ },
158
+ "propNameStats": {
159
+ "type": "string",
160
+ "enum": [
161
+ "subclass"
162
+ ]
163
+ },
164
+ "languageNameLower": {
165
+ "type": "string",
166
+ "enum": [
167
+ "abyssal",
168
+ "aquan",
169
+ "auran",
170
+ "celestial",
171
+ "common",
172
+ "deep speech",
173
+ "draconic",
174
+ "druidic",
175
+ "dwarvish",
176
+ "elvish",
177
+ "giant",
178
+ "gnomish",
179
+ "goblin",
180
+ "halfling",
181
+ "ignan",
182
+ "infernal",
183
+ "orc",
184
+ "other",
185
+ "primordial",
186
+ "sylvan",
187
+ "terran",
188
+ "thieves' cant",
189
+ "undercommon"
190
+ ]
191
+ },
192
+ "languageProficiencies": {
193
+ "type": "array",
194
+ "items": {
195
+ "type": "object",
196
+ "properties": {
197
+ "any": {
198
+ "type": "integer"
199
+ },
200
+ "anyStandard": {
201
+ "type": "integer"
202
+ },
203
+ "abyssal": {
204
+ "const": true
205
+ },
206
+ "celestial": {
207
+ "const": true
208
+ },
209
+ "deep speech": {
210
+ "const": true
211
+ },
212
+ "draconic": {
213
+ "const": true
214
+ },
215
+ "infernal": {
216
+ "const": true
217
+ },
218
+ "primordial": {
219
+ "const": true
220
+ },
221
+ "sylvan": {
222
+ "const": true
223
+ },
224
+ "undercommon": {
225
+ "const": true
226
+ },
227
+ "dwarvish": {
228
+ "const": true
229
+ },
230
+ "elvish": {
231
+ "const": true
232
+ },
233
+ "giant": {
234
+ "const": true
235
+ },
236
+ "other": {
237
+ "const": true
238
+ },
239
+ "choose": {
240
+ "type": "object",
241
+ "properties": {
242
+ "from": {
243
+ "type": "array",
244
+ "items": {
245
+ "$ref": "#/$defs/languageNameLower"
246
+ },
247
+ "uniqueItems": true
248
+ },
249
+ "count": {
250
+ "type": "integer"
251
+ }
252
+ },
253
+ "additionalProperties": false
254
+ }
255
+ }
256
+ },
257
+ "uniqueItems": true,
258
+ "minItems": 1
259
+ },
260
+ "toolNameLower": {
261
+ "type": "string",
262
+ "examples": [
263
+ "artisan's tools",
264
+ "alchemist's supplies",
265
+ "brewer's supplies",
266
+ "calligrapher's supplies",
267
+ "carpenter's tools",
268
+ "cartographer's tools",
269
+ "cobbler's tools",
270
+ "cook's utensils",
271
+ "glassblower's tools",
272
+ "jeweler's tools",
273
+ "leatherworker's tools",
274
+ "mason's tools",
275
+ "painter's supplies",
276
+ "potter's tools",
277
+ "smith's tools",
278
+ "tinker's tools",
279
+ "weaver's tools",
280
+ "woodcarver's tools",
281
+ "disguise kit",
282
+ "forgery kit",
283
+ "gaming set",
284
+ "herbalism kit",
285
+ "musical instrument",
286
+ "navigator's tools",
287
+ "thieves' tools",
288
+ "poisoner's kit",
289
+ "vehicles (land)",
290
+ "vehicles (water)",
291
+ "vehicles (space)"
292
+ ]
293
+ },
294
+ "toolProficiencies": {
295
+ "type": "array",
296
+ "items": {
297
+ "type": "object",
298
+ "properties": {
299
+ "any": {
300
+ "type": "integer"
301
+ },
302
+ "anyArtisans": {
303
+ "type": "integer"
304
+ },
305
+ "artisan's tools": {
306
+ "const": true
307
+ },
308
+ "alchemist's supplies": {
309
+ "const": true
310
+ },
311
+ "brewer's supplies": {
312
+ "const": true
313
+ },
314
+ "calligrapher's supplies": {
315
+ "const": true
316
+ },
317
+ "carpenter's tools": {
318
+ "const": true
319
+ },
320
+ "cartographer's tools": {
321
+ "const": true
322
+ },
323
+ "cobbler's tools": {
324
+ "const": true
325
+ },
326
+ "cook's utensils": {
327
+ "const": true
328
+ },
329
+ "glassblower's tools": {
330
+ "const": true
331
+ },
332
+ "jeweler's tools": {
333
+ "const": true
334
+ },
335
+ "leatherworker's tools": {
336
+ "const": true
337
+ },
338
+ "mason's tools": {
339
+ "const": true
340
+ },
341
+ "painter's supplies": {
342
+ "const": true
343
+ },
344
+ "potter's tools": {
345
+ "const": true
346
+ },
347
+ "smith's tools": {
348
+ "const": true
349
+ },
350
+ "tinker's tools": {
351
+ "const": true
352
+ },
353
+ "weaver's tools": {
354
+ "const": true
355
+ },
356
+ "woodcarver's tools": {
357
+ "const": true
358
+ },
359
+ "disguise kit": {
360
+ "const": true
361
+ },
362
+ "forgery kit": {
363
+ "const": true
364
+ },
365
+ "gaming set": {
366
+ "const": true
367
+ },
368
+ "herbalism kit": {
369
+ "const": true
370
+ },
371
+ "musical instrument": {
372
+ "const": true
373
+ },
374
+ "navigator's tools": {
375
+ "const": true
376
+ },
377
+ "thieves' tools": {
378
+ "const": true
379
+ },
380
+ "poisoner's kit": {
381
+ "const": true
382
+ },
383
+ "vehicles (land)": {
384
+ "const": true
385
+ },
386
+ "vehicles (water)": {
387
+ "const": true
388
+ },
389
+ "vehicles (space)": {
390
+ "const": true
391
+ },
392
+ "choose": {
393
+ "type": "object",
394
+ "properties": {
395
+ "from": {
396
+ "type": "array",
397
+ "items": {
398
+ "anyOf": [
399
+ {
400
+ "$ref": "#/$defs/toolNameLower"
401
+ },
402
+ {
403
+ "type": "string",
404
+ "enum": [
405
+ "anyArtisansTool"
406
+ ]
407
+ }
408
+ ]
409
+ },
410
+ "uniqueItems": true,
411
+ "minItems": 2
412
+ },
413
+ "count": {
414
+ "type": "integer"
415
+ }
416
+ },
417
+ "additionalProperties": false
418
+ }
419
+ },
420
+ "additionalProperties": {
421
+ "const": true
422
+ }
423
+ },
424
+ "uniqueItems": true,
425
+ "minItems": 1
426
+ },
427
+ "skillNameLower": {
428
+ "type": "string",
429
+ "examples": [
430
+ "athletics",
431
+ "acrobatics",
432
+ "sleight of hand",
433
+ "stealth",
434
+ "arcana",
435
+ "history",
436
+ "investigation",
437
+ "nature",
438
+ "religion",
439
+ "animal handling",
440
+ "insight",
441
+ "medicine",
442
+ "perception",
443
+ "survival",
444
+ "deception",
445
+ "intimidation",
446
+ "performance",
447
+ "persuasion"
448
+ ]
449
+ },
450
+ "skillProficiencies": {
451
+ "type": "array",
452
+ "items": {
453
+ "type": "object",
454
+ "properties": {
455
+ "any": {
456
+ "type": "integer"
457
+ },
458
+ "athletics": {
459
+ "const": true
460
+ },
461
+ "acrobatics": {
462
+ "const": true
463
+ },
464
+ "sleight of hand": {
465
+ "const": true
466
+ },
467
+ "stealth": {
468
+ "const": true
469
+ },
470
+ "arcana": {
471
+ "const": true
472
+ },
473
+ "history": {
474
+ "const": true
475
+ },
476
+ "investigation": {
477
+ "const": true
478
+ },
479
+ "nature": {
480
+ "const": true
481
+ },
482
+ "religion": {
483
+ "const": true
484
+ },
485
+ "animal handling": {
486
+ "const": true
487
+ },
488
+ "insight": {
489
+ "const": true
490
+ },
491
+ "medicine": {
492
+ "const": true
493
+ },
494
+ "perception": {
495
+ "const": true
496
+ },
497
+ "survival": {
498
+ "const": true
499
+ },
500
+ "deception": {
501
+ "const": true
502
+ },
503
+ "intimidation": {
504
+ "const": true
505
+ },
506
+ "performance": {
507
+ "const": true
508
+ },
509
+ "persuasion": {
510
+ "const": true
511
+ },
512
+ "choose": {
513
+ "type": "object",
514
+ "properties": {
515
+ "from": {
516
+ "type": "array",
517
+ "items": {
518
+ "$ref": "#/$defs/skillNameLower"
519
+ },
520
+ "uniqueItems": true,
521
+ "minItems": 2
522
+ },
523
+ "count": {
524
+ "type": "integer"
525
+ }
526
+ },
527
+ "additionalProperties": false
528
+ }
529
+ },
530
+ "additionalProperties": {
531
+ "const": true
532
+ }
533
+ }
534
+ },
535
+ "skillToolLanguageProficiencies": {
536
+ "type": "array",
537
+ "items": {
538
+ "type": "object",
539
+ "properties": {
540
+ "anyLanguage": {
541
+ "type": "integer"
542
+ },
543
+ "anyStandardLanguage": {
544
+ "type": "integer"
545
+ },
546
+ "abyssal": {
547
+ "const": true
548
+ },
549
+ "celestial": {
550
+ "const": true
551
+ },
552
+ "deep speech": {
553
+ "const": true
554
+ },
555
+ "draconic": {
556
+ "const": true
557
+ },
558
+ "infernal": {
559
+ "const": true
560
+ },
561
+ "primordial": {
562
+ "const": true
563
+ },
564
+ "sylvan": {
565
+ "const": true
566
+ },
567
+ "undercommon": {
568
+ "const": true
569
+ },
570
+ "dwarvish": {
571
+ "const": true
572
+ },
573
+ "elvish": {
574
+ "const": true
575
+ },
576
+ "giant": {
577
+ "const": true
578
+ },
579
+ "otherLanguage": {
580
+ "const": true
581
+ },
582
+ "anyTool": {
583
+ "type": "integer"
584
+ },
585
+ "anyArtisansTool": {
586
+ "type": "integer"
587
+ },
588
+ "artisan's tools": {
589
+ "const": true
590
+ },
591
+ "alchemist's supplies": {
592
+ "const": true
593
+ },
594
+ "brewer's supplies": {
595
+ "const": true
596
+ },
597
+ "calligrapher's supplies": {
598
+ "const": true
599
+ },
600
+ "carpenter's tools": {
601
+ "const": true
602
+ },
603
+ "cartographer's tools": {
604
+ "const": true
605
+ },
606
+ "cobbler's tools": {
607
+ "const": true
608
+ },
609
+ "cook's utensils": {
610
+ "const": true
611
+ },
612
+ "glassblower's tools": {
613
+ "const": true
614
+ },
615
+ "jeweler's tools": {
616
+ "const": true
617
+ },
618
+ "leatherworker's tools": {
619
+ "const": true
620
+ },
621
+ "mason's tools": {
622
+ "const": true
623
+ },
624
+ "painter's supplies": {
625
+ "const": true
626
+ },
627
+ "potter's tools": {
628
+ "const": true
629
+ },
630
+ "smith's tools": {
631
+ "const": true
632
+ },
633
+ "tinker's tools": {
634
+ "const": true
635
+ },
636
+ "weaver's tools": {
637
+ "const": true
638
+ },
639
+ "woodcarver's tools": {
640
+ "const": true
641
+ },
642
+ "disguise kit": {
643
+ "const": true
644
+ },
645
+ "forgery kit": {
646
+ "const": true
647
+ },
648
+ "gaming set": {
649
+ "const": true
650
+ },
651
+ "herbalism kit": {
652
+ "const": true
653
+ },
654
+ "musical instrument": {
655
+ "const": true
656
+ },
657
+ "navigator's tools": {
658
+ "const": true
659
+ },
660
+ "thieves' tools": {
661
+ "const": true
662
+ },
663
+ "poisoner's kit": {
664
+ "const": true
665
+ },
666
+ "vehicles (land)": {
667
+ "const": true
668
+ },
669
+ "vehicles (water)": {
670
+ "const": true
671
+ },
672
+ "vehicles (space)": {
673
+ "const": true
674
+ },
675
+ "anySkill": {
676
+ "type": "integer"
677
+ },
678
+ "athletics": {
679
+ "const": true
680
+ },
681
+ "acrobatics": {
682
+ "const": true
683
+ },
684
+ "sleight of hand": {
685
+ "const": true
686
+ },
687
+ "stealth": {
688
+ "const": true
689
+ },
690
+ "arcana": {
691
+ "const": true
692
+ },
693
+ "history": {
694
+ "const": true
695
+ },
696
+ "investigation": {
697
+ "const": true
698
+ },
699
+ "nature": {
700
+ "const": true
701
+ },
702
+ "religion": {
703
+ "const": true
704
+ },
705
+ "animal handling": {
706
+ "const": true
707
+ },
708
+ "insight": {
709
+ "const": true
710
+ },
711
+ "medicine": {
712
+ "const": true
713
+ },
714
+ "perception": {
715
+ "const": true
716
+ },
717
+ "survival": {
718
+ "const": true
719
+ },
720
+ "deception": {
721
+ "const": true
722
+ },
723
+ "intimidation": {
724
+ "const": true
725
+ },
726
+ "performance": {
727
+ "const": true
728
+ },
729
+ "persuasion": {
730
+ "const": true
731
+ },
732
+ "choose": {
733
+ "type": "array",
734
+ "items": {
735
+ "oneOf": [
736
+ {
737
+ "type": "object",
738
+ "properties": {
739
+ "from": {
740
+ "type": "array",
741
+ "items": {
742
+ "anyOf": [
743
+ {
744
+ "$ref": "#/$defs/languageNameLower"
745
+ },
746
+ {
747
+ "$ref": "#/$defs/toolNameLower"
748
+ },
749
+ {
750
+ "$ref": "#/$defs/skillNameLower"
751
+ },
752
+ {
753
+ "type": "string",
754
+ "enum": [
755
+ "anySkill",
756
+ "anyTool",
757
+ "anyArtisansTool",
758
+ "anyLanguage",
759
+ "anyStandardLanguage"
760
+ ]
761
+ }
762
+ ]
763
+ },
764
+ "minItems": 2
765
+ },
766
+ "count": {
767
+ "type": "integer"
768
+ }
769
+ },
770
+ "required": [
771
+ "from"
772
+ ],
773
+ "additionalProperties": false
774
+ },
775
+ {
776
+ "type": "object",
777
+ "properties": {
778
+ "fromFilter": {
779
+ "type": "string"
780
+ },
781
+ "count": {
782
+ "type": "integer"
783
+ },
784
+ "type": {
785
+ "type": "string",
786
+ "enum": [
787
+ "weapon",
788
+ "armor",
789
+ "skill",
790
+ "tool",
791
+ "language",
792
+ "savingThrow"
793
+ ]
794
+ }
795
+ },
796
+ "required": [
797
+ "fromFilter",
798
+ "type"
799
+ ],
800
+ "additionalProperties": false
801
+ }
802
+ ]
803
+ },
804
+ "uniqueItems": true,
805
+ "minItems": 1
806
+ }
807
+ },
808
+ "additionalProperties": {
809
+ "const": true
810
+ }
811
+ },
812
+ "uniqueItems": true,
813
+ "minItems": 1
814
+ },
815
+ "weaponProficiencies": {
816
+ "type": "array",
817
+ "items": {
818
+ "type": "object",
819
+ "properties": {
820
+ "simple": {
821
+ "const": true
822
+ },
823
+ "martial": {
824
+ "const": true
825
+ },
826
+ "firearms": {
827
+ "const": true
828
+ },
829
+ "battleaxe|phb": {
830
+ "const": true
831
+ },
832
+ "club|phb": {
833
+ "const": true
834
+ },
835
+ "dagger|phb": {
836
+ "const": true
837
+ },
838
+ "flail|phb": {
839
+ "const": true
840
+ },
841
+ "glaive|phb": {
842
+ "const": true
843
+ },
844
+ "greataxe|phb": {
845
+ "const": true
846
+ },
847
+ "greatclub|phb": {
848
+ "const": true
849
+ },
850
+ "greatsword|phb": {
851
+ "const": true
852
+ },
853
+ "halberd|phb": {
854
+ "const": true
855
+ },
856
+ "handaxe|phb": {
857
+ "const": true
858
+ },
859
+ "javelin|phb": {
860
+ "const": true
861
+ },
862
+ "lance|phb": {
863
+ "const": true
864
+ },
865
+ "light hammer|phb": {
866
+ "const": true
867
+ },
868
+ "longsword|phb": {
869
+ "const": true
870
+ },
871
+ "mace|phb": {
872
+ "const": true
873
+ },
874
+ "maul|phb": {
875
+ "const": true
876
+ },
877
+ "morningstar|phb": {
878
+ "const": true
879
+ },
880
+ "pike|phb": {
881
+ "const": true
882
+ },
883
+ "quarterstaff|phb": {
884
+ "const": true
885
+ },
886
+ "rapier|phb": {
887
+ "const": true
888
+ },
889
+ "scimitar|phb": {
890
+ "const": true
891
+ },
892
+ "shortsword|phb": {
893
+ "const": true
894
+ },
895
+ "sickle|phb": {
896
+ "const": true
897
+ },
898
+ "spear|phb": {
899
+ "const": true
900
+ },
901
+ "staff|phb": {
902
+ "const": true
903
+ },
904
+ "trident|phb": {
905
+ "const": true
906
+ },
907
+ "war pick|phb": {
908
+ "const": true
909
+ },
910
+ "warhammer|phb": {
911
+ "const": true
912
+ },
913
+ "whip|phb": {
914
+ "const": true
915
+ },
916
+ "blowgun|phb": {
917
+ "const": true
918
+ },
919
+ "dart|phb": {
920
+ "const": true
921
+ },
922
+ "hand crossbow|phb": {
923
+ "const": true
924
+ },
925
+ "heavy crossbow|phb": {
926
+ "const": true
927
+ },
928
+ "light crossbow|phb": {
929
+ "const": true
930
+ },
931
+ "longbow|phb": {
932
+ "const": true
933
+ },
934
+ "net|phb": {
935
+ "const": true
936
+ },
937
+ "shortbow|phb": {
938
+ "const": true
939
+ },
940
+ "sling|phb": {
941
+ "const": true
942
+ },
943
+ "double-bladed scimitar|erlw": {
944
+ "const": true
945
+ },
946
+ "choose": {
947
+ "type": "object",
948
+ "properties": {
949
+ "fromFilter": {
950
+ "description": "A filter string, e.g. \"type=martial weapon|miscellaneous=mundane\"",
951
+ "type": "string"
952
+ },
953
+ "count": {
954
+ "type": "integer"
955
+ }
956
+ },
957
+ "required": [
958
+ "fromFilter"
959
+ ],
960
+ "additionalProperties": false
961
+ }
962
+ },
963
+ "additionalProperties": false
964
+ },
965
+ "uniqueItems": true,
966
+ "minItems": 1
967
+ },
968
+ "armorProficiencies": {
969
+ "type": "array",
970
+ "items": {
971
+ "type": "object",
972
+ "properties": {
973
+ "light": {
974
+ "const": true
975
+ },
976
+ "medium": {
977
+ "const": true
978
+ },
979
+ "heavy": {
980
+ "const": true
981
+ },
982
+ "shield|phb": {
983
+ "const": true
984
+ }
985
+ },
986
+ "additionalProperties": false
987
+ },
988
+ "uniqueItems": true,
989
+ "minItems": 1
990
+ },
991
+ "savingThrowProficiencies": {
992
+ "type": "array",
993
+ "items": {
994
+ "type": "object",
995
+ "properties": {
996
+ "str": {
997
+ "const": true
998
+ },
999
+ "dex": {
1000
+ "const": true
1001
+ },
1002
+ "con": {
1003
+ "const": true
1004
+ },
1005
+ "int": {
1006
+ "const": true
1007
+ },
1008
+ "wis": {
1009
+ "const": true
1010
+ },
1011
+ "cha": {
1012
+ "const": true
1013
+ },
1014
+ "choose": {
1015
+ "type": "object",
1016
+ "properties": {
1017
+ "from": {
1018
+ "type": "array",
1019
+ "items": {
1020
+ "enum": [
1021
+ "str",
1022
+ "dex",
1023
+ "con",
1024
+ "int",
1025
+ "wis",
1026
+ "cha"
1027
+ ]
1028
+ },
1029
+ "uniqueItems": true,
1030
+ "minItems": 2
1031
+ },
1032
+ "count": {
1033
+ "type": "integer"
1034
+ }
1035
+ },
1036
+ "required": [
1037
+ "from"
1038
+ ],
1039
+ "additionalProperties": false
1040
+ }
1041
+ },
1042
+ "additionalProperties": false
1043
+ },
1044
+ "uniqueItems": true,
1045
+ "minItems": 1
1046
+ },
1047
+ "expertise": {
1048
+ "type": "array",
1049
+ "items": {
1050
+ "type": "object",
1051
+ "properties": {
1052
+ "anyProficientSkill": {
1053
+ "type": "number"
1054
+ },
1055
+ "athletics": {
1056
+ "const": true
1057
+ },
1058
+ "acrobatics": {
1059
+ "const": true
1060
+ },
1061
+ "sleight of hand": {
1062
+ "const": true
1063
+ },
1064
+ "stealth": {
1065
+ "const": true
1066
+ },
1067
+ "arcana": {
1068
+ "const": true
1069
+ },
1070
+ "history": {
1071
+ "const": true
1072
+ },
1073
+ "investigation": {
1074
+ "const": true
1075
+ },
1076
+ "nature": {
1077
+ "const": true
1078
+ },
1079
+ "religion": {
1080
+ "const": true
1081
+ },
1082
+ "animal handling": {
1083
+ "const": true
1084
+ },
1085
+ "insight": {
1086
+ "const": true
1087
+ },
1088
+ "medicine": {
1089
+ "const": true
1090
+ },
1091
+ "perception": {
1092
+ "const": true
1093
+ },
1094
+ "survival": {
1095
+ "const": true
1096
+ },
1097
+ "deception": {
1098
+ "const": true
1099
+ },
1100
+ "intimidation": {
1101
+ "const": true
1102
+ },
1103
+ "performance": {
1104
+ "const": true
1105
+ },
1106
+ "persuasion": {
1107
+ "const": true
1108
+ },
1109
+ "anyProficientTool": {
1110
+ "type": "number"
1111
+ },
1112
+ "artisan's tools": {
1113
+ "const": true
1114
+ },
1115
+ "alchemist's supplies": {
1116
+ "const": true
1117
+ },
1118
+ "brewer's supplies": {
1119
+ "const": true
1120
+ },
1121
+ "calligrapher's supplies": {
1122
+ "const": true
1123
+ },
1124
+ "carpenter's tools": {
1125
+ "const": true
1126
+ },
1127
+ "cartographer's tools": {
1128
+ "const": true
1129
+ },
1130
+ "cobbler's tools": {
1131
+ "const": true
1132
+ },
1133
+ "cook's utensils": {
1134
+ "const": true
1135
+ },
1136
+ "glassblower's tools": {
1137
+ "const": true
1138
+ },
1139
+ "jeweler's tools": {
1140
+ "const": true
1141
+ },
1142
+ "leatherworker's tools": {
1143
+ "const": true
1144
+ },
1145
+ "mason's tools": {
1146
+ "const": true
1147
+ },
1148
+ "painter's supplies": {
1149
+ "const": true
1150
+ },
1151
+ "potter's tools": {
1152
+ "const": true
1153
+ },
1154
+ "smith's tools": {
1155
+ "const": true
1156
+ },
1157
+ "tinker's tools": {
1158
+ "const": true
1159
+ },
1160
+ "weaver's tools": {
1161
+ "const": true
1162
+ },
1163
+ "woodcarver's tools": {
1164
+ "const": true
1165
+ },
1166
+ "disguise kit": {
1167
+ "const": true
1168
+ },
1169
+ "forgery kit": {
1170
+ "const": true
1171
+ },
1172
+ "gaming set": {
1173
+ "const": true
1174
+ },
1175
+ "herbalism kit": {
1176
+ "const": true
1177
+ },
1178
+ "musical instrument": {
1179
+ "const": true
1180
+ },
1181
+ "navigator's tools": {
1182
+ "const": true
1183
+ },
1184
+ "thieves' tools": {
1185
+ "const": true
1186
+ },
1187
+ "vehicles (land)": {
1188
+ "const": true
1189
+ },
1190
+ "vehicles (water)": {
1191
+ "const": true
1192
+ },
1193
+ "vehicles (space)": {
1194
+ "const": true
1195
+ },
1196
+ "poisoner's kit": {
1197
+ "const": true
1198
+ }
1199
+ }
1200
+ },
1201
+ "uniqueItems": true,
1202
+ "minItems": 1
1203
+ },
1204
+ "additionalFeatsArray": {
1205
+ "type": "array",
1206
+ "items": {
1207
+ "type": "object",
1208
+ "properties": {
1209
+ "any": {
1210
+ "type": "integer"
1211
+ }
1212
+ },
1213
+ "additionalProperties": true
1214
+ },
1215
+ "uniqueItems": true,
1216
+ "minItems": 1
1217
+ },
1218
+ "proficiencyTag": {
1219
+ "type": "string",
1220
+ "enum": [
1221
+ "Skill Proficiency",
1222
+ "Armor Proficiency",
1223
+ "Weapon Proficiency",
1224
+ "Tool Proficiency",
1225
+ "Language Proficiency"
1226
+ ]
1227
+ },
1228
+ "_speedVal": {
1229
+ "oneOf": [
1230
+ {
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "number": {
1234
+ "type": "integer"
1235
+ },
1236
+ "condition": {
1237
+ "type": "string"
1238
+ }
1239
+ },
1240
+ "required": [
1241
+ "number",
1242
+ "condition"
1243
+ ],
1244
+ "additionalProperties": false
1245
+ },
1246
+ {
1247
+ "type": "integer"
1248
+ },
1249
+ {
1250
+ "const": true
1251
+ }
1252
+ ]
1253
+ },
1254
+ "_speedMode": {
1255
+ "type": "string",
1256
+ "enum": [
1257
+ "walk",
1258
+ "burrow",
1259
+ "climb",
1260
+ "fly",
1261
+ "swim"
1262
+ ]
1263
+ },
1264
+ "speed": {
1265
+ "oneOf": [
1266
+ {
1267
+ "type": "object",
1268
+ "properties": {
1269
+ "walk": {
1270
+ "$ref": "#/$defs/_speedVal"
1271
+ },
1272
+ "burrow": {
1273
+ "$ref": "#/$defs/_speedVal"
1274
+ },
1275
+ "climb": {
1276
+ "$ref": "#/$defs/_speedVal"
1277
+ },
1278
+ "fly": {
1279
+ "$ref": "#/$defs/_speedVal"
1280
+ },
1281
+ "canHover": {
1282
+ "const": true
1283
+ },
1284
+ "swim": {
1285
+ "$ref": "#/$defs/_speedVal"
1286
+ },
1287
+ "choose": {
1288
+ "type": "object",
1289
+ "properties": {
1290
+ "from": {
1291
+ "type": "array",
1292
+ "items": {
1293
+ "$ref": "#/$defs/_speedMode"
1294
+ },
1295
+ "uniqueItems": true,
1296
+ "minItems": 2
1297
+ },
1298
+ "amount": {
1299
+ "type": "integer"
1300
+ },
1301
+ "note": {
1302
+ "type": "string"
1303
+ }
1304
+ },
1305
+ "required": [
1306
+ "amount",
1307
+ "from"
1308
+ ],
1309
+ "additionalProperties": false
1310
+ },
1311
+ "alternate": {
1312
+ "type": "object",
1313
+ "properties": {
1314
+ "walk": {
1315
+ "type": "array",
1316
+ "items": {
1317
+ "$ref": "#/$defs/_speedVal"
1318
+ },
1319
+ "uniqueItems": true
1320
+ },
1321
+ "burrow": {
1322
+ "type": "array",
1323
+ "items": {
1324
+ "$ref": "#/$defs/_speedVal"
1325
+ },
1326
+ "uniqueItems": true
1327
+ },
1328
+ "climb": {
1329
+ "type": "array",
1330
+ "items": {
1331
+ "$ref": "#/$defs/_speedVal"
1332
+ },
1333
+ "uniqueItems": true
1334
+ },
1335
+ "fly": {
1336
+ "type": "array",
1337
+ "items": {
1338
+ "$ref": "#/$defs/_speedVal"
1339
+ },
1340
+ "uniqueItems": true
1341
+ },
1342
+ "swim": {
1343
+ "type": "array",
1344
+ "items": {
1345
+ "$ref": "#/$defs/_speedVal"
1346
+ },
1347
+ "uniqueItems": true
1348
+ }
1349
+ }
1350
+ },
1351
+ "hidden": {
1352
+ "type": "array",
1353
+ "items": {
1354
+ "$ref": "#/$defs/_speedMode"
1355
+ },
1356
+ "uniqueItems": true,
1357
+ "minItems": 1
1358
+ }
1359
+ },
1360
+ "additionalProperties": false
1361
+ },
1362
+ {
1363
+ "type": "integer"
1364
+ },
1365
+ {
1366
+ "const": "Varies"
1367
+ }
1368
+ ]
1369
+ },
1370
+ "rarity": {
1371
+ "type": "string",
1372
+ "enum": [
1373
+ "rare",
1374
+ "uncommon",
1375
+ "very rare",
1376
+ "legendary",
1377
+ "artifact",
1378
+ "common"
1379
+ ]
1380
+ },
1381
+ "prerequisite": {
1382
+ "type": "array",
1383
+ "minItems": 1,
1384
+ "items": {
1385
+ "type": "object",
1386
+ "properties": {
1387
+ "level": {
1388
+ "oneOf": [
1389
+ {
1390
+ "type": "object",
1391
+ "properties": {
1392
+ "level": {
1393
+ "type": "integer"
1394
+ },
1395
+ "class": {
1396
+ "type": "object",
1397
+ "properties": {
1398
+ "name": {
1399
+ "type": "string"
1400
+ },
1401
+ "source": {
1402
+ "type": "string"
1403
+ },
1404
+ "visible": {
1405
+ "description": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.",
1406
+ "const": true
1407
+ }
1408
+ },
1409
+ "required": [
1410
+ "name"
1411
+ ],
1412
+ "additionalProperties": false
1413
+ },
1414
+ "subclass": {
1415
+ "type": "object",
1416
+ "properties": {
1417
+ "name": {
1418
+ "type": "string"
1419
+ },
1420
+ "source": {
1421
+ "type": "string"
1422
+ },
1423
+ "visible": {
1424
+ "description": "Governs whether or not the class name is visible in the list display/prerequisite line. *Not* recommended for features which implicitly carry a class restriction, such as Eldritch Invocations.",
1425
+ "const": true
1426
+ }
1427
+ },
1428
+ "required": [
1429
+ "name"
1430
+ ],
1431
+ "additionalProperties": false
1432
+ }
1433
+ },
1434
+ "required": [
1435
+ "level"
1436
+ ],
1437
+ "additionalProperties": false
1438
+ },
1439
+ {
1440
+ "type": "integer",
1441
+ "minimum": 1
1442
+ }
1443
+ ]
1444
+ },
1445
+ "pact": {
1446
+ "type": "string",
1447
+ "examples": [
1448
+ "Chain",
1449
+ "Tome",
1450
+ "Blade",
1451
+ "Talisman"
1452
+ ]
1453
+ },
1454
+ "patron": {
1455
+ "type": "string",
1456
+ "examples": [
1457
+ "The Archfey",
1458
+ "The Fiend",
1459
+ "The Great Old One",
1460
+ "The Hexblade",
1461
+ "The Raven Queen",
1462
+ "The Seeker"
1463
+ ]
1464
+ },
1465
+ "spell": {
1466
+ "type": "array",
1467
+ "items": {
1468
+ "$ref": "entry.json"
1469
+ }
1470
+ },
1471
+ "feat": {
1472
+ "type": "array",
1473
+ "items": {
1474
+ "$ref": "entry.json"
1475
+ }
1476
+ },
1477
+ "feature": {
1478
+ "type": "array",
1479
+ "items": {
1480
+ "$ref": "entry.json"
1481
+ }
1482
+ },
1483
+ "item": {
1484
+ "type": "array",
1485
+ "items": {
1486
+ "$ref": "entry.json"
1487
+ }
1488
+ },
1489
+ "other": {
1490
+ "description": "A free text prerequisite",
1491
+ "type": "string"
1492
+ },
1493
+ "otherSummary": {
1494
+ "description": "A free text prerequisite, with a shortened form for list display.",
1495
+ "type": "object",
1496
+ "properties": {
1497
+ "entry": {
1498
+ "type": "string"
1499
+ },
1500
+ "entrySummary": {
1501
+ "description": "Used in short/list displays",
1502
+ "type": "string"
1503
+ }
1504
+ },
1505
+ "required": [
1506
+ "entry",
1507
+ "entrySummary"
1508
+ ]
1509
+ },
1510
+ "race": {
1511
+ "type": "array",
1512
+ "items": {
1513
+ "type": "object",
1514
+ "properties": {
1515
+ "name": {
1516
+ "type": "string"
1517
+ },
1518
+ "displayEntry": {
1519
+ "description": "Optional long-form name to be used in the rendered entity.",
1520
+ "type": "string"
1521
+ },
1522
+ "subrace": {
1523
+ "type": "string"
1524
+ }
1525
+ },
1526
+ "required": [
1527
+ "name"
1528
+ ],
1529
+ "additionalProperties": false
1530
+ }
1531
+ },
1532
+ "background": {
1533
+ "type": "array",
1534
+ "items": {
1535
+ "type": "object",
1536
+ "properties": {
1537
+ "name": {
1538
+ "type": "string"
1539
+ },
1540
+ "displayEntry": {
1541
+ "description": "Optional long-form name to be used in the rendered entity.",
1542
+ "type": "string"
1543
+ }
1544
+ },
1545
+ "required": [
1546
+ "name"
1547
+ ],
1548
+ "additionalProperties": false
1549
+ }
1550
+ },
1551
+ "ability": {
1552
+ "type": "array",
1553
+ "items": {
1554
+ "type": "object",
1555
+ "properties": {
1556
+ "str": {
1557
+ "type": "integer"
1558
+ },
1559
+ "dex": {
1560
+ "type": "integer"
1561
+ },
1562
+ "con": {
1563
+ "type": "integer"
1564
+ },
1565
+ "int": {
1566
+ "type": "integer"
1567
+ },
1568
+ "wis": {
1569
+ "type": "integer"
1570
+ },
1571
+ "cha": {
1572
+ "type": "integer"
1573
+ }
1574
+ },
1575
+ "additionalProperties": false
1576
+ }
1577
+ },
1578
+ "spellcasting": {
1579
+ "const": true
1580
+ },
1581
+ "spellcasting2020": {
1582
+ "description": "Renders with the updated text found in UA2020: Feats",
1583
+ "const": true
1584
+ },
1585
+ "psionics": {
1586
+ "const": true
1587
+ },
1588
+ "proficiency": {
1589
+ "type": "array",
1590
+ "items": {
1591
+ "type": "object",
1592
+ "properties": {
1593
+ "armor": {
1594
+ "type": "string",
1595
+ "enum": [
1596
+ "light",
1597
+ "medium",
1598
+ "heavy"
1599
+ ]
1600
+ },
1601
+ "weapon": {
1602
+ "type": "string",
1603
+ "enum": [
1604
+ "simple",
1605
+ "martial"
1606
+ ]
1607
+ }
1608
+ },
1609
+ "additionalProperties": false
1610
+ }
1611
+ },
1612
+ "alignment": {
1613
+ "type": "array",
1614
+ "items": {
1615
+ "$ref": "util.json#/$defs/alignment"
1616
+ }
1617
+ },
1618
+ "campaign": {
1619
+ "type": "array",
1620
+ "items": {
1621
+ "type": "string",
1622
+ "examples": [
1623
+ "Dragonlance"
1624
+ ]
1625
+ }
1626
+ },
1627
+ "group": {
1628
+ "type": "array",
1629
+ "items": {
1630
+ "type": "string",
1631
+ "examples": [
1632
+ "expert",
1633
+ "mage",
1634
+ "priest",
1635
+ "warrior"
1636
+ ]
1637
+ }
1638
+ },
1639
+ "note": {
1640
+ "description": "An additional note that accompanies the proficiencies, but is not part of them.",
1641
+ "type": "string"
1642
+ }
1643
+ },
1644
+ "additionalProperties": false
1645
+ }
1646
+ },
1647
+ "creatureType": {
1648
+ "type": "string",
1649
+ "examples": [
1650
+ "aberration",
1651
+ "beast",
1652
+ "celestial",
1653
+ "construct",
1654
+ "dragon",
1655
+ "elemental",
1656
+ "fey",
1657
+ "fiend",
1658
+ "giant",
1659
+ "humanoid",
1660
+ "monstrosity",
1661
+ "ooze",
1662
+ "plant",
1663
+ "undead"
1664
+ ]
1665
+ },
1666
+ "alignment": {
1667
+ "type": "string",
1668
+ "description": "L: Lawful\n N: Neutral\n NX: Neutral (law/chaos axis)\n NY: Neutral (good/evil axis)\n C: Chaotic\n G: Good\n E: Evil\n U: Unaligned\n A: Any",
1669
+ "enum": [
1670
+ "L",
1671
+ "N",
1672
+ "NX",
1673
+ "NY",
1674
+ "C",
1675
+ "G",
1676
+ "E",
1677
+ "U",
1678
+ "A"
1679
+ ]
1680
+ },
1681
+ "size": {
1682
+ "type": "string",
1683
+ "description": "F: Fine\n D: Diminutive\n T: Tiny\n S: Small\n M: Medium\n L: Large\n H: Huge\n G: Gargantuan\n C: Colossal\n V: Varies.",
1684
+ "enum": [
1685
+ "F",
1686
+ "D",
1687
+ "T",
1688
+ "S",
1689
+ "M",
1690
+ "L",
1691
+ "H",
1692
+ "G",
1693
+ "C",
1694
+ "V"
1695
+ ]
1696
+ },
1697
+ "dataCondition": {
1698
+ "type": "string",
1699
+ "examples": [
1700
+ "blinded",
1701
+ "charmed",
1702
+ "deafened",
1703
+ "exhaustion",
1704
+ "frightened",
1705
+ "grappled",
1706
+ "incapacitated",
1707
+ "invisible",
1708
+ "paralyzed",
1709
+ "petrified",
1710
+ "poisoned",
1711
+ "prone",
1712
+ "restrained",
1713
+ "stunned",
1714
+ "unconscious",
1715
+ "disease"
1716
+ ]
1717
+ },
1718
+ "dataDamageType": {
1719
+ "type": "string",
1720
+ "enum": [
1721
+ "acid",
1722
+ "bludgeoning",
1723
+ "cold",
1724
+ "fire",
1725
+ "force",
1726
+ "lightning",
1727
+ "necrotic",
1728
+ "piercing",
1729
+ "poison",
1730
+ "psychic",
1731
+ "radiant",
1732
+ "slashing",
1733
+ "thunder"
1734
+ ]
1735
+ },
1736
+ "dataOptionalfeatureType": {
1737
+ "type": "string",
1738
+ "description": "AF: Alchemical Formula\n AI: Artificer Infusion\n AS: Arcane Shot\n AS:V1-UA: Arcane Shot, V1 (UA)\n AS:V2-UA: Arcane Shot, V2 (UA)\n ED: Elemental Discipline\n EI: Eldritch Invocation\n FS:B: Fighting Style; Bard\n FS:F: Fighting Style; Fighter\n FS:P: Fighting Style; Paladin\n FS:R: Fighting Style; Ranger\n IWM:A: Infernal War Machine Upgrade, Armor\n IWM:G: Infernal War Machine Upgrade, Gadget\n IWM:W: Infernal War Machine Variant, Weapon\n MM: Metamagic\n MV: Maneuver\n MV:B: Maneuver, Battle Master\n MV:C2-UA: Maneuver, Cavalier V2 (UA)\n OR: Onomancy Resonant\n OTH: Other\n PB: Pact Boon\n RN: Rune Knight Rune\n SHP:F: Ship Upgrade, Figurehead\n SHP:H: Ship Upgrade, Hull\n SHP:M: Ship Upgrade, Movement\n SHP:O: Ship Upgrade, Miscellaneous\n SHP:W: Ship Upgrade, Weapon",
1739
+ "examples": [
1740
+ "ED",
1741
+ "EI",
1742
+ "MM",
1743
+ "MV",
1744
+ "MV:B",
1745
+ "OTH",
1746
+ "FS:F",
1747
+ "FS:B",
1748
+ "FS:R",
1749
+ "FS:P",
1750
+ "MV:C2-UA",
1751
+ "AS:V1-UA",
1752
+ "AS:V2-UA",
1753
+ "AS",
1754
+ "PB",
1755
+ "AI",
1756
+ "SHP:H",
1757
+ "SHP:M",
1758
+ "SHP:W",
1759
+ "SHP:F",
1760
+ "SHP:O",
1761
+ "IWM:W",
1762
+ "IWM:A",
1763
+ "IWM:G",
1764
+ "OR",
1765
+ "RN",
1766
+ "AF"
1767
+ ]
1768
+ },
1769
+ "damageImmunityArray": {
1770
+ "oneOf": [
1771
+ {
1772
+ "type": "array",
1773
+ "items": {
1774
+ "oneOf": [
1775
+ {
1776
+ "$ref": "#/$defs/dataDamageType"
1777
+ },
1778
+ {
1779
+ "type": "object",
1780
+ "properties": {
1781
+ "special": {
1782
+ "type": "string"
1783
+ }
1784
+ },
1785
+ "additionalProperties": false,
1786
+ "required": [
1787
+ "special"
1788
+ ]
1789
+ },
1790
+ {
1791
+ "type": "object",
1792
+ "properties": {
1793
+ "preNote": {
1794
+ "type": "string"
1795
+ },
1796
+ "immune": {
1797
+ "$ref": "#/$defs/damageImmunityArray"
1798
+ },
1799
+ "note": {
1800
+ "type": "string"
1801
+ },
1802
+ "cond": {
1803
+ "const": true
1804
+ }
1805
+ },
1806
+ "additionalProperties": false,
1807
+ "required": [
1808
+ "immune"
1809
+ ]
1810
+ }
1811
+ ]
1812
+ },
1813
+ "uniqueItems": true,
1814
+ "minItems": 1
1815
+ },
1816
+ {
1817
+ "type": "null"
1818
+ }
1819
+ ]
1820
+ },
1821
+ "damageImmunityArrayPlayer": {
1822
+ "type": "array",
1823
+ "items": {
1824
+ "oneOf": [
1825
+ {
1826
+ "$ref": "#/$defs/dataDamageType"
1827
+ },
1828
+ {
1829
+ "type": "object",
1830
+ "properties": {
1831
+ "choose": {
1832
+ "type": "object",
1833
+ "properties": {
1834
+ "from": {
1835
+ "$ref": "#/$defs/damageImmunityArrayPlayer"
1836
+ }
1837
+ },
1838
+ "additionalProperties": false,
1839
+ "required": [
1840
+ "from"
1841
+ ]
1842
+ }
1843
+ }
1844
+ }
1845
+ ]
1846
+ },
1847
+ "uniqueItems": true
1848
+ },
1849
+ "damageResistArray": {
1850
+ "oneOf": [
1851
+ {
1852
+ "type": "array",
1853
+ "items": {
1854
+ "oneOf": [
1855
+ {
1856
+ "$ref": "#/$defs/dataDamageType"
1857
+ },
1858
+ {
1859
+ "type": "object",
1860
+ "properties": {
1861
+ "special": {
1862
+ "type": "string"
1863
+ }
1864
+ },
1865
+ "additionalProperties": false,
1866
+ "required": [
1867
+ "special"
1868
+ ]
1869
+ },
1870
+ {
1871
+ "type": "object",
1872
+ "properties": {
1873
+ "preNote": {
1874
+ "type": "string"
1875
+ },
1876
+ "resist": {
1877
+ "$ref": "#/$defs/damageResistArray"
1878
+ },
1879
+ "note": {
1880
+ "type": "string"
1881
+ },
1882
+ "cond": {
1883
+ "const": true
1884
+ }
1885
+ },
1886
+ "additionalProperties": false,
1887
+ "required": [
1888
+ "resist"
1889
+ ]
1890
+ }
1891
+ ]
1892
+ },
1893
+ "uniqueItems": true,
1894
+ "minItems": 1
1895
+ },
1896
+ {
1897
+ "type": "null"
1898
+ }
1899
+ ]
1900
+ },
1901
+ "damageResistArrayPlayer": {
1902
+ "type": "array",
1903
+ "items": {
1904
+ "oneOf": [
1905
+ {
1906
+ "$ref": "#/$defs/dataDamageType"
1907
+ },
1908
+ {
1909
+ "type": "object",
1910
+ "properties": {
1911
+ "choose": {
1912
+ "type": "object",
1913
+ "properties": {
1914
+ "from": {
1915
+ "$ref": "#/$defs/damageResistArrayPlayer"
1916
+ }
1917
+ },
1918
+ "additionalProperties": false,
1919
+ "required": [
1920
+ "from"
1921
+ ]
1922
+ }
1923
+ }
1924
+ }
1925
+ ]
1926
+ },
1927
+ "uniqueItems": true,
1928
+ "minItems": 1
1929
+ },
1930
+ "damageVulnerabilityArray": {
1931
+ "oneOf": [
1932
+ {
1933
+ "type": "array",
1934
+ "items": {
1935
+ "oneOf": [
1936
+ {
1937
+ "$ref": "#/$defs/dataDamageType"
1938
+ },
1939
+ {
1940
+ "type": "object",
1941
+ "properties": {
1942
+ "special": {
1943
+ "type": "string"
1944
+ }
1945
+ },
1946
+ "additionalProperties": false,
1947
+ "required": [
1948
+ "special"
1949
+ ]
1950
+ },
1951
+ {
1952
+ "type": "object",
1953
+ "properties": {
1954
+ "preNote": {
1955
+ "type": "string"
1956
+ },
1957
+ "vulnerable": {
1958
+ "$ref": "#/$defs/damageVulnerabilityArray"
1959
+ },
1960
+ "note": {
1961
+ "type": "string"
1962
+ },
1963
+ "cond": {
1964
+ "const": true
1965
+ }
1966
+ },
1967
+ "additionalProperties": false,
1968
+ "required": [
1969
+ "vulnerable"
1970
+ ]
1971
+ }
1972
+ ]
1973
+ },
1974
+ "uniqueItems": true
1975
+ },
1976
+ {
1977
+ "type": "null"
1978
+ }
1979
+ ]
1980
+ },
1981
+ "damageVulnerabilityArrayPlayer": {
1982
+ "type": "array",
1983
+ "items": {
1984
+ "oneOf": [
1985
+ {
1986
+ "$ref": "#/$defs/dataDamageType"
1987
+ },
1988
+ {
1989
+ "type": "object",
1990
+ "properties": {
1991
+ "choose": {
1992
+ "type": "object",
1993
+ "properties": {
1994
+ "from": {
1995
+ "$ref": "#/$defs/damageVulnerabilityArrayPlayer"
1996
+ }
1997
+ },
1998
+ "additionalProperties": false,
1999
+ "required": [
2000
+ "from"
2001
+ ]
2002
+ }
2003
+ }
2004
+ }
2005
+ ]
2006
+ },
2007
+ "uniqueItems": true,
2008
+ "minItems": 1
2009
+ },
2010
+ "conditionImmunityArray": {
2011
+ "oneOf": [
2012
+ {
2013
+ "type": "array",
2014
+ "items": {
2015
+ "oneOf": [
2016
+ {
2017
+ "$ref": "#/$defs/dataCondition"
2018
+ },
2019
+ {
2020
+ "type": "object",
2021
+ "properties": {
2022
+ "special": {
2023
+ "type": "string"
2024
+ }
2025
+ },
2026
+ "additionalProperties": false,
2027
+ "required": [
2028
+ "special"
2029
+ ]
2030
+ },
2031
+ {
2032
+ "type": "object",
2033
+ "properties": {
2034
+ "preNote": {
2035
+ "type": "string"
2036
+ },
2037
+ "conditionImmune": {
2038
+ "$ref": "#/$defs/conditionImmunityArray"
2039
+ },
2040
+ "note": {
2041
+ "type": "string"
2042
+ }
2043
+ },
2044
+ "additionalProperties": false,
2045
+ "required": [
2046
+ "conditionImmune"
2047
+ ]
2048
+ }
2049
+ ]
2050
+ },
2051
+ "uniqueItems": true,
2052
+ "minItems": 1
2053
+ },
2054
+ {
2055
+ "type": "null"
2056
+ }
2057
+ ]
2058
+ },
2059
+ "conditionImmunityArrayPlayer": {
2060
+ "type": "array",
2061
+ "items": {
2062
+ "oneOf": [
2063
+ {
2064
+ "$ref": "#/$defs/dataCondition"
2065
+ },
2066
+ {
2067
+ "type": "object",
2068
+ "properties": {
2069
+ "choose": {
2070
+ "type": "object",
2071
+ "properties": {
2072
+ "from": {
2073
+ "$ref": "#/$defs/conditionImmunityArrayPlayer"
2074
+ }
2075
+ },
2076
+ "additionalProperties": false,
2077
+ "required": [
2078
+ "from"
2079
+ ]
2080
+ }
2081
+ }
2082
+ }
2083
+ ]
2084
+ },
2085
+ "uniqueItems": true,
2086
+ "minItems": 1
2087
+ },
2088
+ "resourcesArray": {
2089
+ "type": "array",
2090
+ "items": {
2091
+ "type": "object",
2092
+ "properties": {
2093
+ "name": {
2094
+ "type": "string"
2095
+ },
2096
+ "type": {
2097
+ "type": "string"
2098
+ },
2099
+ "recharge": {
2100
+ "type": "string"
2101
+ },
2102
+ "count": {
2103
+ "type": [
2104
+ "integer",
2105
+ "string"
2106
+ ]
2107
+ },
2108
+ "number": {
2109
+ "type": [
2110
+ "integer",
2111
+ "string"
2112
+ ]
2113
+ },
2114
+ "faces": {
2115
+ "type": [
2116
+ "integer",
2117
+ "string"
2118
+ ]
2119
+ }
2120
+ },
2121
+ "required": [
2122
+ "name",
2123
+ "type"
2124
+ ]
2125
+ },
2126
+ "uniqueItems": true
2127
+ },
2128
+ "sensesArray": {
2129
+ "type": "array",
2130
+ "items": {
2131
+ "type": "object",
2132
+ "propertyNames": {
2133
+ "enum": [
2134
+ "blindsight",
2135
+ "darkvision",
2136
+ "tremorsense",
2137
+ "truesight"
2138
+ ]
2139
+ },
2140
+ "additionalProperties": {
2141
+ "type": "integer"
2142
+ },
2143
+ "minProperties": 1
2144
+ },
2145
+ "uniqueItems": true
2146
+ },
2147
+ "consumesObject": {
2148
+ "type": "object",
2149
+ "properties": {
2150
+ "name": {
2151
+ "type": "string",
2152
+ "examples": [
2153
+ "Superiority Dice",
2154
+ "Ki",
2155
+ "Channel Divinity",
2156
+ "Psionic Energy Dice",
2157
+ "Wild Shape",
2158
+ "Sorcery Points",
2159
+ "Arcane Shot"
2160
+ ]
2161
+ },
2162
+ "amount": {
2163
+ "type": "integer"
2164
+ }
2165
+ },
2166
+ "required": [
2167
+ "name"
2168
+ ],
2169
+ "additionalProperties": false
2170
+ },
2171
+ "dataDamageTags": {
2172
+ "type": "string",
2173
+ "description": "A: Acid\n B: Bludgeoning\n C: Cold\n F: Fire\n O: Force\n L: Lightning\n N: Necrotic\n P: Piercing\n I: Poison\n Y: Psychic\n R: Radiant\n S: Slashing\n T: Thunder",
2174
+ "enum": [
2175
+ "A",
2176
+ "B",
2177
+ "C",
2178
+ "F",
2179
+ "O",
2180
+ "L",
2181
+ "N",
2182
+ "P",
2183
+ "I",
2184
+ "Y",
2185
+ "R",
2186
+ "S",
2187
+ "T"
2188
+ ]
2189
+ },
2190
+ "genericFluffArrayItemData": {
2191
+ "type": "object",
2192
+ "properties": {
2193
+ "name": {
2194
+ "type": "string"
2195
+ },
2196
+ "source": {
2197
+ "type": "string"
2198
+ },
2199
+ "images": {
2200
+ "oneOf": [
2201
+ {
2202
+ "type": "array",
2203
+ "items": {
2204
+ "$ref": "entry.json#/$defs/entryImage"
2205
+ }
2206
+ },
2207
+ {
2208
+ "type": "null"
2209
+ }
2210
+ ]
2211
+ },
2212
+ "entries": {
2213
+ "type": "array",
2214
+ "items": {
2215
+ "$ref": "entry.json"
2216
+ }
2217
+ }
2218
+ },
2219
+ "additionalProperties": false
2220
+ },
2221
+ "genericFluffArray": {
2222
+ "type": "array",
2223
+ "minItems": 1,
2224
+ "uniqueItems": true,
2225
+ "items": {
2226
+ "anyOf": [
2227
+ {
2228
+ "type": "object",
2229
+ "properties": {
2230
+ "name": {
2231
+ "type": "string"
2232
+ },
2233
+ "source": {
2234
+ "type": "string"
2235
+ },
2236
+ "images": {
2237
+ "oneOf": [
2238
+ {
2239
+ "type": "array",
2240
+ "items": {
2241
+ "$ref": "entry.json#/$defs/entryImage"
2242
+ }
2243
+ },
2244
+ {
2245
+ "type": "null"
2246
+ }
2247
+ ]
2248
+ },
2249
+ "entries": {
2250
+ "type": "array",
2251
+ "items": {
2252
+ "$ref": "entry.json"
2253
+ }
2254
+ }
2255
+ },
2256
+ "additionalProperties": false,
2257
+ "required": [
2258
+ "name",
2259
+ "source"
2260
+ ]
2261
+ },
2262
+ {
2263
+ "type": "object",
2264
+ "$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.",
2265
+ "properties": {
2266
+ "name": {
2267
+ "type": "string"
2268
+ },
2269
+ "source": {
2270
+ "type": "string"
2271
+ },
2272
+ "images": {
2273
+ "oneOf": [
2274
+ {
2275
+ "type": "array",
2276
+ "items": {
2277
+ "$ref": "entry.json#/$defs/entryImage"
2278
+ }
2279
+ },
2280
+ {
2281
+ "type": "null"
2282
+ }
2283
+ ]
2284
+ },
2285
+ "entries": {
2286
+ "type": "array",
2287
+ "items": {
2288
+ "$ref": "entry.json"
2289
+ }
2290
+ },
2291
+ "_copy": {
2292
+ "type": "object",
2293
+ "properties": {
2294
+ "name": {
2295
+ "type": "string"
2296
+ },
2297
+ "source": {
2298
+ "type": "string"
2299
+ },
2300
+ "pantheon": {
2301
+ "description": "Used in deity data",
2302
+ "type": "string"
2303
+ },
2304
+ "shortName": {
2305
+ "description": "Used in subclass data",
2306
+ "type": "string"
2307
+ },
2308
+ "className": {
2309
+ "description": "Used in subclass data",
2310
+ "type": "string"
2311
+ },
2312
+ "classSource": {
2313
+ "description": "Used in subclass data",
2314
+ "type": "string"
2315
+ },
2316
+ "_mod": {
2317
+ "$ref": "#/$defs/_modObject"
2318
+ },
2319
+ "_trait": {
2320
+ "type": "object",
2321
+ "properties": {
2322
+ "name": {
2323
+ "type": "string"
2324
+ },
2325
+ "source": {
2326
+ "type": "string"
2327
+ }
2328
+ },
2329
+ "required": [
2330
+ "name",
2331
+ "source"
2332
+ ]
2333
+ },
2334
+ "_preserve": {
2335
+ "type": "object",
2336
+ "patternProperties": {
2337
+ ".*": {
2338
+ "const": true
2339
+ }
2340
+ }
2341
+ }
2342
+ },
2343
+ "required": [
2344
+ "name",
2345
+ "source"
2346
+ ],
2347
+ "additionalProperties": false
2348
+ }
2349
+ },
2350
+ "additionalProperties": false,
2351
+ "required": [
2352
+ "_copy"
2353
+ ]
2354
+ }
2355
+ ]
2356
+ }
2357
+ },
2358
+ "tagsConditions": {
2359
+ "type": "array",
2360
+ "uniqueItems": true,
2361
+ "items": {
2362
+ "type": "string",
2363
+ "examples": [
2364
+ "blinded",
2365
+ "charmed",
2366
+ "deafened",
2367
+ "exhaustion",
2368
+ "frightened",
2369
+ "grappled",
2370
+ "incapacitated",
2371
+ "invisible",
2372
+ "paralyzed",
2373
+ "petrified",
2374
+ "poisoned",
2375
+ "prone",
2376
+ "restrained",
2377
+ "stunned",
2378
+ "unconscious"
2379
+ ]
2380
+ }
2381
+ },
2382
+ "copyModifier": {
2383
+ "anyOf": [
2384
+ {
2385
+ "type": "object",
2386
+ "properties": {
2387
+ "mode": {
2388
+ "const": "replaceTxt"
2389
+ },
2390
+ "replace": {
2391
+ "type": "string"
2392
+ },
2393
+ "with": {
2394
+ "type": "string"
2395
+ },
2396
+ "flags": {
2397
+ "type": "string"
2398
+ },
2399
+ "props": {
2400
+ "description": "If unspecified, defaults to `[null, \"entries\", \"headerEntries\", \"footerEntries\"]`. To apply to _any_ string, including those outside of sub-properties (for instance, when trying to replace text in an array of plain strings), include `null` as one of the props (i.e. `\"props\": [null]`)",
2401
+ "type": "array",
2402
+ "items": {
2403
+ "type": [
2404
+ "string",
2405
+ "null"
2406
+ ]
2407
+ }
2408
+ }
2409
+ },
2410
+ "required": [
2411
+ "replace",
2412
+ "with"
2413
+ ],
2414
+ "additionalProperties": false
2415
+ },
2416
+ {
2417
+ "type": "object",
2418
+ "properties": {
2419
+ "mode": {
2420
+ "const": "replaceName"
2421
+ },
2422
+ "replace": {
2423
+ "type": "string"
2424
+ },
2425
+ "with": {
2426
+ "type": "string"
2427
+ },
2428
+ "flags": {
2429
+ "type": "string"
2430
+ }
2431
+ },
2432
+ "required": [
2433
+ "replace",
2434
+ "with"
2435
+ ],
2436
+ "additionalProperties": false
2437
+ },
2438
+ {
2439
+ "type": "object",
2440
+ "properties": {
2441
+ "mode": {
2442
+ "const": "appendStr"
2443
+ },
2444
+ "str": {
2445
+ "type": "string"
2446
+ },
2447
+ "joiner": {
2448
+ "type": "string"
2449
+ }
2450
+ },
2451
+ "required": [
2452
+ "str"
2453
+ ],
2454
+ "additionalProperties": false
2455
+ },
2456
+ {
2457
+ "type": "object",
2458
+ "properties": {
2459
+ "mode": {
2460
+ "const": "prependArr"
2461
+ },
2462
+ "items": {
2463
+ "anyOf": [
2464
+ {
2465
+ "type": "string"
2466
+ },
2467
+ {
2468
+ "type": "object"
2469
+ },
2470
+ {
2471
+ "type": "array"
2472
+ }
2473
+ ]
2474
+ }
2475
+ },
2476
+ "required": [
2477
+ "items"
2478
+ ],
2479
+ "additionalProperties": false
2480
+ },
2481
+ {
2482
+ "type": "object",
2483
+ "properties": {
2484
+ "mode": {
2485
+ "const": "appendArr"
2486
+ },
2487
+ "items": {
2488
+ "anyOf": [
2489
+ {
2490
+ "type": "string"
2491
+ },
2492
+ {
2493
+ "type": "object"
2494
+ },
2495
+ {
2496
+ "type": "array"
2497
+ }
2498
+ ]
2499
+ }
2500
+ },
2501
+ "required": [
2502
+ "items"
2503
+ ],
2504
+ "additionalProperties": false
2505
+ },
2506
+ {
2507
+ "type": "object",
2508
+ "properties": {
2509
+ "mode": {
2510
+ "const": "appendIfNotExistsArr"
2511
+ },
2512
+ "items": {
2513
+ "anyOf": [
2514
+ {
2515
+ "type": "string"
2516
+ },
2517
+ {
2518
+ "type": "object"
2519
+ },
2520
+ {
2521
+ "type": "array"
2522
+ }
2523
+ ]
2524
+ }
2525
+ },
2526
+ "required": [
2527
+ "items"
2528
+ ],
2529
+ "additionalProperties": false
2530
+ },
2531
+ {
2532
+ "type": "object",
2533
+ "properties": {
2534
+ "mode": {
2535
+ "const": "replaceArr"
2536
+ },
2537
+ "replace": {
2538
+ "oneOf": [
2539
+ {
2540
+ "type": "string"
2541
+ },
2542
+ {
2543
+ "type": "object",
2544
+ "properties": {
2545
+ "index": {
2546
+ "type": "integer"
2547
+ }
2548
+ },
2549
+ "required": [
2550
+ "index"
2551
+ ],
2552
+ "additionalProperties": false
2553
+ },
2554
+ {
2555
+ "type": "object",
2556
+ "properties": {
2557
+ "regex": {
2558
+ "type": "string"
2559
+ },
2560
+ "flags": {
2561
+ "type": "string"
2562
+ }
2563
+ },
2564
+ "required": [
2565
+ "regex"
2566
+ ],
2567
+ "additionalProperties": false
2568
+ }
2569
+ ]
2570
+ },
2571
+ "items": {
2572
+ "anyOf": [
2573
+ {
2574
+ "type": "object"
2575
+ },
2576
+ {
2577
+ "type": "array"
2578
+ }
2579
+ ]
2580
+ }
2581
+ },
2582
+ "required": [
2583
+ "replace",
2584
+ "items"
2585
+ ],
2586
+ "additionalProperties": false
2587
+ },
2588
+ {
2589
+ "type": "object",
2590
+ "properties": {
2591
+ "mode": {
2592
+ "const": "replaceOrAppendArr"
2593
+ },
2594
+ "replace": {
2595
+ "oneOf": [
2596
+ {
2597
+ "type": "string"
2598
+ },
2599
+ {
2600
+ "type": "object",
2601
+ "properties": {
2602
+ "index": {
2603
+ "type": "integer"
2604
+ }
2605
+ },
2606
+ "required": [
2607
+ "index"
2608
+ ],
2609
+ "additionalProperties": false
2610
+ },
2611
+ {
2612
+ "type": "object",
2613
+ "properties": {
2614
+ "regex": {
2615
+ "type": "string"
2616
+ },
2617
+ "flags": {
2618
+ "type": "string"
2619
+ }
2620
+ },
2621
+ "required": [
2622
+ "regex"
2623
+ ],
2624
+ "additionalProperties": false
2625
+ }
2626
+ ]
2627
+ },
2628
+ "items": {
2629
+ "anyOf": [
2630
+ {
2631
+ "type": "object"
2632
+ },
2633
+ {
2634
+ "type": "array"
2635
+ }
2636
+ ]
2637
+ }
2638
+ },
2639
+ "required": [
2640
+ "replace",
2641
+ "items"
2642
+ ],
2643
+ "additionalProperties": false
2644
+ },
2645
+ {
2646
+ "type": "object",
2647
+ "properties": {
2648
+ "mode": {
2649
+ "const": "insertArr"
2650
+ },
2651
+ "index": {
2652
+ "type": "integer"
2653
+ },
2654
+ "items": {
2655
+ "anyOf": [
2656
+ {
2657
+ "type": "object"
2658
+ },
2659
+ {
2660
+ "type": "string"
2661
+ },
2662
+ {
2663
+ "type": "array"
2664
+ }
2665
+ ]
2666
+ }
2667
+ },
2668
+ "required": [
2669
+ "index",
2670
+ "items"
2671
+ ],
2672
+ "additionalProperties": false
2673
+ },
2674
+ {
2675
+ "type": "object",
2676
+ "properties": {
2677
+ "mode": {
2678
+ "const": "removeArr"
2679
+ },
2680
+ "names": {
2681
+ "anyOf": [
2682
+ {
2683
+ "type": "string"
2684
+ },
2685
+ {
2686
+ "type": "array"
2687
+ }
2688
+ ]
2689
+ },
2690
+ "items": {
2691
+ "anyOf": [
2692
+ {
2693
+ "type": "string"
2694
+ },
2695
+ {
2696
+ "type": "array"
2697
+ }
2698
+ ]
2699
+ },
2700
+ "force": {
2701
+ "const": true
2702
+ }
2703
+ },
2704
+ "additionalProperties": false
2705
+ },
2706
+ {
2707
+ "type": "object",
2708
+ "properties": {
2709
+ "mode": {
2710
+ "const": "calculateProp"
2711
+ },
2712
+ "prop": {
2713
+ "type": "string"
2714
+ },
2715
+ "formula": {
2716
+ "type": "string"
2717
+ }
2718
+ },
2719
+ "required": [
2720
+ "prop",
2721
+ "formula"
2722
+ ],
2723
+ "additionalProperties": false
2724
+ },
2725
+ {
2726
+ "type": "object",
2727
+ "properties": {
2728
+ "mode": {
2729
+ "const": "replaceSpells"
2730
+ },
2731
+ "spells": {
2732
+ "type": "object"
2733
+ },
2734
+ "daily": {
2735
+ "type": "object"
2736
+ }
2737
+ },
2738
+ "required": [
2739
+ "mode"
2740
+ ],
2741
+ "additionalProperties": false
2742
+ },
2743
+ {
2744
+ "type": "object",
2745
+ "properties": {
2746
+ "mode": {
2747
+ "const": "removeSpells"
2748
+ },
2749
+ "spells": {
2750
+ "type": "object"
2751
+ },
2752
+ "daily": {
2753
+ "type": "object"
2754
+ }
2755
+ },
2756
+ "required": [
2757
+ "mode"
2758
+ ],
2759
+ "additionalProperties": false
2760
+ },
2761
+ {
2762
+ "type": "object",
2763
+ "properties": {
2764
+ "mode": {
2765
+ "const": "addSpells"
2766
+ },
2767
+ "spells": {
2768
+ "type": "object"
2769
+ },
2770
+ "will": {
2771
+ "type": "array"
2772
+ },
2773
+ "daily": {
2774
+ "type": "object"
2775
+ },
2776
+ "weekly": {
2777
+ "type": "object"
2778
+ },
2779
+ "yearly": {
2780
+ "type": "object"
2781
+ }
2782
+ },
2783
+ "required": [
2784
+ "mode"
2785
+ ],
2786
+ "additionalProperties": false
2787
+ },
2788
+ {
2789
+ "type": "object",
2790
+ "properties": {
2791
+ "mode": {
2792
+ "const": "addSkills"
2793
+ },
2794
+ "skills": {
2795
+ "type": "object"
2796
+ }
2797
+ },
2798
+ "required": [
2799
+ "mode",
2800
+ "skills"
2801
+ ],
2802
+ "additionalProperties": false
2803
+ },
2804
+ {
2805
+ "type": "object",
2806
+ "properties": {
2807
+ "mode": {
2808
+ "const": "addSaves"
2809
+ },
2810
+ "saves": {
2811
+ "type": "object"
2812
+ }
2813
+ },
2814
+ "required": [
2815
+ "mode",
2816
+ "saves"
2817
+ ],
2818
+ "additionalProperties": false
2819
+ },
2820
+ {
2821
+ "type": "object",
2822
+ "properties": {
2823
+ "mode": {
2824
+ "const": "addAllSkills"
2825
+ },
2826
+ "skills": {
2827
+ "type": "integer"
2828
+ }
2829
+ },
2830
+ "required": [
2831
+ "mode",
2832
+ "skills"
2833
+ ],
2834
+ "additionalProperties": false
2835
+ },
2836
+ {
2837
+ "type": "object",
2838
+ "properties": {
2839
+ "mode": {
2840
+ "const": "addAllSaves"
2841
+ },
2842
+ "saves": {
2843
+ "type": "integer"
2844
+ }
2845
+ },
2846
+ "required": [
2847
+ "mode",
2848
+ "saves"
2849
+ ],
2850
+ "additionalProperties": false
2851
+ },
2852
+ {
2853
+ "type": "object",
2854
+ "properties": {
2855
+ "mode": {
2856
+ "const": "addSenses"
2857
+ },
2858
+ "senses": {
2859
+ "anyOf": [
2860
+ {
2861
+ "type": "object"
2862
+ },
2863
+ {
2864
+ "type": "array"
2865
+ }
2866
+ ]
2867
+ }
2868
+ },
2869
+ "required": [
2870
+ "mode",
2871
+ "senses"
2872
+ ],
2873
+ "additionalProperties": false
2874
+ },
2875
+ {
2876
+ "type": "object",
2877
+ "properties": {
2878
+ "mode": {
2879
+ "const": "scalarAddProp"
2880
+ },
2881
+ "prop": {
2882
+ "type": "string"
2883
+ },
2884
+ "scalar": {
2885
+ "type": "number"
2886
+ }
2887
+ },
2888
+ "required": [
2889
+ "mode",
2890
+ "scalar",
2891
+ "prop"
2892
+ ],
2893
+ "additionalProperties": false
2894
+ },
2895
+ {
2896
+ "type": "object",
2897
+ "properties": {
2898
+ "mode": {
2899
+ "const": "scalarMultProp"
2900
+ },
2901
+ "prop": {
2902
+ "type": "string"
2903
+ },
2904
+ "scalar": {
2905
+ "type": "number"
2906
+ },
2907
+ "floor": {
2908
+ "const": true
2909
+ }
2910
+ },
2911
+ "required": [
2912
+ "mode",
2913
+ "scalar",
2914
+ "prop"
2915
+ ],
2916
+ "additionalProperties": false
2917
+ },
2918
+ {
2919
+ "type": "object",
2920
+ "properties": {
2921
+ "mode": {
2922
+ "const": "scalarAddHit"
2923
+ },
2924
+ "scalar": {
2925
+ "type": "number"
2926
+ }
2927
+ },
2928
+ "required": [
2929
+ "mode",
2930
+ "scalar"
2931
+ ],
2932
+ "additionalProperties": false
2933
+ },
2934
+ {
2935
+ "type": "object",
2936
+ "properties": {
2937
+ "mode": {
2938
+ "const": "scalarAddDc"
2939
+ },
2940
+ "scalar": {
2941
+ "type": "number"
2942
+ }
2943
+ },
2944
+ "required": [
2945
+ "mode",
2946
+ "scalar"
2947
+ ],
2948
+ "additionalProperties": false
2949
+ },
2950
+ {
2951
+ "type": "object",
2952
+ "properties": {
2953
+ "mode": {
2954
+ "const": "maxSize"
2955
+ },
2956
+ "max": {
2957
+ "type": "string"
2958
+ }
2959
+ },
2960
+ "required": [
2961
+ "mode",
2962
+ "max"
2963
+ ],
2964
+ "additionalProperties": false
2965
+ },
2966
+ {
2967
+ "type": "object",
2968
+ "properties": {
2969
+ "mode": {
2970
+ "const": "scalarMultXp"
2971
+ },
2972
+ "scalar": {
2973
+ "type": "number"
2974
+ },
2975
+ "floor": {
2976
+ "const": true
2977
+ }
2978
+ },
2979
+ "required": [
2980
+ "mode",
2981
+ "scalar"
2982
+ ],
2983
+ "additionalProperties": false
2984
+ }
2985
+ ]
2986
+ },
2987
+ "copyBlock": {
2988
+ "type": "object",
2989
+ "properties": {
2990
+ "_copy": {
2991
+ "type": "object",
2992
+ "properties": {
2993
+ "name": {
2994
+ "type": "string"
2995
+ },
2996
+ "source": {
2997
+ "type": "string"
2998
+ },
2999
+ "pantheon": {
3000
+ "description": "Used in deity data",
3001
+ "type": "string"
3002
+ },
3003
+ "shortName": {
3004
+ "description": "Used in subclass data",
3005
+ "type": "string"
3006
+ },
3007
+ "className": {
3008
+ "description": "Used in subclass data",
3009
+ "type": "string"
3010
+ },
3011
+ "classSource": {
3012
+ "description": "Used in subclass data",
3013
+ "type": "string"
3014
+ },
3015
+ "_mod": {
3016
+ "$ref": "#/$defs/_modObject"
3017
+ },
3018
+ "_trait": {
3019
+ "type": "object",
3020
+ "properties": {
3021
+ "name": {
3022
+ "type": "string"
3023
+ },
3024
+ "source": {
3025
+ "type": "string"
3026
+ }
3027
+ },
3028
+ "required": [
3029
+ "name",
3030
+ "source"
3031
+ ]
3032
+ },
3033
+ "_preserve": {
3034
+ "type": "object",
3035
+ "patternProperties": {
3036
+ ".*": {
3037
+ "const": true
3038
+ }
3039
+ }
3040
+ }
3041
+ },
3042
+ "required": [
3043
+ "name",
3044
+ "source"
3045
+ ],
3046
+ "additionalProperties": false
3047
+ }
3048
+ },
3049
+ "required": [
3050
+ "_copy"
3051
+ ]
3052
+ },
3053
+ "version": {
3054
+ "oneOf": [
3055
+ {
3056
+ "type": "object",
3057
+ "properties": {
3058
+ "name": {
3059
+ "type": "string"
3060
+ },
3061
+ "source": {
3062
+ "type": "string"
3063
+ },
3064
+ "_mod": {
3065
+ "$ref": "#/$defs/_modObject"
3066
+ }
3067
+ },
3068
+ "required": [
3069
+ "name",
3070
+ "source"
3071
+ ]
3072
+ },
3073
+ {
3074
+ "type": "object",
3075
+ "properties": {
3076
+ "_template": {
3077
+ "type": "object",
3078
+ "properties": {
3079
+ "name": {
3080
+ "type": "string"
3081
+ },
3082
+ "source": {
3083
+ "type": "string"
3084
+ },
3085
+ "_mod": {
3086
+ "$ref": "#/$defs/_modObject"
3087
+ }
3088
+ },
3089
+ "required": [
3090
+ "name",
3091
+ "source",
3092
+ "_mod"
3093
+ ]
3094
+ },
3095
+ "_implementations": {
3096
+ "type": "array",
3097
+ "items": {
3098
+ "type": "object",
3099
+ "properties": {
3100
+ "_variables": {
3101
+ "type": "object"
3102
+ }
3103
+ },
3104
+ "required": [
3105
+ "_variables"
3106
+ ]
3107
+ }
3108
+ }
3109
+ },
3110
+ "required": [
3111
+ "_template",
3112
+ "_implementations"
3113
+ ]
3114
+ }
3115
+ ]
3116
+ },
3117
+ "versionsArray": {
3118
+ "type": "array",
3119
+ "minItems": 1,
3120
+ "items": {
3121
+ "$ref": "#/$defs/version"
3122
+ }
3123
+ },
3124
+ "_modObject": {
3125
+ "type": "object",
3126
+ "patternProperties": {
3127
+ ".*": {
3128
+ "anyOf": [
3129
+ {
3130
+ "type": "string"
3131
+ },
3132
+ {
3133
+ "$ref": "#/$defs/copyModifier"
3134
+ },
3135
+ {
3136
+ "type": "array",
3137
+ "items": {
3138
+ "$ref": "#/$defs/copyModifier"
3139
+ }
3140
+ }
3141
+ ]
3142
+ }
3143
+ }
3144
+ },
3145
+ "srd": {
3146
+ "type": [
3147
+ "boolean",
3148
+ "string"
3149
+ ]
3150
+ },
3151
+ "basicRules": {
3152
+ "const": true
3153
+ },
3154
+ "fluffObject": {
3155
+ "type": "object",
3156
+ "properties": {
3157
+ "entries": {
3158
+ "type": "array",
3159
+ "items": {
3160
+ "$ref": "entry.json"
3161
+ }
3162
+ },
3163
+ "images": {
3164
+ "type": "array",
3165
+ "items": {
3166
+ "$ref": "entry.json#/$defs/entryImage"
3167
+ }
3168
+ }
3169
+ }
3170
+ },
3171
+ "_additionalSpellObject": {
3172
+ "type": "object",
3173
+ "patternProperties": {
3174
+ "^\\d+$": {
3175
+ "description": "Spells keyed by character/class level.",
3176
+ "oneOf": [
3177
+ {
3178
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3179
+ },
3180
+ {
3181
+ "$ref": "#/$defs/_additionalSpellLevelObject"
3182
+ }
3183
+ ]
3184
+ },
3185
+ "^s\\d+$": {
3186
+ "description": "Spells keyed by spell level, access to which is gated behind the character advancing to a point where they could cast those spells with e.g. a Spellcasting class feature (Mark spells from ERLW races)",
3187
+ "oneOf": [
3188
+ {
3189
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3190
+ },
3191
+ {
3192
+ "$ref": "#/$defs/_additionalSpellLevelObject"
3193
+ }
3194
+ ]
3195
+ }
3196
+ },
3197
+ "properties": {
3198
+ "_": {
3199
+ "description": "Spells gained when gaining a particular feature, regardless of level or caster level",
3200
+ "oneOf": [
3201
+ {
3202
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3203
+ },
3204
+ {
3205
+ "$ref": "#/$defs/_additionalSpellLevelObject"
3206
+ }
3207
+ ]
3208
+ }
3209
+ }
3210
+ },
3211
+ "_additionalSpellLevelObject": {
3212
+ "type": "object",
3213
+ "properties": {
3214
+ "rest": {
3215
+ "description": "Spells which recharge on short or long rest",
3216
+ "$ref": "#/$defs/_additionalSpellRechargeObject"
3217
+ },
3218
+ "daily": {
3219
+ "description": "Spells which recharge on long rest",
3220
+ "$ref": "#/$defs/_additionalSpellRechargeObject"
3221
+ },
3222
+ "will": {
3223
+ "description": "At-will spells",
3224
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3225
+ },
3226
+ "ritual": {
3227
+ "description": "Ritual-only spells",
3228
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3229
+ },
3230
+ "resource": {
3231
+ "description": "Spells which cost a specific resource to use (such as Ki), but otherwise have no restrictions",
3232
+ "$ref": "#/$defs/_additionalSpellRechargeObject"
3233
+ },
3234
+ "_": {
3235
+ "description": "Spells which do not fall into the above categories (i.e. have no specific recharge, and are simply known)",
3236
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3237
+ }
3238
+ },
3239
+ "additionalProperties": false
3240
+ },
3241
+ "_additionalSpellRechargeObject": {
3242
+ "type": "object",
3243
+ "properties": {
3244
+ "1": {
3245
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3246
+ },
3247
+ "2": {
3248
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3249
+ },
3250
+ "3": {
3251
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3252
+ },
3253
+ "4": {
3254
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3255
+ },
3256
+ "5": {
3257
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3258
+ },
3259
+ "6": {
3260
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3261
+ },
3262
+ "7": {
3263
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3264
+ },
3265
+ "8": {
3266
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3267
+ },
3268
+ "9": {
3269
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3270
+ },
3271
+ "9e": {
3272
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3273
+ },
3274
+ "8e": {
3275
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3276
+ },
3277
+ "7e": {
3278
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3279
+ },
3280
+ "6e": {
3281
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3282
+ },
3283
+ "5e": {
3284
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3285
+ },
3286
+ "4e": {
3287
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3288
+ },
3289
+ "3e": {
3290
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3291
+ },
3292
+ "2e": {
3293
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3294
+ },
3295
+ "1e": {
3296
+ "$ref": "#/$defs/_additionalSpellArrayOfStringOrFilterObject"
3297
+ }
3298
+ },
3299
+ "additionalProperties": false
3300
+ },
3301
+ "_additionalSpellArrayOfStringOrFilterObject": {
3302
+ "type": "array",
3303
+ "minItems": 1,
3304
+ "items": {
3305
+ "oneOf": [
3306
+ {
3307
+ "type": "string"
3308
+ },
3309
+ {
3310
+ "type": "object",
3311
+ "properties": {
3312
+ "all": {
3313
+ "type": "string",
3314
+ "description": "A range of spells to be added, formatted similarly to the options in a {@filter ...} tag. \nFor example: \"level=0|class=Wizard\""
3315
+ }
3316
+ },
3317
+ "required": [
3318
+ "all"
3319
+ ],
3320
+ "additionalProperties": false
3321
+ },
3322
+ {
3323
+ "type": "object",
3324
+ "properties": {
3325
+ "choose": {
3326
+ "type": "string",
3327
+ "description": "A range of spells to be chosen from, formatted similarly to the options in a {@filter ...} tag. \nFor example: \"level=0|class=Wizard\""
3328
+ },
3329
+ "count": {
3330
+ "type": "integer"
3331
+ }
3332
+ },
3333
+ "required": [
3334
+ "choose"
3335
+ ],
3336
+ "additionalProperties": false
3337
+ },
3338
+ {
3339
+ "type": "object",
3340
+ "properties": {
3341
+ "choose": {
3342
+ "type": "object",
3343
+ "properties": {
3344
+ "from": {
3345
+ "description": "An array of spell UIDs to be chosen from.",
3346
+ "type": "array",
3347
+ "items": {
3348
+ "type": "string"
3349
+ },
3350
+ "uniqueItems": true
3351
+ },
3352
+ "count": {
3353
+ "type": "integer"
3354
+ }
3355
+ },
3356
+ "additionalProperties": false
3357
+ }
3358
+ },
3359
+ "required": [
3360
+ "choose"
3361
+ ],
3362
+ "additionalProperties": false
3363
+ }
3364
+ ]
3365
+ }
3366
+ },
3367
+ "additionalSpellsArray": {
3368
+ "description": "A collection of additional spells which a feature grants.\nThis array enables import functionality for VTTs, and should be used in addition to \"classSpells\"/\"subclassSpells\"/\"subSubclassSpells\" blocks which enable references on the site.",
3369
+ "type": "array",
3370
+ "minItems": 1,
3371
+ "items": {
3372
+ "type": "object",
3373
+ "properties": {
3374
+ "name": {
3375
+ "description": "Optional display name for the group",
3376
+ "type": "string"
3377
+ },
3378
+ "ability": {
3379
+ "description": "Optionally specify the ability score used for e.g. racial spellcasting",
3380
+ "oneOf": [
3381
+ {
3382
+ "type": "object",
3383
+ "properties": {
3384
+ "choose": {
3385
+ "type": "array",
3386
+ "items": {
3387
+ "type": "string",
3388
+ "enum": [
3389
+ "str",
3390
+ "dex",
3391
+ "con",
3392
+ "int",
3393
+ "wis",
3394
+ "cha"
3395
+ ]
3396
+ },
3397
+ "uniqueItems": true
3398
+ }
3399
+ },
3400
+ "required": [
3401
+ "choose"
3402
+ ],
3403
+ "additionalProperties": false
3404
+ },
3405
+ {
3406
+ "description": "\"inherit\" is used for special cases, where the ability score matches a choice the player made when taking the feature",
3407
+ "type": "string",
3408
+ "enum": [
3409
+ "str",
3410
+ "dex",
3411
+ "con",
3412
+ "int",
3413
+ "wis",
3414
+ "cha",
3415
+ "inherit"
3416
+ ]
3417
+ }
3418
+ ]
3419
+ },
3420
+ "resourceName": {
3421
+ "description": "Optional resource name for resource-cast spells in this group",
3422
+ "type": "string"
3423
+ },
3424
+ "innate": {
3425
+ "description": "Spells which can be innately cast, without expending normal spell resources",
3426
+ "$ref": "#/$defs/_additionalSpellObject"
3427
+ },
3428
+ "known": {
3429
+ "description": "Spells which are always known",
3430
+ "$ref": "#/$defs/_additionalSpellObject"
3431
+ },
3432
+ "prepared": {
3433
+ "description": "Spells which are always prepared",
3434
+ "$ref": "#/$defs/_additionalSpellObject"
3435
+ },
3436
+ "expanded": {
3437
+ "description": "Expansions to a class' default spell list, from which spells can be chosen (e.g. Warlock Patron spells)",
3438
+ "$ref": "#/$defs/_additionalSpellObject"
3439
+ }
3440
+ },
3441
+ "additionalProperties": false,
3442
+ "minProperties": 1
3443
+ }
3444
+ },
3445
+ "startingEquipment": {
3446
+ "description": "Optional well-structured data version of the \"default\" property, for use in applications that require it.",
3447
+ "type": "array",
3448
+ "items": {
3449
+ "type": "object",
3450
+ "patternProperties": {
3451
+ ".*": {
3452
+ "type": "array",
3453
+ "items": {
3454
+ "oneOf": [
3455
+ {
3456
+ "description": "An item UID, e.g. \"longsword|phb\"",
3457
+ "type": "string"
3458
+ },
3459
+ {
3460
+ "type": "object",
3461
+ "properties": {
3462
+ "item": {
3463
+ "description": "An item UID, e.g. \"longsword|phb\"",
3464
+ "type": "string"
3465
+ },
3466
+ "quantity": {
3467
+ "type": "integer"
3468
+ },
3469
+ "displayName": {
3470
+ "description": "The display name this item should be given",
3471
+ "type": "string"
3472
+ },
3473
+ "containsValue": {
3474
+ "description": "The value (in copper pieces) that this piece of equipment contains in coins.",
3475
+ "type": "integer"
3476
+ }
3477
+ },
3478
+ "required": [
3479
+ "item"
3480
+ ],
3481
+ "additionalProperties": false
3482
+ },
3483
+ {
3484
+ "type": "object",
3485
+ "properties": {
3486
+ "equipmentType": {
3487
+ "type": "string",
3488
+ "enum": [
3489
+ "weapon",
3490
+ "weaponSimple",
3491
+ "weaponSimpleMelee",
3492
+ "weaponMartial",
3493
+ "weaponMartialMelee",
3494
+ "instrumentMusical",
3495
+ "armorLight",
3496
+ "armorMedium",
3497
+ "armorHeavy",
3498
+ "weaponMelee",
3499
+ "weaponRanged",
3500
+ "focusSpellcasting",
3501
+ "setGaming",
3502
+ "toolArtisan"
3503
+ ]
3504
+ },
3505
+ "quantity": {
3506
+ "type": "integer"
3507
+ }
3508
+ },
3509
+ "required": [
3510
+ "equipmentType"
3511
+ ],
3512
+ "additionalProperties": false
3513
+ },
3514
+ {
3515
+ "type": "object",
3516
+ "properties": {
3517
+ "value": {
3518
+ "description": "A value in copper pieces",
3519
+ "type": "integer"
3520
+ }
3521
+ },
3522
+ "required": [
3523
+ "value"
3524
+ ],
3525
+ "additionalProperties": false
3526
+ },
3527
+ {
3528
+ "type": "object",
3529
+ "properties": {
3530
+ "special": {
3531
+ "description": "The name of a non-statted item, such as \"wooden stake\"",
3532
+ "type": "string"
3533
+ },
3534
+ "quantity": {
3535
+ "type": "integer"
3536
+ },
3537
+ "worthValue": {
3538
+ "description": "The worth (in copper pieces) of this piece of equipment.",
3539
+ "type": "integer"
3540
+ },
3541
+ "containsValue": {
3542
+ "description": "The value (in copper pieces) that this piece of equipment contains in coins.",
3543
+ "type": "integer"
3544
+ }
3545
+ },
3546
+ "required": [
3547
+ "special"
3548
+ ],
3549
+ "additionalProperties": false
3550
+ }
3551
+ ]
3552
+ }
3553
+ }
3554
+ }
3555
+ }
3556
+ },
3557
+ "reqAttuneTags": {
3558
+ "type": "array",
3559
+ "minItems": 1,
3560
+ "items": {
3561
+ "type": "object",
3562
+ "properties": {
3563
+ "background": {
3564
+ "type": "string"
3565
+ },
3566
+ "race": {
3567
+ "type": "string"
3568
+ },
3569
+ "creatureType": {
3570
+ "$ref": "#/$defs/creatureType"
3571
+ },
3572
+ "size": {
3573
+ "$ref": "#/$defs/size"
3574
+ },
3575
+ "class": {
3576
+ "type": "string"
3577
+ },
3578
+ "languageProficiency": {
3579
+ "$ref": "#/$defs/languageNameLower"
3580
+ },
3581
+ "skillProficiency": {
3582
+ "$ref": "#/$defs/skillNameLower"
3583
+ },
3584
+ "alignment": {
3585
+ "type": "array",
3586
+ "items": {
3587
+ "$ref": "#/$defs/alignment"
3588
+ }
3589
+ },
3590
+ "str": {
3591
+ "type": "integer"
3592
+ },
3593
+ "dex": {
3594
+ "type": "integer"
3595
+ },
3596
+ "con": {
3597
+ "type": "integer"
3598
+ },
3599
+ "int": {
3600
+ "type": "integer"
3601
+ },
3602
+ "wis": {
3603
+ "type": "integer"
3604
+ },
3605
+ "cha": {
3606
+ "type": "integer"
3607
+ },
3608
+ "spellcasting": {
3609
+ "const": true
3610
+ },
3611
+ "psionics": {
3612
+ "const": true
3613
+ }
3614
+ }
3615
+ }
3616
+ },
3617
+ "adventureBookData": {
3618
+ "type": "array",
3619
+ "items": {
3620
+ "$ref": "entry.json"
3621
+ },
3622
+ "minItems": 1
3623
+ },
3624
+ "optionalfeatureProgression": {
3625
+ "type": "array",
3626
+ "minItems": 1,
3627
+ "items": {
3628
+ "type": "object",
3629
+ "properties": {
3630
+ "name": {
3631
+ "type": "string"
3632
+ },
3633
+ "featureType": {
3634
+ "type": "array",
3635
+ "items": {
3636
+ "$ref": "#/$defs/dataOptionalfeatureType"
3637
+ },
3638
+ "uniqueItems": true
3639
+ },
3640
+ "progression": {
3641
+ "oneOf": [
3642
+ {
3643
+ "type": "array",
3644
+ "description": "Features gained when the total count of features increases according to level.",
3645
+ "items": {
3646
+ "type": "integer"
3647
+ },
3648
+ "minItems": 20,
3649
+ "maxItems": 20
3650
+ },
3651
+ {
3652
+ "type": "object",
3653
+ "description": "Features gained at the exact levels specified.",
3654
+ "patternProperties": {
3655
+ "^\\d+$": {
3656
+ "type": "integer"
3657
+ }
3658
+ },
3659
+ "additionalProperties": false
3660
+ },
3661
+ {
3662
+ "type": "object",
3663
+ "description": "Features gained at the level this feature is gained.",
3664
+ "properties": {
3665
+ "*": {
3666
+ "type": "integer"
3667
+ }
3668
+ },
3669
+ "additionalProperties": false
3670
+ }
3671
+ ]
3672
+ },
3673
+ "required": {
3674
+ "oneOf": [
3675
+ {
3676
+ "type": "array",
3677
+ "items": {
3678
+ "type": "array",
3679
+ "items": {
3680
+ "type": "string"
3681
+ }
3682
+ },
3683
+ "minItems": 20,
3684
+ "maxItems": 20
3685
+ },
3686
+ {
3687
+ "type": "object",
3688
+ "patternProperties": {
3689
+ "^\\d+$": {
3690
+ "type": "array",
3691
+ "items": {
3692
+ "type": "string"
3693
+ }
3694
+ }
3695
+ },
3696
+ "additionalProperties": false
3697
+ }
3698
+ ]
3699
+ }
3700
+ },
3701
+ "required": [
3702
+ "name",
3703
+ "featureType",
3704
+ "progression"
3705
+ ]
3706
+ }
3707
+ },
3708
+ "foundrySystemObject": {
3709
+ "type": "object"
3710
+ },
3711
+ "foundryFlagsObject": {
3712
+ "type": "object"
3713
+ },
3714
+ "foundryAdvancementObject": {
3715
+ "type": "object"
3716
+ },
3717
+ "foundryAdvancementsArray": {
3718
+ "type": "array",
3719
+ "minItems": 1,
3720
+ "items": {
3721
+ "$ref": "#/$defs/foundryAdvancementObject"
3722
+ },
3723
+ "uniqueItems": true
3724
+ },
3725
+ "foundryImg": {
3726
+ "type": "string"
3727
+ },
3728
+ "foundrySubEntitiesObject": {
3729
+ "description": "A 5etools-data-like object of additional entities to import.",
3730
+ "type": "object"
3731
+ },
3732
+ "foundryEffectObject": {
3733
+ "type": "object",
3734
+ "properties": {
3735
+ "name": {
3736
+ "type": "string"
3737
+ },
3738
+ "changes": {
3739
+ "type": "array",
3740
+ "items": {
3741
+ "type": "object",
3742
+ "properties": {
3743
+ "key": {
3744
+ "type": "string"
3745
+ },
3746
+ "mode": {
3747
+ "type": [
3748
+ "string",
3749
+ "integer"
3750
+ ]
3751
+ },
3752
+ "value": true,
3753
+ "priority": {
3754
+ "type": [
3755
+ "string",
3756
+ "integer"
3757
+ ]
3758
+ }
3759
+ },
3760
+ "required": [
3761
+ "key",
3762
+ "mode",
3763
+ "value"
3764
+ ],
3765
+ "additionalProperties": false
3766
+ }
3767
+ },
3768
+ "flags": {
3769
+ "type": "object"
3770
+ },
3771
+ "duration": {
3772
+ "type": "object"
3773
+ },
3774
+ "disabled": {
3775
+ "const": true
3776
+ },
3777
+ "transfer": {
3778
+ "const": true
3779
+ }
3780
+ },
3781
+ "required": [
3782
+ "changes"
3783
+ ],
3784
+ "additionalProperties": false
3785
+ },
3786
+ "foundryEffectsArray": {
3787
+ "type": "array",
3788
+ "items": {
3789
+ "$ref": "#/$defs/foundryEffectObject"
3790
+ },
3791
+ "minItems": 1,
3792
+ "uniqueItems": true
3793
+ },
3794
+ "foundrySideDataGenericArray": {
3795
+ "type": "array",
3796
+ "minItems": 1,
3797
+ "uniqueItems": true,
3798
+ "items": {
3799
+ "type": "object",
3800
+ "properties": {
3801
+ "name": {
3802
+ "type": "string"
3803
+ },
3804
+ "source": {
3805
+ "type": "string"
3806
+ },
3807
+ "system": {
3808
+ "$ref": "#/$defs/foundrySystemObject"
3809
+ },
3810
+ "effects": {
3811
+ "type": "array",
3812
+ "items": {
3813
+ "$ref": "#/$defs/foundryEffectObject"
3814
+ }
3815
+ }
3816
+ },
3817
+ "required": [
3818
+ "name",
3819
+ "source"
3820
+ ],
3821
+ "additionalProperties": false
3822
+ }
3823
+ },
3824
+ "foundrySideDataGenericFeatureArray": {
3825
+ "type": "array",
3826
+ "minItems": 1,
3827
+ "uniqueItems": true,
3828
+ "items": {
3829
+ "type": "object",
3830
+ "properties": {
3831
+ "name": {
3832
+ "type": "string"
3833
+ },
3834
+ "source": {
3835
+ "type": "string"
3836
+ },
3837
+ "entries": {
3838
+ "type": "array",
3839
+ "items": {
3840
+ "$ref": "entry.json"
3841
+ }
3842
+ },
3843
+ "isIgnored": {
3844
+ "const": true
3845
+ },
3846
+ "system": {
3847
+ "$ref": "#/$defs/foundrySystemObject"
3848
+ },
3849
+ "actorDataMod": {
3850
+ "type": "object"
3851
+ },
3852
+ "effects": {
3853
+ "type": "array",
3854
+ "items": {
3855
+ "$ref": "#/$defs/foundryEffectObject"
3856
+ }
3857
+ }
3858
+ },
3859
+ "required": [
3860
+ "name",
3861
+ "source"
3862
+ ],
3863
+ "additionalProperties": false
3864
+ }
3865
+ }
3866
+ }
3867
+ }