@optolith/database-schema 0.93.0 → 0.95.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 (57) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/gen/types.d.ts +188 -17
  3. package/lib/cache/tradeSecrets.js +15 -3
  4. package/lib/main.js +1 -0
  5. package/lib/types/Locale.d.ts +1 -0
  6. package/lib/types/Locale.js +1 -0
  7. package/lib/types/Settings.d.ts +57 -0
  8. package/lib/types/Settings.js +10 -1
  9. package/lib/types/_Identifier.d.ts +1 -0
  10. package/lib/types/_Identifier.js +2 -0
  11. package/lib/types/_IdentifierGroup.d.ts +1 -0
  12. package/lib/types/_IdentifierGroup.js +2 -1
  13. package/lib/types/_Prerequisite.d.ts +24 -0
  14. package/lib/types/_Prerequisite.js +5 -1
  15. package/lib/types/equipment/EquipmentPackage.d.ts +1 -0
  16. package/lib/types/equipment/item/Ammunition.d.ts +72 -0
  17. package/lib/types/equipment/item/Ammunition.js +5 -1
  18. package/lib/types/equipment/item/Armor.d.ts +24 -0
  19. package/lib/types/equipment/item/ArmorAccessory.d.ts +281 -0
  20. package/lib/types/equipment/item/ArmorAccessory.js +48 -0
  21. package/lib/types/equipment/item/BandageOrRemedy.d.ts +24 -0
  22. package/lib/types/equipment/item/Book.d.ts +98 -20
  23. package/lib/types/equipment/item/Book.js +60 -45
  24. package/lib/types/equipment/item/CeremonialItem.d.ts +24 -0
  25. package/lib/types/equipment/item/Clothes.d.ts +24 -0
  26. package/lib/types/equipment/item/Container.d.ts +24 -0
  27. package/lib/types/equipment/item/IlluminationLightSource.d.ts +24 -0
  28. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +24 -0
  29. package/lib/types/equipment/item/Item.d.ts +24 -0
  30. package/lib/types/equipment/item/Jewelry.d.ts +24 -0
  31. package/lib/types/equipment/item/Laboratory.d.ts +24 -0
  32. package/lib/types/equipment/item/Liebesspielzeug.d.ts +24 -0
  33. package/lib/types/equipment/item/LuxuryGood.d.ts +24 -0
  34. package/lib/types/equipment/item/MagicalArtifact.d.ts +24 -0
  35. package/lib/types/equipment/item/MusicalInstrument.d.ts +24 -0
  36. package/lib/types/equipment/item/OrienteeringAid.d.ts +24 -0
  37. package/lib/types/equipment/item/RopeOrChain.d.ts +24 -0
  38. package/lib/types/equipment/item/Stationery.d.ts +24 -0
  39. package/lib/types/equipment/item/ThievesTool.d.ts +24 -0
  40. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +24 -0
  41. package/lib/types/equipment/item/TravelGearOrTool.d.ts +24 -0
  42. package/lib/types/equipment/item/Vehicle.d.ts +24 -0
  43. package/lib/types/equipment/item/Weapon.d.ts +24 -0
  44. package/lib/types/equipment/item/WeaponAccessory.d.ts +24 -0
  45. package/lib/types/equipment/item/_Item.d.ts +72 -0
  46. package/lib/types/equipment/item/_Item.js +5 -0
  47. package/lib/types/index.d.ts +1 -0
  48. package/lib/types/index.js +1 -0
  49. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +1 -0
  50. package/lib/types/magicalActions/ElvenMagicalSong.js +4 -0
  51. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +9 -0
  52. package/lib/types/prerequisites/PrerequisiteGroups.js +9 -0
  53. package/lib/types/prerequisites/single/LanguagePrerequisite.d.ts +5 -0
  54. package/lib/types/prerequisites/single/LanguagePrerequisite.js +15 -0
  55. package/lib/types/prerequisites/single/ScriptPrerequisite.d.ts +4 -0
  56. package/lib/types/prerequisites/single/ScriptPrerequisite.js +11 -0
  57. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  import * as DB from "tsondb/schema/dsl";
