optolith-database-schema 0.0.1 → 0.0.2

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 (35) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/lib/types/Ceremony.d.ts +150 -0
  3. package/lib/types/Ceremony.js +4 -0
  4. package/lib/types/LiturgicalChant.d.ts +150 -0
  5. package/lib/types/LiturgicalChant.js +4 -0
  6. package/lib/types/Ritual.d.ts +134 -0
  7. package/lib/types/Ritual.js +4 -0
  8. package/lib/types/{SkillModificationIncrement.d.ts → SkillModificationLevel.d.ts} +58 -31
  9. package/lib/types/SkillModificationLevel.js +8 -0
  10. package/lib/types/Spell.d.ts +134 -0
  11. package/lib/types/Spell.js +4 -0
  12. package/lib/types/_ActivatableSkill.d.ts +42 -15
  13. package/lib/types/_ActivatableSkill.js +0 -5
  14. package/lib/types/_Enhancements.d.ts +66 -0
  15. package/lib/types/_Enhancements.js +4 -0
  16. package/lib/types/_Identifier.d.ts +80 -0
  17. package/lib/types/_Identifier.js +1 -0
  18. package/lib/types/_Prerequisite.d.ts +93 -1
  19. package/lib/types/_Prerequisite.js +183 -1
  20. package/lib/types/magicalActions/GeodeRitual.d.ts +3 -2
  21. package/lib/types/magicalActions/ZibiljaRitual.d.ts +2 -2
  22. package/package.json +1 -1
  23. package/schema/Ceremony.schema.json +239 -0
  24. package/schema/LiturgicalChant.schema.json +239 -0
  25. package/schema/Ritual.schema.json +219 -0
  26. package/schema/SkillModificationLevel.schema.json +138 -0
  27. package/schema/Spell.schema.json +219 -0
  28. package/schema/_ActivatableSkill.schema.json +174 -19
  29. package/schema/_Enhancements.schema.json +82 -0
  30. package/schema/_Identifier.schema.json +185 -0
  31. package/schema/_Prerequisite.schema.json +199 -1
  32. package/schema/magicalActions/GeodeRitual.schema.json +1 -1
  33. package/schema/magicalActions/ZibiljaRitual.schema.json +1 -1
  34. package/lib/types/SkillModificationIncrement.js +0 -4
  35. package/schema/SkillModificationIncrement.schema.json +0 -98
@@ -0,0 +1,134 @@
1
+ /**
2
+ * @main Spell
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ import { Effect, FastPerformanceParameters, TargetCategory } from "./_ActivatableSkill";
7
+ import { Enhancements } from "./_Enhancements";
8
+ import { ImprovementCost } from "./_ImprovementCost";
9
+ import { GroupCollection } from "./_Prerequisite";
10
+ import { SkillCheck, SkillCheckPenalty } from "./_SkillCheck";
11
+ /**
12
+ * @title Spell
13
+ */
14
+ export declare type Spell = {
15
+ /**
16
+ * The spell's identifier. An unique, increasing integer.
17
+ * @integer
18
+ * @minimum 1
19
+ */
20
+ id: number;
21
+ /**
22
+ * Lists the linked three attributes used to make a skill check.
23
+ */
24
+ check: SkillCheck;
25
+ /**
26
+ * In some cases, the target's Spirit or Toughness is applied as a penalty.
27
+ */
28
+ check_penalty?: SkillCheckPenalty;
29
+ /**
30
+ * Measurable parameters of a spell.
31
+ */
32
+ parameters: FastPerformanceParameters;
33
+ /**
34
+ * The target category – the kind of creature or object – the skill affects.
35
+ */
36
+ target: TargetCategory.T;
37
+ /**
38
+ * The property's identifier.
39
+ * @integer
40
+ * @minimum 1
41
+ */
42
+ property_id: number;
43
+ /**
44
+ * The tradition(s) the spell is available for. It may be *generally*
45
+ * available to all traditions or it may be only familiar in specific
46
+ * traditions.
47
+ */
48
+ traditions: {
49
+ tag: "General";
50
+ } | {
51
+ tag: "Specific";
52
+ /**
53
+ * A list of specific traditions.
54
+ * @minItems 1
55
+ */
56
+ list: {
57
+ /**
58
+ * The magical tradition's identifier. If `is_placeholder` is `true`
59
+ * then this is the magical tradition's placeholder identifier
60
+ * instead.
61
+ * @integer
62
+ * @minimum 1
63
+ */
64
+ id: number;
65
+ /**
66
+ * If set to `true`, the tradition is not available as a special ability
67
+ * yet.
68
+ */
69
+ is_placeholder?: true;
70
+ }[];
71
+ };
72
+ /**
73
+ * States which column is used to improve the skill.
74
+ */
75
+ improvement_cost: ImprovementCost;
76
+ prerequisites?: GroupCollection.Spellwork;
77
+ src: PublicationRefs;
78
+ /**
79
+ * All translations for the entry, identified by IETF language tag (BCP47).
80
+ * @minProperties 1
81
+ */
82
+ translations: {
83
+ /**
84
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
85
+ */
86
+ [localeId: string]: {
87
+ /**
88
+ * The name of the spell.
89
+ * @minLength 1
90
+ */
91
+ name: string;
92
+ /**
93
+ * The effect description may be either a plain text or a text that is
94
+ * divided by a list of effects for each quality level. It may also be a
95
+ * list for each two quality levels.
96
+ */
97
+ effect: Effect.T;
98
+ /**
99
+ * @deprecated
100
+ */
101
+ casting_time: {
102
+ full: string;
103
+ abbr: string;
104
+ };
105
+ /**
106
+ * @deprecated
107
+ */
108
+ cost: {
109
+ full: string;
110
+ abbr: string;
111
+ };
112
+ /**
113
+ * @deprecated
114
+ */
115
+ range: {
116
+ full: string;
117
+ abbr: string;
118
+ };
119
+ /**
120
+ * @deprecated
121
+ */
122
+ duration: {
123
+ full: string;
124
+ abbr: string;
125
+ };
126
+ /**
127
+ * @deprecated
128
+ */
129
+ target: string;
130
+ errata?: Errata;
131
+ };
132
+ };
133
+ enhancements?: Enhancements;
134
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @main Spell
3
+ */
4
+ export {};
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @title Activatable Skill
3
3
  */
4
+ import { SlowSkillCastingTimeUnit } from "./SkillModificationLevel";
4
5
  /**
5
6
  *
6
7
  */
@@ -115,25 +116,39 @@ export declare namespace Effect {
115
116
  type QualityLevel5To6 = string;
116
117
  export {};
117
118
  }
118
- export declare type PerformanceParameters = {
119
+ export declare type FastPerformanceParameters = {
119
120
  tag: "OneTime";
120
- casting_time: CastingTime.T;
121
+ casting_time: CastingTime.Fast;
121
122
  cost: Cost.OneTime.T;
122
123
  range: Range.T;
123
124
  duration: Duration.OneTime.T;
124
125
  } | {
125
126
  tag: "Sustained";
126
- casting_time: CastingTime.T;
127
+ casting_time: CastingTime.Fast;
128
+ cost: Cost.Sustained.T;
129
+ range: Range.T;
130
+ duration?: Duration.Sustained.T;
131
+ };
132
+ export declare type SlowPerformanceParameters = {
133
+ tag: "OneTime";
134
+ casting_time: CastingTime.Slow;
135
+ cost: Cost.OneTime.T;
136
+ range: Range.T;
137
+ duration: Duration.OneTime.T;
138
+ } | {
139
+ tag: "Sustained";
140
+ casting_time: CastingTime.Slow;
127
141
  cost: Cost.Sustained.T;
128
142
  range: Range.T;
129
143
  duration?: Duration.Sustained.T;
130
144
  };
131
145
  export declare namespace CastingTime {
132
- type T = {
146
+ type T<NonModifiable extends FastSkillCastingTime | SlowSkillCastingTime> = {
133
147
  /**
134
148
  * The default casting time definition.
135
149
  */
136
150
  default: {
151
+ tag: "Modifiable";
137
152
  /**
138
153
  * The initial skill modification identifier/level.
139
154
  * @integer
@@ -141,12 +156,7 @@ export declare namespace CastingTime {
141
156
  * @maximum 6
142
157
  */
143
158
  initial_modification_level: number;
144
- /**
145
- * Is the casting time modifiable?
146
- * @default true
147
- */
148
- is_modifiable: boolean;
149
- };
159
+ } | NonModifiable;
150
160
  /**
151
161
  * The casting time during lovemaking. In Aventurian Intimacy, you may only
152
162
  * use an activatable skill during lovemaking if it has a casting time used
@@ -154,7 +164,7 @@ export declare namespace CastingTime {
154
164
  */
155
165
  during_lovemaking?: {
156
166
  /**
157
- * The (unitless) duration value.
167
+ * The (unitless) casting time value.
158
168
  * @integer
159
169
  * @minimum 1
160
170
  */
@@ -165,14 +175,31 @@ export declare namespace CastingTime {
165
175
  unit: CastingTimeDuringLovemakingUnit;
166
176
  };
167
177
  };
178
+ type FastSkillCastingTime = {
179
+ tag: "NonModifiable";
180
+ /**
181
+ * The casting time value in actions.
182
+ * @integer
183
+ * @minimum 1
184
+ */
185
+ value: number;
186
+ };
187
+ type SlowSkillCastingTime = {
188
+ tag: "NonModifiable";
189
+ /**
190
+ * The (unitless) casting time value.
191
+ * @integer
192
+ * @minimum 1
193
+ */
194
+ value: number;
195
+ unit: SlowSkillCastingTimeUnit;
196
+ };
197
+ type Fast = T<FastSkillCastingTime>;
198
+ type Slow = T<SlowSkillCastingTime>;
168
199
  enum CastingTimeDuringLovemakingUnit {
169
200
  SeductionActions = "SeductionActions",
170
201
  Rounds = "Rounds"
171
202
  }
172
- enum SlowSkillCastingTimeUnit {
173
- Minutes = "Minutes",
174
- Hours = "Hours"
175
- }
176
203
  }
177
204
  export declare namespace Cost {
178
205
  namespace OneTime {
@@ -8,11 +8,6 @@ export var CastingTime;
8
8
  CastingTimeDuringLovemakingUnit["SeductionActions"] = "SeductionActions";
9
9
  CastingTimeDuringLovemakingUnit["Rounds"] = "Rounds";
10
10
  })(CastingTimeDuringLovemakingUnit = CastingTime.CastingTimeDuringLovemakingUnit || (CastingTime.CastingTimeDuringLovemakingUnit = {}));
11
- let SlowSkillCastingTimeUnit;
12
- (function (SlowSkillCastingTimeUnit) {
13
- SlowSkillCastingTimeUnit["Minutes"] = "Minutes";
14
- SlowSkillCastingTimeUnit["Hours"] = "Hours";
15
- })(SlowSkillCastingTimeUnit = CastingTime.SlowSkillCastingTimeUnit || (CastingTime.SlowSkillCastingTimeUnit = {}));
16
11
  })(CastingTime || (CastingTime = {}));
17
12
  export var Range;
18
13
  (function (Range) {
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @title Enhancements
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ import { GroupCollection } from "./_Prerequisite";
7
+ /**
8
+ * A list of enhancements.
9
+ * @minItems 3
10
+ * @maxItems 5
11
+ */
12
+ export declare type Enhancements = Enhancement[];
13
+ /**
14
+ * @title Enhancement
15
+ */
16
+ export declare type Enhancement = {
17
+ /**
18
+ * The enhancement's identifier. An unique, increasing integer.
19
+ * @integer
20
+ * @minimum 1
21
+ */
22
+ id: number;
23
+ /**
24
+ * The skill rating required to learn this enhancement.
25
+ * @integer
26
+ * @minimum 8
27
+ * @maximum 16
28
+ * @mulitpleOf 2
29
+ */
30
+ skill_rating: number;
31
+ /**
32
+ * The value to multiply with the numeric representation of the associated
33
+ * skill's improvement cost to form the final AP cost of this enhancement.
34
+ * @integer
35
+ * @minimum 1
36
+ */
37
+ adventure_points_modifier: number;
38
+ prerequisites?: GroupCollection.Enhancement;
39
+ /**
40
+ * Only defined if different than the associated skill.
41
+ */
42
+ src?: PublicationRefs;
43
+ /**
44
+ * All translations for the entry, identified by IETF language tag (BCP47).
45
+ * @minProperties 1
46
+ */
47
+ translations: {
48
+ /**
49
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
50
+ */
51
+ [localeId: string]: {
52
+ /**
53
+ * The name of the enhancement.
54
+ * @minLength 1
55
+ */
56
+ name: string;
57
+ /**
58
+ * The effect description.
59
+ * @markdown
60
+ * @minLength 1
61
+ */
62
+ effect: string;
63
+ errata?: Errata;
64
+ };
65
+ };
66
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @title Enhancements
3
+ */
4
+ export {};
@@ -0,0 +1,80 @@
1
+ export declare namespace Identifier {
2
+ namespace Tagged {
3
+ type Attribute = {
4
+ tag: "Attribute";
5
+ /**
6
+ * The attribute's numeric identifier.
7
+ * @integer
8
+ * @minimum 1
9
+ * @maximum 8
10
+ */
11
+ value: number;
12
+ };
13
+ type Skill = {
14
+ tag: "Skill";
15
+ /**
16
+ * The skill's numeric identifier.
17
+ * @integer
18
+ * @minimum 1
19
+ */
20
+ value: number;
21
+ };
22
+ type CloseCombatTechnique = {
23
+ tag: "CloseCombatTechnique";
24
+ /**
25
+ * The close combat technique's numeric identifier.
26
+ * @integer
27
+ * @minimum 1
28
+ */
29
+ value: number;
30
+ };
31
+ type RangedCombatTechnique = {
32
+ tag: "RangedCombatTechnique";
33
+ /**
34
+ * The ranged combat technique's numeric identifier.
35
+ * @integer
36
+ * @minimum 1
37
+ */
38
+ value: number;
39
+ };
40
+ type Spell = {
41
+ tag: "Spell";
42
+ /**
43
+ * The spell's numeric identifier.
44
+ * @integer
45
+ * @minimum 1
46
+ */
47
+ value: number;
48
+ };
49
+ type Ritual = {
50
+ tag: "Ritual";
51
+ /**
52
+ * The ritual's numeric identifier.
53
+ * @integer
54
+ * @minimum 1
55
+ */
56
+ value: number;
57
+ };
58
+ type LiturgicalChant = {
59
+ tag: "LiturgicalChant";
60
+ /**
61
+ * The liturgical chant's numeric identifier.
62
+ * @integer
63
+ * @minimum 1
64
+ */
65
+ value: number;
66
+ };
67
+ type Ceremony = {
68
+ tag: "Ceremony";
69
+ /**
70
+ * The ceremony's numeric identifier.
71
+ * @integer
72
+ * @minimum 1
73
+ */
74
+ value: number;
75
+ };
76
+ }
77
+ namespace Group {
78
+ type Rated = Tagged.Attribute | Tagged.Skill | Tagged.CloseCombatTechnique | Tagged.RangedCombatTechnique | Tagged.Spell | Tagged.Ritual | Tagged.LiturgicalChant | Tagged.Ceremony;
79
+ }
80
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @title Prerequisites
3
3
  */
4
+ import { Identifier } from "./_Identifier";
4
5
  import { BinarySex } from "./_Sex";
5
6
  /**
6
7
  * @title Single Prerequisites
@@ -202,7 +203,7 @@ export declare namespace Single {
202
203
  type T = {
203
204
  tag: "Influence";
204
205
  /**
205
- * The influence' identifier.
206
+ * The influence's identifier.
206
207
  * @integer
207
208
  * @minimum 1
208
209
  */
@@ -214,6 +215,82 @@ export declare namespace Single {
214
215
  display_option?: DisplayOption.T;
215
216
  };
216
217
  }
218
+ namespace Rated {
219
+ /**
220
+ * @title Rated Prerequisite
221
+ */
222
+ type T = {
223
+ tag: "Rated";
224
+ /**
225
+ * The rated entry's identifier.
226
+ * @integer
227
+ * @minimum 1
228
+ */
229
+ id: Identifier.Group.Rated;
230
+ /**
231
+ * The required minimum value.
232
+ * @integer
233
+ * @minimum 0
234
+ */
235
+ value: number;
236
+ display_option?: DisplayOption.T;
237
+ };
238
+ }
239
+ namespace Enhancement {
240
+ /**
241
+ * Requires a specific enhancement from a skill.
242
+ * @title Enhancement Prerequisite
243
+ */
244
+ type T = {
245
+ tag: "Enhancement";
246
+ /**
247
+ * The required skill's identifier.
248
+ */
249
+ skill: {
250
+ tag: SkillCategoryWithEnhancements;
251
+ /**
252
+ * The skill's identifier.
253
+ * @integer
254
+ * @minimum 1
255
+ */
256
+ id: number;
257
+ };
258
+ /**
259
+ * The required enhancement's identifier.
260
+ */
261
+ enhancement: {
262
+ /**
263
+ * The enhancement's identifier.
264
+ * @integer
265
+ * @minimum 1
266
+ */
267
+ id: number;
268
+ };
269
+ display_option?: DisplayOption.T;
270
+ };
271
+ enum SkillCategoryWithEnhancements {
272
+ Spell = "Spell",
273
+ Ritual = "Ritual",
274
+ LiturgicalChant = "LiturgicalChant",
275
+ Ceremony = "Ceremony"
276
+ }
277
+ }
278
+ namespace EnhancementInternal {
279
+ /**
280
+ * Requires a specific enhancement from a skill. This can only be used by an
281
+ * enhancement to require another enhancement from the same skill.
282
+ * @title Internal Enhancement Prerequisite
283
+ */
284
+ type T = {
285
+ tag: "EnhancementInternal";
286
+ /**
287
+ * The enhancement's identifier.
288
+ * @integer
289
+ * @minimum 1
290
+ */
291
+ id: number;
292
+ };
293
+ }
217
294
  }
218
295
  /**
219
296
  * @title Grouped Prerequisites
@@ -222,7 +299,10 @@ declare namespace Group {
222
299
  type DerivedCharacteristic = Single.Rule.T;
223
300
  type Publication = Single.Publication.T;
224
301
  type ArcaneTradition = Single.Sex.T | Single.Culture.T;
302
+ type Spellwork = Single.Rule.T | Single.Rated.T;
303
+ type Liturgy = Single.Rule.T;
225
304
  type GeodeRitual = Single.Influence.T;
305
+ type Enhancement = Single.EnhancementInternal.T;
226
306
  }
227
307
  /**
228
308
  * @title Prerequisite Collection Types
@@ -266,9 +346,21 @@ export declare namespace GroupCollection {
266
346
  * @title Arcane Tradition Prerequisites
267
347
  */
268
348
  type ArcaneTradition = Collection.Plain<Group.ArcaneTradition>;
349
+ /**
350
+ * @title Spellwork Prerequisites
351
+ */
352
+ type Spellwork = Collection.Plain<Group.Spellwork>;
353
+ /**
354
+ * @title Liturgy Prerequisites
355
+ */
356
+ type Liturgy = Collection.Plain<Group.Liturgy>;
269
357
  /**
270
358
  * @title Geode Ritual Prerequisites
271
359
  */
272
360
  type GeodeRitual = Collection.Plain<Group.GeodeRitual>;
361
+ /**
362
+ * @title Enhancement Prerequisites
363
+ */
364
+ type Enhancement = Collection.Plain<Group.Enhancement>;
273
365
  }
274
366
  export {};