@optolith/database-schema 0.105.0 → 0.106.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 (71) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/gen/types.d.ts +176 -1
  3. package/lib/types/_Prerequisite.d.ts +24 -0
  4. package/lib/types/_Prerequisite.js +5 -1
  5. package/lib/types/equipment/item/Ammunition.d.ts +24 -0
  6. package/lib/types/equipment/item/Ammunition.js +5 -0
  7. package/lib/types/equipment/item/Animal.d.ts +24 -0
  8. package/lib/types/equipment/item/Animal.js +5 -0
  9. package/lib/types/equipment/item/AnimalCare.d.ts +24 -0
  10. package/lib/types/equipment/item/AnimalCare.js +5 -0
  11. package/lib/types/equipment/item/Armor.d.ts +24 -0
  12. package/lib/types/equipment/item/Armor.js +5 -0
  13. package/lib/types/equipment/item/ArmorAccessory.d.ts +24 -0
  14. package/lib/types/equipment/item/ArmorAccessory.js +5 -0
  15. package/lib/types/equipment/item/BandageOrRemedy.d.ts +24 -0
  16. package/lib/types/equipment/item/BandageOrRemedy.js +5 -0
  17. package/lib/types/equipment/item/Book.d.ts +24 -0
  18. package/lib/types/equipment/item/Book.js +5 -1
  19. package/lib/types/equipment/item/CeremonialItem.d.ts +29 -1
  20. package/lib/types/equipment/item/CeremonialItem.js +7 -3
  21. package/lib/types/equipment/item/Clothes.d.ts +24 -0
  22. package/lib/types/equipment/item/Clothes.js +5 -0
  23. package/lib/types/equipment/item/Container.d.ts +24 -0
  24. package/lib/types/equipment/item/Container.js +5 -0
  25. package/lib/types/equipment/item/Elixir.d.ts +24 -0
  26. package/lib/types/equipment/item/Elixir.js +5 -0
  27. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +24 -0
  28. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +5 -0
  29. package/lib/types/equipment/item/GemOrPreciousStone.d.ts +24 -0
  30. package/lib/types/equipment/item/GemOrPreciousStone.js +5 -0
  31. package/lib/types/equipment/item/IlluminationLightSource.d.ts +24 -0
  32. package/lib/types/equipment/item/IlluminationLightSource.js +5 -0
  33. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +24 -0
  34. package/lib/types/equipment/item/IlluminationRefillOrSupply.js +5 -0
  35. package/lib/types/equipment/item/Item.d.ts +24 -0
  36. package/lib/types/equipment/item/Item.js +5 -0
  37. package/lib/types/equipment/item/ItemComponent.d.ts +24 -0
  38. package/lib/types/equipment/item/ItemComponent.js +5 -0
  39. package/lib/types/equipment/item/Jewelry.d.ts +24 -0
  40. package/lib/types/equipment/item/Jewelry.js +5 -0
  41. package/lib/types/equipment/item/Laboratory.d.ts +24 -0
  42. package/lib/types/equipment/item/Laboratory.js +5 -0
  43. package/lib/types/equipment/item/Liebesspielzeug.d.ts +24 -0
  44. package/lib/types/equipment/item/Liebesspielzeug.js +5 -0
  45. package/lib/types/equipment/item/LuxuryGood.d.ts +24 -0
  46. package/lib/types/equipment/item/LuxuryGood.js +5 -0
  47. package/lib/types/equipment/item/MagicalArtifact.d.ts +24 -0
  48. package/lib/types/equipment/item/MagicalArtifact.js +5 -0
  49. package/lib/types/equipment/item/MusicalInstrument.d.ts +24 -0
  50. package/lib/types/equipment/item/MusicalInstrument.js +5 -0
  51. package/lib/types/equipment/item/OrienteeringAid.d.ts +24 -0
  52. package/lib/types/equipment/item/Poison.d.ts +24 -0
  53. package/lib/types/equipment/item/Poison.js +5 -0
  54. package/lib/types/equipment/item/RopeOrChain.d.ts +24 -0
  55. package/lib/types/equipment/item/Stationery.d.ts +24 -0
  56. package/lib/types/equipment/item/ThievesTool.d.ts +24 -0
  57. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +24 -0
  58. package/lib/types/equipment/item/ToolOfTheTrade.js +5 -0
  59. package/lib/types/equipment/item/TravelGearOrTool.d.ts +24 -0
  60. package/lib/types/equipment/item/TravelGearOrTool.js +5 -0
  61. package/lib/types/equipment/item/Vehicle.d.ts +24 -0
  62. package/lib/types/equipment/item/Vehicle.js +5 -0
  63. package/lib/types/equipment/item/Weapon.d.ts +24 -0
  64. package/lib/types/equipment/item/Weapon.js +5 -0
  65. package/lib/types/equipment/item/WeaponAccessory.d.ts +24 -0
  66. package/lib/types/equipment/item/WeaponAccessory.js +5 -0
  67. package/lib/types/equipment/item/_Item.d.ts +24 -0
  68. package/lib/types/equipment/item/_Item.js +5 -1
  69. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +21 -0
  70. package/lib/types/prerequisites/PrerequisiteGroups.js +6 -0
  71. package/package.json +1 -1
