optolith-database-schema 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/lib/config.d.ts +302 -250
  3. package/lib/config.js +302 -250
  4. package/lib/main.d.ts +3 -2
  5. package/lib/main.js +1 -1
  6. package/lib/types/Advantage.d.ts +23 -25
  7. package/lib/types/AnimalDisease.d.ts +18 -212
  8. package/lib/types/AnimalType.d.ts +9 -13
  9. package/lib/types/ArcaneBardTradition.d.ts +3 -27
  10. package/lib/types/ArcaneDancerTradition.d.ts +3 -27
  11. package/lib/types/Aspect.d.ts +14 -19
  12. package/lib/types/Attribute.d.ts +17 -23
  13. package/lib/types/Blessing.d.ts +78 -83
  14. package/lib/types/Cantrip.d.ts +129 -161
  15. package/lib/types/Ceremony.d.ts +55 -88
  16. package/lib/types/CombatTechnique_Close.d.ts +30 -39
  17. package/lib/types/CombatTechnique_Ranged.d.ts +28 -26
  18. package/lib/types/Condition.d.ts +18 -31
  19. package/lib/types/Continent.d.ts +9 -13
  20. package/lib/types/Culture.d.ts +168 -290
  21. package/lib/types/DerivedCharacteristic.d.ts +4 -10
  22. package/lib/types/Disadvantage.d.ts +20 -24
  23. package/lib/types/Disease.d.ts +5 -140
  24. package/lib/types/Element.d.ts +9 -13
  25. package/lib/types/ExperienceLevel.d.ts +3 -9
  26. package/lib/types/EyeColor.d.ts +9 -13
  27. package/lib/types/FamiliarsTrick.d.ts +201 -290
  28. package/lib/types/HairColor.d.ts +9 -13
  29. package/lib/types/Lessons_Curriculum.d.ts +73 -138
  30. package/lib/types/Lessons_Guideline.d.ts +9 -13
  31. package/lib/types/LiturgicalChant.d.ts +55 -88
  32. package/lib/types/Locale.d.ts +1 -1
  33. package/lib/types/Locale.js +1 -1
  34. package/lib/types/MetaCondition.d.ts +18 -31
  35. package/lib/types/PactCategory.d.ts +48 -62
  36. package/lib/types/Patron.d.ts +66 -76
  37. package/lib/types/PatronCategory.d.ts +11 -21
  38. package/lib/types/PersonalityTrait.d.ts +31 -39
  39. package/lib/types/Profession.d.ts +296 -435
  40. package/lib/types/Property.d.ts +9 -13
  41. package/lib/types/Race.d.ts +99 -194
  42. package/lib/types/Region.d.ts +9 -13
  43. package/lib/types/Ritual.d.ts +58 -83
  44. package/lib/types/Service.d.ts +20 -25
  45. package/lib/types/SexPractice.d.ts +26 -34
  46. package/lib/types/Skill.d.ts +65 -90
  47. package/lib/types/SkillGroup.d.ts +13 -18
  48. package/lib/types/SkillModificationLevel.d.ts +72 -76
  49. package/lib/types/SocialStatus.d.ts +9 -13
  50. package/lib/types/Spell.d.ts +58 -83
  51. package/lib/types/State.d.ts +14 -20
  52. package/lib/types/Talisman.d.ts +44 -54
  53. package/lib/types/TargetCategory.d.ts +21 -16
  54. package/lib/types/UI.d.ts +1 -5
  55. package/lib/types/_Activatable.d.ts +607 -1201
  56. package/lib/types/_Activatable.js +0 -12
  57. package/lib/types/_ActivatableSelectOptionCategory.d.ts +356 -0
  58. package/lib/types/{prerequisites/single/CommonSuggestedByRCPPrerequisite.js → _ActivatableSelectOptionCategory.js} +0 -0
  59. package/lib/types/_ActivatableSkill.d.ts +24 -1016
  60. package/lib/types/_ActivatableSkill.js +1 -32
  61. package/lib/types/_ActivatableSkillCastingTime.d.ts +69 -0
  62. package/lib/types/_ActivatableSkillCastingTime.js +5 -0
  63. package/lib/types/_ActivatableSkillCheckResultBased.d.ts +41 -0
  64. package/lib/types/{equipment/_Armor.js → _ActivatableSkillCheckResultBased.js} +0 -3
  65. package/lib/types/_ActivatableSkillCost.d.ts +223 -0
  66. package/lib/types/_ActivatableSkillCost.js +1 -0
  67. package/lib/types/_ActivatableSkillDuration.d.ts +138 -0
  68. package/lib/types/_ActivatableSkillDuration.js +13 -0
  69. package/lib/types/_ActivatableSkillEffect.d.ts +68 -0
  70. package/lib/types/_ActivatableSkillEffect.js +1 -0
  71. package/lib/types/_ActivatableSkillRange.d.ts +103 -0
  72. package/lib/types/_ActivatableSkillRange.js +5 -0
  73. package/lib/types/_ActivatableSkillTargetCategory.d.ts +35 -0
  74. package/lib/types/_ActivatableSkillTargetCategory.js +1 -0
  75. package/lib/types/_AlternativeNames.d.ts +11 -0
  76. package/lib/types/_AlternativeNames.js +1 -0
  77. package/lib/types/_ArcaneTradition.d.ts +28 -0
  78. package/lib/types/_ArcaneTradition.js +4 -0
  79. package/lib/types/_Blessed.d.ts +22 -0
  80. package/lib/types/_Blessed.js +1 -0
  81. package/lib/types/_DiseasePoison.d.ts +116 -0
  82. package/lib/types/_DiseasePoison.js +5 -0
  83. package/lib/types/_Enhancements.d.ts +16 -20
  84. package/lib/types/_I18n.d.ts +1 -5
  85. package/lib/types/_Identifier.d.ts +32 -0
  86. package/lib/types/_Identifier.js +32 -0
  87. package/lib/types/_Influence.d.ts +27 -32
  88. package/lib/types/_LocaleMap.d.ts +10 -0
  89. package/lib/types/_LocaleMap.js +1 -0
  90. package/lib/types/_NonEmptyString.d.ts +9 -0
  91. package/lib/types/_NonEmptyString.js +1 -0
  92. package/lib/types/_Prerequisite.d.ts +61 -65
  93. package/lib/types/_ResponsiveText.d.ts +54 -0
  94. package/lib/types/_ResponsiveText.js +1 -0
  95. package/lib/types/_SimpleReferences.d.ts +334 -0
  96. package/lib/types/_SimpleReferences.js +1 -0
  97. package/lib/types/_SkillCheck.d.ts +6 -11
  98. package/lib/types/_Spellwork.d.ts +17 -0
  99. package/lib/types/_Spellwork.js +1 -0
  100. package/lib/types/equipment/EquipmentPackage.d.ts +24 -28
  101. package/lib/types/equipment/item/Alchemicum.d.ts +6 -0
  102. package/lib/types/equipment/item/Alchemicum.js +5 -0
  103. package/lib/types/equipment/item/Ammunition.d.ts +31 -0
  104. package/lib/types/equipment/item/Ammunition.js +5 -0
  105. package/lib/types/equipment/item/Animal.d.ts +18 -0
  106. package/lib/types/equipment/item/Animal.js +5 -0
  107. package/lib/types/equipment/item/AnimalCare.d.ts +48 -0
  108. package/lib/types/equipment/item/AnimalCare.js +5 -0
  109. package/lib/types/equipment/item/Armor.d.ts +185 -0
  110. package/lib/types/equipment/item/Armor.js +5 -0
  111. package/lib/types/equipment/item/BandageOrRemedy.d.ts +6 -0
  112. package/lib/types/equipment/item/BandageOrRemedy.js +5 -0
  113. package/lib/types/equipment/item/Book.d.ts +60 -0
  114. package/lib/types/equipment/item/Book.js +5 -0
  115. package/lib/types/equipment/item/CeremonialItem.d.ts +6 -0
  116. package/lib/types/equipment/item/CeremonialItem.js +5 -0
  117. package/lib/types/equipment/item/Clothes.d.ts +6 -0
  118. package/lib/types/equipment/item/Clothes.js +5 -0
  119. package/lib/types/equipment/item/Container.d.ts +6 -0
  120. package/lib/types/equipment/item/Container.js +5 -0
  121. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +41 -0
  122. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +5 -0
  123. package/lib/types/equipment/item/GemOrPreciousStone.d.ts +43 -0
  124. package/lib/types/equipment/item/GemOrPreciousStone.js +5 -0
  125. package/lib/types/equipment/item/HealingHerb.d.ts +6 -0
  126. package/lib/types/equipment/item/HealingHerb.js +5 -0
  127. package/lib/types/equipment/item/Illumination.d.ts +6 -0
  128. package/lib/types/equipment/item/Illumination.js +5 -0
  129. package/lib/types/equipment/item/Jewelry.d.ts +60 -0
  130. package/lib/types/equipment/item/Jewelry.js +5 -0
  131. package/lib/types/equipment/item/Liebesspielzeug.d.ts +6 -0
  132. package/lib/types/equipment/item/Liebesspielzeug.js +5 -0
  133. package/lib/types/equipment/item/LuxuryGood.d.ts +6 -0
  134. package/lib/types/equipment/item/LuxuryGood.js +5 -0
  135. package/lib/types/equipment/item/MagicalArtifact.d.ts +39 -0
  136. package/lib/types/equipment/item/MagicalArtifact.js +5 -0
  137. package/lib/types/equipment/item/MusicalInstrument.d.ts +27 -0
  138. package/lib/types/equipment/item/MusicalInstrument.js +5 -0
  139. package/lib/types/equipment/item/OrienteeringAid.d.ts +6 -0
  140. package/lib/types/equipment/item/OrienteeringAid.js +5 -0
  141. package/lib/types/equipment/item/Poison.d.ts +163 -0
  142. package/lib/types/{Poison.js → equipment/item/Poison.js} +1 -1
  143. package/lib/types/equipment/item/RopeOrChain.d.ts +6 -0
  144. package/lib/types/equipment/item/RopeOrChain.js +5 -0
  145. package/lib/types/equipment/item/Stationary.d.ts +6 -0
  146. package/lib/types/equipment/item/Stationary.js +5 -0
  147. package/lib/types/equipment/item/ThievesTool.d.ts +6 -0
  148. package/lib/types/equipment/item/ThievesTool.js +5 -0
  149. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +56 -0
  150. package/lib/types/equipment/item/ToolOfTheTrade.js +5 -0
  151. package/lib/types/equipment/item/TravelGearOrTool.d.ts +6 -0
  152. package/lib/types/equipment/item/TravelGearOrTool.js +5 -0
  153. package/lib/types/equipment/item/Vehicle.d.ts +18 -0
  154. package/lib/types/equipment/item/Vehicle.js +5 -0
  155. package/lib/types/equipment/item/Weapon.d.ts +152 -0
  156. package/lib/types/equipment/item/Weapon.js +5 -0
  157. package/lib/types/equipment/item/WeaponAccessory.d.ts +6 -0
  158. package/lib/types/equipment/item/WeaponAccessory.js +5 -0
  159. package/lib/types/equipment/item/_Item.d.ts +157 -0
  160. package/lib/types/equipment/item/_Item.js +1 -0
  161. package/lib/types/equipment/item/_MeleeWeapon.d.ts +113 -0
  162. package/lib/types/equipment/item/_MeleeWeapon.js +4 -0
  163. package/lib/types/equipment/item/_RangedWeapon.d.ts +108 -0
  164. package/lib/types/equipment/item/_RangedWeapon.js +4 -0
  165. package/lib/types/equipment/item/_Weapon.d.ts +57 -0
  166. package/lib/types/equipment/{_Weapon.js → item/_Weapon.js} +0 -3
  167. package/lib/types/equipment/item/sub/ArmorType.d.ts +36 -0
  168. package/lib/types/equipment/{ArmorType.js → item/sub/ArmorType.js} +1 -1
  169. package/lib/types/equipment/item/sub/Reach.d.ts +27 -0
  170. package/lib/types/equipment/{Reach.js → item/sub/Reach.js} +1 -1
  171. package/lib/types/magicalActions/AnimistPower.d.ts +168 -225
  172. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +9 -13
  173. package/lib/types/magicalActions/Curse.d.ts +115 -184
  174. package/lib/types/magicalActions/DominationRitual.d.ts +98 -136
  175. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +79 -123
  176. package/lib/types/magicalActions/GeodeRitual.d.ts +124 -111
  177. package/lib/types/magicalActions/JesterTrick.d.ts +114 -109
  178. package/lib/types/magicalActions/MagicalDance.d.ts +71 -138
  179. package/lib/types/magicalActions/MagicalMelody.d.ts +65 -75
  180. package/lib/types/magicalActions/MagicalRune.d.ts +155 -189
  181. package/lib/types/magicalActions/ZibiljaRitual.d.ts +57 -65
  182. package/lib/types/magicalActions/_MusicTradition.d.ts +23 -13
  183. package/lib/types/magicalActions/_SkillReference.d.ts +1 -1
  184. package/lib/types/prerequisites/DisplayOption.d.ts +6 -8
  185. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +194 -16
  186. package/lib/types/prerequisites/single/ActivatablePrerequisite.d.ts +0 -3
  187. package/lib/types/prerequisites/single/AnimistPowerPrerequisite.d.ts +0 -1
  188. package/lib/types/prerequisites/single/CulturePrerequisite.d.ts +0 -1
  189. package/lib/types/prerequisites/single/EnhancementPrerequisite.d.ts +17 -14
  190. package/lib/types/prerequisites/single/InfluencePrerequisite.d.ts +0 -1
  191. package/lib/types/prerequisites/single/PactPrerequisite.d.ts +5 -14
  192. package/lib/types/prerequisites/single/PrimaryAttributePrerequisite.d.ts +6 -6
  193. package/lib/types/prerequisites/single/PublicationPrerequisite.d.ts +0 -1
  194. package/lib/types/prerequisites/single/RacePrerequisite.d.ts +0 -1
  195. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +32 -41
  196. package/lib/types/prerequisites/single/RulePrerequisite.d.ts +0 -1
  197. package/lib/types/prerequisites/single/SexPrerequisite.d.ts +0 -1
  198. package/lib/types/prerequisites/single/SocialStatusPrerequisite.d.ts +0 -1
  199. package/lib/types/prerequisites/single/StatePrerequisite.d.ts +0 -1
  200. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +10 -14
  201. package/lib/types/prerequisites/single/TraditionPrerequisite.d.ts +20 -12
  202. package/lib/types/rule/CoreRule.d.ts +198 -206
  203. package/lib/types/rule/FocusRule.d.ts +19 -24
  204. package/lib/types/rule/FocusRule_Subject.d.ts +9 -13
  205. package/lib/types/rule/OptionalRule.d.ts +12 -35
  206. package/lib/types/rule/_Rule.d.ts +19 -0
  207. package/lib/types/rule/_Rule.js +1 -0
  208. package/lib/types/source/Publication.d.ts +34 -48
  209. package/lib/types/source/_Erratum.d.ts +2 -1
  210. package/lib/types/source/_PublicationRef.d.ts +41 -37
  211. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +13 -17
  212. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +8 -12
  213. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +8 -12
  214. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +8 -12
  215. package/lib/types/specialAbility/AncestorGlyph.d.ts +8 -12
  216. package/lib/types/specialAbility/BlessedTradition.d.ts +92 -123
  217. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +9 -13
  218. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +8 -12
  219. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +13 -17
  220. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +10 -18
  221. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +1 -1
  222. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +8 -12
  223. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +8 -12
  224. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +8 -12
  225. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +8 -12
  226. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +8 -12
  227. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +8 -12
  228. package/lib/types/specialAbility/LycantropicGift.d.ts +8 -12
  229. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +8 -12
  230. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +8 -12
  231. package/lib/types/specialAbility/MagicalTradition.d.ts +38 -58
  232. package/lib/types/specialAbility/PactGift.d.ts +75 -62
  233. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +16 -23
  234. package/lib/types/specialAbility/Sermon.d.ts +8 -12
  235. package/lib/types/specialAbility/SexSpecialAbility.d.ts +8 -12
  236. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +8 -12
  237. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +8 -12
  238. package/lib/types/specialAbility/VampiricGift.d.ts +8 -12
  239. package/lib/types/specialAbility/Vision.d.ts +8 -12
  240. package/lib/types/specialAbility/_Tradition.d.ts +12 -0
  241. package/lib/types/specialAbility/_Tradition.js +1 -0
  242. package/lib/types/specialAbility/sub/Language.d.ts +78 -104
  243. package/lib/types/specialAbility/sub/Script.d.ts +24 -51
  244. package/lib/types/specialAbility/sub/TradeSecret.d.ts +14 -20
  245. package/lib/types/specialAbility/sub/_LanguageScript.d.ts +13 -0
  246. package/lib/types/specialAbility/sub/_LanguageScript.js +1 -0
  247. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +20 -24
  248. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +20 -24
  249. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +20 -24
  250. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +31 -34
  251. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +20 -24
  252. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +45 -25
  253. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +20 -24
  254. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +20 -24
  255. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +20 -24
  256. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +20 -24
  257. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +20 -24
  258. package/lib/types/traditionArtifacts/SickleRitual.d.ts +20 -24
  259. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +20 -24
  260. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +21 -25
  261. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +21 -25
  262. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +20 -24
  263. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +20 -24
  264. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +19 -24
  265. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +24 -16
  266. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +9 -13
  267. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +9 -13
  268. package/lib/types/traditionArtifacts/sub/Brew.d.ts +9 -13
  269. package/lib/validation/schema.d.ts +11 -2
  270. package/lib/validation/schema.js +16 -4
  271. package/package.json +8 -7
  272. package/schema/Advantage.schema.json +49 -42
  273. package/schema/AnimalDisease.schema.json +17 -325
  274. package/schema/AnimalType.schema.json +17 -15
  275. package/schema/ArcaneBardTradition.schema.json +4 -42
  276. package/schema/ArcaneDancerTradition.schema.json +4 -42
  277. package/schema/Aspect.schema.json +21 -20
  278. package/schema/Attribute.schema.json +27 -27
  279. package/schema/Blessing.schema.json +188 -154
  280. package/schema/Cantrip.schema.json +333 -294
  281. package/schema/Ceremony.schema.json +90 -149
  282. package/schema/CombatTechnique_Close.schema.json +56 -67
  283. package/schema/CombatTechnique_Ranged.schema.json +46 -30
  284. package/schema/Condition.schema.json +46 -50
  285. package/schema/Continent.schema.json +18 -15
  286. package/schema/Culture.schema.json +408 -487
  287. package/schema/DerivedCharacteristic.schema.json +8 -8
  288. package/schema/Disadvantage.schema.json +45 -40
  289. package/schema/Disease.schema.json +7 -193
  290. package/schema/Element.schema.json +18 -15
  291. package/schema/ExperienceLevel.schema.json +5 -5
  292. package/schema/EyeColor.schema.json +17 -15
  293. package/schema/FamiliarsTrick.schema.json +491 -513
  294. package/schema/HairColor.schema.json +17 -15
  295. package/schema/Kirchenpraegung.schema.json +4 -4
  296. package/schema/Lessons_Curriculum.schema.json +202 -232
  297. package/schema/Lessons_Guideline.schema.json +17 -15
  298. package/schema/LiturgicalChant.schema.json +90 -149
  299. package/schema/Locale.schema.json +5 -5
  300. package/schema/MetaCondition.schema.json +46 -50
  301. package/schema/PactCategory.schema.json +101 -89
  302. package/schema/Patron.schema.json +239 -229
  303. package/schema/PatronCategory.schema.json +18 -27
  304. package/schema/PersonalityTrait.schema.json +50 -57
  305. package/schema/Profession.schema.json +810 -993
  306. package/schema/Property.schema.json +18 -16
  307. package/schema/Race.schema.json +200 -308
  308. package/schema/Region.schema.json +17 -15
  309. package/schema/Ritual.schema.json +111 -158
  310. package/schema/Service.schema.json +55 -51
  311. package/schema/SexPractice.schema.json +37 -39
  312. package/schema/Skill.schema.json +88 -89
  313. package/schema/SkillGroup.schema.json +23 -22
  314. package/schema/SkillModificationLevel.schema.json +93 -82
  315. package/schema/SocialStatus.schema.json +17 -15
  316. package/schema/Spell.schema.json +110 -158
  317. package/schema/State.schema.json +26 -25
  318. package/schema/Talisman.schema.json +115 -121
  319. package/schema/TargetCategory.schema.json +35 -20
  320. package/schema/UI.schema.json +830 -834
  321. package/schema/_Activatable.schema.json +1480 -2166
  322. package/schema/_ActivatableSelectOptionCategory.schema.json +1124 -0
  323. package/schema/_ActivatableSkill.schema.json +96 -1692
  324. package/schema/_ActivatableSkillCastingTime.schema.json +177 -0
  325. package/schema/_ActivatableSkillCheckResultBased.schema.json +101 -0
  326. package/schema/_ActivatableSkillCost.schema.json +448 -0
  327. package/schema/_ActivatableSkillDuration.schema.json +335 -0
  328. package/schema/_ActivatableSkillEffect.schema.json +153 -0
  329. package/schema/_ActivatableSkillRange.schema.json +221 -0
  330. package/schema/_ActivatableSkillTargetCategory.schema.json +117 -0
  331. package/schema/_AlternativeNames.schema.json +23 -0
  332. package/schema/_ArcaneTradition.schema.json +51 -0
  333. package/schema/_Blessed.schema.json +64 -0
  334. package/schema/_CommonnessRatedAdvantageDisadvantage.schema.json +2 -2
  335. package/schema/_Dice.schema.json +3 -3
  336. package/schema/_DiseasePoison.schema.json +173 -0
  337. package/schema/_Enhancements.schema.json +29 -26
  338. package/schema/_I18n.schema.json +8 -12
  339. package/schema/_Identifier.schema.json +73 -22
  340. package/schema/_ImprovementCost.schema.json +2 -2
  341. package/schema/_Influence.schema.json +48 -45
  342. package/schema/_NonEmptyString.schema.json +14 -0
  343. package/schema/_Prerequisite.schema.json +953 -765
  344. package/schema/_ResponsiveText.schema.json +66 -0
  345. package/schema/_Sex.schema.json +3 -3
  346. package/schema/_SimpleReferences.schema.json +586 -0
  347. package/schema/_SkillCheck.schema.json +5 -20
  348. package/schema/_Spellwork.schema.json +47 -0
  349. package/schema/equipment/EquipmentPackage.schema.json +37 -32
  350. package/schema/equipment/item/Alchemicum.schema.json +10 -0
  351. package/schema/equipment/item/Ammunition.schema.json +56 -0
  352. package/schema/equipment/item/Animal.schema.json +36 -0
  353. package/schema/equipment/item/AnimalCare.schema.json +124 -0
  354. package/schema/equipment/item/Armor.schema.json +288 -0
  355. package/schema/equipment/item/BandageOrRemedy.schema.json +10 -0
  356. package/schema/equipment/item/Book.schema.json +89 -0
  357. package/schema/equipment/item/CeremonialItem.schema.json +10 -0
  358. package/schema/equipment/item/Clothes.schema.json +10 -0
  359. package/schema/equipment/item/Container.schema.json +10 -0
  360. package/schema/equipment/item/EquipmentOfBlessedOnes.schema.json +59 -0
  361. package/schema/equipment/item/GemOrPreciousStone.schema.json +69 -0
  362. package/schema/equipment/item/HealingHerb.schema.json +10 -0
  363. package/schema/equipment/item/Illumination.schema.json +10 -0
  364. package/schema/equipment/item/Jewelry.schema.json +113 -0
  365. package/schema/equipment/item/Liebesspielzeug.schema.json +10 -0
  366. package/schema/equipment/item/LuxuryGood.schema.json +10 -0
  367. package/schema/equipment/item/MagicalArtifact.schema.json +64 -0
  368. package/schema/equipment/item/MusicalInstrument.schema.json +46 -0
  369. package/schema/equipment/item/OrienteeringAid.schema.json +10 -0
  370. package/schema/equipment/item/Poison.schema.json +378 -0
  371. package/schema/equipment/item/RopeOrChain.schema.json +10 -0
  372. package/schema/equipment/item/Stationary.schema.json +10 -0
  373. package/schema/equipment/item/ThievesTool.schema.json +10 -0
  374. package/schema/equipment/item/ToolOfTheTrade.schema.json +83 -0
  375. package/schema/equipment/item/TravelGearOrTool.schema.json +10 -0
  376. package/schema/equipment/item/Vehicle.schema.json +36 -0
  377. package/schema/equipment/item/Weapon.schema.json +265 -0
  378. package/schema/equipment/item/WeaponAccessory.schema.json +10 -0
  379. package/schema/equipment/item/_Item.schema.json +361 -0
  380. package/schema/equipment/item/_MeleeWeapon.schema.json +166 -0
  381. package/schema/equipment/item/_RangedWeapon.schema.json +172 -0
  382. package/schema/equipment/item/_Weapon.schema.json +99 -0
  383. package/schema/equipment/item/sub/ArmorType.schema.json +53 -0
  384. package/schema/equipment/{Reach.schema.json → item/sub/Reach.schema.json} +18 -16
  385. package/schema/magicalActions/AnimistPower.schema.json +413 -402
  386. package/schema/magicalActions/AnimistPower_Tribe.schema.json +17 -15
  387. package/schema/magicalActions/Curse.schema.json +288 -315
  388. package/schema/magicalActions/DominationRitual.schema.json +233 -220
  389. package/schema/magicalActions/ElvenMagicalSong.schema.json +132 -154
  390. package/schema/magicalActions/GeodeRitual.schema.json +284 -222
  391. package/schema/magicalActions/JesterTrick.schema.json +252 -202
  392. package/schema/magicalActions/MagicalDance.schema.json +147 -251
  393. package/schema/magicalActions/MagicalMelody.schema.json +129 -164
  394. package/schema/magicalActions/MagicalRune.schema.json +341 -323
  395. package/schema/magicalActions/ZibiljaRitual.schema.json +139 -112
  396. package/schema/magicalActions/_MusicTradition.schema.json +88 -14
  397. package/schema/magicalActions/_SkillReference.schema.json +4 -4
  398. package/schema/prerequisites/ConditionalPrerequisites.schema.json +3 -3
  399. package/schema/prerequisites/DisplayOption.schema.json +25 -14
  400. package/schema/prerequisites/PrerequisiteGroups.schema.json +928 -152
  401. package/schema/prerequisites/single/ActivatablePrerequisite.schema.json +13 -25
  402. package/schema/prerequisites/single/AnimistPowerPrerequisite.schema.json +4 -7
  403. package/schema/prerequisites/single/CulturePrerequisite.schema.json +4 -8
  404. package/schema/prerequisites/single/EnhancementPrerequisite.schema.json +30 -23
  405. package/schema/prerequisites/single/InfluencePrerequisite.schema.json +3 -7
  406. package/schema/prerequisites/single/PactPrerequisite.schema.json +9 -19
  407. package/schema/prerequisites/single/PrimaryAttributePrerequisite.schema.json +32 -33
  408. package/schema/prerequisites/single/PublicationPrerequisite.schema.json +3 -7
  409. package/schema/prerequisites/single/RacePrerequisite.schema.json +4 -8
  410. package/schema/prerequisites/single/RatedPrerequisite.schema.json +104 -107
  411. package/schema/prerequisites/single/RulePrerequisite.schema.json +4 -8
  412. package/schema/prerequisites/single/SexPrerequisite.schema.json +4 -8
  413. package/schema/prerequisites/single/SocialStatusPrerequisite.schema.json +3 -7
  414. package/schema/prerequisites/single/StatePrerequisite.schema.json +4 -8
  415. package/schema/prerequisites/single/TextPrerequisite.schema.json +35 -34
  416. package/schema/prerequisites/single/TraditionPrerequisite.schema.json +66 -68
  417. package/schema/rule/CoreRule.schema.json +904 -859
  418. package/schema/rule/FocusRule.schema.json +34 -30
  419. package/schema/rule/FocusRule_Subject.schema.json +17 -15
  420. package/schema/rule/OptionalRule.schema.json +24 -56
  421. package/schema/rule/_Rule.schema.json +52 -0
  422. package/schema/source/Publication.schema.json +45 -71
  423. package/schema/source/_Erratum.schema.json +5 -6
  424. package/schema/source/_PublicationRef.schema.json +87 -57
  425. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +41 -38
  426. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +35 -32
  427. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +35 -32
  428. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +35 -32
  429. package/schema/specialAbility/AncestorGlyph.schema.json +33 -30
  430. package/schema/specialAbility/BlessedTradition.schema.json +230 -224
  431. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +35 -32
  432. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +36 -33
  433. package/schema/specialAbility/CombatSpecialAbility.schema.json +41 -38
  434. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +39 -61
  435. package/schema/specialAbility/CommandSpecialAbility.schema.json +16 -16
  436. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +33 -30
  437. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +33 -30
  438. package/schema/specialAbility/FatePointSpecialAbility.schema.json +35 -32
  439. package/schema/specialAbility/GeneralSpecialAbility.schema.json +35 -32
  440. package/schema/specialAbility/KarmaSpecialAbility.schema.json +33 -30
  441. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +36 -33
  442. package/schema/specialAbility/LycantropicGift.schema.json +33 -30
  443. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +36 -33
  444. package/schema/specialAbility/MagicalSpecialAbility.schema.json +35 -32
  445. package/schema/specialAbility/MagicalTradition.schema.json +66 -87
  446. package/schema/specialAbility/PactGift.schema.json +240 -174
  447. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +39 -38
  448. package/schema/specialAbility/Sermon.schema.json +33 -30
  449. package/schema/specialAbility/SexSpecialAbility.schema.json +35 -32
  450. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +33 -30
  451. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +34 -31
  452. package/schema/specialAbility/VampiricGift.schema.json +33 -30
  453. package/schema/specialAbility/Vision.schema.json +33 -30
  454. package/schema/specialAbility/_Tradition.schema.json +23 -0
  455. package/schema/specialAbility/sub/Language.schema.json +170 -162
  456. package/schema/specialAbility/sub/Script.schema.json +35 -72
  457. package/schema/specialAbility/sub/TradeSecret.schema.json +26 -25
  458. package/schema/specialAbility/sub/_LanguageScript.schema.json +26 -0
  459. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +46 -43
  460. package/schema/traditionArtifacts/AttireEnchantment.schema.json +46 -43
  461. package/schema/traditionArtifacts/BowlEnchantment.schema.json +46 -43
  462. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +63 -56
  463. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +46 -43
  464. package/schema/traditionArtifacts/DaggerRitual.schema.json +132 -43
  465. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +46 -43
  466. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +46 -43
  467. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +46 -43
  468. package/schema/traditionArtifacts/OrbEnchantment.schema.json +46 -43
  469. package/schema/traditionArtifacts/RingEnchantment.schema.json +46 -43
  470. package/schema/traditionArtifacts/SickleRitual.schema.json +46 -43
  471. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +46 -43
  472. package/schema/traditionArtifacts/StaffEnchantment.schema.json +47 -43
  473. package/schema/traditionArtifacts/ToyEnchantment.schema.json +47 -43
  474. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +46 -43
  475. package/schema/traditionArtifacts/WandEnchantment.schema.json +46 -43
  476. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +46 -50
  477. package/schema/traditionArtifacts/sub/AnimalShape.schema.json +53 -25
  478. package/schema/traditionArtifacts/sub/AnimalShapePath.schema.json +17 -15
  479. package/schema/traditionArtifacts/sub/AnimalShapeSize.schema.json +17 -15
  480. package/schema/traditionArtifacts/sub/Brew.schema.json +17 -15
  481. package/lib/types/MagicalTraditionPlaceholder.d.ts +0 -32
  482. package/lib/types/MagicalTraditionPlaceholder.js +0 -5
  483. package/lib/types/Poison.d.ts +0 -208
  484. package/lib/types/equipment/ArmorType.d.ts +0 -31
  485. package/lib/types/equipment/Item.d.ts +0 -308
  486. package/lib/types/equipment/Item.js +0 -35
  487. package/lib/types/equipment/ItemGroup.d.ts +0 -31
  488. package/lib/types/equipment/ItemGroup.js +0 -5
  489. package/lib/types/equipment/Reach.d.ts +0 -31
  490. package/lib/types/equipment/_Armor.d.ts +0 -70
  491. package/lib/types/equipment/_Weapon.d.ts +0 -330
  492. package/lib/types/prerequisites/single/CommonSuggestedByRCPPrerequisite.d.ts +0 -3
  493. package/schema/MagicalTraditionPlaceholder.schema.json +0 -45
  494. package/schema/Poison.schema.json +0 -417
  495. package/schema/equipment/ArmorType.schema.json +0 -45
  496. package/schema/equipment/Item.schema.json +0 -621
  497. package/schema/equipment/ItemGroup.schema.json +0 -45
  498. package/schema/equipment/_Armor.schema.json +0 -125
  499. package/schema/equipment/_Weapon.schema.json +0 -664
  500. package/schema/prerequisites/single/CommonSuggestedByRCPPrerequisite.schema.json +0 -18
