@optolith/database-schema 0.79.0 → 0.80.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 (41) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/gen/types.d.ts +26 -3
  3. package/lib/types/Culture.js +1 -1
  4. package/lib/types/equipment/item/Ammunition.d.ts +5 -1
  5. package/lib/types/equipment/item/Animal.d.ts +5 -1
  6. package/lib/types/equipment/item/AnimalCare.d.ts +5 -1
  7. package/lib/types/equipment/item/Armor.d.ts +17 -2
  8. package/lib/types/equipment/item/Armor.js +14 -5
  9. package/lib/types/equipment/item/BandageOrRemedy.d.ts +17 -2
  10. package/lib/types/equipment/item/Book.d.ts +10 -2
  11. package/lib/types/equipment/item/CeremonialItem.d.ts +17 -2
  12. package/lib/types/equipment/item/Clothes.d.ts +17 -2
  13. package/lib/types/equipment/item/ClothingPackage.d.ts +5 -1
  14. package/lib/types/equipment/item/Container.d.ts +17 -2
  15. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +17 -2
  16. package/lib/types/equipment/item/GemOrPreciousStone.d.ts +5 -1
  17. package/lib/types/equipment/item/IlluminationLightSource.d.ts +17 -2
  18. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +17 -2
  19. package/lib/types/equipment/item/Item.d.ts +17 -2
  20. package/lib/types/equipment/item/Item.js +13 -9
  21. package/lib/types/equipment/item/Laboratory.d.ts +5 -1
  22. package/lib/types/equipment/item/Liebesspielzeug.d.ts +17 -2
  23. package/lib/types/equipment/item/LuxuryGood.d.ts +17 -2
  24. package/lib/types/equipment/item/MagicalArtifact.d.ts +17 -2
  25. package/lib/types/equipment/item/MusicalInstrument.d.ts +17 -2
  26. package/lib/types/equipment/item/Newspaper.d.ts +5 -1
  27. package/lib/types/equipment/item/OrienteeringAid.d.ts +17 -2
  28. package/lib/types/equipment/item/RopeOrChain.d.ts +17 -2
  29. package/lib/types/equipment/item/Stationery.d.ts +17 -2
  30. package/lib/types/equipment/item/ThievesTool.d.ts +17 -2
  31. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +5 -1
  32. package/lib/types/equipment/item/TravelGearOrTool.d.ts +17 -2
  33. package/lib/types/equipment/item/Vehicle.d.ts +5 -1
  34. package/lib/types/equipment/item/Weapon.d.ts +5 -1
  35. package/lib/types/equipment/item/WeaponAccessory.d.ts +17 -2
  36. package/lib/types/equipment/item/WorkingSupernaturalCreature.d.ts +5 -1
  37. package/lib/types/equipment/item/_Item.d.ts +34 -4
  38. package/lib/types/equipment/item/_Item.js +9 -1
  39. package/lib/types/specialAbility/sub/Language.d.ts +2 -0
  40. package/lib/types/specialAbility/sub/Language.js +4 -0
  41. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.80.0](https://github.com/Optolith/database-schema/compare/v0.79.1...v0.80.0) (2026-10-06)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * culture-only language specialization flag
10
+ * invaluable item cost translation
11
+
12
+ ### Features
13
+
14
+ * culture-only language specialization flag ([e7e35cd](https://github.com/Optolith/database-schema/commit/e7e35cdb78c9b1e92353f64bfb6858a32fdbdd40))
15
+ * invaluable item cost translation ([61e6e22](https://github.com/Optolith/database-schema/commit/61e6e22b19a761309c4666ba03d4770c5a59e86d))
16
+
17
+ ## [0.79.1](https://github.com/Optolith/database-schema/compare/v0.79.0...v0.79.1) (2026-10-05)
18
+
19
+ ### Bug Fixes
20
+
21
+ * custom combat value constraints for generic item ([10a042a](https://github.com/Optolith/database-schema/commit/10a042ad9e72d65f1b8cb75b1f9bf3eff7badf31))
22
+
5
23
  ## [0.79.0](https://github.com/Optolith/database-schema/compare/v0.78.0...v0.79.0) (2026-10-05)
6
24
 
7
25
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -736,6 +736,7 @@ export type TypeAliasMap = {
736
736
  IntoxicantAddictionCheck: IntoxicantAddictionCheck
737
737
  IntoxicantAddictionWithdrawalPrevention: IntoxicantAddictionWithdrawalPrevention
738
738
  IntoxicantLegality: IntoxicantLegality
739
+ InvaluableCost: InvaluableCost
739
740
  JesterTrickCastingTime: JesterTrickCastingTime
740
741
  JesterTrickCost: JesterTrickCost
741
742
  JesterTrickPerformanceParameters: JesterTrickPerformanceParameters
@@ -5714,6 +5715,11 @@ export interface LanguageSpecialization {
5714
5715
  */
5715
5716
  parent: Language_ID
5716
5717
 
5718
+ /**
5719
+ * The specialization is only mentioned in a culture’s description and not where the language itself is defined.
5720
+ */
5721
+ onlyForCulture: boolean
5722
+
5717
5723
  /**
5718
5724
  * All translations for the entry, identified by IETF language tag (BCP47).
5719
5725
  */
@@ -9862,7 +9868,7 @@ export interface CultureLanguageTranslation {
9862
9868
  specialization?: string
9863
9869
 
9864
9870
  /**
9865
- * A different promt fro the language specialization, if the language allows to specify arbitrary text.
9871
+ * A different prompt for the language specialization, if the language allows to specify arbitrary text.
9866
9872
  */
9867
9873
  specializationPrompt?: string
9868
9874
  }
@@ -12417,6 +12423,7 @@ export type Cost =
12417
12423
  }
12418
12424
  | {
12419
12425
  kind: "Invaluable"
12426
+ Invaluable: InvaluableCost
12420
12427
  }
12421
12428
  | {
12422
12429
  kind: "Fixed"
@@ -12427,6 +12434,22 @@ export type Cost =
12427
12434
  Range: CostRange
12428
12435
  }
12429
12436
 
12437
+ export interface InvaluableCost {
12438
+ /**
12439
+ * All translations for the entry, identified by IETF language tag (BCP47).
12440
+ */
12441
+ translations?: {
12442
+ [localeId: string]: InvaluableCostTranslation
12443
+ }
12444
+ }
12445
+
12446
+ export interface InvaluableCostTranslation {
12447
+ /**
12448
+ * The cost get wrapped by this text using a placeholder in the text.
12449
+ */
12450
+ wrap_in_text: string
12451
+ }
12452
+
12430
12453
  export interface FixedCost {
12431
12454
  /**
12432
12455
  * The cost in silverthalers.
@@ -23308,9 +23331,9 @@ export interface SecondaryArmor {
23308
23331
  has_additional_penalties: HasAdditionalPenalties
23309
23332
 
23310
23333
  /**
23311
- * The standard armor this armor is a variant of.
23334
+ * The armor type.
23312
23335
  */
23313
- variantOf: Armor_ID
23336
+ armorType: ArmorType
23314
23337
 
23315
23338
  /**
23316
23339
  * Specify if armor is only available for a specific hit zone.
@@ -122,7 +122,7 @@ const CultureLanguage = DB.TypeAlias(import.meta.url, {
122
122
  type: DB.String({ minLength: 1 }),
123
123
  }),
124
124
  specializationPrompt: DB.Optional({
125
- comment: "A different promt fro the language specialization, if the language allows to specify arbitrary text.",
125
+ comment: "A different prompt for the language specialization, if the language allows to specify arbitrary text.",
126
126
  type: DB.String({ minLength: 1 }),
127
127
  }),
128
128
  }, { minProperties: 1 })),
@@ -3,7 +3,11 @@ export declare const Ammunition: DB.Entity<"Ammunition", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -3,7 +3,11 @@ export declare const Animal: DB.Entity<"Animal", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -5,7 +5,11 @@ export declare const AnimalCare: DB.Entity<"AnimalCare", {
5
5
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
6
6
  Free: DB.EnumCase<null>;
7
7
  Various: DB.EnumCase<null>;
8
- Invaluable: DB.EnumCase<null>;
8
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
9
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
10
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
11
+ }>, false>;
12
+ }>, []>>>;
9
13
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
10
14
  value: DB.MemberDecl<DB.Float, true>;
11
15
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -3,7 +3,11 @@ export declare const Armor: DB.Entity<"Armor", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -224,7 +228,18 @@ export declare const SecondaryArmor: DB.TypeAlias<"SecondaryArmor", DB.Object<{
224
228
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
225
229
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
226
230
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
227
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
231
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
232
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
233
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
234
+ }>, []>>>;
235
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
236
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
237
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
238
+ }>, []>>>;
239
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
240
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
241
+ }>, []>>>;
242
+ }, []>>, true>;
228
243
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
229
244
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
230
245
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -112,7 +112,9 @@ const StandardArmorType = DB.TypeAlias(import.meta.url, {
112
112
  }),
113
113
  });
114
114
  const validateArmorTypeReference = (deps) => [
115
- deps.getInstanceById("Armor", deps.instanceContent.variantOf)?.armorType.kind !== "Standard"
115
+ deps.getInstanceById("Armor", deps.instanceContent.variantOf)?.armorType.kind !== "Standard" &&
116
+ deps.getInstanceById("Item", deps.instanceContent.variantOf)?.armorUse?.armorType.kind !==
117
+ "Standard"
116
118
  ? "The armor is a variant of a standard armor, but the referenced armor is not a standard armor."
117
119
  : undefined,
118
120
  ].filter(isNotNullish);
@@ -157,9 +159,9 @@ export const SecondaryArmor = DB.TypeAlias(import.meta.url, {
157
159
  comment: "Does the armor have additional penalties (MOV -1, INI -1)?",
158
160
  type: DB.IncludeIdentifier(HasAdditionalPenalties),
159
161
  }),
160
- variantOf: DB.Required({
161
- comment: "The standard armor this armor is a variant of.",
162
- type: ArmorIdentifier(),
162
+ armorType: DB.Required({
163
+ comment: "The armor type.",
164
+ type: DB.IncludeIdentifier(ArmorType),
163
165
  }),
164
166
  hit_zone: DB.Optional({
165
167
  comment: "Specify if armor is only available for a specific hit zone.",
@@ -180,7 +182,14 @@ export const SecondaryArmor = DB.TypeAlias(import.meta.url, {
180
182
  }),
181
183
  }, { minProperties: 1 })),
182
184
  }),
183
- customConstraints: validateArmorTypeReference,
185
+ customConstraints: ({ instanceContent, ...deps }) => instanceContent.armorType.kind !== "Standard"
186
+ ? validateArmorTypeReference({
187
+ ...deps,
188
+ instanceContent: instanceContent.armorType.kind === "Variant"
189
+ ? instanceContent.armorType.Variant
190
+ : instanceContent.armorType.StandardVariant,
191
+ })
192
+ : [],
184
193
  });
185
194
  const ArmorComplexity = DB.Enum(import.meta.url, {
186
195
  name: "ArmorComplexity",
@@ -3,7 +3,11 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -148,7 +152,18 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
148
152
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
149
153
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
150
154
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
151
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
155
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
156
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
157
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
158
+ }>, []>>>;
159
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
160
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
161
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
162
+ }>, []>>>;
163
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
164
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
165
+ }>, []>>>;
166
+ }, []>>, true>;
152
167
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
153
168
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
154
169
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -19,7 +19,11 @@ export declare const Book: DB.Entity<"Book", {
19
19
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
20
20
  Free: DB.EnumCase<null>;
21
21
  Various: DB.EnumCase<null>;
22
- Invaluable: DB.EnumCase<null>;
22
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
23
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
24
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
25
+ }>, false>;
26
+ }>, []>>>;
23
27
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
24
28
  value: DB.MemberDecl<DB.Float, true>;
25
29
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -50,7 +54,11 @@ export declare const Book: DB.Entity<"Book", {
50
54
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
51
55
  Free: DB.EnumCase<null>;
52
56
  Various: DB.EnumCase<null>;
53
- Invaluable: DB.EnumCase<null>;
57
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
58
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
59
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
60
+ }>, false>;
61
+ }>, []>>>;
54
62
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
55
63
  value: DB.MemberDecl<DB.Float, true>;
56
64
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -3,7 +3,11 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -149,7 +153,18 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
149
153
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
150
154
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
151
155
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
152
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
156
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
157
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
158
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
159
+ }>, []>>>;
160
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
161
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
162
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
163
+ }>, []>>>;
164
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
165
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
166
+ }>, []>>>;
167
+ }, []>>, true>;
153
168
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
154
169
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
155
170
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -3,7 +3,11 @@ export declare const Clothes: DB.Entity<"Clothes", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -148,7 +152,18 @@ export declare const Clothes: DB.Entity<"Clothes", {
148
152
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
149
153
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
150
154
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
151
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
155
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
156
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
157
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
158
+ }>, []>>>;
159
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
160
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
161
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
162
+ }>, []>>>;
163
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
164
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
165
+ }>, []>>>;
166
+ }, []>>, true>;
152
167
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
153
168
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
154
169
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -3,7 +3,11 @@ export declare const ClothingPackage: DB.Entity<"ClothingPackage", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -3,7 +3,11 @@ export declare const Container: DB.Entity<"Container", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -148,7 +152,18 @@ export declare const Container: DB.Entity<"Container", {
148
152
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
149
153
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
150
154
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
151
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
155
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
156
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
157
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
158
+ }>, []>>>;
159
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
160
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
161
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
162
+ }>, []>>>;
163
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
164
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
165
+ }>, []>>>;
166
+ }, []>>, true>;
152
167
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
153
168
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
154
169
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -3,7 +3,11 @@ export declare const EquipmentOfBlessedOnes: DB.Entity<"EquipmentOfBlessedOnes",
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -121,7 +125,18 @@ export declare const EquipmentOfBlessedOnes: DB.Entity<"EquipmentOfBlessedOnes",
121
125
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
122
126
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
123
127
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
124
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
128
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
129
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
130
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
131
+ }>, []>>>;
132
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
133
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
134
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
135
+ }>, []>>>;
136
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
137
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
138
+ }>, []>>>;
139
+ }, []>>, true>;
125
140
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
126
141
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
127
142
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -3,7 +3,11 @@ export declare const GemOrPreciousStone: DB.Entity<"GemOrPreciousStone", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -3,7 +3,11 @@ export declare const IlluminationLightSource: DB.Entity<"IlluminationLightSource
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -157,7 +161,18 @@ export declare const IlluminationLightSource: DB.Entity<"IlluminationLightSource
157
161
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
158
162
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
159
163
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
160
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
164
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
165
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
166
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
167
+ }>, []>>>;
168
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
169
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
170
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
171
+ }>, []>>>;
172
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
173
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
174
+ }>, []>>>;
175
+ }, []>>, true>;
161
176
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
162
177
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
163
178
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -3,7 +3,11 @@ export declare const IlluminationRefillOrSupply: DB.Entity<"IlluminationRefillOr
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -148,7 +152,18 @@ export declare const IlluminationRefillOrSupply: DB.Entity<"IlluminationRefillOr
148
152
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
149
153
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
150
154
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
151
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
155
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
156
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
157
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
158
+ }>, []>>>;
159
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
160
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
161
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
162
+ }>, []>>>;
163
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
164
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
165
+ }>, []>>>;
166
+ }, []>>, true>;
152
167
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
153
168
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
154
169
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -4,7 +4,11 @@ export declare const Item: DB.Entity<"Item", {
4
4
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
5
5
  Free: DB.EnumCase<null>;
6
6
  Various: DB.EnumCase<null>;
7
- Invaluable: DB.EnumCase<null>;
7
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
8
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
9
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
10
+ }>, false>;
11
+ }>, []>>>;
8
12
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
9
13
  value: DB.MemberDecl<DB.Float, true>;
10
14
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
@@ -129,7 +133,18 @@ export declare const Item: DB.Entity<"Item", {
129
133
  protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
130
134
  encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
131
135
  has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
132
- variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
136
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
137
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
138
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
139
+ }>, []>>>;
140
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
141
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
142
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
143
+ }>, []>>>;
144
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
145
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
146
+ }>, []>>>;
147
+ }, []>>, true>;
133
148
  hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
134
149
  Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
135
150
  combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
@@ -115,22 +115,26 @@ export const Item = DB.Entity(import.meta.url, {
115
115
  keyPathInEntityMap: "name",
116
116
  },
117
117
  ],
118
- customConstraints: ({ instanceContent, ...rest }) => checkWeaponCombatTechniqueIntegrity({
119
- ...rest,
120
- instanceContent,
121
- }).concat(checkEquipmentCategoryConstraintsWithItem(instanceContent, rest.getInstanceById)),
118
+ customConstraints: ({ instanceContent, ...rest }) => checkEquipmentCategoryConstraintsWithItem(instanceContent, rest.getInstanceById, rest.getDisplayNameAndId),
122
119
  });
123
- const checkEquipmentCategoryConstraintsWithItem = (item, getInstanceById) => {
120
+ const checkEquipmentCategoryConstraintsWithItem = (item, getInstanceById, getDisplayNameAndId) => {
124
121
  const categories = item.categories.map(categoryId => getInstanceById("EquipmentCategory", categoryId));
125
122
  if (isNotEmpty(categories)) {
126
123
  if (categories.every(isNotNullish)) {
127
124
  if (categories.every(isEquipmentCategoryOfDefaultType)) {
128
125
  const mergedRules = mergeAllValueRules(categories.map(c => c.type.Default));
129
126
  const errors = [];
130
- if (mergedRules.combatValues.isWeaponAllowed &&
131
- item.meleeUses === undefined &&
132
- item.rangedUses === undefined) {
133
- errors.push("A weapon must defined at least one melee use or ranged use.");
127
+ if (mergedRules.combatValues.isWeaponAllowed) {
128
+ if (item.meleeUses === undefined && item.rangedUses === undefined) {
129
+ errors.push("A weapon must defined at least one melee use or ranged use.");
130
+ }
131
+ else {
132
+ errors.push(...checkWeaponCombatTechniqueIntegrity({
133
+ instanceContent: item,
134
+ getInstanceById,
135
+ getDisplayNameAndId,
136
+ }));
137
+ }
134
138
  }
135
139
  if (mergedRules.combatValues.isArmorAllowed && item.armorUse === undefined) {
136
140
  errors.push("An armor must defined an armor use.");
@@ -3,7 +3,11 @@ export declare const Laboratory: DB.Entity<"Laboratory", {
3
3
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
4
  Free: DB.EnumCase<null>;
5
5
  Various: DB.EnumCase<null>;
6
- Invaluable: DB.EnumCase<null>;
6
+ Invaluable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"InvaluableCost", DB.Object<{
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"InvaluableCostTranslation", {
8
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
9
+ }>, false>;
10
+ }>, []>>>;
7
11
  Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
8
12
  value: DB.MemberDecl<DB.Float, true>;
9
13
  translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {