@optolith/database-schema 0.98.0 → 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/gen/types.d.ts +615 -119
  3. package/lib/main.js +1 -0
  4. package/lib/types/Locale.d.ts +13 -4
  5. package/lib/types/Locale.js +13 -4
  6. package/lib/types/Profession.d.ts +21 -0
  7. package/lib/types/Profession.js +20 -0
  8. package/lib/types/_ActivatableAdvanced.d.ts +28 -0
  9. package/lib/types/_ActivatableAdvanced.js +57 -1
  10. package/lib/types/_ActivatableCombat.d.ts +43 -39
  11. package/lib/types/_ActivatableCombat.js +66 -72
  12. package/lib/types/_Identifier.d.ts +1 -0
  13. package/lib/types/_Identifier.js +2 -0
  14. package/lib/types/_IdentifierGroup.d.ts +1 -0
  15. package/lib/types/_IdentifierGroup.js +2 -1
  16. package/lib/types/equipment/EquipmentPackage.d.ts +1 -0
  17. package/lib/types/equipment/item/Armor.d.ts +22 -0
  18. package/lib/types/equipment/item/Armor.js +18 -0
  19. package/lib/types/equipment/item/ArmorAccessory.d.ts +13 -0
  20. package/lib/types/equipment/item/BandageOrRemedy.d.ts +13 -0
  21. package/lib/types/equipment/item/CeremonialItem.d.ts +13 -0
  22. package/lib/types/equipment/item/Clothes.d.ts +13 -0
  23. package/lib/types/equipment/item/Container.d.ts +13 -0
  24. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +17 -36
  25. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +15 -4
  26. package/lib/types/equipment/item/IlluminationLightSource.d.ts +13 -0
  27. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +13 -0
  28. package/lib/types/equipment/item/Item.d.ts +13 -0
  29. package/lib/types/equipment/item/ItemComponent.d.ts +127 -0
  30. package/lib/types/equipment/item/ItemComponent.js +313 -0
  31. package/lib/types/equipment/item/Liebesspielzeug.d.ts +13 -0
  32. package/lib/types/equipment/item/LuxuryGood.d.ts +13 -0
  33. package/lib/types/equipment/item/MagicalArtifact.d.ts +13 -0
  34. package/lib/types/equipment/item/MusicalInstrument.d.ts +13 -0
  35. package/lib/types/equipment/item/OrienteeringAid.d.ts +13 -0
  36. package/lib/types/equipment/item/RopeOrChain.d.ts +13 -0
  37. package/lib/types/equipment/item/Stationery.d.ts +13 -0
  38. package/lib/types/equipment/item/ThievesTool.d.ts +13 -0
  39. package/lib/types/equipment/item/TravelGearOrTool.d.ts +13 -0
  40. package/lib/types/equipment/item/Weapon.d.ts +4 -0
  41. package/lib/types/equipment/item/WeaponAccessory.d.ts +13 -0
  42. package/lib/types/equipment/item/_Item.d.ts +30 -0
  43. package/lib/types/equipment/item/_Item.js +8 -0
  44. package/lib/types/index.d.ts +1 -0
  45. package/lib/types/index.js +1 -0
  46. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +61 -5
  47. package/lib/types/prerequisites/PrerequisiteGroups.js +4 -1
  48. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +2 -2
  49. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.d.ts +150 -0
  50. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.js +53 -0
  51. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +40 -39
  52. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +40 -39
  53. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +40 -39
  54. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +68 -39
  55. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +40 -39
  56. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +28 -0
  57. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +28 -0
  58. package/lib/types/specialAbility/MagicalTradition.d.ts +1 -0
  59. package/lib/types/specialAbility/MagicalTradition.js +5 -1
  60. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +28 -0
  61. package/package.json +1 -1
package/lib/main.js CHANGED
@@ -91,6 +91,7 @@ export const schema = new Schema([
91
91
  Types.IlluminationRefillOrSupply,
92
92
  Types.InstrumentEnchantment,
93
93
  Types.Item,
94
+ Types.ItemComponent,
94
95
  Types.JesterTrick,
95
96
  Types.Jewelry,
96
97
  Types.KarmaSpecialAbility,
@@ -1347,6 +1347,9 @@ export declare const Locale: DB.Entity<"Locale", {
1347
1347
  ".input {$count :number} {{{$count} more by primary patron}}": null;
1348
1348
  Patron: null;
1349
1349
  ".input {$count :number} {{Here you can select {$count} fitting special abilities.}}": null;
1350
+ ".input {$count :number} {{{$previousList} as well as {$count} advanced special abilities}}": null;
1351
+ ".input {$count :number} {{{$previousList} as well as {$count} advanced special abilities depending on {$option}}}": null;
1352
+ ".input {$count :number} {{{$count} of the following list}}": null;
1350
1353
  "corresponding combat style special ability": null;
1351
1354
  "corresponding liturgical style special ability": null;
1352
1355
  "corresponding magic style special ability": null;
@@ -1476,16 +1479,22 @@ export declare const Locale: DB.Entity<"Locale", {
1476
1479
  Complex: null;
1477
1480
  Various: null;
1478
1481
  "Parrying weapon (PA bonus +1 for the main weapon)": null;
1482
+ "{$variantArmor} is a type of {$baseArmor}.": null;
1483
+ "{$variantHitZoneArmor} counts as {$baseArmor} for hit zone {$hitZone}.": null;
1484
+ Arms: null;
1485
+ Head: null;
1486
+ Legs: null;
1487
+ Torso: null;
1488
+ "many shamans": null;
1479
1489
  "To buy this item during hero creation, the character must have Tradition ({$traditions}).": null;
1480
1490
  "To buy {$itemName} during hero creation, the character must have Tradition ({$traditions}).": null;
1481
- "Sanctified ({$traditions}); only {$blessedOnes} may purchase weapons sanctified by {$gods}, respectively.": null;
1482
- "Sanctified ({$tradition}); only {$blessedOnes} may purchase weapons sanctified by {$god}.": null;
1491
+ "Sanctified ({$traditions})": null;
1492
+ "only {$blessedOnes} may purchase weapons sanctified by {$gods}, respectively.": null;
1493
+ "only {$blessedOnes} may purchase weapons sanctified by {$god}.": null;
1483
1494
  "To buy this item during hero creation, the character must be from {$cultures}.": null;
1484
1495
  "To buy {$itemName} during hero creation, the character must be from {$cultures}.": null;
1485
1496
  "To buy this item during hero creation, the character must have a shamanistic tradition.": null;
1486
1497
  "To buy {$itemName} during hero creation, the character must have a shamanistic tradition.": null;
1487
- "To buy this item during hero creation, the character must be from {$groupOfCultures}.": null;
1488
- "To buy {$itemName} during hero creation, the character must be from {$groupOfCultures}.": null;
1489
1498
  ".input {$value :number} {{{$value} inches}}": null;
1490
1499
  unlimited: null;
1491
1500
  "Structure Points": null;
@@ -1382,6 +1382,9 @@ export const Locale = DB.Entity(import.meta.url, {
1382
1382
  ".input {$count :number} {{{$count} more by primary patron}}": null,
1383
1383
  "Patron": null,
1384
1384
  ".input {$count :number} {{Here you can select {$count} fitting special abilities.}}": null,
1385
+ ".input {$count :number} {{{$previousList} as well as {$count} advanced special abilities}}": null,
1386
+ ".input {$count :number} {{{$previousList} as well as {$count} advanced special abilities depending on {$option}}}": null,
1387
+ ".input {$count :number} {{{$count} of the following list}}": null,
1385
1388
  "corresponding combat style special ability": null,
1386
1389
  "corresponding liturgical style special ability": null,
1387
1390
  "corresponding magic style special ability": null,
@@ -1518,16 +1521,22 @@ export const Locale = DB.Entity(import.meta.url, {
1518
1521
  "Complex": null,
1519
1522
  "Various": null,
1520
1523
  "Parrying weapon (PA bonus +1 for the main weapon)": null,
1524
+ "{$variantArmor} is a type of {$baseArmor}.": null,
1525
+ "{$variantHitZoneArmor} counts as {$baseArmor} for hit zone {$hitZone}.": null,
1526
+ "Arms": null,
1527
+ "Head": null,
1528
+ "Legs": null,
1529
+ "Torso": null,
1530
+ "many shamans": null,
1521
1531
  "To buy this item during hero creation, the character must have Tradition ({$traditions}).": null,
1522
1532
  "To buy {$itemName} during hero creation, the character must have Tradition ({$traditions}).": null,
1523
- "Sanctified ({$traditions}); only {$blessedOnes} may purchase weapons sanctified by {$gods}, respectively.": null,
1524
- "Sanctified ({$tradition}); only {$blessedOnes} may purchase weapons sanctified by {$god}.": null,
1533
+ "Sanctified ({$traditions})": null,
1534
+ "only {$blessedOnes} may purchase weapons sanctified by {$gods}, respectively.": null,
1535
+ "only {$blessedOnes} may purchase weapons sanctified by {$god}.": null,
1525
1536
  "To buy this item during hero creation, the character must be from {$cultures}.": null,
1526
1537
  "To buy {$itemName} during hero creation, the character must be from {$cultures}.": null,
1527
1538
  "To buy this item during hero creation, the character must have a shamanistic tradition.": null,
1528
1539
  "To buy {$itemName} during hero creation, the character must have a shamanistic tradition.": null,
1529
- "To buy this item during hero creation, the character must be from {$groupOfCultures}.": null,
1530
- "To buy {$itemName} during hero creation, the character must be from {$groupOfCultures}.": null,
1531
1540
  ".input {$value :number} {{{$value} inches}}": null,
1532
1541
  "unlimited": null,
1533
1542
  "Structure Points": null,
@@ -157,6 +157,13 @@ export declare const Profession: DB.Entity<"Profession", {
157
157
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
158
158
  ap_value: DB.MemberDecl<DB.Integer, true>;
159
159
  }>, []>>, false>;
160
+ lockAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LockAdventurePointsOption", DB.Object<{
161
+ apValue: DB.MemberDecl<DB.Integer, true>;
162
+ entries: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpellworkIdentifier", {
163
+ Spell: DB.EnumCase<DB.ReferenceIdentifier>;
164
+ Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
165
+ }, []>>>, true>;
166
+ }>, []>>, false>;
160
167
  }>, []>>, false>;
161
168
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
162
169
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleProfessionSpecialAbility", DB.Object<{
@@ -1054,6 +1061,13 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1054
1061
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
1055
1062
  ap_value: DB.MemberDecl<DB.Integer, true>;
1056
1063
  }>, []>>, false>;
1064
+ lockAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LockAdventurePointsOption", DB.Object<{
1065
+ apValue: DB.MemberDecl<DB.Integer, true>;
1066
+ entries: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpellworkIdentifier", {
1067
+ Spell: DB.EnumCase<DB.ReferenceIdentifier>;
1068
+ Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
1069
+ }, []>>>, true>;
1070
+ }>, []>>, false>;
1057
1071
  }>, []>>, false>;
1058
1072
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
1059
1073
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleProfessionSpecialAbility", DB.Object<{
@@ -1944,6 +1958,13 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1944
1958
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
1945
1959
  ap_value: DB.MemberDecl<DB.Integer, true>;
1946
1960
  }>, []>>, false>;
1961
+ lockAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LockAdventurePointsOption", DB.Object<{
1962
+ apValue: DB.MemberDecl<DB.Integer, true>;
1963
+ entries: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpellworkIdentifier", {
1964
+ Spell: DB.EnumCase<DB.ReferenceIdentifier>;
1965
+ Ritual: DB.EnumCase<DB.ReferenceIdentifier>;
1966
+ }, []>>>, true>;
1967
+ }>, []>>, false>;
1947
1968
  }>, []>>, false>;
1948
1969
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
1949
1970
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleProfessionSpecialAbility", DB.Object<{
@@ -514,6 +514,9 @@ const ProfessionPackageOptions = DB.TypeAlias(import.meta.url, {
514
514
  liturgies: DB.Optional({
515
515
  type: DB.IncludeIdentifier(LiturgiesOptions),
516
516
  }),
517
+ lockAdventurePoints: DB.Optional({
518
+ type: DB.IncludeIdentifier(LockAdventurePointsOption),
519
+ }),
517
520
  }, { minProperties: 1 }),
518
521
  });
519
522
  const ProfessionVariantPackageOptions = DB.TypeAlias(import.meta.url, {
@@ -768,6 +771,23 @@ const SpecialAbilitiesForAdventurePointsOption = DB.TypeAlias(import.meta.url, {
768
771
  }),
769
772
  }),
770
773
  });
774
+ const LockAdventurePointsOption = DB.TypeAlias(import.meta.url, {
775
+ name: "LockAdventurePointsOption",
776
+ comment: `Keep AP for use after character creation to buy or improve entries.`,
777
+ type: () => DB.Object({
778
+ apValue: DB.Required({
779
+ comment: "The AP value that is going to be locked for later use.",
780
+ type: DB.Integer({ minimum: 1 }),
781
+ }),
782
+ entries: DB.Required({
783
+ comment: "The entries the AP can be used for.",
784
+ type: DB.Array(DB.IncludeIdentifier(SpellworkIdentifier), {
785
+ minItems: 1,
786
+ uniqueItems: true,
787
+ }),
788
+ }),
789
+ }),
790
+ });
771
791
  const ProfessionName = DB.TypeAlias(import.meta.url, {
772
792
  name: "ProfessionName",
773
793
  comment: "The name of the profession that may have sex-specific names. Useful if the term in generell is different (i.e. actor/actress) or if the language uses gendered nouns. The default name is also used in case neither the male nor female name strictly applies.",
@@ -47,5 +47,33 @@ export declare const advanced: (identifier: DB.Type) => DB.MemberDecl<DB.Array<D
47
47
  }>, []>>>;
48
48
  }, []>>, false>;
49
49
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>;
50
+ ByOption: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"AdvancedSpecialAbilityByOption", DB.Object<{
51
+ map: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"AdvancedSpecialAbilityByOptionMapping", DB.Object<{
52
+ option: DB.MemberDecl<DB.ReferenceIdentifier, true>;
53
+ associatedAdvanced: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"AdvancedSpecialAbilityByOptionMappingRule", {
54
+ General: DB.EnumCase<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>>;
55
+ OneOf: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"OneOfAdvancedSpecialAbilityOptions", DB.Object<{
56
+ options: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>>, true>;
57
+ is_selection_required_on_purchase: DB.MemberDecl<DB.Boolean, true>;
58
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
59
+ Hide: DB.EnumCase<null>;
60
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
61
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
62
+ Standalone: DB.EnumCase<null>;
63
+ Connected: DB.EnumCase<null>;
64
+ }, []>>, false>;
65
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
66
+ replacement: DB.MemberDecl<DB.String, true>;
67
+ }>, true>;
68
+ }>, []>>>;
69
+ }, []>>, false>;
70
+ }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>;
71
+ }, [Identifier: DB.Param<"Identifier", DB.Type>]>>, true>;
72
+ }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, true>;
73
+ fallbackOption: DB.MemberDecl<DB.ReferenceIdentifier, false>;
74
+ translations: DB.MemberDecl<DB.NestedEntityMap<"AdvancedSpecialAbilityByOptionTranslation", {
75
+ label: DB.MemberDecl<DB.String, true>;
76
+ }>, false>;
77
+ }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>;
50
78
  Any: DB.EnumCase<null>;
51
79
  }, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, true>;
@@ -1,6 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { MagicalTraditionIdentifier, PatronIdentifier } from "./_Identifier.js";
2
+ import { GeneralSelectOptionIdentifier, MagicalTraditionIdentifier, PatronIdentifier, } from "./_Identifier.js";
3
3
  import { AdvancedSpecialAbilityRestrictedOptionIdentifier } from "./_IdentifierGroup.js";
4
+ import { NestedTranslationMap } from "./Locale.js";
4
5
  import { DisplayOption } from "./prerequisites/DisplayOption.js";
5
6
  const AdvancedSpecialAbility = DB.GenEnum(import.meta.url, {
6
7
  name: "AdvancedSpecialAbility",
@@ -23,6 +24,9 @@ const AdvancedSpecialAbility = DB.GenEnum(import.meta.url, {
23
24
  DB.TypeArgument(Identifier),
24
25
  ]),
25
26
  }),
27
+ ByOption: DB.EnumCase({
28
+ type: DB.GenIncludeIdentifier(AdvancedSpecialAbilityByOption, [DB.TypeArgument(Identifier)]),
29
+ }),
26
30
  Any: DB.EnumCase({
27
31
  comment: "Any advanced special ability is possible.",
28
32
  type: null,
@@ -96,6 +100,58 @@ const AdvancedSpecialAbilityDerivedFromExternalOptionMapping = DB.GenTypeAlias(i
96
100
  }),
97
101
  }),
98
102
  });
103
+ const AdvancedSpecialAbilityByOption = DB.GenTypeAlias(import.meta.url, {
104
+ name: "AdvancedSpecialAbilityByOption",
105
+ parameters: [DB.Param("Identifier")],
106
+ type: Identifier => DB.Object({
107
+ map: DB.Required({
108
+ comment: "Map options from the external entry to allowed advanced special abilities.",
109
+ type: DB.Array(DB.GenIncludeIdentifier(AdvancedSpecialAbilityByOptionMapping, [
110
+ DB.TypeArgument(Identifier),
111
+ ]), { minItems: 1 }),
112
+ }),
113
+ fallbackOption: DB.Optional({
114
+ comment: "One of the options counts all fallback options and should be sorted last in the list.",
115
+ type: GeneralSelectOptionIdentifier(),
116
+ }),
117
+ translations: NestedTranslationMap(DB.Optional, "AdvancedSpecialAbilityByOption", DB.Object({
118
+ label: DB.Required({
119
+ comment: "How to label all options before listing each option with its advanced special ability/-ies.",
120
+ type: DB.String({ minLength: 1 }),
121
+ }),
122
+ })),
123
+ }),
124
+ });
125
+ const AdvancedSpecialAbilityByOptionMapping = DB.GenTypeAlias(import.meta.url, {
126
+ name: "AdvancedSpecialAbilityByOptionMapping",
127
+ parameters: [DB.Param("Identifier")],
128
+ comment: "Mapping from an option of this entry to an allowed advanced special ability.",
129
+ type: Identifier => DB.Object({
130
+ option: DB.Required({
131
+ comment: "The select option’s identifier.",
132
+ type: PatronIdentifier(),
133
+ }),
134
+ associatedAdvanced: DB.Required({
135
+ comment: "The advanced special ability’s identifier.",
136
+ type: DB.GenIncludeIdentifier(AdvancedSpecialAbilityByOptionMappingRule, [
137
+ DB.TypeArgument(Identifier),
138
+ ]),
139
+ }),
140
+ }),
141
+ });
142
+ const AdvancedSpecialAbilityByOptionMappingRule = DB.GenEnum(import.meta.url, {
143
+ name: "AdvancedSpecialAbilityByOptionMappingRule",
144
+ comment: "A reference to an advanced special ability.",
145
+ parameters: [DB.Param("Identifier")],
146
+ values: Identifier => ({
147
+ General: DB.EnumCase({ type: DB.TypeArgument(Identifier) }),
148
+ OneOf: DB.EnumCase({
149
+ type: DB.GenIncludeIdentifier(OneOfAdvancedSpecialAbilityOptions, [
150
+ DB.TypeArgument(Identifier),
151
+ ]),
152
+ }),
153
+ }),
154
+ });
99
155
  export const advanced = (identifier) => DB.Required({
100
156
  comment: "The Advanced Special Abilities for the respective Style Special Ability. Sometimes, only a specific select option or a set of select options of an entry is allowed, which can be modelled by the option property. It can also be that you can choose from a set of special abilities, but then you can’t specify an option.",
101
157
  type: DB.Array(DB.GenIncludeIdentifier(AdvancedSpecialAbility, [identifier]), {
@@ -69,41 +69,44 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
69
69
  None: DB.EnumCase<null>;
70
70
  DependingOnCombatStyle: DB.EnumCase<null>;
71
71
  All: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableCombatTechniques", DB.Object<{
72
- restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableAllCombatTechniquesRestriction", {
73
- Improvised: DB.EnumCase<null>;
74
- PointedBlade: DB.EnumCase<null>;
75
- Mount: DB.EnumCase<null>;
76
- Race: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesRaceRestriction", DB.ReferenceIdentifier, []>>>;
77
- ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
72
+ restrictions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableAllCombatTechniquesRestrictions", DB.Object<{
73
+ isImprovised: DB.MemberDecl<DB.Boolean, false>;
74
+ hasPointedBlade: DB.MemberDecl<DB.Boolean, false>;
75
+ whileMounted: DB.MemberDecl<DB.Boolean, false>;
76
+ race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
77
+ excludeCombatTechniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
78
78
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
79
- }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
80
- }, []>>, false>;
79
+ }>, [Ref: DB.Param<"Ref", DB.Type>]>>, false>;
80
+ }>, []>>, false>;
81
81
  }>, []>>>;
