optolith-database-schema 0.8.1 → 0.10.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 (106) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/config.d.ts +2 -0
  3. package/lib/config.js +2 -0
  4. package/lib/main.js +8 -3
  5. package/lib/types/Advantage.d.ts +13 -2
  6. package/lib/types/Disadvantage.d.ts +12 -2
  7. package/lib/types/Profession.d.ts +12 -2
  8. package/lib/types/Talisman.d.ts +6 -6
  9. package/lib/types/_Activatable.d.ts +113 -4
  10. package/lib/types/_Activatable.js +4 -35
  11. package/lib/types/_ActivatableSelectOptionCategory.d.ts +30 -0
  12. package/lib/types/_Identifier.d.ts +9 -0
  13. package/lib/types/_IdentifierGroup.d.ts +2 -2
  14. package/lib/types/equipment/item/Poison.d.ts +21 -1
  15. package/lib/types/equipment/item/Poison.js +1 -0
  16. package/lib/types/equipment/item/Weapon.d.ts +4 -3
  17. package/lib/types/equipment/item/sub/ArmorType.d.ts +3 -3
  18. package/lib/types/magicalActions/MagicalRune.d.ts +82 -16
  19. package/lib/types/prerequisites/DisplayOption.d.ts +14 -0
  20. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +23 -1
  21. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.d.ts +5 -0
  22. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.js +1 -0
  23. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.d.ts +67 -0
  24. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +6 -0
  25. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +0 -55
  26. package/lib/types/prerequisites/single/RatedSumPrerequisite.d.ts +19 -0
  27. package/lib/types/prerequisites/single/RatedSumPrerequisite.js +1 -0
  28. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.d.ts +11 -0
  29. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.js +5 -0
  30. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +29 -0
  31. package/lib/types/prerequisites/single/TextPrerequisite.js +5 -0
  32. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -0
  33. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +7 -2
  34. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +6 -2
  35. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +5 -0
  36. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +12 -2
  37. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +7 -2
  38. package/lib/types/specialAbility/MagicalSign.d.ts +38 -0
  39. package/lib/types/specialAbility/MagicalSign.js +5 -0
  40. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +11 -2
  41. package/lib/types/specialAbility/MagicalTradition.d.ts +2 -2
  42. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +6 -0
  43. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +5 -0
  44. package/lib/types/specialAbility/VampiricGift.d.ts +7 -2
  45. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +2 -2
  46. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +2 -2
  47. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +2 -2
  48. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +2 -2
  49. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +2 -2
  50. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +3 -3
  51. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +2 -2
  52. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +2 -2
  53. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +2 -2
  54. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +2 -2
  55. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +2 -2
  56. package/lib/types/traditionArtifacts/SickleRitual.d.ts +2 -2
  57. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +7 -2
  58. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +13 -3
  59. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +3 -3
  60. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +2 -2
  61. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +2 -7
  62. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +4 -3
  63. package/lib/validation/schema.js +2 -2
  64. package/package.json +1 -1
  65. package/schema/Advantage.schema.json +11 -0
  66. package/schema/Disadvantage.schema.json +8 -0
  67. package/schema/Profession.schema.json +8 -0
  68. package/schema/Talisman.schema.json +2 -4
  69. package/schema/_Activatable.schema.json +166 -0
  70. package/schema/_ActivatableSelectOptionCategory.schema.json +141 -0
  71. package/schema/_Identifier.schema.json +18 -0
  72. package/schema/_IdentifierGroup.schema.json +6 -0
  73. package/schema/equipment/item/Poison.schema.json +55 -1
  74. package/schema/equipment/item/Weapon.schema.json +5 -1
  75. package/schema/equipment/item/sub/ArmorType.schema.json +1 -2
  76. package/schema/magicalActions/MagicalRune.schema.json +213 -21
  77. package/schema/prerequisites/DisplayOption.schema.json +4 -0
  78. package/schema/prerequisites/PrerequisiteGroups.schema.json +98 -2
  79. package/schema/prerequisites/single/AncestorBloodPrerequisite.schema.json +14 -0
  80. package/schema/prerequisites/single/RatedMinimumNumberPrerequisite.schema.json +166 -0
  81. package/schema/prerequisites/single/RatedPrerequisite.schema.json +0 -125
  82. package/schema/prerequisites/single/RatedSumPrerequisite.schema.json +33 -0
  83. package/schema/prerequisites/single/SexualCharacteristicPrerequisite.schema.json +26 -0
  84. package/schema/prerequisites/single/TextPrerequisite.schema.json +14 -0
  85. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +8 -0
  86. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +4 -0
  87. package/schema/specialAbility/CombatSpecialAbility.schema.json +4 -0
  88. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +42 -27
  89. package/schema/specialAbility/FatePointSpecialAbility.schema.json +4 -0
  90. package/schema/specialAbility/GeneralSpecialAbility.schema.json +8 -0
  91. package/schema/specialAbility/KarmaSpecialAbility.schema.json +4 -0
  92. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +42 -27
  93. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +42 -27
  94. package/schema/specialAbility/MagicalSign.schema.json +72 -0
  95. package/schema/specialAbility/MagicalSpecialAbility.schema.json +8 -0
  96. package/schema/specialAbility/MagicalTradition.schema.json +0 -2
  97. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +6 -0
  98. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +4 -0
  99. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +42 -27
  100. package/schema/specialAbility/VampiricGift.schema.json +4 -0
  101. package/schema/traditionArtifacts/DaggerRitual.schema.json +0 -1
  102. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +4 -0
  103. package/schema/traditionArtifacts/StaffEnchantment.schema.json +8 -1
  104. package/schema/traditionArtifacts/ToyEnchantment.schema.json +0 -1
  105. package/schema/traditionArtifacts/WandEnchantment.schema.json +1 -9
  106. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +8 -1
