@optolith/database-schema 0.104.0 → 0.106.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 (35) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/gen/types.d.ts +28 -5
  3. package/lib/types/Locale.d.ts +1 -1
  4. package/lib/types/Locale.js +1 -1
  5. package/lib/types/_ActivatableNonMundane.d.ts +0 -1
  6. package/lib/types/_ActivatableNonMundane.js +0 -4
  7. package/lib/types/equipment/item/ArmorAccessory.d.ts +1 -1
  8. package/lib/types/equipment/item/BandageOrRemedy.d.ts +1 -1
  9. package/lib/types/equipment/item/Book.d.ts +1 -1
  10. package/lib/types/equipment/item/CeremonialItem.d.ts +6 -2
  11. package/lib/types/equipment/item/CeremonialItem.js +2 -3
  12. package/lib/types/equipment/item/Clothes.d.ts +1 -1
  13. package/lib/types/equipment/item/Container.d.ts +1 -1
  14. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +1 -1
  15. package/lib/types/equipment/item/IlluminationLightSource.d.ts +1 -1
  16. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +1 -1
  17. package/lib/types/equipment/item/Item.d.ts +1 -1
  18. package/lib/types/equipment/item/Jewelry.d.ts +1 -1
  19. package/lib/types/equipment/item/Liebesspielzeug.d.ts +1 -1
  20. package/lib/types/equipment/item/LuxuryGood.d.ts +1 -1
  21. package/lib/types/equipment/item/MagicalArtifact.d.ts +1 -1
  22. package/lib/types/equipment/item/MusicalInstrument.d.ts +1 -1
  23. package/lib/types/equipment/item/OrienteeringAid.d.ts +1 -1
  24. package/lib/types/equipment/item/RopeOrChain.d.ts +1 -1
  25. package/lib/types/equipment/item/Stationery.d.ts +1 -1
  26. package/lib/types/equipment/item/ThievesTool.d.ts +1 -1
  27. package/lib/types/equipment/item/ToolOfTheTrade.d.ts +1 -1
  28. package/lib/types/equipment/item/TravelGearOrTool.d.ts +1 -1
  29. package/lib/types/equipment/item/Weapon.d.ts +1 -1
  30. package/lib/types/equipment/item/WeaponAccessory.d.ts +1 -1
  31. package/lib/types/equipment/item/_Item.d.ts +2 -2
  32. package/lib/types/equipment/item/_Item.js +2 -2
  33. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +6 -1
  34. package/lib/types/specialAbility/CeremonialItemSpecialAbility.js +30 -3
  35. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
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.106.0](https://github.com/Optolith/database-schema/compare/v0.105.0...v0.106.0) (2026-10-16)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * allow blessed tradition groups as associated traditions for ceremonial items
10
+
11
+ ### Features
12
+
13
+ * allow blessed tradition groups as associated traditions for ceremonial items ([315ddc7](https://github.com/Optolith/database-schema/commit/315ddc7a46ca48511ecee0c448fe0f691a1bc165))
14
+
15
+ ## [0.105.0](https://github.com/Optolith/database-schema/compare/v0.104.0...v0.105.0) (2026-10-16)
16
+
17
+ ### ⚠ BREAKING CHANGES
18
+
19
+ * aspects by tradition for ceremonial item special abilities
20
+ * rename unbreakable to indestructible
21
+
22
+ ### Features
23
+
24
+ * aspects by tradition for ceremonial item special abilities ([6f64bed](https://github.com/Optolith/database-schema/commit/6f64bedbcac3874f8ccd331773a2a0c2b76513a1))
25
+
26
+ ### Bug Fixes
27
+
28
+ * rename unbreakable to indestructible ([4fcd4d3](https://github.com/Optolith/database-schema/commit/4fcd4d31f555ee7f22eaba77a2e12c9ccd3c3cf9))
29
+
5
30
  ## [0.104.0](https://github.com/Optolith/database-schema/compare/v0.103.2...v0.104.0) (2026-10-15)
6
31
 
7
32
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -286,6 +286,7 @@ export type EnumMap = {
286
286
  CantripRange: CantripRange
287
287
  CastingTime: CastingTime<unknown>
288
288
  CastingTimeDuringLovemakingUnit: CastingTimeDuringLovemakingUnit
289
+ CeremonialItemSpecialAbilityAspect: CeremonialItemSpecialAbilityAspect
289
290
  CheckResultArithmetic: CheckResultArithmetic
290
291
  ChildEntityForSelectOption: ChildEntityForSelectOption
291
292
  CollectorsValue: CollectorsValue
@@ -604,6 +605,7 @@ export type TypeAliasMap = {
604
605
  CastingTimeDuringLovemaking: CastingTimeDuringLovemaking
605
606
  CastingTimeIncludingLovemaking: CastingTimeIncludingLovemaking<unknown>
606
607
  Cause: Cause
608
+ CeremonialItemSpecialAbilityAspectByTradition: CeremonialItemSpecialAbilityAspectByTradition
607
609
  CheckResultBasedModifier: CheckResultBasedModifier
608
610
  ChildNode: ChildNode
609
611
  ChildSelectOptionRuleValue: ChildSelectOptionRuleValue
@@ -956,6 +958,7 @@ export type TypeAliasMap = {
956
958
  ShamanisticBlessedTradition: ShamanisticBlessedTradition
957
959
  Since: Since
958
960
  SingleBannzeichenCost: SingleBannzeichenCost
961
+ SingleCeremonialItemSpecialAbilityAspect: SingleCeremonialItemSpecialAbilityAspect
959
962
  SingleCommonnessRatedAdvantageDisadvantage: SingleCommonnessRatedAdvantageDisadvantage<unknown>
960
963
  SingleCommonnessRatedAdvantageDisadvantageInGroup: SingleCommonnessRatedAdvantageDisadvantageInGroup<unknown>
961
964
  SingleDerivedCharacteristicSkillCheckPenalty: SingleDerivedCharacteristicSkillCheckPenalty
@@ -2701,7 +2704,7 @@ export interface Locale {
2701
2704
  "Medium Shield": string
2702
2705
  "Small Shield": string
2703
2706
  "{$value} structure points": string & { __params: { "value": string } }
2704
- "unbreakable": string
2707
+ "indestructible": string
2705
2708
  "additional {$value} AT for main weapon": string & { __params: { "value": string } }
2706
2709
  "Price": string
2707
2710
  "all armor": string
@@ -12782,11 +12785,11 @@ export interface ComplexComplexity {
12782
12785
  }
12783
12786
 
12784
12787
  /**
12785
- * The structure points of the item. Use an array if the item consists of multiple components that have individual structure points. The item may also be declared as unbreakable, in which case the item has no structure points.
12788
+ * The structure points of the item. Use an array if the item consists of multiple components that have individual structure points. The item may also be declared as indestructible, in which case the item has no structure points.
12786
12789
  */
12787
12790
  export type StructurePoints =
12788
12791
  | {
12789
- kind: "Unbreakable"
12792
+ kind: "Indestructible"
12790
12793
  }
12791
12794
  | {
12792
12795
  kind: "Points"
@@ -13634,7 +13637,7 @@ export interface CeremonialItemSpecialAbility {
13634
13637
  /**
13635
13638
  * The blessed aspect.
13636
13639
  */
13637
- aspect?: Aspect_ID
13640
+ aspect?: CeremonialItemSpecialAbilityAspect
13638
13641
 
13639
13642
  prerequisites?: GeneralPrerequisites
13640
13643
 
@@ -13718,6 +13721,26 @@ export interface CeremonialItemSpecialAbilityGroupTranslation {
13718
13721
  nameForSorting: string
13719
13722
  }
13720
13723
 
13724
+ export type CeremonialItemSpecialAbilityAspect =
13725
+ | {
13726
+ kind: "Single"
13727
+ Single: SingleCeremonialItemSpecialAbilityAspect
13728
+ }
13729
+ | {
13730
+ kind: "ByTradition"
13731
+ ByTradition: CeremonialItemSpecialAbilityAspectByTradition
13732
+ }
13733
+
13734
+ export type SingleCeremonialItemSpecialAbilityAspect = Aspect_ID
13735
+
13736
+ export type CeremonialItemSpecialAbilityAspectByTradition = {
13737
+ [blessedTraditionId: string]: CeremonialItemSpecialAbilityAspectForTradition
13738
+ }
13739
+
13740
+ export interface CeremonialItemSpecialAbilityAspectForTradition {
13741
+ aspect: Aspect_ID
13742
+ }
13743
+
13721
13744
  export interface ChronicleEnchantment {
13722
13745
  /**
13723
13746
  * Number of available levels.
@@ -24938,7 +24961,7 @@ export interface CeremonialItem {
24938
24961
  /**
24939
24962
  * The deity associated with the equipment item.
24940
24963
  */
24941
- associated_tradition: BlessedTradition_ID
24964
+ associated_tradition: RestrictedToBlessedTraditionsScope
24942
24965
 
24943
24966
  /**
24944
24967
  * The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.
@@ -1511,7 +1511,7 @@ export declare const Locale: DB.Entity<"Locale", {
1511
1511
  "Medium Shield": null;
1512
1512
  "Small Shield": null;
1513
1513
  "{$value} structure points": null;
1514
- unbreakable: null;
1514
+ indestructible: null;
1515
1515
  "additional {$value} AT for main weapon": null;
1516
1516
  Price: null;
1517
1517
  "all armor": null;
@@ -1553,7 +1553,7 @@ export const Locale = DB.Entity(import.meta.url, {
1553
1553
  "Medium Shield": null,
1554
1554
  "Small Shield": null,
1555
1555
  "{$value} structure points": null,
1556
- "unbreakable": null,
1556
+ "indestructible": null,
1557
1557
  "additional {$value} AT for main weapon": null,
1558
1558
  "Price": null,
1559
1559
  "all armor": null,
@@ -471,4 +471,3 @@ export declare const propertyOptional: () => DB.MemberDecl<DB.IncludeIdentifier<
471
471
  Fixed: DB.EnumCase<DB.ReferenceIdentifier>;
472
472
  }, []>>, false>;
473
473
  export declare const aspect: () => DB.MemberDecl<DB.ReferenceIdentifier, true>;
474
- export declare const aspectOptional: () => DB.MemberDecl<DB.ReferenceIdentifier, false>;
@@ -479,7 +479,3 @@ export const aspect = () => DB.Required({
479
479
  comment: "The blessed aspect.",
480
480
  type: AspectIdentifier(),
481
481
  });
482
- export const aspectOptional = () => DB.Optional({
483
- comment: "The blessed aspect.",
484
- type: AspectIdentifier(),
485
- });
@@ -96,7 +96,7 @@ export declare const ArmorAccessory: DB.Entity<"ArmorAccessory", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const BandageOrRemedy: DB.Entity<"BandageOrRemedy", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -183,7 +183,7 @@ export declare const Book: DB.Entity<"Book", {
183
183
  }>, []>>>;
184
184
  }, []>>, false>;
185
185
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
186
- Unbreakable: DB.EnumCase<null>;
186
+ Indestructible: DB.EnumCase<null>;
187
187
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
188
188
  points: DB.MemberDecl<DB.Integer, true>;
189
189
  }>, []>>>, []>>>;
@@ -96,12 +96,16 @@ export declare const CeremonialItem: DB.Entity<"CeremonialItem", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
103
103
  }, []>>, false>;
104
- associated_tradition: DB.MemberDecl<DB.ReferenceIdentifier, true>;
104
+ associated_tradition: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RestrictedToBlessedTraditionsScope", {
105
+ Specific: DB.EnumCase<DB.Array<DB.ReferenceIdentifier>>;
106
+ Church: DB.EnumCase<null>;
107
+ Shamanistic: DB.EnumCase<null>;
108
+ }, []>>, true>;
105
109
  combat_use: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CombatUse", {
106
110
  Weapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ImprovisedWeapon", DB.Object<{
107
111
  melee_uses: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,7 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { BlessedTraditionIdentifier } from "../../_Identifier.js";
3
2
  import { src } from "../../source/_PublicationRef.js";
4
- import { CombatUse, Complexity, Cost, DefaultItemTranslations, StructurePoints, Weight, } from "./_Item.js";
3
+ import { CombatUse, Complexity, Cost, DefaultItemTranslations, RestrictedToBlessedTraditionsScope, StructurePoints, Weight, } from "./_Item.js";
5
4
  import { checkWeaponCombatTechniqueIntegrity } from "./_Weapon.js";
6
5
  export const CeremonialItem = DB.Entity(import.meta.url, {
7
6
  name: "CeremonialItem",
@@ -25,7 +24,7 @@ export const CeremonialItem = DB.Entity(import.meta.url, {
25
24
  }),
26
25
  associated_tradition: DB.Required({
27
26
  comment: "The deity associated with the equipment item.",
28
- type: BlessedTraditionIdentifier(),
27
+ type: DB.IncludeIdentifier(RestrictedToBlessedTraditionsScope),
29
28
  }),
30
29
  combat_use: DB.Optional({
31
30
  comment: "The item can also be used either as an improvised weapon or as an armor, although this is not the primary use case of the item.",
@@ -96,7 +96,7 @@ export declare const Clothes: DB.Entity<"Clothes", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const Container: DB.Entity<"Container", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -23,7 +23,7 @@ export declare const EquipmentOfBlessedOnes: DB.Entity<"EquipmentOfBlessedOnes",
23
23
  }>, []>>>;
24
24
  }, []>>, true>;
25
25
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
26
- Unbreakable: DB.EnumCase<null>;
26
+ Indestructible: DB.EnumCase<null>;
27
27
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
28
28
  points: DB.MemberDecl<DB.Integer, true>;
29
29
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const IlluminationLightSource: DB.Entity<"IlluminationLightSource
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const IlluminationRefillOrSupply: DB.Entity<"IlluminationRefillOr
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -97,7 +97,7 @@ export declare const Item: DB.Entity<"Item", {
97
97
  }>, []>>>;
98
98
  }, []>>, false>;
99
99
  structurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
100
- Unbreakable: DB.EnumCase<null>;
100
+ Indestructible: DB.EnumCase<null>;
101
101
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
102
102
  points: DB.MemberDecl<DB.Integer, true>;
103
103
  }>, []>>>, []>>>;
@@ -83,7 +83,7 @@ export declare const Jewelry: DB.Entity<"Jewelry", {
83
83
  }>, []>>>;
84
84
  }, []>>, false>;
85
85
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
86
- Unbreakable: DB.EnumCase<null>;
86
+ Indestructible: DB.EnumCase<null>;
87
87
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
88
88
  points: DB.MemberDecl<DB.Integer, true>;
89
89
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const Liebesspielzeug: DB.Entity<"Liebesspielzeug", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const LuxuryGood: DB.Entity<"LuxuryGood", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const MagicalArtifact: DB.Entity<"MagicalArtifact", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const MusicalInstrument: DB.Entity<"MusicalInstrument", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -95,7 +95,7 @@ export declare const OrienteeringAid: import("tsondb/schema/dsl").Entity<string,
95
95
  }>, []>>>;
96
96
  }, []>>, false>;
97
97
  structure_points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"StructurePoints", {
98
- Unbreakable: import("tsondb/schema/dsl").EnumCase<null>;
98
+ Indestructible: import("tsondb/schema/dsl").EnumCase<null>;
99
99
  Points: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsPoints", import("tsondb/schema/dsl").Array<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsComponent", import("tsondb/schema/dsl").Object<{
100
100
  points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
101
101
  }>, []>>>, []>>>;
@@ -95,7 +95,7 @@ export declare const RopeOrChain: import("tsondb/schema/dsl").Entity<string, {
95
95
  }>, []>>>;
96
96
  }, []>>, false>;
97
97
  structure_points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"StructurePoints", {
98
- Unbreakable: import("tsondb/schema/dsl").EnumCase<null>;
98
+ Indestructible: import("tsondb/schema/dsl").EnumCase<null>;
99
99
  Points: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsPoints", import("tsondb/schema/dsl").Array<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsComponent", import("tsondb/schema/dsl").Object<{
100
100
  points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
101
101
  }>, []>>>, []>>>;
@@ -95,7 +95,7 @@ export declare const Stationery: import("tsondb/schema/dsl").Entity<string, {
95
95
  }>, []>>>;
96
96
  }, []>>, false>;
97
97
  structure_points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"StructurePoints", {
98
- Unbreakable: import("tsondb/schema/dsl").EnumCase<null>;
98
+ Indestructible: import("tsondb/schema/dsl").EnumCase<null>;
99
99
  Points: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsPoints", import("tsondb/schema/dsl").Array<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsComponent", import("tsondb/schema/dsl").Object<{
100
100
  points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
101
101
  }>, []>>>, []>>>;
@@ -95,7 +95,7 @@ export declare const ThievesTool: import("tsondb/schema/dsl").Entity<string, {
95
95
  }>, []>>>;
96
96
  }, []>>, false>;
97
97
  structure_points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").Enum<"StructurePoints", {
98
- Unbreakable: import("tsondb/schema/dsl").EnumCase<null>;
98
+ Indestructible: import("tsondb/schema/dsl").EnumCase<null>;
99
99
  Points: import("tsondb/schema/dsl").EnumCase<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsPoints", import("tsondb/schema/dsl").Array<import("tsondb/schema/dsl").IncludeIdentifier<[], import("tsondb/schema/dsl").TypeAlias<"StructurePointsComponent", import("tsondb/schema/dsl").Object<{
100
100
  points: import("tsondb/schema/dsl").MemberDecl<import("tsondb/schema/dsl").Integer, true>;
101
101
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const ToolOfTheTrade: DB.Entity<"ToolOfTheTrade", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const TravelGearOrTool: DB.Entity<"TravelGearOrTool", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const Weapon: DB.Entity<"Weapon", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const WeaponAccessory: DB.Entity<"WeaponAccessory", {
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -96,7 +96,7 @@ export declare const DefaultItem: (sourceUrl: string, singularName: string, plur
96
96
  }>, []>>>;
97
97
  }, []>>, false>;
98
98
  structure_points: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"StructurePoints", {
99
- Unbreakable: DB.EnumCase<null>;
99
+ Indestructible: DB.EnumCase<null>;
100
100
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
101
101
  points: DB.MemberDecl<DB.Integer, true>;
102
102
  }>, []>>>, []>>>;
@@ -504,7 +504,7 @@ export declare const CombatUse: DB.Enum<"CombatUse", {
504
504
  }>, []>>>;
505
505
  }, []>;
506
506
  export declare const StructurePoints: DB.Enum<"StructurePoints", {
507
- Unbreakable: DB.EnumCase<null>;
507
+ Indestructible: DB.EnumCase<null>;
508
508
  Points: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsPoints", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"StructurePointsComponent", DB.Object<{
509
509
  points: DB.MemberDecl<DB.Integer, true>;
510
510
  }>, []>>>, []>>>;
@@ -85,9 +85,9 @@ export const CombatUse = DB.Enum(import.meta.url, {
85
85
  });
86
86
  export const StructurePoints = DB.Enum(import.meta.url, {
87
87
  name: "StructurePoints",
88
- comment: "The structure points of the item. Use an array if the item consists of multiple components that have individual structure points. The item may also be declared as unbreakable, in which case the item has no structure points.",
88
+ comment: "The structure points of the item. Use an array if the item consists of multiple components that have individual structure points. The item may also be declared as indestructible, in which case the item has no structure points.",
89
89
  values: () => ({
90
- Unbreakable: DB.EnumCase({ type: null }),
90
+ Indestructible: DB.EnumCase({ type: null }),
91
91
  Points: DB.EnumCase({ type: DB.IncludeIdentifier(StructurePointsPoints) }),
92
92
  }),
93
93
  });
@@ -1125,7 +1125,12 @@ export declare const CeremonialItemSpecialAbility: DB.Entity<"CeremonialItemSpec
1125
1125
  }>, false>;
1126
1126
  }, "parent">>, true>;
1127
1127
  maximum: DB.MemberDecl<DB.Integer, false>;
1128
- aspect: DB.MemberDecl<DB.ReferenceIdentifier, false>;
1128
+ aspect: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CeremonialItemSpecialAbilityAspect", {
1129
+ Single: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleCeremonialItemSpecialAbilityAspect", DB.ReferenceIdentifier, []>>>;
1130
+ ByTradition: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CeremonialItemSpecialAbilityAspectByTradition", DB.NestedEntityMap<string, {
1131
+ aspect: DB.MemberDecl<DB.ReferenceIdentifier, true>;
1132
+ }>, []>>>;
1133
+ }, []>>, false>;
1129
1134
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"GeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesForLevels", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteForLevel", DB.Object<{
1130
1135
  level: DB.MemberDecl<DB.Integer, true>;
1131
1136
  prerequisite: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
@@ -2,14 +2,14 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { effect, levels, maximum, name, name_in_library } from "../_Activatable.js";
3
3
  import { ap_value, ap_value_append, ap_value_l10n } from "../_ActivatableAdventurePointsValue.js";
4
4
  import { nameBuilderRules } from "../_ActivatableNames.js";
5
- import { aspectOptional } from "../_ActivatableNonMundane.js";
6
5
  import { explicit_select_options, select_options, verifySelectOptionRules, } from "../_ActivatableSelectOptions.js";
7
6
  import { skill_applications, skill_uses } from "../_ActivatableSkillApplicationsAndUses.js";
8
- import { CeremonialItemSpecialAbilityGroupIdentifier } from "../_Identifier.js";
7
+ import { AspectIdentifier, CeremonialItemSpecialAbilityGroupIdentifier } from "../_Identifier.js";
9
8
  import { GeneralPrerequisites } from "../_Prerequisite.js";
10
9
  import { NestedTranslationMap } from "../Locale.js";
11
10
  import { Errata } from "../source/_Erratum.js";
12
11
  import { src } from "../source/_PublicationRef.js";
12
+ import { BlessedTradition } from "./BlessedTradition.js";
13
13
  export const CeremonialItemSpecialAbility = DB.Entity(import.meta.url, {
14
14
  name: "CeremonialItemSpecialAbility",
15
15
  namePlural: "CeremonialItemSpecialAbilities",
@@ -24,7 +24,10 @@ export const CeremonialItemSpecialAbility = DB.Entity(import.meta.url, {
24
24
  skill_applications,
25
25
  skill_uses,
26
26
  maximum,
27
- aspect: aspectOptional(),
27
+ aspect: DB.Optional({
28
+ comment: "The blessed aspect.",
29
+ type: DB.IncludeIdentifier(CeremonialItemSpecialAbilityAspect),
30
+ }),
28
31
  prerequisites: DB.Optional({
29
32
  type: DB.IncludeIdentifier(GeneralPrerequisites),
30
33
  }),
@@ -79,3 +82,27 @@ export const CeremonialItemSpecialAbility = DB.Entity(import.meta.url, {
79
82
  ],
80
83
  customConstraints: deps => verifySelectOptionRules("CeremonialItemSpecialAbility", deps),
81
84
  });
85
+ const CeremonialItemSpecialAbilityAspect = DB.Enum(import.meta.url, {
86
+ name: "CeremonialItemSpecialAbilityAspect",
87
+ values: () => ({
88
+ Single: DB.EnumCase({ type: DB.IncludeIdentifier(SingleCeremonialItemSpecialAbilityAspect) }),
89
+ ByTradition: DB.EnumCase({
90
+ type: DB.IncludeIdentifier(CeremonialItemSpecialAbilityAspectByTradition),
91
+ }),
92
+ }),
93
+ });
94
+ const SingleCeremonialItemSpecialAbilityAspect = DB.TypeAlias(import.meta.url, {
95
+ name: "SingleCeremonialItemSpecialAbilityAspect",
96
+ type: () => AspectIdentifier(),
97
+ });
98
+ const CeremonialItemSpecialAbilityAspectByTradition = DB.TypeAlias(import.meta.url, {
99
+ name: "CeremonialItemSpecialAbilityAspectByTradition",
100
+ type: () => DB.NestedEntityMap({
101
+ name: "CeremonialItemSpecialAbilityAspectForTradition",
102
+ namePlural: "CeremonialItemSpecialAbilityAspectForTraditions",
103
+ secondaryEntity: BlessedTradition,
104
+ type: DB.Object({
105
+ aspect: DB.Required({ type: AspectIdentifier() }),
106
+ }),
107
+ }),
108
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.104.0",
3
+ "version": "0.106.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",