@optolith/database-schema 0.59.0 → 0.61.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,27 @@
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.61.0](https://github.com/Optolith/database-schema/compare/v0.60.0...v0.61.0) (2026-09-13)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * **content:** add STD translation
10
+
11
+ ### Bug Fixes
12
+
13
+ * **content:** add STD translation ([3ff3417](https://github.com/Optolith/database-schema/commit/3ff34175d031be21801f7b9449919897523256e4))
14
+ ## [0.60.0](https://github.com/Optolith/database-schema/compare/v0.59.0...v0.60.0) (2026-09-12)
15
+
16
+ ### ⚠ BREAKING CHANGES
17
+
18
+ * add sexual transmittable disease flag
19
+ * any special ability of group prerequisite
20
+
21
+ ### Features
22
+
23
+ * add prerequisite for cantrips and blessings ([a06284c](https://github.com/Optolith/database-schema/commit/a06284cb508b65749f9e2c0beabf5310aeeebb0b)), closes [Optolith/database-schema#172](https://github.com/Optolith/database-schema/issues/172), references [#173](https://github.com/Optolith/database-schema/issues/173)
24
+ * add sexual transmittable disease flag ([998c55b](https://github.com/Optolith/database-schema/commit/998c55bdfc132ca94067bc8cbeed7a70268cb4fc)), closes [Optolith/database-schema#184](https://github.com/Optolith/database-schema/issues/184), references [#185](https://github.com/Optolith/database-schema/issues/185)
25
+ * any special ability of group prerequisite ([376c8f9](https://github.com/Optolith/database-schema/commit/376c8f951af16d3883e800a940a62b47f3248ed6)), closes [#176](https://github.com/Optolith/database-schema/issues/176), references [#177](https://github.com/Optolith/database-schema/issues/177)
5
26
  ## [0.59.0](https://github.com/Optolith/database-schema/compare/v0.58.0...v0.59.0) (2026-09-12)
6
27
 
7
28
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -443,6 +443,7 @@ export type EnumMap = {
443
443
  SkillWithEnhancementsIdentifier: SkillWithEnhancementsIdentifier
444
444
  SlowPerformanceParameters: SlowPerformanceParameters
445
445
  SlowSkillCastingTimeUnit: SlowSkillCastingTimeUnit
446
+ SpecialAbilityGroup: SpecialAbilityGroup
446
447
  SpecificAffectedTargetCategoryIdentifier: SpecificAffectedTargetCategoryIdentifier
447
448
  SpecificFromSkillSelectOptionCategoryCategoryOperation: SpecificFromSkillSelectOptionCategoryCategoryOperation
448
449
  SpellFilter: SpellFilter
@@ -456,6 +457,7 @@ export type EnumMap = {
456
457
  TalismanDamageOption: TalismanDamageOption
457
458
  TalismanType: TalismanType
458
459
  TextVerificationRule: TextVerificationRule
460
+ TinyActivatableIdentifier: TinyActivatableIdentifier
459
461
  TradeSecretAdventurePointsValue: TradeSecretAdventurePointsValue
460
462
  TradeSecretSelectOptionCategory: TradeSecretSelectOptionCategory
461
463
  TribePrerequisiteGroup: TribePrerequisiteGroup
@@ -501,6 +503,7 @@ export type TypeAliasMap = {
501
503
  AnimistPowerLevel: AnimistPowerLevel
502
504
  AnimistPowerPrerequisite: AnimistPowerPrerequisite
503
505
  AnimistPowerPrerequisites: AnimistPowerPrerequisites
506
+ AnySpecialAbilityOfGroupPrerequisite: AnySpecialAbilityOfGroupPrerequisite
504
507
  ApplicableCombatTechniquesLevelRestriction: ApplicableCombatTechniquesLevelRestriction
505
508
  ApplicableCombatTechniquesNegativeCombatTechniquesRestriction: ApplicableCombatTechniquesNegativeCombatTechniquesRestriction<unknown>
506
509
  ApplicableCombatTechniquesRaceRestriction: ApplicableCombatTechniquesRaceRestriction
@@ -924,6 +927,7 @@ export type TypeAliasMap = {
924
927
  TargetCategoriesSelectOptionCategory: TargetCategoriesSelectOptionCategory
925
928
  TextNode: TextNode
926
929
  TextPrerequisite: TextPrerequisite
930
+ TinyActivatablePrerequisite: TinyActivatablePrerequisite
927
931
  TradeSecretSelectOptions: TradeSecretSelectOptions
928
932
  TribePrerequisites: TribePrerequisites
929
933
  VolumeByLevel: VolumeByLevel
@@ -2151,6 +2155,7 @@ export interface Locale {
2151
2155
  ".input {$count :number} {{{$count} ranged combat techniques}}": string & { __params: { "count": number } }
2152
2156
  "special ability": string
2153
2157
  "no special ability": string
2158
+ ".input {$entity :string} {{a special ability}}": string & { __params: { "entity": string } }
2154
2159
  "Tradition": string
2155
2160
  "Tradition ({$tradition})": string & { __params: { "tradition": StringableTranslationParameter } }
2156
2161
  "Church": string
@@ -2611,6 +2616,7 @@ export interface Locale {
2611
2616
  "Communicability to Intelligent Creatures": string
2612
2617
  "childhood disease": string
2613
2618
  "magical disease": string
2619
+ "sexually transmittable disease": string
2614
2620
  "Can be combined with": string
2615
2621
  "Skill": string
2616
2622
  "{$defaultDuration}, but no more than {$maximumDuration}": string & { __params: { "defaultDuration": StringableTranslationParameter; "maximumDuration": StringableTranslationParameter } }
@@ -4477,6 +4483,14 @@ export type GeneralPrerequisiteGroup =
4477
4483
  kind: "MagicalTradition"
4478
4484
  MagicalTradition: MagicalTraditionPrerequisite
4479
4485
  }
4486
+ | {
4487
+ kind: "TinyActivatable"
4488
+ TinyActivatable: TinyActivatablePrerequisite
4489
+ }
4490
+ | {
4491
+ kind: "AnySpecialAbilityOfGroup"
4492
+ AnySpecialAbilityOfGroup: AnySpecialAbilityOfGroupPrerequisite
4493
+ }
4480
4494
  | {
4481
4495
  kind: "Rated"
4482
4496
  Rated: RatedPrerequisite
@@ -5330,6 +5344,11 @@ export interface Disease {
5330
5344
  */
5331
5345
  isMagicalDisease: boolean
5332
5346
 
5347
+ /**
5348
+ * Whether the disease is sexually transmittable.
5349
+ */
5350
+ isSexuallyTransmittableDisease: boolean
5351
+
5333
5352
  /**
5334
5353
  * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
5335
5354
  */
@@ -21580,6 +21599,197 @@ export type PrimaryAttributeCategory =
21580
21599
  kind: "Magical"
21581
21600
  }
21582
21601
 
21602
+ /**
21603
+ * Requires a specific cantrip or blessing.
21604
+ */
21605
+ export interface TinyActivatablePrerequisite {
21606
+ /**
21607
+ * The required item.
21608
+ */
21609
+ id: TinyActivatableIdentifier
21610
+
21611
+ display_option?: DisplayOption
21612
+ }
21613
+
21614
+ export type TinyActivatableIdentifier =
21615
+ | {
21616
+ kind: "Blessing"
21617
+ Blessing: Blessing_ID
21618
+ }
21619
+ | {
21620
+ kind: "Cantrip"
21621
+ Cantrip: Cantrip_ID
21622
+ }
21623
+
21624
+ export interface AnySpecialAbilityOfGroupPrerequisite {
21625
+ group: SpecialAbilityGroup
21626
+ display_option?: DisplayOption
21627
+ }
21628
+
21629
+ export type SpecialAbilityGroup =
21630
+ | {
21631
+ kind: "AdvancedCombatSpecialAbility"
21632
+ }
21633
+ | {
21634
+ kind: "AdvancedKarmaSpecialAbility"
21635
+ }
21636
+ | {
21637
+ kind: "AdvancedMagicalSpecialAbility"
21638
+ }
21639
+ | {
21640
+ kind: "AdvancedSkillSpecialAbility"
21641
+ }
21642
+ | {
21643
+ kind: "AncestorGlyph"
21644
+ }
21645
+ | {
21646
+ kind: "ArcaneOrbEnchantment"
21647
+ }
21648
+ | {
21649
+ kind: "AttireEnchantment"
21650
+ }
21651
+ | {
21652
+ kind: "Beutelzauber"
21653
+ }
21654
+ | {
21655
+ kind: "BlessedTradition"
21656
+ }
21657
+ | {
21658
+ kind: "BowlEnchantment"
21659
+ }
21660
+ | {
21661
+ kind: "BrawlingSpecialAbility"
21662
+ }
21663
+ | {
21664
+ kind: "CauldronEnchantment"
21665
+ }
21666
+ | {
21667
+ kind: "CeremonialItemSpecialAbility"
21668
+ }
21669
+ | {
21670
+ kind: "ChronicleEnchantment"
21671
+ }
21672
+ | {
21673
+ kind: "CombatSpecialAbility"
21674
+ }
21675
+ | {
21676
+ kind: "CombatStyleSpecialAbility"
21677
+ }
21678
+ | {
21679
+ kind: "CommandSpecialAbility"
21680
+ }
21681
+ | {
21682
+ kind: "DaggerRitual"
21683
+ }
21684
+ | {
21685
+ kind: "FamiliarSpecialAbility"
21686
+ }
21687
+ | {
21688
+ kind: "FatePointSexSpecialAbility"
21689
+ }
21690
+ | {
21691
+ kind: "FatePointSpecialAbility"
21692
+ }
21693
+ | {
21694
+ kind: "FoolsHatEnchantment"
21695
+ }
21696
+ | {
21697
+ kind: "GeneralSpecialAbility"
21698
+ }
21699
+ | {
21700
+ kind: "Haubenzauber"
21701
+ }
21702
+ | {
21703
+ kind: "Hauerkettenzauber"
21704
+ }
21705
+ | {
21706
+ kind: "InstrumentEnchantment"
21707
+ }
21708
+ | {
21709
+ kind: "KarmaSpecialAbility"
21710
+ }
21711
+ | {
21712
+ kind: "Keulenzauber"
21713
+ }
21714
+ | {
21715
+ kind: "Krallenkettenzauber"
21716
+ }
21717
+ | {
21718
+ kind: "Kristallkugelzauber"
21719
+ }
21720
+ | {
21721
+ kind: "LiturgicalStyleSpecialAbility"
21722
+ }
21723
+ | {
21724
+ kind: "LycantropicGift"
21725
+ }
21726
+ | {
21727
+ kind: "MagicalSign"
21728
+ }
21729
+ | {
21730
+ kind: "MagicalSpecialAbility"
21731
+ }
21732
+ | {
21733
+ kind: "MagicalTradition"
21734
+ }
21735
+ | {
21736
+ kind: "MagicStyleSpecialAbility"
21737
+ }
21738
+ | {
21739
+ kind: "OrbEnchantment"
21740
+ }
21741
+ | {
21742
+ kind: "PactGift"
21743
+ }
21744
+ | {
21745
+ kind: "ProtectiveWardingCircleSpecialAbility"
21746
+ }
21747
+ | {
21748
+ kind: "RingEnchantment"
21749
+ }
21750
+ | {
21751
+ kind: "Schweinetrommelzauber"
21752
+ }
21753
+ | {
21754
+ kind: "Sermon"
21755
+ }
21756
+ | {
21757
+ kind: "SexSpecialAbility"
21758
+ }
21759
+ | {
21760
+ kind: "SickleRitual"
21761
+ }
21762
+ | {
21763
+ kind: "SikaryanDrainSpecialAbility"
21764
+ }
21765
+ | {
21766
+ kind: "SkillStyleSpecialAbility"
21767
+ }
21768
+ | {
21769
+ kind: "SpellSwordEnchantment"
21770
+ }
21771
+ | {
21772
+ kind: "StaffEnchantment"
21773
+ }
21774
+ | {
21775
+ kind: "ToyEnchantment"
21776
+ }
21777
+ | {
21778
+ kind: "Trinkhornzauber"
21779
+ }
21780
+ | {
21781
+ kind: "VampiricGift"
21782
+ }
21783
+ | {
21784
+ kind: "Vision"
21785
+ }
21786
+ | {
21787
+ kind: "WandEnchantment"
21788
+ }
21789
+ | {
21790
+ kind: "WeaponEnchantment"
21791
+ }
21792
+
21583
21793
  export interface RatedMinimumNumberPrerequisite {
21584
21794
  /**
21585
21795
  * The minimum number of skills that need to be on the defined minimum skill rating.
@@ -21817,6 +22027,14 @@ export type AdvantageDisadvantagePrerequisiteGroup =
21817
22027
  kind: "MagicalTradition"
21818
22028
  MagicalTradition: MagicalTraditionPrerequisite
21819
22029
  }
22030
+ | {
22031
+ kind: "TinyActivatable"
22032
+ TinyActivatable: TinyActivatablePrerequisite
22033
+ }
22034
+ | {
22035
+ kind: "AnySpecialAbilityOfGroup"
22036
+ AnySpecialAbilityOfGroup: AnySpecialAbilityOfGroupPrerequisite
22037
+ }
21820
22038
  | {
21821
22039
  kind: "Rated"
21822
22040
  Rated: RatedPrerequisite
@@ -50,6 +50,8 @@ const isPrerequisiteFor = (idMap, type, prerequisite, getById, traversedIds) =>
50
50
  case "PrimaryAttribute":
51
51
  case "BlessedTradition":
52
52
  case "MagicalTradition":
53
+ case "TinyActivatable":
54
+ case "AnySpecialAbilityOfGroup":
53
55
  case "RatedMinimumNumber":
54
56
  case "RatedSum":
55
57
  case "Enhancement":
@@ -43,6 +43,7 @@ export declare const Disease: DB.Entity<"Disease", {
43
43
  }>, []>>, false>;
44
44
  isChildhoodDisease: DB.MemberDecl<DB.Boolean, true>;
45
45
  isMagicalDisease: DB.MemberDecl<DB.Boolean, true>;
46
+ isSexuallyTransmittableDisease: DB.MemberDecl<DB.Boolean, true>;
46
47
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
47
48
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
48
49
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -22,6 +22,10 @@ export const Disease = DB.Entity(import.meta.url, {
22
22
  comment: "Whether the disease is a magical disease.",
23
23
  type: DB.Boolean(),
24
24
  }),
25
+ isSexuallyTransmittableDisease: DB.Required({
26
+ comment: "Whether the disease is sexually transmittable.",
27
+ type: DB.Boolean(),
28
+ }),
25
29
  src,
26
30
  translations: NestedTranslationMap(DB.Required, "Disease", DiseaseTranslation),
27
31
  }),
@@ -1069,6 +1069,7 @@ export declare const Locale: DB.Entity<"Locale", {
1069
1069
  ".input {$count :number} {{{$count} ranged combat techniques}}": null;
1070
1070
  "special ability": null;
1071
1071
  "no special ability": null;
1072
+ ".input {$entity :string} {{a special ability}}": null;
1072
1073
  Tradition: null;
1073
1074
  "Tradition ({$tradition})": null;
1074
1075
  Church: null;
@@ -1544,6 +1545,7 @@ export declare const Locale: DB.Entity<"Locale", {
1544
1545
  "Communicability to Intelligent Creatures": null;
1545
1546
  "childhood disease": null;
1546
1547
  "magical disease": null;
1548
+ "sexually transmittable disease": null;
1547
1549
  "Can be combined with": null;
1548
1550
  Skill: null;
1549
1551
  "{$defaultDuration}, but no more than {$maximumDuration}": null;
@@ -1094,6 +1094,7 @@ export const Locale = DB.Entity(import.meta.url, {
1094
1094
  ".input {$count :number} {{{$count} ranged combat techniques}}": null,
1095
1095
  "special ability": null,
1096
1096
  "no special ability": null,
1097
+ ".input {$entity :string} {{a special ability}}": null,
1097
1098
  "Tradition": null,
1098
1099
  "Tradition ({$tradition})": null,
1099
1100
  "Church": null,
@@ -1589,6 +1590,7 @@ export const Locale = DB.Entity(import.meta.url, {
1589
1590
  "Communicability to Intelligent Creatures": null,
1590
1591
  "childhood disease": null,
1591
1592
  "magical disease": null,
1593
+ "sexually transmittable disease": null,
1592
1594
  // personality traits
1593
1595
  "Can be combined with": null,
1594
1596
  // magical actions
@@ -451,3 +451,7 @@ export declare const AdvancedSkillStyleSpecialAbilityIdentifier: DB.Enum<"Advanc
451
451
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
452
452
  AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
453
453
  }, []>;
454
+ export declare const TinyActivatableIdentifier: DB.Enum<"TinyActivatableIdentifier", {
455
+ Blessing: DB.EnumCase<DB.ReferenceIdentifier>;
456
+ Cantrip: DB.EnumCase<DB.ReferenceIdentifier>;
457
+ }, []>;
@@ -347,3 +347,10 @@ export const AdvancedSkillStyleSpecialAbilityIdentifier = DB.Enum(import.meta.ur
347
347
  AdvancedSkillSpecialAbility: DB.EnumCase({ type: AdvancedSkillSpecialAbilityIdentifier() }),
348
348
  }),
349
349
  });
350
+ export const TinyActivatableIdentifier = DB.Enum(import.meta.url, {
351
+ name: "TinyActivatableIdentifier",
352
+ values: () => ({
353
+ Blessing: DB.EnumCase({ type: BlessingIdentifier() }),
354
+ Cantrip: DB.EnumCase({ type: CantripIdentifier() }),
355
+ }),
356
+ });
@@ -556,6 +556,41 @@ export declare const GeneralPrerequisiteGroup: DB.Enum<"GeneralPrerequisiteGroup
556
556
  }>, []>>>;
557
557
  }, []>>, false>;
558
558
  }>, []>>>;
559
+ TinyActivatable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"TinyActivatablePrerequisite", DB.Object<{
560
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"TinyActivatableIdentifier", {
561
+ Blessing: DB.EnumCase<DB.ReferenceIdentifier>;
562
+ Cantrip: DB.EnumCase<DB.ReferenceIdentifier>;
563
+ }, []>>, true>;
564
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
565
+ Hide: DB.EnumCase<null>;
566
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
567
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
568
+ Standalone: DB.EnumCase<null>;
569
+ Connected: DB.EnumCase<null>;
570
+ }, []>>, false>;
571
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
572
+ replacement: DB.MemberDecl<DB.String, true>;
573
+ }>, true>;
574
+ }>, []>>>;
575
+ }, []>>, false>;
576
+ }>, []>>>;
577
+ AnySpecialAbilityOfGroup: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AnySpecialAbilityOfGroupPrerequisite", DB.Object<{
578
+ group: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityGroup", {
579
+ [k: string]: DB.EnumCase<null>;
580
+ }, []>>, true>;
581
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
582
+ Hide: DB.EnumCase<null>;
583
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
584
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
585
+ Standalone: DB.EnumCase<null>;
586
+ Connected: DB.EnumCase<null>;
587
+ }, []>>, false>;
588
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
589
+ replacement: DB.MemberDecl<DB.String, true>;
590
+ }>, true>;
591
+ }>, []>>>;
592
+ }, []>>, false>;
593
+ }>, []>>>;
559
594
  Rated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedPrerequisite", DB.Object<{
560
595
  id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedIdentifier", {
561
596
  Attribute: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1191,6 +1226,41 @@ export declare const AdvantageDisadvantagePrerequisiteGroup: DB.Enum<"AdvantageD
1191
1226
  }>, []>>>;
1192
1227
  }, []>>, false>;
1193
1228
  }>, []>>>;
1229
+ TinyActivatable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"TinyActivatablePrerequisite", DB.Object<{
1230
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"TinyActivatableIdentifier", {
1231
+ Blessing: DB.EnumCase<DB.ReferenceIdentifier>;
1232
+ Cantrip: DB.EnumCase<DB.ReferenceIdentifier>;
1233
+ }, []>>, true>;
1234
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
1235
+ Hide: DB.EnumCase<null>;
1236
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
1237
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
1238
+ Standalone: DB.EnumCase<null>;
1239
+ Connected: DB.EnumCase<null>;
1240
+ }, []>>, false>;
1241
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
1242
+ replacement: DB.MemberDecl<DB.String, true>;
1243
+ }>, true>;
1244
+ }>, []>>>;
1245
+ }, []>>, false>;
1246
+ }>, []>>>;
1247
+ AnySpecialAbilityOfGroup: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"AnySpecialAbilityOfGroupPrerequisite", DB.Object<{
1248
+ group: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityGroup", {
1249
+ [k: string]: DB.EnumCase<null>;
1250
+ }, []>>, true>;
1251
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
1252
+ Hide: DB.EnumCase<null>;
1253
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
1254
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
1255
+ Standalone: DB.EnumCase<null>;
1256
+ Connected: DB.EnumCase<null>;
1257
+ }, []>>, false>;
1258
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
1259
+ replacement: DB.MemberDecl<DB.String, true>;
1260
+ }>, true>;
1261
+ }>, []>>>;
1262
+ }, []>>, false>;
1263
+ }>, []>>>;
1194
1264
  Rated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedPrerequisite", DB.Object<{
1195
1265
  id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedIdentifier", {
1196
1266
  Attribute: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -2,6 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { ActivatablePrerequisite } from "./single/ActivatablePrerequisite.js";
3
3
  import { AncestorBloodPrerequisite } from "./single/AncestorBloodPrerequisite.js";
4
4
  import { AnimistPowerPrerequisite } from "./single/AnimistPowerPrerequisite.js";
5
+ import { AnySpecialAbilityOfGroupPrerequisite } from "./single/AnySpecialAbilityOfGroupPrerequisite.js";
5
6
  import { CulturePrerequisite } from "./single/CulturePrerequisite.js";
6
7
  import { EnhancementPrerequisite } from "./single/EnhancementPrerequisite.js";
7
8
  import { InfluencePrerequisite } from "./single/InfluencePrerequisite.js";
@@ -20,6 +21,7 @@ import { SexualCharacteristicPrerequisite } from "./single/SexualCharacteristicP
20
21
  import { SocialStatusPrerequisite } from "./single/SocialStatusPrerequisite.js";
21
22
  import { StatePrerequisite } from "./single/StatePrerequisite.js";
22
23
  import { TextPrerequisite } from "./single/TextPrerequisite.js";
24
+ import { TinyActivatablePrerequisite } from "./single/TinyActivatablePrerequisite.js";
23
25
  import { BlessedTraditionPrerequisite, MagicalTraditionPrerequisite, } from "./single/TraditionPrerequisite.js";
24
26
  export const RulePrerequisiteGroup = DB.Enum(import.meta.url, {
25
27
  name: "RulePrerequisiteGroup",
@@ -62,6 +64,10 @@ export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, {
62
64
  Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }),
63
65
  BlessedTradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionPrerequisite) }),
64
66
  MagicalTradition: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalTraditionPrerequisite) }),
67
+ TinyActivatable: DB.EnumCase({ type: DB.IncludeIdentifier(TinyActivatablePrerequisite) }),
68
+ AnySpecialAbilityOfGroup: DB.EnumCase({
69
+ type: DB.IncludeIdentifier(AnySpecialAbilityOfGroupPrerequisite),
70
+ }),
65
71
  Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }),
66
72
  RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }),
67
73
  RatedSum: DB.EnumCase({ type: DB.IncludeIdentifier(RatedSumPrerequisite) }),
@@ -0,0 +1,18 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const AnySpecialAbilityOfGroupPrerequisite: DB.TypeAlias<"AnySpecialAbilityOfGroupPrerequisite", DB.Object<{
3
+ group: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityGroup", {
4
+ [k: string]: DB.EnumCase<null>;
5
+ }, []>>, true>;
6
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
7
+ Hide: DB.EnumCase<null>;
8
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
9
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
10
+ Standalone: DB.EnumCase<null>;
11
+ Connected: DB.EnumCase<null>;
12
+ }, []>>, false>;
13
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
14
+ replacement: DB.MemberDecl<DB.String, true>;
15
+ }>, true>;
16
+ }>, []>>>;
17
+ }, []>>, false>;
18
+ }>, []>;
@@ -0,0 +1,23 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { SpecialAbilityIdentifier } from "../../_IdentifierGroup.js";
3
+ import { DisplayOption } from "../DisplayOption.js";
4
+ export const AnySpecialAbilityOfGroupPrerequisite = DB.TypeAlias(import.meta.url, {
5
+ name: "AnySpecialAbilityOfGroupPrerequisite",
6
+ type: () => DB.Object({
7
+ group: DB.Required({
8
+ type: DB.IncludeIdentifier(SpecialAbilityGroup),
9
+ }),
10
+ display_option: DB.Optional({
11
+ type: DB.IncludeIdentifier(DisplayOption),
12
+ }),
13
+ }),
14
+ });
15
+ const SpecialAbilityGroup = DB.Enum(import.meta.url, {
16
+ name: "SpecialAbilityGroup",
17
+ values: () => ({
18
+ ...Object.fromEntries(Object.keys(SpecialAbilityIdentifier.type.value.values).map(entity => [
19
+ entity,
20
+ DB.EnumCase({ type: null }),
21
+ ])),
22
+ }),
23
+ });
@@ -0,0 +1,19 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const TinyActivatablePrerequisite: DB.TypeAlias<"TinyActivatablePrerequisite", DB.Object<{
3
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"TinyActivatableIdentifier", {
4
+ Blessing: DB.EnumCase<DB.ReferenceIdentifier>;
5
+ Cantrip: DB.EnumCase<DB.ReferenceIdentifier>;
6
+ }, []>>, true>;
7
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
8
+ Hide: DB.EnumCase<null>;
9
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
10
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
11
+ Standalone: DB.EnumCase<null>;
12
+ Connected: DB.EnumCase<null>;
13
+ }, []>>, false>;
14
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
15
+ replacement: DB.MemberDecl<DB.String, true>;
16
+ }>, true>;
17
+ }>, []>>>;
18
+ }, []>>, false>;
19
+ }>, []>;
@@ -0,0 +1,16 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { TinyActivatableIdentifier } from "../../_IdentifierGroup.js";
3
+ import { DisplayOption } from "../DisplayOption.js";
4
+ export const TinyActivatablePrerequisite = DB.TypeAlias(import.meta.url, {
5
+ name: "TinyActivatablePrerequisite",
6
+ comment: "Requires a specific cantrip or blessing.",
7
+ type: () => DB.Object({
8
+ id: DB.Required({
9
+ comment: "The required item.",
10
+ type: DB.IncludeIdentifierType(TinyActivatableIdentifier),
11
+ }),
12
+ display_option: DB.Optional({
13
+ type: DB.IncludeIdentifier(DisplayOption),
14
+ }),
15
+ }),
16
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.59.0",
3
+ "version": "0.61.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",