82
82
  AllClose: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableCloseCombatTechniques", DB.Object<{
83
- restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableCloseCombatTechniquesRestriction", {
84
- Improvised: DB.EnumCase<null>;
85
- PointedBlade: DB.EnumCase<null>;
86
- Mount: DB.EnumCase<null>;
87
- HasParry: DB.EnumCase<null>;
88
- OneHanded: DB.EnumCase<null>;
89
- TwoHanded: DB.EnumCase<null>;
90
- ParryingWeapon: DB.EnumCase<null>;
91
- Race: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesRaceRestriction", DB.ReferenceIdentifier, []>>>;
92
- ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
83
+ restrictions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCloseCombatTechniquesRestrictions", DB.Object<{
84
+ isImprovised: DB.MemberDecl<DB.Boolean, false>;
85
+ hasPointedBlade: DB.MemberDecl<DB.Boolean, false>;
86
+ whileMounted: DB.MemberDecl<DB.Boolean, false>;
87
+ hasParry: DB.MemberDecl<DB.Boolean, false>;
88
+ isOneHanded: DB.MemberDecl<DB.Boolean, false>;
89
+ isTwoHanded: DB.MemberDecl<DB.Boolean, false>;
90
+ isParryingWeapon: DB.MemberDecl<DB.Boolean, false>;
91
+ race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
92
+ weaponClass: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"MeleeWeaponClass", {
93
+ Axe: DB.EnumCase<null>;
94
+ }, []>>, false>;
95
+ excludeCombatTechniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
93
96
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
94
- }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
95
- }, []>>, false>;
97
+ }>, [Ref: DB.Param<"Ref", DB.Type>]>>, false>;
98
+ }>, []>>, false>;
96
99
  }>, []>>>;
97
100
  AllRanged: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AllApplicableRangedCombatTechniques", DB.Object<{
98
- restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableRangedCombatTechniquesRestriction", {
99
- Improvised: DB.EnumCase<null>;
100
- PointedBlade: DB.EnumCase<null>;
101
- Mount: DB.EnumCase<null>;
102
- Race: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesRaceRestriction", DB.ReferenceIdentifier, []>>>;
103
- ExcludeCombatTechniques: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
101
+ restrictions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableRangedCombatTechniquesRestrictions", DB.Object<{
102
+ isImprovised: DB.MemberDecl<DB.Boolean, false>;
103
+ hasPointedBlade: DB.MemberDecl<DB.Boolean, false>;
104
+ whileMounted: DB.MemberDecl<DB.Boolean, false>;
105
+ race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
106
+ excludeCombatTechniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"ApplicableCombatTechniquesNegativeCombatTechniquesRestriction", DB.Object<{
104
107
  list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"Ref", DB.Type>>>, true>;
105
- }>, [Ref: DB.Param<"Ref", DB.Type>]>>>;
106
- }, []>>, false>;
108
+ }>, [Ref: DB.Param<"Ref", DB.Type>]>>, false>;
109
+ }>, []>>, false>;
107
110
  }>, []>>>;
108
111
  Specific: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecificApplicableCombatTechniques", DB.Object<{
109
112
  list: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecificApplicableCombatTechnique", DB.Object<{
@@ -111,20 +114,21 @@ export declare const combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], D
111
114
  CloseCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
112
115
  RangedCombatTechnique: DB.EnumCase<DB.ReferenceIdentifier>;
113
116
  }, []>>, true>;