@@ -216,6 +216,30 @@ export declare const Armor: DB.Entity<"Armor", {
216
216
  Invaluable: DB.EnumCase<null>;
217
217
  }, []>>, true>;
218
218
  }>, []>>, false>;
219
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
220
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
221
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
222
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
223
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
224
+ Hide: DB.EnumCase<null>;
225
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
226
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
227
+ Standalone: DB.EnumCase<null>;
228
+ Connected: DB.EnumCase<null>;
229
+ }, []>>, false>;
230
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
231
+ replacement: DB.MemberDecl<DB.String, true>;
232
+ }>, true>;
233
+ }>, []>>>;
234
+ }, []>>, false>;
235
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
236
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
237
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
238
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
239
+ text: DB.MemberDecl<DB.String, true>;
240
+ }>, true>;
241
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
242
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
219
243
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
220
244
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
221
245
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,6 +1,7 @@
1
1
  import { isNotNullish } from "@elyukai/utils/nullable";
2
2
  import * as DB from "tsondb/schema/dsl";
3
3
  import { ArmorIdentifier } from "../../_Identifier.js";
4
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
4
5
  import { NestedTranslationMap } from "../../Locale.js";
5
6
  import { Errata } from "../../source/_Erratum.js";
6
7
  import { src } from "../../source/_PublicationRef.js";
@@ -49,6 +50,10 @@ export const Armor = DB.Entity(import.meta.url, {
49
50
  comment: "The armor is a known item, which implies some additional values.",
50
51
  type: DB.IncludeIdentifier(KnownItemSpecifics),
51
52
  }),
53
+ prerequisites: DB.Optional({
54
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
55
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
56
+ }),
52
57
  src,
53
58
  translations: NestedTranslationMap(DB.Required, "Armor", DB.Object({
54
59
  name: DB.Required({
@@ -271,6 +271,30 @@ export declare const ArmorAccessory: DB.Entity<"ArmorAccessory", {
271
271
  }>, false>;
272
272
  }>, []>>>;
273
273
  }, []>>, false>;
274
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
275
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
276
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
277
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
278
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
279
+ Hide: DB.EnumCase<null>;
280
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
281
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
282
+ Standalone: DB.EnumCase<null>;
283
+ Connected: DB.EnumCase<null>;
284
+ }, []>>, false>;
285
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
286
+ replacement: DB.MemberDecl<DB.String, true>;
287
+ }>, true>;
288
+ }>, []>>>;
289
+ }, []>>, false>;
290
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
291
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
292
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
293
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
294
+ text: DB.MemberDecl<DB.String, true>;
295
+ }>, true>;
296
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
297
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
274
298
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
275
299
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
276
300
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { src } from "../../source/_PublicationRef.js";
3
4
  import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -26,6 +27,10 @@ export const ArmorAccessory = DB.Entity(import.meta.url, {
26
27
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
27
28
  type: DB.IncludeIdentifier(CombatUse),
28
29
  }),
