@optolith/database-schema 0.78.0 → 0.79.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 (123) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/gen/types.d.ts +161 -0
  3. package/lib/types/Advantage.d.ts +29 -0
  4. package/lib/types/Advantage.js +2 -1
  5. package/lib/types/Disadvantage.d.ts +29 -0
  6. package/lib/types/Disadvantage.js +2 -1
  7. package/lib/types/_ActivatableSelectOptions.d.ts +930 -1
  8. package/lib/types/_ActivatableSelectOptions.js +138 -117
  9. package/lib/types/equipment/item/EquipmentCategory.d.ts +15 -0
  10. package/lib/types/equipment/item/EquipmentCategory.js +5 -0
  11. package/lib/types/equipment/item/IlluminationLightSource.d.ts +9 -0
  12. package/lib/types/equipment/item/IlluminationLightSource.js +1 -1
  13. package/lib/types/equipment/item/Item.d.ts +9 -0
  14. package/lib/types/equipment/item/Item.js +6 -0
  15. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +29 -0
  16. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.js +2 -1
  17. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +29 -0
  18. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.js +2 -1
  19. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +29 -0
  20. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.js +2 -1
  21. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +29 -0
  22. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.js +2 -1
  23. package/lib/types/specialAbility/AncestorGlyph.d.ts +29 -0
  24. package/lib/types/specialAbility/AncestorGlyph.js +2 -1
  25. package/lib/types/specialAbility/BlessedTradition.d.ts +29 -0
  26. package/lib/types/specialAbility/BlessedTradition.js +2 -1
  27. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +29 -0
  28. package/lib/types/specialAbility/BrawlingSpecialAbility.js +2 -1
  29. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +29 -0
  30. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +2 -1
  31. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +29 -0
  32. package/lib/types/specialAbility/CombatSpecialAbility.js +2 -1
  33. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +29 -0
  34. package/lib/types/specialAbility/CombatStyleSpecialAbility.js +3 -2
  35. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +29 -0
  36. package/lib/types/specialAbility/CommandSpecialAbility.js +2 -1
  37. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +29 -0
  38. package/lib/types/specialAbility/FamiliarSpecialAbility.js +2 -1
  39. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +29 -0
  40. package/lib/types/specialAbility/FatePointSexSpecialAbility.js +2 -1
  41. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +29 -0
  42. package/lib/types/specialAbility/FatePointSpecialAbility.js +2 -1
  43. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +29 -0
  44. package/lib/types/specialAbility/GeneralSpecialAbility.js +2 -1
  45. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +29 -0
  46. package/lib/types/specialAbility/KarmaSpecialAbility.js +2 -1
  47. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +29 -0
  48. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.js +2 -1
  49. package/lib/types/specialAbility/LycantropicGift.d.ts +29 -0
  50. package/lib/types/specialAbility/LycantropicGift.js +2 -1
  51. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +29 -0
  52. package/lib/types/specialAbility/MagicStyleSpecialAbility.js +2 -1
  53. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +29 -0
  54. package/lib/types/specialAbility/MagicalSpecialAbility.js +2 -1
  55. package/lib/types/specialAbility/MagicalTradition.d.ts +29 -0
  56. package/lib/types/specialAbility/MagicalTradition.js +2 -1
  57. package/lib/types/specialAbility/PactGift.d.ts +29 -0
  58. package/lib/types/specialAbility/PactGift.js +2 -1
  59. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +29 -0
  60. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.js +2 -1
  61. package/lib/types/specialAbility/Sermon.d.ts +29 -0
  62. package/lib/types/specialAbility/Sermon.js +2 -1
  63. package/lib/types/specialAbility/SexSpecialAbility.d.ts +29 -0
  64. package/lib/types/specialAbility/SexSpecialAbility.js +2 -1
  65. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +29 -0
  66. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.js +2 -1
  67. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +29 -0
  68. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +2 -1
  69. package/lib/types/specialAbility/VampiricGift.d.ts +29 -0
  70. package/lib/types/specialAbility/VampiricGift.js +2 -1
  71. package/lib/types/specialAbility/Vision.d.ts +29 -0
  72. package/lib/types/specialAbility/Vision.js +2 -1
  73. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +1 -1493
  74. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.js +2 -34
  75. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +1 -1493
  76. package/lib/types/traditionArtifacts/AttireEnchantment.js +2 -34
  77. package/lib/types/traditionArtifacts/Beutelzauber.d.ts +1 -1493
  78. package/lib/types/traditionArtifacts/Beutelzauber.js +2 -34
  79. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +1 -1493
  80. package/lib/types/traditionArtifacts/BowlEnchantment.js +2 -34
  81. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +1 -1493
  82. package/lib/types/traditionArtifacts/CauldronEnchantment.js +5 -36
  83. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +1 -1493
  84. package/lib/types/traditionArtifacts/ChronicleEnchantment.js +2 -34
  85. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +1 -1499
  86. package/lib/types/traditionArtifacts/DaggerRitual.js +5 -34
  87. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +1 -1493
  88. package/lib/types/traditionArtifacts/FoolsHatEnchantment.js +2 -34
  89. package/lib/types/traditionArtifacts/Haubenzauber.d.ts +1 -1493
  90. package/lib/types/traditionArtifacts/Haubenzauber.js +2 -34
  91. package/lib/types/traditionArtifacts/Hauerkettenzauber.d.ts +1 -464
  92. package/lib/types/traditionArtifacts/Hauerkettenzauber.js +2 -31
  93. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +1 -1493
  94. package/lib/types/traditionArtifacts/InstrumentEnchantment.js +2 -34
  95. package/lib/types/traditionArtifacts/Keulenzauber.d.ts +1 -464
  96. package/lib/types/traditionArtifacts/Keulenzauber.js +2 -31
  97. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +1 -1493
  98. package/lib/types/traditionArtifacts/Krallenkettenzauber.js +2 -34
  99. package/lib/types/traditionArtifacts/Kristallkugelzauber.d.ts +1 -1493
  100. package/lib/types/traditionArtifacts/Kristallkugelzauber.js +2 -34
  101. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +1 -1493
  102. package/lib/types/traditionArtifacts/OrbEnchantment.js +2 -34
  103. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +1 -1493
  104. package/lib/types/traditionArtifacts/RingEnchantment.js +2 -34
  105. package/lib/types/traditionArtifacts/Schweinetrommelzauber.d.ts +1 -464
  106. package/lib/types/traditionArtifacts/Schweinetrommelzauber.js +2 -31
  107. package/lib/types/traditionArtifacts/SickleRitual.d.ts +1 -1493
  108. package/lib/types/traditionArtifacts/SickleRitual.js +2 -34
  109. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +1 -1493
  110. package/lib/types/traditionArtifacts/SpellSwordEnchantment.js +2 -34
  111. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +1 -1493
  112. package/lib/types/traditionArtifacts/StaffEnchantment.js +2 -34
  113. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +1 -1493
  114. package/lib/types/traditionArtifacts/ToyEnchantment.js +2 -34
  115. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +1 -1493
  116. package/lib/types/traditionArtifacts/Trinkhornzauber.js +2 -34
  117. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +1 -1455
  118. package/lib/types/traditionArtifacts/WandEnchantment.js +3 -33
  119. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +1 -1493
  120. package/lib/types/traditionArtifacts/WeaponEnchantment.js +2 -34
  121. package/lib/types/traditionArtifacts/_shared.d.ts +10 -0
  122. package/lib/types/traditionArtifacts/_shared.js +40 -3
  123. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.79.0](https://github.com/Optolith/database-schema/compare/v0.78.0...v0.79.0) (2026-10-05)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * burning time option for generic items
10
+
11
+ ### Features
12
+
13
+ * base for select option rules ([5df53d3](https://github.com/Optolith/database-schema/commit/5df53d3448d5c279c9a062b8c68cc4e5ee9cbfdb))
14
+ * burning time option for generic items ([7feb7ff](https://github.com/Optolith/database-schema/commit/7feb7ffb449724433c7f7012369c837d5b8f6688))
15
+
5
16
  ## [0.78.0](https://github.com/Optolith/database-schema/compare/v0.77.1...v0.78.0) (2026-10-05)
6
17
 
7
18
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -277,6 +277,7 @@ export type EnumMap = {
277
277
  CastingTime: CastingTime<unknown>
278
278
  CastingTimeDuringLovemakingUnit: CastingTimeDuringLovemakingUnit
279
279
  CheckResultArithmetic: CheckResultArithmetic
280
+ ChildEntityForSelectOption: ChildEntityForSelectOption
280
281
  CollectorsValue: CollectorsValue
281
282
  CombatAnimalPowerType: CombatAnimalPowerType
282
283
  CombatRelatedSpecialAbilityIdentifier: CombatRelatedSpecialAbilityIdentifier
@@ -438,6 +439,8 @@ export type EnumMap = {
438
439
  RulePrerequisiteGroup: RulePrerequisiteGroup
439
440
  SelectOptionCategory: SelectOptionCategory
440
441
  SelectOptionParentIdentifier: SelectOptionParentIdentifier
442
+ SelectOptionRuleMultiple: SelectOptionRuleMultiple
443
+ SelectOptionRuleValue: SelectOptionRuleValue
441
444
  SelectOptionsAdventurePointsValue: SelectOptionsAdventurePointsValue<unknown>
442
445
  SelectOptionsBindingCostValue: SelectOptionsBindingCostValue<unknown>
443
446
  SentenceType: SentenceType
@@ -571,6 +574,7 @@ export type TypeAliasMap = {
571
574
  Cause: Cause
572
575
  CheckResultBasedModifier: CheckResultBasedModifier
573
576
  ChildNode: ChildNode
577
+ ChildSelectOptionRuleValue: ChildSelectOptionRuleValue
574
578
  ChurchBlessedTradition: ChurchBlessedTradition
575
579
  CloseCombatTechniqueSpecialRules: CloseCombatTechniqueSpecialRules
576
580
  CombatAnimalPower: CombatAnimalPower
@@ -827,6 +831,7 @@ export type TypeAliasMap = {
827
831
  PlantPoison: PlantPoison
828
832
  PoisonRecipe: PoisonRecipe
829
833
  Preconditions: Preconditions
834
+ PredefinedOrTextInputSelectOptionRuleValue: PredefinedOrTextInputSelectOptionRuleValue
830
835
  PrerequisiteForLevel: PrerequisiteForLevel<unknown>
831
836
  PrerequisiteGroup: PrerequisiteGroup<unknown>
832
837
  PrerequisitesDisjunction: PrerequisitesDisjunction<unknown>
@@ -894,6 +899,8 @@ export type TypeAliasMap = {
894
899
  RulePrerequisites: RulePrerequisites
895
900
  SecondaryArmor: SecondaryArmor
896
901
  SelectableAttributeAdjustment: SelectableAttributeAdjustment
902
+ SelectOptionRule: SelectOptionRule
903
+ SelectOptionRules: SelectOptionRules
897
904
  SelectOptions: SelectOptions
898
905
  SelectOptionsDeriveAdventurePointsValueFromImprovementCost: SelectOptionsDeriveAdventurePointsValueFromImprovementCost
899
906
  SelectOptionsFixedAdventurePointsValue: SelectOptionsFixedAdventurePointsValue<unknown>
@@ -960,6 +967,7 @@ export type TypeAliasMap = {
960
967
  TalismanMeleeWeapon: TalismanMeleeWeapon
961
968
  TalismanRangedWeapon: TalismanRangedWeapon
962
969
  TargetCategoriesSelectOptionCategory: TargetCategoriesSelectOptionCategory
970
+ TextInputSelectOptionRuleValue: TextInputSelectOptionRuleValue
963
971
  TextNode: TextNode
964
972
  TextPrerequisite: TextPrerequisite
965
973
  TinyActivatablePrerequisite: TinyActivatablePrerequisite
@@ -1155,6 +1163,11 @@ export interface SelectOptions {
1155
1163
  * An entry category with optional further configuration. All available entries from the specified categories will be included as separate select options. You can also specify a set of groups that should only be included. Groups not mentioned will be excluded then.
1156
1164
  */
1157
1165
  derived?: SelectOptionCategory
1166
+
1167
+ /**
1168
+ * Rules for how options can be selected and relate to each other. Defaults to a single predefined option if the entry has select options defined, otherwise undefined.
1169
+ */
1170
+ rules?: SelectOptionRules
1158
1171
  }
1159
1172
 
1160
1173
  export type SelectOptionCategory =
@@ -15083,6 +15096,13 @@ export interface Hauerkettenzauber {
15083
15096
  */
15084
15097
  nameBuilderRules?: ActivatableNameBuilderRules
15085
15098
 
15099
+ /**
15100
+ * Definitions for possible options for the activatable entry, derived from entry categories.
15101
+ *
15102
+ * Note that this is only a full definition of options for simple logic that can be made explicit using the more detailed configuration for both derived categories and explicit options. There are quite a few entries whose option logic cannot be fully represented here, so that it needs to be implemented manually.
15103
+ */
15104
+ select_options?: SelectOptions
15105
+
15086
15106
  /**
15087
15107
  * The number stating how often you can buy the entry. The **default** depends on the entry type:
15088
15108
  *
@@ -15407,6 +15427,13 @@ export interface Keulenzauber {
15407
15427
  */
15408
15428
  nameBuilderRules?: ActivatableNameBuilderRules
15409
15429
 
15430
+ /**
15431
+ * Definitions for possible options for the activatable entry, derived from entry categories.
15432
+ *
15433
+ * Note that this is only a full definition of options for simple logic that can be made explicit using the more detailed configuration for both derived categories and explicit options. There are quite a few entries whose option logic cannot be fully represented here, so that it needs to be implemented manually.
15434
+ */
15435
+ select_options?: SelectOptions
15436
+
15410
15437
  /**
15411
15438
  * The number stating how often you can buy the entry. The **default** depends on the entry type:
15412
15439
  *
@@ -16821,6 +16848,13 @@ export interface Schweinetrommelzauber {
16821
16848
  */
16822
16849
  nameBuilderRules?: ActivatableNameBuilderRules
16823
16850
 
16851
+ /**
16852
+ * Definitions for possible options for the activatable entry, derived from entry categories.
16853
+ *
16854
+ * Note that this is only a full definition of options for simple logic that can be made explicit using the more detailed configuration for both derived categories and explicit options. There are quite a few entries whose option logic cannot be fully represented here, so that it needs to be implemented manually.
16855
+ */
16856
+ select_options?: SelectOptions
16857
+
16824
16858
  /**
16825
16859
  * The number stating how often you can buy the entry. The **default** depends on the entry type:
16826
16860
  *
@@ -22466,6 +22500,123 @@ export type AdvantageDisadvantagePrerequisiteGroup =
22466
22500
  PersonalityTrait: PersonalityTraitPrerequisite
22467
22501
  }
22468
22502
 
22503
+ /**
22504
+ * Rules for how options can be selected and relate to each other. Defaults to a single predefined option if the entry has select options defined, otherwise undefined.
22505
+ */
22506
+ export type SelectOptionRules = SelectOptionRule[]
22507
+
22508
+ /**
22509
+ * A rule for how options can be selected and relate to each other.
22510
+ */
22511
+ export interface SelectOptionRule {
22512
+ /**
22513
+ * The value of the rule.
22514
+ */
22515
+ value: SelectOptionRuleValue
22516
+
22517
+ /**
22518
+ * Sometimes, multiple options from a single list have to or can be chosen.
22519
+ */
22520
+ multiple?: SelectOptionRuleMultiple
22521
+ }
22522
+
22523
+ /**
22524
+ * The possible values for select option rules.
22525
+ */
22526
+ export type SelectOptionRuleValue =
22527
+ | {
22528
+ kind: "Predefined"
22529
+ }
22530
+ | {
22531
+ kind: "PredefinedOrTextInput"
22532
+ PredefinedOrTextInput: PredefinedOrTextInputSelectOptionRuleValue
22533
+ }
22534
+ | {
22535
+ kind: "Child"
22536
+ Child: ChildSelectOptionRuleValue
22537
+ }
22538
+ | {
22539
+ kind: "TextInput"
22540
+ TextInput: TextInputSelectOptionRuleValue
22541
+ }
22542
+
22543
+ export interface PredefinedOrTextInputSelectOptionRuleValue {
22544
+ /**
22545
+ * All translations for the entry, identified by IETF language tag (BCP47).
22546
+ */
22547
+ translations: {
22548
+ [localeId: string]: PredefinedOrTextInputSelectOptionRuleValueTranslation
22549
+ }
22550
+ }
22551
+
22552
+ export interface PredefinedOrTextInputSelectOptionRuleValueTranslation {
22553
+ /**
22554
+ * The label for the text input field.
22555
+ */
22556
+ inputLabel: string
22557
+
22558
+ /**
22559
+ * The label for the extra option in the list of select options that unlocks the text input field.
22560
+ */
22561
+ optionLabel: string
22562
+ }
22563
+
22564
+ export interface ChildSelectOptionRuleValue {
22565
+ /**
22566
+ * The index of the parent select option in the list of selected options.
22567
+ */
22568
+ parentIndex: number
22569
+
22570
+ /**
22571
+ * The entity you can choose from.
22572
+ */
22573
+ entity: ChildEntityForSelectOption
22574
+ }
22575
+
22576
+ /**
22577
+ * The possible child entities for select options.
22578
+ */
22579
+ export type ChildEntityForSelectOption =
22580
+ | {
22581
+ kind: "SkillApplication"
22582
+ }
22583
+
22584
+ export interface TextInputSelectOptionRuleValue {
22585
+ /**
22586
+ * All translations for the entry, identified by IETF language tag (BCP47).
22587
+ */
22588
+ translations: {
22589
+ [localeId: string]: TextInputSelectOptionRuleValueTranslation
22590
+ }
22591
+ }
22592
+
22593
+ export interface TextInputSelectOptionRuleValueTranslation {
22594
+ /**
22595
+ * The label for the text input field.
22596
+ */
22597
+ inputLabel: string
22598
+ }
22599
+
22600
+ export type SelectOptionRuleMultiple =
22601
+ | {
22602
+ kind: "Constant"
22603
+ Constant: number
22604
+ }
22605
+ | {
22606
+ kind: "Range"
22607
+ Range: {
22608
+ /**
22609
+ * The minimum number of options that need to be selected. If left empty it defaults to 1.
22610
+ */
22611
+ min?: number
22612
+
22613
+ /**
22614
+ * The maximum number of options that need to be selected.
22615
+ */
22616
+ max: number
22617
+ }
22618
+ }
22619
+
22469
22620
  export interface AlternativeRule {
22470
22621
  /**
22471
22622
  * The player types this alternative rule is suitable for.
@@ -24354,6 +24505,11 @@ export interface DefaultEquipmentCategoryTypeRules {
24354
24505
  * Presence of complexity to certain groups for items in this category.
24355
24506
  */
24356
24507
  complexity: ValueRule
24508
+
24509
+ /**
24510
+ * Presence of burning time to certain groups for items in this category.
24511
+ */
24512
+ burningTime: ValueRule
24357
24513
  }
24358
24514
 
24359
24515
  /**
@@ -26338,6 +26494,11 @@ export interface Item {
26338
26494
  */
26339
26495
  structurePoints: StructurePoints
26340
26496
 
26497
+ /**
26498
+ * The burning time is the time how long the light source can be lit. After that time you have to use a new light source.
26499
+ */
26500
+ burningTime?: BurningTime
26501
+
26341
26502
  /**
26342
26503
  * A list of stat blocks for each close combat technique this weapon can be used with.
26343
26504
  */
@@ -851,6 +851,35 @@ export declare const Advantage: DB.Entity<"Advantage", {
851
851
  }>, []>>>, true>;
852
852
  }>, []>>>;
853
853
  }, []>>, false>;
854
+ rules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptionRules", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptionRule", DB.Object<{
855
+ value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionRuleValue", {
856
+ Predefined: DB.EnumCase<null>;
857
+ PredefinedOrTextInput: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"PredefinedOrTextInputSelectOptionRuleValue", DB.Object<{
858
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PredefinedOrTextInputSelectOptionRuleValueTranslation", {
859
+ inputLabel: DB.MemberDecl<DB.String, true>;
860
+ optionLabel: DB.MemberDecl<DB.String, true>;
861
+ }>, true>;
862
+ }>, []>>>;
863
+ Child: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ChildSelectOptionRuleValue", DB.Object<{
864
+ parentIndex: DB.MemberDecl<DB.Integer, true>;
865
+ entity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ChildEntityForSelectOption", {
866
+ SkillApplication: DB.EnumCase<null>;
867
+ }, []>>, true>;
868
+ }>, []>>>;
869
+ TextInput: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"TextInputSelectOptionRuleValue", DB.Object<{
870
+ translations: DB.MemberDecl<DB.NestedEntityMap<"TextInputSelectOptionRuleValueTranslation", {
871
+ inputLabel: DB.MemberDecl<DB.String, true>;
872
+ }>, true>;
873
+ }>, []>>>;
874
+ }, []>>, true>;
875
+ multiple: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionRuleMultiple", {
876
+ Constant: DB.EnumCase<DB.Integer>;
877
+ Range: DB.EnumCase<DB.Object<{
878
+ min: DB.MemberDecl<DB.Integer, false>;
879
+ max: DB.MemberDecl<DB.Integer, true>;
880
+ }>>;
881
+ }, []>>, false>;
882
+ }>, []>>>, []>>, false>;
854
883
  }>, []>>, false>;
855
884
  explicit_select_options: DB.MemberDecl<DB.ChildEntities<DB.Entity<"GeneralSelectOption", {
856
885
  parent: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionParentIdentifier", {
@@ -4,7 +4,7 @@ import { ap_value, ap_value_append, ap_value_l10n } from "./_ActivatableAdventur
4
4
  import { automatic_entries } from "./_ActivatableAutomatic.js";
5
5
  import { subtype } from "./_ActivatableMagical.js";
6
6
  import { activatableDisplayNameCustomizer, nameBuilderRules } from "./_ActivatableNames.js";
7
- import { explicit_select_options, select_options } from "./_ActivatableSelectOptions.js";
7
+ import { explicit_select_options, select_options, verifySelectOptionRules, } from "./_ActivatableSelectOptions.js";
8
8
  import { skill_applications, skill_uses } from "./_ActivatableSkillApplicationsAndUses.js";
9
9
  import { AdvantageDisadvantagePrerequisites } from "./_Prerequisite.js";
10
10
  import { NestedTranslationMap } from "./Locale.js";
@@ -58,4 +58,5 @@ export const Advantage = DB.Entity(import.meta.url, {
58
58
  keyPathInEntityMapFallback: "name",
59
59
  },
60
60
  ],
61
+ customConstraints: deps => verifySelectOptionRules("Advantage", deps),
61
62
  });
@@ -851,6 +851,35 @@ export declare const Disadvantage: DB.Entity<"Disadvantage", {
851
851
  }>, []>>>, true>;
852
852
  }>, []>>>;
853
853
  }, []>>, false>;
854
+ rules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptionRules", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectOptionRule", DB.Object<{
855
+ value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionRuleValue", {
856
+ Predefined: DB.EnumCase<null>;
857
+ PredefinedOrTextInput: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"PredefinedOrTextInputSelectOptionRuleValue", DB.Object<{
858
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PredefinedOrTextInputSelectOptionRuleValueTranslation", {
859
+ inputLabel: DB.MemberDecl<DB.String, true>;
860
+ optionLabel: DB.MemberDecl<DB.String, true>;
861
+ }>, true>;
862
+ }>, []>>>;
863
+ Child: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ChildSelectOptionRuleValue", DB.Object<{
864
+ parentIndex: DB.MemberDecl<DB.Integer, true>;
865
+ entity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ChildEntityForSelectOption", {
866
+ SkillApplication: DB.EnumCase<null>;
867
+ }, []>>, true>;
868
+ }>, []>>>;
869
+ TextInput: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"TextInputSelectOptionRuleValue", DB.Object<{
870
+ translations: DB.MemberDecl<DB.NestedEntityMap<"TextInputSelectOptionRuleValueTranslation", {
871
+ inputLabel: DB.MemberDecl<DB.String, true>;
872
+ }>, true>;
873
+ }>, []>>>;
874
+ }, []>>, true>;
875
+ multiple: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionRuleMultiple", {
876
+ Constant: DB.EnumCase<DB.Integer>;
877
+ Range: DB.EnumCase<DB.Object<{
878
+ min: DB.MemberDecl<DB.Integer, false>;
879
+ max: DB.MemberDecl<DB.Integer, true>;
880
+ }>>;
881
+ }, []>>, false>;
882
+ }>, []>>>, []>>, false>;
854
883
  }>, []>>, false>;
855
884
  explicit_select_options: DB.MemberDecl<DB.ChildEntities<DB.Entity<"GeneralSelectOption", {
856
885
  parent: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SelectOptionParentIdentifier", {
@@ -3,7 +3,7 @@ import { input, levels, maximum, name, name_in_library, rules } from "./_Activat
3
3
  import { ap_value, ap_value_append, ap_value_l10n } from "./_ActivatableAdventurePointsValue.js";
4
4
  import { subtype } from "./_ActivatableMagical.js";
5
5
  import { activatableDisplayNameCustomizer, nameBuilderRules } from "./_ActivatableNames.js";
6
- import { explicit_select_options, select_options } from "./_ActivatableSelectOptions.js";
6
+ import { explicit_select_options, select_options, verifySelectOptionRules, } from "./_ActivatableSelectOptions.js";
7
7
  import { skill_applications, skill_uses } from "./_ActivatableSkillApplicationsAndUses.js";
8
8
  import { AdvantageDisadvantagePrerequisites } from "./_Prerequisite.js";
9
9
  import { NestedTranslationMap } from "./Locale.js";
@@ -59,4 +59,5 @@ export const Disadvantage = DB.Entity(import.meta.url, {
59
59
  keyPathInEntityMapFallback: "name",
60
60
  },
61
61
  ],
62
+ customConstraints: deps => verifySelectOptionRules("Disadvantage", deps),
62
63
  });