114
- restriction: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableSpecificCombatTechniquesRestriction", {
115
- Improvised: DB.EnumCase<null>;
116
- PointedBlade: DB.EnumCase<null>;
117
- Mount: DB.EnumCase<null>;
118
- Race: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesRaceRestriction", DB.ReferenceIdentifier, []>>>;
119
- Level: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableCombatTechniquesLevelRestriction", DB.Object<{
120
- level: DB.MemberDecl<DB.Integer, true>;
121
- }>, []>>>;
122
- OneBluntSide: DB.EnumCase<null>;
123
- }, []>>, false>;
117
+ restrictions: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableSpecificCombatTechniquesRestrictions", DB.Object<{
118
+ isImprovised: DB.MemberDecl<DB.Boolean, false>;
119
+ hasPointedBlade: DB.MemberDecl<DB.Boolean, false>;
120
+ whileMounted: DB.MemberDecl<DB.Boolean, false>;
121
+ race: DB.MemberDecl<DB.ReferenceIdentifier, false>;
122
+ level: DB.MemberDecl<DB.Integer, false>;
123
+ hasOneBluntSide: DB.MemberDecl<DB.Boolean, false>;
124
+ }>, []>>, false>;
124
125
  translation: DB.MemberDecl<DB.NestedEntityMap<"SpecificApplicableCombatTechniqueTranslation", {
125
- restriction: DB.MemberDecl<DB.String, true>;
126
+ restrictions: DB.MemberDecl<DB.String, true>;
126
127
  }>, false>;
127
128
  weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
128
129
  }>, []>>>, true>;
129
130
  }>, []>>>;
130
131
  }, []>>, true>;