30
+ prerequisites: DB.Optional({
31
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
32
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
33
+ }),
29
34
  src,
30
35
  translations: DefaultItemTranslations("ArmorAccessory"),
31
36
  }),
@@ -271,6 +271,30 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
271
271
  }>, false>;
272
272
  }>, []>>>;
273
273
  }, []>>, false>;
274
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
275
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
276
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
277
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
278
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
279
+ Hide: DB.EnumCase<null>;
280
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
281
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
282
+ Standalone: DB.EnumCase<null>;
283
+ Connected: DB.EnumCase<null>;
284
+ }, []>>, false>;
285
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
286
+ replacement: DB.MemberDecl<DB.String, true>;
287
+ }>, true>;
288
+ }>, []>>>;
289
+ }, []>>, false>;
290
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
291
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
292
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
293
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
294
+ text: DB.MemberDecl<DB.String, true>;
295
+ }>, true>;
296
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
297
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
274
298
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
275
299
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
276
300
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { src } from "../../source/_PublicationRef.js";
3
4
  import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -26,6 +27,10 @@ export const BandageOrRemedy = DB.Entity(import.meta.url, {
26
27
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
27
28
  type: DB.IncludeIdentifier(CombatUse),
28
29
  }),
30
+ prerequisites: DB.Optional({
31
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
32
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
33
+ }),
29
34
  src,
30
35
  translations: DefaultItemTranslations("BandageOrRemedy"),
31
36
  }),
@@ -242,6 +242,30 @@ export declare const Book: DB.Entity<"Book", {
242
242
  }>, false>;
243
243
  }>, []>>>;
244
244
  }, []>>, false>;
245
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
246
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
247
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
248
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
249
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
250
+ Hide: DB.EnumCase<null>;
251
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
252
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
253
+ Standalone: DB.EnumCase<null>;
254
+ Connected: DB.EnumCase<null>;
255
+ }, []>>, false>;
256
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
257
+ replacement: DB.MemberDecl<DB.String, true>;
258
+ }>, true>;
259
+ }>, []>>>;
260
+ }, []>>, false>;
261
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
262
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
263
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
264
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
265
+ text: DB.MemberDecl<DB.String, true>;
266
+ }>, true>;
267
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
268
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
245
269
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
246
270
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
247
271
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { SkillIdentifier } from "../../_Identifier.js";
3
- import { BookPrerequisites } from "../../_Prerequisite.js";
3
+ import { BookPrerequisites, EquipmentPrerequisites } from "../../_Prerequisite.js";
4
4
  import { NestedTranslationMap } from "../../Locale.js";
5
5
  import { Errata } from "../../source/_Erratum.js";
6
6
  import { src } from "../../source/_PublicationRef.js";
@@ -41,6 +41,10 @@ export const Book = DB.Entity(import.meta.url, {
41
41
  comment: "Skills and abilities you can learn by reading the book, as well as any other rules and effects concerning the book.",
42
42
  type: DB.IncludeIdentifier(BookRules),
43
43
  }),
44
+ prerequisites: DB.Optional({
45
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
46
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
47
+ }),
44
48
  src,
45
49
  translations: NestedTranslationMap(DB.Required, "Book", DB.Object({
46
50
  name: DB.Required({
@@ -101,7 +101,11 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
103
103
  }, []>>, false>;
104
- associated_tradition: DB.MemberDecl<DB.ReferenceIdentifier, true>;
104
+ associated_tradition: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RestrictedToBlessedTraditionsScope", {
105
+ Specific: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
106
+ Church: DB.EnumCase<null>;
107
+ Shamanistic: DB.EnumCase<null>;
108
+ }, []>>, true>;
105
109
  combat_use: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CombatUse", {
106
110
  Weapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ImprovisedWeapon", DB.Object<{
107
111
  melee_uses: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -272,6 +276,30 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
272
276
  }>, false>;
273
277
  }>, []>>>;
274
278
  }, []>>, false>;