@@ -67,6 +67,10 @@
67
67
  "name_in_library": {
68
68
  "$ref": "./_Activatable.schema.json#/$defs/NameInLibrary"
69
69
  },
70
+ "input": {
71
+ "description": "A string that is used as a label for an input field.",
72
+ "$ref": "./_Activatable.schema.json#/$defs/Input"
73
+ },
70
74
  "rules": {
71
75
  "$ref": "./_Activatable.schema.json#/$defs/Rules"
72
76
  },
@@ -75,6 +79,10 @@
75
79
  "type": "string",
76
80
  "minLength": 1
77
81
  },
82
+ "ap_value_append": {
83
+ "description": "A string that gets appended to the default AP Value text with a preceding\nspace. This always happens if present, even if the generated AP Value text\nis replaced.",
84
+ "$ref": "./_Activatable.schema.json#/$defs/AdventurePointsValueAppend"
85
+ },
78
86
  "errata": {
79
87
  "$ref": "./source/_Erratum.schema.json#/$defs/Errata"
80
88
  }
@@ -509,6 +509,14 @@
509
509
  "name": {
510
510
  "description": "Name of the profession variant.",
511
511
  "$ref": "#/$defs/ProfessionName"
512
+ },
513
+ "full_text": {
514
+ "description": "A text that replaces the generated text for the profession variant.",
515
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
516
+ },
517
+ "concluding_text": {
518
+ "description": "A text that is appended to the generated text for the profession variant.\n\nHas no effect when `full_text` is set.",
519
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
512
520
  }
513
521
  },
514
522
  "required": [
@@ -21,11 +21,11 @@
21
21
  "minItems": 1
22
22
  },
23
23
  "type": {
24
- "description": "The talisman type.",
24
+ "description": "The talisman type, if any.",
25
25
  "$ref": "#/$defs/TalismanType"
26
26
  },
