@optolith/database-schema 0.99.0 → 0.100.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 (36) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/gen/types.d.ts +541 -113
  3. package/lib/main.js +1 -0
  4. package/lib/types/Locale.d.ts +3 -0
  5. package/lib/types/Locale.js +3 -0
  6. package/lib/types/Profession.d.ts +21 -0
  7. package/lib/types/Profession.js +20 -0
  8. package/lib/types/_ActivatableAdvanced.d.ts +28 -0
  9. package/lib/types/_ActivatableAdvanced.js +57 -1
  10. package/lib/types/_ActivatableCombat.d.ts +43 -39
  11. package/lib/types/_ActivatableCombat.js +66 -72
  12. package/lib/types/_Identifier.d.ts +1 -0
  13. package/lib/types/_Identifier.js +2 -0
  14. package/lib/types/_IdentifierGroup.d.ts +1 -0
  15. package/lib/types/_IdentifierGroup.js +2 -1
  16. package/lib/types/equipment/EquipmentPackage.d.ts +1 -0
  17. package/lib/types/equipment/item/ItemComponent.d.ts +127 -0
  18. package/lib/types/equipment/item/ItemComponent.js +313 -0
  19. package/lib/types/index.d.ts +1 -0
  20. package/lib/types/index.js +1 -0
  21. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +61 -5
  22. package/lib/types/prerequisites/PrerequisiteGroups.js +4 -1
  23. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +2 -2
  24. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.d.ts +150 -0
  25. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.js +53 -0
  26. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +40 -39
  27. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +40 -39
  28. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +40 -39
  29. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +68 -39
  30. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +40 -39
  31. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +28 -0
  32. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +28 -0
  33. package/lib/types/specialAbility/MagicalTradition.d.ts +1 -0
  34. package/lib/types/specialAbility/MagicalTradition.js +5 -1
  35. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +28 -0
  36. package/package.json +1 -1
@@ -0,0 +1,127 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const ItemComponent: DB.Entity<"ItemComponent", {
3
+ options: DB.MemberDecl<DB.ChildEntities<DB.Entity<"ItemComponentOption", {
4
+ parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
5
+ cost: DB.MemberDecl<DB.Float, true>;
6
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentOptionTranslation", {
7
+ label: DB.MemberDecl<DB.String, true>;
8
+ }>, true>;
9
+ }, "parent">>, true>;
10
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ItemComponentCost", {
11
+ Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
12
+ value: DB.MemberDecl<DB.Float, true>;
13
+ translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
14
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
15
+ }>, false>;
16
+ }>, []>>>;
17
+ ByCombatTechnique: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentCostByCombatTechnique", DB.Object<{
18
+ close: DB.MemberDecl<DB.NestedEntityMap<string, {
19
+ value: DB.MemberDecl<DB.Float, true>;
20
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentCostByCloseCombatTechniqueTranslation", {
21
+ label: DB.MemberDecl<DB.String, true>;
22
+ }>, false>;
23
+ }>, false>;
24
+ ranged: DB.MemberDecl<DB.NestedEntityMap<string, {
25
+ value: DB.MemberDecl<DB.Float, true>;
26
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentCostByRangedCombatTechniqueTranslation", {
27
+ label: DB.MemberDecl<DB.String, true>;
28
+ }>, false>;
29
+ }>, false>;
30
+ }>, []>>>;
31
+ Factor: DB.EnumCase<DB.Float>;
32
+ DerivedFromOption: DB.EnumCase<null>;
33
+ }, []>>, true>;
34
+ applicableItems: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableItems", {
35
+ MeleeWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableMeleeWeapons", DB.Object<{
36
+ weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
37
+ combatTechniques: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
38
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableMeleeWeaponCategory", {
39
+ HasMetalSurface: DB.EnumCase<null>;
40
+ HasMetalBladeOrTip: DB.EnumCase<null>;
41
+ }, []>>, false>;
42
+ }>, []>>>;
43
+ RangedWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableRangedWeapons", DB.Object<{
44
+ weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
45
+ combatTechniques: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
46
+ minimumReloadTime: DB.MemberDecl<DB.Integer, false>;
47
+ usesBullets: DB.MemberDecl<DB.Boolean, false>;
48
+ }>, []>>>;
49
+ Ammunition: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableAmmunition", DB.Object<{
50
+ ammunition: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
51
+ invertAmmunition: DB.MemberDecl<DB.Boolean, false>;
52
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableAmmunitionCategory", {
53
+ ArrowOrBolt: DB.EnumCase<null>;
54
+ }, []>>, false>;
55
+ }>, []>>>;
56
+ Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableArmor", DB.Object<{
57
+ armor: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
58
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableArmorCategory", {
59
+ Metal: DB.EnumCase<null>;
60
+ }, []>>, false>;
61
+ }>, []>>>;
62
+ }, []>>, true>;
63
+ incompatibleWith: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
64
+ rules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentRules", DB.Object<{
65
+ baseItemModifications: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentBaseItemModifications", DB.Object<{
66
+ damagePoints: DB.MemberDecl<DB.Integer, false>;
67
+ attackModifier: DB.MemberDecl<DB.Integer, false>;
68
+ parryModifier: DB.MemberDecl<DB.Integer, false>;
69
+ protection: DB.MemberDecl<DB.Integer, false>;
70
+ encumbrance: DB.MemberDecl<DB.Integer, false>;
71
+ range: DB.MemberDecl<DB.Integer, false>;
72
+ reloadTime: DB.MemberDecl<DB.Integer, false>;
73
+ weight: DB.MemberDecl<DB.Float, false>;
74
+ breakingPointRating: DB.MemberDecl<DB.Integer, false>;
75
+ }>, []>>, false>;
76
+ }>, []>>, false>;
77
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
78
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
79
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
80
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
81
+ printing: DB.MemberDecl<DB.Integer, false>;
82
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
83
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
84
+ InsideCoverFront: DB.EnumCase<null>;
85
+ InsideCoverBack: DB.EnumCase<null>;
86
+ Numbered: DB.EnumCase<DB.Integer>;
87
+ }, []>>, true>;
88
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
89
+ InsideCoverFront: DB.EnumCase<null>;
90
+ InsideCoverBack: DB.EnumCase<null>;
91
+ Numbered: DB.EnumCase<DB.Integer>;
92
+ }, []>>, false>;
93
+ }>, []>>>, true>;
94
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
95
+ }>, []>>, true>;
96
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
97
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
98
+ printing: DB.MemberDecl<DB.Integer, true>;
99
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
100
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
101
+ InsideCoverFront: DB.EnumCase<null>;
102
+ InsideCoverBack: DB.EnumCase<null>;
103
+ Numbered: DB.EnumCase<DB.Integer>;
104
+ }, []>>, true>;
105
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
106
+ InsideCoverFront: DB.EnumCase<null>;
107
+ InsideCoverBack: DB.EnumCase<null>;
108
+ Numbered: DB.EnumCase<DB.Integer>;
109
+ }, []>>, false>;
110
+ }>, []>>>, true>;
111
+ }>, []>>>;
112
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
113
+ printing: DB.MemberDecl<DB.Integer, true>;
114
+ }>, []>>>;
115
+ }, []>>>, false>;
116
+ }>, true>;
117
+ }>, []>>>, []>>, true>;
118
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentTranslation", {
119
+ name: DB.MemberDecl<DB.String, true>;
120
+ rules: DB.MemberDecl<DB.String, false>;
121
+ applicableItems: DB.MemberDecl<DB.String, false>;
122
+ errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
123
+ date: DB.MemberDecl<DB.Date, true>;
124
+ description: DB.MemberDecl<DB.String, true>;
125
+ }>, []>>>, []>>, false>;
126
+ }>, true>;
127
+ }, undefined>;
@@ -0,0 +1,313 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { AmmunitionIdentifier, ArmorIdentifier, CloseCombatTechniqueIdentifier, ItemComponentIdentifier, RangedCombatTechniqueIdentifier, WeaponIdentifier, } from "../../_Identifier.js";
3
+ import { CloseCombatTechnique, RangedCombatTechnique } from "../../CombatTechnique.js";
4
+ import { NestedTranslationMap } from "../../Locale.js";
5
+ import { Errata } from "../../source/_Erratum.js";
6
+ import { src } from "../../source/_PublicationRef.js";
7
+ import { FixedCost } from "./_Item.js";
8
+ export const ItemComponent = DB.Entity(import.meta.url, {
9
+ name: "ItemComponent",
10
+ namePlural: "ItemComponents",
11
+ type: () => DB.Object({
12
+ options: DB.Required({
13
+ type: DB.ChildEntities(ItemComponentOption),
14
+ }),
15
+ cost: DB.Required({
16
+ comment: ItemComponentCost.comment,
17
+ type: DB.IncludeIdentifier(ItemComponentCost),
18
+ }),
19
+ applicableItems: DB.Required({
20
+ comment: "The items the component can be applied to.",
21
+ type: DB.IncludeIdentifier(ApplicableItems),
22
+ }),
23
+ incompatibleWith: DB.Optional({
24
+ comment: "Other components this component is not compatible with.",
25
+ type: DB.Array(ItemComponentIdentifier(), {
26
+ minItems: 1,
27
+ uniqueItems: true,
28
+ }),
29
+ }),
30
+ rules: DB.Optional({
31
+ comment: "Special rules for the item component.",
32
+ type: DB.IncludeIdentifier(ItemComponentRules),
33
+ }),
34
+ src,
35
+ translations: NestedTranslationMap(DB.Required, "ItemComponent", DB.Object({
36
+ name: DB.Required({
37
+ comment: "The item’s name.",
38
+ type: DB.String({ minLength: 1 }),
39
+ }),
40
+ rules: DB.Optional({
41
+ comment: "Special rules text.",
42
+ type: DB.String({ minLength: 1, markdown: "block" }),
43
+ }),
44
+ applicableItems: DB.Optional({
45
+ comment: "The items the component can be applied to. Used if the generated text is not sufficient.",
46
+ type: DB.String({ minLength: 1, markdown: "inline" }),
47
+ }),
48
+ errata: DB.Optional({
49
+ type: DB.IncludeIdentifier(Errata),
50
+ }),
51
+ })),
52
+ }),
53
+ instanceDisplayName: {},
54
+ uniqueConstraints: [
55
+ {
56
+ entityMapKeyPath: "translations",
57
+ keyPathInEntityMap: "name",
58
+ },
59
+ ],
60
+ });
61
+ const ItemComponentOption = DB.Entity(import.meta.url, {
62
+ name: "ItemComponentOption",
63
+ namePlural: "ItemComponentOptions",
64
+ type: () => DB.Object({
65
+ parent: DB.Required({
66
+ comment: "The item component this option belongs to.",
67
+ type: ItemComponentIdentifier(),
68
+ }),
69
+ cost: DB.Required({
70
+ comment: "The cost in silverthalers.",
71
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
72
+ }),
73
+ translations: NestedTranslationMap(DB.Required, "ItemComponentOption", DB.Object({
74
+ label: DB.Required({
75
+ comment: "The label for the option.",
76
+ type: DB.String({ minLength: 1 }),
77
+ }),
78
+ })),
79
+ }),
80
+ instanceDisplayName: { pathInLocaleMap: "label" },
81
+ parentReferenceKey: "parent",
82
+ });
83
+ const ItemComponentCost = DB.Enum(import.meta.url, {
84
+ name: "ItemComponentCost",
85
+ comment: "The cost in silverthalers.",
86
+ values: () => ({
87
+ Fixed: DB.EnumCase({
88
+ comment: "The cost is a fixed amount of silverthalers.",
89
+ type: DB.IncludeIdentifier(FixedCost),
90
+ }),
91
+ ByCombatTechnique: DB.EnumCase({
92
+ comment: "The cost depends on the combat technique of the item it is applied to.",
93
+ type: DB.IncludeIdentifier(ItemComponentCostByCombatTechnique),
94
+ }),
95
+ Factor: DB.EnumCase({
96
+ comment: "The cost is a percentage of the cost of the item it is applied to.",
97
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
98
+ }),
99
+ DerivedFromOption: DB.EnumCase({
100
+ comment: "The cost depends on the selected option.",
101
+ type: null,
102
+ }),
103
+ }),
104
+ });
105
+ const ItemComponentCostByCombatTechnique = DB.TypeAlias(import.meta.url, {
106
+ name: "ItemComponentCostByCombatTechnique",
107
+ type: () => DB.Object({
108
+ close: DB.Optional({
109
+ comment: "The cost in silverthalers for close combat techniques.",
110
+ type: DB.NestedEntityMap({
111
+ name: "ItemComponentCostByCloseCombatTechnique",
112
+ namePlural: "ItemComponentCostsByCloseCombatTechnique",
113
+ secondaryEntity: CloseCombatTechnique,
114
+ type: DB.Object({
115
+ value: DB.Required({
116
+ comment: "The cost in silverthalers for the close combat technique.",
117
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
118
+ }),
119
+ translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByCloseCombatTechnique", DB.Object({
120
+ label: DB.Required({
121
+ comment: "The label for cost, if different from the name of the combat technique.",
122
+ type: DB.String({ minLength: 1 }),
123
+ }),
124
+ })),
125
+ }),
126
+ }),
127
+ }),
128
+ ranged: DB.Optional({
129
+ comment: "The cost in silverthalers for ranged combat techniques.",
130
+ type: DB.NestedEntityMap({
131
+ name: "ItemComponentCostByRangedCombatTechnique",
132
+ namePlural: "ItemComponentCostsByRangedCombatTechnique",
133
+ secondaryEntity: RangedCombatTechnique,
134
+ type: DB.Object({
135
+ value: DB.Required({
136
+ comment: "The cost in silverthalers for the ranged combat technique.",
137
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
138
+ }),
139
+ translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByRangedCombatTechnique", DB.Object({
140
+ label: DB.Required({
141
+ comment: "The label for cost, if different from the name of the combat technique.",
142
+ type: DB.String({ minLength: 1 }),
143
+ }),
144
+ })),
145
+ }),
146
+ }),
147
+ }),
148
+ }, { minProperties: 1 }),
149
+ });
150
+ const ApplicableItems = DB.Enum(import.meta.url, {
151
+ name: "ApplicableItems",
152
+ comment: "The items the component can be applied to.",
153
+ values: () => ({
154
+ MeleeWeapon: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableMeleeWeapons) }),
155
+ RangedWeapon: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableRangedWeapons) }),
156
+ Ammunition: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableAmmunition) }),
157
+ Armor: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableArmor) }),
158
+ }),
159
+ });
160
+ const ApplicableMeleeWeapons = DB.TypeAlias(import.meta.url, {
161
+ name: "ApplicableMeleeWeapons",
162
+ type: () => DB.Object({
163
+ weapons: DB.Optional({
164
+ comment: "Specific weapons this component can be applied to.",
165
+ type: DB.Array(WeaponIdentifier(), {
166
+ minItems: 1,
167
+ uniqueItems: true,
168
+ }),
169
+ }),
170
+ combatTechniques: DB.Optional({
171
+ comment: "Weapons of combat techniques this component can be applied to.",
172
+ type: DB.Array(CloseCombatTechniqueIdentifier(), {
173
+ minItems: 1,
174
+ uniqueItems: true,
175
+ }),
176
+ }),
177
+ category: DB.Optional({
178
+ comment: "The category of weapons this component can be applied to.",
179
+ type: DB.IncludeIdentifier(ApplicableMeleeWeaponCategory),
180
+ }),
181
+ }, { minProperties: 1 }),
182
+ });
183
+ const ApplicableMeleeWeaponCategory = DB.Enum(import.meta.url, {
184
+ name: "ApplicableMeleeWeaponCategory",
185
+ values: () => ({
186
+ HasMetalSurface: DB.EnumCase({ type: null }),
187
+ HasMetalBladeOrTip: DB.EnumCase({ type: null }),
188
+ }),
189
+ });
190
+ const ApplicableRangedWeapons = DB.TypeAlias(import.meta.url, {
191
+ name: "ApplicableRangedWeapons",
192
+ type: () => DB.Object({
193
+ weapons: DB.Optional({
194
+ comment: "Specific weapons this component can be applied to.",
195
+ type: DB.Array(WeaponIdentifier(), {
196
+ minItems: 1,
197
+ uniqueItems: true,
198
+ }),
199
+ }),
200
+ combatTechniques: DB.Optional({
201
+ comment: "Weapons of combat techniques this component can be applied to.",
202
+ type: DB.Array(RangedCombatTechniqueIdentifier(), {
203
+ minItems: 1,
204
+ uniqueItems: true,
205
+ }),
206
+ }),
207
+ minimumReloadTime: DB.Optional({
208
+ comment: "The minimum reload time a crossbow must have for it to be compatible with this component.",
209
+ type: DB.Integer({ minimum: 1 }),
210
+ }),
211
+ usesBullets: DB.Optional({
212
+ comment: "Whether the crossbow must use bullets to be compatible with this component.",
213
+ type: DB.Boolean(),
214
+ }),
215
+ }, { minProperties: 1 }),
216
+ });
217
+ const ApplicableAmmunition = DB.TypeAlias(import.meta.url, {
218
+ name: "ApplicableAmmunition",
219
+ type: () => DB.Object({
220
+ ammunition: DB.Optional({
221
+ comment: "Specific ammunition this component can be applied to.",
222
+ type: DB.Array(AmmunitionIdentifier(), {
223
+ minItems: 1,
224
+ uniqueItems: true,
225
+ }),
226
+ }),
227
+ invertAmmunition: DB.Optional({
228
+ comment: "Whether the list of ammunition is inverted, i.e. whether the component can be applied to all ammunition – or those of the specified category – except for the listed ammunition.",
229
+ type: DB.Boolean(),
230
+ }),
231
+ category: DB.Optional({
232
+ comment: "The category of weapons this component can be applied to.",
233
+ type: DB.IncludeIdentifier(ApplicableAmmunitionCategory),
234
+ }),
235
+ }, { minProperties: 1 }),
236
+ });
237
+ const ApplicableAmmunitionCategory = DB.Enum(import.meta.url, {
238
+ name: "ApplicableAmmunitionCategory",
239
+ values: () => ({
240
+ ArrowOrBolt: DB.EnumCase({ type: null }),
241
+ }),
242
+ });
243
+ const ApplicableArmor = DB.TypeAlias(import.meta.url, {
244
+ name: "ApplicableArmor",
245
+ type: () => DB.Object({
246
+ armor: DB.Optional({
247
+ comment: "Specific armor this component can be applied to.",
248
+ type: DB.Array(ArmorIdentifier(), {
249
+ minItems: 1,
250
+ uniqueItems: true,
251
+ }),
252
+ }),
253
+ category: DB.Optional({
254
+ comment: "The category of weapons this component can be applied to.",
255
+ type: DB.IncludeIdentifier(ApplicableArmorCategory),
256
+ }),
257
+ }),
258
+ });
259
+ const ApplicableArmorCategory = DB.Enum(import.meta.url, {
260
+ name: "ApplicableArmorCategory",
261
+ values: () => ({
262
+ Metal: DB.EnumCase({ type: null }),
263
+ }),
264
+ });
265
+ const ItemComponentRules = DB.TypeAlias(import.meta.url, {
266
+ name: "ItemComponentRules",
267
+ type: () => DB.Object({
268
+ baseItemModifications: DB.Optional({
269
+ type: DB.IncludeIdentifier(ItemComponentBaseItemModifications),
270
+ }),
271
+ }, { minProperties: 1 }),
272
+ });
273
+ const ItemComponentBaseItemModifications = DB.TypeAlias(import.meta.url, {
274
+ name: "ItemComponentBaseItemModifications",
275
+ type: () => DB.Object({
276
+ damagePoints: DB.Optional({
277
+ comment: "The damage points added to the damage points of the base item. Negative values lower the damage points.",
278
+ type: DB.Integer(),
279
+ }),
280
+ attackModifier: DB.Optional({
281
+ comment: "The attack modifier added to the attack modifier of the base item. Negative values lower the attack modifier.",
282
+ type: DB.Integer(),
283
+ }),
284
+ parryModifier: DB.Optional({
285
+ comment: "The parry modifier added to the parry modifier of the base item. Negative values lower the parry modifier.",
286
+ type: DB.Integer(),
287
+ }),
288
+ protection: DB.Optional({
289
+ comment: "The protection added to the protection of the base item. Negative values lower the protection.",
290
+ type: DB.Integer(),
291
+ }),
292
+ encumbrance: DB.Optional({
293
+ comment: "The encumbrance added to the encumbrance of the base item. Negative values lower the encumbrance.",
294
+ type: DB.Integer(),
295
+ }),
296
+ range: DB.Optional({
297
+ comment: "The range added to the range of the base item. Negative values lower the range.",
298
+ type: DB.Integer(),
299
+ }),
300
+ reloadTime: DB.Optional({
301
+ comment: "The reload time added to the reload time of the base item. Negative values lower the reload time.",
302
+ type: DB.Integer(),
303
+ }),
304
+ weight: DB.Optional({
305
+ comment: "The weight added to the weight of the base item. Negative values lower the weight.",
306
+ type: DB.Float(),
307
+ }),
308
+ breakingPointRating: DB.Optional({
309
+ comment: "The breaking point rating added to the breaking point rating of the base item. Negative values lower the breaking point rating.",
310
+ type: DB.Integer(),
311
+ }),
312
+ }, { minProperties: 1 }),
313
+ });
@@ -37,6 +37,7 @@ export { HerbalPreservation } from "./equipment/item/HerbalPreservation.js";
37
37
  export { IlluminationLightSource } from "./equipment/item/IlluminationLightSource.js";