279
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
280
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
281
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
282
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
283
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
284
+ Hide: DB.EnumCase<null>;
285
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
286
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
287
+ Standalone: DB.EnumCase<null>;
288
+ Connected: DB.EnumCase<null>;
289
+ }, []>>, false>;
290
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
291
+ replacement: DB.MemberDecl<DB.String, true>;
292
+ }>, true>;
293
+ }>, []>>>;
294
+ }, []>>, false>;
295
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
296
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
297
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
298
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
299
+ text: DB.MemberDecl<DB.String, true>;
300
+ }>, true>;
301
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
302
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
275
303
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
276
304
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
277
305
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,7 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { BlessedTraditionIdentifier } from "../../_Identifier.js";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
3
3
  import { src } from "../../source/_PublicationRef.js";
4
- import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
+ import { CombatUse, Complexity, Cost, DefaultItemTranslations, RestrictedToBlessedTraditionsScope, StructurePoints, Weight, } from "./_Item.js";
5
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
6
6
  export const CeremonialItem = DB.Entity(import.meta.url, {
7
7
  name: "CeremonialItem",
@@ -25,12 +25,16 @@ export const CeremonialItem = DB.Entity(import.meta.url, {
25
25
  }),
26
26
  associated_tradition: DB.Required({
27
27
  comment: "The deity associated with the equipment item.",
28
- type: BlessedTraditionIdentifier(),
28
+ type: DB.IncludeIdentifier(RestrictedToBlessedTraditionsScope),
29
29
  }),
30
30
  combat_use: DB.Optional({
31
31
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
32
32
  type: DB.IncludeIdentifier(CombatUse),
33
33
  }),
34
+ prerequisites: DB.Optional({
35
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
36
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
37
+ }),
34
38
  src,
35
39
  translations: DefaultItemTranslations("CeremonialItem"),
36
40
  }),
@@ -271,6 +271,30 @@ export declare const Clothes: DB.Entity<"Clothes", {
271
271
  }>, false>;
272
272
  }>, []>>>;
273
273
  }, []>>, false>;
274
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
275
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
276
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
277
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
278
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
279
+ Hide: DB.EnumCase<null>;
280
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
281
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
282
+ Standalone: DB.EnumCase<null>;
283
+ Connected: DB.EnumCase<null>;
284
+ }, []>>, false>;
285
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
286
+ replacement: DB.MemberDecl<DB.String, true>;
287
+ }>, true>;
288
+ }>, []>>>;
289
+ }, []>>, false>;
290
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
291
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
292
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
293
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
294
+ text: DB.MemberDecl<DB.String, true>;
295
+ }>, true>;
296
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
297
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
274
298
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
275
299
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
276
300
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { src } from "../../source/_PublicationRef.js";
3
4
  import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -26,6 +27,10 @@ export const Clothes = DB.Entity(import.meta.url, {
26
27
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
27
28
  type: DB.IncludeIdentifier(CombatUse),
28
29
  }),
30
+ prerequisites: DB.Optional({
31
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
32
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
33
+ }),
29
34
  src,
30
35
  translations: DefaultItemTranslations("Clothes"),
31
36
  }),
@@ -271,6 +271,30 @@ export declare const Container: DB.Entity<"Container", {
271
271
  }>, false>;
272
272
  }>, []>>>;
273
273
  }, []>>, false>;
274
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
275
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
276
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
277
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
278
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
279
+ Hide: DB.EnumCase<null>;
280
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
281
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
282
+ Standalone: DB.EnumCase<null>;
283
+ Connected: DB.EnumCase<null>;
284
+ }, []>>, false>;
285
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
286
+ replacement: DB.MemberDecl<DB.String, true>;
287
+ }>, true>;
288
+ }>, []>>>;
289
+ }, []>>, false>;
290
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
291
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
292
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
293
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
294
+ text: DB.MemberDecl<DB.String, true>;
295
+ }>, true>;
296
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
297
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
274
298
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
275
299
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
276
300
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { src } from "../../source/_PublicationRef.js";
3
4
  import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -26,6 +27,10 @@ export const Container = DB.Entity(import.meta.url, {
26
27
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
27
28
  type: DB.IncludeIdentifier(CombatUse),
28
29
  }),
