@optolith/database-schema 0.49.0 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
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.50.1](https://github.com/Optolith/database-schema/compare/v0.50.0...v0.50.1) (2026-06-14)
6
+
7
+
8
+ ### Features
9
+
10
+ * primary blessing for tradition ([9d97dd4](https://github.com/Optolith/database-schema/commit/9d97dd4ec95c8dd42cb6e31873a4702684a941de))
11
+ * trade secrets for herbal aids ([27236a7](https://github.com/Optolith/database-schema/commit/27236a75884fdb891a60a0105ebb5ff82147cbc1)), closes [#159](https://github.com/Optolith/database-schema/issues/159) [#158](https://github.com/Optolith/database-schema/issues/158)
12
+
13
+ ## [0.50.0](https://github.com/Optolith/database-schema/compare/v0.49.0...v0.50.0) (2026-06-14)
14
+
15
+
16
+ ### ⚠ BREAKING CHANGES
17
+
18
+ * allow arbitrary AP values for enhancements
19
+
20
+ ### Features
21
+
22
+ * allow arbitrary AP values for enhancements ([1d06407](https://github.com/Optolith/database-schema/commit/1d06407eb4dee8fec24bc9f8d0d6e31833e4f995))
23
+ * allow arbitrary text input for enhancements ([3a3af6e](https://github.com/Optolith/database-schema/commit/3a3af6e574c1a7d05113ebc75d5d6fa1b92c8dce))
24
+
5
25
  ## [0.49.0](https://github.com/Optolith/database-schema/compare/v0.48.0...v0.49.0) (2026-06-13)
6
26
 
7
27
 
package/gen/types.d.ts CHANGED
@@ -298,6 +298,7 @@ export type EnumMap = {
298
298
  ElixirEffect: ElixirEffect
299
299
  EnchantmentCost: EnchantmentCost
300
300
  EncumbranceInfluence: EncumbranceInfluence
301
+ EnhancementAdventurePoints: EnhancementAdventurePoints
301
302
  EnhancementPrerequisiteGroup: EnhancementPrerequisiteGroup
302
303
  EquipmentIdentifier: EquipmentIdentifier
303
304
  ExpressionBasedParameterExpressionValue: ExpressionBasedParameterExpressionValue
@@ -571,6 +572,7 @@ export type TypeAliasMap = {
571
572
  DerivedCharacteristicPermanentLoss: DerivedCharacteristicPermanentLoss
572
573
  DerivedCharacteristicPrerequisites: DerivedCharacteristicPrerequisites
573
574
  DerivedCharacteristicPurchase: DerivedCharacteristicPurchase
575
+ DerivedEnhancementAdventurePoints: DerivedEnhancementAdventurePoints
574
576
  Dice: Dice
575
577
  DiceBasedIntoxicantAddictionInterval: DiceBasedIntoxicantAddictionInterval
576
578
  DieType: DieType
@@ -7401,6 +7403,11 @@ export interface BlessedTradition {
7401
7403
  */
7402
7404
  aspects?: [Aspect_ID, Aspect_ID]
7403
7405
 
7406
+ /**
7407
+ * The tradition’s primary blessing. Leave empty if the tradition does not have one.
7408
+ */
7409
+ primaryBlessing?: Blessing_ID
7410
+
7404
7411
  /**
7405
7412
  * If a tradition restricts the possible blessings, the blessings that are **not** allowed.
7406
7413
  */
@@ -7497,19 +7504,6 @@ export interface BlessedTraditionTranslation {
7497
7504
  errata?: Errata
7498
7505
  }
7499
7506
 
7500
- /**
7501
- * If a tradition restricts the possible blessings, the blessings that are **not** allowed.
7502
- */
7503
- export type RestrictedBlessings =
7504
- | {
7505
- kind: "Three"
7506
- Three: [Blessing_ID, Blessing_ID, Blessing_ID]
7507
- }
7508
- | {
7509
- kind: "Six"
7510
- Six: [Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID]
7511
- }
7512
-
7513
7507
  export interface Blessing {
7514
7508
  /**
7515
7509
  * Measurable parameters of a blessing.
@@ -7642,6 +7636,19 @@ export interface IndefiniteBlessingDurationTranslation {
7642
7636
  description: string
7643
7637
  }
7644
7638
 
7639
+ /**
7640
+ * If a tradition restricts the possible blessings, the blessings that are **not** allowed.
7641
+ */
7642
+ export type RestrictedBlessings =
7643
+ | {
7644
+ kind: "Three"
7645
+ Three: [Blessing_ID, Blessing_ID, Blessing_ID]
7646
+ }
7647
+ | {
7648
+ kind: "Six"
7649
+ Six: [Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID, Blessing_ID]
7650
+ }
7651
+
7645
7652
  export type FavoredCombatTechniques =
7646
7653
  | {
7647
7654
  kind: "All"
@@ -7955,9 +7962,9 @@ export interface Enhancement {
7955
7962
  skill_rating: number
7956
7963
 
7957
7964
  /**
7958
- * The value to multiply with the numeric representation of the associated skill's improvement cost to form the final AP cost of this enhancement.
7965
+ * Defines how to determine the AP cost of an enhancement.
7959
7966
  */
7960
- adventure_points_modifier: number
7967
+ adventurePoints: EnhancementAdventurePoints
7961
7968
 
7962
7969
  prerequisites?: EnhancementPrerequisites
7963
7970
 
@@ -7990,6 +7997,11 @@ export interface EnhancementTranslation {
7990
7997
  */
7991
7998
  effect: string
7992
7999
 
8000
+ /**
8001
+ * A string that is used as a label for an input field.
8002
+ */
8003
+ input?: string
8004
+
7993
8005
  errata?: Errata
7994
8006
  }
7995
8007
 
@@ -19930,6 +19942,26 @@ export interface InfluenceEffect {
19930
19942
  text: string
19931
19943
  }
19932
19944
 
19945
+ /**
19946
+ * Defines how to determine the AP cost of an enhancement.
19947
+ */
19948
+ export type EnhancementAdventurePoints =
19949
+ | {
19950
+ kind: "DerivedFromImprovementCost"
19951
+ DerivedFromImprovementCost: DerivedEnhancementAdventurePoints
19952
+ }
19953
+ | {
19954
+ kind: "Constant"
19955
+ Constant: number
19956
+ }
19957
+
19958
+ export interface DerivedEnhancementAdventurePoints {
19959
+ /**
19960
+ * The value to multiply with the numeric representation of the associated skill's improvement cost to form the final AP cost of this enhancement.
19961
+ */
19962
+ multiplier: number
19963
+ }
19964
+
19933
19965
  export type EnhancementPrerequisites = PlainPrerequisites<EnhancementPrerequisiteGroup>
19934
19966
 
19935
19967
  export type EnhancementPrerequisiteGroup =
@@ -24731,6 +24763,11 @@ export interface HerbalAid {
24731
24763
  */
24732
24764
  crafting_difficulty: number
24733
24765
 
24766
+ /**
24767
+ * AP value and prerequisites of the herbal aid�s trade secret.
24768
+ */
24769
+ trade_secret?: RecipeTradeSecret
24770
+
24734
24771
  /**
24735
24772
  * The armor or weapon this herbal aid represents.
24736
24773
  */
@@ -549,7 +549,12 @@ export declare const Ceremony: DB.Entity<"Ceremony", {
549
549
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
550
550
  }, []>>, true>;
551
551
  skill_rating: DB.MemberDecl<DB.Integer, true>;
552
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
552
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
553
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
554
+ multiplier: DB.MemberDecl<DB.Integer, true>;
555
+ }>, []>>>;
556
+ Constant: DB.EnumCase<DB.Integer>;
557
+ }, []>>, true>;
553
558
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
554
559
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
555
560
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -618,6 +623,7 @@ export declare const Ceremony: DB.Entity<"Ceremony", {
618
623
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
619
624
  name: DB.MemberDecl<DB.String, true>;
620
625
  effect: DB.MemberDecl<DB.String, true>;
626
+ input: DB.MemberDecl<DB.String, false>;
621
627
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
622
628
  date: DB.MemberDecl<DB.Date, true>;
623
629
  description: DB.MemberDecl<DB.String, true>;
@@ -549,7 +549,12 @@ export declare const LiturgicalChant: DB.Entity<"LiturgicalChant", {
549
549
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
550
550
  }, []>>, true>;
551
551
  skill_rating: DB.MemberDecl<DB.Integer, true>;
552
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
552
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
553
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
554
+ multiplier: DB.MemberDecl<DB.Integer, true>;
555
+ }>, []>>>;
556
+ Constant: DB.EnumCase<DB.Integer>;
557
+ }, []>>, true>;
553
558
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
554
559
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
555
560
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -618,6 +623,7 @@ export declare const LiturgicalChant: DB.Entity<"LiturgicalChant", {
618
623
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
619
624
  name: DB.MemberDecl<DB.String, true>;
620
625
  effect: DB.MemberDecl<DB.String, true>;
626
+ input: DB.MemberDecl<DB.String, false>;
621
627
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
622
628
  date: DB.MemberDecl<DB.Date, true>;
623
629
  description: DB.MemberDecl<DB.String, true>;
@@ -552,7 +552,12 @@ export declare const Ritual: DB.Entity<"Ritual", {
552
552
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
553
553
  }, []>>, true>;
554
554
  skill_rating: DB.MemberDecl<DB.Integer, true>;
555
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
555
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
556
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
557
+ multiplier: DB.MemberDecl<DB.Integer, true>;
558
+ }>, []>>>;
559
+ Constant: DB.EnumCase<DB.Integer>;
560
+ }, []>>, true>;
556
561
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
557
562
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
558
563
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -621,6 +626,7 @@ export declare const Ritual: DB.Entity<"Ritual", {
621
626
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
622
627
  name: DB.MemberDecl<DB.String, true>;
623
628
  effect: DB.MemberDecl<DB.String, true>;
629
+ input: DB.MemberDecl<DB.String, false>;
624
630
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
625
631
  date: DB.MemberDecl<DB.Date, true>;
626
632
  description: DB.MemberDecl<DB.String, true>;
@@ -552,7 +552,12 @@ export declare const Spell: DB.Entity<"Spell", {
552
552
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
553
553
  }, []>>, true>;
554
554
  skill_rating: DB.MemberDecl<DB.Integer, true>;
555
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
555
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
556
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
557
+ multiplier: DB.MemberDecl<DB.Integer, true>;
558
+ }>, []>>>;
559
+ Constant: DB.EnumCase<DB.Integer>;
560
+ }, []>>, true>;
556
561
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
557
562
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
558
563
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -621,6 +626,7 @@ export declare const Spell: DB.Entity<"Spell", {
621
626
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
622
627
  name: DB.MemberDecl<DB.String, true>;
623
628
  effect: DB.MemberDecl<DB.String, true>;
629
+ input: DB.MemberDecl<DB.String, false>;
624
630
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
625
631
  date: DB.MemberDecl<DB.Date, true>;
626
632
  description: DB.MemberDecl<DB.String, true>;
@@ -1,9 +1,4 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- export declare const CheckResultValue: DB.Enum<"CheckResultValue", {
3
- QualityLevels: DB.EnumCase<null>;
4
- SkillPoints: DB.EnumCase<null>;
5
- SkillRating: DB.EnumCase<null>;
6
- }, []>;
7
2
  export declare const CheckResultBasedModifier: DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
8
3
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
9
4
  Multiply: DB.EnumCase<null>;
@@ -11,17 +6,3 @@ export declare const CheckResultBasedModifier: DB.TypeAlias<"CheckResultBasedMod
11
6
  }, []>>, true>;
12
7
  value: DB.MemberDecl<DB.Integer, true>;
13
8
  }>, []>;
14
- export declare const CheckResultBased: DB.TypeAlias<"CheckResultBased", DB.Object<{
15
- base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
16
- QualityLevels: DB.EnumCase<null>;
17
- SkillPoints: DB.EnumCase<null>;
18
- SkillRating: DB.EnumCase<null>;
19
- }, []>>, true>;
20
- modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
21
- arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
22
- Multiply: DB.EnumCase<null>;
23
- Divide: DB.EnumCase<null>;
24
- }, []>>, true>;
25
- value: DB.MemberDecl<DB.Integer, true>;
26
- }>, []>>, false>;
27
- }>, []>;
@@ -1,13 +1,4 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- export const CheckResultValue = DB.Enum(import.meta.url, {
3
- name: "CheckResultValue",
4
- comment: "Defines the derived (unitless) value.",
5
- values: () => ({
6
- QualityLevels: DB.EnumCase({ type: null }),
7
- SkillPoints: DB.EnumCase({ type: null }),
8
- SkillRating: DB.EnumCase({ type: null }),
9
- }),
10
- });
11
2
  const CheckResultArithmetic = DB.Enum(import.meta.url, {
12
3
  name: "CheckResultArithmetic",
13
4
  comment: "Defines how the the `value` is set off against the check result.",
@@ -29,17 +20,3 @@ export const CheckResultBasedModifier = DB.TypeAlias(import.meta.url, {
29
20
  }),
30
21
  }),
31
22
  });
32
- export const CheckResultBased = DB.TypeAlias(import.meta.url, {
33
- name: "CheckResultBased",
34
- comment: "Defines a parameter being based on a check result.",
35
- type: () => DB.Object({
36
- base: DB.Required({
37
- comment: "The base value that is derived from the check result.",
38
- type: DB.IncludeIdentifier(CheckResultValue),
39
- }),
40
- modifier: DB.Optional({
41
- comment: "If defined, it modifies the base value.",
42
- type: DB.IncludeIdentifier(CheckResultBasedModifier),
43
- }),
44
- }),
45
- });
@@ -10,7 +10,12 @@ export declare const Enhancements: DB.TypeAlias<"Enhancements", DB.ChildEntities
10
10
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
11
11
  }, []>>, true>;
12
12
  skill_rating: DB.MemberDecl<DB.Integer, true>;
13
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
13
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
14
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
15
+ multiplier: DB.MemberDecl<DB.Integer, true>;
16
+ }>, []>>>;
17
+ Constant: DB.EnumCase<DB.Integer>;
18
+ }, []>>, true>;
14
19
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
15
20
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
16
21
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -79,6 +84,7 @@ export declare const Enhancements: DB.TypeAlias<"Enhancements", DB.ChildEntities
79
84
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
80
85
  name: DB.MemberDecl<DB.String, true>;
81
86
  effect: DB.MemberDecl<DB.String, true>;
87
+ input: DB.MemberDecl<DB.String, false>;
82
88
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
83
89
  date: DB.MemberDecl<DB.Date, true>;
84
90
  description: DB.MemberDecl<DB.String, true>;
@@ -93,7 +99,12 @@ export declare const Enhancement: DB.Entity<"Enhancement", {
93
99
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
94
100
  }, []>>, true>;
95
101
  skill_rating: DB.MemberDecl<DB.Integer, true>;
96
- adventure_points_modifier: DB.MemberDecl<DB.Integer, true>;
102
+ adventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"EnhancementAdventurePoints", {
103
+ DerivedFromImprovementCost: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedEnhancementAdventurePoints", DB.Object<{
104
+ multiplier: DB.MemberDecl<DB.Integer, true>;
105
+ }>, []>>>;
106
+ Constant: DB.EnumCase<DB.Integer>;
107
+ }, []>>, true>;
97
108
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"EnhancementPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
98
109
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
99
110
  Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
@@ -162,6 +173,7 @@ export declare const Enhancement: DB.Entity<"Enhancement", {
162
173
  translations: DB.MemberDecl<DB.NestedEntityMap<"EnhancementTranslation", {
163
174
  name: DB.MemberDecl<DB.String, true>;
164
175
  effect: DB.MemberDecl<DB.String, true>;
176
+ input: DB.MemberDecl<DB.String, false>;
165
177
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
166
178
  date: DB.MemberDecl<DB.Date, true>;
167
179
  description: DB.MemberDecl<DB.String, true>;
@@ -2,6 +2,7 @@
2
2
  * @title Enhancements
3
3
  */
4
4
  import * as DB from "tsondb/schema/dsl";
5
+ import { input } from "./_Activatable.js";
5
6
  import { SkillWithEnhancementsIdentifier } from "./_IdentifierGroup.js";
6
7
  import { EnhancementPrerequisites } from "./_Prerequisite.js";
7
8
  import { NestedTranslationMap } from "./Locale.js";
@@ -28,11 +29,9 @@ export const Enhancement = DB.Entity(import.meta.url, {
28
29
  multipleOf: 2,
29
30
  }),
30
31
  }),
31
- adventure_points_modifier: DB.Required({
32
- comment: "The value to multiply with the numeric representation of the associated skill's improvement cost to form the final AP cost of this enhancement.",
33
- type: DB.Integer({
34
- minimum: 1,
35
- }),
32
+ adventurePoints: DB.Required({
33
+ comment: "Defines how to determine the AP cost of an enhancement.",
34
+ type: DB.IncludeIdentifier(EnhancementAdventurePoints),
36
35
  }),
37
36
  prerequisites: DB.Optional({
38
37
  type: DB.IncludeIdentifier(EnhancementPrerequisites),
@@ -55,6 +54,7 @@ export const Enhancement = DB.Entity(import.meta.url, {
55
54
  markdown: "block",
56
55
  }),
57
56
  }),
57
+ input,
58
58
  errata: DB.Optional({
59
59
  type: DB.IncludeIdentifier(Errata),
60
60
  }),
@@ -78,3 +78,31 @@ export const Enhancement = DB.Entity(import.meta.url, {
78
78
  ],
79
79
  ],
80
80
  });
81
+ const EnhancementAdventurePoints = DB.Enum(import.meta.url, {
82
+ name: "EnhancementAdventurePoints",
83
+ comment: "Defines how to determine the AP cost of an enhancement.",
84
+ values: () => ({
85
+ DerivedFromImprovementCost: DB.EnumCase({
86
+ comment: "Use the numeric representation of the associated skill's improvement cost as the AP cost of this enhancement.",
87
+ type: DB.IncludeIdentifier(DerivedEnhancementAdventurePoints),
88
+ }),
89
+ Constant: DB.EnumCase({
90
+ comment: "Use the specified constant value as the AP cost of this enhancement.",
91
+ type: DB.Integer({
92
+ minimum: 1,
93
+ }),
94
+ }),
95
+ }),
96
+ });
97
+ const DerivedEnhancementAdventurePoints = DB.TypeAlias(import.meta.url, {
98
+ name: "DerivedEnhancementAdventurePoints",
99
+ type: () => DB.Object({
100
+ multiplier: DB.Required({
101
+ comment: "The value to multiply with the numeric representation of the associated skill's improvement cost to form the final AP cost of this enhancement.",
102
+ type: DB.Integer({
103
+ minimum: 1,
104
+ maximum: 3,
105
+ }),
106
+ }),
107
+ }),
108
+ });
@@ -10,6 +10,33 @@ export declare const HerbalAid: DB.Entity<"HerbalAid", {
10
10
  Supernatural: DB.EnumCase<null>;
11
11
  }, []>>>, true>;
12
12
  crafting_difficulty: DB.MemberDecl<DB.Integer, true>;
13
+ trade_secret: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RecipeTradeSecret", DB.Object<{
14
+ ap_value: DB.MemberDecl<DB.Integer, true>;
15
+ 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", {
16
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
17
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
18
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
19
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
20
+ Hide: DB.EnumCase<null>;
21
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
22
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
23
+ Standalone: DB.EnumCase<null>;
24
+ Connected: DB.EnumCase<null>;
25
+ }, []>>, false>;
26
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
27
+ replacement: DB.MemberDecl<DB.String, true>;
28
+ }>, true>;
29
+ }>, []>>>;
30
+ }, []>>, false>;
31
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
32
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
33
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
34
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
35
+ text: DB.MemberDecl<DB.String, true>;
36
+ }>, true>;
37
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
38
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
39
+ }>, []>>, false>;
13
40
  combatUse: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"HerbalAidCombatUse", {
14
41
  Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
15
42
  Armor: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -2,7 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { src } from "../../source/_PublicationRef.js";
3
3
  import { NestedTranslationMap } from "../../Locale.js";
4
4
  import { WeaponIdentifier, ArmorIdentifier } from "../../_Identifier.js";
5
- import { EffectType } from "./_Herbary.js";
5
+ import { EffectType, RecipeTradeSecret } from "./_Herbary.js";
6
6
  export const HerbalAid = DB.Entity(import.meta.url, {
7
7
  name: "HerbalAid",
8
8
  namePlural: "HerbalAids",
@@ -15,6 +15,10 @@ export const HerbalAid = DB.Entity(import.meta.url, {
15
15
  comment: "The difficulty for this aid to craft.",
16
16
  type: DB.Integer(),
17
17
  }),
18
+ trade_secret: DB.Optional({
19
+ comment: "AP value and prerequisites of the herbal aid�s trade secret.",
20
+ type: DB.IncludeIdentifier(RecipeTradeSecret),
21
+ }),
18
22
  combatUse: DB.Optional({
19
23
  comment: "The armor or weapon this herbal aid represents.",
20
24
  type: DB.IncludeIdentifier(HerbalAidCombatUse),
@@ -940,6 +940,7 @@ export declare const BlessedTradition: DB.Entity<"BlessedTradition", {
940
940
  }, "parent">>, true>;
941
941
  primary: DB.MemberDecl<DB.ReferenceIdentifier, false>;
942
942
  aspects: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
943
+ primaryBlessing: DB.MemberDecl<DB.ReferenceIdentifier, false>;
943
944
  restricted_blessings: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RestrictedBlessings", {
944
945
  Three: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
945
946
  Six: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
@@ -27,6 +27,10 @@ export const BlessedTradition = DB.Entity(import.meta.url, {
27
27
  comment: "The tradition’s aspects, if any.",
28
28
  type: DB.Array(AspectIdentifier(), { minItems: 2, maxItems: 2 }),
29
29
  }),
30
+ primaryBlessing: DB.Optional({
31
+ comment: "The tradition’s primary blessing. Leave empty if the tradition does not have one.",
32
+ type: BlessingIdentifier(),
33
+ }),
30
34
  restricted_blessings: DB.Optional({
31
35
  comment: "If a tradition restricts the possible blessings, the blessings that are **not** allowed.",
32
36
  type: DB.IncludeIdentifier(RestrictedBlessings),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.49.0",
3
+ "version": "0.50.1",
4
4
  "description": "Definitions and utilities for the flat-file database of Optolith, a character creation tool for the Pen and Paper RPG “The Dark Eye 5”, and its external integrations into other software.",
5
5
  "keywords": [
6
6
  "tde",