@optolith/database-schema 0.46.0 → 0.47.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
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.47.0](https://github.com/Optolith/database-schema/compare/v0.46.0...v0.47.0) (2026-06-07)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * interval for sustained cost map
11
+ * personality trait as activatable prerequisite
12
+
13
+ ### Features
14
+
15
+ * fixed cantrips for base profession package ([737fe37](https://github.com/Optolith/database-schema/commit/737fe3742cdec7997dbb011872d3a0484bb58bfc)), closes [#148](https://github.com/Optolith/database-schema/issues/148)
16
+ * note for commonness-rated entries ([1f28470](https://github.com/Optolith/database-schema/commit/1f28470b8fd0516bb1ac3507d3397e8afd6d6378)), closes [#146](https://github.com/Optolith/database-schema/issues/146)
17
+ * personality trait as activatable prerequisite ([d4ffbb9](https://github.com/Optolith/database-schema/commit/d4ffbb911165b2bb485d68e6d9b114e5dbce7a2f))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * interval for sustained cost map ([4c2228b](https://github.com/Optolith/database-schema/commit/4c2228b6d7214bc3b9bb3b4f19bf1ac20cff0a76)), closes [#145](https://github.com/Optolith/database-schema/issues/145)
23
+
5
24
  ## [0.46.0](https://github.com/Optolith/database-schema/compare/v0.45.0...v0.46.0) (2026-06-07)
6
25
 
7
26
 
package/gen/types.d.ts CHANGED
@@ -4386,6 +4386,10 @@ export type GeneralPrerequisiteGroup =
4386
4386
  kind: "SexualCharacteristic"
4387
4387
  SexualCharacteristic: SexualCharacteristicPrerequisite
4388
4388
  }
4389
+ | {
4390
+ kind: "PersonalityTrait"
4391
+ PersonalityTrait: PersonalityTraitPrerequisite
4392
+ }
4389
4393
 
4390
4394
  /**
4391
4395
  * Requires a specific sex.
@@ -7313,6 +7317,11 @@ export interface SustainedCostMap {
7313
7317
  */
7314
7318
  options: SustainedCostMapOption[]
7315
7319
 
7320
+ /**
7321
+ * The sustain interval.
7322
+ */
7323
+ interval: DurationUnitValue
7324
+
7316
7325
  /**
7317
7326
  * All translations for the entry, identified by IETF language tag (BCP47).
7318
7327
  */
@@ -9144,6 +9153,11 @@ export interface ProfessionPackage {
9144
9153
  */
9145
9154
  skills?: SkillRating[]
9146
9155
 
9156
+ /**
9157
+ * The cantrips the profession receives from the package.
9158
+ */
9159
+ cantrips?: Cantrip_ID[]
9160
+
9147
9161
  /**
9148
9162
  * The skill ratings a magical profession receives for spells; these spells are considered activated. Spells from an unfamiliar Tradition, if any, are identified as such.
9149
9163
  */
@@ -19750,6 +19764,11 @@ export interface CommonnessRatedAdvantageDisadvantageTranslation {
19750
19764
  */
19751
19765
  options?: string
19752
19766
 
19767
+ /**
19768
+ * A note, appended to the generated string in parenthesis. If options are specified as well, both will be in a single set of parentheses, with the note after the options.
19769
+ */
19770
+ note?: string
19771
+
19753
19772
  /**
19754
19773
  * A text that replaces the entire entry. No other text is generated for display, however, providing levels or a selection of options will still be relevant for highlighting entries in the application. This should only be used if the text cannot be generated from other fields at all.
19755
19774
  */
@@ -21034,6 +21053,100 @@ export interface RatedSumPrerequisite {
21034
21053
  display_option?: DisplayOption
21035
21054
  }
21036
21055
 
21056
+ export interface PersonalityTraitPrerequisite {
21057
+ /**
21058
+ * The personality trait’s identifier.
21059
+ */
21060
+ id: PersonalityTrait_ID
21061
+
21062
+ /**
21063
+ * If checked, the prerequisite **must** be present. If not checked, prerequisite **must not** be present.
21064
+ */
21065
+ active: boolean
21066
+
21067
+ display_option?: DisplayOption
21068
+ }
21069
+
21070
+ /**
21071
+ * A personality trait describes character aspects of a person from a certain region. Higher trait levels only cover a part of the region covered by lower-level traits.
21072
+ */
21073
+ export interface PersonalityTrait {
21074
+ /**
21075
+ * The personality trait’s level.
21076
+ */
21077
+ level: number
21078
+
21079
+ prerequisites?: PersonalityTraitPrerequisites
21080
+
21081
+ /**
21082
+ * The lower-level personality trait(s) this trait can be combined with.
21083
+ */
21084
+ combination_options?: PersonalityTrait_ID[]
21085
+
21086
+ /**
21087
+ * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
21088
+ */
21089
+ src: PublicationRefs
21090
+
21091
+ /**
21092
+ * All translations for the entry, identified by IETF language tag (BCP47).
21093
+ */
21094
+ translations: {
21095
+ [localeId: string]: PersonalityTraitTranslation
21096
+ }
21097
+ }
21098
+
21099
+ /**
21100
+ * The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
21101
+ */
21102
+ export type PersonalityTrait_ID = string
21103
+
21104
+ export interface PersonalityTraitTranslation {
21105
+ /**
21106
+ * The personality trait’s name.
21107
+ */
21108
+ name: string
21109
+
21110
+ /**
21111
+ * The effects of the personality trait. They should be sorted like they are in the book.
21112
+ */
21113
+ effects: PersonalityTraitEffect[]
21114
+
21115
+ errata?: Errata
21116
+ }
21117
+
21118
+ export type PersonalityTraitPrerequisites = PlainPrerequisites<PersonalityTraitPrerequisiteGroup>
21119
+
21120
+ export type PersonalityTraitPrerequisiteGroup =
21121
+ | {
21122
+ kind: "Race"
21123
+ Race: RacePrerequisite
21124
+ }
21125
+ | {
21126
+ kind: "Culture"
21127
+ Culture: CulturePrerequisite
21128
+ }
21129
+ | {
21130
+ kind: "PersonalityTrait"
21131
+ PersonalityTrait: PersonalityTraitPrerequisite
21132
+ }
21133
+ | {
21134
+ kind: "Text"
21135
+ Text: TextPrerequisite
21136
+ }
21137
+
21138
+ export interface PersonalityTraitEffect {
21139
+ /**
21140
+ * A label that is displayed and placed before the actual text.
21141
+ */
21142
+ label: string
21143
+
21144
+ /**
21145
+ * The effect text.
21146
+ */
21147
+ text: string
21148
+ }
21149
+
21037
21150
  export type AdvantageDisadvantagePrerequisites = PrerequisitesForLevels<AdvantageDisadvantagePrerequisiteGroup>
21038
21151
 
21039
21152
  export type AdvantageDisadvantagePrerequisiteGroup =
@@ -21111,6 +21224,10 @@ export type AdvantageDisadvantagePrerequisiteGroup =
21111
21224
  kind: "SexualCharacteristic"
21112
21225
  SexualCharacteristic: SexualCharacteristicPrerequisite
21113
21226
  }
21227
+ | {
21228
+ kind: "PersonalityTrait"
21229
+ PersonalityTrait: PersonalityTraitPrerequisite
21230
+ }
21114
21231
 
21115
21232
  export interface AlternativeRule {
21116
21233
  /**
@@ -24691,100 +24808,6 @@ export interface MetaConditionTranslation {
24691
24808
  errata?: Errata
24692
24809
  }
24693
24810
 
24694
- /**
24695
- * A personality trait describes character aspects of a person from a certain region. Higher trait levels only cover a part of the region covered by lower-level traits.
24696
- */
24697
- export interface PersonalityTrait {
24698
- /**
24699
- * The personality trait’s level.
24700
- */
24701
- level: number
24702
-
24703
- prerequisites?: PersonalityTraitPrerequisites
24704
-
24705
- /**
24706
- * The lower-level personality trait(s) this trait can be combined with.
24707
- */
24708
- combination_options?: PersonalityTrait_ID[]
24709
-
24710
- /**
24711
- * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
24712
- */
24713
- src: PublicationRefs
24714
-
24715
- /**
24716
- * All translations for the entry, identified by IETF language tag (BCP47).
24717
- */
24718
- translations: {
24719
- [localeId: string]: PersonalityTraitTranslation
24720
- }
24721
- }
24722
-
24723
- /**
24724
- * The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
24725
- */
24726
- export type PersonalityTrait_ID = string
24727
-
24728
- export interface PersonalityTraitTranslation {
24729
- /**
24730
- * The personality trait’s name.
24731
- */
24732
- name: string
24733
-
24734
- /**
24735
- * The effects of the personality trait. They should be sorted like they are in the book.
24736
- */
24737
- effects: PersonalityTraitEffect[]
24738
-
24739
- errata?: Errata
24740
- }
24741
-
24742
- export type PersonalityTraitPrerequisites = PlainPrerequisites<PersonalityTraitPrerequisiteGroup>
24743
-
24744
- export type PersonalityTraitPrerequisiteGroup =
24745
- | {
24746
- kind: "Race"
24747
- Race: RacePrerequisite
24748
- }
24749
- | {
24750
- kind: "Culture"
24751
- Culture: CulturePrerequisite
24752
- }
24753
- | {
24754
- kind: "PersonalityTrait"
24755
- PersonalityTrait: PersonalityTraitPrerequisite
24756
- }
24757
- | {
24758
- kind: "Text"
24759
- Text: TextPrerequisite
24760
- }
24761
-
24762
- export interface PersonalityTraitPrerequisite {
24763
- /**
24764
- * The personality trait’s identifier.
24765
- */
24766
- id: PersonalityTrait_ID
24767
-
24768
- /**
24769
- * If checked, the prerequisite **must** be present. If not checked, prerequisite **must not** be present.
24770
- */
24771
- active: boolean
24772
-
24773
- display_option?: DisplayOption
24774
- }
24775
-
24776
- export interface PersonalityTraitEffect {
24777
- /**
24778
- * A label that is displayed and placed before the actual text.
24779
- */
24780
- label: string
24781
-
24782
- /**
24783
- * The effect text.
24784
- */
24785
- text: string
24786
- }
24787
-
24788
24811
  export interface Plant {
24789
24812
  /**
24790
24813
  * The plant types of this plant.
@@ -56,6 +56,7 @@ const isPrerequisiteFor = (idMap, type, prerequisite, getById, traversedIds) =>
56
56
  case "Text":
57
57
  case "NoOtherAncestorBloodAdvantage":
58
58
  case "SexualCharacteristic":
59
+ case "PersonalityTrait":
59
60
  return false;
60
61
  default:
61
62
  return assertExhaustive(prerequisite);
@@ -381,6 +381,21 @@ export declare const Ceremony: DB.Entity<"Ceremony", {
381
381
  }>, []>>, false>;
382
382
  }>, false>;
383
383
  }>, []>>>, true>;
384
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
385
+ value: DB.MemberDecl<DB.Integer, true>;
386
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
387
+ Seconds: DB.EnumCase<null>;
388
+ Minutes: DB.EnumCase<null>;
389
+ Hours: DB.EnumCase<null>;
390
+ Days: DB.EnumCase<null>;
391
+ Weeks: DB.EnumCase<null>;
392
+ Months: DB.EnumCase<null>;
393
+ Years: DB.EnumCase<null>;
394
+ Centuries: DB.EnumCase<null>;
395
+ Actions: DB.EnumCase<null>;
396
+ CombatRounds: DB.EnumCase<null>;
397
+ }, []>>, true>;
398
+ }>, []>>, true>;
384
399
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
385
400
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
386
401
  full: DB.MemberDecl<DB.String, true>;
@@ -74,6 +74,7 @@ export declare const Culture: DB.Entity<"Culture", {
74
74
  }, []>>>, false>;
75
75
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
76
76
  options: DB.MemberDecl<DB.String, false>;
77
+ note: DB.MemberDecl<DB.String, false>;
77
78
  full: DB.MemberDecl<DB.String, false>;
78
79
  }>, false>;
79
80
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -110,6 +111,7 @@ export declare const Culture: DB.Entity<"Culture", {
110
111
  }, []>>>, false>;
111
112
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
112
113
  options: DB.MemberDecl<DB.String, false>;
114
+ note: DB.MemberDecl<DB.String, false>;
113
115
  full: DB.MemberDecl<DB.String, false>;
114
116
  }>, false>;
115
117
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -146,6 +148,7 @@ export declare const Culture: DB.Entity<"Culture", {
146
148
  }, []>>>, false>;
147
149
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
148
150
  options: DB.MemberDecl<DB.String, false>;
151
+ note: DB.MemberDecl<DB.String, false>;
149
152
  full: DB.MemberDecl<DB.String, false>;
150
153
  }>, false>;
151
154
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -182,6 +185,7 @@ export declare const Culture: DB.Entity<"Culture", {
182
185
  }, []>>>, false>;
183
186
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
184
187
  options: DB.MemberDecl<DB.String, false>;
188
+ note: DB.MemberDecl<DB.String, false>;
185
189
  full: DB.MemberDecl<DB.String, false>;
186
190
  }>, false>;
187
191
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -381,6 +381,21 @@ export declare const LiturgicalChant: DB.Entity<"LiturgicalChant", {
381
381
  }>, []>>, false>;
382
382
  }>, false>;
383
383
  }>, []>>>, true>;
384
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
385
+ value: DB.MemberDecl<DB.Integer, true>;
386
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
387
+ Seconds: DB.EnumCase<null>;
388
+ Minutes: DB.EnumCase<null>;
389
+ Hours: DB.EnumCase<null>;
390
+ Days: DB.EnumCase<null>;
391
+ Weeks: DB.EnumCase<null>;
392
+ Months: DB.EnumCase<null>;
393
+ Years: DB.EnumCase<null>;
394
+ Centuries: DB.EnumCase<null>;
395
+ Actions: DB.EnumCase<null>;
396
+ CombatRounds: DB.EnumCase<null>;
397
+ }, []>>, true>;
398
+ }>, []>>, true>;
384
399
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
385
400
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
386
401
  full: DB.MemberDecl<DB.String, true>;
@@ -251,6 +251,7 @@ export declare const Profession: DB.Entity<"Profession", {
251
251
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
252
252
  rating_modifier: DB.MemberDecl<DB.Integer, true>;
253
253
  }>, []>>>, false>;
254
+ cantrips: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
254
255
  spells: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"MagicalSkillRating", DB.Object<{
255
256
  id: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionMagicalSkillIdentifier", {
256
257
  Spellwork: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpellworkIdentifier", DB.Object<{
@@ -602,6 +603,7 @@ export declare const Profession: DB.Entity<"Profession", {
602
603
  }, []>>>, false>;
603
604
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
604
605
  options: DB.MemberDecl<DB.String, false>;
606
+ note: DB.MemberDecl<DB.String, false>;
605
607
  full: DB.MemberDecl<DB.String, false>;
606
608
  }>, false>;
607
609
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -638,6 +640,7 @@ export declare const Profession: DB.Entity<"Profession", {
638
640
  }, []>>>, false>;
639
641
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
640
642
  options: DB.MemberDecl<DB.String, false>;
643
+ note: DB.MemberDecl<DB.String, false>;
641
644
  full: DB.MemberDecl<DB.String, false>;
642
645
  }>, false>;
643
646
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -674,6 +677,7 @@ export declare const Profession: DB.Entity<"Profession", {
674
677
  }, []>>>, false>;
675
678
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
676
679
  options: DB.MemberDecl<DB.String, false>;
680
+ note: DB.MemberDecl<DB.String, false>;
677
681
  full: DB.MemberDecl<DB.String, false>;
678
682
  }>, false>;
679
683
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -710,6 +714,7 @@ export declare const Profession: DB.Entity<"Profession", {
710
714
  }, []>>>, false>;
711
715
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
712
716
  options: DB.MemberDecl<DB.String, false>;
717
+ note: DB.MemberDecl<DB.String, false>;
713
718
  full: DB.MemberDecl<DB.String, false>;
714
719
  }>, false>;
715
720
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -1021,6 +1026,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1021
1026
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
1022
1027
  rating_modifier: DB.MemberDecl<DB.Integer, true>;
1023
1028
  }>, []>>>, false>;
1029
+ cantrips: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
1024
1030
  spells: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"MagicalSkillRating", DB.Object<{
1025
1031
  id: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionMagicalSkillIdentifier", {
1026
1032
  Spellwork: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpellworkIdentifier", DB.Object<{
@@ -1372,6 +1378,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1372
1378
  }, []>>>, false>;
1373
1379
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
1374
1380
  options: DB.MemberDecl<DB.String, false>;
1381
+ note: DB.MemberDecl<DB.String, false>;
1375
1382
  full: DB.MemberDecl<DB.String, false>;
1376
1383
  }>, false>;
1377
1384
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -1408,6 +1415,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1408
1415
  }, []>>>, false>;
1409
1416
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
1410
1417
  options: DB.MemberDecl<DB.String, false>;
1418
+ note: DB.MemberDecl<DB.String, false>;
1411
1419
  full: DB.MemberDecl<DB.String, false>;
1412
1420
  }>, false>;
1413
1421
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -1444,6 +1452,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1444
1452
  }, []>>>, false>;
1445
1453
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
1446
1454
  options: DB.MemberDecl<DB.String, false>;
1455
+ note: DB.MemberDecl<DB.String, false>;
1447
1456
  full: DB.MemberDecl<DB.String, false>;
1448
1457
  }>, false>;
1449
1458
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -1480,6 +1489,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1480
1489
  }, []>>>, false>;
1481
1490
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
1482
1491
  options: DB.MemberDecl<DB.String, false>;
1492
+ note: DB.MemberDecl<DB.String, false>;
1483
1493
  full: DB.MemberDecl<DB.String, false>;
1484
1494
  }>, false>;
1485
1495
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -1783,6 +1793,7 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1783
1793
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
1784
1794
  rating_modifier: DB.MemberDecl<DB.Integer, true>;
1785
1795
  }>, []>>>, false>;
1796
+ cantrips: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
1786
1797
  spells: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"MagicalSkillRating", DB.Object<{
1787
1798
  id: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionMagicalSkillIdentifier", {
1788
1799
  Spellwork: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpellworkIdentifier", DB.Object<{
@@ -182,6 +182,10 @@ export const ProfessionPackage = DB.Entity(import.meta.url, {
182
182
  comment: "The skill ratings the package grants to the hero.",
183
183
  type: DB.Array(DB.IncludeIdentifier(SkillRating), { minItems: 1 }),
184
184
  }),
185
+ cantrips: DB.Optional({
186
+ comment: "The cantrips the profession receives from the package.",
187
+ type: DB.Array(CantripIdentifier(), { minItems: 1 }),
188
+ }),
185
189
  spells: DB.Optional({
186
190
  comment: "The skill ratings a magical profession receives for spells; these spells are considered activated. Spells from an unfamiliar Tradition, if any, are identified as such.",
187
191
  type: DB.Array(DB.IncludeIdentifier(MagicalSkillRating), { minItems: 1 }),
@@ -76,6 +76,7 @@ export declare const Race: DB.Entity<"Race", {
76
76
  }, []>>>, false>;
77
77
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
78
78
  options: DB.MemberDecl<DB.String, false>;
79
+ note: DB.MemberDecl<DB.String, false>;
79
80
  full: DB.MemberDecl<DB.String, false>;
80
81
  }>, false>;
81
82
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -112,6 +113,7 @@ export declare const Race: DB.Entity<"Race", {
112
113
  }, []>>>, false>;
113
114
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
114
115
  options: DB.MemberDecl<DB.String, false>;
116
+ note: DB.MemberDecl<DB.String, false>;
115
117
  full: DB.MemberDecl<DB.String, false>;
116
118
  }>, false>;
117
119
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -148,6 +150,7 @@ export declare const Race: DB.Entity<"Race", {
148
150
  }, []>>>, false>;
149
151
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
150
152
  options: DB.MemberDecl<DB.String, false>;
153
+ note: DB.MemberDecl<DB.String, false>;
151
154
  full: DB.MemberDecl<DB.String, false>;
152
155
  }>, false>;
153
156
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -184,6 +187,7 @@ export declare const Race: DB.Entity<"Race", {
184
187
  }, []>>>, false>;
185
188
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
186
189
  options: DB.MemberDecl<DB.String, false>;
190
+ note: DB.MemberDecl<DB.String, false>;
187
191
  full: DB.MemberDecl<DB.String, false>;
188
192
  }>, false>;
189
193
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -220,6 +224,7 @@ export declare const Race: DB.Entity<"Race", {
220
224
  }, []>>>, false>;
221
225
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
222
226
  options: DB.MemberDecl<DB.String, false>;
227
+ note: DB.MemberDecl<DB.String, false>;
223
228
  full: DB.MemberDecl<DB.String, false>;
224
229
  }>, false>;
225
230
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -256,6 +261,7 @@ export declare const Race: DB.Entity<"Race", {
256
261
  }, []>>>, false>;
257
262
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
258
263
  options: DB.MemberDecl<DB.String, false>;
264
+ note: DB.MemberDecl<DB.String, false>;
259
265
  full: DB.MemberDecl<DB.String, false>;
260
266
  }>, false>;
261
267
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -383,6 +389,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
383
389
  }, []>>>, false>;
384
390
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
385
391
  options: DB.MemberDecl<DB.String, false>;
392
+ note: DB.MemberDecl<DB.String, false>;
386
393
  full: DB.MemberDecl<DB.String, false>;
387
394
  }>, false>;
388
395
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -419,6 +426,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
419
426
  }, []>>>, false>;
420
427
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
421
428
  options: DB.MemberDecl<DB.String, false>;
429
+ note: DB.MemberDecl<DB.String, false>;
422
430
  full: DB.MemberDecl<DB.String, false>;
423
431
  }>, false>;
424
432
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -455,6 +463,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
455
463
  }, []>>>, false>;
456
464
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
457
465
  options: DB.MemberDecl<DB.String, false>;
466
+ note: DB.MemberDecl<DB.String, false>;
458
467
  full: DB.MemberDecl<DB.String, false>;
459
468
  }>, false>;
460
469
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -491,6 +500,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
491
500
  }, []>>>, false>;
492
501
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
493
502
  options: DB.MemberDecl<DB.String, false>;
503
+ note: DB.MemberDecl<DB.String, false>;
494
504
  full: DB.MemberDecl<DB.String, false>;
495
505
  }>, false>;
496
506
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -527,6 +537,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
527
537
  }, []>>>, false>;
528
538
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
529
539
  options: DB.MemberDecl<DB.String, false>;
540
+ note: DB.MemberDecl<DB.String, false>;
530
541
  full: DB.MemberDecl<DB.String, false>;
531
542
  }>, false>;
532
543
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -563,6 +574,7 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
563
574
  }, []>>>, false>;
564
575
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
565
576
  options: DB.MemberDecl<DB.String, false>;
577
+ note: DB.MemberDecl<DB.String, false>;
566
578
  full: DB.MemberDecl<DB.String, false>;
567
579
  }>, false>;
568
580
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
@@ -381,6 +381,21 @@ export declare const Ritual: DB.Entity<"Ritual", {
381
381
  }>, []>>, false>;
382
382
  }>, false>;
383
383
  }>, []>>>, true>;
384
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
385
+ value: DB.MemberDecl<DB.Integer, true>;
386
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
387
+ Seconds: DB.EnumCase<null>;
388
+ Minutes: DB.EnumCase<null>;
389
+ Hours: DB.EnumCase<null>;
390
+ Days: DB.EnumCase<null>;
391
+ Weeks: DB.EnumCase<null>;
392
+ Months: DB.EnumCase<null>;
393
+ Years: DB.EnumCase<null>;
394
+ Centuries: DB.EnumCase<null>;
395
+ Actions: DB.EnumCase<null>;
396
+ CombatRounds: DB.EnumCase<null>;
397
+ }, []>>, true>;
398
+ }>, []>>, true>;
384
399
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
385
400
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
386
401
  full: DB.MemberDecl<DB.String, true>;
@@ -381,6 +381,21 @@ export declare const Spell: DB.Entity<"Spell", {
381
381
  }>, []>>, false>;
382
382
  }>, false>;
383
383
  }>, []>>>, true>;
384
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
385
+ value: DB.MemberDecl<DB.Integer, true>;
386
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
387
+ Seconds: DB.EnumCase<null>;
388
+ Minutes: DB.EnumCase<null>;
389
+ Hours: DB.EnumCase<null>;
390
+ Days: DB.EnumCase<null>;
391
+ Weeks: DB.EnumCase<null>;
392
+ Months: DB.EnumCase<null>;
393
+ Years: DB.EnumCase<null>;
394
+ Centuries: DB.EnumCase<null>;
395
+ Actions: DB.EnumCase<null>;
396
+ CombatRounds: DB.EnumCase<null>;
397
+ }, []>>, true>;
398
+ }>, []>>, true>;
384
399
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
385
400
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
386
401
  full: DB.MemberDecl<DB.String, true>;
@@ -680,6 +680,21 @@ export declare const FastPerformanceParameters: DB.Enum<"FastPerformanceParamete
680
680
  }>, []>>, false>;
681
681
  }>, false>;
682
682
  }>, []>>>, true>;
683
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
684
+ value: DB.MemberDecl<DB.Integer, true>;
685
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
686
+ Seconds: DB.EnumCase<null>;
687
+ Minutes: DB.EnumCase<null>;
688
+ Hours: DB.EnumCase<null>;
689
+ Days: DB.EnumCase<null>;
690
+ Weeks: DB.EnumCase<null>;
691
+ Months: DB.EnumCase<null>;
692
+ Years: DB.EnumCase<null>;
693
+ Centuries: DB.EnumCase<null>;
694
+ Actions: DB.EnumCase<null>;
695
+ CombatRounds: DB.EnumCase<null>;
696
+ }, []>>, true>;
697
+ }>, []>>, true>;
683
698
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
684
699
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
685
700
  full: DB.MemberDecl<DB.String, true>;
@@ -1138,6 +1153,21 @@ export declare const SlowPerformanceParameters: DB.Enum<"SlowPerformanceParamete
1138
1153
  }>, []>>, false>;
1139
1154
  }>, false>;
1140
1155
  }>, []>>>, true>;
1156
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
1157
+ value: DB.MemberDecl<DB.Integer, true>;
1158
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
1159
+ Seconds: DB.EnumCase<null>;
1160
+ Minutes: DB.EnumCase<null>;
1161
+ Hours: DB.EnumCase<null>;
1162
+ Days: DB.EnumCase<null>;
1163
+ Weeks: DB.EnumCase<null>;
1164
+ Months: DB.EnumCase<null>;
1165
+ Years: DB.EnumCase<null>;
1166
+ Centuries: DB.EnumCase<null>;
1167
+ Actions: DB.EnumCase<null>;
1168
+ CombatRounds: DB.EnumCase<null>;
1169
+ }, []>>, true>;
1170
+ }>, []>>, true>;
1141
1171
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
1142
1172
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
1143
1173
  full: DB.MemberDecl<DB.String, true>;
@@ -291,6 +291,21 @@ export declare const SustainedCost: DB.Enum<"SustainedCost", {
291
291
  }>, []>>, false>;
292
292
  }>, false>;
293
293
  }>, []>>>, true>;
294
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
295
+ value: DB.MemberDecl<DB.Integer, true>;
296
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
297
+ Seconds: DB.EnumCase<null>;
298
+ Minutes: DB.EnumCase<null>;
299
+ Hours: DB.EnumCase<null>;
300
+ Days: DB.EnumCase<null>;
301
+ Weeks: DB.EnumCase<null>;
302
+ Months: DB.EnumCase<null>;
303
+ Years: DB.EnumCase<null>;
304
+ Centuries: DB.EnumCase<null>;
305
+ Actions: DB.EnumCase<null>;
306
+ CombatRounds: DB.EnumCase<null>;
307
+ }, []>>, true>;
308
+ }>, []>>, true>;
294
309
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
295
310
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
296
311
  full: DB.MemberDecl<DB.String, true>;
@@ -349,6 +364,21 @@ export declare const SustainedCostMap: DB.TypeAlias<"SustainedCostMap", DB.Objec
349
364
  }>, []>>, false>;
350
365
  }>, false>;
351
366
  }>, []>>>, true>;
367
+ interval: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DurationUnitValue", DB.Object<{
368
+ value: DB.MemberDecl<DB.Integer, true>;
369
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
370
+ Seconds: DB.EnumCase<null>;
371
+ Minutes: DB.EnumCase<null>;
372
+ Hours: DB.EnumCase<null>;
373
+ Days: DB.EnumCase<null>;
374
+ Weeks: DB.EnumCase<null>;
375
+ Months: DB.EnumCase<null>;
376
+ Years: DB.EnumCase<null>;
377
+ Centuries: DB.EnumCase<null>;
378
+ Actions: DB.EnumCase<null>;
379
+ CombatRounds: DB.EnumCase<null>;
380
+ }, []>>, true>;
381
+ }>, []>>, true>;
352
382
  translations: DB.MemberDecl<DB.NestedEntityMap<"SustainedCostMapTranslation", {
353
383
  listPrefix: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
354
384
  full: DB.MemberDecl<DB.String, true>;
@@ -243,6 +243,10 @@ The \`an item the size of a\` would be the *list prefix* string, while the list
243
243
  minItems: 2,
244
244
  }),
245
245
  }),
246
+ interval: DB.Required({
247
+ comment: "The sustain interval.",
248
+ type: DB.IncludeIdentifier(DurationUnitValue),
249
+ }),
246
250
  translations: NestedTranslationMap(DB.Optional, "SustainedCostMap", DB.Object({
247
251
  listPrefix: DB.Optional({
248
252
  comment: "Place a string between the `for` and the grouped map option labels.",
@@ -32,6 +32,7 @@ export declare const CommonnessRatedAdvantageDisadvantage: DB.TypeAlias<"Commonn
32
32
  }, []>>>, false>;
33
33
  translations: DB.MemberDecl<DB.NestedEntityMap<"CommonnessRatedAdvantageDisadvantageTranslation", {
34
34
  options: DB.MemberDecl<DB.String, false>;
35
+ note: DB.MemberDecl<DB.String, false>;
35
36
  full: DB.MemberDecl<DB.String, false>;
36
37
  }>, false>;
37
38
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>;
@@ -23,6 +23,10 @@ export const CommonnessRatedAdvantageDisadvantage = DB.GenTypeAlias(import.meta.
23
23
  comment: "The options the commonness rating applies to. This can be specified if plain options cannot exactly describe the options as written in the publication.",
24
24
  type: DB.String({ minLength: 1 }),
25
25
  }),
26
+ note: DB.Optional({
27
+ comment: "A note, appended to the generated string in parenthesis. If options are specified as well, both will be in a single set of parentheses, with the note after the options.",
28
+ type: DB.String({ minLength: 1 }),
29
+ }),
26
30
  full: DB.Optional({
27
31
  comment: "A text that replaces the entire entry. No other text is generated for display, however, providing levels or a selection of options will still be relevant for highlighting entries in the application. This should only be used if the text cannot be generated from other fields at all.",
28
32
  type: DB.String({ minLength: 1 }),
@@ -648,6 +648,22 @@ export declare const GeneralPrerequisiteGroup: DB.Enum<"GeneralPrerequisiteGroup
648
648
  Vagina: DB.EnumCase<null>;
649
649
  }, []>>, true>;
650
650
  }>, []>>>;
651
+ PersonalityTrait: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"PersonalityTraitPrerequisite", DB.Object<{
652
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
653
+ active: DB.MemberDecl<DB.Boolean, true>;
654
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
655
+ Hide: DB.EnumCase<null>;
656
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
657
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
658
+ Standalone: DB.EnumCase<null>;
659
+ Connected: DB.EnumCase<null>;
660
+ }, []>>, false>;
661
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
662
+ replacement: DB.MemberDecl<DB.String, true>;
663
+ }>, true>;
664
+ }>, []>>>;
665
+ }, []>>, false>;
666
+ }>, []>>>;
651
667
  }, []>;
652
668
  export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisiteGroup", {
653
669
  Sex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SexPrerequisite", DB.Object<{
@@ -1261,6 +1277,22 @@ export declare const AdvantageDisadvantagePrerequisiteGroup: DB.Enum<"AdvantageD
1261
1277
  Vagina: DB.EnumCase<null>;
1262
1278
  }, []>>, true>;
1263
1279
  }>, []>>>;
1280
+ PersonalityTrait: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"PersonalityTraitPrerequisite", DB.Object<{
1281
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
1282
+ active: DB.MemberDecl<DB.Boolean, true>;
1283
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
1284
+ Hide: DB.EnumCase<null>;
1285
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
1286
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
1287
+ Standalone: DB.EnumCase<null>;
1288
+ Connected: DB.EnumCase<null>;
1289
+ }, []>>, false>;
1290
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
1291
+ replacement: DB.MemberDecl<DB.String, true>;
1292
+ }>, true>;
1293
+ }>, []>>>;
1294
+ }, []>>, false>;
1295
+ }>, []>>>;
1264
1296
  CommonSuggestedByRCP: DB.EnumCase<null>;
1265
1297
  NoOtherAncestorBloodAdvantage: DB.EnumCase<null>;
1266
1298
  }, []>;
@@ -70,6 +70,7 @@ export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, {
70
70
  SexualCharacteristic: DB.EnumCase({
71
71
  type: DB.IncludeIdentifier(SexualCharacteristicPrerequisite),
72
72
  }),
73
+ PersonalityTrait: DB.EnumCase({ type: DB.IncludeIdentifier(PersonalityTraitPrerequisite) }),
73
74
  }),
74
75
  });
75
76
  export const ProfessionPrerequisiteGroup = DB.Enum(import.meta.url, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.46.0",
3
+ "version": "0.47.0",
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",