30
+ prerequisites: DB.Optional({
31
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
32
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
33
+ }),
29
34
  src,
30
35
  translations: DefaultItemTranslations("Container"),
31
36
  }),
@@ -85,6 +85,30 @@ export declare const Elixir: DB.Entity<"Elixir", {
85
85
  }>, true>;
86
86
  }>, []>>>, []>>, false>;
87
87
  }>, []>>, false>;
88
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
89
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
90
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
91
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
92
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
93
+ Hide: DB.EnumCase<null>;
94
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
95
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
96
+ Standalone: DB.EnumCase<null>;
97
+ Connected: DB.EnumCase<null>;
98
+ }, []>>, false>;
99
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
100
+ replacement: DB.MemberDecl<DB.String, true>;
101
+ }>, true>;
102
+ }>, []>>>;
103
+ }, []>>, false>;
104
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
105
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
106
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
107
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
108
+ text: DB.MemberDecl<DB.String, true>;
109
+ }>, true>;
110
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
111
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
88
112
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
89
113
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
90
114
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,5 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { AlternativeName } from "../../_AlternativeNames.js";
3
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
3
4
  import { NestedTranslationMap } from "../../Locale.js";
4
5
  import { Errata } from "../../source/_Erratum.js";
5
6
  import { src } from "../../source/_PublicationRef.js";
@@ -32,6 +33,10 @@ export const Elixir = DB.Entity(import.meta.url, {
32
33
  comment: "AP value and prerequisites of the elixir recipe’s trade secret.",
33
34
  type: DB.IncludeIdentifier(RecipeTradeSecret),
34
35
  }),
36
+ prerequisites: DB.Optional({
37
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
38
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
39
+ }),
35
40
  src,
36
41
  translations: NestedTranslationMap(DB.Required, "ElixirTranslation", DB.Object({
37
42
  name: DB.Required({
@@ -202,6 +202,30 @@ export declare const EquipmentOfBlessedOnes: DB.Entity<"EquipmentOfBlessedOnes",
202
202
  }>, false>;
203
203
  }>, []>>>;
204
204
  }, []>>, false>;
205
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
206
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
207
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
208
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
209
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
210
+ Hide: DB.EnumCase<null>;
211
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
212
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
213
+ Standalone: DB.EnumCase<null>;
214
+ Connected: DB.EnumCase<null>;
215
+ }, []>>, false>;
216
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
217
+ replacement: DB.MemberDecl<DB.String, true>;
218
+ }>, true>;
219
+ }>, []>>>;
220
+ }, []>>, false>;
221
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
222
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
223
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
224
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
225
+ text: DB.MemberDecl<DB.String, true>;
226
+ }>, true>;
227
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
228
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
205
229
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
206
230
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
207
231
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,5 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { BlessedTraditionIdentifier } from "../../_Identifier.js";
3
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
3
4
  import { src } from "../../source/_PublicationRef.js";
4
5
  import { CombatUse, Cost, DefaultItemTranslations, StructurePoints } from "./_Item.js";
5
6
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -26,6 +27,10 @@ export const EquipmentOfBlessedOnes = DB.Entity(import.meta.url, {
26
27
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
27
28
  type: DB.IncludeIdentifier(CombatUse),
28
29
  }),
30
+ prerequisites: DB.Optional({
31
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
32
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
33
+ }),
29
34
  src,
30
35
  translations: DefaultItemTranslations("EquipmentOfBlessedOnes"),
31
36
  }),
@@ -23,6 +23,30 @@ export declare const GemOrPreciousStone: DB.Entity<"GemOrPreciousStone", {
23
23
  }>, []>>>;