38
38
  export { IlluminationRefillOrSupply } from "./equipment/item/IlluminationRefillOrSupply.js";
39
39
  export { Item } from "./equipment/item/Item.js";
40
+ export { ItemComponent } from "./equipment/item/ItemComponent.ts";
40
41
  export { Jewelry } from "./equipment/item/Jewelry.js";
41
42
  export { Laboratory } from "./equipment/item/Laboratory.js";
42
43
  export { Liebesspielzeug } from "./equipment/item/Liebesspielzeug.js";
@@ -37,6 +37,7 @@ export { HerbalPreservation } from "./equipment/item/HerbalPreservation.js";
37
37
  export { IlluminationLightSource } from "./equipment/item/IlluminationLightSource.js";
38
38
  export { IlluminationRefillOrSupply } from "./equipment/item/IlluminationRefillOrSupply.js";
39
39
  export { Item } from "./equipment/item/Item.js";
40
+ export { ItemComponent } from "./equipment/item/ItemComponent.js";
40
41
  export { Jewelry } from "./equipment/item/Jewelry.js";
41
42
  export { Laboratory } from "./equipment/item/Laboratory.js";
42
43
  export { Liebesspielzeug } from "./equipment/item/Liebesspielzeug.js";
@@ -925,10 +925,10 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
925
925
  }>, []>>>;