27
27
  "ap_value": {
28
- "description": "The AP value for the required trade secret.",
28
+ "description": "The AP value for the required trade secret, if possible.",
29
29
  "type": "integer",
30
30
  "minimum": 5,
31
31
  "multipleOf": 5
@@ -48,8 +48,6 @@
48
48
  "required": [
49
49
  "id",
50
50
  "tradition",
51
- "type",
52
- "ap_value",
53
51
  "src",
54
52
  "translations"
55
53
  ],
@@ -123,6 +123,11 @@
123
123
  "prerequisites": {
124
124
  "$ref": "./_Prerequisite.schema.json#/$defs/GeneralPrerequisites"
125
125
  },
126
+ "binding_cost": {
127
+ "description": "Specific binding cost for the select option. Only has an effect if the\nassociated entry supports binding costs.",
128
+ "type": "integer",
129
+ "minimum": 0
130
+ },
126
131
  "ap_value": {
127
132
  "description": "Specific AP cost for the select option.",
128
133
  "type": "integer",
@@ -202,6 +207,11 @@
202
207
  "prerequisites": {
203
208
  "$ref": "./_Prerequisite.schema.json#/$defs/GeneralPrerequisites"
204
209
  },
210
+ "binding_cost": {
211
+ "description": "Specific binding cost for the select option. Only has an effect if the\nassociated entry supports binding costs.",
212
+ "type": "integer",
213
+ "minimum": 0
214
+ },
205
215
  "ap_value": {
206
216
  "description": "Specific AP cost for the select option.",
207
217
  "type": "integer",
@@ -248,6 +258,11 @@
248
258
  "prerequisites": {
249
259
  "$ref": "./_Prerequisite.schema.json#/$defs/GeneralPrerequisites"
250
260
  },
261
+ "binding_cost": {
262
+ "description": "Specific binding cost for the select option. Only has an effect if the\nassociated entry supports binding costs.",
263
+ "type": "integer",
264
+ "minimum": 0
265
+ },
251
266
  "ap_value": {
252
267
  "description": "Specific AP cost for the select option.",
253
268
  "type": "integer",
@@ -1192,6 +1207,10 @@
1192
1207
  "IndefiniteArcaneEnergyCost": {
1193
1208
  "type": "object",
1194
1209
  "properties": {
1210
+ "modifier": {
1211
+ "description": "Specified if the indefinite AP cost description needs to be modified by a\ncertain value.",
1212
+ "$ref": "#/$defs/IndefiniteArcaneEnergyCostModifier"
1213
+ },
1195
1214
  "translations": {
1196
1215
  "description": "All translations for the entry, identified by IETF language tag (BCP47).",
1197
1216
  "type": "object",
@@ -1209,6 +1228,30 @@
1209
1228
  ],
1210
1229
  "additionalProperties": false
1211
1230
  },
1231
+ "IndefiniteArcaneEnergyCostModifier": {
1232
+ "type": "object",
1233
+ "properties": {
1234
+ "arithmetic": {
1235
+ "description": "The arithmetic how to apply the `value` to the `base`.",
1236
+ "$ref": "#/$defs/IndefiniteArcaneEnergyCostModifierArithmetic"
1237
+ },
1238
+ "value": {
1239
+ "description": "The value that is applied to the `base` using the defined `arithmetic`.",
1240
+ "type": "integer",
1241
+ "minimum": 1
1242
+ }
1243
+ },
1244
+ "required": [
1245
+ "arithmetic",
1246
+ "value"
1247
+ ],
1248
+ "additionalProperties": false
1249
+ },
1250
+ "IndefiniteArcaneEnergyCostModifierArithmetic": {
1251
+ "enum": [
1252
+ "Add"
1253
+ ]
1254
+ },
1212
1255
  "IndefiniteArcaneEnergyCostTranslation": {
1213
1256
  "type": "object",
1214
1257
  "properties": {
@@ -1399,6 +1442,22 @@
1399
1442
  "map"
1400
1443
  ],
1401
1444
  "additionalProperties": false
1445
+ },
1446
+ {
1447
+ "type": "object",
1448
+ "properties": {
1449
+ "tag": {
1450
+ "const": "DerivedFromSelection"
1451
+ },
1452
+ "derived_from_selection": {
1453
+ "$ref": "#/$defs/VolumeDerivedFromSelection"
1454
+ }
1455
+ },
1456
+ "required": [
1457
+ "tag",
1458
+ "derived_from_selection"
1459
+ ],
1460
+ "additionalProperties": false
1402
1461
  }
1403
1462
  ]
1404
1463
  },
@@ -1573,6 +1632,20 @@
1573
1632
  ],
1574
1633
  "additionalProperties": false
1575
1634
  },
1635
+ "VolumeDerivedFromSelection": {
1636
+ "type": "object",
1637
+ "properties": {
1638
+ "fallback": {
1639
+ "description": "The volume for the selection if it does not define a specific one.",
1640
+ "type": "integer",
1641
+ "minimum": 0
1642
+ }
1643
+ },
1644
+ "required": [
1645
+ "fallback"
1646
+ ],
1647
+ "additionalProperties": false
1648
+ },
1576
1649
  "BindingCost": {
1577
1650
  "description": "The binding cost for an enchantment.",
1578
1651
  "oneOf": [
@@ -1623,6 +1696,22 @@
1623
1696
  "map"
1624
1697
  ],
1625
1698
  "additionalProperties": false
1699
+ },
1700
+ {
1701
+ "type": "object",
1702
+ "properties": {
1703
+ "tag": {
1704
+ "const": "DerivedFromSelection"
1705
+ },
1706
+ "derived_from_selection": {
1707
+ "$ref": "#/$defs/BindingCostDerivedFromSelection"
1708
+ }
1709
+ },
1710
+ "required": [
1711
+ "tag",
1712
+ "derived_from_selection"
1713
+ ],
1714
+ "additionalProperties": false
1626
1715
  }
1627
1716
  ]