5
5
  import { NestedTranslationMap } from "./Locale.js";
6
6
  import { DisplayOption } from "./prerequisites/DisplayOption.js";
7
- import { AdvantageDisadvantagePrerequisiteGroup, AnimistPowerPrerequisiteGroup, ArcaneTraditionPrerequisiteGroup, DerivedCharacteristicPrerequisiteGroup, EnhancementPrerequisiteGroup, GeneralPrerequisiteGroup, GeodeRitualPrerequisiteGroup, InfluencePrerequisiteGroup, LanguagePrerequisiteGroup, LiturgyPrerequisiteGroup, PersonalityTraitPrerequisiteGroup, ProfessionPrerequisiteGroup, PublicationPrerequisiteGroup, RulePrerequisiteGroup, SpellworkPrerequisiteGroup, TribePrerequisiteGroup, } from "./prerequisites/PrerequisiteGroups.js";
7
+ import { AdvantageDisadvantagePrerequisiteGroup, AnimistPowerPrerequisiteGroup, ArcaneTraditionPrerequisiteGroup, BookPrerequisiteGroup, DerivedCharacteristicPrerequisiteGroup, EnhancementPrerequisiteGroup, GeneralPrerequisiteGroup, GeodeRitualPrerequisiteGroup, InfluencePrerequisiteGroup, LanguagePrerequisiteGroup, LiturgyPrerequisiteGroup, PersonalityTraitPrerequisiteGroup, ProfessionPrerequisiteGroup, PublicationPrerequisiteGroup, RulePrerequisiteGroup, SpellworkPrerequisiteGroup, TribePrerequisiteGroup, } from "./prerequisites/PrerequisiteGroups.js";
8
8
  const PrerequisiteGroup = DB.GenTypeAlias(import.meta.url, {
9
9
  name: "PrerequisiteGroup",
10
10
  comment: "A prerequisite group has no influence on validation logic. It serves as a single unit for displaying purposes, where the source uses a prerequisites item that cannot be represented as a single prerequisite.",
@@ -188,3 +188,7 @@ export const EnhancementPrerequisites = DB.TypeAlias(import.meta.url, {
188
188
  DB.IncludeIdentifier(EnhancementPrerequisiteGroup),
189
189
  ]),
190
190
  });
191
+ export const BookPrerequisites = DB.TypeAlias(import.meta.url, {
192
+ name: "BookPrerequisites",
193
+ type: () => DB.GenIncludeIdentifier(PlainPrerequisites, [DB.IncludeIdentifier(BookPrerequisiteGroup)]),
194
+ });
@@ -6,6 +6,7 @@ export declare const EquipmentPackage: DB.Entity<"EquipmentPackage", {
6
6
  Animal: DB.EnumCase<DB.ReferenceIdentifier>;
7
7
  AnimalCare: DB.EnumCase<DB.ReferenceIdentifier>;
8
8
  Armor: DB.EnumCase<DB.ReferenceIdentifier>;
9
+ ArmorAccessory: DB.EnumCase<DB.ReferenceIdentifier>;
9
10
  BandageOrRemedy: DB.EnumCase<DB.ReferenceIdentifier>;
10
11
  Book: DB.EnumCase<DB.ReferenceIdentifier>;
11
12
  CeremonialItem: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -22,6 +22,78 @@ export declare const Ammunition: DB.Entity<"Ammunition", {
22
22
  }>, false>;
23
23
  }>, []>>>;
24
24
  }, []>>, true>;
