optolith-database-schema 0.0.1

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 (169) hide show
  1. package/AUTHORS +1 -0
  2. package/CHANGELOG.md +27 -0
  3. package/CODEOWNERS +1 -0
  4. package/LICENSE +378 -0
  5. package/README.md +17 -0
  6. package/lib/main.d.ts +1 -0
  7. package/lib/main.js +1 -0
  8. package/lib/types/ArcaneBardTradition.d.ts +32 -0
  9. package/lib/types/ArcaneBardTradition.js +4 -0
  10. package/lib/types/ArcaneDancerTradition.d.ts +32 -0
  11. package/lib/types/ArcaneDancerTradition.js +4 -0
  12. package/lib/types/Aspect.d.ts +36 -0
  13. package/lib/types/Aspect.js +4 -0
  14. package/lib/types/Attribute.d.ts +42 -0
  15. package/lib/types/Attribute.js +5 -0
  16. package/lib/types/CombatTechnique_Close.d.ts +80 -0
  17. package/lib/types/CombatTechnique_Close.js +4 -0
  18. package/lib/types/CombatTechnique_Ranged.d.ts +62 -0
  19. package/lib/types/CombatTechnique_Ranged.js +4 -0
  20. package/lib/types/Condition.d.ts +51 -0
  21. package/lib/types/Condition.js +4 -0
  22. package/lib/types/Culture.d.ts +494 -0
  23. package/lib/types/Culture.js +4 -0
  24. package/lib/types/DerivedCharacteristic.d.ts +65 -0
  25. package/lib/types/DerivedCharacteristic.js +4 -0
  26. package/lib/types/Element.d.ts +30 -0
  27. package/lib/types/Element.js +4 -0
  28. package/lib/types/ExperienceLevel.d.ts +68 -0
  29. package/lib/types/ExperienceLevel.js +4 -0
  30. package/lib/types/EyeColor.d.ts +30 -0
  31. package/lib/types/EyeColor.js +4 -0
  32. package/lib/types/HairColor.d.ts +30 -0
  33. package/lib/types/HairColor.js +4 -0
  34. package/lib/types/Lessons_Curriculum.d.ts +297 -0
  35. package/lib/types/Lessons_Curriculum.js +4 -0
  36. package/lib/types/Lessons_Guideline.d.ts +36 -0
  37. package/lib/types/Lessons_Guideline.js +4 -0
  38. package/lib/types/Locale.d.ts +38 -0
  39. package/lib/types/Locale.js +4 -0
  40. package/lib/types/MetaCondition.d.ts +54 -0
  41. package/lib/types/MetaCondition.js +4 -0
  42. package/lib/types/Property.d.ts +36 -0
  43. package/lib/types/Property.js +4 -0
  44. package/lib/types/Race.d.ts +524 -0
  45. package/lib/types/Race.js +13 -0
  46. package/lib/types/Region.d.ts +30 -0
  47. package/lib/types/Region.js +4 -0
  48. package/lib/types/Service.d.ts +40 -0
  49. package/lib/types/Service.js +4 -0
  50. package/lib/types/SexPractice.d.ts +53 -0
  51. package/lib/types/SexPractice.js +4 -0
  52. package/lib/types/Skill.d.ts +169 -0
  53. package/lib/types/Skill.js +4 -0
  54. package/lib/types/SkillGroup.d.ts +40 -0
  55. package/lib/types/SkillGroup.js +4 -0
  56. package/lib/types/SkillModificationIncrement.d.ts +82 -0
  57. package/lib/types/SkillModificationIncrement.js +4 -0
  58. package/lib/types/SocialStatus.d.ts +30 -0
  59. package/lib/types/SocialStatus.js +4 -0
  60. package/lib/types/State.d.ts +40 -0
  61. package/lib/types/State.js +4 -0
  62. package/lib/types/TargetCategory.d.ts +36 -0
  63. package/lib/types/TargetCategory.js +4 -0
  64. package/lib/types/_ActivatableSkill.d.ts +919 -0
  65. package/lib/types/_ActivatableSkill.js +38 -0
  66. package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +12 -0
  67. package/lib/types/_CommonnessRatedAdvantageDisadvantage.js +1 -0
  68. package/lib/types/_ImprovementCost.d.ts +9 -0
  69. package/lib/types/_ImprovementCost.js +10 -0
  70. package/lib/types/_Prerequisite.d.ts +274 -0
  71. package/lib/types/_Prerequisite.js +4 -0
  72. package/lib/types/_Sex.d.ts +11 -0
  73. package/lib/types/_Sex.js +4 -0
  74. package/lib/types/_SkillCheck.d.ts +28 -0
  75. package/lib/types/_SkillCheck.js +1 -0
  76. package/lib/types/magicalActions/AnimistPower.d.ts +227 -0
  77. package/lib/types/magicalActions/AnimistPower.js +4 -0
  78. package/lib/types/magicalActions/AnimistPower_Tribe.d.ts +30 -0
  79. package/lib/types/magicalActions/AnimistPower_Tribe.js +4 -0
  80. package/lib/types/magicalActions/Curse.d.ts +228 -0
  81. package/lib/types/magicalActions/Curse.js +4 -0
  82. package/lib/types/magicalActions/DominationRitual.d.ts +181 -0
  83. package/lib/types/magicalActions/DominationRitual.js +4 -0
  84. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +149 -0
  85. package/lib/types/magicalActions/ElvenMagicalSong.js +4 -0
  86. package/lib/types/magicalActions/GeodeRitual.d.ts +162 -0
  87. package/lib/types/magicalActions/GeodeRitual.js +4 -0
  88. package/lib/types/magicalActions/JesterTrick.d.ts +167 -0
  89. package/lib/types/magicalActions/JesterTrick.js +4 -0
  90. package/lib/types/magicalActions/MagicalDance.d.ts +184 -0
  91. package/lib/types/magicalActions/MagicalDance.js +4 -0
  92. package/lib/types/magicalActions/MagicalMelody.d.ts +132 -0
  93. package/lib/types/magicalActions/MagicalMelody.js +4 -0
  94. package/lib/types/magicalActions/MagicalRune.d.ts +241 -0
  95. package/lib/types/magicalActions/MagicalRune.js +4 -0
  96. package/lib/types/magicalActions/ZibiljaRitual.d.ts +101 -0
  97. package/lib/types/magicalActions/ZibiljaRitual.js +4 -0
  98. package/lib/types/magicalActions/_MusicTradition.d.ts +28 -0
  99. package/lib/types/magicalActions/_MusicTradition.js +1 -0
  100. package/lib/types/magicalActions/_SkillReference.d.ts +13 -0
  101. package/lib/types/magicalActions/_SkillReference.js +5 -0
  102. package/lib/types/rule/FocusRule.d.ts +53 -0
  103. package/lib/types/rule/FocusRule.js +4 -0
  104. package/lib/types/rule/FocusRule_Subject.d.ts +31 -0
  105. package/lib/types/rule/FocusRule_Subject.js +4 -0
  106. package/lib/types/rule/OptionalRule.d.ts +65 -0
  107. package/lib/types/rule/OptionalRule.js +4 -0
  108. package/lib/types/source/Publication.d.ts +4 -0
  109. package/lib/types/source/Publication.js +4 -0
  110. package/lib/types/source/_Erratum.d.ts +25 -0
  111. package/lib/types/source/_Erratum.js +4 -0
  112. package/lib/types/source/_PublicationRef.d.ts +146 -0
  113. package/lib/types/source/_PublicationRef.js +4 -0
  114. package/lib/validation/integrity.d.ts +16 -0
  115. package/lib/validation/integrity.js +3 -0
  116. package/package.json +37 -0
  117. package/schema/ArcaneBardTradition.schema.json +49 -0
  118. package/schema/ArcaneDancerTradition.schema.json +49 -0
  119. package/schema/Aspect.schema.json +50 -0
  120. package/schema/Attribute.schema.json +57 -0
  121. package/schema/CombatTechnique_Close.schema.json +127 -0
  122. package/schema/CombatTechnique_Ranged.schema.json +83 -0
  123. package/schema/Condition.schema.json +84 -0
  124. package/schema/Culture.schema.json +858 -0
  125. package/schema/DerivedCharacteristic.schema.json +90 -0
  126. package/schema/Element.schema.json +45 -0
  127. package/schema/ExperienceLevel.schema.json +84 -0
  128. package/schema/EyeColor.schema.json +45 -0
  129. package/schema/HairColor.schema.json +45 -0
  130. package/schema/Lessons_Curriculum.schema.json +500 -0
  131. package/schema/Lessons_Guideline.schema.json +51 -0
  132. package/schema/Locale.schema.json +45 -0
  133. package/schema/MetaCondition.schema.json +85 -0
  134. package/schema/Property.schema.json +49 -0
  135. package/schema/Race.schema.json +724 -0
  136. package/schema/Region.schema.json +45 -0
  137. package/schema/Service.schema.json +58 -0
  138. package/schema/SexPractice.schema.json +72 -0
  139. package/schema/Skill.schema.json +278 -0
  140. package/schema/SkillGroup.schema.json +56 -0
  141. package/schema/SkillModificationIncrement.schema.json +98 -0
  142. package/schema/SocialStatus.schema.json +45 -0
  143. package/schema/State.schema.json +58 -0
  144. package/schema/TargetCategory.schema.json +51 -0
  145. package/schema/_ActivatableSkill.schema.json +1534 -0
  146. package/schema/_CommonnessRatedAdvantageDisadvantage.schema.json +22 -0
  147. package/schema/_ImprovementCost.schema.json +15 -0
  148. package/schema/_Prerequisite.schema.json +519 -0
  149. package/schema/_Sex.schema.json +36 -0
  150. package/schema/_SkillCheck.schema.json +94 -0
  151. package/schema/magicalActions/AnimistPower.schema.json +411 -0
  152. package/schema/magicalActions/AnimistPower_Tribe.schema.json +45 -0
  153. package/schema/magicalActions/Curse.schema.json +378 -0
  154. package/schema/magicalActions/DominationRitual.schema.json +288 -0
  155. package/schema/magicalActions/ElvenMagicalSong.schema.json +194 -0
  156. package/schema/magicalActions/GeodeRitual.schema.json +303 -0
  157. package/schema/magicalActions/JesterTrick.schema.json +292 -0
  158. package/schema/magicalActions/MagicalDance.schema.json +328 -0
  159. package/schema/magicalActions/MagicalMelody.schema.json +254 -0
  160. package/schema/magicalActions/MagicalRune.schema.json +426 -0
  161. package/schema/magicalActions/ZibiljaRitual.schema.json +159 -0
  162. package/schema/magicalActions/_MusicTradition.schema.json +44 -0
  163. package/schema/magicalActions/_SkillReference.schema.json +26 -0
  164. package/schema/rule/FocusRule.schema.json +71 -0
  165. package/schema/rule/FocusRule_Subject.schema.json +46 -0
  166. package/schema/rule/OptionalRule.schema.json +96 -0
  167. package/schema/source/Publication.schema.json +165 -0
  168. package/schema/source/_Erratum.schema.json +37 -0
  169. package/schema/source/_PublicationRef.schema.json +242 -0