24
24
  }, []>>, true>;
25
25
  weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, false>;
26
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
27
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
28
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
29
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
30
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
31
+ Hide: DB.EnumCase<null>;
32
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
33
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
34
+ Standalone: DB.EnumCase<null>;
35
+ Connected: DB.EnumCase<null>;
36
+ }, []>>, false>;
37
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
38
+ replacement: DB.MemberDecl<DB.String, true>;
39
+ }>, true>;
40
+ }>, []>>>;
41
+ }, []>>, false>;
42
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
43
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
44
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
45
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
46
+ text: DB.MemberDecl<DB.String, true>;
47
+ }>, true>;
48
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
49
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
26
50
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
27
51
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
28
52
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { NestedTranslationMap } from "../../Locale.js";
3
4
  import { Errata } from "../../source/_Erratum.js";
4
5
  import { src } from "../../source/_PublicationRef.js";
@@ -15,6 +16,10 @@ export const GemOrPreciousStone = DB.Entity(import.meta.url, {
15
16
  comment: "The weight in kg.",
16
17
  type: DB.IncludeIdentifier(Weight),
17
18
  }),
19
+ prerequisites: DB.Optional({
20
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
21
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
22
+ }),
18
23
  src,
19
24
  translations: NestedTranslationMap(DB.Required, "GemOrPreciousStone", DB.Object({
20
25
  name: DB.Required({
@@ -280,6 +280,30 @@ export declare const IlluminationLightSource: DB.Entity<"IlluminationLightSource
280
280
  }>, false>;
281
281
  }>, []>>>;
282
282
  }, []>>, false>;
283
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
284
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
285
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
286
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
287
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
288
+ Hide: DB.EnumCase<null>;
289
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
290
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
291
+ Standalone: DB.EnumCase<null>;
292
+ Connected: DB.EnumCase<null>;
293
+ }, []>>, false>;
294
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
295
+ replacement: DB.MemberDecl<DB.String, true>;
296
+ }>, true>;
297
+ }>, []>>>;
298
+ }, []>>, false>;
299
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
300
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
301
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
302
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
303
+ text: DB.MemberDecl<DB.String, true>;
304
+ }>, true>;
305
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
306
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
283
307
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
284
308
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
285
309
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { EquipmentPrerequisites } from "../../_Prerequisite.js";
2
3
  import { src } from "../../source/_PublicationRef.js";
3
4
  import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
5
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
@@ -30,6 +31,10 @@ export const IlluminationLightSource = DB.Entity(import.meta.url, {
30
31
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
31
32
  type: DB.IncludeIdentifier(CombatUse),
32
33
  }),
34
+ prerequisites: DB.Optional({
35
+ comment: "The prerequisites of the item, if any. Note that this is fully separate from the prerequisites of the item’s trade secret, which are defined independently from this.",
36
+ type: DB.IncludeIdentifier(EquipmentPrerequisites),
37
+ }),
33
38
  src,
34
39
  translations: DefaultItemTranslations("IlluminationLightSource"),
35
40
  }),
@@ -271,6 +271,30 @@ export declare const IlluminationRefillOrSupply: DB.Entity<"IlluminationRefillOr
271
271
  }>, false>;
272
272
  }>, []>>>;
273
273
  }, []>>, false>;
274
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EquipmentPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
275
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
276
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
277
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
278
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
279
+ Hide: DB.EnumCase<null>;
280
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
281
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
282
+ Standalone: DB.EnumCase<null>;
283
+ Connected: DB.EnumCase<null>;
284
+ }, []>>, false>;
285
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
286
+ replacement: DB.MemberDecl<DB.String, true>;
287
+ }>, true>;
288
+ }>, []>>>;
289
+ }, []>>, false>;
290
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
291
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
292
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
293
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
294
+ text: DB.MemberDecl<DB.String, true>;
295
+ }>, true>;
296
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
297
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
274
298
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
275
299
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
276
300
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {