@optolith/database-schema 0.103.0 → 0.103.2

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,18 @@
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.103.2](https://github.com/Optolith/database-schema/compare/v0.103.1...v0.103.2) (2026-10-15)
6
+
7
+ ### Features
8
+
9
+ * talisman may have weight and rules without actual combat values ([99d2c40](https://github.com/Optolith/database-schema/commit/99d2c40ea0baa2fa0cb5fa2e03a9c7f5d9d3d538))
10
+
11
+ ## [0.103.1](https://github.com/Optolith/database-schema/compare/v0.103.0...v0.103.1) (2026-10-15)
12
+
13
+ ### Features
14
+
15
+ * add optional complexity to animal care ([cff0eea](https://github.com/Optolith/database-schema/commit/cff0eea7bdfd60b8a8409776c076f456e4794bbe))
16
+
5
17
  ## [0.103.0](https://github.com/Optolith/database-schema/compare/v0.102.1...v0.103.0) (2026-10-15)
6
18
 
7
19
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -23736,6 +23736,11 @@ export interface AnimalCare {
23736
23736
  */
23737
23737
  type: AnimalCareType
23738
23738
 
23739
+ /**
23740
+ * The complexity of crafting the item.
23741
+ */
23742
+ complexity?: Complexity
23743
+
23739
23744
  /**
23740
23745
  * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
23741
23746
  */
@@ -1,6 +1,7 @@
1
1
  import { assertExhaustive } from "@elyukai/utils/typeSafety";
2
2
  import { Case } from "tsondb/schema/gen";
3
3
  const emptyDerivedEquipmentTradeSecretsCache = {
4
+ AnimalCare: {},
4
5
  Armor: {},
5
6
  ArmorAccessory: {},
6
7
  Ammunition: {},
@@ -61,6 +61,7 @@ export const Talisman = DB.Entity(import.meta.url, {
61
61
  instanceContent: instanceContent.combatUse,
62
62
  getDisplayNameAndId,
63
63
  getInstanceById,
64
+ allowNoUses: true,
64
65
  })
65
66
  : [],
66
67
  });
@@ -37,6 +37,78 @@ export declare const AnimalCare: DB.Entity<"AnimalCare", {
37
37
  }, []>>, true>;
38
38
  }>, []>>>;
39
39
  }, []>>, true>;
40
+ complexity: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Complexity", {
41
+ Primitive: DB.EnumCase<null>;
42
+ Simple: DB.EnumCase<null>;
43
+ Complex: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ComplexComplexity", DB.Object<{
44
+ ap_value: DB.MemberDecl<DB.Integer, true>;
45
+ prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PlainGeneralPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
46
+ Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
47
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisitesDisjunction", DB.Object<{
48
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
49
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
50
+ Hide: DB.EnumCase<null>;
51
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
52
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
53
+ Standalone: DB.EnumCase<null>;
54
+ Connected: DB.EnumCase<null>;
55
+ }, []>>, false>;
56
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
57
+ replacement: DB.MemberDecl<DB.String, true>;
58
+ }>, true>;
59
+ }>, []>>>;
60
+ }, []>>, false>;
61
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
62
+ Group: DB.EnumCase<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PrerequisiteGroup", DB.Object<{
63
+ list: DB.MemberDecl<DB.Array<DB.TypeArgument<DB.Param<"T", DB.Type>>>, true>;
64
+ translations: DB.MemberDecl<DB.NestedEntityMap<"PrerequisiteGroupTranslation", {
65
+ text: DB.MemberDecl<DB.String, true>;
66
+ }>, true>;
67
+ }>, [T: DB.Param<"T", DB.Type>]>>>;
68
+ }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
69
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
70
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
71
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
72
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
73
+ printing: DB.MemberDecl<DB.Integer, false>;
74
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
75
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
76
+ InsideCoverFront: DB.EnumCase<null>;
77
+ InsideCoverBack: DB.EnumCase<null>;
78
+ Numbered: DB.EnumCase<DB.Integer>;
79
+ }, []>>, true>;
80
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
81
+ InsideCoverFront: DB.EnumCase<null>;
82
+ InsideCoverBack: DB.EnumCase<null>;
83
+ Numbered: DB.EnumCase<DB.Integer>;
84
+ }, []>>, false>;
85
+ }>, []>>>, true>;
86
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
87
+ }>, []>>, true>;
88
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
89
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
90
+ printing: DB.MemberDecl<DB.Integer, true>;
91
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
92
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
93
+ InsideCoverFront: DB.EnumCase<null>;
94
+ InsideCoverBack: DB.EnumCase<null>;
95
+ Numbered: DB.EnumCase<DB.Integer>;
96
+ }, []>>, true>;
97
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
98
+ InsideCoverFront: DB.EnumCase<null>;
99
+ InsideCoverBack: DB.EnumCase<null>;
100
+ Numbered: DB.EnumCase<DB.Integer>;
101
+ }, []>>, false>;
102
+ }>, []>>>, true>;
103
+ }>, []>>>;
104
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
105
+ printing: DB.MemberDecl<DB.Integer, true>;
106
+ }>, []>>>;
107
+ }, []>>>, false>;
108
+ }>, true>;
109
+ }>, []>>>, []>>, false>;
110
+ }>, []>>>;
111
+ }, []>>, false>;
40
112
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
41
113
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
42
114
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -1,6 +1,6 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  import { src } from "../../source/_PublicationRef.js";
3
- import { Cost, DefaultItemTranslations, FixedCost, Weight } from "./_Item.js";
3
+ import { Complexity, Cost, DefaultItemTranslations, FixedCost, Weight } from "./_Item.js";
4
4
  export const AnimalCare = DB.Entity(import.meta.url, {
5
5
  name: "AnimalCare",
6
6
  namePlural: "AnimalCare",
@@ -9,6 +9,10 @@ export const AnimalCare = DB.Entity(import.meta.url, {
9
9
  comment: "Values depending on whether the animal care is feed.",
10
10
  type: DB.IncludeIdentifier(AnimalCareType),
11
11
  }),
12
+ complexity: DB.Optional({
13
+ comment: "The complexity of crafting the item.",
14
+ type: DB.IncludeIdentifier(Complexity),
15
+ }),
12
16
  src,
13
17
  translations: DefaultItemTranslations("AnimalCare"),
14
18
  }),
@@ -13,7 +13,7 @@ export declare const PrimaryAttributeDamageThreshold: DB.Enum<"PrimaryAttributeD
13
13
  }>, []>>>;
14
14
  }, []>;
15
15
  export declare const Length: DB.TypeAlias<"Length", DB.Integer, []>;
16
- export declare const checkWeaponCombatTechniqueIntegrity: ({ instanceContent, getInstanceById, getDisplayNameAndId, }: {
16
+ export declare const checkWeaponCombatTechniqueIntegrity: ({ instanceContent, getInstanceById, getDisplayNameAndId, allowNoUses, }: {
17
17
  instanceContent: {
18
18
  melee_uses?: Record<string, GenMeleeWeapon<unknown>>;
19
19
  meleeUses?: Record<string, GenMeleeWeapon<unknown>>;
@@ -22,4 +22,5 @@ export declare const checkWeaponCombatTechniqueIntegrity: ({ instanceContent, ge
22
22
  };
23
23
  getInstanceById: GetInstanceById;
24
24
  getDisplayNameAndId: GetDisplayNameAndId;
25
+ allowNoUses?: boolean;
25
26
  }) => string[];
@@ -47,12 +47,13 @@ export const Length = DB.TypeAlias(import.meta.url, {
47
47
  comment: "The length of the weapon in cm/halffingers.",
48
48
  type: () => DB.Integer({ minimum: 1 }),
49
49
  });
50
- export const checkWeaponCombatTechniqueIntegrity = ({ instanceContent, getInstanceById, getDisplayNameAndId, }) => {
50
+ export const checkWeaponCombatTechniqueIntegrity = ({ instanceContent, getInstanceById, getDisplayNameAndId, allowNoUses, }) => {
51
51
  const checkPart = (rule, value, name, type, id) => (rule.kind === "Prohibited") === (value === undefined) || rule.kind === "Optional"
52
52
  ? undefined
53
53
  : `${name} must${rule.kind === "Required" ? "" : " not"} be provided for ${type} combat technique ${getDisplayNameAndId(type === "close" ? "CloseCombatTechnique" : "RangedCombatTechnique", id)}`;
54
54
  return [
55
- instanceContent.melee_uses === undefined &&
55
+ allowNoUses !== true &&
56
+ instanceContent.melee_uses === undefined &&
56
57
  instanceContent.ranged_uses === undefined &&
57
58
  instanceContent.meleeUses === undefined &&
58
59
  instanceContent.rangedUses === undefined
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optolith/database-schema",
3
- "version": "0.103.0",
3
+ "version": "0.103.2",
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",