@@ -0,0 +1,254 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "magicalActions/MagicalMelody.schema.json",
4
+ "$ref": "#/definitions/MagicalMelody",
5
+ "definitions": {
6
+ "MagicalMelody": {
7
+ "title": "Magical Melody",
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "description": "The magical melody's identifier. An unique, increasing integer.",
12
+ "type": "integer",
13
+ "minimum": 1
14
+ },
15
+ "check": {
16
+ "description": "Lists the linked three attributes used to make a skill check.",
17
+ "$ref": "../_SkillCheck.schema.json#/definitions/SkillCheck"
18
+ },
19
+ "check_penalty": {
20
+ "description": "In some cases, the target's Spirit or Toughness is applied as a penalty.",
21
+ "$ref": "../_SkillCheck.schema.json#/definitions/SkillCheckPenalty"
22
+ },
23
+ "skill": {
24
+ "description": "Arcane bards must make a *Singing (area of application)* or *Music (area of\napplication)* check for each magical melody.",
25
+ "type": "array",
26
+ "items": {
27
+ "$ref": "./_SkillReference.schema.json#/definitions/SkillReference"
28
+ },
29
+ "minItems": 1,
30
+ "maxItems": 2,
31
+ "uniqueItems": true
32
+ },
33
+ "parameters": {
34
+ "description": "Measurable parameters of a magical melody.",
35
+ "$ref": "#/definitions/PerformanceParameters"
36
+ },
37
+ "property_id": {
38
+ "description": "The property's identifier.",
39
+ "type": "integer",
40
+ "minimum": 1
41
+ },
42
+ "music_tradition": {
43
+ "description": "The music tradition(s) the magical melody is available for. This also\ndefines the different names in each music tradition.",
44
+ "type": "array",
45
+ "items": {
46
+ "$ref": "./_MusicTradition.schema.json#/definitions/MusicTraditionReference"
47
+ },
48
+ "minItems": 1
49
+ },
50
+ "improvement_cost": {
51
+ "description": "States which column is used to improve the skill.",
52
+ "$ref": "../_ImprovementCost.schema.json#/definitions/ImprovementCost"
53
+ },
54
+ "src": {
55
+ "$ref": "../source/_PublicationRef.schema.json#/definitions/PublicationRefs"
56
+ },
57
+ "translations": {
58
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
59
+ "type": "object",
60
+ "patternProperties": {
61
+ "^[a-z]{2}-[A-Z]{2}$": {
62
+ "type": "object",
63
+ "properties": {
64
+ "name": {
65
+ "description": "The name of the magical melody.",
66
+ "type": "string",
67
+ "minLength": 1
68
+ },
69
+ "effect": {
70
+ "description": "The effect description may be either a plain text or a text that is\ndivided by a list of effects for each quality level. It may also be a\nlist for each two quality levels.",
71
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Effect/T"
72
+ },
73
+ "duration": {
74
+ "type": "object",
75
+ "properties": {
76
+ "full": {
77
+ "type": "string"
78
+ },
79
+ "abbr": {
80
+ "type": "string"
81
+ }
82
+ },
83
+ "required": [
84
+ "full",
85
+ "abbr"
86
+ ],
87
+ "additionalProperties": false
88
+ },
89
+ "cost": {
90
+ "type": "object",
91
+ "properties": {
92
+ "full": {
93
+ "type": "string"
94
+ },
95
+ "abbr": {
96
+ "type": "string"
97
+ }
98
+ },
99
+ "required": [
100
+ "full",
101
+ "abbr"
102
+ ],
103
+ "additionalProperties": false
104
+ },
105
+ "errata": {
106
+ "$ref": "../source/_Erratum.schema.json#/definitions/Errata"
107
+ }
108
+ },
109
+ "required": [
110
+ "name",
111
+ "effect",
112
+ "duration",
113
+ "cost"
114
+ ],
115
+ "additionalProperties": false
116
+ }
117
+ },
118
+ "minProperties": 1,
119
+ "additionalProperties": false
120
+ }
121
+ },
122
+ "required": [
123
+ "id",
124
+ "check",
125
+ "skill",
126
+ "parameters",
127
+ "property_id",
128
+ "music_tradition",
129
+ "improvement_cost",
130
+ "src",
131
+ "translations"
132
+ ],
133
+ "additionalProperties": false
134
+ },
135
+ "PerformanceParameters": {
136
+ "description": "Measurable parameters of a magical melody.",
137
+ "type": "object",
138
+ "properties": {
139
+ "duration": {
140
+ "type": "object",
141
+ "properties": {
142
+ "length": {
143
+ "oneOf": [
144
+ {
145
+ "type": "object",
146
+ "properties": {
147
+ "tag": {
148
+ "const": "Long"
149
+ }
150
+ },
151
+ "required": [
152
+ "tag"
153
+ ],
154
+ "additionalProperties": false
155
+ },
156
+ {
157
+ "type": "object",
158
+ "properties": {
159
+ "tag": {
160
+ "const": "Short"
161
+ }
162
+ },
163
+ "required": [
164
+ "tag"
165
+ ],
166
+ "additionalProperties": false
167
+ }
168
+ ]
169
+ },
170
+ "reusability": {
171
+ "oneOf": [
172
+ {
173
+ "type": "object",
174
+ "properties": {
175
+ "tag": {
176
+ "const": "OneTime"
177
+ }
178
+ },
179
+ "required": [
180
+ "tag"
181
+ ],
182
+ "additionalProperties": false
183
+ },
184
+ {
185
+ "type": "object",
186
+ "properties": {
187
+ "tag": {
188
+ "const": "Sustainable"
189
+ }
190
+ },
191
+ "required": [
192
+ "tag"
193
+ ],
194
+ "additionalProperties": false
195
+ }
196
+ ]
197
+ }
198
+ },
199
+ "required": [
200
+ "length",
201
+ "reusability"
202
+ ],
203
+ "additionalProperties": false
204
+ },
205
+ "cost": {
206
+ "oneOf": [
207
+ {
208
+ "type": "object",
209
+ "properties": {
210
+ "tag": {
211
+ "const": "Fixed"
212
+ },
213
+ "value": {
214
+ "description": "The (temporary) AE cost value.",
215
+ "type": "integer",
216
+ "minimum": 1
217
+ }
218
+ },
219
+ "required": [
220
+ "tag",
221
+ "value"
222
+ ],
223
+ "additionalProperties": false
224
+ },
225
+ {
226
+ "type": "object",
227
+ "properties": {
228
+ "tag": {
229
+ "const": "FirstPerson"
230
+ },
231
+ "value": {
232
+ "description": "The (temporary) AE cost value for the first targeted person. The AE\ncost for each additional person is half this value.",
233
+ "type": "integer",
234
+ "minimum": 1,
235
+ "multipleOf": 2
236
+ }
237
+ },
238
+ "required": [
239
+ "tag",
240
+ "value"
241
+ ],
242
+ "additionalProperties": false
243
+ }
244
+ ]
245
+ }
246
+ },
247
+ "required": [
248
+ "duration",
249
+ "cost"
250
+ ],
251
+ "additionalProperties": false
252
+ }
253
+ }
254
+ }
@@ -0,0 +1,426 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "magicalActions/MagicalRune.schema.json",
4
+ "$ref": "#/definitions/MagicalRune",
5
+ "definitions": {
6
+ "MagicalRune": {
7
+ "title": "Magical Rune",
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "description": "The magical rune's identifier. An unique, increasing integer.",
12
+ "type": "integer",
13
+ "minimum": 1
14
+ },
15
+ "check": {
16
+ "description": "Lists the linked three attributes used to make a skill check.",
17
+ "$ref": "../_SkillCheck.schema.json#/definitions/SkillCheck"
18
+ },
19
+ "check_penalty": {
20
+ "description": "In some cases, the target's Spirit or Toughness is applied as a penalty.",
21
+ "oneOf": [
22
+ {
23
+ "type": "object",
24
+ "properties": {
25
+ "tag": {
26
+ "const": "CloseCombatTechnique"
27
+ },
28
+ "map": {
29
+ "description": "A map from close combat techniques to their modifiers.",
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "properties": {
34
+ "combat_technique_id": {
35
+ "description": "The close combat technique's identifier.",
36
+ "type": "integer",
37
+ "minimum": 1
38
+ },
39
+ "modifier": {
40
+ "description": "The check modifier for the specified close combat technique.",
41
+ "type": "integer"
42
+ }
43
+ },
44
+ "required": [
45
+ "combat_technique_id",
46
+ "modifier"
47
+ ],
48
+ "additionalProperties": false
49
+ },
50
+ "minItems": 1
51
+ },
52
+ "other": {
53
+ "type": "object",
54
+ "properties": {
55
+ "modifier": {
56
+ "description": "The check modifier for close combat techniques not specified in\n`map`.",
57
+ "type": "integer"
58
+ }
59
+ },
60
+ "required": [
61
+ "modifier"
62
+ ],
63
+ "additionalProperties": false
64
+ }
65
+ },
66
+ "required": [
67
+ "tag",
68
+ "map",
69
+ "other"
70
+ ],
71
+ "additionalProperties": false
72
+ }
73
+ ]
74
+ },
75
+ "parameters": {
76
+ "description": "Measurable parameters of a magical rune.",
77
+ "$ref": "#/definitions/PerformanceParameters"
78
+ },
79
+ "property_id": {
80
+ "description": "The property's identifier.",
81
+ "type": "integer",
82
+ "minimum": 1
83
+ },
84
+ "improvement_cost": {
85
+ "description": "States which column is used to improve the skill.",
86
+ "$ref": "../_ImprovementCost.schema.json#/definitions/ImprovementCost"
87
+ },
88
+ "src": {
89
+ "$ref": "../source/_PublicationRef.schema.json#/definitions/PublicationRefs"
90
+ },
91
+ "translations": {
92
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
93
+ "type": "object",
94
+ "patternProperties": {
95
+ "^[a-z]{2}-[A-Z]{2}$": {
96
+ "type": "object",
97
+ "properties": {
98
+ "name": {
99
+ "description": "The name of the magical rune.",
100
+ "type": "string",
101
+ "minLength": 1
102
+ },
103
+ "native_name": {
104
+ "description": "The native name of the magical rune.",
105
+ "type": "string",
106
+ "minLength": 1
107
+ },
108
+ "effect": {
109
+ "description": "The effect description may be either a plain text or a text that is\ndivided by a list of effects for each quality level. It may also be a\nlist for each two quality levels.",
110
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Effect/T"
111
+ },
112
+ "cost": {
113
+ "type": "object",
114
+ "properties": {
115
+ "full": {
116
+ "type": "string"
117
+ },
118
+ "abbr": {
119
+ "type": "string"
120
+ }
121
+ },
122
+ "required": [
123
+ "full",
124
+ "abbr"
125
+ ],
126
+ "additionalProperties": false
127
+ },
128
+ "crafting_time": {
129
+ "type": "object",
130
+ "properties": {
131
+ "slow": {
132
+ "type": "object",
133
+ "properties": {
134
+ "full": {
135
+ "type": "string"
136
+ },
137
+ "abbr": {
138
+ "type": "string"
139
+ }
140
+ },
141
+ "required": [
142
+ "full",
143
+ "abbr"
144
+ ],
145
+ "additionalProperties": false
146
+ },
147
+ "fast": {
148
+ "type": "object",
149
+ "properties": {
150
+ "full": {
151
+ "type": "string"
152
+ },
153
+ "abbr": {
154
+ "type": "string"
155
+ }
156
+ },
157
+ "required": [
158
+ "full",
159
+ "abbr"
160
+ ],
161
+ "additionalProperties": false
162
+ }
163
+ },
164
+ "required": [
165
+ "slow",
166
+ "fast"
167
+ ],
168
+ "additionalProperties": false
169
+ },
170
+ "duration": {
171
+ "type": "object",
172
+ "properties": {
173
+ "slow": {
174
+ "type": "object",
175
+ "properties": {
176
+ "full": {
177
+ "type": "string"
178
+ },
179
+ "abbr": {
180
+ "type": "string"
181
+ }
182
+ },
183
+ "required": [
184
+ "full",
185
+ "abbr"
186
+ ],
187
+ "additionalProperties": false
188
+ },
189
+ "fast": {
190
+ "type": "object",
191
+ "properties": {
192
+ "full": {
193
+ "type": "string"
194
+ },
195
+ "abbr": {
196
+ "type": "string"
197
+ }
198
+ },
199
+ "required": [
200
+ "full",
201
+ "abbr"
202
+ ],
203
+ "additionalProperties": false
204
+ }
205
+ },
206
+ "required": [
207
+ "slow",
208
+ "fast"
209
+ ],
210
+ "additionalProperties": false
211
+ },
212
+ "errata": {
213
+ "$ref": "../source/_Erratum.schema.json#/definitions/Errata"
214
+ }
215
+ },
216
+ "required": [
217
+ "name",
218
+ "native_name",
219
+ "effect",
220
+ "cost",
221
+ "crafting_time",
222
+ "duration"
223
+ ],
224
+ "additionalProperties": false
225
+ }
226
+ },
227
+ "minProperties": 1,
228
+ "additionalProperties": false
229
+ }
230
+ },
231
+ "required": [
232
+ "id",
233
+ "check",
234
+ "parameters",
235
+ "property_id",
236
+ "improvement_cost",
237
+ "src",
238
+ "translations"
239
+ ],
240
+ "additionalProperties": false
241
+ },
242
+ "PerformanceParameters": {
243
+ "description": "Measurable parameters of a magical rune.",
244
+ "type": "object",
245
+ "properties": {
246
+ "cost": {
247
+ "description": "The AE cost.",
248
+ "oneOf": [
249
+ {
250
+ "type": "object",
251
+ "properties": {
252
+ "tag": {
253
+ "const": "Single"
254
+ },
255
+ "value": {
256
+ "description": "The AE cost value.",
257
+ "type": "integer",
258
+ "minimum": 1
259
+ },
260
+ "translations": {
261
+ "description": "All translations for the entry, identified by IETF language tag\n(BCP47).",
262
+ "type": "object",
263
+ "patternProperties": {
264
+ "^[a-z]{2}-[A-Z]{2}$": {
265
+ "type": "object",
266
+ "properties": {
267
+ "note": {
268
+ "description": "A note, appended to the generated string in parenthesis.",
269
+ "type": "object",
270
+ "properties": {
271
+ "default": {
272
+ "description": "The full note.",
273
+ "type": "string",
274
+ "minLength": 1
275
+ },
276
+ "compressed": {
277
+ "description": "A compressed note, if applicable. If not specified it should not\nbe displayed in small location.",
278
+ "type": "string",
279
+ "minLength": 1
280
+ }
281
+ },
282
+ "required": [
283
+ "default"
284
+ ],
285
+ "additionalProperties": false
286
+ }
287
+ },
288
+ "required": [],
289
+ "minProperties": 1,
290
+ "additionalProperties": false
291
+ }
292
+ },
293
+ "minProperties": 1,
294
+ "additionalProperties": false
295
+ }
296
+ },
297
+ "required": [
298
+ "tag",
299
+ "value"
300
+ ],
301
+ "additionalProperties": false
302
+ },
303
+ {
304
+ "type": "object",
305
+ "properties": {
306
+ "tag": {
307
+ "const": "Disjunction"
308
+ },
309
+ "list": {
310
+ "description": "A set of possible AE cost values.",
311
+ "type": "array",
312
+ "items": {
313
+ "type": "object",
314
+ "properties": {
315
+ "value": {
316
+ "description": "The AE cost value.",
317
+ "type": "integer",
318
+ "minimum": 1
319
+ }
320
+ },
321
+ "required": [
322
+ "value"
323
+ ],
324
+ "additionalProperties": false
325
+ },
326
+ "minItems": 2
327
+ }
328
+ },
329
+ "required": [
330
+ "tag",
331
+ "list"
332
+ ],
333
+ "additionalProperties": false
334
+ }
335
+ ]
336
+ },
337
+ "crafting_time": {
338
+ "description": "The crafting time.",
339
+ "type": "object",
340
+ "properties": {
341
+ "value": {
342
+ "description": "The (unitless) crafting time.",
343
+ "oneOf": [
344
+ {
345
+ "const": 1
346
+ },
347
+ {
348
+ "const": 2
349
+ },
350
+ {
351
+ "const": 4
352
+ }
353
+ ]
354
+ },
355
+ "translations": {
356
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
357
+ "type": "object",
358
+ "patternProperties": {
359
+ "^[a-z]{2}-[A-Z]{2}$": {
360
+ "type": "object",
361
+ "properties": {
362
+ "per": {
363
+ "description": "The crafting time has to be per a specific countable entity, e.g. `8\naction per person`.",
364
+ "type": "object",
365
+ "properties": {
366
+ "default": {
367
+ "description": "The full countable entity name.",
368
+ "type": "string",
369
+ "minLength": 1
370
+ },
371
+ "compressed": {
372
+ "description": "The compressed countable entity name.",
373
+ "type": "string",
374
+ "minLength": 1
375
+ }
376
+ },
377
+ "required": [
378
+ "default",
379
+ "compressed"
380
+ ],
381
+ "additionalProperties": false
382
+ }
383
+ },
384
+ "required": [],
385
+ "minProperties": 1,
386
+ "additionalProperties": false
387
+ }
388
+ },
389
+ "minProperties": 1,
390
+ "additionalProperties": false
391
+ }
392
+ },
393
+ "required": [
394
+ "value"
395
+ ],
396
+ "additionalProperties": false
397
+ },
398
+ "duration": {
399
+ "description": "The duration.",
400
+ "type": "object",
401
+ "properties": {
402
+ "slow": {
403
+ "description": "The duration on slow rune application.",
404
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Duration/CheckResultBased"
405
+ },
406
+ "fast": {
407
+ "description": "The duration on fast rune application.",
408
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Duration/CheckResultBased"
409
+ }
410
+ },
411
+ "required": [
412
+ "slow",
413
+ "fast"
414
+ ],
415
+ "additionalProperties": false
416
+ }
417
+ },
418
+ "required": [
419
+ "cost",
420
+ "crafting_time",
421
+ "duration"
422
+ ],
423
+ "additionalProperties": false
424
+ }
425
+ }
426
+ }