1628
1717
  },
@@ -1745,6 +1834,20 @@
1745
1834
  ],
1746
1835
  "additionalProperties": false
1747
1836
  },
1837
+ "BindingCostDerivedFromSelection": {
1838
+ "type": "object",
1839
+ "properties": {
1840
+ "fallback": {
1841
+ "description": "The binding cost for the selection if it does not define a specific one.",
1842
+ "type": "integer",
1843
+ "minimum": 0
1844
+ }
1845
+ },
1846
+ "required": [
1847
+ "fallback"
1848
+ ],
1849
+ "additionalProperties": false
1850
+ },
1748
1851
  "Property": {
1749
1852
  "description": "The magic property's identifier. `DependingOnProperty` can only be used if\nthe special ability has an option to select a property.",
1750
1853
  "oneOf": [
@@ -1795,6 +1898,10 @@
1795
1898
  "AdvancedSpecialAbilityDerivedExternalEntryOptionId": {
1796
1899
  "$ref": "./_Identifier.schema.json#/$defs/PatronIdentifier"
1797
1900
  },
1901
+ "PrerequisitesReplacement": {
1902
+ "description": "The prerequisites text. It is only used if the text cannot be generated from\nthe given information.",
1903
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
1904
+ },
1798
1905
  "ApplicableCombatTechniques": {
1799
1906
  "oneOf": [
1800
1907
  {
@@ -2537,6 +2644,22 @@
2537
2644
  ],
2538
2645
  "additionalProperties": false
2539
2646
  },
2647
+ {
2648
+ "type": "object",
2649
+ "properties": {
2650
+ "tag": {
2651
+ "const": "DerivedFromSelection"
2652
+ },
2653
+ "derived_from_selection": {
2654
+ "$ref": "#/$defs/AdventurePointsDerivedFromSelection"
2655
+ }
2656
+ },
2657
+ "required": [
2658
+ "tag",
2659
+ "derived_from_selection"
2660
+ ],
2661
+ "additionalProperties": false
2662
+ },
2540
2663
  {
2541
2664
  "type": "object",
2542
2665
  "properties": {
@@ -2570,10 +2693,53 @@
2570
2693
  },
2571
2694
  "minItems": 2
2572
2695
  },
2696
+ "AdventurePointsDerivedFromSelection": {
2697
+ "description": "The adventure points value is derived from the selection of the special\nability. Its display value may be able to be derived from the given\ninformation for the select options. If that is not the case or the generated\ntext would not match the original one, a replacement text can be provided.",
2698
+ "type": "object",
2699
+ "properties": {
2700
+ "translations": {
2701
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
2702
+ "type": "object",
2703
+ "patternProperties": {
2704
+ "^[a-z]{2}-[A-Z]{2}$": {
2705
+ "$ref": "#/$defs/AdventurePointsDerivedFromSelectionTranslation"
2706
+ }
2707
+ },
2708
+ "minProperties": 1,
2709
+ "additionalProperties": false
2710
+ }
2711
+ },
2712
+ "required": [],
2713
+ "additionalProperties": false
2714
+ },
2715
+ "AdventurePointsDerivedFromSelectionTranslation": {
2716
+ "type": "object",
2717
+ "properties": {
2718
+ "replacement": {
2719
+ "description": "A replacement for the generated text if it would not match the original\none.",
2720
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
2721
+ }
2722
+ },
2723
+ "required": [],
2724
+ "minProperties": 1,
2725
+ "additionalProperties": false
2726
+ },
2573
2727
  "AdventurePointsSingleValue": {
2574
2728
  "description": "A single adventure points value.",
2575
2729
  "type": "integer",
2576
2730
  "minimum": 0
2731
+ },
2732
+ "Input": {
2733
+ "description": "A string that is used as a label for an input field.",
2734
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
2735
+ },
2736
+ "AdventurePointsValueReplacement": {
2737
+ "description": "The AP value. It is only used if the text cannot be generated from the given\ninformation.",
2738
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
2739
+ },
2740
+ "AdventurePointsValueAppend": {
2741
+ "description": "A string that gets appended to the default AP Value text with a preceding\nspace. This always happens if present, even if the generated AP Value text is\nreplaced.",
2742
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
2577
2743
  }
2578
2744
  }
2579
2745
  }
@@ -194,6 +194,25 @@
194
194
  ],