926
926
  }, []>>, false>;
927
927
  }>, []>>>;
928
- RatedMinimumNumber: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisite", DB.Object<{
928
+ RatedMinimumNumber: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteForProfession", DB.Object<{
929
929
  number: DB.MemberDecl<DB.Integer, true>;
930
930
  value: DB.MemberDecl<DB.Integer, true>;
931
- targets: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteTarget", {
931
+ targets: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteTargetForProfession", {
932
932
  Skills: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteSkillsTarget", DB.Object<{
933
933
  targets: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
934
934
  }>, []>>>;
@@ -939,9 +939,65 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
939
939
  Ranged: DB.EnumCase<null>;
940
940
  }, []>>, true>;
941
941
  }>, []>>>;
942
- Spellworks: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteSpellworksTarget", DB.Object<{
943
- property: DB.MemberDecl<DB.ReferenceIdentifier, true>;
944
- }>, []>>>;
942
+ Spellworks: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteSpellworksTargetForProfession", {
943
+ Specific: DB.EnumCase<DB.ReferenceIdentifier>;
944
+ SelectOptions: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
945
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
946
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
947
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
948
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
949
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
950
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
951
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
952
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
953
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
954
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
955
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
956
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
957
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
958
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
959
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
960
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
961
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
962
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
963
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
964
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
965
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
966
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
967
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
968
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
969
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
970
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
971
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
972
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
973
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
974
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
975
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
976
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
977
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
978
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
979
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
980
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
981
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
982
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
983
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
984
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
985
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
986
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
987
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
988
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
989
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
990
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
991
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
992
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
993
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
994
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
995
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
996
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
997
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
998
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
999
+ }, []>>>;
1000
+ }, []>>>;
945
1001
  Liturgies: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteLiturgiesTarget", DB.Object<{