132
+ export declare const MeleeWeaponClass: DB.Enum<"MeleeWeaponClass", {
133
+ Axe: DB.EnumCase<null>;
134
+ }, []>;
@@ -237,24 +237,24 @@ export const combat_techniques = DB.Required({
237
237
  const AllApplicableCombatTechniques = DB.TypeAlias(import.meta.url, {
238
238
  name: "AllApplicableCombatTechniques",
239
239
  type: () => DB.Object({
240
- restriction: DB.Optional({
241
- type: DB.IncludeIdentifier(ApplicableAllCombatTechniquesRestriction),
240
+ restrictions: DB.Optional({
241
+ type: DB.IncludeIdentifier(ApplicableAllCombatTechniquesRestrictions),
242
242
  }),
243
243
  }),
244
244
  });
245
245
  const AllApplicableCloseCombatTechniques = DB.TypeAlias(import.meta.url, {
246
246
  name: "AllApplicableCloseCombatTechniques",
247
247
  type: () => DB.Object({
248
- restriction: DB.Optional({
249
- type: DB.IncludeIdentifier(ApplicableCloseCombatTechniquesRestriction),
248
+ restrictions: DB.Optional({
249
+ type: DB.IncludeIdentifier(ApplicableCloseCombatTechniquesRestrictions),
250
250
  }),
251
251
  }),
252
252
  });
253
253
  const AllApplicableRangedCombatTechniques = DB.TypeAlias(import.meta.url, {
254
254
  name: "AllApplicableRangedCombatTechniques",
255
255
  type: () => DB.Object({
256
- restriction: DB.Optional({
257
- type: DB.IncludeIdentifier(ApplicableRangedCombatTechniquesRestriction),
256
+ restrictions: DB.Optional({
257
+ type: DB.IncludeIdentifier(ApplicableRangedCombatTechniquesRestrictions),
258
258
  }),
259
259
  }),
260
260
  });
@@ -272,12 +272,12 @@ const SpecificApplicableCombatTechnique = DB.TypeAlias(import.meta.url, {
272
272
  id: DB.Required({
273
273
  type: DB.IncludeIdentifier(CombatTechniqueIdentifier),
274
274
  }),
275
- restriction: DB.Optional({
276
- type: DB.IncludeIdentifier(ApplicableSpecificCombatTechniquesRestriction),
275
+ restrictions: DB.Optional({
276
+ type: DB.IncludeIdentifier(ApplicableSpecificCombatTechniquesRestrictions),
277
277
  }),
278
278
  translation: NestedTranslationMap(DB.Optional, "SpecificApplicableCombatTechnique", DB.Object({
279
- restriction: DB.Required({
280
- comment: "The additional restriction of the combat technique.",
279
+ restrictions: DB.Required({
280
+ comment: "The additional restriction(s) of the combat technique.",
281
281
  type: DB.String({ minLength: 1, markdown: "inline" }),
282
282
  }),
283
283
  })),
@@ -287,62 +287,69 @@ const SpecificApplicableCombatTechnique = DB.TypeAlias(import.meta.url, {
287
287
  }),
288
288
  }),
289
289
  });
290
- const ApplicableAllCombatTechniquesRestriction = DB.Enum(import.meta.url, {
291
- name: "ApplicableAllCombatTechniquesRestriction",
292
- values: () => ({
293
- Improvised: DB.EnumCase({ type: null }),
294
- PointedBlade: DB.EnumCase({ type: null }),
295
- Mount: DB.EnumCase({ type: null }),
296
- Race: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableCombatTechniquesRaceRestriction) }),
297
- ExcludeCombatTechniques: DB.EnumCase({
298
- type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [
299
- DB.IncludeIdentifier(CombatTechniqueIdentifier),
300
- ]),
290
+ const ApplicableAllCombatTechniquesRestrictions = DB.TypeAlias(import.meta.url, {
291
+ name: "ApplicableAllCombatTechniquesRestrictions",
292
+ type: () => DB.Object({
293
+ isImprovised: DB.Optional({ type: DB.Boolean() }),
294
+ hasPointedBlade: DB.Optional({ type: DB.Boolean() }),
295
+ whileMounted: DB.Optional({ type: DB.Boolean() }),
296
+ race: DB.Optional({ type: RaceIdentifier() }),
297
+ excludeCombatTechniques: DB.Optional({
298
+ type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [DB.IncludeIdentifier(CombatTechniqueIdentifier)]),
301
299
  }),
302
- }),
300
+ }, { minProperties: 1 }),
303
301
  });
304
- const ApplicableCloseCombatTechniquesRestriction = DB.Enum(import.meta.url, {
305
- name: "ApplicableCloseCombatTechniquesRestriction",
302
+ const ApplicableCloseCombatTechniquesRestrictions = DB.TypeAlias(import.meta.url, {
303
+ name: "ApplicableCloseCombatTechniquesRestrictions",
304
+ type: () => DB.Object({
305
+ isImprovised: DB.Optional({ type: DB.Boolean() }),
306
+ hasPointedBlade: DB.Optional({ type: DB.Boolean() }),
307
+ whileMounted: DB.Optional({ type: DB.Boolean() }),
308
+ hasParry: DB.Optional({ type: DB.Boolean() }),
309
+ isOneHanded: DB.Optional({ type: DB.Boolean() }),
310
+ isTwoHanded: DB.Optional({ type: DB.Boolean() }),
311
+ isParryingWeapon: DB.Optional({ type: DB.Boolean() }),
312
+ race: DB.Optional({ type: RaceIdentifier() }),
313
+ weaponClass: DB.Optional({
314
+ comment: "Only a class of melee weapon is allowed",
315
+ type: DB.IncludeIdentifier(MeleeWeaponClass),
316
+ }),
317
+ excludeCombatTechniques: DB.Optional({
318
+ type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [CloseCombatTechniqueIdentifier()]),
319
+ }),
320
+ }, { minProperties: 1 }),
321
+ });
322
+ export const MeleeWeaponClass = DB.Enum(import.meta.url, {
323
+ name: "MeleeWeaponClass",
306
324
  values: () => ({
307
- Improvised: DB.EnumCase({ type: null }),
308
- PointedBlade: DB.EnumCase({ type: null }),
309
- Mount: DB.EnumCase({ type: null }),
310
- HasParry: DB.EnumCase({ type: null }),
311
- OneHanded: DB.EnumCase({ type: null }),
312
- TwoHanded: DB.EnumCase({ type: null }),
313
- ParryingWeapon: DB.EnumCase({ type: null }),
314
- Race: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableCombatTechniquesRaceRestriction) }),
315
- ExcludeCombatTechniques: DB.EnumCase({
316
- type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [
317
- CloseCombatTechniqueIdentifier(),
318
- ]),
319
- }),
325
+ Axe: DB.EnumCase({ type: null }),
320
326
  }),
321
327
  });
322
- const ApplicableRangedCombatTechniquesRestriction = DB.Enum(import.meta.url, {
323
- name: "ApplicableRangedCombatTechniquesRestriction",
324
- values: () => ({
325
- Improvised: DB.EnumCase({ type: null }),
326
- PointedBlade: DB.EnumCase({ type: null }),
327
- Mount: DB.EnumCase({ type: null }),
328
- Race: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableCombatTechniquesRaceRestriction) }),
329
- ExcludeCombatTechniques: DB.EnumCase({
330
- type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [
331
- RangedCombatTechniqueIdentifier(),
332
- ]),
328
+ const ApplicableRangedCombatTechniquesRestrictions = DB.TypeAlias(import.meta.url, {
329
+ name: "ApplicableRangedCombatTechniquesRestrictions",
330
+ type: () => DB.Object({
331
+ isImprovised: DB.Optional({ type: DB.Boolean() }),
332
+ hasPointedBlade: DB.Optional({ type: DB.Boolean() }),
333
+ whileMounted: DB.Optional({ type: DB.Boolean() }),
334
+ race: DB.Optional({ type: RaceIdentifier() }),
335
+ excludeCombatTechniques: DB.Optional({
336
+ type: DB.GenIncludeIdentifier(ApplicableCombatTechniquesNegativeCombatTechniquesRestriction, [RangedCombatTechniqueIdentifier()]),
333
337
  }),
334
- }),
338
+ }, { minProperties: 1 }),
335
339
  });
336
- const ApplicableSpecificCombatTechniquesRestriction = DB.Enum(import.meta.url, {
337
- name: "ApplicableSpecificCombatTechniquesRestriction",
338
- values: () => ({
339
- Improvised: DB.EnumCase({ type: null }),
340
- PointedBlade: DB.EnumCase({ type: null }),
341
- Mount: DB.EnumCase({ type: null }),
342
- Race: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableCombatTechniquesRaceRestriction) }),
343
- Level: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableCombatTechniquesLevelRestriction) }),
344
- OneBluntSide: DB.EnumCase({ type: null }),
345
- }),
340
+ const ApplicableSpecificCombatTechniquesRestrictions = DB.TypeAlias(import.meta.url, {
341
+ name: "ApplicableSpecificCombatTechniquesRestrictions",
342
+ type: () => DB.Object({
343
+ isImprovised: DB.Optional({ type: DB.Boolean() }),
344
+ hasPointedBlade: DB.Optional({ type: DB.Boolean() }),
345
+ whileMounted: DB.Optional({ type: DB.Boolean() }),
346
+ race: DB.Optional({ type: RaceIdentifier() }),
347
+ level: DB.Optional({
348
+ comment: "The combat special ability is only applicable on a certain level.",
349
+ type: DB.Integer({ minimum: 1 }),
350
+ }),
351
+ hasOneBluntSide: DB.Optional({ type: DB.Boolean() }),
352
+ }, { minProperties: 1 }),
346
353
  });
347
354
  const ApplicableCombatTechniquesNegativeCombatTechniquesRestriction = DB.GenTypeAlias(import.meta.url, {
348
355
  name: "ApplicableCombatTechniquesNegativeCombatTechniquesRestriction",
@@ -354,16 +361,3 @@ const ApplicableCombatTechniquesNegativeCombatTechniquesRestriction = DB.GenType
354
361
  }),
355
362
  }),