@@ -1,8 +1,8 @@
1
1
  {
2
- "$schema": "http://json-schema.org/draft-07/schema",
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
3
  "$id": "/Profession.schema.json",
4
- "$ref": "#/definitions/Profession",
5
- "definitions": {
4
+ "$ref": "#/$defs/Profession",
5
+ "$defs": {
6
6
  "Profession": {
7
7
  "title": "Profession",
8
8
  "type": "object",
@@ -14,112 +14,251 @@
14
14
  },
15
15
  "group": {
16
16
  "description": "The profession group.",
17
- "$ref": "#/definitions/Group"
17
+ "$ref": "#/$defs/ProfessionGroup"
18
18
  },
19
+ "versions": {
20
+ "description": "A list of professions representing the same profession but with (slightly)\ndifferent stats. For example, there may be a profession in a regional\nsourcebook or in the core rules and a profession in an extension rulebook\nlike Magic of Aventuria, where the profession is basically called the same\nand almost has the same values, but the version from Magic of Aventuria\nfeatures a spell style special ability that does not exist in the core\nrules or regional sourcebook.\n\nThe profession representation may feature different values for different\nexplicitly mentioned experience levels. In most cases, there is only one\nstats package, which targets the experience level *Experienced*.",
21
+ "type": "array",
22
+ "items": {
23
+ "$ref": "#/$defs/ProfessionVersion"
24
+ },
25
+ "minItems": 1
26
+ }
27
+ },
28
+ "required": [
29
+ "id",
30
+ "group",
31
+ "versions"
32
+ ],
33
+ "additionalProperties": false
34
+ },
35
+ "ProfessionGroup": {
36
+ "oneOf": [
37
+ {
38
+ "type": "object",
39
+ "properties": {
40
+ "tag": {
41
+ "const": "Mundane"
42
+ },
43
+ "mundane": {
44
+ "$ref": "#/$defs/MundaneProfessionGroup"
45
+ }
46
+ },
47
+ "required": [
48
+ "tag",
49
+ "mundane"
50
+ ],
51
+ "additionalProperties": false
52
+ },
53
+ {
54
+ "type": "object",
55
+ "properties": {
56
+ "tag": {
57
+ "const": "Magical"
58
+ },
59
+ "magical": {
60
+ "$ref": "#/$defs/MagicalProfessionGroup"
61
+ }
62
+ },
63
+ "required": [
64
+ "tag"
65
+ ],
66
+ "additionalProperties": false
67
+ },
68
+ {
69
+ "type": "object",
70
+ "properties": {
71
+ "tag": {
72
+ "const": "Blessed"
73
+ }
74
+ },
75
+ "required": [
76
+ "tag"
77
+ ],
78
+ "additionalProperties": false
79
+ }
80
+ ]
81
+ },
82
+ "MundaneProfessionGroup": {
83
+ "oneOf": [
84
+ {
85
+ "type": "object",
86
+ "properties": {
87
+ "tag": {
88
+ "const": "Profane"
89
+ }
90
+ },
91
+ "required": [
92
+ "tag"
93
+ ],
94
+ "additionalProperties": false
95
+ },
96
+ {
97
+ "type": "object",
98
+ "properties": {
99
+ "tag": {
100
+ "const": "Fighter"
101
+ }
102
+ },
103
+ "required": [
104
+ "tag"
105
+ ],
106
+ "additionalProperties": false
107
+ },
108
+ {
109
+ "type": "object",
110
+ "properties": {
111
+ "tag": {
112
+ "const": "Religious"
113
+ }
114
+ },
115
+ "required": [
116
+ "tag"
117
+ ],
118
+ "additionalProperties": false
119
+ }
120
+ ]
121
+ },
122
+ "MagicalProfessionGroup": {
123
+ "type": "object",
124
+ "properties": {
19
125
  "curriculum": {
20
126
  "description": "The curriculum/academy associated with this magical profession, if any.",
127
+ "$ref": "./_SimpleReferences.schema.json#/$defs/CurriculumReference"
128
+ }
129
+ },
130
+ "required": [],
131
+ "minProperties": 1,
132
+ "additionalProperties": false
133
+ },
134
+ "ProfessionVersion": {
135
+ "oneOf": [
136
+ {
21
137
  "type": "object",
22
138
  "properties": {
23
- "id": {
24
- "description": "The curriculum's identifier.",
25
- "type": "integer",
26
- "minimum": 1
139
+ "tag": {
140
+ "const": "Experienced"
141
+ },
142
+ "experienced": {
143
+ "$ref": "#/$defs/ExperiencedProfessionPackage"
27
144
  }
28
145
  },
29
146
  "required": [
30
- "id"
147
+ "tag",
148
+ "experienced"
31
149
  ],
32
150
  "additionalProperties": false
33
151
  },
34
- "representations": {
35
- "description": "A list of professions representing the same profession but with (slightly)\ndifferent stats. For example, there may be a profession in a regional\nsourcebook or in the core rules and a profession in an extension rulebook\nlike Magic of Aventuria, where the profession is basically called the same\nand almost has the same values, but the version from Magic of Aventuria\nfeatures a spell style special ability that does not exist in the core\nrules or regional sourcebook.\n\nThe profession representation may feature different values for different\nexplicitly mentioned experience levels. In most cases, there is only one\nstats package, which targets the experience level *Experienced*.",
152
+ {
153
+ "type": "object",
154
+ "properties": {
155
+ "tag": {
156
+ "const": "ByExperienceLevel"
157
+ },
158
+ "by_experience_level": {
159
+ "$ref": "#/$defs/ProfessionPackagesForDifferentExperienceLevels"
160
+ }
161
+ },
162
+ "required": [
163
+ "tag",
164
+ "by_experience_level"
165
+ ],
166
+ "additionalProperties": false
167
+ }
168
+ ]
169
+ },
170
+ "ExperiencedProfessionPackage": {
171
+ "type": "object",
172
+ "properties": {
173
+ "id": {
174
+ "description": "The profession representation variant's identifier. An unique, increasing\ninteger.",
175
+ "type": "integer",
176
+ "minimum": 1
177
+ },
178
+ "package": {
179
+ "$ref": "#/$defs/ProfessionPackage"
180
+ },
181
+ "src": {
182
+ "$ref": "./source/_PublicationRef.schema.json#/$defs/PublicationRefs"
183
+ },
184
+ "translations": {
185
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
186
+ "type": "object",
187
+ "patternProperties": {
188
+ "^[a-z]{2}-[A-Z]{2}$": {
189
+ "$ref": "#/$defs/ProfessionTranslation"
190
+ }
191
+ },
192
+ "minProperties": 1,
193
+ "additionalProperties": false
194
+ }
195
+ },
196
+ "required": [
197
+ "id",
198
+ "package",
199
+ "src",
200
+ "translations"
201
+ ],
202
+ "additionalProperties": false
203
+ },
204
+ "ProfessionPackagesForDifferentExperienceLevels": {
205
+ "type": "object",
206
+ "properties": {
207
+ "id": {
208
+ "description": "The profession representation variant's identifier. An unique, increasing\ninteger.",
209
+ "type": "integer",
210
+ "minimum": 1
211
+ },
212
+ "packages_map": {
36
213
  "type": "array",
37
214
  "items": {
38
- "oneOf": [
39
- {
40
- "type": "object",
41
- "properties": {
42
- "tag": {
43
- "const": "Experienced"
44
- },
45
- "id": {
46
- "description": "The profession representation variant's identifier. An unique, increasing\ninteger.",
47
- "type": "integer",
48
- "minimum": 1
49
- },
50
- "package": {
51
- "$ref": "#/definitions/ProfessionRepresentationVariant"
52
- },
53
- "src": {
54
- "$ref": "./source/_PublicationRef.schema.json#/definitions/PublicationRefs"
55
- }
56
- },
57
- "required": [
58
- "tag",
59
- "id",
60
- "package",
61
- "src"
62
- ],
63
- "additionalProperties": false
64
- },
65
- {
66
- "type": "object",
67
- "properties": {
68
- "tag": {
69
- "const": "ByExperienceLevel"
70
- },
71
- "id": {
72
- "description": "The profession representation variant's identifier. An unique, increasing\ninteger.",
73
- "type": "integer",
74
- "minimum": 1
75
- },
76
- "packages": {
77
- "type": "array",
78
- "items": {
79
- "type": "object",
80
- "properties": {
81
- "experience_level_id": {
82
- "description": "The experience level this profession targets. The experience level\nmust be unique for this representation.",
83
- "type": "integer",
84
- "maximum": 7,
85
- "minimum": 1
86
- },
87
- "package": {
88
- "$ref": "#/definitions/ProfessionRepresentationVariant"
89
- }
90
- },
91
- "required": [
92
- "experience_level_id",
93
- "package"
94
- ],
95
- "additionalProperties": false
96
- }
97
- },
98
- "src": {
99
- "$ref": "./source/_PublicationRef.schema.json#/definitions/PublicationRefs"
100
- }
101
- },
102
- "required": [
103
- "tag",
104
- "id",
105
- "packages",
106
- "src"
107
- ],
108
- "additionalProperties": false
109
- }
110
- ]
215
+ "$ref": "#/$defs/ExperienceLevelDynamicProfessionPackage"
216
+ }
217
+ },
218
+ "src": {
219
+ "$ref": "./source/_PublicationRef.schema.json#/$defs/PublicationRefs"
220
+ },
221
+ "translations": {
222
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
223
+ "type": "object",
224
+ "patternProperties": {
225
+ "^[a-z]{2}-[A-Z]{2}$": {
226
+ "$ref": "#/$defs/ProfessionTranslation"
227
+ }
111
228
  },
112
- "minItems": 1
229
+ "minProperties": 1,
230
+ "additionalProperties": false
113
231
  }
114
232
  },
115
233
  "required": [
116
234
  "id",
117
- "group",
118
- "representations"
235
+ "packages_map",
236
+ "src",
237
+ "translations"
238
+ ],
239
+ "additionalProperties": false
240
+ },
241
+ "ExperienceLevelDynamicProfessionPackage": {
242
+ "type": "object",
243
+ "properties": {
244
+ "experience_level_id": {
245
+ "description": "The experience level this profession targets. The experience level\nmust be unique for this representation.",
246
+ "type": "integer",
247
+ "default": 3,
248
+ "maximum": 7,
249
+ "minimum": 1
250
+ },
251
+ "package": {
252
+ "$ref": "#/$defs/ProfessionPackage"
253
+ }
254
+ },
255
+ "required": [
256
+ "experience_level_id",
257
+ "package"
119
258
  ],
120
259
  "additionalProperties": false
121
260
  },
122
- "ProfessionRepresentationVariant": {
261
+ "ProfessionPackage": {
123
262
  "title": "Profession Representation Variant",
124
263
  "type": "object",
125
264
  "properties": {
@@ -130,77 +269,52 @@
130
269
  },
131
270
  "prerequisites": {
132
271
  "description": "Which prerequisites must be met to buy the stat block? For example, a\ncharacter might need the advantage Spellcaster or Blessed. Note: the AP\ncost for a profession package does not include these prerequisites.",
133
- "$ref": "./_Prerequisite.schema.json#/definitions/ProfessionPrerequisites"
272
+ "$ref": "./_Prerequisite.schema.json#/$defs/ProfessionPrerequisites"
134
273
  },
135
274
  "options": {
136
- "type": "object",
137
- "properties": {
138
- "skill_specialization": {
139
- "$ref": "#/definitions/SkillSpecializationOptions"
140
- },
141
- "languages_scripts": {
142
- "$ref": "#/definitions/LanguagesScriptsOptions"
143
- },
144
- "combat_techniques": {
145
- "$ref": "#/definitions/CombatTechniquesOptions"
146
- },
147
- "cantrips": {
148
- "$ref": "#/definitions/CantripsOptions"
149
- },
150
- "curses": {
151
- "$ref": "#/definitions/CursesOptions"
152
- },
153
- "terrain_knowledge": {
154
- "$ref": "#/definitions/TerrainKnowledgeOptions"
155
- },
156
- "skills": {
157
- "$ref": "#/definitions/SkillsOptions"
158
- }
159
- },
160
- "required": [],
161
- "minProperties": 1,
162
- "additionalProperties": false
275
+ "description": "In some areas, the profession package grants a loose set of stats where the\nplayer must choose between different options for the profession package.",
276
+ "$ref": "#/$defs/ProfessionPackageOptions"
163
277
  },
164
278
  "special_abilities": {
165
279
  "description": "Any special abilities the profession receives from the package.",
166
280
  "type": "array",
167
281
  "items": {
168
- "$ref": "#/definitions/SpecialAbility"
282
+ "$ref": "#/$defs/SpecialAbility"
169
283
  }
170
284
  },
171
285
  "combat_techniques": {
172
286
  "description": "Provides ratings for the combat techniques that the hero receives from the\npackage.",
173
287
  "type": "array",
174
288
  "items": {
175
- "$ref": "#/definitions/CombatTechnique"
289
+ "$ref": "#/$defs/CombatTechniqueRating"
176
290
  }
177
291
  },
178
292
  "skills": {
179
293
  "description": "The skill ratings the package grants to the hero.",
180
294
  "type": "array",
181
295
  "items": {
182
- "$ref": "#/definitions/Skill"
296
+ "$ref": "#/$defs/SkillRating"
183
297
  }
184
298
  },
185
299
  "spells": {
186
300
  "description": "The skill ratings a magical profession receives for spells; these spells\nare considered activated. Spells from an unfamiliar Tradition, if any, are\nidentified as such.",
187
301
  "type": "array",
188
302
  "items": {
189
- "$ref": "#/definitions/Spell"
303
+ "$ref": "#/$defs/SpellRating"
190
304
  }
191
305
  },
192
306
  "liturgical_chants": {
193
307
  "description": "Clerical professions receive these liturgical chants at the listed skill\nratings. These liturgical chants are considered activated.",
194
308
  "type": "array",
195
309
  "items": {
196
- "$ref": "#/definitions/LiturgicalChant"
310
+ "$ref": "#/$defs/LiturgicalChantRating"
197
311
  }
198
312
  },
199
313
  "suggested_advantages": {
200
314
  "description": "Typical advantages for the profession.",
201
315
  "type": "array",
202
316
  "items": {
203
- "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/definitions/CommonnessRatedAdvantageDisadvantage"
317
+ "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/$defs/CommonnessRatedAdvantageDisadvantage"
204
318
  },
205
319
  "minItems": 1
206
320
  },
@@ -208,7 +322,7 @@
208
322
  "description": "Typical disadvantages for the profession.",
209
323
  "type": "array",
210
324
  "items": {
211
- "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/definitions/CommonnessRatedAdvantageDisadvantage"
325
+ "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/$defs/CommonnessRatedAdvantageDisadvantage"
212
326
  },
213
327
  "minItems": 1
214
328
  },
@@ -216,7 +330,7 @@
216
330
  "description": "These advantages do not fit well with this profession; to be checked with\nthe GM before taking any of them.",
217
331
  "type": "array",
218
332
  "items": {
219
- "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/definitions/CommonnessRatedAdvantageDisadvantage"
333
+ "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/$defs/CommonnessRatedAdvantageDisadvantage"
220
334
  },
221
335
  "minItems": 1
222
336
  },
@@ -224,107 +338,76 @@
224
338
  "description": "These disadvantages do not fit well with this profession; to be checked\nwith the GM before taking any of them.",
225
339
  "type": "array",
226
340
  "items": {
227
- "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/definitions/CommonnessRatedAdvantageDisadvantage"
341
+ "$ref": "./_CommonnessRatedAdvantageDisadvantage.schema.json#/$defs/CommonnessRatedAdvantageDisadvantage"
228
342
  },
229
343
  "minItems": 1
230
344
  },
231
345
  "variants": {
232
346
  "description": "Provides examples of variants for the profession, which may include changes\nto AP values and additional or modified skill ratings, special abilities,\nor combat techniques, as compared to the basic profession. Usually picking\na variant is optional, but there are some rare exceptions where picking a\nvariant is required.",
233
- "oneOf": [
234
- {
235
- "type": "object",
236
- "properties": {
237
- "tag": {
238
- "const": "Required"
239
- },
240
- "list": {
241
- "type": "array",
242
- "items": {
243
- "$ref": "#/definitions/ProfessionVariant"
244
- },
245
- "minItems": 2
246
- }
247
- },
248
- "required": [
249
- "tag",
250
- "list"
251
- ],
252
- "additionalProperties": false
253
- },
254
- {
255
- "type": "object",
256
- "properties": {
257
- "tag": {
258
- "const": "Optional"
259
- },
260
- "list": {
261
- "type": "array",
262
- "items": {
263
- "$ref": "#/definitions/ProfessionVariant"
264
- },
265
- "minItems": 1
266
- }
267
- },
268
- "required": [
269
- "tag",
270
- "list"
271
- ],
272
- "additionalProperties": false
273
- }
274
- ]
347
+ "$ref": "#/$defs/ProfessionVariants"
348
+ }
349
+ },
350
+ "required": [
351
+ "ap_value"
352
+ ],
353
+ "additionalProperties": false
354
+ },
355
+ "ProfessionTranslation": {
356
+ "type": "object",
357
+ "properties": {
358
+ "name": {
359
+ "description": "Name of the basic profession.",
360
+ "$ref": "#/$defs/ProfessionName"
275
361
  },
276
- "translations": {
277
- "description": "All translations for the entry, identified by IETF language tag (BCP47).",
278
- "type": "object",
279
- "patternProperties": {
280
- "^[a-z]{2}-[A-Z]{2}$": {
281
- "type": "object",
282
- "properties": {
283
- "name": {
284
- "description": "Name of the basic profession.",
285
- "$ref": "#/definitions/Name"
286
- },
287
- "specification": {
288
- "description": "A name addition of the profession. This will contain texts like name of\nthe academy or the witch circle. It is enclosed in parenthesis.",
289
- "$ref": "#/definitions/Name"
290
- },
291
- "suggested_advantages": {
292
- "description": "Typical advantages for the profession.",
293
- "type": "string",
294
- "minLength": 1
295
- },
296
- "suggested_disadvantages": {
297
- "description": "Typical disadvantages for the profession.",
298
- "type": "string",
299
- "minLength": 1
300
- },
301
- "unsuitable_advantages": {
302
- "description": "These advantages do not fit well with this profession; to be checked with\nthe GM before taking any of them.",
303
- "type": "string",
304
- "minLength": 1
305
- },
306
- "unsuitable_disadvantages": {
307
- "description": "These disadvantages do not fit well with this profession; to be checked\nwith the GM before taking any of them.",
308
- "type": "string",
309
- "minLength": 1
310
- },
311
- "errata": {
312
- "$ref": "./source/_Erratum.schema.json#/definitions/Errata"
313
- }
314
- },
315
- "required": [
316
- "name"
317
- ],
318
- "additionalProperties": false
319
- }
362
+ "specification": {
363
+ "description": "A name addition of the profession. This will contain texts like name of\nthe academy or the witch circle. It is enclosed in parenthesis, but the\ndatabase entry must not contain parenthesis.",
364
+ "$ref": "#/$defs/ProfessionName"
365
+ },
366
+ "suggested_advantages": {
367
+ "description": "Typical advantages for the profession.",
368
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
369
+ },
370
+ "suggested_disadvantages": {
371
+ "description": "Typical disadvantages for the profession.",
372
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
373
+ },
374
+ "unsuitable_advantages": {
375
+ "description": "These advantages do not fit well with this profession; to be checked with\nthe GM before taking any of them.",
376
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
377
+ },
378
+ "unsuitable_disadvantages": {
379
+ "description": "These disadvantages do not fit well with this profession; to be checked\nwith the GM before taking any of them.",
380
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
381
+ },
382
+ "errata": {
383
+ "$ref": "./source/_Erratum.schema.json#/$defs/Errata"
384
+ }
385
+ },
386
+ "required": [
387
+ "name"
388
+ ],
389
+ "additionalProperties": false
390
+ },
391
+ "ProfessionVariants": {
392
+ "description": "Provides examples of variants for the profession, which may include changes\nto AP values and additional or modified skill ratings, special abilities, or\ncombat techniques, as compared to the basic profession. Usually picking a\nvariant is optional, but there are some rare exceptions where picking a\nvariant is required.",
393
+ "type": "object",
394
+ "properties": {
395
+ "is_selection_required": {
396
+ "description": "If the selection of a profession variant is required.",
397
+ "type": "boolean"
398
+ },
399
+ "list": {
400
+ "description": "The list of profession variants.",
401
+ "type": "array",
402
+ "items": {
403
+ "$ref": "#/$defs/ProfessionVariant"
320
404
  },
321
- "minProperties": 1,
322
- "additionalProperties": false
405
+ "minItems": 1
323
406
  }
324
407
  },
325
408
  "required": [
326
- "ap_value",
327
- "translations"
409
+ "is_selection_required",
410
+ "list"
328
411
  ],
329
412
  "additionalProperties": false
330
413
  },
@@ -343,273 +426,44 @@
343
426
  },
344
427
  "prerequisites": {
345
428
  "description": "Which prerequisites must be met to buy the stat block? For example, a\ncharacter might need the advantage Spellcaster or Blessed. Note: the AP\ncost for a profession package does not include these prerequisites.",
346
- "$ref": "./_Prerequisite.schema.json#/definitions/ProfessionPrerequisites"
429
+ "$ref": "./_Prerequisite.schema.json#/$defs/ProfessionPrerequisites"
347
430
  },
348
431
  "options": {
349
- "type": "object",
350
- "properties": {
351
- "skill_specialization": {
352
- "oneOf": [
353
- {
354
- "type": "object",
355
- "properties": {
356
- "tag": {
357
- "const": "Remove"
358
- }
359
- },
360
- "required": [
361
- "tag"
362
- ],
363
- "additionalProperties": false
364
- },
365
- {
366
- "type": "object",
367
- "properties": {
368
- "tag": {
369
- "const": "Override"
370
- },
371
- "value": {
372
- "$ref": "#/definitions/SkillSpecializationOptions"
373
- }
374
- },
375
- "required": [
376
- "tag",
377
- "value"
378
- ],
379
- "additionalProperties": false
380
- }
381
- ]
382
- },
383
- "languages_scripts": {
384
- "oneOf": [
385
- {
386
- "type": "object",
387
- "properties": {
388
- "tag": {
389
- "const": "Remove"
390
- }
391
- },
392
- "required": [
393
- "tag"
394
- ],
395
- "additionalProperties": false
396
- },
397
- {
398
- "type": "object",
399
- "properties": {
400
- "tag": {
401
- "const": "Override"
402
- },
403
- "value": {
404
- "$ref": "#/definitions/LanguagesScriptsOptions"
405
- }
406
- },
407
- "required": [
408
- "tag",
409
- "value"
410
- ],
411
- "additionalProperties": false
412
- }
413
- ]
414
- },
415
- "combat_techniques": {
416
- "oneOf": [
417
- {
418
- "type": "object",
419
- "properties": {
420
- "tag": {
421
- "const": "Remove"
422
- }
423
- },
424
- "required": [
425
- "tag"
426
- ],
427
- "additionalProperties": false
428
- },
429
- {
430
- "type": "object",
431
- "properties": {
432
- "tag": {
433
- "const": "Override"
434
- },
435
- "value": {
436
- "$ref": "#/definitions/CombatTechniquesOptions"
437
- }
438
- },
439
- "required": [
440
- "tag",
441
- "value"
442
- ],
443
- "additionalProperties": false
444
- }
445
- ]
446
- },
447
- "cantrips": {
448
- "oneOf": [
449
- {
450
- "type": "object",
451
- "properties": {
452
- "tag": {
453
- "const": "Remove"
454
- }
455
- },
456
- "required": [
457
- "tag"
458
- ],
459
- "additionalProperties": false
460
- },
461
- {
462
- "type": "object",
463
- "properties": {
464
- "tag": {
465
- "const": "Override"
466
- },
467
- "value": {
468
- "$ref": "#/definitions/CantripsOptions"
469
- }
470
- },
471
- "required": [
472
- "tag",
473
- "value"
474
- ],
475
- "additionalProperties": false
476
- }
477
- ]
478
- },
479
- "curses": {
480
- "oneOf": [
481
- {
482
- "type": "object",
483
- "properties": {
484
- "tag": {
485
- "const": "Remove"
486
- }
487
- },
488
- "required": [
489
- "tag"
490
- ],
491
- "additionalProperties": false
492
- },
493
- {
494
- "type": "object",
495
- "properties": {
496
- "tag": {
497
- "const": "Override"
498
- },
499
- "value": {
500
- "$ref": "#/definitions/CursesOptions"
501
- }
502
- },
503
- "required": [
504
- "tag",
505
- "value"
506
- ],
507
- "additionalProperties": false
508
- }
509
- ]
510
- },
511
- "terrain_knowledge": {
512
- "oneOf": [
513
- {
514
- "type": "object",
515
- "properties": {
516
- "tag": {
517
- "const": "Remove"
518
- }
519
- },
520
- "required": [
521
- "tag"
522
- ],
523
- "additionalProperties": false
524
- },
525
- {
526
- "type": "object",
527
- "properties": {
528
- "tag": {
529
- "const": "Override"
530
- },
531
- "value": {
532
- "$ref": "#/definitions/TerrainKnowledgeOptions"
533
- }
534
- },
535
- "required": [
536
- "tag",
537
- "value"
538
- ],
539
- "additionalProperties": false
540
- }
541
- ]
542
- },
543
- "skills": {
544
- "oneOf": [
545
- {
546
- "type": "object",
547
- "properties": {
548
- "tag": {
549
- "const": "Remove"
550
- }
551
- },
552
- "required": [
553
- "tag"
554
- ],
555
- "additionalProperties": false
556
- },
557
- {
558
- "type": "object",
559
- "properties": {
560
- "tag": {
561
- "const": "Override"
562
- },
563
- "value": {
564
- "$ref": "#/definitions/SkillsOptions"
565
- }
566
- },
567
- "required": [
568
- "tag",
569
- "value"
570
- ],
571
- "additionalProperties": false
572
- }
573
- ]
574
- }
575
- },
576
- "required": [],
577
- "minProperties": 1,
578
- "additionalProperties": false
432
+ "$ref": "#/$defs/ProfessionVariantPackageOptions"
579
433
  },
580
434
  "special_abilities": {
581
435
  "description": "Any special abilities the profession receives from the package variant.",
582
436
  "type": "array",
583
437
  "items": {
584
- "$ref": "#/definitions/VariantSpecialAbility"
438
+ "$ref": "#/$defs/VariantSpecialAbility"
585
439
  }
586
440
  },
587
441
  "combat_techniques": {
588
442
  "description": "Provides ratings for the combat techniques that the hero receives from the\npackage variant.",
589
443
  "type": "array",
590
444
  "items": {
591
- "$ref": "#/definitions/VariantCombatTechnique"
445
+ "$ref": "#/$defs/CombatTechniqueRating"
592
446
  }
593
447
  },
594
448
  "skills": {
595
449
  "description": "The skill ratings the package variant grants to the hero.",
596
450
  "type": "array",
597
451
  "items": {
598
- "$ref": "#/definitions/VariantSkill"
452
+ "$ref": "#/$defs/SkillRating"
599
453
  }
600
454
  },
601
455
  "spells": {
602
456
  "description": "The skill ratings a magical profession variant receives for spells; these\nspells are considered activated. Spells from an unfamiliar Tradition, if\nany, are identified as such.",
603
457
  "type": "array",
604
458
  "items": {
605
- "$ref": "#/definitions/VariantSpell"
459
+ "$ref": "#/$defs/SpellRating"
606
460
  }
607
461
  },
608
462
  "liturgical_chants": {
609
463
  "description": "Clerical professions receive these liturgical chants at the listed skill\nratings. These liturgical chants are considered activated.",
610
464
  "type": "array",
611
465
  "items": {
612
- "$ref": "#/definitions/VariantLiturgicalChant"
466
+ "$ref": "#/$defs/LiturgicalChantRating"
613
467
  }
614
468
  },
615
469
  "translations": {
@@ -617,17 +471,7 @@
617
471
  "type": "object",
618
472
  "patternProperties": {
619
473
  "^[a-z]{2}-[A-Z]{2}$": {
620
- "type": "object",
621
- "properties": {
622
- "name": {
623
- "description": "Name of the profession variant.",
624
- "$ref": "#/definitions/Name"
625
- }
626
- },
627
- "required": [
628
- "name"
629
- ],
630
- "additionalProperties": false
474
+ "$ref": "#/$defs/ProfessionVariantTranslation"
631
475
  }
632
476
  },
633
477
  "minProperties": 1,
@@ -635,9 +479,22 @@
635
479
  }
636
480
  },
637
481
  "required": [
638
- "id",
639
- "ap_value",
640
- "translations"
482
+ "id",
483
+ "ap_value",
484
+ "translations"
485
+ ],
486
+ "additionalProperties": false
487
+ },
488
+ "ProfessionVariantTranslation": {
489
+ "type": "object",
490
+ "properties": {
491
+ "name": {
492
+ "description": "Name of the profession variant.",
493
+ "$ref": "#/$defs/ProfessionName"
494
+ }
495
+ },
496
+ "required": [
497
+ "name"
641
498
  ],
642
499
  "additionalProperties": false
643
500
  },
@@ -649,27 +506,13 @@
649
506
  "tag": {
650
507
  "const": "Fixed"
651
508
  },
652
- "id": {
653
- "description": "The identifier of the combat technique to provide the rating for.",
654
- "$ref": "./_Identifier.schema.json#/definitions/SpecialAbilityIdentifier"
655
- },
656
- "level": {
657
- "description": "The level of the received special ability.",
658
- "type": "integer",
659
- "minimum": 1
660
- },
661
- "options": {
662
- "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
663
- "type": "array",
664
- "items": {
665
- "$ref": "./_Identifier.schema.json#/definitions/RequirableSelectOptionIdentifier"
666
- },
667
- "minItems": 1
509
+ "fixed": {
510
+ "$ref": "#/$defs/FixedSpecialAbility"
668
511
  }
669
512
  },
670
513
  "required": [
671
514
  "tag",
672
- "id"
515
+ "fixed"
673
516
  ],
674
517
  "additionalProperties": false
675
518
  },
@@ -679,45 +522,63 @@
679
522
  "tag": {
680
523
  "const": "Selection"
681
524
  },
682
- "options": {
683
- "type": "array",
684
- "items": {
685
- "type": "object",
686
- "properties": {
687
- "id": {
688
- "description": "The identifier of the combat technique to provide the rating for.",
689
- "$ref": "./_Identifier.schema.json#/definitions/SpecialAbilityIdentifier"
690
- },
691
- "level": {
692
- "description": "The level of the received special ability.",
693
- "type": "integer",
694
- "minimum": 1
695
- },
696
- "options": {
697
- "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
698
- "type": "array",
699
- "items": {
700
- "$ref": "./_Identifier.schema.json#/definitions/RequirableSelectOptionIdentifier"
701
- },
702
- "minItems": 1
703
- }
704
- },
705
- "required": [
706
- "id"
707
- ],
708
- "additionalProperties": false
709
- },
710
- "minItems": 2
525
+ "selection": {
526
+ "$ref": "#/$defs/SpecialAbilitySelection"
711
527
  }
712
528
  },
713
529
  "required": [
714
530
  "tag",
715
- "options"
531
+ "selection"
716
532
  ],
717
533
  "additionalProperties": false
718
534
  }
719
535
  ]
720
536
  },
537
+ "FixedSpecialAbility": {
538
+ "$ref": "#/$defs/SpecialAbilityDefinition"
539
+ },
540
+ "SpecialAbilitySelection": {
541
+ "type": "object",
542
+ "properties": {
543
+ "options": {
544
+ "type": "array",
545
+ "items": {
546
+ "$ref": "#/$defs/SpecialAbilityDefinition"
547
+ },
548
+ "minItems": 2
549
+ }
550
+ },
551
+ "required": [
552
+ "options"
553
+ ],
554
+ "additionalProperties": false
555
+ },
556
+ "SpecialAbilityDefinition": {
557
+ "type": "object",
558
+ "properties": {
559
+ "id": {
560
+ "description": "The identifier of the combat technique to provide the rating for.",
561
+ "$ref": "./_Identifier.schema.json#/$defs/SpecialAbilityIdentifier"
562
+ },
563
+ "level": {
564
+ "description": "The level of the received special ability.",
565
+ "type": "integer",
566
+ "minimum": 1
567
+ },
568
+ "options": {
569
+ "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
570
+ "type": "array",
571
+ "items": {
572
+ "$ref": "./_Identifier.schema.json#/$defs/RequirableSelectOptionIdentifier"
573
+ },
574
+ "minItems": 1
575
+ }
576
+ },
577
+ "required": [
578
+ "id"
579
+ ],
580
+ "additionalProperties": false
581
+ },
721
582
  "VariantSpecialAbility": {
722
583
  "oneOf": [
723
584
  {
@@ -726,31 +587,13 @@
726
587
  "tag": {
727
588
  "const": "Fixed"
728
589
  },
729
- "id": {
730
- "description": "The identifier of the combat technique to provide the rating for.",
731
- "$ref": "./_Identifier.schema.json#/definitions/SpecialAbilityIdentifier"
732
- },
733
- "active": {
734
- "description": "if set to `false`, if the entry is granted by the basic package, it is\nremoved.",
735
- "const": false
736
- },
737
- "level": {
738
- "description": "The level of the received special ability.",
739
- "type": "integer",
740
- "minimum": 1
741
- },
742
- "options": {
743
- "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
744
- "type": "array",
745
- "items": {
746
- "$ref": "./_Identifier.schema.json#/definitions/RequirableSelectOptionIdentifier"
747
- },
748
- "minItems": 1
590
+ "fixed": {
591
+ "$ref": "#/$defs/FixedVariantSpecialAbility"
749
592
  }
750
593
  },
751
594
  "required": [
752
595
  "tag",
753
- "id"
596
+ "fixed"
754
597
  ],
755
598
  "additionalProperties": false
756
599
  },
@@ -760,79 +603,80 @@
760
603
  "tag": {
761
604
  "const": "Selection"
762
605
  },
763
- "active": {
764
- "description": "if set to `false`, if the selection is granted by the basic package, it\nis removed.",
765
- "const": false
766
- },
767
- "options": {
768
- "type": "array",
769
- "items": {
770
- "type": "object",
771
- "properties": {
772
- "id": {
773
- "description": "The identifier of the combat technique to provide the rating for.",
774
- "$ref": "./_Identifier.schema.json#/definitions/SpecialAbilityIdentifier"
775
- },
776
- "level": {
777
- "description": "The level of the received special ability.",
778
- "type": "integer",
779
- "minimum": 1
780
- },
781
- "options": {
782
- "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
783
- "type": "array",
784
- "items": {
785
- "$ref": "./_Identifier.schema.json#/definitions/RequirableSelectOptionIdentifier"
786
- },
787
- "minItems": 1
788
- }
789
- },
790
- "required": [
791
- "id"
792
- ],
793
- "additionalProperties": false
794
- },
795
- "minItems": 2
606
+ "selection": {
607
+ "$ref": "#/$defs/VariantSpecialAbilitySelection"
796
608
  }
797
609
  },
798
610
  "required": [
799
611
  "tag",
800
- "options"
612
+ "selection"
801
613
  ],
802
614
  "additionalProperties": false
803
615
  }
804
616
  ]
805
617
  },
806
- "CombatTechnique": {
618
+ "FixedVariantSpecialAbility": {
807
619
  "type": "object",
808
620
  "properties": {
809
621
  "id": {
810
622
  "description": "The identifier of the combat technique to provide the rating for.",
811
- "$ref": "./_Identifier.schema.json#/definitions/CombatTechniqueIdentifier"
623
+ "$ref": "./_Identifier.schema.json#/$defs/SpecialAbilityIdentifier"
812
624
  },
813
- "rating": {
814
- "description": "The rating provided for the combat technique.",
625
+ "level": {
626
+ "description": "The level of the received special ability.",
815
627
  "type": "integer",
816
- "minimum": 7
628
+ "minimum": 1
629
+ },
630
+ "options": {
631
+ "description": "Received select options. Order is important. Typically, you only need the\nfirst array index, though.",
632
+ "type": "array",
633
+ "items": {
634
+ "$ref": "./_Identifier.schema.json#/$defs/RequirableSelectOptionIdentifier"
635
+ },
636
+ "minItems": 1
637
+ },
638
+ "active": {
639
+ "description": "if set to `false`, if the selection is granted by the basic package, it\nis removed.",
640
+ "const": false
817
641
  }
818
642
  },
819
643
  "required": [
820
- "id",
821
- "rating"
644
+ "id"
645
+ ],
646
+ "additionalProperties": false
647
+ },
648
+ "VariantSpecialAbilitySelection": {
649
+ "type": "object",
650
+ "properties": {
651
+ "active": {
652
+ "description": "if set to `false`, if the selection is granted by the basic package, it\nis removed.",
653
+ "const": false
654
+ },
655
+ "options": {
656
+ "type": "array",
657
+ "items": {
658
+ "$ref": "#/$defs/SpecialAbilityDefinition"
659
+ },
660
+ "minItems": 2
661
+ }
662
+ },
663
+ "required": [
664
+ "options"
822
665
  ],
823
666
  "additionalProperties": false
824
667
  },
825
- "VariantCombatTechnique": {
668
+ "CombatTechniqueRating": {
826
669
  "type": "object",
827
670
  "properties": {
828
671
  "id": {
829
672
  "description": "The identifier of the combat technique to provide the rating for.",
830
- "$ref": "./_Identifier.schema.json#/definitions/CombatTechniqueIdentifier"
673
+ "$ref": "./_Identifier.schema.json#/$defs/CombatTechniqueIdentifier"
831
674
  },
832
675
  "rating": {
833
- "description": "The rating provided for the combat technique. It overrides the basic\npackage's rating.",
676
+ "description": "The rating bonus provided for the combat technique. If used in a profession\nvariant, it can also be used to lower the bonus of the base profession.\n\n**Note:** This is a rating *bonus*, so it will be *added* to the default\nvalue of 6.",
834
677
  "type": "integer",
835
- "minimum": 6
678
+ "maximum": 6,
679
+ "minimum": -6
836
680
  }
837
681
  },
838
682
  "required": [
@@ -841,7 +685,7 @@
841
685
  ],
842
686
  "additionalProperties": false
843
687
  },
844
- "Skill": {
688
+ "SkillRating": {
845
689
  "type": "object",
846
690
  "properties": {
847
691
  "id": {
@@ -851,9 +695,10 @@
851
695
  "minimum": 1
852
696
  },
853
697
  "rating": {
854
- "description": "The rating provided for the skill.",
698
+ "description": "The rating bonus provided for the skill. If used in a profession variant,\nit can also be used to lower the bonus of the base profession",
855
699
  "type": "integer",
856
- "minimum": 1
700
+ "maximum": 8,
701
+ "minimum": -8
857
702
  }
858
703
  },
859
704
  "required": [
@@ -862,19 +707,22 @@
862
707
  ],
863
708
  "additionalProperties": false
864
709
  },
865
- "VariantSkill": {
710
+ "SpellRating": {
866
711
  "type": "object",
867
712
  "properties": {
868
713
  "id": {
869
- "description": "The identifier of the skill to provide the rating for.",
870
- "type": "integer",
871
- "maximum": 59,
872
- "minimum": 1
714
+ "description": "The identifier(s) of the spell(s) to choose from to provide the rating for.\nIf multiple spells are provided, they must all have the same improvement\ncost.",
715
+ "type": "array",
716
+ "items": {
717
+ "$ref": "#/$defs/SpellIdentifier"
718
+ },
719
+ "minItems": 1
873
720
  },
874
721
  "rating": {
875
- "description": "The rating provided for the skill. It overrides the basic package's rating.",
722
+ "description": "The rating bonus provided for the (selected) spell. If used in a profession\nvariant, it can also be used to lower the bonus of the base profession.",
876
723
  "type": "integer",
877
- "minimum": 0
724
+ "maximum": 10,
725
+ "minimum": -10
878
726
  }
879
727
  },
880
728
  "required": [
@@ -883,28 +731,21 @@
883
731
  ],
884
732
  "additionalProperties": false
885
733
  },
886
- "Spell": {
734
+ "SpellIdentifier": {
887
735
  "oneOf": [
888
736
  {
889
737
  "type": "object",
890
738
  "properties": {
891
739
  "tag": {
892
- "const": "Fixed"
893
- },
894
- "id": {
895
- "description": "The identifier of the spell to provide the rating for.",
896
- "$ref": "#/definitions/SpellIdentifier"
740
+ "const": "Spellwork"
897
741
  },
898
- "rating": {
899
- "description": "The rating provided for the spell.",
900
- "type": "integer",
901
- "minimum": 1
742
+ "spellwork": {
743
+ "$ref": "#/$defs/ProfessionSpellworkIdentifier"
902
744
  }
903
745
  },
904
746
  "required": [
905
747
  "tag",
906
- "id",
907
- "rating"
748
+ "spellwork"
908
749
  ],
909
750
  "additionalProperties": false
910
751
  },
@@ -912,244 +753,336 @@
912
753
  "type": "object",
913
754
  "properties": {
914
755
  "tag": {
915
- "const": "Selection"
916
- },
917
- "id": {
918
- "description": "The identifiers of the spells to choose from to provide the rating for.",
919
- "type": "array",
920
- "items": {
921
- "$ref": "#/definitions/SpellIdentifier"
922
- },
923
- "minItems": 2
756
+ "const": "MagicalAction"
924
757
  },
925
- "rating": {
926
- "description": "The rating provided for the selected spell.",
927
- "type": "integer",
928
- "minimum": 1
758
+ "magical_action": {
759
+ "$ref": "#/$defs/ProfessionMagicalActionIdentifier"
929
760
  }
930
761
  },
931
762
  "required": [
932
763
  "tag",
933
- "id",
934
- "rating"
764
+ "magical_action"
935
765
  ],
936
766
  "additionalProperties": false
937
767
  }
938
768
  ]
939
769
  },
940
- "VariantSpell": {
941
- "oneOf": [
942
- {
943
- "type": "object",
944
- "properties": {
945
- "tag": {
946
- "const": "Fixed"
947
- },
948
- "id": {
949
- "description": "The identifier of the spell to provide the rating for.",
950
- "$ref": "#/definitions/SpellIdentifier"
951
- },
952
- "rating": {
953
- "description": "The rating provided for the spell. It overrides the basic package's\nrating.",
954
- "type": "integer",
955
- "minimum": 0
956
- }
770
+ "ProfessionSpellworkIdentifier": {
771
+ "type": "object",
772
+ "properties": {
773
+ "id": {
774
+ "description": "The identifier of the spell to provide the rating for.",
775
+ "$ref": "./_Identifier.schema.json#/$defs/SpellworkIdentifier"
776
+ },
777
+ "tradition": {
778
+ "description": "If the spell is not part of the magical tradition required by the\npackage, this references the magical tradition it is part of. It can also\nbe used to define the target magical tradition of a spell if multiple\nmagical traditions are required and the spell is available to multiple\nof them.",
779
+ "$ref": "./_SimpleReferences.schema.json#/$defs/MagicalTraditionReference"
780
+ }
781
+ },
782
+ "required": [
783
+ "id"
784
+ ],
785
+ "additionalProperties": false
786
+ },
787
+ "ProfessionMagicalActionIdentifier": {
788
+ "type": "object",
789
+ "properties": {
790
+ "id": {
791
+ "description": "The identifier of the magical action to provide the rating for.",
792
+ "$ref": "./_Identifier.schema.json#/$defs/MagicalActionIdentifier"
793
+ }
794
+ },
795
+ "required": [
796
+ "id"
797
+ ],
798
+ "additionalProperties": false
799
+ },
800
+ "LiturgicalChantRating": {
801
+ "type": "object",
802
+ "properties": {
803
+ "id": {
804
+ "description": "The identifier(s) of the liturgical chant(s) to choose from to provide\nthe rating for. If multiple liturgical chants are provided, they must all\nhave the same improvement cost.",
805
+ "type": "array",
806
+ "items": {
807
+ "$ref": "./_Identifier.schema.json#/$defs/LiturgyIdentifier"
957
808
  },
958
- "required": [
959
- "tag",
960
- "id",
961
- "rating"
962
- ],
963
- "additionalProperties": false
809
+ "minItems": 1
964
810
  },
965
- {
966
- "type": "object",
967
- "properties": {
968
- "tag": {
969
- "const": "Selection"
811
+ "rating": {
812
+ "description": "The rating bonus provided for the selected liturgical chant. If used in a\nprofession variant, it can also be used to lower the bonus of the base\nprofession.",
813
+ "type": "integer",
814
+ "maximum": 10,
815
+ "minimum": -10
816
+ }
817
+ },
818
+ "required": [
819
+ "id",
820
+ "rating"
821
+ ],
822
+ "additionalProperties": false
823
+ },
824
+ "ProfessionPackageOptions": {
825
+ "description": "In some areas, the profession package grants a loose set of stats where the\nplayer must choose between different options for the profession package.",
826
+ "type": "object",
827
+ "properties": {
828
+ "skill_specialization": {
829
+ "$ref": "#/$defs/SkillSpecializationOptions"
830
+ },
831
+ "languages_scripts": {
832
+ "$ref": "#/$defs/LanguagesScriptsOptions"
833
+ },
834
+ "combat_techniques": {
835
+ "$ref": "#/$defs/CombatTechniquesOptions"
836
+ },
837
+ "cantrips": {
838
+ "$ref": "#/$defs/CantripsOptions"
839
+ },
840
+ "curses": {
841
+ "$ref": "#/$defs/CursesOptions"
842
+ },
843
+ "terrain_knowledge": {
844
+ "$ref": "#/$defs/TerrainKnowledgeOptions"
845
+ },
846
+ "skills": {
847
+ "$ref": "#/$defs/SkillsOptions"
848
+ }
849
+ },
850
+ "required": [],
851
+ "minProperties": 1,
852
+ "additionalProperties": false
853
+ },
854
+ "ProfessionVariantPackageOptions": {
855
+ "description": "In some areas, the profession package grants a loose set of stats where the\nplayer must choose between different options for the profession package. The\nvariant may override or remove those options.",
856
+ "type": "object",
857
+ "properties": {
858
+ "skill_specialization": {
859
+ "oneOf": [
860
+ {
861
+ "type": "object",
862
+ "properties": {
863
+ "tag": {
864
+ "const": "Remove"
865
+ }
866
+ },
867
+ "required": [
868
+ "tag"
869
+ ],
870
+ "additionalProperties": false
970
871
  },
971
- "id": {
972
- "description": "The identifiers of the spells to choose from to provide the rating for.",
973
- "type": "array",
974
- "items": {
975
- "$ref": "#/definitions/SpellIdentifier"
872
+ {
873
+ "type": "object",
874
+ "properties": {
875
+ "tag": {
876
+ "const": "Override"
877
+ },
878
+ "override": {
879
+ "$ref": "#/$defs/SkillSpecializationOptions"
880
+ }
881
+ },
882
+ "required": [
883
+ "tag",
884
+ "override"
885
+ ],
886
+ "additionalProperties": false
887
+ }
888
+ ]
889
+ },
890
+ "languages_scripts": {
891
+ "oneOf": [
892
+ {
893
+ "type": "object",
894
+ "properties": {
895
+ "tag": {
896
+ "const": "Remove"
897
+ }
976
898
  },
977
- "minItems": 2
899
+ "required": [
900
+ "tag"
901
+ ],
902
+ "additionalProperties": false
978
903
  },
979
- "rating": {
980
- "description": "The rating provided for the selected spell. It overrides the basic\npackage's rating.",
981
- "type": "integer",
982
- "minimum": 0
904
+ {
905
+ "type": "object",
906
+ "properties": {
907
+ "tag": {
908
+ "const": "Override"
909
+ },
910
+ "override": {
911
+ "$ref": "#/$defs/LanguagesScriptsOptions"
912
+ }
913
+ },
914
+ "required": [
915
+ "tag",
916
+ "override"
917
+ ],
918
+ "additionalProperties": false
983
919
  }
984
- },
985
- "required": [
986
- "tag",
987
- "id",
988
- "rating"
989
- ],
990
- "additionalProperties": false
991
- }
992
- ]
993
- },
994
- "SpellIdentifier": {
995
- "oneOf": [
996
- {
997
- "type": "object",
998
- "properties": {
999
- "tag": {
1000
- "const": "Spellwork"
920
+ ]
921
+ },
922
+ "combat_techniques": {
923
+ "oneOf": [
924
+ {
925
+ "type": "object",
926
+ "properties": {
927
+ "tag": {
928
+ "const": "Remove"
929
+ }
930
+ },
931
+ "required": [
932
+ "tag"
933
+ ],
934
+ "additionalProperties": false
1001
935
  },
1002
- "id": {
1003
- "description": "The identifier of the spell to provide the rating for.",
1004
- "$ref": "./_Identifier.schema.json#/definitions/SpellworkIdentifier"
936
+ {
937
+ "type": "object",
938
+ "properties": {
939
+ "tag": {
940
+ "const": "Override"
941
+ },
942
+ "override": {
943
+ "$ref": "#/$defs/CombatTechniquesOptions"
944
+ }
945
+ },
946
+ "required": [
947
+ "tag",
948
+ "override"
949
+ ],
950
+ "additionalProperties": false
951
+ }
952
+ ]
953
+ },
954
+ "cantrips": {
955
+ "oneOf": [
956
+ {
957
+ "type": "object",
958
+ "properties": {
959
+ "tag": {
960
+ "const": "Remove"
961
+ }
962
+ },
963
+ "required": [
964
+ "tag"
965
+ ],
966
+ "additionalProperties": false
1005
967
  },
1006
- "tradition": {
1007
- "description": "If the spell is not part of the magical tradition required by the\npackage, this references the magical tradition it is part of. It can also\nbe used to define the target magical tradition of a spell if multiple\nmagical traditions are required and the spell is available to multiple\nof them.",
968
+ {
1008
969
  "type": "object",
1009
970
  "properties": {
1010
- "id": {
1011
- "description": "The unfamiliar or ambiguous magical tradition's identifier.",
1012
- "type": "number"
971
+ "tag": {
972
+ "const": "Override"
973
+ },
974
+ "override": {
975
+ "$ref": "#/$defs/CantripsOptions"
1013
976
  }
1014
977
  },
1015
978
  "required": [
1016
- "id"
979
+ "tag",
980
+ "override"
1017
981
  ],
1018
982
  "additionalProperties": false
1019
983
  }
1020
- },
1021
- "required": [
1022
- "tag",
1023
- "id"
1024
- ],
1025
- "additionalProperties": false
984
+ ]
1026
985
  },
1027
- {
1028
- "type": "object",
1029
- "properties": {
1030
- "tag": {
1031
- "const": "MagicalAction"
1032
- },
1033
- "id": {
1034
- "description": "The identifier of the magical action to provide the rating for.",
1035
- "$ref": "./_Identifier.schema.json#/definitions/MagicalActionIdentifier"
1036
- }
1037
- },
1038
- "required": [
1039
- "tag",
1040
- "id"
1041
- ],
1042
- "additionalProperties": false
1043
- }
1044
- ]
1045
- },
1046
- "LiturgicalChant": {
1047
- "oneOf": [
1048
- {
1049
- "type": "object",
1050
- "properties": {
1051
- "tag": {
1052
- "const": "Fixed"
1053
- },
1054
- "id": {
1055
- "description": "The identifier of the liturgical chant to provide the rating for.",
1056
- "$ref": "./_Identifier.schema.json#/definitions/LiturgyIdentifier"
986
+ "curses": {
987
+ "oneOf": [
988
+ {
989
+ "type": "object",
990
+ "properties": {
991
+ "tag": {
992
+ "const": "Remove"
993
+ }
994
+ },
995
+ "required": [
996
+ "tag"
997
+ ],
998
+ "additionalProperties": false
1057
999
  },
1058
- "rating": {
1059
- "description": "The rating provided for the liturgical chant.",
1060
- "type": "integer",
1061
- "minimum": 1
1000
+ {
1001
+ "type": "object",
1002
+ "properties": {
1003
+ "tag": {
1004
+ "const": "Override"
1005
+ },
1006
+ "override": {
1007
+ "$ref": "#/$defs/CursesOptions"
1008
+ }
1009
+ },
1010
+ "required": [
1011
+ "tag",
1012
+ "override"
1013
+ ],
1014
+ "additionalProperties": false
1062
1015
  }
1063
- },
1064
- "required": [
1065
- "tag",
1066
- "id",
1067
- "rating"
1068
- ],
1069
- "additionalProperties": false
1016
+ ]
1070
1017
  },
1071
- {
1072
- "type": "object",
1073
- "properties": {
1074
- "tag": {
1075
- "const": "Selection"
1076
- },
1077
- "id": {
1078
- "description": "The identifiers of the liturgical chants to choose from to provide the\nrating for.",
1079
- "type": "array",
1080
- "items": {
1081
- "$ref": "./_Identifier.schema.json#/definitions/LiturgyIdentifier"
1018
+ "terrain_knowledge": {
1019
+ "oneOf": [
1020
+ {
1021
+ "type": "object",
1022
+ "properties": {
1023
+ "tag": {
1024
+ "const": "Remove"
1025
+ }
1082
1026
  },
1083
- "minItems": 2
1084
- },
1085
- "rating": {
1086
- "description": "The rating provided for the selected liturgical chant.",
1087
- "type": "integer",
1088
- "minimum": 1
1089
- }
1090
- },
1091
- "required": [
1092
- "tag",
1093
- "id",
1094
- "rating"
1095
- ],
1096
- "additionalProperties": false
1097
- }
1098
- ]
1099
- },
1100
- "VariantLiturgicalChant": {
1101
- "oneOf": [
1102
- {
1103
- "type": "object",
1104
- "properties": {
1105
- "tag": {
1106
- "const": "Fixed"
1107
- },
1108
- "id": {
1109
- "description": "The identifier of the liturgical chant to provide the rating for.",
1110
- "$ref": "./_Identifier.schema.json#/definitions/LiturgyIdentifier"
1027
+ "required": [
1028
+ "tag"
1029
+ ],
1030
+ "additionalProperties": false
1111
1031
  },
1112
- "rating": {
1113
- "description": "The rating provided for the liturgical chant. It overrides the basic\npackage's rating.",
1114
- "type": "integer",
1115
- "minimum": 0
1032
+ {
1033
+ "type": "object",
1034
+ "properties": {
1035
+ "tag": {
1036
+ "const": "Override"
1037
+ },
1038
+ "override": {
1039
+ "$ref": "#/$defs/TerrainKnowledgeOptions"
1040
+ }
1041
+ },
1042
+ "required": [
1043
+ "tag",
1044
+ "override"
1045
+ ],
1046
+ "additionalProperties": false
1116
1047
  }
1117
- },
1118
- "required": [
1119
- "tag",
1120
- "id",
1121
- "rating"
1122
- ],
1123
- "additionalProperties": false
1048
+ ]
1124
1049
  },
1125
- {
1126
- "type": "object",
1127
- "properties": {
1128
- "tag": {
1129
- "const": "Selection"
1130
- },
1131
- "id": {
1132
- "description": "The identifiers of the liturgical chants to choose from to provide the\nrating for.",
1133
- "type": "array",
1134
- "items": {
1135
- "$ref": "./_Identifier.schema.json#/definitions/LiturgyIdentifier"
1050
+ "skills": {
1051
+ "oneOf": [
1052
+ {
1053
+ "type": "object",
1054
+ "properties": {
1055
+ "tag": {
1056
+ "const": "Remove"
1057
+ }
1136
1058
  },
1137
- "minItems": 2
1059
+ "required": [
1060
+ "tag"
1061
+ ],
1062
+ "additionalProperties": false
1138
1063
  },
1139
- "rating": {
1140
- "description": "The rating provided for the selected liturgical chant. It overrides the\nbasic package's rating.",
1141
- "type": "integer",
1142
- "minimum": 0
1064
+ {
1065
+ "type": "object",
1066
+ "properties": {
1067
+ "tag": {
1068
+ "const": "Override"
1069
+ },
1070
+ "override": {
1071
+ "$ref": "#/$defs/SkillsOptions"
1072
+ }
1073
+ },
1074
+ "required": [
1075
+ "tag",
1076
+ "override"
1077
+ ],
1078
+ "additionalProperties": false
1143
1079
  }
1144
- },
1145
- "required": [
1146
- "tag",
1147
- "id",
1148
- "rating"
1149
- ],
1150
- "additionalProperties": false
1080
+ ]
1151
1081
  }
1152
- ]
1082
+ },
1083
+ "required": [],
1084
+ "minProperties": 1,
1085
+ "additionalProperties": false
1153
1086
  },
1154
1087
  "SkillSpecializationOptions": {
1155
1088
  "description": "Select an application from a skill or from one of a list of skills where you\nget a skill specialization for. You can also specify a skill groups from\nwhich you can choose a skill.",
@@ -1160,47 +1093,13 @@
1160
1093
  "tag": {
1161
1094
  "const": "Single"
1162
1095
  },
1163
- "id": {
1164
- "description": "The referenced skill's identifier.",
1165
- "type": "integer",
1166
- "minimum": 1
1167
- }
1168
- },
1169
- "required": [
1170
- "tag",
1171
- "id"
1172
- ],
1173
- "additionalProperties": false
1174
- },
1175
- {
1176
- "type": "object",
1177
- "properties": {
1178
- "tag": {
1179
- "const": "Selection"
1180
- },
1181
- "options": {
1182
- "description": "Possible skills to get a skill specialization for.",
1183
- "type": "array",
1184
- "items": {
1185
- "type": "object",
1186
- "properties": {
1187
- "id": {
1188
- "description": "The referenced skill's identifier.",
1189
- "type": "integer",
1190
- "minimum": 1
1191
- }
1192
- },
1193
- "required": [
1194
- "id"
1195
- ],
1196
- "additionalProperties": false
1197
- },
1198
- "minItems": 2
1096
+ "single": {
1097
+ "$ref": "#/$defs/SingleSkillSpecializationOption"
1199
1098
  }
1200
1099
  },
1201
1100
  "required": [
1202
1101
  "tag",
1203
- "options"
1102
+ "single"
1204
1103
  ],
1205
1104
  "additionalProperties": false
1206
1105
  },
@@ -1210,21 +1109,39 @@
1210
1109
  "tag": {
1211
1110
  "const": "Group"
1212
1111
  },
1213
- "id": {
1214
- "description": "The referenced skill group's identifier.",
1215
- "type": "integer",
1216
- "maximum": 5,
1217
- "minimum": 1
1112
+ "group": {
1113
+ "$ref": "#/$defs/SkillGroupSkillSpecializationOption"
1218
1114
  }
1219
1115
  },
1220
1116
  "required": [
1221
1117
  "tag",
1222
- "id"
1118
+ "group"
1223
1119
  ],
1224
1120
  "additionalProperties": false
1225
1121
  }
1226
1122
  ]
1227
1123
  },
1124
+ "SingleSkillSpecializationOption": {
1125
+ "type": "object",
1126
+ "properties": {
1127
+ "options": {
1128
+ "description": "Possible skills to get a skill specialization for.",
1129
+ "type": "array",
1130
+ "items": {
1131
+ "$ref": "./_SimpleReferences.schema.json#/$defs/SkillReference"
1132
+ },
1133
+ "minItems": 1,
1134
+ "uniqueItems": true
1135
+ }
1136
+ },
1137
+ "required": [
1138
+ "options"
1139
+ ],
1140
+ "additionalProperties": false
1141
+ },
1142
+ "SkillGroupSkillSpecializationOption": {
1143
+ "$ref": "./_SimpleReferences.schema.json#/$defs/SkillGroupReference"
1144
+ },
1228
1145
  "LanguagesScriptsOptions": {
1229
1146
  "description": "Buy languages and scripts for a specific amount of AP.",
1230
1147
  "type": "object",
@@ -1249,47 +1166,21 @@
1249
1166
  "description": "Specify the number of combat techniques that can be selected so that they\nget increased to a specific CtR. There can be multiple selections with\ndifferent CtRs.",
1250
1167
  "type": "array",
1251
1168
  "items": {
1252
- "type": "object",
1253
- "properties": {
1254
- "number": {
1255
- "description": "The number of selectable combat techniques.",
1256
- "type": "integer",
1257
- "minimum": 1
1258
- },
1259
- "rating": {
1260
- "description": "The rating provided for the selected combat technique(s).",
1261
- "type": "integer",
1262
- "minimum": 7
1263
- }
1264
- },
1265
- "required": [
1266
- "number",
1267
- "rating"
1268
- ],
1269
- "additionalProperties": false
1169
+ "$ref": "#/$defs/RatingForCombatTechniquesNumber"
1270
1170
  },
1271
1171
  "minItems": 1
1272
1172
  },
1273
1173
  "rest_rating": {
1274
- "description": "Define if after the fixed selections the remaining unselected combat\ntechniques will receive a certain rating as well.",
1174
+ "description": "Define if after the fixed selections the remaining unselected combat\ntechniques will receive a certain rating bonus as well.",
1275
1175
  "type": "integer",
1276
- "minimum": 7
1176
+ "maximum": 6,
1177
+ "minimum": 1
1277
1178
  },
1278
1179
  "options": {
1279
1180
  "description": "The list of combat techniques to choose from.",
1280
1181
  "type": "array",
1281
1182
  "items": {
1282
- "type": "object",
1283
- "properties": {
1284
- "id": {
1285
- "description": "The combat technique's identifier.",
1286
- "$ref": "./_Identifier.schema.json#/definitions/CombatTechniqueIdentifier"
1287
- }
1288
- },
1289
- "required": [
1290
- "id"
1291
- ],
1292
- "additionalProperties": false
1183
+ "$ref": "./_SimpleReferences.schema.json#/$defs/CombatTechniqueReference"
1293
1184
  },
1294
1185
  "minItems": 2
1295
1186
  }
@@ -1300,6 +1191,27 @@
1300
1191
  ],
1301
1192
  "additionalProperties": false
1302
1193
  },
1194
+ "RatingForCombatTechniquesNumber": {
1195
+ "type": "object",
1196
+ "properties": {
1197
+ "number": {
1198
+ "description": "The number of selectable combat techniques.",
1199
+ "type": "integer",
1200
+ "minimum": 1
1201
+ },
1202
+ "rating": {
1203
+ "description": "The rating bonus provided for the selected combat technique(s).\n\n**Note:** This is a rating *bonus*, so it will be *added* to the default\nvalue of 6.",
1204
+ "type": "integer",
1205
+ "maximum": 6,
1206
+ "minimum": 1
1207
+ }
1208
+ },
1209
+ "required": [
1210
+ "number",
1211
+ "rating"
1212
+ ],
1213
+ "additionalProperties": false
1214
+ },
1303
1215
  "CantripsOptions": {
1304
1216
  "description": "Select one or more cantrips you receive.",
1305
1217
  "type": "object",
@@ -1313,18 +1225,7 @@
1313
1225
  "description": "The list of cantrips to choose from.",
1314
1226
  "type": "array",
1315
1227
  "items": {
1316
- "type": "object",
1317
- "properties": {
1318
- "id": {
1319
- "description": "The cantrip's identifier.",
1320
- "type": "integer",
1321
- "minimum": 1
1322
- }
1323
- },
1324
- "required": [
1325
- "id"
1326
- ],
1327
- "additionalProperties": false
1228
+ "$ref": "./_SimpleReferences.schema.json#/$defs/CantripReference"
1328
1229
  },
1329
1230
  "minItems": 2
1330
1231
  }
@@ -1359,19 +1260,7 @@
1359
1260
  "description": "The list of possible terrain knowledges.",
1360
1261
  "type": "array",
1361
1262
  "items": {
1362
- "type": "object",
1363
- "properties": {
1364
- "id": {
1365
- "description": "The terrain knowledge option's identifier.",
1366
- "type": "integer",
1367
- "maximum": 10,
1368
- "minimum": 1
1369
- }
1370
- },
1371
- "required": [
1372
- "id"
1373
- ],
1374
- "additionalProperties": false
1263
+ "$ref": "#/$defs/TerrainKnowledgeOptionReference"
1375
1264
  },
1376
1265
  "minItems": 2
1377
1266
  }
@@ -1381,15 +1270,28 @@
1381
1270
  ],
1382
1271
  "additionalProperties": false
1383
1272
  },
1273
+ "TerrainKnowledgeOptionReference": {
1274
+ "type": "object",
1275
+ "properties": {
1276
+ "id": {
1277
+ "description": "The terrain knowledge option's identifier.",
1278
+ "type": "integer",
1279
+ "maximum": 10,
1280
+ "minimum": 1
1281
+ }
1282
+ },
1283
+ "required": [
1284
+ "id"
1285
+ ],
1286
+ "additionalProperties": false
1287
+ },
1384
1288
  "SkillsOptions": {
1385
1289
  "description": "Buy skills for a specific amount of AP.",
1386
1290
  "type": "object",
1387
1291
  "properties": {
1388
- "group_id": {
1292
+ "group": {
1389
1293
  "description": "If specified, you may only choose from skills of the specified group.",
1390
- "type": "integer",
1391
- "maximum": 1,
1392
- "minimum": 1
1294
+ "$ref": "./_SimpleReferences.schema.json#/$defs/SkillGroupReference"
1393
1295
  },
1394
1296
  "ap_value": {
1395
1297
  "description": "The AP value you can buy skills for.",
@@ -1402,26 +1304,26 @@
1402
1304
  ],
1403
1305
  "additionalProperties": false
1404
1306
  },
1405
- "Name": {
1307
+ "ProfessionName": {
1406
1308
  "description": "The name of the profession that may have sex-specific names.",
1407
1309
  "oneOf": [
1408
1310
  {
1409
- "$ref": "#/definitions/NonEmptyString"
1311
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
1410
1312
  },
1411
1313
  {
1412
1314
  "type": "object",
1413
1315
  "properties": {
1414
1316
  "default": {
1415
1317
  "description": "The name from the source publication.",
1416
- "$ref": "#/definitions/NonEmptyString"
1318
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
1417
1319
  },
1418
1320
  "male": {
1419
1321
  "description": "The male name.",
1420
- "$ref": "#/definitions/NonEmptyString"
1322
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
1421
1323
  },
1422
1324
  "female": {
1423
1325
  "description": "The female name.",
1424
- "$ref": "#/definitions/NonEmptyString"
1326
+ "$ref": "./_NonEmptyString.schema.json#/$defs/NonEmptyString"
1425
1327
  }
1426
1328
  },
1427
1329
  "required": [
@@ -1432,91 +1334,6 @@
1432
1334
  "additionalProperties": false
1433
1335
  }
1434
1336
  ]
1435
- },
1436
- "Group": {
1437
- "oneOf": [
1438
- {
1439
- "type": "object",
1440
- "properties": {
1441
- "tag": {
1442
- "const": "Mundane"
1443
- },
1444
- "sub": {
1445
- "oneOf": [
1446
- {
1447
- "type": "object",
1448
- "properties": {
1449
- "tag": {
1450
- "const": "Profane"
1451
- }
1452
- },
1453
- "required": [
1454
- "tag"
1455
- ],
1456
- "additionalProperties": false
1457
- },
1458
- {
1459
- "type": "object",
1460
- "properties": {
1461
- "tag": {
1462
- "const": "Fighter"
1463
- }
1464
- },
1465
- "required": [
1466
- "tag"
1467
- ],
1468
- "additionalProperties": false
1469
- },
1470
- {
1471
- "type": "object",
1472
- "properties": {
1473
- "tag": {
1474
- "const": "Religious"
1475
- }
1476
- },
1477
- "required": [
1478
- "tag"
1479
- ],
1480
- "additionalProperties": false
1481
- }
1482
- ]
1483
- }
1484
- },
1485
- "required": [
1486
- "tag",
1487
- "sub"
1488
- ],
1489
- "additionalProperties": false
1490
- },
1491
- {
1492
- "type": "object",
1493
- "properties": {
1494
- "tag": {
1495
- "const": "Magical"
1496
- }
1497
- },
1498
- "required": [
1499
- "tag"
1500
- ],
1501
- "additionalProperties": false
1502
- },
1503
- {
1504
- "type": "object",
1505
- "properties": {
1506
- "tag": {
1507
- "const": "Blessed"
1508
- }
1509
- },
1510
- "required": [
1511
- "tag"
1512
- ],
1513
- "additionalProperties": false
1514
- }
1515
- ]
1516
- },
1517
- "NonEmptyString": {
1518
- "type": "string",
1519
- "minLength": 1
1520
1337
  }
1521
1338
  }
1522
1339
  }