5etools-utils 0.8.36 → 0.9.0

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