195
195
  "additionalProperties": false
196
196
  },
197
+ {
198
+ "type": "object",
199
+ "properties": {
200
+ "tag": {
201
+ "const": "RacesAndCultures"
202
+ },
203
+ "races_and_cultures": {
204
+ "type": "object",
205
+ "properties": {},
206
+ "required": [],
207
+ "additionalProperties": false
208
+ }
209
+ },
210
+ "required": [
211
+ "tag",
212
+ "races_and_cultures"
213
+ ],
214
+ "additionalProperties": false
215
+ },
197
216
  {
198
217
  "type": "object",
199
218
  "properties": {
@@ -337,6 +356,22 @@
337
356
  "combat_techniques"
338
357
  ],
339
358
  "additionalProperties": false
359
+ },
360
+ {
361
+ "type": "object",
362
+ "properties": {
363
+ "tag": {
364
+ "const": "TargetCategories"
365
+ },
366
+ "target_categories": {
367
+ "$ref": "#/$defs/TargetCategoriesSelectOptionCategory"
368
+ }
369
+ },
370
+ "required": [
371
+ "tag",
372
+ "target_categories"
373
+ ],
374
+ "additionalProperties": false
340
375
  }
341
376
  ]
342
377
  },
@@ -832,6 +867,77 @@
832
867
  "$ref": "#/$defs/SkillSelectOptionCategoryPrerequisite"
833
868
  },
834
869
  "minItems": 1
870
+ },
871
+ "ap_value": {
872
+ "description": "Generate AP values for each entry.",
873
+ "oneOf": [
874
+ {
875
+ "type": "object",
876
+ "properties": {
877
+ "tag": {
878
+ "const": "DerivedFromImprovementCost"
879
+ },
880
+ "derived_from_improvement_cost": {
881
+ "$ref": "#/$defs/DeriveAdventurePointsValueFromImprovementCost"
882
+ }
883
+ },
884
+ "required": [
885
+ "tag",
886
+ "derived_from_improvement_cost"
887
+ ],
888
+ "additionalProperties": false
889
+ },
890
+ {
891
+ "type": "object",
892
+ "properties": {
893
+ "tag": {
894
+ "const": "Fixed"
895
+ },
896
+ "fixed": {
897
+ "type": "object",
898
+ "properties": {
899
+ "map": {
900
+ "description": "A mapping of skill identifiers to their specific AP values.",
901
+ "type": "array",
902
+ "items": {
903
+ "type": "object",
904
+ "properties": {
905
+ "id": {
906
+ "$ref": "./_IdentifierGroup.schema.json#/$defs/CombatTechniqueIdentifier"
907
+ },
908
+ "ap_value": {
909
+ "description": "The AP value for the specified entry.",
910
+ "type": "integer",
911
+ "minimum": 1
912
+ }
913
+ },
914
+ "required": [
915
+ "id",
916
+ "ap_value"
917
+ ],
918
+ "additionalProperties": false
919
+ }
920
+ },
921
+ "default": {
922
+ "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
923
+ "type": "integer",
924
+ "minimum": 1
925
+ }
926
+ },
927
+ "required": [
928
+ "map",
929
+ "default"
930
+ ],
931
+ "additionalProperties": false
932
+ }
933
+ },
934
+ "required": [
935
+ "tag",
936
+ "fixed"
937
+ ],
938
+ "additionalProperties": false
939
+ }
940
+ ]
835
941
  }
836
942
  },
837
943
  "required": [],
@@ -1167,6 +1273,41 @@
1167
1273
  },
1168
1274
  "required": [],
1169
1275
  "additionalProperties": false
1276
+ },
1277
+ "TargetCategoriesSelectOptionCategory": {
1278
+ "type": "object",
1279
+ "properties": {
1280
+ "list": {
1281
+ "description": "A list of combat technique categories.",
1282
+ "type": "array",
1283
+ "items": {
1284
+ "$ref": "#/$defs/SpecificTargetCategory"
1285
+ },
1286
+ "minItems": 1
1287
+ }
1288
+ },
1289
+ "required": [
1290
+ "list"
1291
+ ],
1292
+ "additionalProperties": false
1293
+ },
1294
+ "SpecificTargetCategory": {
1295
+ "type": "object",
1296
+ "properties": {
1297
+ "id": {
1298
+ "description": "The target category’s identifier.",
1299
+ "$ref": "./_Identifier.schema.json#/$defs/TargetCategoryIdentifier"
1300
+ },
1301
+ "volume": {
1302
+ "description": "The volume for this specific selection.",
1303
+ "type": "integer",
1304
+ "minimum": 0
1305
+ }
1306
+ },
1307
+ "required": [
1308
+ "id"
1309
+ ],
1310
+ "additionalProperties": false
1170
1311
  }
1171
1312
  }
1172
1313
  }
@@ -1064,6 +1064,24 @@
1064
1064
  ],
1065
1065
  "additionalProperties": false
1066
1066
  },
1067
+ "TrinkhornzauberIdentifier": {
1068
+ "type": "object",
1069
+ "properties": {
1070
+ "tag": {
1071
+ "const": "Trinkhornzauber"
1072
+ },
1073
+ "trinkhornzauber": {
1074
+ "description": "The Trinkhornzauber’s identifier.",
1075
+ "type": "integer",
1076
+ "minimum": 1
1077
+ }
1078
+ },
1079
+ "required": [
1080
+ "tag",
1081
+ "trinkhornzauber"
1082
+ ],
1083
+ "additionalProperties": false
1084
+ },
1067
1085
  "LanguageIdentifier": {
1068
1086
  "type": "object",
1069
1087
  "properties": {
@@ -144,6 +144,9 @@
144
144
  },
145
145
  {
146
146
  "$ref": "./_Identifier.schema.json#/$defs/KrallenkettenzauberIdentifier"
147
+ },
148
+ {
149
+ "$ref": "./_Identifier.schema.json#/$defs/TrinkhornzauberIdentifier"
147
150
  }
148
151
  ]
149
152
  },
@@ -283,6 +286,9 @@
283
286
  },
284
287
  {
285
288
  "$ref": "./_Identifier.schema.json#/$defs/KrallenkettenzauberIdentifier"
289
+ },
290
+ {
291
+ "$ref": "./_Identifier.schema.json#/$defs/TrinkhornzauberIdentifier"
286
292
  }
287
293
  ]
288
294
  },
@@ -184,6 +184,22 @@
184
184
  "dice_based"
185
185
  ],
186
186
  "additionalProperties": false
187
+ },
188
+ {
189
+ "type": "object",
190
+ "properties": {
191
+ "tag": {
192
+ "const": "Indefinite"
193
+ },
194
+ "indefinite": {
195
+ "$ref": "#/$defs/IndefinitePoisonTime"
196
+ }
197
+ },
198
+ "required": [
199
+ "tag",
200
+ "indefinite"
201
+ ],
202
+ "additionalProperties": false
187
203
  }
188
204
  ]
189
205
  },
@@ -223,9 +239,43 @@
223
239
  "enum": [
224
240
  "CombatRounds",
225
241
  "Minutes",
226
- "Hours"
242
+ "Hours",
243
+ "Days"
227
244
  ]
228
245
  },
246
+ "IndefinitePoisonTime": {
247
+ "type": "object",
248
+ "properties": {
249
+ "translations": {
250
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
251
+ "type": "object",
252
+ "patternProperties": {
253
+ "^[a-z]{2}-[A-Z]{2}$": {
254
+ "$ref": "#/$defs/IndefinitePoisonTimeTranslation"
255
+ }
256
+ },
257
+ "minProperties": 1,
258
+ "additionalProperties": false
259
+ }
260
+ },
261
+ "required": [
262
+ "translations"
263
+ ],
264
+ "additionalProperties": false
265
+ },
266
+ "IndefinitePoisonTimeTranslation": {
267
+ "type": "object",
268
+ "properties": {
269
+ "description": {
270
+ "description": "A description of the duration.",
271
+ "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
272
+ }
273
+ },
274
+ "required": [
275
+ "description"
276
+ ],
277
+ "additionalProperties": false
278
+ },
229
279
  "PoisonSourceType": {
230
280
  "oneOf": [
231
281
  {
@@ -318,6 +368,10 @@
318
368
  "type": "integer",
319
369
  "maximum": 6,
320
370
  "minimum": 1
371
+ },
372
+ "is_extractable": {
373
+ "description": "If `false`, the poison cannot be extracted.",
374
+ "const": false
321
375
  }
322
376
  },
323
377
  "required": [
@@ -223,7 +223,11 @@
223
223
  },
224
224
  "SanctifiedBy": {
225
225
  "description": "If the weapon is sanctified by a god and thus restricted to it's Blessed\nOnes.",
226
- "$ref": "../../_SimpleReferences.schema.json#/$defs/BlessedTraditionReference"
226
+ "type": "array",
227
+ "items": {
228
+ "$ref": "../../_SimpleReferences.schema.json#/$defs/BlessedTraditionReference"
229
+ },
230
+ "minItems": 1
227
231
  },
228
232
  "RestrictedToCultures": {
229
233
  "description": "Define if during character creation this weapon can only be bought by\ncharacters of a specific race or culture.",
@@ -13,7 +13,7 @@
13
13
  "minimum": 1
14
14
  },
15
15
  "sturdiness_rating": {
16
- "description": "Each armor type has a *sturdiness rating*. The higher the rating, the more\ndurable the armor. Rolling higher than this rating during a sturdiness\ncheck means the armor receives one level of the new condition *Wear*.",
16
+ "description": "An armor type can have a *sturdiness rating*. The higher the rating, the\nmore durable the armor. Rolling higher than this rating during a sturdiness\ncheck means the armor receives one level of the new condition *Wear*.",
17
17
  "type": "integer",
18
18
  "minimum": 1
19
19
  },
@@ -31,7 +31,6 @@
31
31
  },
32
32
  "required": [
33
33
  "id",
34
- "sturdiness_rating",
35
34
  "translations"
36
35
  ],
37
36
  "additionalProperties": false