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,194 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "magicalActions/ElvenMagicalSong.schema.json",
4
+ "$ref": "#/definitions/ElvenMagicalSong",
5
+ "definitions": {
6
+ "ElvenMagicalSong": {
7
+ "title": "Elven Magical Song",
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "description": "The elven magical song'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": "To enhance their songs, elves can make a check on either *Singing\n(Two-Voiced Singing)* or *Music (appropriate application)* before making\nthe check for the song.",
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 an elven magical song.",
35
+ "$ref": "#/definitions/PerformanceParameters"
36
+ },
37
+ "property_id": {
38
+ "description": "The property's identifier.",
39
+ "type": "integer",
40
+ "minimum": 1
41
+ },
42
+ "improvement_cost": {
43
+ "description": "States which column is used to improve the skill.",
44
+ "$ref": "../_ImprovementCost.schema.json#/definitions/ImprovementCost"
45
+ },
46
+ "src": {
47
+ "$ref": "../source/_PublicationRef.schema.json#/definitions/PublicationRefs"
48
+ },
49
+ "translations": {
50
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
51
+ "type": "object",
52
+ "patternProperties": {
53
+ "^[a-z]{2}-[A-Z]{2}$": {
54
+ "type": "object",
55
+ "properties": {
56
+ "name": {
57
+ "description": "The name of the elven magical song.",
58
+ "type": "string",
59
+ "minLength": 1
60
+ },
61
+ "effect": {
62
+ "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.",
63
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Effect/T"
64
+ },
65
+ "cost": {
66
+ "type": "object",
67
+ "properties": {
68
+ "full": {
69
+ "type": "string"
70
+ },
71
+ "abbr": {
72
+ "type": "string"
73
+ }
74
+ },
75
+ "required": [
76
+ "full",
77
+ "abbr"
78
+ ],
79
+ "additionalProperties": false
80
+ },
81
+ "errata": {
82
+ "$ref": "../source/_Erratum.schema.json#/definitions/Errata"
83
+ }
84
+ },
85
+ "required": [
86
+ "name",
87
+ "effect",
88
+ "cost"
89
+ ],
90
+ "additionalProperties": false
91
+ }
92
+ },
93
+ "minProperties": 1,
94
+ "additionalProperties": false
95
+ }
96
+ },
97
+ "required": [
98
+ "id",
99
+ "check",
100
+ "skill",
101
+ "parameters",
102
+ "property_id",
103
+ "improvement_cost",
104
+ "src",
105
+ "translations"
106
+ ],
107
+ "additionalProperties": false
108
+ },
109
+ "PerformanceParameters": {
110
+ "description": "Measurable parameters of an elven magical song.",
111
+ "type": "object",
112
+ "properties": {
113
+ "cost": {
114
+ "description": "The AE cost.",
115
+ "type": "object",
116
+ "properties": {
117
+ "value": {
118
+ "description": "The (temporary) AE cost value.",
119
+ "type": "integer",
120
+ "minimum": 1
121
+ },
122
+ "interval": {
123
+ "description": "Specified if the AE cost `value` have to paid for each time interval.",
124
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Duration/UnitValue"
125
+ },
126
+ "permanent": {
127
+ "description": "A permanent AE cost, independent from a possible interval.",
128
+ "type": "object",
129
+ "properties": {
130
+ "value": {
131
+ "description": "The permanent AE cost value.",
132
+ "type": "integer",
133
+ "minimum": 1
134
+ },
135
+ "translations": {
136
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
137
+ "type": "object",
138
+ "patternProperties": {
139
+ "^[a-z]{2}-[A-Z]{2}$": {
140
+ "type": "object",
141
+ "properties": {
142
+ "replacement": {
143
+ "description": "A replacement string for the permanent cost.",
144
+ "type": "object",
145
+ "properties": {
146
+ "default": {
147
+ "description": "The full replacement string. It must contain `$1`, which is\ngoing to be replaced with the generated AE cost string, so\nadditional information can be provided without duplicating\nconcrete numeric values.",
148
+ "type": "string",
149
+ "minLength": 1,
150
+ "pattern": "\\$1"
151
+ },
152
+ "compressed": {
153
+ "description": "A compressed replacement string for use in small areas (e.g. on\ncharacter sheet). It must contain `$1`, which is going to be\nreplaced with the generated AE cost string, so additional\ninformation can be provided without duplicating concrete\nnumeric values.",
154
+ "type": "string",
155
+ "minLength": 1,
156
+ "pattern": "\\$1"
157
+ }
158
+ },
159
+ "required": [
160
+ "default",
161
+ "compressed"
162
+ ],
163
+ "additionalProperties": false
164
+ }
165
+ },
166
+ "required": [
167
+ "replacement"
168
+ ],
169
+ "additionalProperties": false
170
+ }
171
+ },
172
+ "minProperties": 1,
173
+ "additionalProperties": false
174
+ }
175
+ },
176
+ "required": [
177
+ "value"
178
+ ],
179
+ "additionalProperties": false
180
+ }
181
+ },
182
+ "required": [
183
+ "value"
184
+ ],
185
+ "additionalProperties": false
186
+ }
187
+ },
188
+ "required": [
189
+ "cost"
190
+ ],
191
+ "additionalProperties": false
192
+ }
193
+ }
194
+ }
@@ -0,0 +1,303 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "magicalActions/GeodeRitual.schema.json",
4
+ "$ref": "#/definitions/GeodeRitual",
5
+ "definitions": {
6
+ "GeodeRitual": {
7
+ "title": "Geode Ritual",
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "description": "The geode ritual'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
+ "parameters": {
20
+ "description": "Measurable parameters of a geode ritual.",
21
+ "$ref": "#/definitions/PerformanceParameters"
22
+ },
23
+ "target": {
24
+ "description": "The target category – the kind of creature or object – the skill affects.",
25
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/TargetCategory/T"
26
+ },
27
+ "property_id": {
28
+ "description": "The property's identifier.",
29
+ "type": "integer",
30
+ "minimum": 1
31
+ },
32
+ "prerequisites": {
33
+ "$ref": "../_Prerequisite.schema.json#/definitions/GroupCollection/GeodeRitual"
34
+ },
35
+ "src": {
36
+ "$ref": "../source/_PublicationRef.schema.json#/definitions/PublicationRefs"
37
+ },
38
+ "translations": {
39
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
40
+ "type": "object",
41
+ "patternProperties": {
42
+ "^[a-z]{2}-[A-Z]{2}$": {
43
+ "type": "object",
44
+ "properties": {
45
+ "name": {
46
+ "description": "The name of the geode ritual.",
47
+ "type": "string",
48
+ "minLength": 1
49
+ },
50
+ "effect": {
51
+ "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.",
52
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Effect/T"
53
+ },
54
+ "casting_time": {
55
+ "type": "object",
56
+ "properties": {
57
+ "full": {
58
+ "type": "string"
59
+ },
60
+ "abbr": {
61
+ "type": "string"
62
+ }
63
+ },
64
+ "required": [
65
+ "full",
66
+ "abbr"
67
+ ],
68
+ "additionalProperties": false
69
+ },
70
+ "cost": {
71
+ "type": "object",
72
+ "properties": {
73
+ "full": {
74
+ "type": "string"
75
+ },
76
+ "abbr": {
77
+ "type": "string"
78
+ }
79
+ },
80
+ "required": [
81
+ "full",
82
+ "abbr"
83
+ ],
84
+ "additionalProperties": false
85
+ },
86
+ "range": {
87
+ "type": "object",
88
+ "properties": {
89
+ "full": {
90
+ "type": "string"
91
+ },
92
+ "abbr": {
93
+ "type": "string"
94
+ }
95
+ },
96
+ "required": [
97
+ "full",
98
+ "abbr"
99
+ ],
100
+ "additionalProperties": false
101
+ },
102
+ "duration": {
103
+ "type": "object",
104
+ "properties": {
105
+ "full": {
106
+ "type": "string"
107
+ },
108
+ "abbr": {
109
+ "type": "string"
110
+ }
111
+ },
112
+ "required": [
113
+ "full",
114
+ "abbr"
115
+ ],
116
+ "additionalProperties": false
117
+ },
118
+ "target": {
119
+ "type": "string"
120
+ },
121
+ "errata": {
122
+ "$ref": "../source/_Erratum.schema.json#/definitions/Errata"
123
+ }
124
+ },
125
+ "required": [
126
+ "name",
127
+ "effect",
128
+ "casting_time",
129
+ "cost",
130
+ "range",
131
+ "duration",
132
+ "target"
133
+ ],
134
+ "additionalProperties": false
135
+ }
136
+ },
137
+ "minProperties": 1,
138
+ "additionalProperties": false
139
+ }
140
+ },
141
+ "required": [
142
+ "id",
143
+ "check",
144
+ "parameters",
145
+ "target",
146
+ "property_id",
147
+ "src",
148
+ "translations"
149
+ ],
150
+ "additionalProperties": false
151
+ },
152
+ "PerformanceParameters": {
153
+ "description": "Measurable parameters of a geode ritual.",
154
+ "type": "object",
155
+ "properties": {
156
+ "casting_time": {
157
+ "description": "The casting time.",
158
+ "type": "object",
159
+ "properties": {
160
+ "value": {
161
+ "description": "The (unitless) casting time.",
162
+ "type": "integer",
163
+ "minimum": 1
164
+ },
165
+ "unit": {
166
+ "description": "The casting time unit.",
167
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/CastingTime/SlowSkillCastingTimeUnit"
168
+ }
169
+ },
170
+ "required": [
171
+ "value",
172
+ "unit"
173
+ ],
174
+ "additionalProperties": false
175
+ },
176
+ "cost": {
177
+ "description": "The AE cost.",
178
+ "oneOf": [
179
+ {
180
+ "type": "object",
181
+ "properties": {
182
+ "tag": {
183
+ "const": "Fixed"
184
+ },
185
+ "value": {
186
+ "description": "The AE cost value.",
187
+ "type": "integer",
188
+ "minimum": 1
189
+ }
190
+ },
191
+ "required": [
192
+ "tag",
193
+ "value"
194
+ ],
195
+ "additionalProperties": false
196
+ },
197
+ {
198
+ "type": "object",
199
+ "properties": {
200
+ "tag": {
201
+ "const": "Map"
202
+ },
203
+ "map": {
204
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Cost/OneTime/Map"
205
+ }
206
+ },
207
+ "required": [
208
+ "tag",
209
+ "map"
210
+ ],
211
+ "additionalProperties": false
212
+ }
213
+ ]
214
+ },
215
+ "range": {
216
+ "description": "The range.",
217
+ "oneOf": [
218
+ {
219
+ "type": "object",
220
+ "properties": {
221
+ "tag": {
222
+ "const": "Self"
223
+ }
224
+ },
225
+ "required": [
226
+ "tag"
227
+ ],
228
+ "additionalProperties": false
229
+ },
230
+ {
231
+ "type": "object",
232
+ "properties": {
233
+ "tag": {
234
+ "const": "Fixed"
235
+ },
236
+ "value": {
237
+ "description": "The range in steps/m.",
238
+ "type": "integer",
239
+ "minimum": 1
240
+ }
241
+ },
242
+ "required": [
243
+ "tag",
244
+ "value"
245
+ ],
246
+ "additionalProperties": false
247
+ }
248
+ ]
249
+ },
250
+ "duration": {
251
+ "description": "The duration.",
252
+ "oneOf": [
253
+ {
254
+ "type": "object",
255
+ "properties": {
256
+ "tag": {
257
+ "const": "Immediate"
258
+ }
259
+ },
260
+ "required": [
261
+ "tag"
262
+ ],
263
+ "additionalProperties": false
264
+ },
265
+ {
266
+ "type": "object",
267
+ "properties": {
268
+ "tag": {
269
+ "const": "Fixed"
270
+ },
271
+ "value": {
272
+ "description": "The (unitless) duration.",
273
+ "type": "integer",
274
+ "minimum": 2
275
+ },
276
+ "unit": {
277
+ "description": "The duration unit.",
278
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Duration/Unit"
279
+ }
280
+ },
281
+ "required": [
282
+ "tag",
283
+ "value",
284
+ "unit"
285
+ ],
286
+ "additionalProperties": false
287
+ },
288
+ {
289
+ "$ref": "../_ActivatableSkill.schema.json#/definitions/Duration/CheckResultBasedTagged"
290
+ }
291
+ ]
292
+ }
293
+ },
294
+ "required": [
295
+ "casting_time",
296
+ "cost",
297
+ "range",
298
+ "duration"
299
+ ],
300
+ "additionalProperties": false
301
+ }
302
+ }
303
+ }