optolith-database-schema 0.0.2 → 0.1.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 (221) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/lib/types/Advantage.d.ts +48 -0
  3. package/lib/types/Advantage.js +4 -0
  4. package/lib/types/ArcaneBardTradition.d.ts +2 -2
  5. package/lib/types/ArcaneDancerTradition.d.ts +2 -2
  6. package/lib/types/Blessing.d.ts +124 -0
  7. package/lib/types/Blessing.js +4 -0
  8. package/lib/types/Cantrip.d.ts +220 -0
  9. package/lib/types/Cantrip.js +4 -0
  10. package/lib/types/Ceremony.d.ts +2 -8
  11. package/lib/types/Continent.d.ts +32 -0
  12. package/lib/types/Continent.js +4 -0
  13. package/lib/types/DerivedCharacteristic.d.ts +2 -2
  14. package/lib/types/Disadvantage.d.ts +46 -0
  15. package/lib/types/Disadvantage.js +4 -0
  16. package/lib/types/LiturgicalChant.d.ts +2 -8
  17. package/lib/types/PactCategory.d.ts +90 -0
  18. package/lib/types/PactCategory.js +4 -0
  19. package/lib/types/Patron.d.ts +197 -0
  20. package/lib/types/Patron.js +4 -0
  21. package/lib/types/PatronCategory.d.ts +44 -0
  22. package/lib/types/PatronCategory.js +4 -0
  23. package/lib/types/Ritual.d.ts +2 -2
  24. package/lib/types/Spell.d.ts +2 -2
  25. package/lib/types/_Activatable.d.ts +528 -0
  26. package/lib/types/_Activatable.js +5 -0
  27. package/lib/types/_ActivatableSkill.d.ts +44 -22
  28. package/lib/types/_Enhancements.d.ts +2 -2
  29. package/lib/types/_I18n.d.ts +38 -0
  30. package/lib/types/_I18n.js +1 -0
  31. package/lib/types/_Identifier.d.ts +81 -75
  32. package/lib/types/_Identifier.js +76 -1
  33. package/lib/types/_Influence.d.ts +52 -0
  34. package/lib/types/_Influence.js +4 -0
  35. package/lib/types/_Prerequisite.d.ts +343 -296
  36. package/lib/types/_Prerequisite.js +136 -183
  37. package/lib/types/magicalActions/GeodeRitual.d.ts +2 -2
  38. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +34 -0
  39. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +4 -0
  40. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +32 -0
  41. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +4 -0
  42. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +32 -0
  43. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +4 -0
  44. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +32 -0
  45. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +4 -0
  46. package/lib/types/specialAbility/AncestorGlyph.d.ts +30 -0
  47. package/lib/types/specialAbility/AncestorGlyph.js +4 -0
  48. package/lib/types/specialAbility/BlessedTradition.d.ts +170 -0
  49. package/lib/types/specialAbility/BlessedTradition.js +4 -0
  50. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +32 -0
  51. package/lib/types/specialAbility/BrawlingSpecialAbility.js +4 -0
  52. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +33 -0
  53. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +4 -0
  54. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +34 -0
  55. package/lib/types/specialAbility/CombatSpecialAbility.js +4 -0
  56. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +43 -0
  57. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +4 -0
  58. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +32 -0
  59. package/lib/types/specialAbility/CommandSpecialAbility.js +4 -0
  60. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +30 -0
  61. package/lib/types/specialAbility/FamiliarSpecialAbility.js +4 -0
  62. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +30 -0
  63. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +4 -0
  64. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +32 -0
  65. package/lib/types/specialAbility/FatePointSpecialAbility.js +4 -0
  66. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +32 -0
  67. package/lib/types/specialAbility/GeneralSpecialAbility.js +4 -0
  68. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +30 -0
  69. package/lib/types/specialAbility/KarmaSpecialAbility.js +4 -0
  70. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +33 -0
  71. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +4 -0
  72. package/lib/types/specialAbility/LycantropicGift.d.ts +30 -0
  73. package/lib/types/specialAbility/LycantropicGift.js +4 -0
  74. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +33 -0
  75. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +4 -0
  76. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +32 -0
  77. package/lib/types/specialAbility/MagicalSpecialAbility.js +4 -0
  78. package/lib/types/specialAbility/MagicalTradition.d.ts +130 -0
  79. package/lib/types/specialAbility/MagicalTradition.js +4 -0
  80. package/lib/types/specialAbility/PactGift.d.ts +86 -0
  81. package/lib/types/specialAbility/PactGift.js +4 -0
  82. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +41 -0
  83. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +4 -0
  84. package/lib/types/specialAbility/Sermon.d.ts +30 -0
  85. package/lib/types/specialAbility/Sermon.js +4 -0
  86. package/lib/types/specialAbility/SexSpecialAbility.d.ts +32 -0
  87. package/lib/types/specialAbility/SexSpecialAbility.js +4 -0
  88. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +30 -0
  89. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +4 -0
  90. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +31 -0
  91. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +4 -0
  92. package/lib/types/specialAbility/VampiricGift.d.ts +30 -0
  93. package/lib/types/specialAbility/VampiricGift.js +4 -0
  94. package/lib/types/specialAbility/Vision.d.ts +30 -0
  95. package/lib/types/specialAbility/Vision.js +4 -0
  96. package/lib/types/specialAbility/sub/Language.d.ts +141 -0
  97. package/lib/types/specialAbility/sub/Language.js +4 -0
  98. package/lib/types/specialAbility/sub/Script.d.ts +85 -0
  99. package/lib/types/specialAbility/sub/Script.js +4 -0
  100. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +31 -0
  101. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +4 -0
  102. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +31 -0
  103. package/lib/types/traditionArtifacts/AttireEnchantment.js +4 -0
  104. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +31 -0
  105. package/lib/types/traditionArtifacts/BowlEnchantment.js +4 -0
  106. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +44 -0
  107. package/lib/types/traditionArtifacts/CauldronEnchantment.js +4 -0
  108. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +31 -0
  109. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +4 -0
  110. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +31 -0
  111. package/lib/types/traditionArtifacts/DaggerRitual.js +4 -0
  112. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +31 -0
  113. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +4 -0
  114. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +31 -0
  115. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +4 -0
  116. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +31 -0
  117. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +4 -0
  118. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +31 -0
  119. package/lib/types/traditionArtifacts/OrbEnchantment.js +4 -0
  120. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +31 -0
  121. package/lib/types/traditionArtifacts/RingEnchantment.js +4 -0
  122. package/lib/types/traditionArtifacts/SickleRitual.d.ts +31 -0
  123. package/lib/types/traditionArtifacts/SickleRitual.js +4 -0
  124. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +31 -0
  125. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +4 -0
  126. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +31 -0
  127. package/lib/types/traditionArtifacts/StaffEnchantment.js +4 -0
  128. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +31 -0
  129. package/lib/types/traditionArtifacts/ToyEnchantment.js +4 -0
  130. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +31 -0
  131. package/lib/types/traditionArtifacts/Trinkhornzauber.js +4 -0
  132. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +31 -0
  133. package/lib/types/traditionArtifacts/WandEnchantment.js +4 -0
  134. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +31 -0
  135. package/lib/types/traditionArtifacts/WeaponEnchantment.js +4 -0
  136. package/lib/types/traditionArtifacts/sub/AnimalShape.d.ts +42 -0
  137. package/lib/types/traditionArtifacts/sub/AnimalShape.js +4 -0
  138. package/lib/types/traditionArtifacts/sub/AnimalShapePath.d.ts +30 -0
  139. package/lib/types/traditionArtifacts/sub/AnimalShapePath.js +4 -0
  140. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.d.ts +42 -0
  141. package/lib/types/traditionArtifacts/sub/AnimalShapeSize.js +4 -0
  142. package/lib/types/traditionArtifacts/sub/Brew.d.ts +30 -0
  143. package/lib/types/traditionArtifacts/sub/Brew.js +4 -0
  144. package/package.json +2 -2
  145. package/schema/Advantage.schema.json +81 -0
  146. package/schema/ArcaneBardTradition.schema.json +1 -1
  147. package/schema/ArcaneDancerTradition.schema.json +1 -1
  148. package/schema/Blessing.schema.json +227 -0
  149. package/schema/Cantrip.schema.json +427 -0
  150. package/schema/Ceremony.schema.json +1 -7
  151. package/schema/Continent.schema.json +46 -0
  152. package/schema/DerivedCharacteristic.schema.json +1 -1
  153. package/schema/Disadvantage.schema.json +75 -0
  154. package/schema/LiturgicalChant.schema.json +1 -7
  155. package/schema/PactCategory.schema.json +138 -0
  156. package/schema/Patron.schema.json +407 -0
  157. package/schema/PatronCategory.schema.json +66 -0
  158. package/schema/Ritual.schema.json +1 -1
  159. package/schema/Spell.schema.json +1 -1
  160. package/schema/_Activatable.schema.json +1182 -0
  161. package/schema/_ActivatableSkill.schema.json +53 -22
  162. package/schema/_Enhancements.schema.json +1 -1
  163. package/schema/_I18n.schema.json +38 -0
  164. package/schema/_Identifier.schema.json +90 -113
  165. package/schema/_Influence.schema.json +77 -0
  166. package/schema/_Prerequisite.schema.json +703 -573
  167. package/schema/magicalActions/GeodeRitual.schema.json +1 -1
  168. package/schema/source/Publication.schema.json +1 -1
  169. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +76 -0
  170. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +68 -0
  171. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +68 -0
  172. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +68 -0
  173. package/schema/specialAbility/AncestorGlyph.schema.json +62 -0
  174. package/schema/specialAbility/BlessedTradition.schema.json +300 -0
  175. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +70 -0
  176. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +72 -0
  177. package/schema/specialAbility/CombatSpecialAbility.schema.json +76 -0
  178. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +110 -0
  179. package/schema/specialAbility/CommandSpecialAbility.schema.json +70 -0
  180. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +62 -0
  181. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +62 -0
  182. package/schema/specialAbility/FatePointSpecialAbility.schema.json +68 -0
  183. package/schema/specialAbility/GeneralSpecialAbility.schema.json +68 -0
  184. package/schema/specialAbility/KarmaSpecialAbility.schema.json +62 -0
  185. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +72 -0
  186. package/schema/specialAbility/LycantropicGift.schema.json +62 -0
  187. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +72 -0
  188. package/schema/specialAbility/MagicalSpecialAbility.schema.json +68 -0
  189. package/schema/specialAbility/MagicalTradition.schema.json +181 -0
  190. package/schema/specialAbility/PactGift.schema.json +215 -0
  191. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +70 -0
  192. package/schema/specialAbility/Sermon.schema.json +62 -0
  193. package/schema/specialAbility/SexSpecialAbility.schema.json +68 -0
  194. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +62 -0
  195. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +66 -0
  196. package/schema/specialAbility/VampiricGift.schema.json +62 -0
  197. package/schema/specialAbility/Vision.schema.json +62 -0
  198. package/schema/specialAbility/sub/Language.schema.json +215 -0
  199. package/schema/specialAbility/sub/Script.schema.json +127 -0
  200. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +66 -0
  201. package/schema/traditionArtifacts/AttireEnchantment.schema.json +66 -0
  202. package/schema/traditionArtifacts/BowlEnchantment.schema.json +66 -0
  203. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +83 -0
  204. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +66 -0
  205. package/schema/traditionArtifacts/DaggerRitual.schema.json +66 -0
  206. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +66 -0
  207. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +66 -0
  208. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +66 -0
  209. package/schema/traditionArtifacts/OrbEnchantment.schema.json +66 -0
  210. package/schema/traditionArtifacts/RingEnchantment.schema.json +66 -0
  211. package/schema/traditionArtifacts/SickleRitual.schema.json +66 -0
  212. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +66 -0
  213. package/schema/traditionArtifacts/StaffEnchantment.schema.json +66 -0
  214. package/schema/traditionArtifacts/ToyEnchantment.schema.json +66 -0
  215. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +66 -0
  216. package/schema/traditionArtifacts/WandEnchantment.schema.json +66 -0
  217. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +66 -0
  218. package/schema/traditionArtifacts/sub/AnimalShape.schema.json +57 -0
  219. package/schema/traditionArtifacts/sub/AnimalShapePath.schema.json +45 -0
  220. package/schema/traditionArtifacts/sub/AnimalShapeSize.schema.json +57 -0
  221. package/schema/traditionArtifacts/sub/Brew.schema.json +45 -0
@@ -2,716 +2,846 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "$id": "_Prerequisite.schema.json",
4
4
  "definitions": {
5
- "Single": {
6
- "DisplayOption": {
7
- "T": {
8
- "title": "Display Option",
9
- "oneOf": [
10
- {
11
- "type": "object",
12
- "properties": {
13
- "tag": {
14
- "const": "Hide"
15
- }
5
+ "Prerequisite": {
6
+ "Single": {
7
+ "DisplayOption": {
8
+ "T": {
9
+ "title": "Display Option",
10
+ "oneOf": [
11
+ {
12
+ "type": "object",
13
+ "properties": {
14
+ "tag": {
15
+ "const": "Hide"
16
+ }
17
+ },
18
+ "required": [
19
+ "tag"
20
+ ],
21
+ "additionalProperties": false
16
22
  },
17
- "required": [
18
- "tag"
19
- ],
20
- "additionalProperties": false
23
+ {
24
+ "type": "object",
25
+ "properties": {
26
+ "tag": {
27
+ "const": "ReplaceWith"
28
+ },
29
+ "translations": {
30
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
31
+ "type": "object",
32
+ "patternProperties": {
33
+ "^[a-z]{2}-[A-Z]{2}$": {
34
+ "type": "string"
35
+ }
36
+ },
37
+ "minProperties": 1,
38
+ "additionalProperties": false
39
+ }
40
+ },
41
+ "required": [
42
+ "tag",
43
+ "translations"
44
+ ],
45
+ "additionalProperties": false
46
+ }
47
+ ]
48
+ }
49
+ },
50
+ "Sex": {
51
+ "T": {
52
+ "title": "Sex Prerequisite",
53
+ "description": "Requires a specific sex.",
54
+ "type": "object",
55
+ "properties": {
56
+ "tag": {
57
+ "const": "Sex"
58
+ },
59
+ "id": {
60
+ "$ref": "./_Sex.schema.json#/definitions/BinarySex"
61
+ },
62
+ "display_option": {
63
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
64
+ }
21
65
  },
22
- {
23
- "type": "object",
24
- "properties": {
25
- "tag": {
26
- "const": "ReplaceWith"
66
+ "required": [
67
+ "tag",
68
+ "id"
69
+ ],
70
+ "additionalProperties": false
71
+ }
72
+ },
73
+ "Race": {
74
+ "T": {
75
+ "title": "Race Prerequisite",
76
+ "description": "Requires a specific culture or one of a specific set of cultures.",
77
+ "type": "object",
78
+ "properties": {
79
+ "tag": {
80
+ "const": "Culture"
81
+ },
82
+ "id": {
83
+ "$ref": "#/definitions/Prerequisite/Single/Race/Identifier"
84
+ },
85
+ "active": {
86
+ "type": "boolean"
87
+ },
88
+ "display_option": {
89
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
90
+ }
91
+ },
92
+ "required": [
93
+ "tag",
94
+ "id",
95
+ "active"
96
+ ],
97
+ "additionalProperties": false
98
+ },
99
+ "Identifier": {
100
+ "oneOf": [
101
+ {
102
+ "$ref": "#/definitions/Prerequisite/Single/Race/SingleIdentifier"
103
+ },
104
+ {
105
+ "$ref": "#/definitions/Prerequisite/Single/Race/MultipleIdentifiers"
106
+ }
107
+ ]
108
+ },
109
+ "SingleIdentifier": {
110
+ "type": "number",
111
+ "minimum": 1
112
+ },
113
+ "MultipleIdentifiers": {
114
+ "type": "array",
115
+ "items": {
116
+ "$ref": "#/definitions/Prerequisite/Single/Race/SingleIdentifier"
117
+ },
118
+ "minItems": 2
119
+ }
120
+ },
121
+ "Culture": {
122
+ "T": {
123
+ "title": "Culture Prerequisite",
124
+ "description": "Requires a specific race or one of a specific set of races. You can also\nprovide an object to say whether the hero must meet one of the races or\nif the entry does not allow one of the races.",
125
+ "type": "object",
126
+ "properties": {
127
+ "tag": {
128
+ "const": "Culture"
129
+ },
130
+ "id": {
131
+ "$ref": "#/definitions/Prerequisite/Single/Culture/Identifier"
132
+ },
133
+ "display_option": {
134
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
135
+ }
136
+ },
137
+ "required": [
138
+ "tag",
139
+ "id"
140
+ ],
141
+ "additionalProperties": false
142
+ },
143
+ "Identifier": {
144
+ "oneOf": [
145
+ {
146
+ "$ref": "#/definitions/Prerequisite/Single/Culture/SingleIdentifier"
147
+ },
148
+ {
149
+ "$ref": "#/definitions/Prerequisite/Single/Culture/MultipleIdentifiers"
150
+ }
151
+ ]
152
+ },
153
+ "SingleIdentifier": {
154
+ "type": "number",
155
+ "minimum": 1
156
+ },
157
+ "MultipleIdentifiers": {
158
+ "type": "array",
159
+ "items": {
160
+ "$ref": "#/definitions/Prerequisite/Single/Culture/SingleIdentifier"
161
+ },
162
+ "minItems": 2
163
+ }
164
+ },
165
+ "Rule": {
166
+ "T": {
167
+ "title": "Rule Prerequisite",
168
+ "type": "object",
169
+ "properties": {
170
+ "tag": {
171
+ "const": "Rule"
172
+ },
173
+ "id": {
174
+ "$ref": "#/definitions/Prerequisite/Single/Rule/Identifier"
175
+ },
176
+ "display_option": {
177
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
178
+ }
179
+ },
180
+ "required": [
181
+ "tag",
182
+ "id"
183
+ ],
184
+ "additionalProperties": false
185
+ },
186
+ "Identifier": {
187
+ "oneOf": [
188
+ {
189
+ "type": "object",
190
+ "properties": {
191
+ "tag": {
192
+ "const": "FocusRule"
193
+ },
194
+ "value": {
195
+ "type": "integer",
196
+ "minimum": 1
197
+ }
27
198
  },
28
- "value": {
29
- "description": "All translations for the entry, identified by IETF language tag (BCP47).",
30
- "type": "object",
31
- "patternProperties": {
32
- "^[a-z]{2}-[A-Z]{2}$": {
33
- "type": "string"
34
- }
199
+ "required": [
200
+ "tag",
201
+ "value"
202
+ ],
203
+ "additionalProperties": false
204
+ },
205
+ {
206
+ "type": "object",
207
+ "properties": {
208
+ "tag": {
209
+ "const": "OptionalRule"
35
210
  },
36
- "minProperties": 1,
37
- "additionalProperties": false
38
- }
211
+ "value": {
212
+ "type": "integer",
213
+ "minimum": 1
214
+ }
215
+ },
216
+ "required": [
217
+ "tag",
218
+ "value"
219
+ ],
220
+ "additionalProperties": false
221
+ }
222
+ ]
223
+ }
224
+ },
225
+ "Publication": {
226
+ "T": {
227
+ "title": "Publication Prerequisite",
228
+ "type": "object",
229
+ "properties": {
230
+ "tag": {
231
+ "const": "Publication"
39
232
  },
40
- "required": [
41
- "tag",
42
- "value"
43
- ],
44
- "additionalProperties": false
45
- }
46
- ]
47
- }
48
- },
49
- "Sex": {
50
- "T": {
51
- "title": "Sex Prerequisite",
52
- "description": "Requires a specific sex.",
53
- "type": "object",
54
- "properties": {
55
- "tag": {
56
- "const": "Sex"
233
+ "id": {
234
+ "type": "integer",
235
+ "minimum": 1
236
+ },
237
+ "display_option": {
238
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
239
+ }
57
240
  },
58
- "id": {
59
- "$ref": "./_Sex.schema.json#/definitions/BinarySex"
241
+ "required": [
242
+ "tag",
243
+ "id"
244
+ ],
245
+ "additionalProperties": false
246
+ }
247
+ },
248
+ "PrimaryAttribute": {
249
+ "T": {
250
+ "title": "Primary Attribute Prerequisite",
251
+ "type": "object",
252
+ "properties": {
253
+ "tag": {
254
+ "const": "PrimaryAttribute"
255
+ },
256
+ "category": {
257
+ "description": "Is the required primary attribute for spellcasters or blessed ones?",
258
+ "$ref": "#/definitions/Prerequisite/Single/PrimaryAttribute/Category"
259
+ },
260
+ "value": {
261
+ "description": "Required value of the attribute",
262
+ "type": "integer",
263
+ "minimum": 9
264
+ },
265
+ "display_option": {
266
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
267
+ }
60
268
  },
61
- "display_option": {
62
- "$ref": "#/definitions/Single/DisplayOption/T"
63
- }
269
+ "required": [
270
+ "tag",
271
+ "category",
272
+ "value"
273
+ ],
274
+ "additionalProperties": false
64
275
  },
65
- "required": [
66
- "tag",
67
- "id"
68
- ],
69
- "additionalProperties": false
70
- }
71
- },
72
- "Race": {
73
- "T": {
74
- "title": "Race Prerequisite",
75
- "description": "Requires a specific culture or one of a specific set of cultures.",
76
- "type": "object",
77
- "properties": {
78
- "tag": {
79
- "const": "Culture"
276
+ "Category": {
277
+ "oneOf": [
278
+ {
279
+ "type": "object",
280
+ "properties": {
281
+ "tag": {
282
+ "const": "Blessed"
283
+ }
284
+ },
285
+ "required": [
286
+ "tag"
287
+ ],
288
+ "additionalProperties": false
289
+ },
290
+ {
291
+ "type": "object",
292
+ "properties": {
293
+ "tag": {
294
+ "const": "Magical"
295
+ }
296
+ },
297
+ "required": [
298
+ "tag"
299
+ ],
300
+ "additionalProperties": false
301
+ }
302
+ ]
303
+ }
304
+ },
305
+ "Pact": {
306
+ "T": {
307
+ "title": "Pact Prerequisite",
308
+ "description": "Requires a specific pact.",
309
+ "type": "object",
310
+ "properties": {
311
+ "tag": {
312
+ "const": "Pact"
313
+ },
314
+ "category_id": {
315
+ "description": "The required pact category's identifier.",
316
+ "type": "integer",
317
+ "minimum": 1
318
+ },
319
+ "domain_id": {
320
+ "description": "The required domains' identifiers.",
321
+ "type": "array",
322
+ "items": {
323
+ "$ref": "#/definitions/Prerequisite/Single/Pact/DomainId"
324
+ }
325
+ },
326
+ "level": {
327
+ "description": "The required pact level.",
328
+ "type": "integer",
329
+ "minimum": 1
330
+ },
331
+ "display_option": {
332
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
333
+ }
80
334
  },
81
- "id": {
82
- "$ref": "#/definitions/Single/Race/Identifier"
335
+ "required": [
336
+ "tag",
337
+ "category_id"
338
+ ],
339
+ "additionalProperties": false
340
+ },
341
+ "DomainId": {
342
+ "description": "A domain's identifier.",
343
+ "type": "integer",
344
+ "minimum": 1
345
+ }
346
+ },
347
+ "SocialStatus": {
348
+ "T": {
349
+ "title": "Social Status Prerequisite",
350
+ "description": "Requires a minimum social status.",
351
+ "type": "object",
352
+ "properties": {
353
+ "tag": {
354
+ "const": "SocialStatus"
355
+ },
356
+ "id": {
357
+ "description": "The minimum social status' identifier.",
358
+ "type": "integer",
359
+ "maximum": 5,
360
+ "minimum": 2
361
+ },
362
+ "display_option": {
363
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
364
+ }
365
+ },
366
+ "required": [
367
+ "tag",
368
+ "id"
369
+ ],
370
+ "additionalProperties": false
371
+ }
372
+ },
373
+ "Influence": {
374
+ "T": {
375
+ "title": "Influence Prerequisite",
376
+ "type": "object",
377
+ "properties": {
378
+ "tag": {
379
+ "const": "Influence"
380
+ },
381
+ "id": {
382
+ "description": "The influence's identifier.",
383
+ "type": "integer",
384
+ "minimum": 1
385
+ },
386
+ "active": {
387
+ "description": "If the referenced influence must or must not be chosen.",
388
+ "type": "boolean"
389
+ },
390
+ "display_option": {
391
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
392
+ }
83
393
  },
84
- "active": {
85
- "type": "boolean"
394
+ "required": [
395
+ "tag",
396
+ "id",
397
+ "active"
398
+ ],
399
+ "additionalProperties": false
400
+ }
401
+ },
402
+ "Activatable": {
403
+ "T": {
404
+ "title": "Activatable Prerequisite",
405
+ "description": "Requires a specific advantage, disadvantage, special ability.",
406
+ "type": "object",
407
+ "properties": {
408
+ "tag": {
409
+ "const": "Activatable"
410
+ },
411
+ "id": {
412
+ "description": "The activatable entry's identifier.",
413
+ "$ref": "./_Identifier.schema.json#/definitions/Identifier/Group/Activatable"
414
+ },
415
+ "active": {
416
+ "description": "If the required entry should be required to be active or inactive.",
417
+ "type": "boolean"
418
+ },
419
+ "level": {
420
+ "description": "The required minimum level of the entry.",
421
+ "type": "integer",
422
+ "minimum": 1
423
+ },
424
+ "display_option": {
425
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
426
+ }
86
427
  },
87
- "display_option": {
88
- "$ref": "#/definitions/Single/DisplayOption/T"
89
- }
428
+ "required": [
429
+ "tag",
430
+ "id",
431
+ "active"
432
+ ],
433
+ "additionalProperties": false
434
+ }
435
+ },
436
+ "Rated": {
437
+ "T": {
438
+ "title": "Rated Prerequisite",
439
+ "type": "object",
440
+ "properties": {
441
+ "tag": {
442
+ "const": "Rated"
443
+ },
444
+ "id": {
445
+ "description": "The rated entry's identifier.",
446
+ "$ref": "./_Identifier.schema.json#/definitions/Identifier/Group/Rated"
447
+ },
448
+ "value": {
449
+ "description": "The required minimum value.",
450
+ "type": "integer",
451
+ "minimum": 0
452
+ },
453
+ "display_option": {
454
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
455
+ }
456
+ },
457
+ "required": [
458
+ "tag",
459
+ "id",
460
+ "value"
461
+ ],
462
+ "additionalProperties": false
463
+ }
464
+ },
465
+ "Enhancement": {
466
+ "T": {
467
+ "title": "Enhancement Prerequisite",
468
+ "description": "Requires a specific enhancement from a skill.",
469
+ "type": "object",
470
+ "properties": {
471
+ "tag": {
472
+ "const": "Enhancement"
473
+ },
474
+ "skill": {
475
+ "description": "The required skill's identifier.",
476
+ "type": "object",
477
+ "properties": {
478
+ "tag": {
479
+ "$ref": "#/definitions/Prerequisite/Single/Enhancement/SkillCategoryWithEnhancements"
480
+ },
481
+ "id": {
482
+ "description": "The skill's identifier.",
483
+ "type": "integer",
484
+ "minimum": 1
485
+ }
486
+ },
487
+ "required": [
488
+ "tag",
489
+ "id"
490
+ ],
491
+ "additionalProperties": false
492
+ },
493
+ "enhancement": {
494
+ "description": "The required enhancement's identifier.",
495
+ "type": "object",
496
+ "properties": {
497
+ "id": {
498
+ "description": "The enhancement's identifier.",
499
+ "type": "integer",
500
+ "minimum": 1
501
+ }
502
+ },
503
+ "required": [
504
+ "id"
505
+ ],
506
+ "additionalProperties": false
507
+ },
508
+ "display_option": {
509
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
510
+ }
511
+ },
512
+ "required": [
513
+ "tag",
514
+ "skill",
515
+ "enhancement"
516
+ ],
517
+ "additionalProperties": false
90
518
  },
91
- "required": [
92
- "tag",
93
- "id",
94
- "active"
95
- ],
96
- "additionalProperties": false
519
+ "SkillCategoryWithEnhancements": {
520
+ "enum": [
521
+ "Spell",
522
+ "Ritual",
523
+ "LiturgicalChant",
524
+ "Ceremony"
525
+ ]
526
+ }
97
527
  },
98
- "Identifier": {
99
- "oneOf": [
100
- {
101
- "$ref": "#/definitions/Single/Race/SingleIdentifier"
528
+ "EnhancementInternal": {
529
+ "T": {
530
+ "title": "Internal Enhancement Prerequisite",
531
+ "description": "Requires a specific enhancement from a skill. This can only be used by an\nenhancement to require another enhancement from the same skill.",
532
+ "type": "object",
533
+ "properties": {
534
+ "tag": {
535
+ "const": "EnhancementInternal"
536
+ },
537
+ "id": {
538
+ "description": "The enhancement's identifier.",
539
+ "type": "integer",
540
+ "minimum": 1
541
+ }
102
542
  },
543
+ "required": [
544
+ "tag",
545
+ "id"
546
+ ],
547
+ "additionalProperties": false
548
+ }
549
+ },
550
+ "Ineligible": {
551
+ "T": {
552
+ "title": "Ineligible Prerequisite",
553
+ "description": "This is a placeholder for required things that can never happen with the\ncurrent set of crunch elements and rules, e. g. if a race is required\nthat does not yet exist as a crunch element.\n\nA display option must be set.",
554
+ "type": "object",
555
+ "properties": {
556
+ "tag": {
557
+ "const": "Ineligible"
558
+ },
559
+ "display_option": {
560
+ "$ref": "#/definitions/Prerequisite/Single/DisplayOption/T"
561
+ }
562
+ },
563
+ "required": [
564
+ "tag",
565
+ "display_option"
566
+ ],
567
+ "additionalProperties": false
568
+ }
569
+ }
570
+ },
571
+ "Group": {
572
+ "DerivedCharacteristic": {
573
+ "oneOf": [
103
574
  {
104
- "$ref": "#/definitions/Single/Race/MultipleIdentifiers"
575
+ "$ref": "#/definitions/Prerequisite/Single/Rule/T"
105
576
  }
106
577
  ]
107
578
  },
108
- "SingleIdentifier": {
109
- "type": "number",
110
- "minimum": 1
579
+ "Publication": {
580
+ "oneOf": [
581
+ {
582
+ "$ref": "#/definitions/Prerequisite/Single/Publication/T"
583
+ }
584
+ ]
111
585
  },
112
- "MultipleIdentifiers": {
113
- "type": "array",
114
- "items": {
115
- "$ref": "#/definitions/Single/Race/SingleIdentifier"
116
- },
117
- "minItems": 2
118
- }
119
- },
120
- "Culture": {
121
- "T": {
122
- "title": "Culture Prerequisite",
123
- "description": "Requires a specific race or one of a specific set of races. You can also\nprovide an object to say whether the hero must meet one of the races or\nif the entry does not allow one of the races.",
124
- "type": "object",
125
- "properties": {
126
- "tag": {
127
- "const": "Culture"
128
- },
129
- "id": {
130
- "$ref": "#/definitions/Single/Culture/Identifier"
586
+ "ArcaneTradition": {
587
+ "oneOf": [
588
+ {
589
+ "$ref": "#/definitions/Prerequisite/Single/Sex/T"
131
590
  },
132
- "display_option": {
133
- "$ref": "#/definitions/Single/DisplayOption/T"
591
+ {
592
+ "$ref": "#/definitions/Prerequisite/Single/Culture/T"
134
593
  }
135
- },
136
- "required": [
137
- "tag",
138
- "id"
139
- ],
140
- "additionalProperties": false
594
+ ]
141
595
  },
142
- "Identifier": {
596
+ "Spellwork": {
143
597
  "oneOf": [
144
598
  {
145
- "$ref": "#/definitions/Single/Culture/SingleIdentifier"
599
+ "$ref": "#/definitions/Prerequisite/Single/Rule/T"
146
600
  },
147
601
  {
148
- "$ref": "#/definitions/Single/Culture/MultipleIdentifiers"
602
+ "$ref": "#/definitions/Prerequisite/Single/Rated/T"
149
603
  }
150
604
  ]
151
605
  },
152
- "SingleIdentifier": {
153
- "type": "number",
154
- "minimum": 1
606
+ "Liturgy": {
607
+ "oneOf": [
608
+ {
609
+ "$ref": "#/definitions/Prerequisite/Single/Rule/T"
610
+ }
611
+ ]
155
612
  },
156
- "MultipleIdentifiers": {
157
- "type": "array",
158
- "items": {
159
- "$ref": "#/definitions/Single/Culture/SingleIdentifier"
160
- },
161
- "minItems": 2
162
- }
163
- },
164
- "Rule": {
165
- "T": {
166
- "title": "Rule Prerequisite",
167
- "type": "object",
168
- "properties": {
169
- "tag": {
170
- "const": "Rule"
613
+ "Language": {
614
+ "oneOf": [
615
+ {
616
+ "$ref": "#/definitions/Prerequisite/Single/Ineligible/T"
171
617
  },
172
- "id": {
173
- "$ref": "#/definitions/Single/Rule/Identifier"
618
+ {
619
+ "$ref": "#/definitions/Prerequisite/Single/Race/T"
174
620
  },
175
- "display_option": {
176
- "$ref": "#/definitions/Single/DisplayOption/T"
621
+ {
622
+ "$ref": "#/definitions/Prerequisite/Single/Activatable/T"
177
623
  }
178
- },
179
- "required": [
180
- "tag",
181
- "id"
182
- ],
183
- "additionalProperties": false
624
+ ]
184
625
  },
185
- "Identifier": {
626
+ "GeodeRitual": {
186
627
  "oneOf": [
187
628
  {
188
- "type": "object",
189
- "properties": {
190
- "tag": {
191
- "const": "FocusRule"
192
- },
193
- "value": {
194
- "type": "integer",
195
- "minimum": 1
196
- }
197
- },
198
- "required": [
199
- "tag",
200
- "value"
201
- ],
202
- "additionalProperties": false
203
- },
204
- {
205
- "type": "object",
206
- "properties": {
207
- "tag": {
208
- "const": "OptionalRule"
209
- },
210
- "value": {
211
- "type": "integer",
212
- "minimum": 1
213
- }
214
- },
215
- "required": [
216
- "tag",
217
- "value"
218
- ],
219
- "additionalProperties": false
629
+ "$ref": "#/definitions/Prerequisite/Single/Influence/T"
220
630
  }
221
631
  ]
222
- }
223
- },
224
- "Publication": {
225
- "T": {
226
- "title": "Publication Prerequisite",
227
- "type": "object",
228
- "properties": {
229
- "tag": {
230
- "const": "Publication"
231
- },
232
- "id": {
233
- "type": "integer",
234
- "minimum": 1
235
- },
236
- "display_option": {
237
- "$ref": "#/definitions/Single/DisplayOption/T"
632
+ },
633
+ "Enhancement": {
634
+ "oneOf": [
635
+ {
636
+ "$ref": "#/definitions/Prerequisite/Single/EnhancementInternal/T"
238
637
  }
239
- },
240
- "required": [
241
- "tag",
242
- "id"
243
- ],
244
- "additionalProperties": false
638
+ ]
245
639
  }
246
640
  },
247
- "PrimaryAttribute": {
248
- "T": {
249
- "title": "Primary Attribute Prerequisite",
641
+ "Collection": {},
642
+ "GroupCollection": {
643
+ "DerivedCharacteristic": {
250
644
  "type": "object",
251
645
  "properties": {
252
646
  "tag": {
253
- "const": "PrimaryAttribute"
254
- },
255
- "category": {
256
- "description": "Is the required primary attribute for spellcasters or blessed ones?",
257
- "$ref": "#/definitions/Single/PrimaryAttribute/Category"
647
+ "const": "Plain"
258
648
  },
259
649
  "value": {
260
- "description": "Required value of the attribute",
261
- "type": "integer",
262
- "minimum": 9
263
- },
264
- "display_option": {
265
- "$ref": "#/definitions/Single/DisplayOption/T"
650
+ "type": "array",
651
+ "items": {
652
+ "$ref": "#/definitions/Prerequisite/Group/DerivedCharacteristic"
653
+ },
654
+ "minItems": 1
266
655
  }
267
656
  },
268
657
  "required": [
269
658
  "tag",
270
- "category",
271
659
  "value"
272
660
  ],
273
661
  "additionalProperties": false
274
662
  },
275
- "Category": {
276
- "oneOf": [
277
- {
278
- "type": "object",
279
- "properties": {
280
- "tag": {
281
- "const": "Blessed"
282
- }
283
- },
284
- "required": [
285
- "tag"
286
- ],
287
- "additionalProperties": false
288
- },
289
- {
290
- "type": "object",
291
- "properties": {
292
- "tag": {
293
- "const": "Magical"
294
- }
295
- },
296
- "required": [
297
- "tag"
298
- ],
299
- "additionalProperties": false
300
- }
301
- ]
302
- }
303
- },
304
- "Pact": {
305
- "T": {
306
- "title": "Pact Prerequisite",
307
- "description": "Requires a specific pact.",
663
+ "Publication": {
308
664
  "type": "object",
309
665
  "properties": {
310
666
  "tag": {
311
- "const": "Pact"
667
+ "const": "Plain"
312
668
  },
313
- "category_id": {
314
- "description": "The required pact category's identifier.",
315
- "type": "integer",
316
- "minimum": 1
317
- },
318
- "domain_id": {
319
- "description": "The required domains' identifiers.",
669
+ "value": {
320
670
  "type": "array",
321
671
  "items": {
322
- "$ref": "#/definitions/Single/Pact/DomainId"
323
- }
324
- },
325
- "level": {
326
- "description": "The required pact level.",
327
- "type": "integer",
328
- "minimum": 1
329
- },
330
- "display_option": {
331
- "$ref": "#/definitions/Single/DisplayOption/T"
672
+ "$ref": "#/definitions/Prerequisite/Group/Publication"
673
+ },
674
+ "minItems": 1
332
675
  }
333
676
  },
334
677
  "required": [
335
678
  "tag",
336
- "category_id"
679
+ "value"
337
680
  ],
338
681
  "additionalProperties": false
339
682
  },
340
- "DomainId": {
341
- "description": "A domain's identifier.",
342
- "type": "integer",
343
- "minimum": 1
344
- }
345
- },
346
- "SocialStatus": {
347
- "T": {
348
- "title": "Social Status Prerequisite",
349
- "description": "Requires a minimum social status.",
683
+ "ArcaneTradition": {
350
684
  "type": "object",
351
685
  "properties": {
352
686
  "tag": {
353
- "const": "SocialStatus"
687
+ "const": "Plain"
354
688
  },
355
- "id": {
356
- "description": "The minimum social status' identifier.",
357
- "type": "integer",
358
- "maximum": 5,
359
- "minimum": 2
360
- },
361
- "display_option": {
362
- "$ref": "#/definitions/Single/DisplayOption/T"
689
+ "value": {
690
+ "type": "array",
691
+ "items": {
692
+ "$ref": "#/definitions/Prerequisite/Group/ArcaneTradition"
693
+ },
694
+ "minItems": 1
363
695
  }
364
696
  },
365
697
  "required": [
366
698
  "tag",
367
- "id"
699
+ "value"
368
700
  ],
369
701
  "additionalProperties": false
370
- }
371
- },
372
- "Influence": {
373
- "T": {
374
- "title": "Influence Prerequisite",
702
+ },
703
+ "Spellwork": {
375
704
  "type": "object",
376
705
  "properties": {
377
706
  "tag": {
378
- "const": "Influence"
379
- },
380
- "id": {
381
- "description": "The influence's identifier.",
382
- "type": "integer",
383
- "minimum": 1
707
+ "const": "Plain"
384
708
  },
385
- "active": {
386
- "description": "If the referenced influence must or must not be chosen.",
387
- "type": "boolean"
388
- },
389
- "display_option": {
390
- "$ref": "#/definitions/Single/DisplayOption/T"
709
+ "value": {
710
+ "type": "array",
711
+ "items": {
712
+ "$ref": "#/definitions/Prerequisite/Group/Spellwork"
713
+ },
714
+ "minItems": 1
391
715
  }
392
716
  },
393
717
  "required": [
394
718
  "tag",
395
- "id",
396
- "active"
719
+ "value"
397
720
  ],
398
721
  "additionalProperties": false
399
- }
400
- },
401
- "Rated": {
402
- "T": {
403
- "title": "Rated Prerequisite",
722
+ },
723
+ "Liturgy": {
404
724
  "type": "object",
405
725
  "properties": {
406
726
  "tag": {
407
- "const": "Rated"
408
- },
409
- "id": {
410
- "description": "The rated entry's identifier.",
411
- "$ref": "./_Identifier.schema.json#/definitions/Identifier/Group/Rated"
727
+ "const": "Plain"
412
728
  },
413
729
  "value": {
414
- "description": "The required minimum value.",
415
- "type": "integer",
416
- "minimum": 0
417
- },
418
- "display_option": {
419
- "$ref": "#/definitions/Single/DisplayOption/T"
730
+ "type": "array",
731
+ "items": {
732
+ "$ref": "#/definitions/Prerequisite/Group/Liturgy"
733
+ },
734
+ "minItems": 1
420
735
  }
421
736
  },
422
737
  "required": [
423
738
  "tag",
424
- "id",
425
739
  "value"
426
740
  ],
427
741
  "additionalProperties": false
428
- }
429
- },
430
- "Enhancement": {
431
- "T": {
432
- "title": "Enhancement Prerequisite",
433
- "description": "Requires a specific enhancement from a skill.",
434
- "type": "object",
435
- "properties": {
436
- "tag": {
437
- "const": "Enhancement"
438
- },
439
- "skill": {
440
- "description": "The required skill's identifier.",
742
+ },
743
+ "Language": {
744
+ "oneOf": [
745
+ {
441
746
  "type": "object",
442
747
  "properties": {
443
748
  "tag": {
444
- "$ref": "#/definitions/Single/Enhancement/SkillCategoryWithEnhancements"
749
+ "const": "Plain"
445
750
  },
446
- "id": {
447
- "description": "The skill's identifier.",
448
- "type": "integer",
449
- "minimum": 1
751
+ "value": {
752
+ "type": "array",
753
+ "items": {
754
+ "$ref": "#/definitions/Prerequisite/Group/Language"
755
+ },
756
+ "minItems": 1
450
757
  }
451
758
  },
452
759
  "required": [
453
760
  "tag",
454
- "id"
761
+ "value"
455
762
  ],
456
763
  "additionalProperties": false
457
764
  },
458
- "enhancement": {
459
- "description": "The required enhancement's identifier.",
765
+ {
460
766
  "type": "object",
461
767
  "properties": {
462
- "id": {
463
- "description": "The enhancement's identifier.",
464
- "type": "integer",
465
- "minimum": 1
768
+ "tag": {
769
+ "const": "ByLevel"
770
+ },
771
+ "value": {
772
+ "type": "array",
773
+ "items": {
774
+ "type": "object",
775
+ "properties": {
776
+ "level": {
777
+ "type": "integer",
778
+ "minimum": 1
779
+ },
780
+ "prerequisites": {
781
+ "type": "array",
782
+ "items": {
783
+ "$ref": "#/definitions/Prerequisite/Group/Language"
784
+ }
785
+ }
786
+ },
787
+ "required": [
788
+ "level",
789
+ "prerequisites"
790
+ ],
791
+ "additionalProperties": false
792
+ },
793
+ "minItems": 1
466
794
  }
467
795
  },
468
796
  "required": [
469
- "id"
797
+ "tag",
798
+ "value"
470
799
  ],
471
800
  "additionalProperties": false
801
+ }
802
+ ]
803
+ },
804
+ "GeodeRitual": {
805
+ "type": "object",
806
+ "properties": {
807
+ "tag": {
808
+ "const": "Plain"
472
809
  },
473
- "display_option": {
474
- "$ref": "#/definitions/Single/DisplayOption/T"
810
+ "value": {
811
+ "type": "array",
812
+ "items": {
813
+ "$ref": "#/definitions/Prerequisite/Group/GeodeRitual"
814
+ },
815
+ "minItems": 1
475
816
  }
476
817
  },
477
818
  "required": [
478
819
  "tag",
479
- "skill",
480
- "enhancement"
820
+ "value"
481
821
  ],
482
822
  "additionalProperties": false
483
823
  },
484
- "SkillCategoryWithEnhancements": {
485
- "enum": [
486
- "Spell",
487
- "Ritual",
488
- "LiturgicalChant",
489
- "Ceremony"
490
- ]
491
- }
492
- },
493
- "EnhancementInternal": {
494
- "T": {
495
- "title": "Internal Enhancement Prerequisite",
496
- "description": "Requires a specific enhancement from a skill. This can only be used by an\nenhancement to require another enhancement from the same skill.",
824
+ "Enhancement": {
497
825
  "type": "object",
498
826
  "properties": {
499
827
  "tag": {
500
- "const": "EnhancementInternal"
828
+ "const": "Plain"
501
829
  },
502
- "id": {
503
- "description": "The enhancement's identifier.",
504
- "type": "integer",
505
- "minimum": 1
830
+ "value": {
831
+ "type": "array",
832
+ "items": {
833
+ "$ref": "#/definitions/Prerequisite/Group/Enhancement"
834
+ },
835
+ "minItems": 1
506
836
  }
507
837
  },
508
838
  "required": [
509
839
  "tag",
510
- "id"
840
+ "value"
511
841
  ],
512
842
  "additionalProperties": false
513
843
  }
514
844
  }
515
- },
516
- "Group": {
517
- "DerivedCharacteristic": {
518
- "oneOf": [
519
- {
520
- "$ref": "#/definitions/Single/Rule/T"
521
- }
522
- ]
523
- },
524
- "Publication": {
525
- "oneOf": [
526
- {
527
- "$ref": "#/definitions/Single/Publication/T"
528
- }
529
- ]
530
- },
531
- "ArcaneTradition": {
532
- "oneOf": [
533
- {
534
- "$ref": "#/definitions/Single/Sex/T"
535
- },
536
- {
537
- "$ref": "#/definitions/Single/Culture/T"
538
- }
539
- ]
540
- },
541
- "Spellwork": {
542
- "oneOf": [
543
- {
544
- "$ref": "#/definitions/Single/Rule/T"
545
- },
546
- {
547
- "$ref": "#/definitions/Single/Rated/T"
548
- }
549
- ]
550
- },
551
- "Liturgy": {
552
- "oneOf": [
553
- {
554
- "$ref": "#/definitions/Single/Rule/T"
555
- }
556
- ]
557
- },
558
- "GeodeRitual": {
559
- "oneOf": [
560
- {
561
- "$ref": "#/definitions/Single/Influence/T"
562
- }
563
- ]
564
- },
565
- "Enhancement": {
566
- "oneOf": [
567
- {
568
- "$ref": "#/definitions/Single/EnhancementInternal/T"
569
- }
570
- ]
571
- }
572
- },
573
- "Collection": {},
574
- "GroupCollection": {
575
- "DerivedCharacteristic": {
576
- "type": "object",
577
- "properties": {
578
- "tag": {
579
- "const": "Plain"
580
- },
581
- "value": {
582
- "type": "array",
583
- "items": {
584
- "$ref": "#/definitions/Group/DerivedCharacteristic"
585
- },
586
- "minItems": 1
587
- }
588
- },
589
- "required": [
590
- "tag",
591
- "value"
592
- ],
593
- "additionalProperties": false
594
- },
595
- "Publication": {
596
- "type": "object",
597
- "properties": {
598
- "tag": {
599
- "const": "Plain"
600
- },
601
- "value": {
602
- "type": "array",
603
- "items": {
604
- "$ref": "#/definitions/Group/Publication"
605
- },
606
- "minItems": 1
607
- }
608
- },
609
- "required": [
610
- "tag",
611
- "value"
612
- ],
613
- "additionalProperties": false
614
- },
615
- "ArcaneTradition": {
616
- "type": "object",
617
- "properties": {
618
- "tag": {
619
- "const": "Plain"
620
- },
621
- "value": {
622
- "type": "array",
623
- "items": {
624
- "$ref": "#/definitions/Group/ArcaneTradition"
625
- },
626
- "minItems": 1
627
- }
628
- },
629
- "required": [
630
- "tag",
631
- "value"
632
- ],
633
- "additionalProperties": false
634
- },
635
- "Spellwork": {
636
- "type": "object",
637
- "properties": {
638
- "tag": {
639
- "const": "Plain"
640
- },
641
- "value": {
642
- "type": "array",
643
- "items": {
644
- "$ref": "#/definitions/Group/Spellwork"
645
- },
646
- "minItems": 1
647
- }
648
- },
649
- "required": [
650
- "tag",
651
- "value"
652
- ],
653
- "additionalProperties": false
654
- },
655
- "Liturgy": {
656
- "type": "object",
657
- "properties": {
658
- "tag": {
659
- "const": "Plain"
660
- },
661
- "value": {
662
- "type": "array",
663
- "items": {
664
- "$ref": "#/definitions/Group/Liturgy"
665
- },
666
- "minItems": 1
667
- }
668
- },
669
- "required": [
670
- "tag",
671
- "value"
672
- ],
673
- "additionalProperties": false
674
- },
675
- "GeodeRitual": {
676
- "type": "object",
677
- "properties": {
678
- "tag": {
679
- "const": "Plain"
680
- },
681
- "value": {
682
- "type": "array",
683
- "items": {
684
- "$ref": "#/definitions/Group/GeodeRitual"
685
- },
686
- "minItems": 1
687
- }
688
- },
689
- "required": [
690
- "tag",
691
- "value"
692
- ],
693
- "additionalProperties": false
694
- },
695
- "Enhancement": {
696
- "type": "object",
697
- "properties": {
698
- "tag": {
699
- "const": "Plain"
700
- },
701
- "value": {
702
- "type": "array",
703
- "items": {
704
- "$ref": "#/definitions/Group/Enhancement"
705
- },
706
- "minItems": 1
707
- }
708
- },
709
- "required": [
710
- "tag",
711
- "value"
712
- ],
713
- "additionalProperties": false
714
- }
715
845
  }
716
846
  }
717
847
  }