25
+ complexity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Complexity", {
26
+ Primitive: DB.EnumCase<null>;
27
+ Simple: DB.EnumCase<null>;
28
+ Complex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ComplexComplexity", DB.Object<{
29
+ ap_value: DB.MemberDecl<DB.Integer, true>;
30
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlainGeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
31
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
32
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
33
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
34
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
35
+ Hide: DB.EnumCase<null>;
36
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
37
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
38
+ Standalone: DB.EnumCase<null>;
39
+ Connected: DB.EnumCase<null>;
40
+ }, []>>, false>;
41
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
42
+ replacement: DB.MemberDecl<DB.String, true>;
43
+ }>, true>;
44
+ }>, []>>>;
45
+ }, []>>, false>;
46
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
47
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
48
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
49
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
50
+ text: DB.MemberDecl<DB.String, true>;
51
+ }>, true>;
52
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
53
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
54
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
55
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
56
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
57
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
58
+ printing: DB.MemberDecl<DB.Integer, false>;
59
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
60
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
61
+ InsideCoverFront: DB.EnumCase<null>;
62
+ InsideCoverBack: DB.EnumCase<null>;
63
+ Numbered: DB.EnumCase<DB.Integer>;
64
+ }, []>>, true>;
65
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
66
+ InsideCoverFront: DB.EnumCase<null>;
67
+ InsideCoverBack: DB.EnumCase<null>;
68
+ Numbered: DB.EnumCase<DB.Integer>;
69
+ }, []>>, false>;
70
+ }>, []>>>, true>;
71
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
72
+ }>, []>>, true>;
73
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
74
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
75
+ printing: DB.MemberDecl<DB.Integer, true>;
76
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
77
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
78
+ InsideCoverFront: DB.EnumCase<null>;
79
+ InsideCoverBack: DB.EnumCase<null>;
80
+ Numbered: DB.EnumCase<DB.Integer>;
81
+ }, []>>, true>;
82
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
83
+ InsideCoverFront: DB.EnumCase<null>;
84
+ InsideCoverBack: DB.EnumCase<null>;
85
+ Numbered: DB.EnumCase<DB.Integer>;
86
+ }, []>>, false>;
87
+ }>, []>>>, true>;
88
+ }>, []>>>;
89
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
90
+ printing: DB.MemberDecl<DB.Integer, true>;
91
+ }>, []>>>;
92
+ }, []>>>, false>;
93
+ }>, true>;
94
+ }>, []>>>, []>>, false>;
95
+ }>, []>>>;
96
+ }, []>>, false>;
25
97
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
26
98
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
27
99
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -2,7 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { NestedTranslationMap } from "../../Locale.js";
3
3
  import { Errata } from "../../source/_Erratum.js";
4
4
  import { src } from "../../source/_PublicationRef.js";