356
363
  });
357
- const ApplicableCombatTechniquesRaceRestriction = DB.TypeAlias(import.meta.url, {
358
- name: "ApplicableCombatTechniquesRaceRestriction",
359
- type: () => RaceIdentifier(),
360
- });
361
- const ApplicableCombatTechniquesLevelRestriction = DB.TypeAlias(import.meta.url, {
362
- name: "ApplicableCombatTechniquesLevelRestriction",
363
- type: () => DB.Object({
364
- level: DB.Required({
365
- comment: "The combat special ability is only applicable on a certain level.",
366
- type: DB.Integer({ minimum: 1 }),
367
- }),
368
- }),
369
- });
@@ -89,6 +89,7 @@ export declare const IlluminationRefillOrSupplyIdentifier: () => R;
89
89
  export declare const InfluenceIdentifier: () => R;
90
90
  export declare const InstrumentEnchantmentIdentifier: () => R;
91
91
  export declare const ItemIdentifier: () => R;
92
+ export declare const ItemComponentIdentifier: () => R;
92
93
  export declare const JesterTrickIdentifier: () => R;
93
94
  export declare const JewelryIdentifier: () => R;
94
95
  export declare const KarmaSpecialAbilityIdentifier: () => R;
@@ -39,6 +39,7 @@ import { HerbalPreservation } from "./equipment/item/HerbalPreservation.js";
39
39
  import { IlluminationLightSource } from "./equipment/item/IlluminationLightSource.js";
40
40
  import { IlluminationRefillOrSupply } from "./equipment/item/IlluminationRefillOrSupply.js";
41
41
  import { Item } from "./equipment/item/Item.js";
42
+ import { ItemComponent } from "./equipment/item/ItemComponent.js";
42
43
  import { Jewelry } from "./equipment/item/Jewelry.js";
43
44
  import { Laboratory } from "./equipment/item/Laboratory.js";
44
45
  import { Liebesspielzeug } from "./equipment/item/Liebesspielzeug.js";
@@ -258,6 +259,7 @@ export const IlluminationRefillOrSupplyIdentifier = () => R(IlluminationRefillOr
258
259
  export const InfluenceIdentifier = () => R(Influence);
259
260
  export const InstrumentEnchantmentIdentifier = () => R(InstrumentEnchantment);
260
261
  export const ItemIdentifier = () => R(Item);
262
+ export const ItemComponentIdentifier = () => R(ItemComponent);
261
263
  export const JesterTrickIdentifier = () => R(JesterTrick);
262
264
  export const JewelryIdentifier = () => R(Jewelry);
263
265
  export const KarmaSpecialAbilityIdentifier = () => R(KarmaSpecialAbility);
@@ -448,6 +448,7 @@ export declare const EquipmentIdentifier: DB.Enum<"EquipmentIdentifier", {
448
448
  GemOrPreciousStone: DB.EnumCase<DB.ReferenceIdentifier>;
449
449
  IlluminationLightSource: DB.EnumCase<DB.ReferenceIdentifier>;
450
450
  IlluminationRefillOrSupply: DB.EnumCase<DB.ReferenceIdentifier>;
451
+ ItemComponent: DB.EnumCase<DB.ReferenceIdentifier>;
451
452
  Jewelry: DB.EnumCase<DB.ReferenceIdentifier>;
452
453
  Laboratory: DB.EnumCase<DB.ReferenceIdentifier>;
453
454
  Liebesspielzeug: DB.EnumCase<DB.ReferenceIdentifier>;