946
1002
  aspect: DB.MemberDecl<DB.ReferenceIdentifier, true>;
947
1003
  }>, []>>>;
@@ -15,6 +15,7 @@ import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.js";
15
15
  import { PublicationPrerequisite } from "./single/PublicationPrerequisite.js";
16
16
  import { RacePrerequisite } from "./single/RacePrerequisite.js";
17
17
  import { RatedMinimumNumberPrerequisite } from "./single/RatedMinimumNumberPrerequisite.js";
18
+ import { RatedMinimumNumberPrerequisiteForProfession } from "./single/RatedMinimumNumberPrerequisiteForProfession.js";
18
19
  import { RatedPrerequisite } from "./single/RatedPrerequisite.js";
19
20
  import { RatedSumPrerequisite } from "./single/RatedSumPrerequisite.js";
20
21
  import { RulePrerequisite } from "./single/RulePrerequisite.js";
@@ -90,7 +91,9 @@ export const ProfessionPrerequisiteGroup = DB.Enum(import.meta.url, {
90
91
  Culture: DB.EnumCase({ type: DB.IncludeIdentifier(CulturePrerequisite) }),
91
92
  Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }),
92
93
  Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }),
93
- RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }),
94
+ RatedMinimumNumber: DB.EnumCase({
95
+ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisiteForProfession),
96
+ }),
94
97
  Energy: DB.EnumCase({ type: DB.IncludeIdentifier(EnergyPrerequisite) }),
95
98
  }),
96
99
  });
@@ -66,7 +66,7 @@ export const RatedMinimumNumberPrerequisiteSpellworksTarget = DB.TypeAlias(impor
66
66
  name: "RatedMinimumNumberPrerequisiteSpellworksTarget",
67
67
  type: () => DB.Object({
68
68
  property: DB.Required({
69
- comment: "The skills that are taken into account for satisfying the prerequisite.",
69
+ comment: "The property of which the spells are taken into account for satisfying the prerequisite.",
70
70
  type: PropertyIdentifier(),
71
71
  }),
72
72
  }),
@@ -75,7 +75,7 @@ export const RatedMinimumNumberPrerequisiteLiturgiesTarget = DB.TypeAlias(import
75
75
  name: "RatedMinimumNumberPrerequisiteLiturgiesTarget",
76
76
  type: () => DB.Object({
77
77
  aspect: DB.Required({
78
- comment: "The skills that are taken into account for satisfying the prerequisite.",
78
+ comment: "The aspect of which the liturgical chants are taken into account for satisfying the prerequisite.",
79
79
  type: AspectIdentifier(),
80
80
  }),
81
81
  }),