optolith-database-schema 0.1.4 → 0.1.7

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 (425) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/lib/config.d.ts +228 -0
  3. package/lib/config.js +224 -0
  4. package/lib/main.d.ts +16 -0
  5. package/lib/main.js +111 -1
  6. package/lib/types/Advantage.d.ts +7 -3
  7. package/lib/types/Advantage.js +2 -1
  8. package/lib/types/ArcaneBardTradition.d.ts +3 -2
  9. package/lib/types/ArcaneBardTradition.js +2 -1
  10. package/lib/types/ArcaneDancerTradition.d.ts +3 -2
  11. package/lib/types/ArcaneDancerTradition.js +2 -1
  12. package/lib/types/Aspect.d.ts +1 -0
  13. package/lib/types/Aspect.js +2 -1
  14. package/lib/types/Attribute.d.ts +2 -1
  15. package/lib/types/Attribute.js +3 -1
  16. package/lib/types/Blessing.d.ts +4 -3
  17. package/lib/types/Blessing.js +2 -1
  18. package/lib/types/Cantrip.d.ts +9 -13
  19. package/lib/types/Cantrip.js +2 -1
  20. package/lib/types/Ceremony.d.ts +9 -8
  21. package/lib/types/Ceremony.js +2 -1
  22. package/lib/types/CombatTechnique_Close.d.ts +4 -3
  23. package/lib/types/CombatTechnique_Close.js +2 -1
  24. package/lib/types/CombatTechnique_Ranged.d.ts +4 -3
  25. package/lib/types/CombatTechnique_Ranged.js +2 -1
  26. package/lib/types/Condition.d.ts +3 -2
  27. package/lib/types/Condition.js +2 -1
  28. package/lib/types/Continent.d.ts +1 -0
  29. package/lib/types/Continent.js +2 -1
  30. package/lib/types/Culture.d.ts +5 -4
  31. package/lib/types/Culture.js +2 -1
  32. package/lib/types/DerivedCharacteristic.d.ts +4 -3
  33. package/lib/types/DerivedCharacteristic.js +2 -1
  34. package/lib/types/Disadvantage.d.ts +7 -3
  35. package/lib/types/Disadvantage.js +2 -1
  36. package/lib/types/Element.d.ts +1 -0
  37. package/lib/types/Element.js +2 -1
  38. package/lib/types/ExperienceLevel.d.ts +1 -0
  39. package/lib/types/ExperienceLevel.js +2 -1
  40. package/lib/types/EyeColor.d.ts +1 -0
  41. package/lib/types/EyeColor.js +2 -1
  42. package/lib/types/FamiliarsTrick.d.ts +4 -3
  43. package/lib/types/FamiliarsTrick.js +2 -1
  44. package/lib/types/FamiliarsTrick_AnimalType.d.ts +1 -0
  45. package/lib/types/FamiliarsTrick_AnimalType.js +2 -1
  46. package/lib/types/HairColor.d.ts +1 -0
  47. package/lib/types/HairColor.js +2 -1
  48. package/lib/types/Lessons_Curriculum.d.ts +3 -2
  49. package/lib/types/Lessons_Curriculum.js +2 -1
  50. package/lib/types/Lessons_Guideline.d.ts +1 -0
  51. package/lib/types/Lessons_Guideline.js +2 -1
  52. package/lib/types/LiturgicalChant.d.ts +9 -8
  53. package/lib/types/LiturgicalChant.js +2 -1
  54. package/lib/types/Locale.d.ts +3 -2
  55. package/lib/types/Locale.js +2 -1
  56. package/lib/types/MetaCondition.d.ts +3 -2
  57. package/lib/types/MetaCondition.js +2 -1
  58. package/lib/types/PactCategory.d.ts +3 -2
  59. package/lib/types/PactCategory.js +2 -1
  60. package/lib/types/Patron.d.ts +2 -1
  61. package/lib/types/Patron.js +2 -1
  62. package/lib/types/PatronCategory.d.ts +1 -0
  63. package/lib/types/PatronCategory.js +2 -1
  64. package/lib/types/Property.d.ts +2 -1
  65. package/lib/types/Property.js +2 -1
  66. package/lib/types/Race.d.ts +4 -3
  67. package/lib/types/Race.js +2 -1
  68. package/lib/types/Region.d.ts +1 -0
  69. package/lib/types/Region.js +2 -1
  70. package/lib/types/Ritual.d.ts +9 -8
  71. package/lib/types/Ritual.js +2 -1
  72. package/lib/types/Service.d.ts +3 -2
  73. package/lib/types/Service.js +2 -1
  74. package/lib/types/SexPractice.d.ts +2 -1
  75. package/lib/types/SexPractice.js +2 -1
  76. package/lib/types/Skill.d.ts +5 -4
  77. package/lib/types/Skill.js +2 -1
  78. package/lib/types/SkillGroup.d.ts +2 -1
  79. package/lib/types/SkillGroup.js +2 -1
  80. package/lib/types/SkillModificationLevel.d.ts +1 -0
  81. package/lib/types/SkillModificationLevel.js +2 -0
  82. package/lib/types/SocialStatus.d.ts +1 -0
  83. package/lib/types/SocialStatus.js +2 -1
  84. package/lib/types/Spell.d.ts +9 -8
  85. package/lib/types/Spell.js +2 -1
  86. package/lib/types/State.d.ts +3 -2
  87. package/lib/types/State.js +2 -1
  88. package/lib/types/TargetCategory.d.ts +1 -0
  89. package/lib/types/TargetCategory.js +2 -1
  90. package/lib/types/_Activatable.d.ts +583 -15
  91. package/lib/types/_Activatable.js +44 -0
  92. package/lib/types/_ActivatableSkill.d.ts +1 -1
  93. package/lib/types/_Enhancements.d.ts +4 -4
  94. package/lib/types/_Identifier.d.ts +127 -96
  95. package/lib/types/_Identifier.js +110 -88
  96. package/lib/types/_Influence.d.ts +4 -2
  97. package/lib/types/_Prerequisite.d.ts +93 -397
  98. package/lib/types/_Prerequisite.js +1 -136
  99. package/lib/types/magicalActions/AnimistPower.d.ts +11 -5
  100. package/lib/types/magicalActions/AnimistPower.js +2 -1
  101. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +1 -0
  102. package/lib/types/magicalActions/AnimistPower_Tribe.js +2 -1
  103. package/lib/types/magicalActions/Curse.d.ts +5 -4
  104. package/lib/types/magicalActions/Curse.js +2 -1
  105. package/lib/types/magicalActions/DominationRitual.d.ts +5 -4
  106. package/lib/types/magicalActions/DominationRitual.js +2 -1
  107. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +7 -6
  108. package/lib/types/magicalActions/ElvenMagicalSong.js +2 -1
  109. package/lib/types/magicalActions/GeodeRitual.d.ts +8 -7
  110. package/lib/types/magicalActions/GeodeRitual.js +2 -1
  111. package/lib/types/magicalActions/JesterTrick.d.ts +6 -5
  112. package/lib/types/magicalActions/JesterTrick.js +2 -1
  113. package/lib/types/magicalActions/MagicalDance.d.ts +7 -6
  114. package/lib/types/magicalActions/MagicalDance.js +2 -1
  115. package/lib/types/magicalActions/MagicalMelody.d.ts +8 -7
  116. package/lib/types/magicalActions/MagicalMelody.js +2 -1
  117. package/lib/types/magicalActions/MagicalRune.d.ts +6 -5
  118. package/lib/types/magicalActions/MagicalRune.js +2 -1
  119. package/lib/types/magicalActions/ZibiljaRitual.d.ts +6 -5
  120. package/lib/types/magicalActions/ZibiljaRitual.js +2 -1
  121. package/lib/types/prerequisites/ConditionalPrerequisites.d.ts +10 -0
  122. package/lib/types/prerequisites/ConditionalPrerequisites.js +1 -0
  123. package/lib/types/prerequisites/DisplayOption.d.ts +19 -0
  124. package/lib/types/prerequisites/DisplayOption.js +1 -0
  125. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +32 -0
  126. package/lib/types/prerequisites/PrerequisiteGroups.js +1 -0
  127. package/lib/types/prerequisites/single/ActivatablePrerequisite.d.ts +95 -0
  128. package/lib/types/prerequisites/single/ActivatablePrerequisite.js +1 -0
  129. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.d.ts +28 -0
  130. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.js +1 -0
  131. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.d.ts +3 -0
  132. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.js +1 -0
  133. package/lib/types/prerequisites/single/CulturePrerequisite.d.ts +11 -0
  134. package/lib/types/prerequisites/single/CulturePrerequisite.js +1 -0
  135. package/lib/types/prerequisites/single/EnhancementPrerequisite.d.ts +36 -0
  136. package/lib/types/prerequisites/single/EnhancementPrerequisite.js +1 -0
  137. package/lib/types/prerequisites/single/InfluencePrerequisite.d.ts +18 -0
  138. package/lib/types/prerequisites/single/InfluencePrerequisite.js +1 -0
  139. package/lib/types/prerequisites/single/PactPrerequisite.d.ts +32 -0
  140. package/lib/types/prerequisites/single/PactPrerequisite.js +1 -0
  141. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.d.ts +22 -0
  142. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.js +1 -0
  143. package/lib/types/prerequisites/single/PublicationPrerequisite.d.ts +13 -0
  144. package/lib/types/prerequisites/single/PublicationPrerequisite.js +1 -0
  145. package/lib/types/prerequisites/single/RacePrerequisite.d.ts +14 -0
  146. package/lib/types/prerequisites/single/RacePrerequisite.js +1 -0
  147. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +99 -0
  148. package/lib/types/prerequisites/single/RatedPrerequisite.js +1 -0
  149. package/lib/types/prerequisites/single/RulePrerequisite.d.ts +10 -0
  150. package/lib/types/prerequisites/single/RulePrerequisite.js +1 -0
  151. package/lib/types/prerequisites/single/SexPrerequisite.d.ts +11 -0
  152. package/lib/types/prerequisites/single/SexPrerequisite.js +1 -0
  153. package/lib/types/prerequisites/single/SocialStatusPrerequisite.d.ts +16 -0
  154. package/lib/types/prerequisites/single/SocialStatusPrerequisite.js +1 -0
  155. package/lib/types/prerequisites/single/StatePrerequisite.d.ts +11 -0
  156. package/lib/types/prerequisites/single/StatePrerequisite.js +1 -0
  157. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +31 -0
  158. package/lib/types/prerequisites/single/TextPrerequisite.js +1 -0
  159. package/lib/types/prerequisites/single/TraditionPrerequisite.d.ts +33 -0
  160. package/lib/types/prerequisites/single/TraditionPrerequisite.js +1 -0
  161. package/lib/types/rule/FocusRule.d.ts +3 -2
  162. package/lib/types/rule/FocusRule.js +2 -1
  163. package/lib/types/rule/FocusRule_Subject.d.ts +1 -0
  164. package/lib/types/rule/FocusRule_Subject.js +2 -1
  165. package/lib/types/rule/OptionalRule.d.ts +3 -2
  166. package/lib/types/rule/OptionalRule.js +2 -1
  167. package/lib/types/source/Publication.d.ts +87 -0
  168. package/lib/types/source/Publication.js +2 -1
  169. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -3
  170. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +2 -1
  171. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +7 -3
  172. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +2 -1
  173. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +7 -3
  174. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +2 -1
  175. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +7 -3
  176. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +2 -1
  177. package/lib/types/specialAbility/AncestorGlyph.d.ts +7 -3
  178. package/lib/types/specialAbility/AncestorGlyph.js +2 -1
  179. package/lib/types/specialAbility/BlessedTradition.d.ts +9 -5
  180. package/lib/types/specialAbility/BlessedTradition.js +2 -1
  181. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +7 -3
  182. package/lib/types/specialAbility/BrawlingSpecialAbility.js +2 -1
  183. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +7 -3
  184. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +2 -1
  185. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +11 -3
  186. package/lib/types/specialAbility/CombatSpecialAbility.js +2 -1
  187. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +7 -3
  188. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +2 -1
  189. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +10 -6
  190. package/lib/types/specialAbility/CommandSpecialAbility.js +3 -2
  191. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +7 -3
  192. package/lib/types/specialAbility/FamiliarSpecialAbility.js +2 -1
  193. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +7 -3
  194. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +2 -1
  195. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +7 -3
  196. package/lib/types/specialAbility/FatePointSpecialAbility.js +2 -1
  197. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +7 -3
  198. package/lib/types/specialAbility/GeneralSpecialAbility.js +2 -1
  199. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +7 -3
  200. package/lib/types/specialAbility/KarmaSpecialAbility.js +2 -1
  201. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +10 -6
  202. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +3 -2
  203. package/lib/types/specialAbility/LycantropicGift.d.ts +7 -3
  204. package/lib/types/specialAbility/LycantropicGift.js +2 -1
  205. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +7 -3
  206. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +2 -1
  207. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +7 -3
  208. package/lib/types/specialAbility/MagicalSpecialAbility.js +2 -1
  209. package/lib/types/specialAbility/MagicalTradition.d.ts +8 -4
  210. package/lib/types/specialAbility/MagicalTradition.js +2 -1
  211. package/lib/types/specialAbility/PactGift.d.ts +9 -5
  212. package/lib/types/specialAbility/PactGift.js +2 -1
  213. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +7 -3
  214. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +2 -1
  215. package/lib/types/specialAbility/Sermon.d.ts +7 -3
  216. package/lib/types/specialAbility/Sermon.js +2 -1
  217. package/lib/types/specialAbility/SexSpecialAbility.d.ts +7 -3
  218. package/lib/types/specialAbility/SexSpecialAbility.js +2 -1
  219. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +7 -3
  220. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +2 -1
  221. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +10 -6
  222. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +3 -2
  223. package/lib/types/specialAbility/VampiricGift.d.ts +7 -3
  224. package/lib/types/specialAbility/VampiricGift.js +2 -1
  225. package/lib/types/specialAbility/Vision.d.ts +7 -3
  226. package/lib/types/specialAbility/Vision.js +2 -1
  227. package/lib/types/specialAbility/sub/Language.d.ts +5 -4
  228. package/lib/types/specialAbility/sub/Language.js +2 -1
  229. package/lib/types/specialAbility/sub/Script.d.ts +3 -2
  230. package/lib/types/specialAbility/sub/Script.js +2 -1
  231. package/lib/types/specialAbility/sub/TradeSecret.d.ts +5 -2
  232. package/lib/types/specialAbility/sub/TradeSecret.js +2 -1
  233. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +19 -3
  234. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +2 -1
  235. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +19 -3
  236. package/lib/types/traditionArtifacts/AttireEnchantment.js +2 -1
  237. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +19 -3
  238. package/lib/types/traditionArtifacts/BowlEnchantment.js +2 -1
  239. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +19 -3
  240. package/lib/types/traditionArtifacts/CauldronEnchantment.js +2 -1
  241. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +19 -3
  242. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +2 -1
  243. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +19 -3
  244. package/lib/types/traditionArtifacts/DaggerRitual.js +2 -1
  245. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +19 -3
  246. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +2 -1
  247. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +19 -3
  248. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +2 -1
  249. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +19 -3
  250. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +2 -1
  251. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +19 -3
  252. package/lib/types/traditionArtifacts/OrbEnchantment.js +2 -1
  253. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +19 -3
  254. package/lib/types/traditionArtifacts/RingEnchantment.js +2 -1
  255. package/lib/types/traditionArtifacts/SickleRitual.d.ts +19 -3
  256. package/lib/types/traditionArtifacts/SickleRitual.js +2 -1
  257. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +19 -3
  258. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +2 -1
  259. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +19 -3
  260. package/lib/types/traditionArtifacts/StaffEnchantment.js +2 -1
  261. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +19 -3
  262. package/lib/types/traditionArtifacts/ToyEnchantment.js +2 -1
  263. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +19 -3
  264. package/lib/types/traditionArtifacts/Trinkhornzauber.js +2 -1
  265. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +19 -3
  266. package/lib/types/traditionArtifacts/WandEnchantment.js +2 -1
  267. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +19 -3
  268. package/lib/types/traditionArtifacts/WeaponEnchantment.js +2 -1
  269. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +1 -0
  270. package/lib/types/traditionArtifacts/sub/AnimalShape.js +2 -1
  271. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +1 -0
  272. package/lib/types/traditionArtifacts/sub/AnimalShapePath.js +2 -1
  273. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +4 -3
  274. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.js +3 -2
  275. package/lib/types/traditionArtifacts/sub/Brew.d.ts +1 -0
  276. package/lib/types/traditionArtifacts/sub/Brew.js +2 -1
  277. package/lib/validation/schema.d.ts +10 -0
  278. package/lib/validation/schema.js +20 -0
  279. package/package.json +4 -2
  280. package/schema/Advantage.schema.json +7 -1
  281. package/schema/ArcaneBardTradition.schema.json +2 -2
  282. package/schema/ArcaneDancerTradition.schema.json +2 -2
  283. package/schema/Aspect.schema.json +1 -1
  284. package/schema/Attribute.schema.json +1 -1
  285. package/schema/Blessing.schema.json +1 -1
  286. package/schema/Cantrip.schema.json +5 -10
  287. package/schema/Ceremony.schema.json +2 -2
  288. package/schema/CombatTechnique_Close.schema.json +1 -1
  289. package/schema/CombatTechnique_Ranged.schema.json +1 -1
  290. package/schema/Condition.schema.json +1 -1
  291. package/schema/Continent.schema.json +1 -1
  292. package/schema/Culture.schema.json +1 -1
  293. package/schema/DerivedCharacteristic.schema.json +2 -2
  294. package/schema/Disadvantage.schema.json +7 -1
  295. package/schema/Element.schema.json +1 -1
  296. package/schema/ExperienceLevel.schema.json +1 -1
  297. package/schema/EyeColor.schema.json +1 -1
  298. package/schema/FamiliarsTrick.schema.json +1 -1
  299. package/schema/FamiliarsTrick_AnimalType.schema.json +1 -1
  300. package/schema/HairColor.schema.json +1 -1
  301. package/schema/Lessons_Curriculum.schema.json +1 -1
  302. package/schema/Lessons_Guideline.schema.json +1 -1
  303. package/schema/LiturgicalChant.schema.json +2 -2
  304. package/schema/Locale.schema.json +1 -1
  305. package/schema/MetaCondition.schema.json +1 -1
  306. package/schema/PactCategory.schema.json +1 -1
  307. package/schema/Patron.schema.json +1 -1
  308. package/schema/PatronCategory.schema.json +1 -1
  309. package/schema/Property.schema.json +1 -1
  310. package/schema/Race.schema.json +1 -1
  311. package/schema/Region.schema.json +1 -1
  312. package/schema/Ritual.schema.json +2 -2
  313. package/schema/Service.schema.json +1 -1
  314. package/schema/SexPractice.schema.json +1 -1
  315. package/schema/Skill.schema.json +1 -1
  316. package/schema/SkillGroup.schema.json +1 -1
  317. package/schema/SkillModificationLevel.schema.json +1 -1
  318. package/schema/SocialStatus.schema.json +1 -1
  319. package/schema/Spell.schema.json +2 -2
  320. package/schema/State.schema.json +1 -1
  321. package/schema/TargetCategory.schema.json +1 -1
  322. package/schema/_Activatable.schema.json +1002 -44
  323. package/schema/_ActivatableSkill.schema.json +1 -1
  324. package/schema/_CommonnessRatedAdvantageDisadvantage.schema.json +1 -1
  325. package/schema/_Enhancements.schema.json +2 -2
  326. package/schema/_I18n.schema.json +1 -1
  327. package/schema/_Identifier.schema.json +326 -189
  328. package/schema/_ImprovementCost.schema.json +1 -1
  329. package/schema/_Influence.schema.json +5 -1
  330. package/schema/_Prerequisite.schema.json +888 -676
  331. package/schema/_Sex.schema.json +1 -1
  332. package/schema/_SkillCheck.schema.json +1 -1
  333. package/schema/magicalActions/AnimistPower.schema.json +5 -1
  334. package/schema/magicalActions/AnimistPower_Tribe.schema.json +1 -1
  335. package/schema/magicalActions/Curse.schema.json +1 -1
  336. package/schema/magicalActions/DominationRitual.schema.json +1 -1
  337. package/schema/magicalActions/ElvenMagicalSong.schema.json +1 -1
  338. package/schema/magicalActions/GeodeRitual.schema.json +2 -2
  339. package/schema/magicalActions/JesterTrick.schema.json +1 -1
  340. package/schema/magicalActions/MagicalDance.schema.json +1 -1
  341. package/schema/magicalActions/MagicalMelody.schema.json +1 -1
  342. package/schema/magicalActions/MagicalRune.schema.json +1 -1
  343. package/schema/magicalActions/ZibiljaRitual.schema.json +1 -1
  344. package/schema/magicalActions/_MusicTradition.schema.json +1 -1
  345. package/schema/magicalActions/_SkillReference.schema.json +1 -1
  346. package/schema/prerequisites/ConditionalPrerequisites.schema.json +15 -0
  347. package/schema/prerequisites/DisplayOption.schema.json +48 -0
  348. package/schema/prerequisites/PrerequisiteGroups.schema.json +246 -0
  349. package/schema/prerequisites/single/ActivatablePrerequisite.schema.json +142 -0
  350. package/schema/prerequisites/single/AnimistPowerPrerequisite.schema.json +40 -0
  351. package/schema/prerequisites/single/CommonSuggestedByRCPPrerequisite.schema.json +18 -0
  352. package/schema/prerequisites/single/CulturePrerequisite.schema.json +27 -0
  353. package/schema/prerequisites/single/EnhancementPrerequisite.schema.json +54 -0
  354. package/schema/prerequisites/single/InfluencePrerequisite.schema.json +33 -0
  355. package/schema/prerequisites/single/PactPrerequisite.schema.json +46 -0
  356. package/schema/prerequisites/single/PrimaryAttributePrerequisite.schema.json +58 -0
  357. package/schema/prerequisites/single/PublicationPrerequisite.schema.json +27 -0
  358. package/schema/prerequisites/single/RacePrerequisite.schema.json +31 -0
  359. package/schema/prerequisites/single/RatedPrerequisite.schema.json +184 -0
  360. package/schema/prerequisites/single/RulePrerequisite.schema.json +26 -0
  361. package/schema/prerequisites/single/SexPrerequisite.schema.json +27 -0
  362. package/schema/prerequisites/single/SocialStatusPrerequisite.schema.json +30 -0
  363. package/schema/prerequisites/single/StatePrerequisite.schema.json +27 -0
  364. package/schema/prerequisites/single/TextPrerequisite.schema.json +63 -0
  365. package/schema/prerequisites/single/TraditionPrerequisite.schema.json +96 -0
  366. package/schema/rule/FocusRule.schema.json +1 -1
  367. package/schema/rule/FocusRule_Subject.schema.json +1 -1
  368. package/schema/rule/OptionalRule.schema.json +1 -1
  369. package/schema/source/Publication.schema.json +2 -2
  370. package/schema/source/_Erratum.schema.json +1 -1
  371. package/schema/source/_PublicationRef.schema.json +1 -1
  372. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +10 -1
  373. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +7 -1
  374. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +7 -1
  375. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +7 -1
  376. package/schema/specialAbility/AncestorGlyph.schema.json +7 -1
  377. package/schema/specialAbility/BlessedTradition.schema.json +8 -2
  378. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +7 -1
  379. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +7 -1
  380. package/schema/specialAbility/CombatSpecialAbility.schema.json +10 -1
  381. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +7 -1
  382. package/schema/specialAbility/CommandSpecialAbility.schema.json +10 -4
  383. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +7 -1
  384. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +7 -1
  385. package/schema/specialAbility/FatePointSpecialAbility.schema.json +7 -1
  386. package/schema/specialAbility/GeneralSpecialAbility.schema.json +7 -1
  387. package/schema/specialAbility/KarmaSpecialAbility.schema.json +7 -1
  388. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +10 -4
  389. package/schema/specialAbility/LycantropicGift.schema.json +7 -1
  390. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +7 -1
  391. package/schema/specialAbility/MagicalSpecialAbility.schema.json +7 -1
  392. package/schema/specialAbility/MagicalTradition.schema.json +7 -1
  393. package/schema/specialAbility/PactGift.schema.json +8 -2
  394. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +7 -1
  395. package/schema/specialAbility/Sermon.schema.json +7 -1
  396. package/schema/specialAbility/SexSpecialAbility.schema.json +7 -1
  397. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +7 -1
  398. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +10 -4
  399. package/schema/specialAbility/VampiricGift.schema.json +7 -1
  400. package/schema/specialAbility/Vision.schema.json +7 -1
  401. package/schema/specialAbility/sub/Language.schema.json +2 -2
  402. package/schema/specialAbility/sub/Script.schema.json +1 -1
  403. package/schema/specialAbility/sub/TradeSecret.schema.json +4 -1
  404. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +18 -2
  405. package/schema/traditionArtifacts/AttireEnchantment.schema.json +18 -2
  406. package/schema/traditionArtifacts/BowlEnchantment.schema.json +18 -2
  407. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +18 -2
  408. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +18 -2
  409. package/schema/traditionArtifacts/DaggerRitual.schema.json +18 -2
  410. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +18 -2
  411. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +18 -2
  412. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +18 -2
  413. package/schema/traditionArtifacts/OrbEnchantment.schema.json +18 -2
  414. package/schema/traditionArtifacts/RingEnchantment.schema.json +18 -2
  415. package/schema/traditionArtifacts/SickleRitual.schema.json +18 -2
  416. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +18 -2
  417. package/schema/traditionArtifacts/StaffEnchantment.schema.json +18 -2
  418. package/schema/traditionArtifacts/ToyEnchantment.schema.json +18 -2
  419. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +18 -2
  420. package/schema/traditionArtifacts/WandEnchantment.schema.json +18 -2
  421. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +18 -2
  422. package/schema/traditionArtifacts/sub/AnimalShape.schema.json +1 -1
  423. package/schema/traditionArtifacts/sub/AnimalShapePath.schema.json +1 -1
  424. package/schema/traditionArtifacts/sub/AnimalShapeSize.schema.json +4 -4
  425. package/schema/traditionArtifacts/sub/Brew.schema.json +1 -1
@@ -1,37 +1,100 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
- "$id": "_Prerequisite.schema.json",
3
+ "$id": "/_Prerequisite.schema.json",
4
4
  "definitions": {
5
- "Prerequisite": {
6
- "Single": {
7
- "DisplayOption": {
8
- "T": {
9
- "title": "Display Option",
5
+ "PrerequisiteCollection": {},
6
+ "DerivedCharacteristicPrerequisites": {
7
+ "type": "object",
8
+ "properties": {
9
+ "tag": {
10
+ "const": "Plain"
11
+ },
12
+ "list": {
13
+ "type": "array",
14
+ "items": {
10
15
  "oneOf": [
11
16
  {
17
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/DerivedCharacteristicPrerequisiteGroup"
18
+ },
19
+ {
20
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
12
21
  "type": "object",
13
22
  "properties": {
14
23
  "tag": {
15
- "const": "Hide"
24
+ "const": "Group"
25
+ },
26
+ "list": {
27
+ "type": "array",
28
+ "items": {
29
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/DerivedCharacteristicPrerequisiteGroup"
30
+ },
31
+ "minItems": 2
32
+ },
33
+ "translations": {
34
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
35
+ "type": "object",
36
+ "patternProperties": {
37
+ "^[a-z]{2}-[A-Z]{2}$": {
38
+ "type": "string",
39
+ "minLength": 1
40
+ }
41
+ },
42
+ "minProperties": 1,
43
+ "additionalProperties": false
16
44
  }
17
45
  },
18
46
  "required": [
19
- "tag"
47
+ "tag",
48
+ "list",
49
+ "translations"
20
50
  ],
21
51
  "additionalProperties": false
52
+ }
53
+ ]
54
+ },
55
+ "minItems": 1
56
+ }
57
+ },
58
+ "required": [
59
+ "tag",
60
+ "list"
61
+ ],
62
+ "additionalProperties": false
63
+ },
64
+ "PublicationPrerequisites": {
65
+ "type": "object",
66
+ "properties": {
67
+ "tag": {
68
+ "const": "Plain"
69
+ },
70
+ "list": {
71
+ "type": "array",
72
+ "items": {
73
+ "oneOf": [
74
+ {
75
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/PublicationPrerequisiteGroup"
22
76
  },
23
77
  {
78
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
24
79
  "type": "object",
25
80
  "properties": {
26
81
  "tag": {
27
- "const": "ReplaceWith"
82
+ "const": "Group"
83
+ },
84
+ "list": {
85
+ "type": "array",
86
+ "items": {
87
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/PublicationPrerequisiteGroup"
88
+ },
89
+ "minItems": 2
28
90
  },
29
91
  "translations": {
30
92
  "description": "All translations for the entry, identified by IETF language tag (BCP47).",
31
93
  "type": "object",
32
94
  "patternProperties": {
33
95
  "^[a-z]{2}-[A-Z]{2}$": {
34
- "type": "string"
96
+ "type": "string",
97
+ "minLength": 1
35
98
  }
36
99
  },
37
100
  "minProperties": 1,
@@ -40,808 +103,957 @@
40
103
  },
41
104
  "required": [
42
105
  "tag",
106
+ "list",
43
107
  "translations"
44
108
  ],
45
109
  "additionalProperties": false
46
110
  }
47
111
  ]
48
- }
49
- },
50
- "Sex": {
51
- "T": {
52
- "title": "Sex Prerequisite",
53
- "description": "Requires a specific sex.",
54
- "type": "object",
55
- "properties": {
56
- "tag": {
57
- "const": "Sex"
58
- },
59
- "id": {
60
- "$ref": "./_Sex.schema.json#/definitions/BinarySex"
61
- },
62
- "display_option": {
63
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
64
- }
65
- },
66
- "required": [
67
- "tag",
68
- "id"
69
- ],
70
- "additionalProperties": false
71
- }
72
- },
73
- "Race": {
74
- "T": {
75
- "title": "Race Prerequisite",
76
- "description": "Requires a specific culture or one of a specific set of cultures.",
77
- "type": "object",
78
- "properties": {
79
- "tag": {
80
- "const": "Culture"
81
- },
82
- "id": {
83
- "$ref": "#/definitions/Prerequisite/Single/Race/Identifier"
84
- },
85
- "active": {
86
- "type": "boolean"
87
- },
88
- "display_option": {
89
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
90
- }
91
- },
92
- "required": [
93
- "tag",
94
- "id",
95
- "active"
96
- ],
97
- "additionalProperties": false
98
112
  },
99
- "Identifier": {
100
- "oneOf": [
101
- {
102
- "$ref": "#/definitions/Prerequisite/Single/Race/SingleIdentifier"
113
+ "minItems": 1
114
+ }
115
+ },
116
+ "required": [
117
+ "tag",
118
+ "list"
119
+ ],
120
+ "additionalProperties": false
121
+ },
122
+ "GeneralPrerequisites": {
123
+ "oneOf": [
124
+ {
125
+ "type": "object",
126
+ "properties": {
127
+ "tag": {
128
+ "const": "Plain"
129
+ },
130
+ "list": {
131
+ "type": "array",
132
+ "items": {
133
+ "oneOf": [
134
+ {
135
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeneralPrerequisiteGroup"
136
+ },
137
+ {
138
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
139
+ "type": "object",
140
+ "properties": {
141
+ "tag": {
142
+ "const": "Group"
143
+ },
144
+ "list": {
145
+ "type": "array",
146
+ "items": {
147
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeneralPrerequisiteGroup"
148
+ },
149
+ "minItems": 2
150
+ },
151
+ "translations": {
152
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
153
+ "type": "object",
154
+ "patternProperties": {
155
+ "^[a-z]{2}-[A-Z]{2}$": {
156
+ "type": "string",
157
+ "minLength": 1
158
+ }
159
+ },
160
+ "minProperties": 1,
161
+ "additionalProperties": false
162
+ }
163
+ },
164
+ "required": [
165
+ "tag",
166
+ "list",
167
+ "translations"
168
+ ],
169
+ "additionalProperties": false
170
+ }
171
+ ]
103
172
  },
104
- {
105
- "$ref": "#/definitions/Prerequisite/Single/Race/MultipleIdentifiers"
106
- }
107
- ]
108
- },
109
- "SingleIdentifier": {
110
- "type": "number",
111
- "minimum": 1
173
+ "minItems": 1
174
+ }
112
175
  },
113
- "MultipleIdentifiers": {
114
- "type": "array",
115
- "items": {
116
- "$ref": "#/definitions/Prerequisite/Single/Race/SingleIdentifier"
117
- },
118
- "minItems": 2
119
- }
176
+ "required": [
177
+ "tag",
178
+ "list"
179
+ ],
180
+ "additionalProperties": false
120
181
  },
121
- "Culture": {
122
- "T": {
123
- "title": "Culture Prerequisite",
124
- "description": "Requires a specific race or one of a specific set of races. You can also\nprovide an object to say whether the hero must meet one of the races or\nif the entry does not allow one of the races.",
125
- "type": "object",
126
- "properties": {
127
- "tag": {
128
- "const": "Culture"
129
- },
130
- "id": {
131
- "$ref": "#/definitions/Prerequisite/Single/Culture/Identifier"
132
- },
133
- "display_option": {
134
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
135
- }
182
+ {
183
+ "type": "object",
184
+ "properties": {
185
+ "tag": {
186
+ "const": "ByLevel"
136
187
  },
137
- "required": [
138
- "tag",
139
- "id"
140
- ],
141
- "additionalProperties": false
188
+ "list": {
189
+ "type": "array",
190
+ "items": {
191
+ "type": "object",
192
+ "properties": {
193
+ "level": {
194
+ "type": "integer",
195
+ "minimum": 1
196
+ },
197
+ "prerequisites": {
198
+ "type": "array",
199
+ "items": {
200
+ "oneOf": [
201
+ {
202
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeneralPrerequisiteGroup"
203
+ },
204
+ {
205
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
206
+ "type": "object",
207
+ "properties": {
208
+ "tag": {
209
+ "const": "Group"
210
+ },
211
+ "list": {
212
+ "type": "array",
213
+ "items": {
214
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeneralPrerequisiteGroup"
215
+ },
216
+ "minItems": 2
217
+ },
218
+ "translations": {
219
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
220
+ "type": "object",
221
+ "patternProperties": {
222
+ "^[a-z]{2}-[A-Z]{2}$": {
223
+ "type": "string",
224
+ "minLength": 1
225
+ }
226
+ },
227
+ "minProperties": 1,
228
+ "additionalProperties": false
229
+ }
230
+ },
231
+ "required": [
232
+ "tag",
233
+ "list",
234
+ "translations"
235
+ ],
236
+ "additionalProperties": false
237
+ }
238
+ ]
239
+ },
240
+ "minItems": 1
241
+ }
242
+ },
243
+ "required": [
244
+ "level",
245
+ "prerequisites"
246
+ ],
247
+ "additionalProperties": false
248
+ },
249
+ "minItems": 1
250
+ }
142
251
  },
143
- "Identifier": {
252
+ "required": [
253
+ "tag",
254
+ "list"
255
+ ],
256
+ "additionalProperties": false
257
+ }
258
+ ]
259
+ },
260
+ "ProfessionPrerequisites": {
261
+ "type": "object",
262
+ "properties": {
263
+ "tag": {
264
+ "const": "Plain"
265
+ },
266
+ "list": {
267
+ "type": "array",
268
+ "items": {
144
269
  "oneOf": [
145
270
  {
146
- "$ref": "#/definitions/Prerequisite/Single/Culture/SingleIdentifier"
271
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/ProfessionPrerequisiteGroup"
147
272
  },
148
273
  {
149
- "$ref": "#/definitions/Prerequisite/Single/Culture/MultipleIdentifiers"
274
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
275
+ "type": "object",
276
+ "properties": {
277
+ "tag": {
278
+ "const": "Group"
279
+ },
280
+ "list": {
281
+ "type": "array",
282
+ "items": {
283
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/ProfessionPrerequisiteGroup"
284
+ },
285
+ "minItems": 2
286
+ },
287
+ "translations": {
288
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
289
+ "type": "object",
290
+ "patternProperties": {
291
+ "^[a-z]{2}-[A-Z]{2}$": {
292
+ "type": "string",
293
+ "minLength": 1
294
+ }
295
+ },
296
+ "minProperties": 1,
297
+ "additionalProperties": false
298
+ }
299
+ },
300
+ "required": [
301
+ "tag",
302
+ "list",
303
+ "translations"
304
+ ],
305
+ "additionalProperties": false
150
306
  }
151
307
  ]
152
308
  },
153
- "SingleIdentifier": {
154
- "type": "number",
155
- "minimum": 1
156
- },
157
- "MultipleIdentifiers": {
158
- "type": "array",
159
- "items": {
160
- "$ref": "#/definitions/Prerequisite/Single/Culture/SingleIdentifier"
309
+ "minItems": 1
310
+ }
311
+ },
312
+ "required": [
313
+ "tag",
314
+ "list"
315
+ ],
316
+ "additionalProperties": false
317
+ },
318
+ "AdvantageDisadvantagePrerequisites": {
319
+ "oneOf": [
320
+ {
321
+ "type": "object",
322
+ "properties": {
323
+ "tag": {
324
+ "const": "Plain"
161
325
  },
162
- "minItems": 2
163
- }
164
- },
165
- "Rule": {
166
- "T": {
167
- "title": "Rule Prerequisite",
168
- "type": "object",
169
- "properties": {
170
- "tag": {
171
- "const": "Rule"
172
- },
173
- "id": {
174
- "$ref": "#/definitions/Prerequisite/Single/Rule/Identifier"
326
+ "list": {
327
+ "type": "array",
328
+ "items": {
329
+ "oneOf": [
330
+ {
331
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AdvantageDisadvantagePrerequisiteGroup"
332
+ },
333
+ {
334
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
335
+ "type": "object",
336
+ "properties": {
337
+ "tag": {
338
+ "const": "Group"
339
+ },
340
+ "list": {
341
+ "type": "array",
342
+ "items": {
343
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AdvantageDisadvantagePrerequisiteGroup"
344
+ },
345
+ "minItems": 2
346
+ },
347
+ "translations": {
348
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
349
+ "type": "object",
350
+ "patternProperties": {
351
+ "^[a-z]{2}-[A-Z]{2}$": {
352
+ "type": "string",
353
+ "minLength": 1
354
+ }
355
+ },
356
+ "minProperties": 1,
357
+ "additionalProperties": false
358
+ }
359
+ },
360
+ "required": [
361
+ "tag",
362
+ "list",
363
+ "translations"
364
+ ],
365
+ "additionalProperties": false
366
+ }
367
+ ]
175
368
  },
176
- "display_option": {
177
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
178
- }
179
- },
180
- "required": [
181
- "tag",
182
- "id"
183
- ],
184
- "additionalProperties": false
369
+ "minItems": 1
370
+ }
185
371
  },
186
- "Identifier": {
187
- "oneOf": [
188
- {
372
+ "required": [
373
+ "tag",
374
+ "list"
375
+ ],
376
+ "additionalProperties": false
377
+ },
378
+ {
379
+ "type": "object",
380
+ "properties": {
381
+ "tag": {
382
+ "const": "ByLevel"
383
+ },
384
+ "list": {
385
+ "type": "array",
386
+ "items": {
189
387
  "type": "object",
190
388
  "properties": {
191
- "tag": {
192
- "const": "FocusRule"
193
- },
194
- "value": {
389
+ "level": {
195
390
  "type": "integer",
196
391
  "minimum": 1
392
+ },
393
+ "prerequisites": {
394
+ "type": "array",
395
+ "items": {
396
+ "oneOf": [
397
+ {
398
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AdvantageDisadvantagePrerequisiteGroup"
399
+ },
400
+ {
401
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
402
+ "type": "object",
403
+ "properties": {
404
+ "tag": {
405
+ "const": "Group"
406
+ },
407
+ "list": {
408
+ "type": "array",
409
+ "items": {
410
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AdvantageDisadvantagePrerequisiteGroup"
411
+ },
412
+ "minItems": 2
413
+ },
414
+ "translations": {
415
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
416
+ "type": "object",
417
+ "patternProperties": {
418
+ "^[a-z]{2}-[A-Z]{2}$": {
419
+ "type": "string",
420
+ "minLength": 1
421
+ }
422
+ },
423
+ "minProperties": 1,
424
+ "additionalProperties": false
425
+ }
426
+ },
427
+ "required": [
428
+ "tag",
429
+ "list",
430
+ "translations"
431
+ ],
432
+ "additionalProperties": false
433
+ }
434
+ ]
435
+ },
436
+ "minItems": 1
197
437
  }
198
438
  },
199
439
  "required": [
200
- "tag",
201
- "value"
440
+ "level",
441
+ "prerequisites"
202
442
  ],
203
443
  "additionalProperties": false
204
444
  },
445
+ "minItems": 1
446
+ }
447
+ },
448
+ "required": [
449
+ "tag",
450
+ "list"
451
+ ],
452
+ "additionalProperties": false
453
+ }
454
+ ]
455
+ },
456
+ "ArcaneTraditionPrerequisites": {
457
+ "type": "object",
458
+ "properties": {
459
+ "tag": {
460
+ "const": "Plain"
461
+ },
462
+ "list": {
463
+ "type": "array",
464
+ "items": {
465
+ "oneOf": [
466
+ {
467
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/ArcaneTraditionPrerequisiteGroup"
468
+ },
205
469
  {
470
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
206
471
  "type": "object",
207
472
  "properties": {
208
473
  "tag": {
209
- "const": "OptionalRule"
474
+ "const": "Group"
210
475
  },
211
- "value": {
212
- "type": "integer",
213
- "minimum": 1
476
+ "list": {
477
+ "type": "array",
478
+ "items": {
479
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/ArcaneTraditionPrerequisiteGroup"
480
+ },
481
+ "minItems": 2
482
+ },
483
+ "translations": {
484
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
485
+ "type": "object",
486
+ "patternProperties": {
487
+ "^[a-z]{2}-[A-Z]{2}$": {
488
+ "type": "string",
489
+ "minLength": 1
490
+ }
491
+ },
492
+ "minProperties": 1,
493
+ "additionalProperties": false
214
494
  }
215
495
  },
216
496
  "required": [
217
497
  "tag",
218
- "value"
498
+ "list",
499
+ "translations"
219
500
  ],
220
501
  "additionalProperties": false
221
502
  }
222
503
  ]
223
- }
224
- },
225
- "Publication": {
226
- "T": {
227
- "title": "Publication Prerequisite",
228
- "type": "object",
229
- "properties": {
230
- "tag": {
231
- "const": "Publication"
232
- },
233
- "id": {
234
- "type": "integer",
235
- "minimum": 1
236
- },
237
- "display_option": {
238
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
239
- }
240
- },
241
- "required": [
242
- "tag",
243
- "id"
244
- ],
245
- "additionalProperties": false
246
- }
247
- },
248
- "PrimaryAttribute": {
249
- "T": {
250
- "title": "Primary Attribute Prerequisite",
251
- "type": "object",
252
- "properties": {
253
- "tag": {
254
- "const": "PrimaryAttribute"
255
- },
256
- "category": {
257
- "description": "Is the required primary attribute for spellcasters or blessed ones?",
258
- "$ref": "#/definitions/Prerequisite/Single/PrimaryAttribute/Category"
259
- },
260
- "value": {
261
- "description": "Required value of the attribute",
262
- "type": "integer",
263
- "minimum": 9
264
- },
265
- "display_option": {
266
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
267
- }
268
- },
269
- "required": [
270
- "tag",
271
- "category",
272
- "value"
273
- ],
274
- "additionalProperties": false
275
504
  },
276
- "Category": {
505
+ "minItems": 1
506
+ }
507
+ },
508
+ "required": [
509
+ "tag",
510
+ "list"
511
+ ],
512
+ "additionalProperties": false
513
+ },
514
+ "PersonalityTraitPrerequisites": {
515
+ "type": "object",
516
+ "properties": {
517
+ "tag": {
518
+ "const": "Plain"
519
+ },
520
+ "list": {
521
+ "type": "array",
522
+ "items": {
277
523
  "oneOf": [
278
524
  {
525
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/PersonalityTraitPrerequisiteGroup"
526
+ },
527
+ {
528
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
279
529
  "type": "object",
280
530
  "properties": {
281
531
  "tag": {
282
- "const": "Blessed"
532
+ "const": "Group"
533
+ },
534
+ "list": {
535
+ "type": "array",
536
+ "items": {
537
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/PersonalityTraitPrerequisiteGroup"
538
+ },
539
+ "minItems": 2
540
+ },
541
+ "translations": {
542
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
543
+ "type": "object",
544
+ "patternProperties": {
545
+ "^[a-z]{2}-[A-Z]{2}$": {
546
+ "type": "string",
547
+ "minLength": 1
548
+ }
549
+ },
550
+ "minProperties": 1,
551
+ "additionalProperties": false
283
552
  }
284
553
  },
285
554
  "required": [
286
- "tag"
555
+ "tag",
556
+ "list",
557
+ "translations"
287
558
  ],
288
559
  "additionalProperties": false
560
+ }
561
+ ]
562
+ },
563
+ "minItems": 1
564
+ }
565
+ },
566
+ "required": [
567
+ "tag",
568
+ "list"
569
+ ],
570
+ "additionalProperties": false
571
+ },
572
+ "SpellworkPrerequisites": {
573
+ "type": "object",
574
+ "properties": {
575
+ "tag": {
576
+ "const": "Plain"
577
+ },
578
+ "list": {
579
+ "type": "array",
580
+ "items": {
581
+ "oneOf": [
582
+ {
583
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/SpellworkPrerequisiteGroup"
289
584
  },
290
585
  {
586
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
291
587
  "type": "object",
292
588
  "properties": {
293
589
  "tag": {
294
- "const": "Magical"
590
+ "const": "Group"
591
+ },
592
+ "list": {
593
+ "type": "array",
594
+ "items": {
595
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/SpellworkPrerequisiteGroup"
596
+ },
597
+ "minItems": 2
598
+ },
599
+ "translations": {
600
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
601
+ "type": "object",
602
+ "patternProperties": {
603
+ "^[a-z]{2}-[A-Z]{2}$": {
604
+ "type": "string",
605
+ "minLength": 1
606
+ }
607
+ },
608
+ "minProperties": 1,
609
+ "additionalProperties": false
295
610
  }
296
611
  },
297
612
  "required": [
298
- "tag"
613
+ "tag",
614
+ "list",
615
+ "translations"
299
616
  ],
300
617
  "additionalProperties": false
301
618
  }
302
619
  ]
303
- }
620
+ },
621
+ "minItems": 1
622
+ }
623
+ },
624
+ "required": [
625
+ "tag",
626
+ "list"
627
+ ],
628
+ "additionalProperties": false
629
+ },
630
+ "LiturgyPrerequisites": {
631
+ "type": "object",
632
+ "properties": {
633
+ "tag": {
634
+ "const": "Plain"
304
635
  },
305
- "Pact": {
306
- "T": {
307
- "title": "Pact Prerequisite",
308
- "description": "Requires a specific pact.",
309
- "type": "object",
310
- "properties": {
311
- "tag": {
312
- "const": "Pact"
313
- },
314
- "category_id": {
315
- "description": "The required pact category's identifier.",
316
- "type": "integer",
317
- "minimum": 1
318
- },
319
- "domain_id": {
320
- "description": "The required domains' identifiers.",
321
- "type": "array",
322
- "items": {
323
- "$ref": "#/definitions/Prerequisite/Single/Pact/DomainId"
324
- }
636
+ "list": {
637
+ "type": "array",
638
+ "items": {
639
+ "oneOf": [
640
+ {
641
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LiturgyPrerequisiteGroup"
325
642
  },
326
- "level": {
327
- "description": "The required pact level.",
328
- "type": "integer",
329
- "minimum": 1
330
- },
331
- "display_option": {
332
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
333
- }
334
- },
335
- "required": [
336
- "tag",
337
- "category_id"
338
- ],
339
- "additionalProperties": false
340
- },
341
- "DomainId": {
342
- "description": "A domain's identifier.",
343
- "type": "integer",
344
- "minimum": 1
345
- }
346
- },
347
- "SocialStatus": {
348
- "T": {
349
- "title": "Social Status Prerequisite",
350
- "description": "Requires a minimum social status.",
351
- "type": "object",
352
- "properties": {
353
- "tag": {
354
- "const": "SocialStatus"
355
- },
356
- "id": {
357
- "description": "The minimum social status' identifier.",
358
- "type": "integer",
359
- "maximum": 5,
360
- "minimum": 2
361
- },
362
- "display_option": {
363
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
364
- }
365
- },
366
- "required": [
367
- "tag",
368
- "id"
369
- ],
370
- "additionalProperties": false
371
- }
372
- },
373
- "Influence": {
374
- "T": {
375
- "title": "Influence Prerequisite",
376
- "type": "object",
377
- "properties": {
378
- "tag": {
379
- "const": "Influence"
380
- },
381
- "id": {
382
- "description": "The influence's identifier.",
383
- "type": "integer",
384
- "minimum": 1
385
- },
386
- "active": {
387
- "description": "If the referenced influence must or must not be chosen.",
388
- "type": "boolean"
389
- },
390
- "display_option": {
391
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
392
- }
393
- },
394
- "required": [
395
- "tag",
396
- "id",
397
- "active"
398
- ],
399
- "additionalProperties": false
400
- }
401
- },
402
- "Activatable": {
403
- "T": {
404
- "title": "Activatable Prerequisite",
405
- "description": "Requires a specific advantage, disadvantage, special ability.",
406
- "type": "object",
407
- "properties": {
408
- "tag": {
409
- "const": "Activatable"
410
- },
411
- "id": {
412
- "description": "The activatable entry's identifier.",
413
- "$ref": "./_Identifier.schema.json#/definitions/Identifier/Group/Activatable"
414
- },
415
- "active": {
416
- "description": "If the required entry should be required to be active or inactive.",
417
- "type": "boolean"
418
- },
419
- "level": {
420
- "description": "The required minimum level of the entry.",
421
- "type": "integer",
422
- "minimum": 1
423
- },
424
- "display_option": {
425
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
426
- }
427
- },
428
- "required": [
429
- "tag",
430
- "id",
431
- "active"
432
- ],
433
- "additionalProperties": false
434
- }
435
- },
436
- "Rated": {
437
- "T": {
438
- "title": "Rated Prerequisite",
439
- "type": "object",
440
- "properties": {
441
- "tag": {
442
- "const": "Rated"
443
- },
444
- "id": {
445
- "description": "The rated entry's identifier.",
446
- "$ref": "./_Identifier.schema.json#/definitions/Identifier/Group/Rated"
447
- },
448
- "value": {
449
- "description": "The required minimum value.",
450
- "type": "integer",
451
- "minimum": 0
452
- },
453
- "display_option": {
454
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
455
- }
456
- },
457
- "required": [
458
- "tag",
459
- "id",
460
- "value"
461
- ],
462
- "additionalProperties": false
463
- }
464
- },
465
- "Enhancement": {
466
- "T": {
467
- "title": "Enhancement Prerequisite",
468
- "description": "Requires a specific enhancement from a skill.",
469
- "type": "object",
470
- "properties": {
471
- "tag": {
472
- "const": "Enhancement"
473
- },
474
- "skill": {
475
- "description": "The required skill's identifier.",
643
+ {
644
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
476
645
  "type": "object",
477
646
  "properties": {
478
647
  "tag": {
479
- "$ref": "#/definitions/Prerequisite/Single/Enhancement/SkillCategoryWithEnhancements"
648
+ "const": "Group"
480
649
  },
481
- "id": {
482
- "description": "The skill's identifier.",
483
- "type": "integer",
484
- "minimum": 1
650
+ "list": {
651
+ "type": "array",
652
+ "items": {
653
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LiturgyPrerequisiteGroup"
654
+ },
655
+ "minItems": 2
656
+ },
657
+ "translations": {
658
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
659
+ "type": "object",
660
+ "patternProperties": {
661
+ "^[a-z]{2}-[A-Z]{2}$": {
662
+ "type": "string",
663
+ "minLength": 1
664
+ }
665
+ },
666
+ "minProperties": 1,
667
+ "additionalProperties": false
485
668
  }
486
669
  },
487
670
  "required": [
488
671
  "tag",
489
- "id"
672
+ "list",
673
+ "translations"
490
674
  ],
491
675
  "additionalProperties": false
676
+ }
677
+ ]
678
+ },
679
+ "minItems": 1
680
+ }
681
+ },
682
+ "required": [
683
+ "tag",
684
+ "list"
685
+ ],
686
+ "additionalProperties": false
687
+ },
688
+ "InfluencePrerequisites": {
689
+ "type": "object",
690
+ "properties": {
691
+ "tag": {
692
+ "const": "Plain"
693
+ },
694
+ "list": {
695
+ "type": "array",
696
+ "items": {
697
+ "oneOf": [
698
+ {
699
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/InfluencePrerequisiteGroup"
492
700
  },
493
- "enhancement": {
494
- "description": "The required enhancement's identifier.",
701
+ {
702
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
495
703
  "type": "object",
496
704
  "properties": {
497
- "id": {
498
- "description": "The enhancement's identifier.",
499
- "type": "integer",
500
- "minimum": 1
705
+ "tag": {
706
+ "const": "Group"
707
+ },
708
+ "list": {
709
+ "type": "array",
710
+ "items": {
711
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/InfluencePrerequisiteGroup"
712
+ },
713
+ "minItems": 2
714
+ },
715
+ "translations": {
716
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
717
+ "type": "object",
718
+ "patternProperties": {
719
+ "^[a-z]{2}-[A-Z]{2}$": {
720
+ "type": "string",
721
+ "minLength": 1
722
+ }
723
+ },
724
+ "minProperties": 1,
725
+ "additionalProperties": false
501
726
  }
502
727
  },
503
728
  "required": [
504
- "id"
729
+ "tag",
730
+ "list",
731
+ "translations"
505
732
  ],
506
733
  "additionalProperties": false
507
- },
508
- "display_option": {
509
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
510
734
  }
511
- },
512
- "required": [
513
- "tag",
514
- "skill",
515
- "enhancement"
516
- ],
517
- "additionalProperties": false
518
- },
519
- "SkillCategoryWithEnhancements": {
520
- "enum": [
521
- "Spell",
522
- "Ritual",
523
- "LiturgicalChant",
524
- "Ceremony"
525
735
  ]
526
- }
527
- },
528
- "EnhancementInternal": {
529
- "T": {
530
- "title": "Internal Enhancement Prerequisite",
531
- "description": "Requires a specific enhancement from a skill. This can only be used by an\nenhancement to require another enhancement from the same skill.",
532
- "type": "object",
533
- "properties": {
534
- "tag": {
535
- "const": "EnhancementInternal"
536
- },
537
- "id": {
538
- "description": "The enhancement's identifier.",
539
- "type": "integer",
540
- "minimum": 1
541
- }
542
- },
543
- "required": [
544
- "tag",
545
- "id"
546
- ],
547
- "additionalProperties": false
548
- }
549
- },
550
- "Ineligible": {
551
- "T": {
552
- "title": "Ineligible Prerequisite",
553
- "description": "This is a placeholder for required things that can never happen with the\ncurrent set of crunch elements and rules, e. g. if a race is required\nthat does not yet exist as a crunch element.\n\nA display option must be set.",
554
- "type": "object",
555
- "properties": {
556
- "tag": {
557
- "const": "Ineligible"
558
- },
559
- "display_option": {
560
- "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
561
- }
562
- },
563
- "required": [
564
- "tag",
565
- "display_option"
566
- ],
567
- "additionalProperties": false
568
- }
569
- }
570
- },
571
- "Group": {
572
- "DerivedCharacteristic": {
573
- "oneOf": [
574
- {
575
- "$ref": "#/definitions/Prerequisite/Single/Rule/T"
576
- }
577
- ]
578
- },
579
- "Publication": {
580
- "oneOf": [
581
- {
582
- "$ref": "#/definitions/Prerequisite/Single/Publication/T"
583
- }
584
- ]
585
- },
586
- "ArcaneTradition": {
587
- "oneOf": [
588
- {
589
- "$ref": "#/definitions/Prerequisite/Single/Sex/T"
590
- },
591
- {
592
- "$ref": "#/definitions/Prerequisite/Single/Culture/T"
593
- }
594
- ]
595
- },
596
- "Spellwork": {
597
- "oneOf": [
598
- {
599
- "$ref": "#/definitions/Prerequisite/Single/Rule/T"
600
- },
601
- {
602
- "$ref": "#/definitions/Prerequisite/Single/Rated/T"
603
- }
604
- ]
605
- },
606
- "Liturgy": {
607
- "oneOf": [
608
- {
609
- "$ref": "#/definitions/Prerequisite/Single/Rule/T"
610
- }
611
- ]
612
- },
613
- "Language": {
614
- "oneOf": [
615
- {
616
- "$ref": "#/definitions/Prerequisite/Single/Ineligible/T"
617
- },
618
- {
619
- "$ref": "#/definitions/Prerequisite/Single/Race/T"
620
- },
621
- {
622
- "$ref": "#/definitions/Prerequisite/Single/Activatable/T"
623
- }
624
- ]
625
- },
626
- "GeodeRitual": {
627
- "oneOf": [
628
- {
629
- "$ref": "#/definitions/Prerequisite/Single/Influence/T"
630
- }
631
- ]
632
- },
633
- "Enhancement": {
634
- "oneOf": [
635
- {
636
- "$ref": "#/definitions/Prerequisite/Single/EnhancementInternal/T"
637
- }
638
- ]
736
+ },
737
+ "minItems": 1
639
738
  }
640
739
  },
641
- "Collection": {},
642
- "GroupCollection": {
643
- "DerivedCharacteristic": {
644
- "type": "object",
645
- "properties": {
646
- "tag": {
647
- "const": "Plain"
648
- },
649
- "value": {
650
- "type": "array",
651
- "items": {
652
- "$ref": "#/definitions/Prerequisite/Group/DerivedCharacteristic"
653
- },
654
- "minItems": 1
655
- }
656
- },
657
- "required": [
658
- "tag",
659
- "value"
660
- ],
661
- "additionalProperties": false
662
- },
663
- "Publication": {
740
+ "required": [
741
+ "tag",
742
+ "list"
743
+ ],
744
+ "additionalProperties": false
745
+ },
746
+ "LanguagePrerequisites": {
747
+ "oneOf": [
748
+ {
664
749
  "type": "object",
665
750
  "properties": {
666
751
  "tag": {
667
752
  "const": "Plain"
668
753
  },
669
- "value": {
754
+ "list": {
670
755
  "type": "array",
671
756
  "items": {
672
- "$ref": "#/definitions/Prerequisite/Group/Publication"
757
+ "oneOf": [
758
+ {
759
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LanguagePrerequisiteGroup"
760
+ },
761
+ {
762
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
763
+ "type": "object",
764
+ "properties": {
765
+ "tag": {
766
+ "const": "Group"
767
+ },
768
+ "list": {
769
+ "type": "array",
770
+ "items": {
771
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LanguagePrerequisiteGroup"
772
+ },
773
+ "minItems": 2
774
+ },
775
+ "translations": {
776
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
777
+ "type": "object",
778
+ "patternProperties": {
779
+ "^[a-z]{2}-[A-Z]{2}$": {
780
+ "type": "string",
781
+ "minLength": 1
782
+ }
783
+ },
784
+ "minProperties": 1,
785
+ "additionalProperties": false
786
+ }
787
+ },
788
+ "required": [
789
+ "tag",
790
+ "list",
791
+ "translations"
792
+ ],
793
+ "additionalProperties": false
794
+ }
795
+ ]
673
796
  },
674
797
  "minItems": 1
675
798
  }
676
799
  },
677
800
  "required": [
678
801
  "tag",
679
- "value"
802
+ "list"
680
803
  ],
681
804
  "additionalProperties": false
682
805
  },
683
- "ArcaneTradition": {
806
+ {
684
807
  "type": "object",
685
808
  "properties": {
686
809
  "tag": {
687
- "const": "Plain"
810
+ "const": "ByLevel"
688
811
  },
689
- "value": {
812
+ "list": {
690
813
  "type": "array",
691
814
  "items": {
692
- "$ref": "#/definitions/Prerequisite/Group/ArcaneTradition"
815
+ "type": "object",
816
+ "properties": {
817
+ "level": {
818
+ "type": "integer",
819
+ "minimum": 1
820
+ },
821
+ "prerequisites": {
822
+ "type": "array",
823
+ "items": {
824
+ "oneOf": [
825
+ {
826
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LanguagePrerequisiteGroup"
827
+ },
828
+ {
829
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
830
+ "type": "object",
831
+ "properties": {
832
+ "tag": {
833
+ "const": "Group"
834
+ },
835
+ "list": {
836
+ "type": "array",
837
+ "items": {
838
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/LanguagePrerequisiteGroup"
839
+ },
840
+ "minItems": 2
841
+ },
842
+ "translations": {
843
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
844
+ "type": "object",
845
+ "patternProperties": {
846
+ "^[a-z]{2}-[A-Z]{2}$": {
847
+ "type": "string",
848
+ "minLength": 1
849
+ }
850
+ },
851
+ "minProperties": 1,
852
+ "additionalProperties": false
853
+ }
854
+ },
855
+ "required": [
856
+ "tag",
857
+ "list",
858
+ "translations"
859
+ ],
860
+ "additionalProperties": false
861
+ }
862
+ ]
863
+ },
864
+ "minItems": 1
865
+ }
866
+ },
867
+ "required": [
868
+ "level",
869
+ "prerequisites"
870
+ ],
871
+ "additionalProperties": false
693
872
  },
694
873
  "minItems": 1
695
874
  }
696
875
  },
697
876
  "required": [
698
877
  "tag",
699
- "value"
878
+ "list"
700
879
  ],
701
880
  "additionalProperties": false
881
+ }
882
+ ]
883
+ },
884
+ "AnimistPowerPrerequisites": {
885
+ "type": "object",
886
+ "properties": {
887
+ "tag": {
888
+ "const": "Plain"
702
889
  },
703
- "Spellwork": {
704
- "type": "object",
705
- "properties": {
706
- "tag": {
707
- "const": "Plain"
708
- },
709
- "value": {
710
- "type": "array",
711
- "items": {
712
- "$ref": "#/definitions/Prerequisite/Group/Spellwork"
890
+ "list": {
891
+ "type": "array",
892
+ "items": {
893
+ "oneOf": [
894
+ {
895
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AnimistPowerPrerequisiteGroup"
713
896
  },
714
- "minItems": 1
715
- }
897
+ {
898
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
899
+ "type": "object",
900
+ "properties": {
901
+ "tag": {
902
+ "const": "Group"
903
+ },
904
+ "list": {
905
+ "type": "array",
906
+ "items": {
907
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/AnimistPowerPrerequisiteGroup"
908
+ },
909
+ "minItems": 2
910
+ },
911
+ "translations": {
912
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
913
+ "type": "object",
914
+ "patternProperties": {
915
+ "^[a-z]{2}-[A-Z]{2}$": {
916
+ "type": "string",
917
+ "minLength": 1
918
+ }
919
+ },
920
+ "minProperties": 1,
921
+ "additionalProperties": false
922
+ }
923
+ },
924
+ "required": [
925
+ "tag",
926
+ "list",
927
+ "translations"
928
+ ],
929
+ "additionalProperties": false
930
+ }
931
+ ]
716
932
  },
717
- "required": [
718
- "tag",
719
- "value"
720
- ],
721
- "additionalProperties": false
933
+ "minItems": 1
934
+ }
935
+ },
936
+ "required": [
937
+ "tag",
938
+ "list"
939
+ ],
940
+ "additionalProperties": false
941
+ },
942
+ "GeodeRitualPrerequisites": {
943
+ "type": "object",
944
+ "properties": {
945
+ "tag": {
946
+ "const": "Plain"
722
947
  },
723
- "Liturgy": {
724
- "type": "object",
725
- "properties": {
726
- "tag": {
727
- "const": "Plain"
728
- },
729
- "value": {
730
- "type": "array",
731
- "items": {
732
- "$ref": "#/definitions/Prerequisite/Group/Liturgy"
948
+ "list": {
949
+ "type": "array",
950
+ "items": {
951
+ "oneOf": [
952
+ {
953
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeodeRitualPrerequisiteGroup"
733
954
  },
734
- "minItems": 1
735
- }
736
- },
737
- "required": [
738
- "tag",
739
- "value"
740
- ],
741
- "additionalProperties": false
742
- },
743
- "Language": {
744
- "oneOf": [
745
- {
746
- "type": "object",
747
- "properties": {
748
- "tag": {
749
- "const": "Plain"
750
- },
751
- "value": {
752
- "type": "array",
753
- "items": {
754
- "$ref": "#/definitions/Prerequisite/Group/Language"
955
+ {
956
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
957
+ "type": "object",
958
+ "properties": {
959
+ "tag": {
960
+ "const": "Group"
755
961
  },
756
- "minItems": 1
757
- }
758
- },
759
- "required": [
760
- "tag",
761
- "value"
762
- ],
763
- "additionalProperties": false
764
- },
765
- {
766
- "type": "object",
767
- "properties": {
768
- "tag": {
769
- "const": "ByLevel"
770
- },
771
- "value": {
772
- "type": "array",
773
- "items": {
962
+ "list": {
963
+ "type": "array",
964
+ "items": {
965
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/GeodeRitualPrerequisiteGroup"
966
+ },
967
+ "minItems": 2
968
+ },
969
+ "translations": {
970
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
774
971
  "type": "object",
775
- "properties": {
776
- "level": {
777
- "type": "integer",
778
- "minimum": 1
779
- },
780
- "prerequisites": {
781
- "type": "array",
782
- "items": {
783
- "$ref": "#/definitions/Prerequisite/Group/Language"
784
- }
972
+ "patternProperties": {
973
+ "^[a-z]{2}-[A-Z]{2}$": {
974
+ "type": "string",
975
+ "minLength": 1
785
976
  }
786
977
  },
787
- "required": [
788
- "level",
789
- "prerequisites"
790
- ],
978
+ "minProperties": 1,
791
979
  "additionalProperties": false
792
- },
793
- "minItems": 1
794
- }
795
- },
796
- "required": [
797
- "tag",
798
- "value"
799
- ],
800
- "additionalProperties": false
801
- }
802
- ]
803
- },
804
- "GeodeRitual": {
805
- "type": "object",
806
- "properties": {
807
- "tag": {
808
- "const": "Plain"
809
- },
810
- "value": {
811
- "type": "array",
812
- "items": {
813
- "$ref": "#/definitions/Prerequisite/Group/GeodeRitual"
814
- },
815
- "minItems": 1
816
- }
980
+ }
981
+ },
982
+ "required": [
983
+ "tag",
984
+ "list",
985
+ "translations"
986
+ ],
987
+ "additionalProperties": false
988
+ }
989
+ ]
817
990
  },
818
- "required": [
819
- "tag",
820
- "value"
821
- ],
822
- "additionalProperties": false
991
+ "minItems": 1
992
+ }
993
+ },
994
+ "required": [
995
+ "tag",
996
+ "list"
997
+ ],
998
+ "additionalProperties": false
999
+ },
1000
+ "EnhancementPrerequisites": {
1001
+ "type": "object",
1002
+ "properties": {
1003
+ "tag": {
1004
+ "const": "Plain"
823
1005
  },
824
- "Enhancement": {
825
- "type": "object",
826
- "properties": {
827
- "tag": {
828
- "const": "Plain"
829
- },
830
- "value": {
831
- "type": "array",
832
- "items": {
833
- "$ref": "#/definitions/Prerequisite/Group/Enhancement"
1006
+ "list": {
1007
+ "type": "array",
1008
+ "items": {
1009
+ "oneOf": [
1010
+ {
1011
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/EnhancementPrerequisiteGroup"
834
1012
  },
835
- "minItems": 1
836
- }
1013
+ {
1014
+ "description": "A prerequisite group has no influence on validation logic. It serves as a\nsingle unit for displaying purposes, where the source uses a prerequisites\nitem that cannot be represented as a single prerequisite.",
1015
+ "type": "object",
1016
+ "properties": {
1017
+ "tag": {
1018
+ "const": "Group"
1019
+ },
1020
+ "list": {
1021
+ "type": "array",
1022
+ "items": {
1023
+ "$ref": "./prerequisites/PrerequisiteGroups.schema.json#/definitions/EnhancementPrerequisiteGroup"
1024
+ },
1025
+ "minItems": 2
1026
+ },
1027
+ "translations": {
1028
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
1029
+ "type": "object",
1030
+ "patternProperties": {
1031
+ "^[a-z]{2}-[A-Z]{2}$": {
1032
+ "type": "string",
1033
+ "minLength": 1
1034
+ }
1035
+ },
1036
+ "minProperties": 1,
1037
+ "additionalProperties": false
1038
+ }
1039
+ },
1040
+ "required": [
1041
+ "tag",
1042
+ "list",
1043
+ "translations"
1044
+ ],
1045
+ "additionalProperties": false
1046
+ }
1047
+ ]
837
1048
  },
838
- "required": [
839
- "tag",
840
- "value"
841
- ],
842
- "additionalProperties": false
1049
+ "minItems": 1
843
1050
  }
844
- }
1051
+ },
1052
+ "required": [
1053
+ "tag",
1054
+ "list"
1055
+ ],
1056
+ "additionalProperties": false
845
1057
  }
846
1058
  }
847
1059
  }