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,80 @@
1
+ /**
2
+ * @main CloseCombatTechnique
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ import { ImprovementCost } from "./_ImprovementCost";
7
+ /**
8
+ * @title Close Combat Technique
9
+ */
10
+ export declare type CloseCombatTechnique = {
11
+ /**
12
+ * The close combat technique's identifier. An unique, increasing integer.
13
+ * @integer
14
+ * @minimum 1
15
+ */
16
+ id: number;
17
+ /**
18
+ * Special rules for the combat technique that apply to all weapons in this
19
+ * category.
20
+ */
21
+ special: {
22
+ /**
23
+ * Is parrying possible with this combat technique?
24
+ */
25
+ parrying: Parrying;
26
+ };
27
+ /**
28
+ * The primary attribute(s).
29
+ * @minItems 1
30
+ * @maxItems 2
31
+ * @uniqueItems
32
+ */
33
+ primary_attribute: PrimaryAttribute[];
34
+ /**
35
+ * The *Breaking Point Rating* of the respective combat technique.
36
+ * @integer
37
+ * @minimum 1
38
+ */
39
+ breaking_point_rating: number;
40
+ improvement_cost: ImprovementCost;
41
+ src: PublicationRefs;
42
+ /**
43
+ * All translations for the entry, identified by IETF language tag (BCP47).
44
+ * @minProperties 1
45
+ */
46
+ translations: {
47
+ /**
48
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
49
+ */
50
+ [localeId: string]: {
51
+ /**
52
+ * The name of the condition.
53
+ * @minLength 1
54
+ */
55
+ name: string;
56
+ /**
57
+ * Additional rules for the condition, if applicable.
58
+ * @markdown
59
+ * @minLength 1
60
+ */
61
+ special?: string;
62
+ errata?: Errata;
63
+ };
64
+ };
65
+ };
66
+ /**
67
+ * Is parrying possible with this combat technique?
68
+ */
69
+ declare type Parrying = {
70
+ tag: "Possible";
71
+ } | {
72
+ tag: "Impossible";
73
+ };
74
+ /**
75
+ * The attribute's identifier.
76
+ * @integer
77
+ * @minimum 1
78
+ */
79
+ declare type PrimaryAttribute = number;
80
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @main CloseCombatTechnique
3
+ */
4
+ export {};
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @main RangedCombatTechnique
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ import { ImprovementCost } from "./_ImprovementCost";
7
+ /**
8
+ * @title Ranged Combat Technique
9
+ */
10
+ export declare type RangedCombatTechnique = {
11
+ /**
12
+ * The ranged combat technique's identifier. An unique, increasing integer.
13
+ * @integer
14
+ * @minimum 1
15
+ */
16
+ id: number;
17
+ /**
18
+ * The primary attribute(s).
19
+ * @minItems 1
20
+ * @maxItems 2
21
+ * @uniqueItems
22
+ */
23
+ primary_attribute: PrimaryAttribute[];
24
+ /**
25
+ * The *Breaking Point Rating* of the respective combat technique.
26
+ * @integer
27
+ * @minimum 1
28
+ */
29
+ breaking_point_rating: number;
30
+ improvement_cost: ImprovementCost;
31
+ src: PublicationRefs;
32
+ /**
33
+ * All translations for the entry, identified by IETF language tag (BCP47).
34
+ * @minProperties 1
35
+ */
36
+ translations: {
37
+ /**
38
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
39
+ */
40
+ [localeId: string]: {
41
+ /**
42
+ * The name of the condition.
43
+ * @minLength 1
44
+ */
45
+ name: string;
46
+ /**
47
+ * Additional rules for the condition, if applicable.
48
+ * @markdown
49
+ * @minLength 1
50
+ */
51
+ special?: string;
52
+ errata?: Errata;
53
+ };
54
+ };
55
+ };
56
+ /**
57
+ * The attribute's identifier.
58
+ * @integer
59
+ * @minimum 1
60
+ */
61
+ declare type PrimaryAttribute = number;
62
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @main RangedCombatTechnique
3
+ */
4
+ export {};
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @main Condition
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ /**
7
+ * @title Condition
8
+ */
9
+ export declare type Condition = {
10
+ /**
11
+ * The condition's identifier. An unique, increasing integer.
12
+ * @integer
13
+ * @minimum 1
14
+ */
15
+ id: number;
16
+ src: PublicationRefs;
17
+ /**
18
+ * All translations for the entry, identified by IETF language tag (BCP47).
19
+ * @minProperties 1
20
+ */
21
+ translations: {
22
+ /**
23
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
24
+ */
25
+ [localeId: string]: {
26
+ /**
27
+ * The condition's name.
28
+ * @minLength 1
29
+ */
30
+ name: string;
31
+ /**
32
+ * Additional rules for the condition, if applicable.
33
+ * @markdown
34
+ * @minLength 1
35
+ */
36
+ rules?: string;
37
+ /**
38
+ * The effects for level 1 to 4.
39
+ */
40
+ effects: [Effect, Effect, Effect, Effect];
41
+ errata?: Errata;
42
+ };
43
+ };
44
+ };
45
+ /**
46
+ * The effect on a level.
47
+ * @markdown
48
+ * @minLength 1
49
+ */
50
+ declare type Effect = string;
51
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @main Condition
3
+ */
4
+ export {};
@@ -0,0 +1,494 @@
1
+ /**
2
+ * @main Culture
3
+ */
4
+ import { Errata } from "./source/_Erratum";
5
+ import { PublicationRefs } from "./source/_PublicationRef";
6
+ import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage";
7
+ import { BinarySex } from "./_Sex";
8
+ /**
9
+ * @title Culture
10
+ */
11
+ export declare type Culture = {
12
+ /**
13
+ * An unique, increasing integer.
14
+ * @integer
15
+ * @minimum 1
16
+ */
17
+ id: number;
18
+ /**
19
+ * A list of native languages (usually it is only one).
20
+ * @minItems 1
21
+ */
22
+ language: Language[];
23
+ /**
24
+ * A list of native scripts (usually it is only one). If the culture does not
25
+ * use any script, leave this field empty.
26
+ * @minItems 1
27
+ */
28
+ script?: Script[];
29
+ /**
30
+ * If the area knowledge has a fixed value or can be adjusted.
31
+ */
32
+ area_knowledge: AreaKnowledge;
33
+ /**
34
+ * A list of possible social status in the respective culture.
35
+ * @minItems 1
36
+ */
37
+ social_status: SocialStatus[];
38
+ /**
39
+ * A list of professions that are typical for the culture, as well as
40
+ * professions that are rarely practiced or encountered in the culture. The
41
+ * list is either defined by group (as multiple lists) or plain (as a single
42
+ * list).
43
+ */
44
+ common_professions: CommonProfessions.Config;
45
+ /**
46
+ * A list of common advantages.
47
+ * @minItems 1
48
+ */
49
+ common_advantages?: CommonnessRatedAdvantageDisadvantage[];
50
+ /**
51
+ * A list of common disadvantages.
52
+ * @minItems 1
53
+ */
54
+ common_disadvantages?: CommonnessRatedAdvantageDisadvantage[];
55
+ /**
56
+ * A list of uncommon advantages.
57
+ * @minItems 1
58
+ */
59
+ uncommon_advantages?: CommonnessRatedAdvantageDisadvantage[];
60
+ /**
61
+ * A list of uncommon disadvantages.
62
+ * @minItems 1
63
+ */
64
+ uncommon_disadvantages?: CommonnessRatedAdvantageDisadvantage[];
65
+ /**
66
+ * A list of common skills.
67
+ * @minItems 1
68
+ */
69
+ common_skills: CommonnessRatedSkill[];
70
+ /**
71
+ * A list of uncommon skills.
72
+ * @minItems 1
73
+ */
74
+ uncommon_skills?: CommonnessRatedSkill[];
75
+ /**
76
+ * The skill points you get for buying the culture package.
77
+ * @minItems 1
78
+ */
79
+ cultural_package: CulturalPackageItem[];
80
+ src: PublicationRefs;
81
+ /**
82
+ * All translations for the entry, identified by IETF language tag (BCP47).
83
+ * @minProperties 1
84
+ */
85
+ translations: {
86
+ /**
87
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
88
+ */
89
+ [localeId: string]: Translation;
90
+ };
91
+ };
92
+ declare type Language = {
93
+ /**
94
+ * The language's identifier.
95
+ * @integer
96
+ * @minimum 1
97
+ */
98
+ id: number;
99
+ };
100
+ declare type Script = {
101
+ /**
102
+ * The script's identifier.
103
+ * @integer
104
+ * @minimum 1
105
+ */
106
+ id: number;
107
+ };
108
+ /**
109
+ * If the area knowledge has a fixed value or can be adjusted.
110
+ */
111
+ declare type AreaKnowledge = {
112
+ tag: "Fixed";
113
+ } | {
114
+ tag: "Adjustable";
115
+ };
116
+ declare type SocialStatus = {
117
+ /**
118
+ * The social status's identifier.
119
+ * @integer
120
+ * @minimum 1
121
+ */
122
+ id: number;
123
+ };
124
+ /**
125
+ * @title Common Professions
126
+ */
127
+ declare namespace CommonProfessions {
128
+ type Profession = {
129
+ /**
130
+ * The profession's identifier.
131
+ * @integer
132
+ * @minimum 1
133
+ */
134
+ id: number;
135
+ };
136
+ type ProfessionVariant = {
137
+ /**
138
+ * The profession variant's identifier.
139
+ * @integer
140
+ * @minimum 1
141
+ */
142
+ id: number;
143
+ };
144
+ namespace Plain {
145
+ type Constraint = {
146
+ tag: "Profession";
147
+ /**
148
+ * The profession's identifier.
149
+ * @integer
150
+ * @minimum 1
151
+ */
152
+ id: number;
153
+ };
154
+ /**
155
+ * A plain list of professions.
156
+ */
157
+ type T = {
158
+ tag: "Plain";
159
+ /**
160
+ * The list of professions.
161
+ * @minItems 1
162
+ */
163
+ constraints: Constraint[];
164
+ };
165
+ }
166
+ namespace Grouped {
167
+ namespace Constraints {
168
+ /**
169
+ * Some profession variants are more common than others. There may be
170
+ * cultures where some variants are not represented at all.
171
+ */
172
+ type WeightedVariants = {
173
+ /**
174
+ * The list of more common variants.
175
+ * @minItems 1
176
+ */
177
+ variants: ProfessionVariant[];
178
+ /**
179
+ * The "weight" difference compared to other variants. Some variants are
180
+ * simply more common (Mostly), but sometimes only specific variants are
181
+ * used (Only).
182
+ */
183
+ weight: Weight;
184
+ };
185
+ type Profession = {
186
+ tag: "Profession";
187
+ /**
188
+ * The profession's identifier.
189
+ * @integer
190
+ * @minimum 1
191
+ */
192
+ id: number;
193
+ /**
194
+ * Some profession variants are more common than others. There may be
195
+ * cultures where some variants are not represented at all.
196
+ */
197
+ weighted_variants?: WeightedVariants;
198
+ /**
199
+ * Some professions may be found in a culture, but are not that
200
+ * common.
201
+ */
202
+ rarity?: Rarity;
203
+ };
204
+ }
205
+ /**
206
+ * The "weight" difference compared to other variants. Some variants are
207
+ * simply more common (Mostly), but sometimes only specific variants are
208
+ * used (Only).
209
+ */
210
+ type Weight = {
211
+ tag: "Mostly";
212
+ } | {
213
+ tag: "Only";
214
+ };
215
+ /**
216
+ * Some professions may be found in a culture, but are not that common.
217
+ */
218
+ type Rarity = {
219
+ tag: "Rare";
220
+ } | {
221
+ tag: "VeryRare";
222
+ };
223
+ namespace Mundane {
224
+ /**
225
+ * Some professions may be found in a culture, but are not that common.
226
+ */
227
+ type ProfessionSubgroup = {
228
+ tag: "Profane";
229
+ } | {
230
+ tag: "Fighter";
231
+ } | {
232
+ tag: "Religious";
233
+ };
234
+ type Constraint = Constraints.Profession | {
235
+ tag: "ProfessionSubgroup";
236
+ subgroup: ProfessionSubgroup;
237
+ };
238
+ /**
239
+ * This defines how the list of constraints should be offset against the
240
+ * list of all mundane professions: Either only the professions are kept
241
+ * that intersect with the constraints (include) or only the professions
242
+ * are kept that are different from the constraints (exclude).
243
+ */
244
+ type Operation = {
245
+ tag: "Intersection";
246
+ } | {
247
+ tag: "Difference";
248
+ };
249
+ /**
250
+ * A list of professions. The filter specifies how the list is applied to
251
+ * all mundane professions.
252
+ */
253
+ type T = {
254
+ /**
255
+ * The list of professions.
256
+ * @minItems 1
257
+ */
258
+ constraints: Constraint[];
259
+ /**
260
+ * This defines how the list of constraints should be offset against the
261
+ * list of all mundane professions: Either only the professions are kept
262
+ * that intersect with the constraints (include) or only the professions
263
+ * are kept that are different from the constraints (exclude).
264
+ */
265
+ operation: Operation;
266
+ };
267
+ }
268
+ namespace Magic {
269
+ /**
270
+ * Some professions are more common than others. There may be cultures
271
+ * where some professions are not represented at all.
272
+ */
273
+ type WeightedProfessions = {
274
+ /**
275
+ * The list of more common variants.
276
+ * @minItems 1
277
+ */
278
+ professions: Profession[];
279
+ /**
280
+ * The "weight" difference compared to other professions. Some
281
+ * professions are simply more common (Mostly), but sometimes only
282
+ * specific professions are used (Only).
283
+ */
284
+ weight: Weight;
285
+ };
286
+ type Constraint = {
287
+ tag: "Tradition";
288
+ /**
289
+ * The magical tradition's identifier.
290
+ * @integer
291
+ * @minimum 1
292
+ */
293
+ id: number;
294
+ /**
295
+ * Some professions are more common than others. There may be cultures
296
+ * where some professions are not represented at all.
297
+ */
298
+ weighted_professions?: WeightedProfessions;
299
+ /**
300
+ * Some traditions may be found in a culture, but are not that common.
301
+ */
302
+ rarity?: Rarity;
303
+ } | {
304
+ tag: "MagicDilettante";
305
+ } | Constraints.Profession;
306
+ type T = {
307
+ /**
308
+ * The list of professions.
309
+ * @minItems 1
310
+ */
311
+ constraints: Constraint[];
312
+ };
313
+ }
314
+ namespace Blessed {
315
+ type Constraint = {
316
+ tag: "Tradition";
317
+ /**
318
+ * The blessed tradition's identifier.
319
+ * @integer
320
+ * @minimum 1
321
+ */
322
+ id: number;
323
+ /**
324
+ * Some traditions may be found in a culture, but are not that common.
325
+ */
326
+ rarity?: Rarity;
327
+ };
328
+ type T = {
329
+ /**
330
+ * The list of professions.
331
+ * @minItems 1
332
+ */
333
+ constraints: Constraint[];
334
+ };
335
+ }
336
+ /**
337
+ * Lists of professions by group.
338
+ * @minProperties 2
339
+ */
340
+ type T = {
341
+ tag: "Grouped";
342
+ /**
343
+ * A list of professions. The filter specifies how the list is applied to
344
+ * all mundane professions.
345
+ */
346
+ mundane?: Mundane.T;
347
+ magic?: Magic.T;
348
+ blessed?: Blessed.T;
349
+ };
350
+ }
351
+ /**
352
+ * A list of professions that are typical for the culture, as well as
353
+ * professions that are rarely practiced or encountered in the culture. The
354
+ * list is either defined by group (as multiple lists) or plain (as a single
355
+ * list).
356
+ */
357
+ type Config = Plain.T | Grouped.T;
358
+ }
359
+ declare type CommonnessRatedSkill = {
360
+ /**
361
+ * The skill's identifier.
362
+ * @integer
363
+ * @minimum 1
364
+ */
365
+ id: number;
366
+ };
367
+ declare type CulturalPackageItem = {
368
+ /**
369
+ * The skill's identifier.
370
+ * @integer
371
+ * @minimum 1
372
+ */
373
+ id: number;
374
+ /**
375
+ * The skill points for the respective skill you get for buying the cultural
376
+ * package.
377
+ * @integer
378
+ * @minimum 1
379
+ * @maximum 2
380
+ */
381
+ points: number;
382
+ };
383
+ declare type Translation = {
384
+ /**
385
+ * The name of the state.
386
+ * @minLength 1
387
+ */
388
+ name: string;
389
+ /**
390
+ * The description of the area knowledge.
391
+ */
392
+ area_knowledge: AreaKnowledgeTranslation;
393
+ /**
394
+ * The respective common advantages text from the source book.
395
+ * @minLength 1
396
+ */
397
+ common_advantages?: string;
398
+ /**
399
+ * The respective common disadvantages text from the source book.
400
+ * @minLength 1
401
+ */
402
+ common_disadvantages?: string;
403
+ /**
404
+ * The respective uncommon advantages text from the source book.
405
+ * @minLength 1
406
+ */
407
+ uncommon_advantages?: string;
408
+ /**
409
+ * The respective uncommon disadvantages text from the source book.
410
+ * @minLength 1
411
+ */
412
+ uncommon_disadvantages?: string;
413
+ /**
414
+ * Structured description of common names.
415
+ */
416
+ common_names: CommonNames;
417
+ errata?: Errata;
418
+ };
419
+ /**
420
+ * Description and examples of the area knowledge.
421
+ */
422
+ declare type AreaKnowledgeTranslation = {
423
+ /**
424
+ * The full description without examples in parenthesis.
425
+ * @minLength 1
426
+ */
427
+ description: string;
428
+ /**
429
+ * A shorter version of the description, used in input fields and other UI
430
+ * elements where the space might be to small to use the full description.
431
+ * @minLength 1
432
+ */
433
+ abbreviated: string;
434
+ /**
435
+ * Examples of areas, if applicable.
436
+ * @minItems 1
437
+ */
438
+ examples?: AreaKnowledgeExample[];
439
+ };
440
+ /**
441
+ * @minLength 1
442
+ */
443
+ declare type AreaKnowledgeExample = string;
444
+ /**
445
+ * Structured description of common names.
446
+ * @minProperties 1
447
+ */
448
+ declare type CommonNames = {
449
+ /**
450
+ * First names can be gender-neutral, but they can also be for a specific
451
+ * binary sex. They are sorted into groups.
452
+ * @minItems 1
453
+ */
454
+ first_name_groups?: NameGroup[];
455
+ /**
456
+ * Last names can be gender-neutral, like family names, but they can also be
457
+ * for a specific binary sex. They are sorted into groups.
458
+ * @minItems 1
459
+ */
460
+ last_name_groups?: NameGroup[];
461
+ /**
462
+ * Special naming rules.
463
+ * @minLength 1
464
+ */
465
+ naming_rules?: string;
466
+ };
467
+ declare type NameGroup = {
468
+ /**
469
+ * The group label.
470
+ * @minLength 1
471
+ */
472
+ label: string;
473
+ /**
474
+ * The binary sex if the group is only for a certain binary sex.
475
+ */
476
+ sex: BinarySex;
477
+ /**
478
+ * The names from the group.
479
+ * @minItems 1
480
+ */
481
+ names: Name[];
482
+ };
483
+ declare type Name = {
484
+ /**
485
+ * @minLength 1
486
+ */
487
+ name: string;
488
+ /**
489
+ * Additional information about the name, appended in parenthesis.
490
+ * @minLength 1
491
+ */
492
+ note?: string;
493
+ };
494
+ export {};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @main Culture
3
+ */
4
+ export {};