5
- import { Cost } from "./_Item.js";
5
+ import { Complexity, Cost } from "./_Item.js";
6
6
  export const Ammunition = DB.Entity(import.meta.url, {
7
7
  name: "Ammunition",
8
8
  namePlural: "Ammunitions",
@@ -11,6 +11,10 @@ export const Ammunition = DB.Entity(import.meta.url, {
11
11
  comment: "The cost in silverthalers.",
12
12
  type: DB.IncludeIdentifier(Cost),
13
13
  }),
14
+ complexity: DB.Optional({
15
+ comment: "The complexity of crafting the item.",
16
+ type: DB.IncludeIdentifier(Complexity),
17
+ }),
14
18
  src,
15
19
  translations: NestedTranslationMap(DB.Required, "Ammunition", DB.Object({
16
20
  name: DB.Required({
@@ -28,6 +28,30 @@ export declare const Armor: DB.Entity<"Armor", {
28
28
  Simple: DB.EnumCase<null>;
29
29
  Complex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ComplexComplexity", DB.Object<{
30
30
  ap_value: DB.MemberDecl<DB.Integer, true>;
31
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlainGeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
32
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
33
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
34
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
35
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
36
+ Hide: DB.EnumCase<null>;
37
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
38
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
39
+ Standalone: DB.EnumCase<null>;
40
+ Connected: DB.EnumCase<null>;
41
+ }, []>>, false>;
42
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
43
+ replacement: DB.MemberDecl<DB.String, true>;
44
+ }>, true>;
45
+ }>, []>>>;
46
+ }, []>>, false>;
47
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
48
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
49
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
50
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
51
+ text: DB.MemberDecl<DB.String, true>;
52
+ }>, true>;
53
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
54
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
31
55
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
32
56
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
33
57
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -0,0 +1,281 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const ArmorAccessory: DB.Entity<"ArmorAccessory", {
3
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Cost", {
4
+ Free: DB.EnumCase<null>;
5
+ Various: 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
+ }>, []>>>;
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
+ Range: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CostRange", DB.Object<{
18
+ from: DB.MemberDecl<DB.Float, true>;
19
+ to: DB.MemberDecl<DB.Float, false>;
20
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CostRangeTranslation", {
21
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
22
+ }>, false>;
23
+ }>, []>>>;
24
+ }, []>>, true>;
25
+ weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, false>;
26
+ complexity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Complexity", {
27
+ Primitive: DB.EnumCase<null>;
28
+ Simple: DB.EnumCase<null>;
29
+ Complex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ComplexComplexity", DB.Object<{
30
+ ap_value: DB.MemberDecl<DB.Integer, true>;
31
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlainGeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
32
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
33
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
34
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
35
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
36
+ Hide: DB.EnumCase<null>;
37
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
38
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
39
+ Standalone: DB.EnumCase<null>;
40
+ Connected: DB.EnumCase<null>;
41
+ }, []>>, false>;
42
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
43
+ replacement: DB.MemberDecl<DB.String, true>;
44
+ }>, true>;
45
+ }>, []>>>;
46
+ }, []>>, false>;
47
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
48
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
49
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
50
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
51
+ text: DB.MemberDecl<DB.String, true>;
52
+ }>, true>;
53
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
54
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
55
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
56
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
57
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
58
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
59
+ printing: DB.MemberDecl<DB.Integer, false>;
60
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
61
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
62
+ InsideCoverFront: DB.EnumCase<null>;
63
+ InsideCoverBack: DB.EnumCase<null>;
64
+ Numbered: DB.EnumCase<DB.Integer>;
65
+ }, []>>, true>;
66
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
67
+ InsideCoverFront: DB.EnumCase<null>;
68
+ InsideCoverBack: DB.EnumCase<null>;
69
+ Numbered: DB.EnumCase<DB.Integer>;
70
+ }, []>>, false>;
71
+ }>, []>>>, true>;
72
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
73
+ }>, []>>, true>;
74
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
75
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
76
+ printing: DB.MemberDecl<DB.Integer, true>;
77
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
78
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
79
+ InsideCoverFront: DB.EnumCase<null>;
80
+ InsideCoverBack: DB.EnumCase<null>;
81
+ Numbered: DB.EnumCase<DB.Integer>;
82
+ }, []>>, true>;
83
+ last_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
+ }, []>>, false>;
88
+ }>, []>>>, true>;
89
+ }>, []>>>;
90
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
91
+ printing: DB.MemberDecl<DB.Integer, true>;
92
+ }>, []>>>;
93
+ }, []>>>, false>;
94
+ }>, true>;
95
+ }>, []>>>, []>>, false>;
96
+ }>, []>>>;
97
+ }, []>>, false>;
98
+ structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
99
+ points: DB.MemberDecl<DB.Integer, true>;
100
+ }>, []>>>, []>>, false>;
101
+ combat_use: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CombatUse", {
102
+ Weapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ImprovisedWeapon", DB.Object<{
103
+ melee_uses: DB.MemberDecl<DB.NestedEntityMap<string, {
104
+ damage: DB.MemberDecl<DB.TypeArgument<DB.Param<"Damage", DB.Type>>, true>;
105
+ damage_threshold: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"PrimaryAttributeDamageThreshold", {
106
+ Default: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DefaultPrimaryAttributeDamageThreshold", DB.Object<{
107
+ threshold: DB.MemberDecl<DB.Integer, true>;
108
+ }>, []>>>;
109
+ List: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"PrimaryAttributeDamageThresholdList", DB.Object<{
110
+ list: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SinglePrimaryAttributeDamageThreshold", DB.Object<{
111
+ attribute: DB.MemberDecl<DB.ReferenceIdentifier, true>;
112
+ threshold: DB.MemberDecl<DB.Integer, true>;
113
+ }>, []>>>, true>;
114
+ }>, []>>>;
115
+ }, []>>, false>;
116
+ attackModifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AttackModifier", DB.Integer, []>>, false>;
117
+ parryModifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ParryModifier", DB.Integer, []>>, false>;
118
+ reach: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
119
+ length: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Length", DB.Integer, []>>, false>;
120
+ size: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ShieldSize", {
121
+ Small: DB.EnumCase<null>;
122
+ Medium: DB.EnumCase<null>;
123
+ Large: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"LargeShieldSize", DB.Object<{
124
+ attack_penalty: DB.MemberDecl<DB.Integer, false>;
125
+ }>, []>>>;
126
+ }, []>>, false>;
127
+ is_parrying_weapon: DB.MemberDecl<DB.Boolean, true>;
128
+ is_two_handed_weapon: DB.MemberDecl<DB.Boolean, true>;
129
+ is_improvised_weapon: DB.MemberDecl<DB.Boolean, true>;
130
+ }>, false>;
131
+ ranged_uses: DB.MemberDecl<DB.NestedEntityMap<string, {
132
+ damage: DB.MemberDecl<DB.TypeArgument<DB.Param<"Damage", DB.Type>>, true>;
133
+ reload_time: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ReloadTime", DB.Object<{
134
+ value: DB.MemberDecl<DB.Integer, true>;
135
+ }>, []>>>, true>;
136
+ range: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RangeBrackets", DB.Object<{
137
+ close: DB.MemberDecl<DB.Integer, true>;
138
+ medium: DB.MemberDecl<DB.Integer, true>;
139
+ far: DB.MemberDecl<DB.Integer, true>;
140
+ }>, []>>, true>;
141
+ ammunition: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AmmunitionishIdentifier", {
142
+ Ammunition: DB.EnumCase<DB.ReferenceIdentifier>;
143
+ Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
144
+ }, []>>, false>;
145
+ length: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Length", DB.Integer, []>>, false>;
146
+ is_improvised_weapon: DB.MemberDecl<DB.Boolean, true>;
147
+ }>, false>;
148
+ restrictedTo: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedTo", DB.Object<{
149
+ races: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToRaces", DB.Object<{
150
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
151
+ }>, []>>, false>;
152
+ cultures: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToCultures", DB.Object<{
153
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
154
+ }>, []>>, false>;
155
+ professions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToProfessions", DB.Object<{
156
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
157
+ }>, []>>, false>;
158
+ magicalTraditions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToMagicalTraditions", DB.Object<{
159
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
160
+ }>, []>>, false>;
161
+ blessedTraditions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToBlessedTraditions", DB.Object<{
162
+ scope: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RestrictedToBlessedTraditionsScope", {
163
+ Specific: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
164
+ Church: DB.EnumCase<null>;
165
+ Shamanistic: DB.EnumCase<null>;
166
+ }, []>>, true>;
167
+ isSanctifiedBy: DB.MemberDecl<DB.Boolean, true>;
168
+ }>, []>>, false>;
169
+ }>, []>>, false>;
170
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ImprovisedWeaponTranslation", {
171
+ advantage: DB.MemberDecl<DB.String, false>;
172
+ disadvantage: DB.MemberDecl<DB.String, false>;
173
+ }>, false>;
174
+ }>, []>>>;
175
+ Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SecondaryArmor", DB.Object<{
176
+ protection: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Protection", DB.Integer, []>>, true>;
177
+ encumbrance: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Encumbrance", DB.Integer, []>>, true>;
178
+ has_additional_penalties: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HasAdditionalPenalties", DB.Boolean, []>>, true>;
179
+ armorType: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ArmorType", {
180
+ Standard: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardArmorType", DB.Object<{
181
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
182
+ }>, []>>>;
183
+ StandardVariant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StandardVariantArmorType", DB.Object<{
184
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
185
+ sturdinessRating: DB.MemberDecl<DB.Integer, true>;
186
+ }>, []>>>;
187
+ Variant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"VariantArmorType", DB.Object<{
188
+ variantOf: DB.MemberDecl<DB.ReferenceIdentifier, true>;
189
+ }>, []>>>;
190
+ }, []>>, true>;
191
+ hit_zone: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HitZone", {
192
+ Head: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZone", DB.Object<{
193
+ combination_possibilities: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"HeadHitZoneCombinationPossibilities", DB.Object<{
194
+ armors: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
195
+ protection: DB.MemberDecl<DB.Integer, false>;
196
+ }>, []>>, false>;
197
+ }>, []>>>;
198
+ Torso: DB.EnumCase<null>;
199
+ Arms: DB.EnumCase<null>;
200
+ Legs: DB.EnumCase<null>;
201
+ }, []>>, false>;
202
+ restrictedTo: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedTo", DB.Object<{
203
+ races: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToRaces", DB.Object<{
204
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
205
+ }>, []>>, false>;
206
+ cultures: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToCultures", DB.Object<{
207
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
208
+ }>, []>>, false>;
209
+ professions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToProfessions", DB.Object<{
210
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
211
+ }>, []>>, false>;
212
+ magicalTraditions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToMagicalTraditions", DB.Object<{
213
+ scope: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
214
+ }>, []>>, false>;
215
+ blessedTraditions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RestrictedToBlessedTraditions", DB.Object<{
216
+ scope: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RestrictedToBlessedTraditionsScope", {
217
+ Specific: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
218
+ Church: DB.EnumCase<null>;
219
+ Shamanistic: DB.EnumCase<null>;
220
+ }, []>>, true>;
221
+ isSanctifiedBy: DB.MemberDecl<DB.Boolean, true>;
222
+ }>, []>>, false>;
223
+ }>, []>>, false>;
224
+ translations: DB.MemberDecl<DB.NestedEntityMap<"SecondaryArmorTranslation", {
225
+ advantage: DB.MemberDecl<DB.String, false>;
226
+ disadvantage: DB.MemberDecl<DB.String, false>;
227
+ }>, false>;
228
+ }>, []>>>;
229
+ }, []>>, false>;
230
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
231
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
232
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
233
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
234
+ printing: DB.MemberDecl<DB.Integer, false>;
235
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
236
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
237
+ InsideCoverFront: DB.EnumCase<null>;
238
+ InsideCoverBack: DB.EnumCase<null>;
239
+ Numbered: DB.EnumCase<DB.Integer>;
240
+ }, []>>, true>;
241
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
242
+ InsideCoverFront: DB.EnumCase<null>;
243
+ InsideCoverBack: DB.EnumCase<null>;
244
+ Numbered: DB.EnumCase<DB.Integer>;
245
+ }, []>>, false>;
246
+ }>, []>>>, true>;
247
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
248
+ }>, []>>, true>;
249
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
250
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
251
+ printing: DB.MemberDecl<DB.Integer, true>;
252
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
253
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
254
+ InsideCoverFront: DB.EnumCase<null>;
255
+ InsideCoverBack: DB.EnumCase<null>;
256
+ Numbered: DB.EnumCase<DB.Integer>;
257
+ }, []>>, true>;
258
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
259
+ InsideCoverFront: DB.EnumCase<null>;
260
+ InsideCoverBack: DB.EnumCase<null>;
261
+ Numbered: DB.EnumCase<DB.Integer>;
262
+ }, []>>, false>;
263
+ }>, []>>>, true>;
264
+ }>, []>>>;
265
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
266
+ printing: DB.MemberDecl<DB.Integer, true>;
267
+ }>, []>>>;
268
+ }, []>>>, false>;
269
+ }>, true>;
270
+ }>, []>>>, []>>, true>;
271
+ translations: DB.MemberDecl<DB.NestedEntityMap<`${string}Translation`, {
272
+ name: DB.MemberDecl<DB.String, true>;
273
+ secondary_name: DB.MemberDecl<DB.String, false>;
274
+ note: DB.MemberDecl<DB.String, false>;
275
+ rules: DB.MemberDecl<DB.String, false>;
276
+ errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
277
+ date: DB.MemberDecl<DB.Date, true>;
278
+ description: DB.MemberDecl<DB.String, true>;
279
+ }>, []>>>, []>>, false>;
280
+ }>, true>;
281
+ }, undefined>;
@@ -0,0 +1,48 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { src } from "../../source/_PublicationRef.js";
3
+ import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
4
+ import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
5
+ export const ArmorAccessory = DB.Entity(import.meta.url, {
6
+ name: "ArmorAccessory",
7
+ namePlural: "ArmorAccessories",
8
+ type: () => DB.Object({
9
+ cost: DB.Required({
10
+ comment: "The cost in silverthalers.",
11
+ type: DB.IncludeIdentifier(Cost),
12
+ }),
13
+ weight: DB.Optional({
14
+ comment: "The weight in kg.",
15
+ type: DB.IncludeIdentifier(Weight),
16
+ }),
17
+ complexity: DB.Optional({
18
+ comment: "The complexity of crafting the item.",
19
+ type: DB.IncludeIdentifier(Complexity),
20
+ }),
21
+ structure_points: DB.Optional({
22
+ comment: "The structure points of the item. Use an array if the item consists of multiple components that have individual structure points.",
23
+ type: DB.IncludeIdentifier(StructurePoints),
24
+ }),
25
+ combat_use: DB.Optional({
26
+ 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
+ type: DB.IncludeIdentifier(CombatUse),
28
+ }),
29
+ src,
30
+ translations: DefaultItemTranslations("ArmorAccessory"),
31
+ }),
32
+ instanceDisplayName: {},
33
+ uniqueConstraints: [
34
+ {
35
+ entityMapKeyPath: "translations",
36
+ keyPathInEntityMap: "name",
37
+ },
38
+ ],
39
+ customConstraints: ({ instanceContent, ...rest }) => {
40
+ if (instanceContent.combat_use && instanceContent.combat_use.kind === "Weapon") {
41
+ return checkWeaponCombatTechniqueIntegrity({
42
+ ...rest,
43
+ instanceContent: instanceContent.combat_use.Weapon,
44
+ });
45
+ }
46
+ return [];
47
+ },
48
+ });
@@ -28,6 +28,30 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
28
28
  Simple: DB.EnumCase<null>;
29
29
  Complex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ComplexComplexity", DB.Object<{
30
30
  ap_value: DB.MemberDecl<DB.Integer, true>;
31
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlainGeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
32
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
33
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
34
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
35
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
36
+ Hide: DB.EnumCase<null>;
37
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
38
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
39
+ Standalone: DB.EnumCase<null>;
40
+ Connected: DB.EnumCase<null>;
41
+ }, []>>, false>;
42
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
43
+ replacement: DB.MemberDecl<DB.String, true>;
44
+ }>, true>;
45
+ }>, []>>>;
46
+ }, []>>, false>;
47
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
48
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
49
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
50
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
51
+ text: DB.MemberDecl<DB.String, true>;
52
+ }>, true>;
53
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
54
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
31
55
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
32
56
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
33
57
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {