optolith-database-schema 0.8.1 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/lib/config.d.ts +2 -0
  3. package/lib/config.js +2 -0
  4. package/lib/main.js +8 -3
  5. package/lib/types/Advantage.d.ts +13 -2
  6. package/lib/types/Disadvantage.d.ts +12 -2
  7. package/lib/types/Profession.d.ts +12 -2
  8. package/lib/types/Talisman.d.ts +6 -6
  9. package/lib/types/_Activatable.d.ts +113 -4
  10. package/lib/types/_Activatable.js +4 -35
  11. package/lib/types/_ActivatableSelectOptionCategory.d.ts +30 -0
  12. package/lib/types/_Identifier.d.ts +9 -0
  13. package/lib/types/_IdentifierGroup.d.ts +2 -2
  14. package/lib/types/equipment/item/Poison.d.ts +21 -1
  15. package/lib/types/equipment/item/Poison.js +1 -0
  16. package/lib/types/equipment/item/Weapon.d.ts +4 -3
  17. package/lib/types/equipment/item/sub/ArmorType.d.ts +3 -3
  18. package/lib/types/magicalActions/MagicalRune.d.ts +82 -16
  19. package/lib/types/prerequisites/DisplayOption.d.ts +14 -0
  20. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +23 -1
  21. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.d.ts +5 -0
  22. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.js +1 -0
  23. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.d.ts +67 -0
  24. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +6 -0
  25. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +0 -55
  26. package/lib/types/prerequisites/single/RatedSumPrerequisite.d.ts +19 -0
  27. package/lib/types/prerequisites/single/RatedSumPrerequisite.js +1 -0
  28. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.d.ts +11 -0
  29. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.js +5 -0
  30. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +29 -0
  31. package/lib/types/prerequisites/single/TextPrerequisite.js +5 -0
  32. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -0
  33. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +7 -2
  34. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +6 -2
  35. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +5 -0
  36. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +12 -2
  37. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +7 -2
  38. package/lib/types/specialAbility/MagicalSign.d.ts +38 -0
  39. package/lib/types/specialAbility/MagicalSign.js +5 -0
  40. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +11 -2
  41. package/lib/types/specialAbility/MagicalTradition.d.ts +2 -2
  42. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +6 -0
  43. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +5 -0
  44. package/lib/types/specialAbility/VampiricGift.d.ts +7 -2
  45. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +2 -2
  46. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +2 -2
  47. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +2 -2
  48. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +2 -2
  49. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +2 -2
  50. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +3 -3
  51. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +2 -2
  52. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +2 -2
  53. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +2 -2
  54. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +2 -2
  55. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +2 -2
  56. package/lib/types/traditionArtifacts/SickleRitual.d.ts +2 -2
  57. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +7 -2
  58. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +13 -3
  59. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +3 -3
  60. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +2 -2
  61. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +2 -7
  62. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +4 -3
  63. package/lib/validation/schema.js +2 -2
  64. package/package.json +1 -1
  65. package/schema/Advantage.schema.json +11 -0
  66. package/schema/Disadvantage.schema.json +8 -0
  67. package/schema/Profession.schema.json +8 -0
  68. package/schema/Talisman.schema.json +2 -4
  69. package/schema/_Activatable.schema.json +166 -0
  70. package/schema/_ActivatableSelectOptionCategory.schema.json +141 -0
  71. package/schema/_Identifier.schema.json +18 -0
  72. package/schema/_IdentifierGroup.schema.json +6 -0
  73. package/schema/equipment/item/Poison.schema.json +55 -1
  74. package/schema/equipment/item/Weapon.schema.json +5 -1
  75. package/schema/equipment/item/sub/ArmorType.schema.json +1 -2
  76. package/schema/magicalActions/MagicalRune.schema.json +213 -21
  77. package/schema/prerequisites/DisplayOption.schema.json +4 -0
  78. package/schema/prerequisites/PrerequisiteGroups.schema.json +98 -2
  79. package/schema/prerequisites/single/AncestorBloodPrerequisite.schema.json +14 -0
  80. package/schema/prerequisites/single/RatedMinimumNumberPrerequisite.schema.json +166 -0
  81. package/schema/prerequisites/single/RatedPrerequisite.schema.json +0 -125
  82. package/schema/prerequisites/single/RatedSumPrerequisite.schema.json +33 -0
  83. package/schema/prerequisites/single/SexualCharacteristicPrerequisite.schema.json +26 -0
  84. package/schema/prerequisites/single/TextPrerequisite.schema.json +14 -0
  85. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +8 -0
  86. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +4 -0
  87. package/schema/specialAbility/CombatSpecialAbility.schema.json +4 -0
  88. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +42 -27
  89. package/schema/specialAbility/FatePointSpecialAbility.schema.json +4 -0
  90. package/schema/specialAbility/GeneralSpecialAbility.schema.json +8 -0
  91. package/schema/specialAbility/KarmaSpecialAbility.schema.json +4 -0
  92. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +42 -27
  93. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +42 -27
  94. package/schema/specialAbility/MagicalSign.schema.json +72 -0
  95. package/schema/specialAbility/MagicalSpecialAbility.schema.json +8 -0
  96. package/schema/specialAbility/MagicalTradition.schema.json +0 -2
  97. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +6 -0
  98. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +4 -0
  99. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +42 -27
  100. package/schema/specialAbility/VampiricGift.schema.json +4 -0
  101. package/schema/traditionArtifacts/DaggerRitual.schema.json +0 -1
  102. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +4 -0
  103. package/schema/traditionArtifacts/StaffEnchantment.schema.json +8 -1
  104. package/schema/traditionArtifacts/ToyEnchantment.schema.json +0 -1
  105. package/schema/traditionArtifacts/WandEnchantment.schema.json +1 -9
  106. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +8 -1
@@ -24,131 +24,6 @@
24
24
  "value"
25
25
  ],
26
26
  "additionalProperties": false
27
- },
28
- "RatedMinimumNumberPrerequisite": {
29
- "title": "Rated Minimum Number Prerequisite",
30
- "type": "object",
31
- "properties": {
32
- "number": {
33
- "description": "The minimum number of skills that need to be on the defined minimum skill\nrating.",
34
- "type": "integer",
35
- "minimum": 1
36
- },
37
- "value": {
38
- "description": "The minimum skill rating the defined minimum number of skills need to be\non.",
39
- "type": "integer",
40
- "minimum": 1
41
- },
42
- "targets": {
43
- "description": "The targets that contribute to satisfying the prerequisite.",
44
- "$ref": "#/$defs/RatedMinimumNumberPrerequisiteTarget"
45
- },
46
- "display_option": {
47
- "$ref": "../DisplayOption.schema.json#/$defs/DisplayOption"
48
- }
49
- },
50
- "required": [
51
- "number",
52
- "value",
53
- "targets"
54
- ],
55
- "additionalProperties": false
56
- },
57
- "RatedMinimumNumberPrerequisiteTarget": {
58
- "oneOf": [
59
- {
60
- "type": "object",
61
- "properties": {
62
- "tag": {
63
- "const": "Skills"
64
- },
65
- "skills": {
66
- "$ref": "#/$defs/RatedMinimumNumberPrerequisiteSkillsTarget"
67
- }
68
- },
69
- "required": [
70
- "tag",
71
- "skills"
72
- ],
73
- "additionalProperties": false
74
- },
75
- {
76
- "type": "object",
77
- "properties": {
78
- "tag": {
79
- "const": "Spellworks"
80
- },
81
- "spellworks": {
82
- "$ref": "../../_SimpleReferences.schema.json#/$defs/PropertyReference"
83
- }
84
- },
85
- "required": [
86
- "tag",
87
- "spellworks"
88
- ],
89
- "additionalProperties": false
90
- },
91
- {
92
- "type": "object",
93
- "properties": {
94
- "tag": {
95
- "const": "Liturgies"
96
- },
97
- "liturgies": {
98
- "$ref": "../../_SimpleReferences.schema.json#/$defs/AspectReference"
99
- }
100
- },
101
- "required": [
102
- "tag",
103
- "liturgies"
104
- ],
105
- "additionalProperties": false
106
- }
107
- ]
108
- },
109
- "RatedMinimumNumberPrerequisiteSkillsTarget": {
110
- "type": "object",
111
- "properties": {
112
- "list": {
113
- "description": "The skills that are taken into account for satisfying the prerequisite.",
114
- "type": "array",
115
- "items": {
116
- "$ref": "../../_SimpleReferences.schema.json#/$defs/SkillReference"
117
- },
118
- "minItems": 2,
119
- "uniqueItems": true
120
- }
121
- },
122
- "required": [
123
- "list"
124
- ],
125
- "additionalProperties": false
126
- },
127
- "RatedMinimumNumberPrerequisiteSpellworksTarget": {
128
- "type": "object",
129
- "properties": {
130
- "property": {
131
- "description": "The skills that are taken into account for satisfying the prerequisite.",
132
- "$ref": "../../_SimpleReferences.schema.json#/$defs/PropertyReference"
133
- }
134
- },
135
- "required": [
136
- "property"
137
- ],
138
- "additionalProperties": false
139
- },
140
- "RatedMinimumNumberPrerequisiteLiturgiesTarget": {
141
- "type": "object",
142
- "properties": {
143
- "aspect": {
144
- "description": "The skills that are taken into account for satisfying the prerequisite.",
145
- "$ref": "../../_SimpleReferences.schema.json#/$defs/AspectReference"
146
- }
147
- },
148
- "required": [
149
- "aspect"
150
- ],
151
- "additionalProperties": false
152
27
  }
153
28
  }
154
29
  }
@@ -0,0 +1,33 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "/prerequisites/single/RatedSumPrerequisite.schema.json",
4
+ "$defs": {
5
+ "RatedSumPrerequisite": {
6
+ "title": "Rated Sum Prerequisite",
7
+ "type": "object",
8
+ "properties": {
9
+ "sum": {
10
+ "description": "The minimum required sum of the targets’ ratings.",
11
+ "type": "integer",
12
+ "minimum": 1
13
+ },
14
+ "targets": {
15
+ "description": "The targets that are included in calculating the sum.",
16
+ "type": "array",
17
+ "items": {
18
+ "$ref": "../../_IdentifierGroup.schema.json#/$defs/SkillIdentifier"
19
+ },
20
+ "minItems": 2
21
+ },
22
+ "display_option": {
23
+ "$ref": "../DisplayOption.schema.json#/$defs/DisplayOption"
24
+ }
25
+ },
26
+ "required": [
27
+ "sum",
28
+ "targets"
29
+ ],
30
+ "additionalProperties": false
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "/prerequisites/single/SexualCharacteristicPrerequisite.schema.json",
4
+ "$defs": {
5
+ "SexualCharacteristicPrerequisite": {
6
+ "title": "Sexual Characteristic Prerequisite",
7
+ "description": "Requires a specific sexual characteristic.",
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "$ref": "#/$defs/SexualCharacteristic"
12
+ }
13
+ },
14
+ "required": [
15
+ "id"
16
+ ],
17
+ "additionalProperties": false
18
+ },
19
+ "SexualCharacteristic": {
20
+ "enum": [
21
+ "Penis",
22
+ "Vagina"
23
+ ]
24
+ }
25
+ }
26
+ }
@@ -11,6 +11,14 @@
11
11
  "description": "The method how the prerequisite should be verified. Either is passes all\nverification text or it denies all verification tests. The latter results\nin the associated entry to never be available for purchase.",
12
12
  "$ref": "#/$defs/TextVerificationRule"
13
13
  },
14
+ "sentence_type": {
15
+ "description": "If the text is a sentence or sentence-like fragment, this property ensures\nit is integrated into the prerequisite string correctly.\n\nA standalone sentence is connected to the previous prerequisite string with\na period and a period is also added at the end of the sentence\nautomatically, if it is not present. A connected sentence is connected to\nthe previous prerequisite string with a semicolon and a period is not added\nto the end of the sentence. In this case, if there are prerequisites after\nthis one, they will be connected using a semicolon again, unless a\ndifferent punctuation mark is present at the end of the given text.",
16
+ "$ref": "#/$defs/SentenceType"
17
+ },
18
+ "is_meta": {
19
+ "description": "If the text does not represent an actual prerequisite but a prerequisite\nfor the use of certain aspects or the entry the prerequisite is associated\nwith, or something like that, this property is set to `true`.\n\nIf all prerequisites of an entry are marked as meta, the entry is\nconsidered to have no prerequisites and thus the string `none` must be\nrendered before the list of meta prerequisites.\n\nThis is the only use case for this property.",
20
+ "const": true
21
+ },
14
22
  "translations": {
15
23
  "description": "All translations for the entry, identified by IETF language tag (BCP47).",
16
24
  "type": "object",
@@ -35,6 +43,12 @@
35
43
  "Deny"
36
44
  ]
37
45
  },
46
+ "SentenceType": {
47
+ "enum": [
48
+ "Standalone",
49
+ "Connected"
50
+ ]
51
+ },
38
52
  "TextPrerequisiteTranslation": {
39
53
  "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyMarkdown"
40
54
  }
@@ -80,6 +80,14 @@
80
80
  "penalty": {
81
81
  "type": "string"
82
82
  },
83
+ "ap_value": {
84
+ "description": "The AP value. It is only used if the text cannot be generated from the\ngiven information.",
85
+ "$ref": "../_Activatable.schema.json#/$defs/AdventurePointsValueReplacement"
86
+ },
87
+ "ap_value_append": {
88
+ "description": "A string that gets appended to the default AP Value text with a preceding\nspace. This always happens if present, even if the generated AP Value text\nis replaced.",
89
+ "$ref": "../_Activatable.schema.json#/$defs/AdventurePointsValueAppend"
90
+ },
83
91
  "errata": {
84
92
  "$ref": "../source/_Erratum.schema.json#/$defs/Errata"
85
93
  }
@@ -69,6 +69,10 @@
69
69
  "effect": {
70
70
  "$ref": "../_Activatable.schema.json#/$defs/Effect"
71
71
  },
72
+ "prerequisites": {
73
+ "description": "The prerequisites text. It is only used if the text cannot be generated\nfrom the given information.",
74
+ "$ref": "../_Activatable.schema.json#/$defs/PrerequisitesReplacement"
75
+ },
72
76
  "errata": {
73
77
  "$ref": "../source/_Erratum.schema.json#/$defs/Errata"
74
78
  }
@@ -74,6 +74,10 @@
74
74
  "name_in_library": {
75
75
  "$ref": "../_Activatable.schema.json#/$defs/NameInLibrary"
76
76
  },
77
+ "input": {
78
+ "description": "A string that is used as a label for an input field.",
79
+ "$ref": "../_Activatable.schema.json#/$defs/Input"
80
+ },
77
81
  "rules": {
78
82
  "$ref": "../_Activatable.schema.json#/$defs/Rules"
79
83
  },
@@ -108,16 +108,21 @@
108
108
  "type": "object",
109
109
  "properties": {
110
110
  "options": {
111
- "type": "object",
112
- "properties": {
113
- "id": {
114
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
115
- }
111
+ "description": "The possible advanced special abilities.",
112
+ "type": "array",
113
+ "items": {
114
+ "type": "object",
115
+ "properties": {
116
+ "id": {
117
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
118
+ }
119
+ },
120
+ "required": [
121
+ "id"
122
+ ],
123
+ "additionalProperties": false
116
124
  },
117
- "required": [
118
- "id"
119
- ],
120
- "additionalProperties": false
125
+ "minItems": 2
121
126
  },
122
127
  "is_selection_required_on_purchase": {
123
128
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -276,16 +281,21 @@
276
281
  "type": "object",
277
282
  "properties": {
278
283
  "options": {
279
- "type": "object",
280
- "properties": {
281
- "id": {
282
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
283
- }
284
+ "description": "The possible advanced special abilities.",
285
+ "type": "array",
286
+ "items": {
287
+ "type": "object",
288
+ "properties": {
289
+ "id": {
290
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
291
+ }
292
+ },
293
+ "required": [
294
+ "id"
295
+ ],
296
+ "additionalProperties": false
284
297
  },
285
- "required": [
286
- "id"
287
- ],
288
- "additionalProperties": false
298
+ "minItems": 2
289
299
  },
290
300
  "is_selection_required_on_purchase": {
291
301
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -444,16 +454,21 @@
444
454
  "type": "object",
445
455
  "properties": {
446
456
  "options": {
447
- "type": "object",
448
- "properties": {
449
- "id": {
450
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
451
- }
457
+ "description": "The possible advanced special abilities.",
458
+ "type": "array",
459
+ "items": {
460
+ "type": "object",
461
+ "properties": {
462
+ "id": {
463
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedCombatSpecialAbilityIdentifier"
464
+ }
465
+ },
466
+ "required": [
467
+ "id"
468
+ ],
469
+ "additionalProperties": false
452
470
  },
453
- "required": [
454
- "id"
455
- ],
456
- "additionalProperties": false
471
+ "minItems": 2
457
472
  },
458
473
  "is_selection_required_on_purchase": {
459
474
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -66,6 +66,10 @@
66
66
  "rules": {
67
67
  "$ref": "../_Activatable.schema.json#/$defs/Rules"
68
68
  },
69
+ "ap_value": {
70
+ "description": "The AP value. It is only used if the text cannot be generated from the\ngiven information.",
71
+ "$ref": "../_Activatable.schema.json#/$defs/AdventurePointsValueReplacement"
72
+ },
69
73
  "errata": {
70
74
  "$ref": "../source/_Erratum.schema.json#/$defs/Errata"
71
75
  }
@@ -63,9 +63,17 @@
63
63
  "name_in_library": {
64
64
  "$ref": "../_Activatable.schema.json#/$defs/NameInLibrary"
65
65
  },
66
+ "input": {
67
+ "description": "A string that is used as a label for an input field.",
68
+ "$ref": "../_Activatable.schema.json#/$defs/Input"
69
+ },
66
70
  "rules": {
67
71
  "$ref": "../_Activatable.schema.json#/$defs/Rules"
68
72
  },
73
+ "ap_value_append": {
74
+ "description": "A string that gets appended to the default AP Value text with a preceding\nspace. This always happens if present, even if the generated AP Value text\nis replaced.",
75
+ "$ref": "../_Activatable.schema.json#/$defs/AdventurePointsValueAppend"
76
+ },
69
77
  "errata": {
70
78
  "$ref": "../source/_Erratum.schema.json#/$defs/Errata"
71
79
  }
@@ -60,6 +60,10 @@
60
60
  "rules": {
61
61
  "$ref": "../_Activatable.schema.json#/$defs/Rules"
62
62
  },
63
+ "ap_value": {
64
+ "description": "The AP value. It is only used if the text cannot be generated from the\ngiven information.",
65
+ "$ref": "../_Activatable.schema.json#/$defs/AdventurePointsValueReplacement"
66
+ },
63
67
  "errata": {
64
68
  "$ref": "../source/_Erratum.schema.json#/$defs/Errata"
65
69
  }
@@ -101,16 +101,21 @@
101
101
  "type": "object",
102
102
  "properties": {
103
103
  "options": {
104
- "type": "object",
105
- "properties": {
106
- "id": {
107
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
108
- }
104
+ "description": "The possible advanced special abilities.",
105
+ "type": "array",
106
+ "items": {
107
+ "type": "object",
108
+ "properties": {
109
+ "id": {
110
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
111
+ }
112
+ },
113
+ "required": [
114
+ "id"
115
+ ],
116
+ "additionalProperties": false
109
117
  },
110
- "required": [
111
- "id"
112
- ],
113
- "additionalProperties": false
118
+ "minItems": 2
114
119
  },
115
120
  "is_selection_required_on_purchase": {
116
121
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -269,16 +274,21 @@
269
274
  "type": "object",
270
275
  "properties": {
271
276
  "options": {
272
- "type": "object",
273
- "properties": {
274
- "id": {
275
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
276
- }
277
+ "description": "The possible advanced special abilities.",
278
+ "type": "array",
279
+ "items": {
280
+ "type": "object",
281
+ "properties": {
282
+ "id": {
283
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
284
+ }
285
+ },
286
+ "required": [
287
+ "id"
288
+ ],
289
+ "additionalProperties": false
277
290
  },
278
- "required": [
279
- "id"
280
- ],
281
- "additionalProperties": false
291
+ "minItems": 2
282
292
  },
283
293
  "is_selection_required_on_purchase": {
284
294
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -437,16 +447,21 @@
437
447
  "type": "object",
438
448
  "properties": {
439
449
  "options": {
440
- "type": "object",
441
- "properties": {
442
- "id": {
443
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
444
- }
450
+ "description": "The possible advanced special abilities.",
451
+ "type": "array",
452
+ "items": {
453
+ "type": "object",
454
+ "properties": {
455
+ "id": {
456
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedKarmaSpecialAbilityIdentifier"
457
+ }
458
+ },
459
+ "required": [
460
+ "id"
461
+ ],
462
+ "additionalProperties": false
445
463
  },
446
- "required": [
447
- "id"
448
- ],
449
- "additionalProperties": false
464
+ "minItems": 2
450
465
  },
451
466
  "is_selection_required_on_purchase": {
452
467
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -101,16 +101,21 @@
101
101
  "type": "object",
102
102
  "properties": {
103
103
  "options": {
104
- "type": "object",
105
- "properties": {
106
- "id": {
107
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
108
- }
104
+ "description": "The possible advanced special abilities.",
105
+ "type": "array",
106
+ "items": {
107
+ "type": "object",
108
+ "properties": {
109
+ "id": {
110
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
111
+ }
112
+ },
113
+ "required": [
114
+ "id"
115
+ ],
116
+ "additionalProperties": false
109
117
  },
110
- "required": [
111
- "id"
112
- ],
113
- "additionalProperties": false
118
+ "minItems": 2
114
119
  },
115
120
  "is_selection_required_on_purchase": {
116
121
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -269,16 +274,21 @@
269
274
  "type": "object",
270
275
  "properties": {
271
276
  "options": {
272
- "type": "object",
273
- "properties": {
274
- "id": {
275
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
276
- }
277
+ "description": "The possible advanced special abilities.",
278
+ "type": "array",
279
+ "items": {
280
+ "type": "object",
281
+ "properties": {
282
+ "id": {
283
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
284
+ }
285
+ },
286
+ "required": [
287
+ "id"
288
+ ],
289
+ "additionalProperties": false
277
290
  },
278
- "required": [
279
- "id"
280
- ],
281
- "additionalProperties": false
291
+ "minItems": 2
282
292
  },
283
293
  "is_selection_required_on_purchase": {
284
294
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",
@@ -437,16 +447,21 @@
437
447
  "type": "object",
438
448
  "properties": {
439
449
  "options": {
440
- "type": "object",
441
- "properties": {
442
- "id": {
443
- "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
444
- }
450
+ "description": "The possible advanced special abilities.",
451
+ "type": "array",
452
+ "items": {
453
+ "type": "object",
454
+ "properties": {
455
+ "id": {
456
+ "$ref": "../_Identifier.schema.json#/$defs/AdvancedMagicalSpecialAbilityIdentifier"
457
+ }
458
+ },
459
+ "required": [
460
+ "id"
461
+ ],
462
+ "additionalProperties": false
445
463
  },
446
- "required": [
447
- "id"
448
- ],
449
- "additionalProperties": false
464
+ "minItems": 2
450
465
  },
451
466
  "is_selection_required_on_purchase": {
452
467
  "description": "Do have to choose the advanced special ability when buying the style\nspecial ability? Otherwise the decision can be made later.",